当BERT遇上搜索引擎

简介: 当BERT遇上搜索引擎

前两天刷到一篇有意思的paper,文中将信息检索工具Anserini和BERT结合,实现了一个开放域的问答系统。


微信图片_20220524135625.png


如图所示,论文的主要创新点是将BERT和Anserini整合,利用外部知识库(维基百科)辅助实现QA问答。原文发表在NLP顶会NAALC 2019上。


论文题目:

End-to-End Open-Domain Question Answering with BERTserini


论文链接:

https://arxiv.org/abs/1902.01718


01 背景



首先,作者收集了5.08M的维基百科文章,拆分成段落和句子。对文章、段落、句子分别构建index索引


其次,将预训练好的BERT在阅读理解数据集SQuAD上微调,作为文本编码器。


对于一个新的问题,通过搜索引擎返回topK篇关联性最强的候选文档,然后文档和问题一起输入微调后的BERT计算得分。取分数最高的文本片段,作为最终答案。


整个问答系统的思路非常简单。通过引入维基百科等外部信息,自动挖掘开放域问题的答案。


值得注意的是,文本片段的最终得分如何计算?


微信图片_20220524135701.png


文中方法是由搜索系统和BERT分数的线性组合决定。其中 是超参,衡量二者的重要性。

就是这么简单粗暴!作者也在文末表示,直接加权输出不够全面。


02 实验



论文主要包含了两方面的实验。


检索粒度


在检索时,对哪一种粒度的文本进行筛选非常关键。因为文章、段落、句子包含的信息量明显不同。


微信图片_20220524135719.png


实验发现,将段落作为索引对象,效果是最好的。


这样的结果应该符合我们的认知。因为一篇文章包含的内容太宽泛,绝大多数与用户问题无关。而一个句子的信息量太少,缺乏上下文,BERT无法准确识别出答案片段


作者统计发现一个段落平均包含2.7个句子,一篇文章平均包含5.8个段落,所以针对不同粒度文本设置了不同的K值。


K值选择


K值越大,传输给BERT的数据越多,直观上看文本中包含正确答案的可能性越高。

基于段落索引,作者测试了召回率、完全匹配率(EM)变化。


微信图片_20220524135733.png


召回率,是检索的K个段落中包含正确答案的概率。显然K越大,召回率越高。

Topk完全匹配率,指BERT依次从K个段落中识别答案,最终包含正确答案的概率。

Top1完全匹配率,指BERT依次从K个段落中识别答案,分数最高的片段是正确答案的概率。


召回率代表了模型识别准确度的上界。召回率与Topk EM的间隔,表示BERT潜在的提升空间。Topk EM与Top1 EM的间隔,表示需要寻找更有效的得分计算方法。


03 演示



作者将BERTserini模型部署为一个聊天机器人。


微信图片_20220524135748.png


第一个问题来自SQuAD验证集,其余3个是作者自定义的问题,以展示bot可以回答问题的范围。


BERTserini 先根据问题,从维基百科中检索最相关的K个段落(基于BM25),然后用微调的BERT定位答案span。最后,将答案所在的句子返回前端展示。


04 总结



本文用搜索引擎+预训练语言模型这种两阶段的方式,实现了一个问答系统。


搜索引擎结合外部知识库(维基百科、百度词条、谷歌搜索等),相比于垂直领域,信息来源更丰富了。因而模型可以回答一些开放域的问题。


整体思路还是比较灵活的。当然论文中的做法比较粗暴,无论是搜索引擎还是BERT,以及score的计算方式上,都还有提升空间。

相关文章
|
人工智能 语音技术
技术沙龙|3D-Speaker说话人识别多模型解析
技术沙龙|3D-Speaker说话人识别多模型解析
619 0
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习之格式转换笔记(一):模型文件pt转onnx转tensorrt格式实操成功
关于如何将深度学习模型从PyTorch的.pt格式转换为ONNX格式,然后再转换为TensorRT格式的实操指南。
2232 0
深度学习之格式转换笔记(一):模型文件pt转onnx转tensorrt格式实操成功
|
11月前
|
人工智能 算法 数据挖掘
开源更新|通义3D-Speaker多说话人日志功能
开源更新|通义3D-Speaker多说话人日志功能
|
文字识别
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
|
机器学习/深度学习 XML 自然语言处理
机器学习实战(一):Document clustering 文档聚类
文档聚类是指根据文档的文本和语义背景将其归入不同的组别。它是一种无监督的技术,因为我们没有文件的标签,它在信息检索和搜索引擎中得到了应用。
472 0
|
机器学习/深度学习 算法 开发工具
大语言模型的直接偏好优化(DPO)对齐在PAI-QuickStart实践
阿里云的人工智能平台PAI,作为一站式的机器学习和深度学习平台,对DPO算法提供了全面的技术支持。无论是开发者还是企业客户,都可以通过PAI-QuickStart轻松实现大语言模型的DPO对齐微调。本文以阿里云最近推出的开源大型语言模型Qwen2(通义千问2)系列为例,介绍如何在PAI-QuickStart实现Qwen2的DPO算法对齐微调。
|
机器学习/深度学习 搜索推荐 知识图谱
大模型与搜索引擎的互补性
【2月更文挑战第21天】大模型与搜索引擎的互补性
534 1
大模型与搜索引擎的互补性
|
Oracle Java 关系型数据库
Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)
Oracle Java SE 支持路线图显示,JDK 8(LTS)支持至2030年,非LTS版本如9-11每6个月发布且支持有限。JDK 11(LTS)支持至2032年,而JDK 17及以上版本现在提供免费商用许可。LTS版本提供长达8年的支持,每2年发布一次。Oracle JDK与OpenJDK有多个社区和公司构建版本,如Adoptium、Amazon Corretto和Azul Zulu,它们在许可证、商业支持和更新方面有所不同。个人选择JDK时,可考虑稳定性、LTS、第三方兼容性和提供商支持。
9578 0
|
JavaScript 内存技术
nvm安装教程与nvm常见命令,超详细!
nvm安装教程与nvm常见命令,超详细!
|
存储 Kubernetes 关系型数据库
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/4)
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/4)
1179 0