首页 > 其他分享 >自然语言处理 Paddle NLP - 检索式文本问答-理论

自然语言处理 Paddle NLP - 检索式文本问答-理论

时间:2023-06-26 09:45:17浏览次数:60  
标签:段落 NLP 检索 匹配 模型 Paddle 文本 自然语言 向量

问答系统(Question Answering System,QA) 是信息检索系统的一种高级形式,它能用准确、简洁的自然语言回答用户用自然语言提出的问题。其研究兴起的主要原因是人们对快速、准确地获取信息的需求。问答系统是人工智能.

抽取式阅读理解:它的答案一定是段落里的一个片段,所以在训练前,先要找到答案的起始位置和结束位置,模型只需要预测这两个位置,有点像序列标注的任务,对一段话里的每个字,都会预测两个值,预测是开始位置还是结尾位置的概率,相当于对每个字来讲,都是一个二分类的任务

image
image
image
image
image
机器阅读技术:2011年7月20日,姚明正式宣布退役 => 姚明哪一年退役
image
500万的维基百科文档
image
检索式问答:先做段落检索、再做答案抽取
image
image
image

阅读理解:
image
郭鹤年 => 郭鹤,3个字里面对了2个 => 2/3, 完全匹配 => 1,f1(2/3,1) => 0.8
image
SQuAD(2016) 只能做抽取,数据量是训练深度神经网络的关键要素,数据集有着很大的影响力很多精典的阅读理解模型,也是基于SQuAD做的
image
DuReader(2017) 百度2017年发布的,迄今为止最大的中文阅读理解数据集,相比较 SQuAD,除了实体类、描述类和事实类的问题,还包含了是非类和观点类的问题
image

image
image
image
抽取式阅读理解,它的答案一定是段落里的一个片段,所以在训练前,先要找到答案的起始位置和结束位置,模型只需要预测这两个位置,有点像序列标注的任务,对一段话里的每个字,都会预测两个值,预测是开始位置还是结尾位置的概率,相当于对每个字来讲,都是一个二分类的任务
image
基于LSTM+注意力机制,核心思想就是如何对问题和段落进行交互和语义理解,一般就是在模型里面加各种 attention,各种复杂的模型结构基本上能总结成图中的形式,一般分为四层,

  • 向量表示层:主要负责把问题和段落里的token映射成一个向量表示
  • 语义编码层:使用RNN来对问题和段落进行编码,编码后,每一个token的向量都包含了上下文的语义信息
  • 交互层:最重要的一层,也是大多数研究工作的一个重点,负责捕捉问题和段落之间的交互信息,把问题的向量,和段落的向量做各种交互,一般使用各种注意力机制。最后它会输出一个融合了问题的语义信息的段落表示。
  • 答案预测层:会在段落表示的基本上,预测答案的位置,也就是预测答案的开始位置和结尾位置
    LSTM 是一个比较基本的模型结构
    image
    注意力机制,来源于图像,在看一张图片的时候,就会聚焦到图片上的某些地方,通过图片上一些重点地方,获取到主要的信息。
    比如图片里是小狗,看到了狗的耳朵、鼻子就能判断出这是小狗。这时候注意力就集中在狗的脸部上。
    对于文本也一样,文本的问题和段落匹配过程中,也会聚焦到不同的词上面,比如:香格里拉酒店老板是谁?段落:香格里拉是香港上市公司品牌隶属于郭氏集团。
    对于问题香格里拉这个词,在段落文本中更关心香格里拉这个词,带着问题读本文时,所关注点是不一样的。如:老板这个词,关注力在隶属于上。
    如果问题是:香格里拉在哪里上市的,那么对于文本的关注点就在“上市公司”上了
    注意力机制,就是获取问题和段落文本交互信息的一个重要手段

理论形式:给定了一个查询向量Query,以及一些带计算的值Value,通过计算查询向量跟Key的注意力分布,并把它附加在Value上面,计算出 attention 的值。

  • Query 向量是问题,
  • Value 对应段落里面编码好的语义表示,
  • key 是问题向量和文本向量做内积之后做归一化,代表了每个词的权重
    最后对这些 Value 根据这些权重,做加权求和,最后得到了文本经过attention之后的值

一般会事先定义一个候选库,也就是大规模语料的来源,然后从这个库里面检索,检索出一个段落后,再在这个段路上做匹配。
image
基于预训练语言模型(eg.BERT)
image
image
领导A训练好的模型,在领域B应用

  • 通过多任务学习、迁移学习等提升模型的泛化能力
  • MRQA 2019 Shared Task
    image

过稳定:对于不同的提问,给出相同的答案
过敏感:对于相同语义的提问,给出不同的答案
提高阅读模型鲁棒性的方法:

image

段落检索

image
稀疏向量检索:双塔

  • 基于词的稀疏表示
  • 匹配能力有限,只能捕捉字面匹配
  • 不可学习

把文本表示成 one hot (拼写可能有错)的形式,常见的有 TFDF、BM?
文章编码成向量,向量的长度和词典的大小一致,比如词典的大小是3W,稀疏向量表示3W,
每个位置表示这个词有没有在问题中出现过,出现过就是1

倒排索引,一般采用稀疏向量方式,只能做字面匹配

稀疏向量,几百、上千万的文档都支持

稠密向量检索:单塔

  • 基于对偶模型结构,进行稠密向量表示
  • 能够建模语义匹配
  • 可学习的

把文本表示成稠密向量,也就是 Embedding,需要通过模型,对文本的语义信息进行建模,然后把信息记录在向量里,这边的向量长度,一般是128、256、768,相较于稀疏向量检索小很多,每个位置的数字是浮点数

一般通过对偶模型的结构进行训练,来获得建模的语义向量,
例:
Q:王思聪有几个女朋友
P:国民老公的恋人A、B、C......
如果通过 稀疏向量检索,可能完全匹配不到
稠密向量检索,可以学习到,国民老公=>王思聪,恋人=> 女朋友
image
两者可以互补,一个字面匹配,一个是语义匹配
image
文本匹配中的两种模型结构

  • 对偶式模型结构:问题、段落分别编码,得到各自的 Embedding,然后通过内积或者 cosin 来计算向量之间的相似度,这个相似度代表了问题和段落之间的匹配程度
    问题和段落之间难以交互,因为他们是分别编码的。底层没有交互,所以逻辑会弱些
    可以快速索引,可以提前把段落向量这边计算好
  • 交互式模型结构:输入把问题和段落拼一起,在中间交互层问题的文本和段落的文本会有个完全的交互。最后输出一个来表示问题和段落的匹配程度

对偶模型的参数可以共享,共享参数对字面匹配效果好些,不共享效果也差不了太多
实际应用中,把所有的文档都计算完,把向量存储下来。在线计算时,直接去检索

image
DPR
image
正例和强负例 1:1 ,弱负例 越多越好
强负例:和文档有些关系
弱负例:和文档内容不相关的。

一般做检索,不会把正例表得那么完整,在标注时,也是通过一个query,先去检索出一些候选的段落,在候选段落里,去标正例和负例,这样因为检索能力的限制,可能没有检索回来的一些段落就没有标注,这样会导致数据集中漏标,所以实际上在训练过程中会对这些漏标的数据集进行处理,有些数据集只标了正例,并没有负例,这时候负例只能通过一些方式去构造
image

image

推荐阅读

  • Reading Wikipedia to Answer Open-domain Questions
  • Bi-DirectionalAttentionFlowForMachineComprehension
  • Machine Comprehension UsingMatch-LSTMand Answer Pointer
  • Dense Passage Retrieval for Open-Domain Question Answering
  • Latent Retrieval for Weakly Supervised Open Domain Question Answering
  • Sparse, Dense, and Attentional Representations for Text Retrieval
  • REALM:Retrieval-Augmented Language Model Pre-Training
  • RocketQA: An Optimized Training Approach to Dense Passage Retrieval for Open-Domain Question Answering

标签:段落,NLP,检索,匹配,模型,Paddle,文本,自然语言,向量
From: https://www.cnblogs.com/vipsoft/p/17474376.html

相关文章

  • PaddleOCR学习笔记1
    尝试使用PaddleOCR方法,如何使用自定义的模型方法,参数怎么配置,图片识别尝试简单提高识别率方法。目前仅仅只是初步学习下如何使用PaddleOCR的方法。 一,测试识别图片:1.png:正确文本内容为“哲学可以帮助辩别现代科技创新发展的方向” 二,测试代码:paddleocr_test2.py:结......
  • 【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术
    前言人工智能是一个庞大的研究领域。虽然我们已经在人工智能的理论研究和算法开发方面取得了一定的进展,但是我们目前掌握的能力仍然非常有限。机器学习是人工智能的一个重要领域,它研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,并通过重新组织已有的知识结构来不断提......
  • LLE算法在自然语言生成中的应用:实现文本到语音的情感迁移
    目录自然语言生成(NaturalLanguageGeneration,NLP)是人工智能领域的一个分支,它利用大量的文本数据训练出语言模型,从而实现对自然语言的生成和理解。在NLP中,情感迁移(EmotionTransfer)是一个重要的任务,它可以通过对已有文本的情感分析,将其转化为语音,从而实现文本到语音的情感迁......
  • 自然语言处理中数据增强(Data Augmentation)技术最全盘点
    与“计算机视觉”中使用图像数据增强的标准做法不同,在NLP中,文本数据的增强非常少见。这是因为对图像的琐碎操作(例如将图像旋转几度或将其转换为灰度)不会改变其语义。语义上不变的转换的存在是使增强成为ComputerVision研究中必不可少的工具的原因。是否有尝试为NLP开发增强技......
  • 每个人都应该知道的5个NLP代码库
    这些软件包可处理多种NLP任务,例如词性(POS)标注,依存分析,文档分类,主题建模等等。NLP库的基本目标是简化文本预处理。目前有许多工具和库用于解决NLP问题……但是只要掌握了其中的一些基本知识,就可以掌握相关基本知识。这就是为什么只介绍其中最常用的五个PythonNLP库的原因。......
  • 中文医疗领域自然语言处理相关数据集、经典论文资源蒸馏分享
        在医疗领域,一些应用已经从科幻小说变为现实。人工智能系统通过了中国和英国的医学执照考试,而且它们比普通医生考得更好。最新的系统比初级医生能更好地诊断出55种儿科疾病。但是,这些系统比第一批计算机视觉深度学习应用(例如研究一个图像)中的一些更难构建,因为它们需要具有......
  • 自然语言处理顶会ACL 2020会议核心要点分享
        今年受疫情影响,ACL只能举行线上虚拟会议,因此不能近距离跟行业学者们进行交流。但我任然想把我了解到的ACL的争取趋势和研究动态分享处理,因而有了这篇文章。     这些年来ACL的总体趋势    在开始讨论整个趋势之前之前,让我们先看一下ACL会议的一些总体统计数据。今......
  • Barbara Plank-NLP模型的跨语言/跨领域迁移-经验分享
        迁移学习(或者说多任务学习、领域自适应)在自然语言处理任务中普遍存在,比如说机器翻译任务中多语言翻译问题。    自然语言领域中迁移分为Transductive迁移和Inductive迁移两类:    Transductive迁移分为跨领域的迁移(领域变换)和跨语言迁移(领域交叉学习)两类。    I......
  • CMU新课-《神经网络与NLP 2020春》视频及ppt分享
    课程介绍    神经网络促进了语言建模的快速发展,并且已被用于优化很多其他NLP任务,甚至解决很多过去不容易的新问题。本课程将首先对神经网络进行简要概述,然后主要讲解如何将神经网络应用于自然语言问题。每个部分都将以自然语言任务入手,介绍一个特定的问题或现象,描述为何难以建......
  • 历史最全最新中文自然语言处理预训练模型汇总分享
        在自然语言处理领域中,预训练语言模型(PretrainedLanguageModels)已成为非常重要的基础技术,本仓库主要收集目前网上公开的一些高质量中文预训练模型,并将持续更新。包含自然语言理解系列模型,如BERT、RoBERTa、ALBERT、NEZHA、XLNET、MacBERT、ELECTRA、ZEN、ERNIE。自然语言......