内容来自七月算法nlp课程。
这是要解决知识图谱中的其中一个问题:从非结构文本中抽取三元组。
要解决这个问题,总体思路有通过模板抽取、通过模型抽取。
三元组工业界一般都存储在neo4j中,学术界会采用RDF形式存储。
1结构化数据抽取
定义好schema。按照schema的格式,把关系型数据转为图数据。
2 非结构化数据抽取
2.1 通过模板抽取
通过模板抽取,这个一般是通过正则实现,课程上不做过多介绍。
2.2 通过模型抽取
模型的整体结构如图所示,输入是一段文本信息,经过encoder层进行编码,提取出头实体(subject),再对头实体编码并复用文本编码,接下来用了个小trick,同时预测尾实体(object)与关系(predicate),当然你也可以分开先预测尾实体,再预测关系。
对于实体预测可以使用BIO的方式,也可以采用半指针半标注的方式。
2.2.1 BIO方式
2.2.2 半指针半标注方式
模型代码:
https://github.com/terrifyzhao/spo_extract
预训练模型
https://huggingface.co/hfl/chinese-bert-wwm-ext/tree/main
数据
https://pan.baidu.com/s/1rNfJ88OD40r26RR0Lg6Geg?at=1621054407864