学习笔记之图谱问答


前言

知识图谱构建好了之后的应用有很多。图谱问答是最常见的应用。

一、实体识别和关系抽取

实体识别和关系抽取的常见方法有匹配的方式和模型的方式。

1. NER模型

常见的实体识别方法是是同BIO标注法。基于BERT的实体识别加关系抽取的方法描述如下:
假设实体有N个类型,那么BIO标注就有2N+1种可能,对于每个词向量768维都做一个2N+1分类,外面再加一个CRF层增加词与词的依赖性。至此就是实现了实体识别,最后利用CLS编码做一个多分类,用来标志关系。

2. AC自动机

除了使用模型的方法外,我们还可以使用精确匹配的方式来做NER。这里我们介绍AC自动机。
首先需要构建一个前缀树。作用是可以将计算复杂度从O(N)降低到O(logN)。前缀树上每一条从根节点到叶子节点的路径都代表一个实体。AC自动机就是前缀树增加一个fail指针。对于每一个节点,fail指针要么指向root,要么指向与父节点的fail指针目标相同的节点。

小结:模型的好处是不必完全精确。匹配的好处是速度快,无需手工标注。

二、实体链接

1. 实体消歧视的两个思路

实体链接的方法就是先找到候选集,再做实体消歧视。这里介绍若干方法:
1、双塔孪生网络法。构建两个参数共享的网络结构,让文本和候选实体分别作为输入,将输出的向量做相似性判断,相似性最高的作为选定的实体。文本的匹配除了Bert之外还可以考虑使用ESIM
2、非孪生。将文本和候选实体中间用【SEP】隔开,用【CLS】作为判断结果。
3、使用Elmo等编码器分别编码文本和候选实体,计算预选相似度。

2. 几个判断文本相似度的方法

1、【不推荐】直接使用Bert的【CLS】或者使用最后一个隐藏层平均的方法。实验下来这个效果比较差,不建议使用。原因是词频高的词向量距离原点近,导致相差不大。词频低的词向量距离原点远,词向量附近是有空洞的。平均词向量很可能是一个没什么意义的词汇。

2、【推荐】Sentence-Bert。该模型有两个任务,NLI和 STS。使用双塔的模型结构。将两个句子分别用Bert编码,再分别经过一个pooling层,得到两个encoding(u,v)。利用 u - v, u*v, u+v 三者经过一个三分类层决定NLI。再通过同样的前几层,最后一层使用的是cos-sim输入(-1,1)二分类判断两个句子是否相似。

3、【可行】Bert-Flow。思路是将Bert的词向量投影到高斯分布中。Flow的方法是一个图像领域的无监督生成方法。

4、【推荐】SimCSE。本质思路是对比学习。小技巧是因为有Dropout的存在一个句子经过Bert得到编码两次互为同义句的正样本,文本的其他句子作为负样本。对于每一个句子,不考虑自己的情况下做一个多分类。

三、图谱问答

常见图谱问答可以分为如下三类查寻实体,查属性,查关系。

1、查询实体。注意这里不是指查询的结果是个实体,而是查询的问题的落脚点是实体。问题中一般包含实体的属性名,实体的属性值和实体类型。意图识别出是查询实体之后下一步就是要做实体链接、属性名、属性值的抽取。

2、查询属性。如果问题落在属性上。那么下一步就要做实体链接、属性名抽取。

3、查询关系。如果问题落在关系上。实际上查询返回的结果其实还是实体。我们需要做的是实体链接、关系抽取。这里最可能涉及到多跳的情况。因为返回的实体后面可以继续判断是查询属性还是查询关系,只要查询关系就还可能继续往下跳。

多跳的情况主要原因在于实体的关系的查询结果仍为实体,可以继续查询关系或者属性。

四、模型部署

模型的简单部署我们可以使用Flask,将问题通过部署的浏览器页面的地址中输入,通过再代码中调用封装好的图谱问答包查询结果在前端页面输出结果。

总结

图谱问答重点需要搞清楚三元组关系、关系与属性的区别(尾实体与属性值的区别);另外建立Schema时需要格外的小心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值