2021 CIKM

1 intro

  • 根据贝恩公司(Bain & Company)2019年的一份报告,旅行者在预订前通常会进行33至500次网页搜索        
    • 部分用户会访问超过50个旅游网站,三分之一的上网时间都用于与旅行相关的活动。
    • 在某些情况下,他们甚至会在旅游论坛上发帖,希望从其他用户那里获得个性化的旅游信息。
  • TripAdvisor 在2016年报告称,其旅游论坛每年新增的帖子超过90万个。

  • 论文引入了一个新的任务:使用旅游评论集合回答兴趣点(POI)推荐类问题
    • 要求模型在包含讽刺、矛盾观点等内容的评论中进行推理,同时还需处理涉及其他实体的提及(如对比性描述)
      • 因此,该任务的推理方式与典型的机器阅读理解任务、蕴含推理任务或常识推理任务有本质不同
    • 此外,问题可能还涉及地理位置、预算、时间安排以及氛围、服务质量等主观因素
    • 并且,并非问题中的所有部分都与最终回答相关,使得识别信息需求本身也变得具有挑战性。

  • 可扩展性挑战
    • 该任务的问题面临巨大的候选答案空间,例如一个城市中可能有数千个 POI,每个 POI 都由数百条评论构成
    • 为了在 QA 任务中应对规模化推理的挑战,现有模型通常采用“检索器-排序器”架构,先使用 BM25 等方法过滤文档缩小搜索空间,然后再在缩减后的集合上应用更深层的推理模型
    • 同时,一些方法也会利用文档结构提取关键信息,或将文档截断至前 800–1000 个 token 来提升计算效率
    • 但这些策略在我们的任务中并不奏效
      • 基于 TF-IDF 的搜索空间剪枝效果不佳
        • 任务中的文档是评论,包含大量观点表达,因此在词汇层面上非常相似,导致 TF-IDF 分数分布非常相近
        • 论文任务中纽约市餐厅的评论文档之间平均 TF-IDF 余弦相似度为 0.35,而在SQuAD数据集中训练样本段落的相似度仅为 0.05
      • 截断评论文档会导致重要信息丢失
        • 由于 POI 的评论往往是“评论包”(bag-of-reviews)形式,直接截断或交叉注意力计算对这些文档不适用

  • 构建了一个新的数据集
    • 从在线旅游论坛中提取了 47,124 个问答对
    • 其中每个问题对应一个答案实体 ID
      • 该实体在从 Web 上收集的 超过 20 万份实体评论文档 中。
  • 提出了基于 Cluster-Select-Rerank 的 CsrQA 模型

2 数据收集

  • 目前大多数问答(QA)数据集都是通过众包工人构建的
    • 使用人工众包创建 QA 数据集的成本极高
    • ——>论文选择通过旅游论坛和评论集合自动收集数据集
      • ​​​​​​​首先爬取了旅游论坛上的帖子及其相应的对话,同时收集了包括发帖时间和日期在内的元数据
      • 随后爬取了各城市中餐馆和景点的评论数据,这些评论同样来自一个主流旅游论坛
        • 酒店评论则来自一个热门的酒店预订网站
        • 也收集了可用的实体元数据,如地址、评分、设施等信息

2.1 问题过滤

  • 除了真正的问题,论坛用户还会发布旅行总结、旅游服务反馈、以及一些开放性但不涉及实体查询的问题(如天气、经济状况等)
    • 基于关键词和元数据设计了高精度的规则来过滤这些帖子
    • 此外,移除了论坛中被显式标注为“旅行报告”或“不当内容”的帖子
    • 过长的问题(长度超过平均长度的1.7倍)也被剔除,因为它们通常是其他类型的内容,如投诉或行程安排

2.2 答案提取

  • 首先为每个城市建立了一个实体名称列表
    • 用这个列表在用户对论坛帖子的回复中查找实体提及
  • 每个实体还会被打上一个高层类别标签(如酒店、餐厅、景点),这些标签依据其来源页面自动分配
    • 如果一个实体同时属于多个类别,例如某家因历史意义而被归类为景点的酒店,那么该实体会分别作为“酒店”和“景点”出现,并对应独立的评论集合
  • 对用户的回答进行词性标注,并对识别出的名词使用模糊匹配方法在实体列表中进行查找(以适应拼写错误)
    • 这一过程生成了一组带噪声的“银标准”答案实体(silver answer entities),即从自由文本中自动提取的潜在答案
    • 接下来对这些银标准答案进行一系列精度提升步骤,最终生成“金标准”问答对(gold QA pairs)

2.3 银标准答案实体过滤

2.3.1 基于类型的过滤

  • 首先使用多句理解组件来识别问题中可能表示目标实体“类型”或“属性”的短语
    • 在图1的问题中,“place to eat”会被标记为 entity.type,“has vegetarian options as well” 被标记为 entity.attribute
  • 从论坛中收集的所有实体都带有标签(总共约210种)
    • 餐厅标注了菜系
    • 景点标注为博物馆、公园等
    • 酒店则标注为“酒店”。

  • 将这些标签手动归类为11个簇(clusters)
    • 在一个问题中,提取出表示 entity.type 的短语,并通过嵌入表示找到其最相近的簇
      • 即将("place to eat")用 句向量 表示,然后与那11个预定义簇的表示向量进行比较,选出最相近的一个簇
    • 同样地,对于每个银标准实体,根据其元属性中命中的标签频率确定其所属簇
      • response中被提取出来的“银标准实体”(比如 “Promenade Mall”),都有一些元属性标签(如 "shopping mall", "entertainment", "family-friendly");
      • 这些标签原本属于那210种中的若干
      • 统计它的标签分别命中了哪个簇中的标签最多,比如:
         
        • Promenade Mall → 命中 “mall” 类标签较多 → 属于 mall 簇;

        • PLATE 餐厅 → 命中 “restaurant” 标签 → 属于 restaurant 簇。

  • 如果问题类型簇与实体类型簇不匹配,该 QA 对将被丢弃。
    • 例如,在图1中,答案实体 Promenade Mall 和 Ambience Mall 类型不匹配,因而被剔除。
      • 用户的问题是想找一个**“place to eat”(吃饭的地方),也就是他们想找的是一个餐厅类(restaurant)**的 POI
      • 而系统在处理论坛回复、自动提取候选答案时,发现一些用户提到的实体(如 Promenade Mall 和 Ambience Mall)虽然出现在回答中,但它们的类型是购物中心(mall),不是餐厅。

2.3.2 基于同类比较的过滤(Peer-based filtering)

  • 每个实体都含有类型信息(如“餐厅”、“景点”或“酒店”)
  • 对于某个问题的所有候选答案实体,我们统计它们的类型分布,并移除那些不属于多数类型的实体
    • 例如,在图1中,实体 Grand Hotel 被标为“酒店”,但其余答案多为“餐厅”,因此 Grand Hotel 被移除
    • 如果没有明显的多数类型(如类型分布非常分散),则整条问题(及其答案)被丢弃
    • 【这个是说一个回复中,当多个实体被提取出来时,如果大多数都是一个类型(比如餐厅),那极少数是其他类型的实体(比如酒店)就被认为是“异类”,于是被剔除。】

2.3.3 去除通用名称实体

  • 有些实体的名称非常通用,如“Cafe”、“Spa”或城市名,这些在答案提取过程中容易造成误匹配
    • 参考 Google Places 提供的实体类型,收集了一批通用实体名,移除名称与这些词条匹配的实体。

2.3.4 去除连锁品牌/加盟店

  • 有些答案是餐饮或酒店连锁品牌名称,如“Starbucks”、“Hilton”
    • 由于我们无法区分具体是哪一家门店,因此无法关联其评论数据
    • 在这种情况下,系统会提取城市中所有同名实体,导致误匹配,因此我们直接丢弃这些 QA 对

2.3.5 去除错误候选(spurious candidates)

  • 用户在论坛回答中经常提及多个实体,其中有些并非答案,而是用于地理参照如“在 Starbucks 对面”)或观点比较(如“Wendy's 不如 A 餐厅”)
    • 通过一套简单规则剔除这些情况中提取出的实体,如:

      • 若一句话中提取出多个实体,则全部丢弃;

      • 若实体名邻近“next to”、“opposite”等短语,也予以剔除。

  • 此外,我们人工审核了提取的实体名集合,删除了一些常见英语单词或短语作为名称的实体(如“August”、“Upstairs”、“Neighborhood”等餐厅),它们容易导致错误匹配。总共移除了322个此类实体名称。

  • 这一步是整个数据收集流程中唯一包含人工标注的步骤

2.4 数据收集:误差分析

  • 我们对训练集中约 1% 的数据(450 个 QA 对)进行了误差分析,以评估自动数据收集流程的准确性
    • 结果表明,高精度过滤规则在该子集上的答案抽取准确率为 82%
    • 出现错误的原因主要可归结为以下五类

      • (16%)实体名称为通用英语词汇(例如 “The Park”),容易产生歧义

      • (27%)实体匹配到了回答中另一个非目标实体(例如,“next to Starbucks” 中的 Starbucks,并非真正答案)

      • (31%)实体名称相似,但属于不同类别(如与问题目标类型不同,例如匹配到同名酒店而不是餐厅)

      • (13%)未能识别否定句或负面情绪(例如帖子中说 “我不会去那家吃饭”)

      • 剩余 13% 错误来自无效问题(非实体类查询)或论坛用户本身提供的错误答案

2.5 众包清洗

  • 为了实现高质量的验证与测试集评估,对验证集与测试集进行了众包清洗
    • ​​​​​​​使用 Amazon Mechanical Turk(AMT)进行众包
    • 工作者会看到一个 QA 对,包括:

      • 原始问题;

      • 通过规则抽取出的答案实体;

      • 实体出现的原始论坛帖子及回复内容;

    • 工作者被要求判断:该实体是否确实在论坛中被作为回答提到

    • 每个 QA 对的审核费用为 $0.05,共审核了约 $550 的数据

2.6 数据特征

  • 每个问题的平均长度为约 73 个 token,这与一些现有 QA 任务中的文档长度相当;
  • 每个实体文档平均包含 3,266 个 token,远大于多数 QA 数据集中的文档长度
  • 回答一个问题通常需要考虑该城市中的所有可能实体,平均每个问题对应的候选实体数超过 5,300 个,突显了规模化处理的挑战
  • 数据集覆盖 50 个城市,总计包含 216,033 个实体
  • 平均而言,每个问题被抽取出 2 个金标准答案
    • ​​​​​​​​​​​​​​
  • 问题内容可能涉及以下限制条件:

    • 实体的地理位置

    • 预算

    • 时间安排

    • 以及关于氛围、服务质量等主观偏好

3 相关工作

  • 给定一个 POI 推荐类问题,其目标类别(例如“餐厅”)、所属城市(例如“德里”)、该城市中该类别的候选 POI 实体,以及每个实体对应的一组评论文档,任务目标是:根据问题对每个候选实体进行相关性评分

3.1 POI 推荐任务

  • 查询通常是结构化语句,或者由简单关键词或短语组成
    • 而论文将该问题建模为一个问答任务
      • ​​​​​​​用户通过提出详细的问题来表达偏好和约束条件,而不提供任何历史行为记录
      • 系统需要分析用户的问题以及与每个 POI 相关联的非结构化评论集合来返回推荐答案(POI)
    • 这是首个将 POI 推荐任务构建为一个非结构化 QA 任务,并基于真实旅游问题和 POI 评论进行建模与实验的工作

3.2 QA 与信息检索任务

3.2.1 和QA的关系

  • 阅读理解类的 QA 任务通常假设答案显式出现在文档中,可以通过单跳或多跳推理在句子中直接抽取
    • 而论文提出的任务,答案是由一份评论文档表示的实体(POI),而不是出现在文本中的具体句子。
  • 另一类开放域 QA 任务则要求模型首先从一个大型语料库中检索可能包含答案的文档,再从中抽取或生成答案
    • 这些任务的模型通常采用基于稀疏向量表示(如 TF-IDF 或 BM25 排名)的“检索-排序器(retriever-ranker)”架构,先选出候选文档,然后进行深层推理以提升可扩展性
    • 但是,在这个任务中,BM25 等传统检索策略效果极差,难以有效缩小候选空间
      • 每个实体由一个长篇、无结构的“评论包”文档表示,以往为了控制文档长度而任意截断的方式在此并不适用,因为评论本身缺乏结构性。
      • 使用 TF-IDF 等方式来缩小候选范围效果不佳,原因在于评论通常表达对类似方面/主题的主观观点,而非 QA/IR 任务中常见的具有辨识度的主题内容
    • 此外,每个问题需要处理的文档数量是这些开放域 QA 任务的 500 倍,每份文档本身也包含大量主观、噪声信息
      • 传统 QA 模型(如 BiDAF 或基于 BERT 的模型 )几乎不可行
        • BiDAF 在 4 张 K80 GPU 上训练一个 epoch 就需 43 小时
  • 本任务与“社区问答(Community QA, CQA)”任务相关
    • 但 CQA 的目标通常是从已有的论坛回复中找答案寻找类似问题
    • 在本任务中,旅游类 POI 推荐问题的答案来源是与实体相关的评论集合,而非现有的论坛回复

3.2.2  和IR的关系

  • IR 任务的目标是:根据查询检索相关文档
    • ​​​​​​​但这个任务的挑战不只是语义匹配,而是还要对主观评论信息进行推理和聚合,才能评估实体文档的相关性

4 方法

提出的强基线模型,CsrQA由三个主要模块组成:

  1. Cluster:聚类模块 —— 生成更小的代表性实体文档;

  2. Select:筛选模块 —— 使用神经检索器缩小候选实体空间;

  3. Rerank:重排序模块 —— 深度推理模型对筛选出的候选实体打分排序。

4.1 聚类模块:构建代表性实体文档

  • 数据集中每个实体的原始文档(即所有评论的集合)比现有 QA 数据集中所使用的文档要大得多
  • 为了让神经网络模型能有效训练,CsrQA 首先将每个实体的评论压缩为一个“代表性文档”
    • 使用预训练的 Universal Sentence Encoder(USE)对评论中的每句话进行编码,生成句向量;
    • 对每个实体文档中的所有句子进行 k-means 聚类
    • 从每个簇中选择离质心最近的前 k 个句子,作为代表
    • 在实验中,我们设置簇数为 10,每簇选 10 句话,总计每个实体文档保留 100 句话
      • ​​​​​​​​​​​​​​这相当于将文档长度缩短了约 70%,但仍比多数 QA 任务中的文档大得多

4.2 筛选模块:选出候选答案实体

  • CsrQA训练一个神经检索模型,将问题视为查询,将代表性实体文档视为文档库
  • 使用Duet 网络,这是一个基于交互的神经网络,通过将问题与文档中的不同部分进行匹配,再聚合证据来判断其相关性。
    • 结合了词面匹配(local features)语义匹配(distributed features)
    • 架构基于 CNN,因此在大规模检索任务中具备较好扩展性
  • 词面匹配
    • ​​​​​​​生成包含 TF-IDF 分数的词项矩阵(term-document matrix)
    • 输入 CNN → 全连接层 → 输出评分
  • Distributed(语义)部分
    • 使用 GloVe 词向量编码问题与文档中的词
    • 使用卷积层 + max-pooling 处理;
    • 问题向量送入全连接层,实体文档继续使用另一层卷积处理;
    • 问题向量与实体文档向量合并后,送入多层全连接层 → 输出最终评分
    • 最终评分为 local 与 distributed 两个通路的分数之和。
  • Duet 的作用是为每个问题对所有实体文档打分并排序;

  • 最后选出得分最高的 Top-30 个实体 进入下一阶段的深度推理。

4.3 重排序模块:对筛选出的候选实体进行推理

5 实验

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

带约束的高斯牛顿法求解多音信号分离问题

一、信号模型与优化问题建立 1. 复信号模型 设观测的复信号由两个单频复指数信号加噪声组成: x [ n ] A 0 e j ( 2 π f 0 n T s ϕ 0 ) A 1 e j ( 2 π f 1 n T s ϕ 1 ) w [ n ] , n 0 , 1 , … , N − 1 x[n] A_0 e^{j(2\pi f_0 n T_s \phi_0)} A_1 e…

Java并发编程中高效缓存设计的哲学

文章目录 引言详解缓存的设计和演进基于缓存存储运算结果锁分段散列减小锁粒度异步化提升处理效率原子化避免重复运算小结参考引言 本文将基于并发编程和算法中经典的哈希取模、锁分段、 异步化、原子化。这几个核心设计理念编写逐步推演出一个相对高效的缓存工具,希望对你有…

MATLAB的.mat文件

.mat文件是MATLAB的专有二进制数据文件格式,用于保存MATLAB工作空间中的变量和数据。 主要特点: 1. 存储内容: 各种类型的变量(数组、矩阵、结构体、单元数组等)函数句柄、对象稀疏矩阵多维数组 2. 文件特性&#…

ICM-20948 Wake on Motion功能开发全过程(7)

接前一篇文章:ICM-20948 Wake on Motion功能开发全过程(6) 探索工作 深入探索 上一回讲到,笔者在InvenSense官网上找到了实现Wake on Motion功能的指导文档。其中主要步骤如下: 本回就来结合文档中的步骤,详细讲解每一步。 (1)第1步 —— 初始化所有配置 注意,文档…

Dipal D1:数字人时代的全新人机关系形态

在科技不断突破的今天,虚拟与现实之间的界限正变得越来越模糊。Dipal D1 作为全球首款搭载2.5K曲面OLED显示屏的3D AI数字人硬件产品,不仅是一款情感陪伴设备,更是AI、AIGC、动漫文化与情感科技深度融合下的全新交互入口。它代表着“孤独经济”、“创作者经济”和“虚拟互动…

Linux离线编译安装nginx

Linux离线安装nginx 1.切换到root用户 #切换到root用户 su - #退出root用户 exit2.目录操作 #切到根目录 cd / #查看目录 ls #切目录 cd /home/... #到对应的目录下解压3.安装Nginx 在有网络的设备上下载以下文件: Nginx:从 nginx.org/en/download…

Qt PyQt与PySide技术-C++库的Python绑定

Qt PyQt与PySide技术-C库的Python绑定 一、概述二、区别于联系1、PyQt:Riverbank Computing的解决方案a、发展历程b、许可模式c、技术特点 2、PySide:Qt官方的Python绑定a、发展历程b、许可模式c、技术特点 三、对比许可证功能与兼容性社区与维护其他差异…

使用.detach()代替requires=False避免计算图错误

解决对一个对象多次BP更新时造成的RuntimeError: you can only change requires_grad flags of leaf variables.问题_解决对一个对象多次bp更新时造成的问题-CSDN博客 代码中存在一个特征需要参与辅助损失的计算,由于需要反复进行反向传播更新,计算图容易…

linux+docker+ollama+git常用指令

1、Linux命令 新建txt文件:touch xxx.txt 给txt文件夹权限:chmod x xxx.txt 查看日志:tail -f xxx.log / less xxx.log 根据关键字查看日志:grep "error" 文件名 查看端口状态:netstat -an|grep xxxxx 查看…

【八股消消乐】消息队列优化—系统架构设计

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本专栏《八股消消乐》旨在记录个人所背的八股文,包括Java/Go开发、Vue开发、系统架构、大模型开发、具身智能、机器学习、深度学习、力扣算法等相关知识点&#xff…

WebSocket长连接在小程序中的实践:消息推送与断线重连机制设计

一、引言:为什么需要WebSocket长连接? 传统方案的痛点:HTTP轮询的低效性(高延迟、高资源消耗)小程序场景需求:实时消息推送(如IM、直播弹幕、IoT设备状态同步)技术选型对比&#xf…

MySQL索引使用指南:何时该为字段添加索引?

在MySQL的性能优化中,索引是最常用且有效的手段之一。但“索引不是万能药”——盲目添加索引可能导致写操作变慢、存储空间浪费,甚至引发索引失效问题。本文将结合原理与实战场景,帮你理清​​“何时该用索引”​​的核心判断逻辑。 一、先理…

AI时代关键词SEO优化

内容概要 在人工智能(AI)驱动的时代浪潮下,搜索引擎优化(SEO)正迎来深刻变革,关键词策略已成为流量获取的核心战场。本文将系统剖析AI时代关键词优化的前沿方法,涵盖语义分析的精准研究、用户意…

GO 语言学习 之 代码风格

1. 命名规范 字母数字和下划线组成 以小写字母、大写字母或下划线开头 不允许包含标点符号、运算符、空白字符(空格、TAB、换行)等 采用驼峰命名法 (大驼峰、小驼峰) 见名知义:命名要有实际意义,易读性&am…

【软考高级系统架构论文】论云上自动化运维及其应用

论文真题 云上自动化运维是传统IT运维和 DevOps的延伸,通过云原生架构实现运维的再进化。云上自动化运维可以有效帮助企业降低IT运维成本,提升系统的灵活度,以及系统的交付速度,增强系统的可靠性,构建更加安全、可信、开放的业务平台。 请围绕“云上自动化运维及其应用”…

错误: 程序包androidx.fragment.app不存在 import android

错误: 程序包androidx.fragment.app不存在 import androidx.fragment.app.FragmentActivity; 这个是什么错?dependencies { //implementation fileTree(dir: libs, include: [*.jar]) implementation project(path: :libscan) //noinspection GradleCompatible implementation…

Java UDP Socket 实时在线刷卡扫码POS消费机门禁控制板服务端示例源码

本示例使用的设备&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1bYG0BuO&ftt&id17021194999 一、获取本电脑所有网卡IP public static String getIP() {Enumeration<NetworkInterface> netInterfaces;ArrayList<String>…

MATLAB基础应用精讲-【数模应用】层次分析法(AHP)(附MATLAB和python代码实现)

目录 前言 算法原理 什么是层次分析法(AHP) 注意事项 基本原理 算法步骤 1建立层次结构 2构建判断矩阵 3计算权重向量 4一致性检验 SPSSAU AHP层次分析案例 1、背景 2、理论 3、操作 4、SPSSAU输出结果 5、文字分析 6、剖析 疑难解惑 数据如何录入? 如何…

Macintosh小电脑、小手机 | openKylin最新硬件创意形态首次亮相!

近期&#xff0c;OpenAtom openKylin&#xff08;简称 “openKylin”&#xff09;社区与嘉立创旗下的立创开发板团队展开深度技术合作&#xff0c;成功完成立创・泰山派1开发板与openKylin 2.0操作系统的兼容适配。5月24日&#xff0c;嘉立创“第三届开源硬件星火会”在深圳盛大…

基于Spring Boot的计算机考研交流系统的设计与实现

基于Spring Boot的计算机考研交流系统的设计与实现 随着计算机科学的发展&#xff0c;越来越多的学生选择考研来提高自己的专业水平。然而&#xff0c;考研的过程中&#xff0c;学生们面临着各种问题&#xff0c;如学习资料的获取、交流平台的缺乏等。为了更好地满足这些需求&…