AI应用开发相关目录
本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧
适用于具备一定算法及Python使用基础的人群
- AI应用开发流程概述
- Visual Studio Code及Remote Development插件远程开发
- git开源项目的一些问题及镜像解决办法
- python实现UDP报文通信
- python实现日志生成及定期清理
- Linux终端命令Screen常见用法
- python实现redis数据存储
- python字符串转字典
- python实现文本向量化及文本相似度计算
- python对MySQL数据的常见使用
- 一文总结python的异常数据处理示例
- 基于selenium和bs4的通用数据采集技术(附代码)
- 基于python的知识图谱技术
文章目录
- AI应用开发相关目录
- 一、前言
- 图数据:
- 图数据库:
- 知识图谱:
- Neo4j:
- 二、环境配置
- 三、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
验证可如上图
- 从官网下载最新版 Neo4j 社区版(Community)
需要注册后才能下载
下载好后解压到自己想放的盘里,例如:
D:\Program Files (x86)\neo4j-community-3.4.0
- 创建系统环境变量
在计算机-属性中创建系统环境变量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
- 运行
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 强制杀掉进程。
- 切换数据库
切换数据库
每次启动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:passelse: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