赞
踩
Jiagu使用大规模语料训练而成。将提供中文分词、词性标注、命名实体识别、情感分析、知识图谱关系抽取、关键词抽取、文本摘要、新词发现、情感分析、文本聚类等常用自然语言处理功能。
Jiagu 详细内容参考:https://github.com/ownthink/Jiagu
ubuntu 安装 neo4j
wget -O - https://debian.neo4j.org/neotechnology.gpg.key | sudo apt-key add -
echo 'deb https://debian.neo4j.org/repo stable/' | sudo tee /etc/apt/sources.list.d/neo4j.list
sudo apt-get update
sudo apt-get install neo4j
sudo apt-get install neo4j-enterprise
sudo add-apt-repository ppa:cleishm/neo4j
sudo apt-get update
sudo apt-get install neo4j-client libneo4j-client-dev
pip install py2neo
将 python List 转为 pandas.DataFrame 进而存储为 csv 文件
import jiagu
text = '姚明1980年9月12日出生于上海市徐汇区,祖籍江苏省苏州市吴江区震泽镇,前中国职业篮球运动员,司职中锋,现任中职联公司董事长兼总经理。'
knowledge = jiagu.knowledge(text)
print(knowledge)
[['姚明', '出生日期', '1980年9月12日'],
['姚明', '出生地', '上海市徐汇区'],
['姚明', '祖籍', '江苏省苏州市吴江区震泽镇']]
data = pd.DataFrame(data=knowledge)
data
0 | 1 | 2 | |
---|---|---|---|
0 | 姚明 | 出生日期 | 1980年9月12日 |
1 | 姚明 | 出生地 | 上海市徐汇区 |
2 | 姚明 | 祖籍 | 江苏省苏州市吴江区震泽镇 |
data.to_csv('input.csv', encoding='utf-8')
至此,中文文本经过了知识图谱关系抽取形成List,并将 List 存储为 csv 格式。接下来,就可以使用 py2neo API 实现知识图谱的构建。
graph = Graph('http://localhost:7474', user='neo4j', password='neo4j') graph.delete_all() with open('input.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) for item in reader: if reader.line_num == 1: # 过滤掉 csv 第 1 列, 0, 1, 2 continue print("当前行数: ", reader.line_num, "当前内容: ", item) start_node = Node("姓名", name=item[1]) end_node=Node("属性值", value=item[3]) relation=Relationship(start_node, item[2], end_node) graph.merge(start_node, "姓名", "name") graph.merge(end_node, "属性值", "value") graph.merge(relation, "值", "属性")
当前行数: 2 当前内容: ['0', '姚明', '出生日期', '1980年9月12日']
当前行数: 3 当前内容: ['1', '姚明', '出生地', '上海市徐汇区']
当前行数: 4 当前内容: ['2', '姚明', '祖籍', '江苏省苏州市吴江区震泽镇']
Neo4j 图数据库已经启动,在浏览器中输入: http://loaclhost:7474 即可访问。
中文文本经过关系抽取之后构建出来的知识图谱如下图所示:
import jiagu import csv import pandas as pd import py2neo from py2neo import Graph, Node, Relationship # 中文文本导入 text = '姚明1980年9月12日出生于上海市徐汇区,祖籍江苏省苏州市吴江区震泽镇,前中国职业篮球运动员,司职中锋,现任中职联公司董事长兼总经理。' # 关系抽取 knowledge = jiagu.knowledge(text) # 将抽取到的关系转为 pandas.DataFrame 进而存储为 csv 文件 data = pd.DataFrame(data=knowledge) data.to_csv('input.csv', encoding='utf-8') # 连接本地 Neo4j 图数据库 graph = Graph('http://localhost:7474', user='neo4j', password='1991') graph.delete_all() # 构建知识图谱 with open('input.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) for item in reader: if reader.line_num == 1: # 过滤掉第 1 列(0, 1, 2) continue print("当前行数: ", reader.line_num, "当前内容: ", item) start_node = Node("姓名", name=item[1]) end_node=Node("属性值", value=item[3]) relation=Relationship(start_node, item[2], end_node) graph.merge(start_node, "姓名", "name") graph.merge(end_node, "属性值", "value") graph.merge(relation, "值", "属性")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。