知识图谱构建工具和代码速查表 - bettermorn/KGCourse GitHub Wiki

每个阶段的理论工具

工具速查表

功能 工具名称 版本号
抽取文字 Tika 1.26
分词 HanLP 1.8.1
分词 IKAnalyzer 3.0
搜索 ElasticSearch 7.12.1
可视化与分析 Kibana 7.12.1
预训练语言模型 Bert 无,最近2021.1.27
知识的关系抽取 DeepKE 0.2.0
知识推理 Drools 7.54.0
知识推理 Jena 4.0.0 |

知识图谱过程的一个案例:《海贼王》知识图谱

过程 输入 处理过程 输出
构建实体词汇库 网页链接中的内容
用正则式解析 实体词汇库
Baby-5
G1支部
G8要塞
Miss.双手指
Miss.情人节
Miss.星期一
Miss.星期五
Miss.父亲节
Miss.黄金周
获取实体列表 实体词汇库:词条名作为输入实体指称项名称 知识工厂提供的API 备选实体名称
筛选实体列表 备选实体名称
筛选条件,例如包含关键词等特点 合法词条名和实体名对应的字典
获取图谱中对应实体的三元组知识 合法词条名和实体名对应的字典
调用API 保存着每个实体对应的三元组知识的字典,采用两级索引结构,第一级索引是mention name,第二级索引是实体名字

保存在所有属性名称的列表
抽取网页中半结构化的知识 网页文件
输入目录
人工删除不相关的样本,
模板匹配抽取人物属性信息,人工校验
所有解析得到的谓词
predicate、所有解析得到的id和实体名、抽取到所有实体的属性知识
输出目录
汇总结果 所有解析得到的谓词predicate
所有解析得到的id和实体名
抽取到所有实体的属性知识
汇总信息 输出目录
talkop/data/processed_manual_talkop_vivre_card
所有谓词的汇总、所有抽取得到的实体名以及对应ID的汇总
关系抽取:标注数据 历史信息,记录着每个人物在故事中的时间线以及对应的故事
。每个人的历史信息记录着其与其他实体之间交互的信息,
利用它来构建垂直领域内的关系抽取数据集
用精灵标注助手标注实体和关系信息 被标注的数据,包括实体和关系信息
关系抽取:存储数据 原始标注结果
转化为符合处理格式的数据
例如deepke
存储的数据,包括实体和关系
导出三元组 原有数据
导出标注好的实体和关系 三元组,例如格式为N-Triple
抽取知识关系 文本以及有标注的类型和关系数
head_type,tail_type,relation,index
sentence,relation,head,head_offset,tail,tail_offset
DeepKE抽取关系 三元组
deepke-master/data/vivrecard/ 中的 origin 和 summary

0.工具和综合平台

名词解释(来源:王昊奋等 知识图谱:方法、实践与应用)

  • 知识表示:包括客观事物的机器标示、一组本体约定和概念模型、支持推理的表示基础、用于高效计算的数据结构、人可以理解的机器语言;
  • 知识抽取:自动化地从文本中发现和抽取相关信息,并将多个文本碎片中的信息进行合并,将非结构化数据转换为非结构化数据,包括某一特定领域的模式、实体关系或RDF三元组;
  • 知识挖掘:从已有的实体及实体关系出发挖掘新的知识,包括知识内容挖掘和结构挖掘,例如实体链接与规则挖掘;
  • 知识推理:围绕关系的推理展开,即基于图谱中已有的事实或关系推断出未知的事实或关系,一般着重考察实体、关系和图谱结构三方面的特征信息。推理方法包括演绎和归纳推理;
  • 知识问答:系统是一个拟人化的智能系统,接受使用自然语言表达的问题,理解用户的意图,获取相关的知识,最终通过推理计算形成自然语言表达的答案并反馈给用户。包括问题、答案、智能体、知识库等

工具说明

  • 文字抓取工具:Apache Tika:The Apache Tika toolkit detects and extracts metadata and text from over a thousand different file types (such as PPT, XLS, and PDF). 读多种类型文字
  • ElasticSearch 分布式搜索和分析引擎
  • Kibana 可视化和分析仪表盘工具
  • 图数据库参考代码

1.自然语言处理:抽取实体

  • HanLP
  • 链接:Apache License2.0 https://github.com/hankcs/HanLP
  • 包含中文分词 词性标注 命名实体识别 依存句法分析 语义依存分析 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁转换 自然语言处理这些功能。
  • 注:经常更新

2.表示知识

3.抽取知识、关系

预训练模型Bert:

https://github.com/ymcui/Chinese-BERT-wwm 中文BERT-wwm ,下载中文模型参考https://github.com/ymcui/Chinese-BERT-wwm#%E4%B8%AD%E6%96%87%E6%A8%A1%E5%9E%8B%E4%B8%8B%E8%BD%BD Bert(Bidirectional Encoder Representations from Transformers):Transformer 中的 Encoder,理解上下文的语言代表模型,是 Google 以無監督的方式利用大量無標註文本「煉成」的語言代表模型,給它一段文本序列,它能回傳一段相同長度且蘊含上下文資訊的 word repr此表示序列,對下游的 NLP 任務很有幫助。

DeepKE:

CN-deepdive

http://www.openkg.cn/dataset/cn-deepdive OPENKG修改了DeepDive中自然语言处理的model包,使它支持中文,并提供中文使用手册

HNRE:基于关系层次注意力机制的关系抽取

  • relations: relations /head/tail/relation index
  • train: headid tailid headname tailname relation sentence ###END###
  • test: headid tailid headname tailname relation sentence ###END###
  • vec: vocabu 向量值
  • 模型训练
  • global_step refers to the number of batches seen by the graph. Every time a batch is provided, the weights are updated in the direction that minimizes the loss. global_step just keeps track of the number of batches seen so far. When it is passed in the minimize() argument list, the variable is increased by one. Have a look at optimizer.minimize().You can get the global_step value using tf.train.global_step(). Also handy are the utility methods tf.train.get_global_step or tf.train.get_or_create_global_step. 0 is the initial value of the global step in this context.
instances         : 293162
sentences         : 570088
relations         : 53
word size         : 50
position size     : 5
hidden size       : 230
using pretrained wordvec and is trainable
using pretrained unkvec and is trainable
using pretrained pos1vec and is trainable
using pretrained pos2vec and is trainable
using pretrained convkernel and is trainable
using pretrained convbias and is trainable

4.推理知识

详细内容参考 知识图谱相关工具信息

  • Drools
  • Jena

5.知识问答

5.1 逻辑模板:

5.2 参考框架

⚠️ **GitHub.com Fallback** ⚠️