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

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的知识图谱技术

文章目录

  • 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

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

  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: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣爆刷第102天之hot100五连刷96-100

力扣爆刷第102天之hot100五连刷96-100 文章目录 力扣爆刷第102天之hot100五连刷96-100一、136. 只出现一次的数字二、169. 多数元素三、75. 颜色分类四、31. 下一个排列五、287. 寻找重复数 一、136. 只出现一次的数字 题目链接:https://leetcode.cn/problems/sing…

Python PyQt5

实现界面开发,与tkinter功能一致,网上已有详细资料,此处仅记录自己的代码: 文章目录 1. 实操1.1 main.py1.2. 窗体模块代码1.3. 页面效果 2. 参考资料2.1. PyQt5 参考资料2.2. tkinter 参考资料 3. 安装注意事项3.1. 下载3.2 Pyc…

python --- 练习题3

目录 1、猜数字游戏(使用random模块完成) :继上期题目,附加 2、用户登录注册案例 3、求50~150之间的质数是那些? 4、打印输出标准水仙花数,输出这些水仙花数 5、验证:任意一个大于9的整数减去它的各位…

Blender小:图片转mesh,并展UV

其实就这么一个插件:Image2Mesh https://github.com/kedepot/i2m-std blender加载完图片之后点这个就行 到了这一步还不行如果直接放到unity中使用的话,添加材质和贴图之后每一个小块都是独立的区域来展示贴图,所以需要展UV

蓝牙HFP协议推荐的语音丢包补偿算法浮点实现的定点化

最近在做蓝牙的宽带语音通话。相对于蓝牙窄带语音,主要变化是把采样率从8k变到16k,以及编解码器从CVSD变成mSBC(modified SBC,改进的SBC)等。蓝牙语音通话相关的HFP(Hand Free Profile)强烈建议…

【随笔】Git -- 解决提交时本地与目标分支不一致导致提交失败(三)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

高标准农业四情监测系统的应用范围

高标准农业四情监测系统的应用范围【TH-Q1】随着科技的不断进步,高标准农业四情监测系统已经逐渐成为现代农业的重要组成部分。这一系统能够实时监测土壤、气候、作物生长和病虫害情况,为农业生产提供精准的数据支持,从而提高农作物的产量和质…

武汉星起航引领跨境电商新潮流,一站式孵化平台助力合作伙伴腾飞

在全球经济一体化的大趋势下,跨境电商以其独特的优势逐渐成为连接各国市场的桥梁。随着市场竞争的加剧,传统的经营模式已难以满足日益复杂的业务需求,合作伙伴迫切需要更为全面、专业的指导和支持。正是在这样的背景下,武汉星起航…

读天下杂志读天下杂志社读天下编辑部2023年第51期目录

阅读星光 满树桃花开,桃李报恩来 (1) 曹万花 困境中求生,逆境中发展——《鲁滨孙漂流记》阅读感悟 (4) 车宝江 《诗经》对我国传统意境论的深化 (7) 成卓华、 《读天下》投稿:cn7kantougao163.com 英美文学作品翻译中的不对等性…

AJAX-Promise

定义 Promise对象用于表示(管理)一个异步操作的最终完成(或失败)及其结果值。 好处:1)成功和失败状态,可以关联对应处理程序 2)了解axios函数内部运作机制 3)能解决回调函数地狱问题 语法&…

[HackMyVM]靶场 Liceo

kali:192.168.56.104 靶机:192.168.56.124 端口扫描 nmap 192.168.56.124 # nmap 192.168.56.124 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-22 10:56 CST Nmap scan report for 192.168.56.124 Host is up (0.000095s latency). Not shown: 997 closed…

SAP-MM-设置字段默认值

当我们创建订单时,有些字段总是重复输入,每次值也是固定的,例如生产订单 如上图“生产工厂都是1000”如何设置成默认每次进入都是1000呢? 点击字段,F1 查看参数ID“WRK” 输入tcode:SU3 按上图维护数据100…

【云呐】设备固定资产管理系统怎么使用,有哪些功能

不同的软件和实际应用场景可能会使用设备固定资产管理系统软件。一般而言,这个软件通常包括以下功能:  用户管理:系统可以创建实时跟踪不同的用户和用户组,并设置不同的权限和访问级别。  权限设置:根据权限设置功…

c语言基础笔记(1)进制转换以及++a,a++,取地址和解引用

一进制转换 OCT - 八进制 DEC - 十进制 HEX - 十六进制 0520&#xff0c;表示八进制 0x520表示16进制 unsigned 无符号&#xff0c;只有正的 signed 有正有负数 char默认是signed 类型 #include <stdio.h>int main(void) { //字符转换成数字char a 5;int a1 a- 4…

SW工具下没有URDF

解决方案&#xff0c;下载

flask之ssti [WesternCTF2018]shrine1

打开题目 整理一下&#xff0c;代码: import flask import osapp flask.Flask(__name__) app.config[FLAG] os.environ.pop(FLAG) app.route(/)def index():return open(__file__).read()app.route(/shrine/)def shrine(shrine):def safe_jinja(s):s s.replace((, ).replac…

二、Web3 学习(区块链)

区块链基础知识 一、基础知识1. 区块链可以做什么&#xff1f;2. 区块链的三个特点 二、区块链的类型概括1. PoW2. PoS3. 私有链和联盟链 三、智能合约1. 什么是智能合约2. 如何使用智能合约 四、困境1. 三难选择的基本要素2. 这真的是一个三难选择吗? 五、比特币1. 什么是比特…

JVM面试篇

面试篇就是复习前面学的 什么是JVM 1.定义&#xff1a;JVM指的是Java虚拟机&#xff0c;本质是一个运行在计算机上的程序 2.作用&#xff1a;为了支持Java中Write Once &#xff0c;Run Anywhere 编写一次 到处运行的跨平台特性 功能&#xff1a; 1.解释和运行 2.内存管理…

《深入解析 C#》—— C# 3 部分

文章目录 第三章 C#3&#xff1a;LINQ及相关特性3.1 自动实现属性&#xff08;*&#xff09;3.2 隐式类型 var&#xff08;*&#xff09;3.3 对象和集合初始化3.3.1 对象初始化器3.3.2 集合初始化器 3.4 匿名类型3.4.1 基本语法和行为3.4.2 编译器生成类型3.4.3 匿名类型的局限…

【复杂网络建模】——建模工具Matlab入门

目录 一、认识MATLAB 二、认识工具箱 三、基本操作和函数 3.1 算术操作符 3.2 数学函数 3.3 矩阵操作 3.4 索引和切片 3.5 逻辑操作 3.6 控制流程 3.7 数据输入输出 四、变量和数据类型 4.1 数值类型 4.2 整型 4.3 复数 4.4 字符串 4.5 逻辑类型 4.6 结构体&a…