ACL2023 | WebCPM:清华发布中文LFQA 数据集,探索搜索引擎和PLM大模型结合新范式

news2025/1/11 5:05:42

一、概述

title:WEBCPM: Interactive Web Search for Chinese Long-form Question Answering

论文地址:https://arxiv.org/abs/2305.06849

代码:https://github.com/thunlp/WebCPM

1.1 Motivation

  1. 开发一个类似于WebGPT一样的中文版本的数据集,用于检索相关事实,并基于这些事实生成最终回答,并发布一个baseline模型。
  2. LFQA:旨在回答复杂的、开放式的问题,并带有详细的、段落长度的回答,一般有两个步骤,information retrieval:信息检索,检索出相关信息。information synthesis:信息合成,集成信息合成最终的答案。

1.2 Methods

  1. 本文发布了WebCPM,第一个中文LFQA数据集,它的information retrieval信息检索数据是基于网络搜索的交互信息拿到的。
  2. 和WebGPT一样,也开发了一个搜索引擎的interface,招募标注人员使用该interface搜索相关信息然后回答问题,同时web search的行为会被记录下来。

  • interface特点:可以搜索相关事实,记录相关事实,同时记录大约10个交互action行为信息。
  1. 本文提到的LFQA pipeline框架:

  • web search:执行一系列action,取收集相关的信息,主要包括action prediction,search query generation,supporting fact extraction三个模块,如果action模块预测为Search作为当前操作,则它会调用query生成模块来生成查询内容,如果action模块预测Quote作为当前操作,则会调用Quote模块来抽取相关事实,总共大概有十个左右的action。
  • 各部分实现方法:
    • Action Prediction:预测下一个action,大概10个左右的action,建模成一个多分类任务,预测每一个action的概率,并把它用生成的方法来实现,例如search的概率就是P(search|St),St为t时刻的状态。
    • Search Query Generation:生成搜索的query,也是用文本生成来实现,P(Qt+1|St)

    • Supporting Fact Extraction:直接预测所有的事实数据太慢,先预测start和end位置少量的token,然后用text matching匹配start和end位置,检索出所有的事实文档。

    • Synthesis Model:组织相关事实依据,生成最终的回复,搜索出来的数据会存在噪音:随机构造了不相关样本,补充到数据集中,让模型预测理想的结果,通过这种方法来降低噪声对模型的影响

1.3 Conclusion

  1. 收集了5500个高质量的QA对,基于15372个支持的事实,以及125954个搜索action。
  2. 构建了一个中文long-form QA网络搜索交互数据的benchmark,同时一个开源的interface。我们将任务分解为4个子任务,并设计了一个模块化的pipeline。通过对具有代表性的plm进行微调,我们对每个模块进行单独的评估,并对pipeline进行整体评估。
  3. 利用预训练模型去模拟人类的搜索行为,并基于搜索的事实生成答案,分别在我们的数据集和DuReader上的数据集有32.5%和47.5%的情况下生成的答案并不比人工编写的答案差。
  4. 我们进行了深入的分析,以理解我们的框架的核心设计元素。我们希望我们的interface、数据集、框架和分析能够促进这一领域的更多探索。

  • 特点:基于公开数据,基于long-form QA长文本,段落的回答,有自由形式的回答,并且有网络搜索行为,平均问题长度29,平均事实长度555,平均回答长度257,比其他数据都高不少。

1.4 limitation

  1. 评估表明,我们的pipeline方法在信息检索和合成过程中的表现比人类差67.5%,这仍有改进的空间。

二、详细内容

1 LFQA数据样例

  • 特点:
    • 记录搜索过程的action
    • 记录抽取出来的多条事实依据,有标注的事实的label
    • 基于事实依据生成最终答案

2 各子模块在三类典型的中文生成式PLM实验表现

  • 建模方法:search阶段分为三个子任务,Action预测,Query生成,Fact抽取,都是用生成模型来实现
  • 在8种支持中文的典型生成式PLM做了实验,涵盖3种架构。
  • 不同模型在Action预测,Query生成,Fact预测的效果都不太一致,不过最大的CMP10B模型效果确实是最好的。

3 pipeline方法消融实验

  1. 图(a):对比不同方法收集的fact效果对比
    1. pipeline-collected:指本文提到的Action预测,Query生成,Fact预测三个模块组成pipeline提取事实的方法,该方法可能会带来噪声,整体不落败的比例为19.0+13.5=32.5
    2. human-collected:指人工标注收集到的事实fact,最为准确,整体不落败的比例为16.0+29.5=45.5,对比pipeline方法,效果还是好不少,说明事实抽取的噪音确实会影响效果
    3. Non-interactive Search:指利用非交互式方法收集的fact,没有pipeline式可能拆分复杂的问题到简单的问题,搜索其他变种等方法,效果差的非常多,说明pipeline方法的优越性。
    4. 总结:人工fact > pipeline fact >> Non-interactive Search方法
  1. 图(b):对比pipelie方法在DuReader数据集上和真实answer的效果差异
    1. search:在该数据集上,比真实人工标注的answer要差一些
    2. ZhiDao:在改数据集上,居然比真实人工标注的answer效果还要好,说明本文方法的有效性。
    3. 其他:相等的为0,因为他们搜集到的事实fact完全不同,所以基本都不相等
  1. 图(c):合成模型消融实验
    1. 背景:因为交互式搜索不可避免引入不相关的fact会影响效果,本文通过在训练集引入不相关的fact来提升合成模型消除噪声的能力,这里对比不引入噪声数据和引入噪声数据的效果对比。【具体方法是随机挑选不相关的数据到fact中,让模型学习预测准确的answer,提升模型忽略不相关噪声的能力】
    2. 结论:本文采用的合成模型的策略优于baseline模型。

4 当前状态特征消融实验

目的:当前状态有非常多特征,例如上一个时间Action,上一个时间的fact一句,窗口特征windows等,哪些特征对各个子模块最有用呢?

  • 实验说明:尝试去掉各个特征,比较各个子模块与之前的效果差异。
  • 结论1:对于Action模型,去掉上一个时间的Action At-1,效果差的非常多,说明这个特征对Action模型非常重要。
  • 结论2:对于Fact模型,去掉上一个收集的Fact Ft,效果也差的非常多,说明当前需要收集的fact还是会去参考之前的fact。

5 Query Generation模块在干啥?

  • 方法总结:主要基于原始问题做一拓展,搜集更多准确的,相关的依据fact,用于生成更好的answer
    • copy:复制原始问题
    • decomposing question into multiple sub-question:拆成多个子问题
    • rephrasing question with related terms:利用相关术语重新构造问题

6 各类Action占比统计

  • 结论:我们在图7中记录了我们收集的数据集中不同的预定义动作的比例。可以看出,向下滚动、引用和搜索是最常用的操作。加载页面<1>的比例大于<2>和<3>的比例。这是因为搜索引擎根据它们与查询的相关性对搜索结果进行排序。人类倾向于根据搜索引擎推荐的顺序来访问这些链接。如果人类在第一页上收集了足够的支持事实,或者发现它无关紧要,他们可能不会继续浏览当前查询的其他网页。

三、个人总结

  1. 提出了一个不错的中文LFQA数据集,特点是包含人类和搜索引擎交互的数据,并且问题比较复杂。
  2. 提供了一个比较强的baseline方法:引入了交互式搜索,对原始的问题做拓展,在搜索引擎上收集充分多的事实,提升检索方法收集依据fact的效果,同时合成答案阶段,也采用了一些策略来优化不相关fact噪声带来的影响。
  3. 同时开源了整个web搜索框架,值得其他地方借鉴。
  4. 这个方法可以和langchain等方法结合,进一步提升本地知识检索和生成的效果。

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

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

相关文章

如何保证数据库分布式事务的强一致性

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 针对分布式数据库&#xff0c;如何保证分布式事务的强一致性&#xff0c;是分布式数据库的关键。分布式事务的强一致性方案这里介绍两种&#xff0c;一种是GTM(global transaction manager),另一种是基于XA协议的两阶…

12道前端知识题目深入浅出下JavaScript

文章目录 1. 原型和原型链2. 作用域和闭包3. 高阶函数和函数式编程4. 异步编程和Promise、async/await5. 正则表达式6. 对象属性描述符和代理7. ES6新特性如模板字符串、解构赋值、箭头函数、let/const等8. 设计模式和架构模式设计模式架构模式 9. 性能优化技巧和调试技巧1. 性…

chatgpt赋能python:Python如何持续保存CSV文件

Python如何持续保存CSV文件 如果你需要不断更新数据并将其保存到CSV文件中&#xff0c;Python语言可以轻松完成这个任务。本文将介绍如何使用Python在代码执行的同时&#xff0c;将数据不断写入CSV文件中&#xff0c;实现持续保存的功能。 CSV文件是什么&#xff1f; CSV代表…

chatgpt赋能python:抓包是什么?

抓包是什么&#xff1f; 当我们在浏览器中访问一个网站时&#xff0c;我们的电脑会向网络服务器发送请求并接收响应。这个过程中&#xff0c;有一些工具可以让我们查看和分析这些请求和响应&#xff0c;其中最常用的就是“抓包”。 抓包就是指截获网络通信过程中的数据包并分…

chatgpt赋能python:Python怎么指定循环次数?

Python怎么指定循环次数&#xff1f; Python是一种广泛应用于编程领域的高级编程语言&#xff0c;它具有简单易学、代码可读性强、语言编写规范等诸多优点。其中&#xff0c;循环是Python语法中的重要一环&#xff0c;而如何指定循环次数则是其中一个重要的问题。 什么是循环…

Linux 检测通信路径上的PMTU(路径最大传输单元)

问题描述 终端设备向云端POST数据&#xff0c;数据量较小的没有问题&#xff0c;数据量大的必然出现丢包。网络很通畅&#xff0c;延迟较低。 分析 后来发现&#xff0c;终端到云端的通信路径上某个路由器节点的MTU小于终端的MTU&#xff0c;当终端发出的IP数据包长度大于该…

力扣题库刷题笔记4--寻找两个正序数组的中位数

1、题目如下&#xff1a; 2、个人Python代码实现如下&#xff1a; 代码如下&#xff1a; class Solution: def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float: nums nums1 nums2 #合并数组 nums.sort() …

java【toString覆写】

笔试题 输出结果&#xff1a;D.func(),num0 解析&#xff1a; 继承的原则&#xff0c;先调用父类的无参构造&#xff0c;因此调用func()函数func() 此方法&#xff0c;new 的是 D 的对象&#xff0c;且被D所重写&#xff0c;触发动态绑定&#xff0c;直接调用D中的func()方法在…

Jupyter Notebook是什么及使用

一、什么是Jupyter Notebook Jupyter项目是一个非盈利的开源项目&#xff0c;源于2014年的python项目&#xff0c; Juptter Notebook&#xff0c;原名IPython Notbook&#xff0c;是IPython的加强网页版&#xff0c;一个开源web应用程序名字源自Julia、Python和R是一款程序员…

CRC校验(1):CRC原理、计算例子和最优多项式的选择

CRC(Cyclic Redundancy Check)&#xff0c;即循环冗余校验&#xff0c;它通过计算生成固定长度的校验码&#xff0c;用于验证数据在传输过程中是否发生了错误或损坏&#xff0c;从而确保数据的完整性。假设我们想把小写字母z发送出去。在Unicode中&#xff0c;z由数字0x7A表示&…

这有可能是国内最有趣的大学生知识交流社区了吧?

WRITE-BUG数字空间&#xff08;http://www.writebug.com&#xff09;内测 WRITE-BUG创建于2019年&#xff0c;创始团队主要来自于清华大学、中国人民大学等国内高校学生。运营至今&#xff0c;已累积100000注册用户&#xff0c;91%是18-24岁在校大学生&#xff0c;覆盖国内绝大…

前端vue基于秋云 ucharts echarts词云图 多重圆弧进度条 弧形进度条

前端vue基于秋云 ucharts echarts词云图 多重圆弧进度条 弧形进度条 进度条 弧形进度条 圆形进度条 词云图&#xff0c; 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id13029 效果图如下: #### 使用方法 使用方法 <!-- 关键字 --> &l…

java设计模式之:代理模式

文章目录 简介静态代理动态代理Cglib代理spring中AOP使用代理总结 简介 代理(Proxy)模式是一种结构型设计模式&#xff0c;提供了对目标对象另外的访问方式&#xff1b;即通过代理对象访问目标对象。 这样做的好处是&#xff1a;可以在目标对象实现的基础上&#xff0c;增强额…

注意力机制和Transformer

注意力机制和Transformer 机器翻译是NLP领域中最重要的问题之一&#xff0c;也是Google翻译等工具的基础。传统的RNN方法使用两个循环网络实现序列到序列的转换&#xff0c;其中一个网络&#xff08;编码器&#xff09;将输入序列转换为隐藏状态&#xff0c;而另一个网络&…

【探测器】win10网卡设置巨型帧解决探测器无法成像的问题

【探测器】win10网卡设置巨型帧解决探测器无法成像的问题 1、背景2、解决办法3、补充说明 1、背景 探测器很奇怪的叫法&#xff0c;其实就是相机。 大家在安防领域&#xff0c;智慧工厂&#xff0c;智慧学校、智慧工地等经常会看到海康、大华的网络摄像头&#xff0c; 这些摄像…

软考高级架构师笔记-7信息安全

目录 1. 前言 & 考情分析2. 信息安全1. 信安基础知识2. 信息安全系统的组成框架3. 信息安全技术4. 信息安全的抗攻击技术5. 信息安全的保证体系和评估方法3. 网络安全4. 网络安全协议1. 前言 & 考情分析 前文回顾: 软考高级架构师笔记-1计算机硬件软考高级架构师笔记…

集成测试总结

集成测试 基本概念&#xff1a;将软件集成起来后进行测试。集成测试又叫子系统测试、组装测试、部件测试等。集成测试主要是针对软件高层设计进行测试&#xff0c;一般来说是以模块和子系统为单位进行测试。 集成测试包含的层次&#xff1a; 模块内的集成&#xff0c;主要是测…

【编译、链接、装载六】汇编——目标文件

【编译和链接六】汇编——目标文件 一、目标文件_存储格式1、生成目标文件2、目标文件存储格式3、file查看文件格式 二、查看目标文件的内部结构——objdump三、代码段四、 数据段和只读数据段五、 ELF文件结构描述1、头文件2、段表2.1、重定位表2.2、字符串表2.3、查看重定位表…

信号完整性:反射 初步认识

反射是怎么形成的 信号的反射和互连线的阻抗密切相关。反射的最直接原因是互连线的阻抗发生了突然变化&#xff0c;只要互连线的阻抗不连续的点&#xff0c;该处就会发生反射。 信号是以电磁波的形式在走线中传播的&#xff0c;如果从传统的电路理论角度去看&#xff0c;是无…

ZipList(压缩链表)

基本概述 ZipList 是一种特殊的“双端链表” &#xff0c;由一系列特殊编码的连续内存块组成。可以在任意一端进行压入/弹出操作, 并且该操作的时间复杂度为 O(1)。 基本结构&#xff1a; 各部分所占字节、基本介绍&#xff1a; entry&#xff0c;节点占用字节不固定&#xff0…