第十八篇:questionanswering问答系统

flying_1314 flying_1314     2022-12-09     427

关键词:

目录

介绍

事实问题

非事实问题

为什么我们关注 NLP 中的事实问题?

2 种关键方法

大纲

IR-based QA

基于 IR 的 事实(Factoid) QA:TREC-QA

问题处理

答案类型

检索

答案提取

如何?

MCTest

SQuAD

阅读理解

基于 LSTM 的模型

基于 BERT 的模型

为什么 BERT 比 LSTM 效果更好?

Knowledge-based QA

但是

语义解析

如何构建语义解析器?

Hybrid QA

Watson 核心理念

QA评估

最后


介绍

• 定义:问答(“QA”)是自动确定自然语言问题答案的任务
• 主要关注“事实”问题

事实问题

事实问题,有简短准确的答案。

非事实问题

一般的非事实问题需要更长的答案、批判性分析、总结、计算等。

为什么我们关注 NLP 中的事实问题?

• 他们更容易
• 他们有一个客观的答案
• 当前的 NLP 技术无法处理非事实的答案
• 对系统自动回答非事实问题的需求较少

2 种关键方法

• 基于信息检索的 QA
    ‣ 给定一个查询,搜索相关文档
    ‣ 在这些相关文档中查找答案
• 基于知识的QA
    ‣ 构建查询的语义表示
    ‣ 查询事实数据库以寻找答案

大纲

• IR-based QA
• Knowledge-based QA
• Hybrid QA

IR-based QA

基于 IR 的 事实(Factoid) QA:TREC-QA

1.使用问题去获得query,查询IR引擎
2. 查找文档,以及文档中的段落
3. 提取简答串

问题处理

• 找出有助于检索的问题的关键部分
    ‣ 丢弃非内容词/符号(wh-word、? 等)
    ‣ 制定为 tf-idf 查询,使用 unigrams 或 bigrams
    ‣ 识别实体并优先匹配
• 可以使用模板重新表述问题
    ‣ E.g. “Where is Federation Square located?”
    ‣ Query = “Federation Square located”
    ‣ Query = “Federation Square is located [in/at]”
• 预测预期答案类型(此处 = LOCATION)

答案类型

• 了解答案类型有助于:
    ‣ 找到包含答案的正确段落
    ‣ 查找答案字符串

• 分类处理
    ‣ 给定问题,预测答案类型
    ‣ 关键特征是问题的中心词
    ‣ 澳大利亚国徽上的动物是什么?
    ‣ 一般不难

检索

• 查找与查询匹配的前 n 个文档(标准 IR)
• 接下来查找这些文档中的段落(段落或句子)(也由 IR 驱动)
• 应包含:
    ‣ 问题关键字的许多实例
    ‣ 答案类型的几个命名实体
    ‣ 段落中这些术语的接近程度
    ‣ IR 引擎排名靠前
• 重新排列 IR 输出以找到最佳段落(例如,使用监督学习)

答案提取

• 找到问题的简明答案,作为文章的跨度

如何?

• 使用神经网络提取答案
• 又名阅读理解任务
• 但深度学习模型需要大量数据
• 我们是否有足够的数据来训练理解模型?

MCTest

• Crowdworkers 编写虚构的故事、问题和答案
• 500 个故事,2000 个问题
• 多项选择题

SQuAD

• 使用维基百科段落
• 第一组众包工作者提出问题(给定段落)
• 第二组众包工作者为答案贴上标签
• 15 万个问题(!)
• 第二个版本包含无法回答的问题

阅读理解

• 给定一个问题和上下文段落,预测答案跨度在段落中的开始和结束位置?

• 计算:
: 概率, 单词 i 是起始令牌
: 概率, 单词 i 是结束令牌

基于 LSTM 的模型

• 将问题标记提供给双向 LSTM
• 通过加权和聚合 LSTM 输出以产生 q ,即最终的问题嵌入

• 以类似的方式处理段落,使用另一个双向 LSTM
• 不仅仅是词嵌入作为输入
    ‣ 表示单词是否与疑问词匹配的特征
    ‣ POS 特征
    ‣ 加权问题嵌入:通过关注每个问题词产生

• p1, . . . , pm :来自双向 LSTM 的每个段落中单词的一个向量
• 计算每个单词的开始和结束概率:

基于 BERT 的模型

• 微调 BERT 以预测答案跨度

为什么 BERT 比 LSTM 效果更好?

• 它有更多的参数
• 它经过预先训练,因此在适应任务之前就已经“知道”语言
• 多头注意力是秘诀
• 自注意力架构允许在问题词和上下文段落之间进行细粒度分析

Knowledge-based QA

• 许多大型知识库
‣ Freebase、DBpedia、Yago 等
• 我们可以支持自然语言查询吗?


‣ 将“Ada Lovelace”与知识库中的正确实体链接以找到三元组(Ada Lovelace,出生年份,1815)

但是

• 将自然语言句子转换为三元组并非易事


• 实体链接也是一个重要组成部分
‣ 歧义:“洛夫莱斯是什么时候出生的?”
• 我们能否简化这两个步骤的过程?

语义解析

• 将问题转化为逻辑形式,直接查询知识库
    ‣ 谓词演算
    ‣ 编程查询(例如 SQL)

如何构建语义解析器?

• 文本到文本问题:
    ‣ 输入 = 自然语言句子
    ‣ 输出 = 逻辑形式的字符串
• 编码器-解码器模型(第 16 篇文章!)

Hybrid QA

• 为什么不同时使用基于文本和基于知识的资源进行 QA?
• IBM 的 Watson 赢得了游戏节目 Jeopardy! 使用各种资源来回答问题

Watson 核心理念

• 从基于文本和基于知识的来源生成大量候选答案
• 使用丰富多样的证据为他们评分
• 系统中的许多组件,大部分都经过单独培训

QA评估

• IR:返回匹配段落或答案字符串的系统的 MRR(平均倒数排名)
    ‣ 例如 系统为一个查询返回 4 个段落,第一个正确的段落是第 3 个段落
    ‣ MRR = ⅓
• MCTest:准确性
• SQuAD:字符串与黄金答案的精确匹配

最后

• 基于 IR 的 QA:搜索文本资源以回答问题
    ‣阅读理解:假设问题+段落
• 基于知识的 QA:搜索结构化资源以回答问题
• 热点领域:一直在创建许多新方法和评估数据集(叙事、QA、常识推理等)

OK,QA就倒这里了,辛苦观看,有问题随时评论哦!

 

第十八篇js传参数

JS传参数 参数,这是个什么东西呢?简单的说吧,我们去玩别人的网站,一般来个登录,有用户名和密码,当我们输入正确之后,那么这用户名和密码里面的值,就是参数的值,它将这个值传给“参数”,然后提交到后台去... 查看详情

c++从入门到入土第十八篇:多态

多态文章目录多态什么是多态虚函数重写的两个例外协变(基类与派生类虚函数返回值类型不同)析构函数的重写(基类与派生类析构函数的名字不同)重载、覆盖(重写)、隐藏(重定义)的对比抽象类多态的原理虚... 查看详情

c++从入门到入土第十八篇:多态

多态文章目录多态什么是多态虚函数重写的两个例外协变(基类与派生类虚函数返回值类型不同)析构函数的重写(基类与派生类析构函数的名字不同)重载、覆盖(重写)、隐藏(重定义)的对比抽象类多态的原理虚... 查看详情

第十八篇商城系统-订单中心设计解决方案(代码片段)

订单模块一、资源整合  我们需要把相关的静态资源拷贝到nginx,然后动态模板文件拷贝到order项目的templates目录下,然后调整资源的路径。在网关中设置对应的路由即可。二、整合SpringSession  结合官网,导入对... 查看详情

c++从青铜到王者第十八篇:c++之多态(代码片段)

系列文章目录文章目录系列文章目录前言一、多态的概念1.多态的概念二、多态的定义及实现1.多态的构成条件2.虚函数的认识3.虚函数的重写1.虚函数重写的两个例外之协变2.虚函数重写的两个例外之析构函数的重写4.C++11ove... 查看详情

第十八篇:揭秘redux设计思想与工作原理(上)(代码片段)

Redux相信大家或多或少都接触过,关于Redux的基础知识,第05讲已经有过铺垫。从本讲开始,我们将在此基础上,针对Redux进行更加系统和深入的学习。注:如果你没有接触过Redux,点击这里可以快速上手。... 查看详情

第十八篇flowable之多人会签(代码片段)

一、多人会签1.流程图绘制  多人会签是指一个任务需要多个人来处理,案例讲解完整的xml内容<?xmlversion="1.0"encoding="UTF-8"?><definitionsxmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"xmlns:xsi="http... 查看详情

linux从青铜到王者第十八篇:linux网络基础第二篇之tcp协议

系列文章目录文章目录系列文章目录前言一、TCP面向字节流二、TCP粘包问题1.什么是TCP粘包问题2.TCP粘包问题的解决办法三、TCP异常情况四、TCP协议1.TCP协议段格式2.确认应答(ACK)机制3.超时重传机制4.连接管理机制1、TCP三次握手1.... 查看详情

第十八篇:揭秘redux设计思想与工作原理(上)(代码片段)

Redux相信大家或多或少都接触过,关于Redux的基础知识,第05讲已经有过铺垫。从本讲开始,我们将在此基础上,针对Redux进行更加系统和深入的学习。注:如果你没有接触过Redux,点击这里可以快速上手。... 查看详情

小刘同学的第四十八篇博文

  自己的状态出问题了,而且家里事情也比较多吧。  今天要承认确实有时间本可以拿出来编程的,但是没有编。  立一个flag吧,明天一定要有内容的更新。 查看详情

第三十八篇给uitabbar按钮的动画效果

 -(void)tabBar:(UITabBar*)tabBardidSelectItem:(UITabBarItem*)item{NSIntegerindex=[self.tabBar.itemsindexOfObject:item];if(self.indexFlag!=index){[selfanimationWithIndex:index];}}//动画-(void)animat 查看详情

开始写游戏---第二十八篇

开始写游戏---第二十八篇  今天:    1、添加:物品奖励组件    2、添加:物品信息弹框组件    3、碰到BUG,现在被卡住了    上图:    1、添加:物品奖励组件          效果:   ... 查看详情

第三十八篇pandas模块(代码片段)

pandas基于numpy模块,用于处理文本或表格数据,支持文件存取操作,支持数据库importpandasaspdimportnumpyasnpSeries只能放一维数组print(pd.Series([1,2,3,4,5]))'''0112233445dtype:int32'''print(pd.Series(np.array([1,2,3,4, 查看详情

我的第二十八篇博客---seleinum

fromseleniumimportwebdriver#初始化驱动driver=webdriver.Chrome()#请求页面driver.get(url=‘https://www.baidu.com‘)#找到对应标签,发送文本driver.find_element_by_xpath("//*[@id=‘kw‘]").send_keys(‘2019‘)#找到按钮,点击clickdriver.fin 查看详情

linux篇第十八篇——网络套接字编程(预备知识+udp套接字的编写)(代码片段)

⭐️本篇博客开始给大家介绍网络编程中的套接字编程——基于UDP协议的套接字和基于TCP的套接字,这篇博客主要介绍基于UDP协议套接字,下一篇介绍基于TCP协议的套接字。在介绍套接字编程之前,我会先给大家介绍... 查看详情

linux篇第十八篇——网络套接字编程(预备知识+udp套接字的编写)(代码片段)

⭐️本篇博客开始给大家介绍网络编程中的套接字编程——基于UDP协议的套接字和基于TCP的套接字,这篇博客主要介绍基于UDP协议套接字,下一篇介绍基于TCP协议的套接字。在介绍套接字编程之前,我会先给大家介绍... 查看详情

小刘同学的第五十八篇博文

  今天又没有认真更新,可能是因为要回南昌耽误了。。。  其实自己也明白,再多的理由都是借口,都是给自己偷懒的理由……这是文件格式ajax.html里面的代码不是很懂,callback(data)的意思,昨天看老师的视频也是卡在这... 查看详情

小刘同学的第九十八篇博文

  第二节课也听到一半了,建好了另外的两张表requst和relation,用图展示一下它们之间的关系吧。    还是用sequelize生成的,贴一下代码。    request是加好友请求用到的,两个belongTo,是为了表示是谁加的谁,这两个... 查看详情