赞
踩
问答的两种范式:
1)基于检索(retrieval-based)/ open domain qa
从网络或论文集搜集相关文章,阅读文章,得出答案
答案:spans of text
2)基于知识(knowledge-based)
将问题构建成逻辑表示,然后从知识数据库中获得答案
答案:来源于结构化的数据库
1)定义:一般说的IR都是 ad hoc retrieval(ad hoc是拉丁语,意为特定的,为了完成某目的)
2)过程:给query,返回一个collection的document(网页、论文、文章等)。
term:一般指代collection中的一个word或者phrase
给定query,返回结果包含两部分
a)dictionary (包含query中的term)
b)postings(每个term都指向包含这个term的postings list/ doc-id list)
1)最早期:bag-of-words,计数出现在query和doc中的单词,计算cosine相似度
即,每个单词同等重要
2)第二阶段:term weighting(也就是出现在query和doc中的那些单词权重开始不同)
两种 weighting 方案:tf-idf(term frequency-inverse document frequency)、BM25
tf-idf中向量表示:doc向量的长度还是单词表的长度,每个单词对应位置的值就是它的 tf-idf 的值
query向量的 tf 值基于 query 本身,idf 值是 query 的 term 在文档集合的 idf 值
3)第三阶段:Dense vector(密集向量)
稀疏检索(tf-idf、bm25)的问题:如果query和doc不存在词汇重叠,不能检索到。(i.e. vocabulary mismatch problem)
1)precision 和 recall
假设与query相关的共有U个文档,返回T个,R个相关
precision = R/T, recall = R/U
2)MAP(mean average precision)
分为两部分:
1)retrieve(检索相关doc)
2)read(利用模型 阅读理解能力 得出答案)
1)SQuAD(文章(文章中化成答案span)、问题、答案)
SQuAD 2.0 里面包含了不能回答的问题(150K的问题)
2)HotpotQA
3)TriviaQA(94K问题,650K 问题-答案-证据 三元组)
4)Natural Questions(数据集中包含long answer(答案段落) 和 short answer(精确答案))
query和wiki-page 输入到阅读理解模型,模型输出long answer, short answer, or ’no answer’
5)TyDi QA多语种
通常根据阅读理解数据集修改(一般是SQuAD和HotpotQA,里面包含了注释的Wikipedia)。
训练:原数据集(question, passage, answer)用来训练
推理:only-question。利用 IR 系统从 Wikipedia corpus 中检索 passage
1)是什么:普通编码器,例如bert。
输入:[cls] question [sep] passage
输出:答案 span
2)模型 fine-tune 阶段:
a)补充训练 linear layer,预测span的开始和结束位置
b)补充训练 span-start向量S 和 span-end向量E,用于计算每个token作为开始token和结束token的概率
PS:对于bert输入最长512个token,可以将文章切成多段,每段与question拼接。
1)定义:将文本中的 mention 与现实世界的 entity 相关联(与wiki相联系,也叫做wikification)
2)做法:wikipedia 被用作 ontology
wikipedia-page 是一个 entity 的 unique id
3)两个阶段:
a)mention detection
b)mention disambiguation
4)两种算法
a)利用anchor dictionaries(锚定字典)和 Wikipedia 图结构的信息
b)神经网络算法
1)TAGME linker
a)创建entity(wiki pages)目录
b)在IR引擎中进行索引(IR引擎例如:lucene)
对于每个页面,都有in-link计数(其他页面链接到这个页面的数量)
2)anchor dictionary(锚字典):
网址+锚文本(anchor texts)
字符串a的link probability = link(a) / freq(a)(i.e.也就是作为链接出现的次数/它出现的总次数)
ps:锚字典中一般存储链接概率大的字符串,认定这些字符串就是实体
mention detection就是到这个锚字典里来比较
3)mention detection
4)mention disambiguation
a)某个mention,假设是a,对应多个实体e。
b)最终链接到哪个e,取决于两个要素:p(e|a),e与整个query的其他实体的相关性
1)经典算法(两个编码器):question encoder 和 entity encoder(可以预先将wiki的所有entity编码并缓存)
2)ELQ算法
a)input:question + 带有wiki上下文的候选entity
b)output:(实体id,mention start,mention end)
c)原理:encoding entity使用wiki-text,encoding mention使用question,然后计算相似度
d)算法结构:分为下面3)和4)的两块,监督训练(需要带有标注的数据集:标注entity boundaries和linked)
训练过程:两部分联合训练,Entity Mention Detection是交叉熵损失,Entity Linking是条件概率损失
e)数据集:WebQSP和GraphQ
3)Entity Mention Detection
4)Entity Linking
a)对于entity的编码,取wiki-title与该title页面的前128个token作为description,一起输入bert,得到的cls即为该entity的编码
b)最终链接过程,分析每个span它的实体分布(softmax)
1)将query 映射到结构化知识库
2)两种方式
a)graph-based QA:将知识库建模为图(节点:实体,边:关系和属性)
b)QA by semantic parsing:语义解析
ps:都需要实体链接过程
1)基于图的QA,数据集是RDF三元组的形式(三元组:subject–predicate–object)
2)本体:DBpedia(2billion triples)
Freebase(part of wikidata)
3)数据集:SimpleQuestions、FreebaseQA、WEBQUESTIONS、WEBQUESTIONSSP、COMPLEXWEBQUESTIONS
4)实体链接过程
a)query中的实体链接到三元组实体
b)明确关系(求query与关系之间的相似度)
c)利用a和b得到的实体(top j)和关系(tok k),进行各种方式的排名
1)将query变成谓词演算、SQL或SPARQL、其他的一些可执行程序
2)数据集:GEOQUERY、DROP、ATIS
3)常用模型:seq2seq(bert编码之后,进入encoder-decoder模型(例如bilstm和transformer))
input:question
output:logical form
1)定义:利用 pretrained 大模型来回答问题
2)T5为例 训练任务:填空
fine-tune:给定question,没有上下文,利用模型参数直接出答案
1)Watson QA(IBM)赢了Jeopardy!challenge2011
2)系统架构
a)question processing(实体检测、实体链接等)
b)Candidate Answer Generation(取wiki查找候选实体)
c)Candidate Answer Scoring
d)Answer Merging and Scoring
1)MRR(mean reciprocal rank)
定义:第一个正确答案的倒数求和取平均
2)SQuAD在阅读理解任务的两个指标
a)Exact match:预测与gold完全匹配的比例
b)F1 score:重叠的比例
3)QA测试数据集
a)TREC QA(1999)
b)AI2 Reasoning Challenge(ARC)(2018)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。