論文筆記:Answering POI-Recommendation Questions using TourismReviews

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;如學習資料的獲取、交流平臺的缺乏等。為了更好地滿足這些需求&…