AI应用开发-基于python的知识图谱技术

本文介绍了AI应用开发中的关键概念,如图数据、图数据库、知识图谱和Neo4j的使用。详细讲解了环境配置过程,包括JavaJDK和Neo4j的安装、系统变量设置,以及如何基于Python构建知识图谱。适合有一定算法基础的开发者参考。
摘要由CSDN通过智能技术生成

AI应用开发相关目录

本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧
适用于具备一定算法及Python使用基础的人群

  1. AI应用开发流程概述
  2. Visual Studio Code及Remote Development插件远程开发
  3. git开源项目的一些问题及镜像解决办法
  4. python实现UDP报文通信
  5. python实现日志生成及定期清理
  6. Linux终端命令Screen常见用法
  7. python实现redis数据存储
  8. python字符串转字典
  9. python实现文本向量化及文本相似度计算
  10. python对MySQL数据的常见使用
  11. 一文总结python的异常数据处理示例
  12. 基于selenium和bs4的通用数据采集技术(附代码)
  13. 基于python的知识图谱技术


一、前言

图数据、图数据库、知识图谱和Neo4j都是与数据处理和存储相关的概念和技术,它们在许多领域都有广泛的应用。下面是对它们的详细介绍:

图数据:

图数据是一种基于图的数据结构,用于表示实体(节点)及其之间的关系(边)。这种数据结构非常适合描述具有复杂关系的数据,如社交网络、交通网络等。
特点:图数据能够直观地表示实体之间的关系,并且支持高效的查询和遍历操作。

图数据库:

图数据库是一种用于存储、查询和管理图数据的数据库系统。它基于图的数据模型,提供高效的图遍历和查询算法,能够处理大规模的图数据。
特点:图数据库具有高效查询、高效存储、可扩展性和灵活性等特点。它支持多种数据类型和数据结构,可以处理复杂的关系数据,并满足不同的应用场景需求。
应用场景:图数据库在社交网络、推荐系统、生物信息学、网络安全、物联网等领域都有广泛的应用。例如,在社交网络中,可以使用图数据库存储用户之间的关系,进行好友推荐、社交网络分析等应用。

知识图谱:

知识图谱是人工智能领域的一个概念,主要用于描述真实世界中存在的各种实体和概念,以及它们之间的关系。它实际上是一种语义网络,建立在自然语言处理(NLP)的基础上。
特点:知识图谱能够高效地查询复杂的关联信息,从语义层面理解用户意图,从而改进搜索质量。
应用:知识图谱在智能问答、搜索、个性化推荐等方面有广泛应用。例如,它可以为聊天机器人提供广泛的知识,也可以为行业智能问答系统提供有针对性的专业领域知识。

Neo4j:

Neo4j是一个高性能的图形数据库,它将结构化数据存储在网络(图)上,而不是传统的表中。它具备完全的事务特性,并且是一个嵌入式的、基于磁盘的Java持久化引擎。
特点:Neo4j支持ACID事务,可以轻易扩展至上亿节点和关系,并且拥有自己的高级查询语言Cypher,用于高效检索。
应用:Neo4j常用于微博好友关系分析、城市规划、社交、推荐等应用。由于其嵌入式、高性能、轻量级等优势,Neo4j在图形数据库领域越来越受到关注。

二、环境配置

在win10上的安装:
0. java JDK安装

下载java8 exe:

https://www.oracle.com/java/technologies/downloads/#java8

在这里插入图片描述
安装exe,一路next:
在这里插入图片描述
在这里插入图片描述
配置环境变量
用户变量可以不用管
关注系统变量
在这里插入图片描述
新建

变量名:JAVA_HOME
变量值:C:\ProgramFiles\Java\jdk1.8.0_162(JDK的安装路径,以自己的安装路径为准)

新疆
新建CLASSPATH 变量,变量值为:

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

(注意前面是有一个点的)
在这里插入图片描述
最后!!!
path中新增下图内容:
在这里插入图片描述

%JAVA_HOME%\bin

在这里插入图片描述
验证可如上图

  1. 从官网下载最新版 Neo4j 社区版(Community)

需要注册后才能下载
下载好后解压到自己想放的盘里,例如:

D:\Program Files (x86)\neo4j-community-3.4.0

  1. 创建系统环境变量

在计算机-属性中创建系统环境变量NEO4J_HOME,并把主目录(E:\Program Files (x86)\neo4j-community-3.4.0)设置为变量值。

NEO4J_HOME=E:\Program Files (x86)\neo4j-community-3.4.0

在path中添加

%NEO4J_HOME%\bin

  1. 运行

CMD管理员身份运行

输入:

neo4j.bat console

或者

安装服务

neo4j install-service

启动服务

neo4j start

停止服务

neo4j stop

在浏览器中打开

http://localhost:7474

默认跳转到 http://localhost:7474/browser,出现Neo4j界面,则安装成功。

初始密码:neo4j 进去之后可以修改密码

如果neo4j stop不能停止neo4j,则用kill -s 9 强制杀掉进程。

  1. 切换数据库
    切换数据库
    每次启动neo4j,它只能读取一个数据库。默认情况下的Graph.db数据库。

能创建新数据库而不能删除现有数据库。

只需在$NEO4J_HOME\conf的目录编辑neo4j.conf。搜寻dbms.active_database=,其默认值应为graph.db。用其他名称替换它,然后再次启动neo4j。现在,将在该目录名下创建一个新数据库。

若要切换回以前的db,请重复这些步骤,只需将新值替换为graph.db在配置文件中。

注意:如果在neo4j启动的时候修改了配置文件,则需要重新启动一次,浏览器页面才会更新。

三、python基于已有数据构建知识图谱

初始文件如下:
在这里插入图片描述
设计文件,抽离其中数据,生成以 节点-节点-关系为格式存储的数据文件。

# 阶段划分抽象
import os
data_ls = os.listdir(r'C:\Users\12258\Desktop\bs_web\bs_figureDB\data')
print(data_ls)
def phase_split(ls):
    m_ls1 = []#中间变量1,列表,用于存储清洗、分词后的标题分词列表的列表
    for i in ls:
        m_ls2 = []# 中间变量2,列表,用于存储清洗过程中符合要求的词的列表
        for j in i.strip('.xlsx').split('-'):
            if len(j) == 1:
                pass
            else:
                m_ls2.append(j)
        m_ls1.append(m_ls2)
    result = []
    for i in m_ls1:
        if len(i) == 2:
            result.append(i[0]+'-'+i[1]+'-'+'1级次级')
        elif len(i) == 3:
            result.append(i[1]+'-'+i[2]+'-'+'2级次级')
        elif len(i) == 4:
            result.append(i[2]+'-'+i[3]+'-'+'3级次级')
    return result
result = phase_split(data_ls)
print(result)
# 属性划分抽象
import pandas as pd
data = pd.read_excel(r'C:\Users\12258\Desktop\bs_web\bs_figureDB\data'+'\\'+'0-变电工程数据-1-设计阶段-2-初设阶段-3-设备及材料清册.xlsx')
print(data.head())
result1 = []
for flag in range(3):#对三个字段作遍历
    if flag == 0:
        for i in range(len(data['名称'].tolist())):
            result1.append(data['名称'].tolist()[i]+'-'+'单位:'+str(data['单位'].tolist()[i])+'-'+'属性')
    elif flag == 1:
        for i in range(len(data['名称'].tolist())):
            result1.append(data['名称'].tolist()[i]+'-'+'数量:'+str(data['数量'].tolist()[i])+'-'+'属性')
    elif flag == 2:
        for i in range(len(data['名称'].tolist())):
            result1.append(data['名称'].tolist()[i]+'-'+'单价:'+str(data['单价'].tolist()[i])+'-'+'属性')
#print(result1)
for i in data['名称'].tolist():
    result1.append('设备及材料清册'+'-'+i+'-4级次级')
print(result1)

data = pd.read_excel(r'C:\Users\12258\Desktop\bs_web\bs_figureDB\data'+'\\'+'0-变电工程数据-1-设备阶段-2-档案部分-3-电气档案.xlsx')
print(data.head())
result2 = []
for flag in range(2):#对两个字段作遍历
    if flag == 0:
        for i in range(len(data['名称'].tolist())):
            result2.append(data['名称'].tolist()[i]+'-'+'规格:'+str(data['规格'].tolist()[i])+'-'+'属性')
    elif flag == 1:
        for i in range(len(data['名称'].tolist())):
            result2.append(data['名称'].tolist()[i]+'-'+'入库日期:'+str(data['入库日期'].tolist()[i])+'-'+'属性')
#print(result2)

for i in data['名称'].tolist():
    result2.append('电气档案'+'-'+i+'-4级次级')
print(result2)

# 存入txt文档保存
data_out = result+result1+result2
with open('result.txt','a',encoding='utf-8') as f:
    for i in data_out:
        f.write(i)
        f.write('\n')

结果如下:
在这里插入图片描述
根据该文件构建数据库,代码如下:

# 导入库
from py2neo import Graph, Node, Relationship
# 定义容器
father = []
son = []
connect = []
# 打开自定义数据文件,并将数据存入容器,格式为列表
path = r'result.txt'
with open(path,encoding='utf-8') as f:
    for i in f.readlines():
        mid = i.split('-')
        father.append(mid[0])
        son.append(mid[1])
        connect.append(mid[2])

# 连接数据库neo4j,输入个人配置
graph = Graph("http://localhost:7474//browser/", username='neo4j', password='luhai123', run="sub")
# 清空全部数据
graph.delete_all()
# 开启一个新的事务
graph.begin()
# 在新的事务中,利用列表中的数据添加点与边
# 循环遍历
for i in range(len(father)):
    start_node=Node("data",name=father[i])
    end_node=Node("data",name=son[i])
    relation=Relationship(start_node,connect[i],end_node)
    graph.merge(start_node,"data","name")
    graph.merge(end_node,"data","name")
    graph.merge(relation,"data","name")

# 终端:neo4j.bat console
# 知识图谱网站:http://127.0.0.1:7474/browser


  • 42
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python Django是一个用于Web应用程序开发的开源框架,可以帮助开发人员快速构建高效的网站。而基于知识图谱的问答系统是一种利用知识图谱技术,根据用户提问从知识图谱中检索相关信息并给出准确回答的系统。 Python Django框架与基于知识图谱的问答系统可以结合使用来构建一个功能强大的智能问答系统。首先,借助Django的开发框架,可以轻松搭建用户界面和管理后台。通过Django的模型和视图,可以定义和处理用户输入。其具有的灵活性和易用性使得开发人员可以更加专注于系统的核心功能和逻辑的实现。 其次,基于知识图谱的问答系统需要使用图数据库来存储和管理知识图谱数据。Python提供了多种图数据库的开发和访问接口,可以方便地集成到Django中。开发人员可以使用Python的图数据库接口,通过查询图数据库获取用户提问所需的数据和答案,并将其集成到Django的视图中返回给用户。 此外,Python和Django还提供了丰富的第三方库和插件,可以方便地实现自然语言处理、机器学习和人工智能等相关功能。例如,可以使用Python的自然语言处理库NLTK来对用户的提问进行分词、词性标注等处理,从而更准确地检索和匹配知识图谱中的信息。 总结来说,Python Django作为一个强大的Web开发框架,可以与基于知识图谱的问答系统结合使用,使得开发人员能够更加高效地构建功能完善、用户友好的智能问答系统。它结合了Django的快速开发特性和Python的丰富库支持,为基于知识图谱的问答系统的开发提供了便利和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码的中青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值