图谱问答-理解query

内容来自七月算法nlp课程。

图谱问题是用户输入一句话,系统返回这句话的答案。这里分多种情况。例如根据实体和关系查询尾实体,或者根据实体查询关系,甚至还会出现多跳的情况,不同的情况采用的方法略有不同。

文章目录

  • 1 根据实体和关系查询尾实体
    • 1.1 找到实体与关系
      • 1.1.1 AC自动机
    • 1.2 实体链接
    • 1.3 实体消岐

1 根据实体和关系查询尾实体

需要两个步骤完成:第一步找到实体与关系;第二步实体链接和实体消岐。

1.1 找到实体与关系

NER的方式很多。可以采用传统机器学习的分类方法,也可以使用深度学习神经网络,一般架构为encoder+cfr层。
这里重点介绍AC自动机

1.1.1 AC自动机

1、构建前缀树

2、给前缀树加上fail指针
节点i的fail指针,如果在第一层,则指向root节点,其它情况指向其父节点的fail指针指向的节点的相同节点

1.2 实体链接

根据上一步抽取出实体和关系:例如 一句话“周董的女儿叫什么”。抽取出 周董、女儿。
图数据库中的实体可能和抽取出来的实体不一致。这个时候就需要实体链接。例如库中可能是周杰伦。这样第一步就需要找到一个候选实体集合。最好的方法是构建实体词典。用抽取出来的词在词典中查询。

例如词典中包含 周董、周杰伦、Jay都指向周杰伦这个实体。那抽取出来的“周董”也就可以连接到周杰伦这个实体了。

如果这个时候查出来的实体只有一个那实体链接就结束了。如果查出来是多个,那就需要实体消岐了。

1.3 实体消岐

实体消岐,简单的可以度最高的那个。这里度可以是这个节点的热度或者节点在图中的出度和入度之和。当然也可以选择匹配的方法。
老师讲的是候选实体与query做相似度计算,我理解的应该是候选实体与抽取出来的subject做相似度计算。

经过思考证明我的想法是错误的。例如query=“周董的女儿”。提取出subject=周董。经过实体链接之后发现库中有2个周董相关的实体。一个是歌手,一个是某公司领导。这个时候就需要实体消岐。如果拿着subject去与两个实体的相关属性计算相似度是没有意义的。只能用“周董的女儿”去计算相似度。也许其中一个实体没有女儿的关系。那就只能选择另外一个实体了。而用subject=周董去计算相似度,信息太少了。
所以用于计算文本相似度的应该是query。

1、使用孪生网络,计算相似度
例如模型m1,m2权重共享参数,query作为m1的输入,候选实体1作为m2的输入,分别得到embedding之后,两个embedding计算相似度,得到一个(0,1)范围内的值。
在这里插入图片描述

可以把m1,m2换成bert,使用bert做相似度计算。
也可以采用[CLS]query[SEP]候选实体1[SEP] 这个作为输入,输入到bert中。

用来计算相似度的模型
参考老师的博客:https://blog.csdn.net/u012526436/article/details/90179466

重点是ESIM模型。

2、对问题和候选集做embedding,计算余弦相似度
步骤如下:
a 例如选择模型x ELMo
b 将query输入到模型x,得到embedding_query
c 将候选实体1输入到模型x,得到embedding_1
d 计算embedding_query和embedding_1的余弦相似度。
e 计算多个候选实体的余弦相似度,选择最高的。

哈工大开源的多语言ELMo

https://github.com/HIT-SCIR/ELMoForManyLangs

中文版本的ELMo
https://pan.baidu.com/s/1RNKnj6hgL-2orQ7f38CauA

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

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

相关文章

python NoSuchElementException异常处理

python爬虫程序,用Selenium模拟点击时报出异常NoSuchElementException:Unable to locate...... 出错原因:https://www.cnblogs.com/cttcarrotsgarden/p/11210883.html 异常通常发生于找不到目标元素的时候 导入Selenium的NoSuchElementExcept…

http modules在.net安全认证中的作用

介绍一下如何在asp.net中使用http moudle创建自定义的安全认证首先了解asp.net对web request的处理过程http modules是一个实现了IHTTPModule接口基础类. 用来处理Web Request.asp.net内置的Modules有Output Cache ModuleWindows Authentication ModuleForms Authentication Mo…

图谱问答-句子向量模型部署项目总结(未完)

内容来自七月算法nlp课程。 文章目录1 句子向量1.1 bert句子向量表示相似度效果不好1.2 sentence-bert1 句子向量 句子向量是用于实体消岐的。可以使用Elmo,也可以使用bert。这里介绍用bert生成句子向量。 1.1 bert句子向量表示相似度效果不好 Bert中最常用的句向…

Linux du

linux中du与df的区别和联系 1,两者区别 du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在 的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。df,di…

DataList分页技术-- PagedDataSource类实现DataList和Repeater的分页效果

Asp.net提供了三个功能强大的列表控件:DataGrid、DataList和Repeater控件,但其中只有DataGrid控件提供分页功能。相对DataGrid,DataList和Repeater控件具有更高的样式自定义性,所以很多时候我们喜欢使用DataList或Repeater控件来显…

基于知识图谱的问答系统实践

文章目录1 项目目标1.1 数据情况1.2 问题分类2 技术方案2.1 数据准备2.2 数据入库2.3 查询部分3 模型3.1 问题分类3.1.1 数据准备3.1.2 分类模型TextCNN3.2 不同类型的问题处理逻辑4 总结与优化1 项目目标 1.1 数据情况 基于知识图谱的问答系统,简称为KBQA&#x…

java常用的语句

//判断一个长的字符串中是否包含某一个短的字符串 if (str1.indexOf(str2) ! -1) {return true;//存在 }else {return false; } /*** 消息模板关键字替换* param template 消息内容* param map 替换key-value* return*/ public static String replaceTemplate(String template…

spring mvc学习(48):java判断系统是linux还是windows系统

java判断系统是linux还是windows系统 判断一个系统是windows还是linux? import org.junit.jupiter.api.Test;/*** program: utilsdemo* description: 判断运行的系统是windows还是linux* author: zhangyu* create: 2019-08-12 10:07*/public class JudgeSystem {/*** descript…

二分搜索模板

翻了一下自己的博客。记录了花花酱的二分搜索模板、王争的二分搜索模板。 花花酱的文章中提到:不要试图去找一个正确答案。试图去找一个分割点m,使得x>m,g(x)>0为true。这个始终get不到。 王争的二分模板思路是比较简单的,就…

spring mvc学习(49):返回json数据

json包下载 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">…

【推荐】“水果”公司的复兴 (乔布斯和苹果公司)---Google黑板报

从google黑板报上发现的很好的介绍乔布斯和苹果的文章&#xff1a;“水果”公司的复兴发表者&#xff1a;Google&#xff08;谷歌&#xff09;研究员 吴军1.传奇小子2.迷失方向3.再创辉煌大家可以看一下&#xff0c;感受史蒂夫乔布斯的传奇。转载于:https://www.cnblogs.com/co…

log4j 日志配置

Log4j教程 - Log4j安装 Log4j API包是根据Apache软件许可证分发的。 最新的log4j版本&#xff0c;包括全源代码&#xff0c;类文件和文档可以在http://logging.apache.org/log4j/找到。 我们可以从上面的链接下载apache-log4j-x.x.x.tar.gz或zip文件。 支持库 我们可以使用log4…

理解transformer

文章目录1 注意力机制2 自注意力机制3 自注意力机制加强版4 Transformer的结构4.1 input4.2 encoder4.2.1 Multi-head attention4.2.2 残差链接4.2.3 层正则化layer norm4.2.4 前馈神经网络 feed forward network4.3 decoder4.3.1 输入4.3.1 Masked Multi-head attention4.3.2 …

第一百三十七期:一个简单的小案例带你理解MySQL中的事务

事务又叫做TCL&#xff0c;全称是transaction control language&#xff0c;意思是事务控制语言。 作者&#xff1a;Java的架构师技术栈 事务又叫做TCL&#xff0c;全称是transaction control language&#xff0c;意思是事务控制语言。这篇文章还是属于我的mysql基础文章&…

解决ffmpeg拉流转发频繁丢包问题max delay reached. need to consume packet

软件&#xff1a; 1、流媒体服务器EasyDarwin-windows-8.1.0-1901141151 2、ffmpeg-20181001-dcbd89e-win64-static 3、直播源&#xff1a;rtsp://192.168.1.168/0 4、流媒体服务器EasyDarwin地址rtsp://192.168.1.28/3 问题现象 [rtsp 0000000000122bc0] max delay reached. …

第一百三十八期:37 个MySQL数据库小知识,为面试做准备

无论是运维、开发、测试&#xff0c;还是架构师&#xff0c;数据库技术是一个必备加薪神器&#xff0c;那么&#xff0c;一直说学习数据库、学MySQL&#xff0c;到底是要学习它的哪些东西呢? 作者&#xff1a;芒果教你学编程 无论是运维、开发、测试&#xff0c;还是架构师&…

NLG模块实现(未完成)

NLG(Natural Language Generation)&#xff0c;计算机将结构化数据转换为文本并以人类语言编写信息。 使用GPT框架完成NLG任务。GPT模型是预训练模型&#xff0c; 采用两阶段过程&#xff0c;第一个阶段是利用语言模型进行预训练&#xff08;无监督形式&#xff09;&#xff0c…

android adb shell常用命令(四)

一、简介 adb命令是adb这个程序自带的一些命令&#xff0c;而adb shell则是调用的Android系统中的命令&#xff0c;这些andorid特有的命令都放在来Android设备的system/bin目录下。 二、常用命令介绍 pm Pacage Manager&#xff0c;可以获取到一些安装在Android设备上的应用信息…

第一百三十九期:11月数据库排行:排名前三数据库分数暴跌

DB-Engines 数据库流行度排行榜 11 月更新已发布&#xff0c;与上期数据相比&#xff0c;这期排行榜最大的亮点就是排名前三数据库那引人注目的“红色”分数。 作者&#xff1a;局长 DB-Engines 数据库流行度排行榜 11 月更新已发布&#xff0c;排名前二十如下&#xff1a; ▲…

对话系统之NLU总结报告

文章目录1 项目介绍1.1 背景知识介绍1.2 数据集介绍1.3 评价指标2 技术方案梳理2.1 模型目标2.2 模型介绍2.3 模型实现2.3.1 数据处理2.3.2 构建dataset2.3.3 模型定义2.3.4 训练相关参数2.3.5 训练结果3 项目总结1 项目介绍 1.1 背景知识介绍 对话系统按领域分类&#xff0c…