美團知識圖譜問答技術實踐與探索

知識圖譜問答(Knowledge-based Question Answering, KBQA)是指給定自然語言問題,通過對問題進行語義理解和解析,進而利用知識庫進行查詢、推理得出答案。美團在平臺服務的售前、售中、售後全鏈路的多個場景中都存在大量的諮詢問題。我們基於問答系統,以自動智能回覆或推薦回覆的方式,來幫助商家提升回答用戶問題的效率,同時更快地解決用戶問題。

本文結合 KBQA 在美團場景中的具體實踐,以及發表在 EMNLP 2021 上的論文,介紹了 KBQA 系統整體設計、難點突破以及端到端問答的探索,希望能對從事相關研究的同學有所幫助或者啓發。

1 背景與挑戰

問答系統(Question Answering System, QA)是人工智能和自然語言處理領域中一個倍受關注並具有廣泛發展前景的方向,它是信息檢索系統的一種高級形式,可以用準確、簡潔的自然語言回答用戶用自然語言提出的問題。這項研究興起的主要原因是人們對快速、準確地獲取信息的需求,因此被廣泛應用於工業界的各種業務場景中。美團在平臺服務的售前、售中、售後全鏈路的多個場景中,用戶都有大量的問題需要諮詢商家。因此我們基於問答系統,以自動智能回覆或推薦回覆的方式,來幫助商家提升回答用戶問題的效率,更快地解決用戶的問題。

針對不同問題,美團的智能問答系統包含多路解決方案:

  1. PairQA:採用信息檢索技術,從社區已有回答的問題中返回與當前問題最接近的問題答案。

  2. DocQA:基於閱讀理解技術,從商家非結構化信息、用戶評論中抽取出答案片段。

  3. KBQA(Knowledge-based Question Answering):基於知識圖譜問答技術,從商家、商品的結構化信息中對答案進行推理。

本文主要分享在 KBQA 技術落地中的實踐與探索。

在用戶的問題中,包括着大量關於商品、商家、景區、酒店等相關基礎信息及政策等信息諮詢,基於 KBQA 技術能有效地利用商品、商家詳情頁中的信息,來解決此類信息諮詢問題。用戶輸入問題後,KBQA 系統基於機器學習算法對用戶查詢的問題進行解析、理解,並對知識庫中的結構化信息進行查詢、推理,最終將查詢到的精確答案返回給用戶。相比於 PairQA 和 DocQA,KBQA 的答案來源大多是商家數據,可信度更高。同時,它可以進行多跳查詢、約束過濾,更好地處理線上的複雜問題。

實際落地應用時,KBQA 系統面臨着多方面的挑戰,例如:

  1. 繁多的業務場景:美團平臺業務場景衆多,包涵了酒店、旅遊、美食以及十多類生活服務業務,而不同場景中的用戶意圖都存在着差別,比如 “早餐大概多少錢”,對於美食類商家需要回答人均價格,而對於酒店類商家則需要回答酒店內餐廳的價格明細。

  2. 帶約束問題:用戶的問題中通常帶有衆多條件,例如 “故宮學生有優惠嗎”,需要我們對故宮所關聯的優惠政策進行篩選,而不是把所有的優惠政策都回答給用戶。

  3. 多跳問題:用戶的問題涉及到知識圖譜中多個節點組成的路徑,例如 “XX 酒店的游泳池幾點開”,需要我們在圖譜中先後找到酒店、游泳池、營業時間。

下面將詳細講述我們是如何設計高準確、低延時的 KBQA 系統,處理場景、上下文語境等信息,準確理解用戶、捕捉用戶意圖,從而應對上述的挑戰。

2 解決方案

KBQA 系統的輸入爲用戶 Query,輸出爲答案。總體架構如下圖 1 所示。最上層爲應用層,包括對話以及搜索等多個入口。在獲取到用戶 Query 後,KBQA 線上服務通過 Query 理解和召回排序模塊進行結果計算,最終返回答案文本。除了在線服務之外,知識圖譜的構建、存儲也十分重要。用戶不僅會關心商戶的基本信息,也會詢問觀點類、設施信息類問題,比如景點好不好玩、酒店停車是否方便等。針對上述無官方供給的問題,我們構建了一套信息與觀點抽取的流程,可以從商家非結構化介紹以及 UGC 評論中抽取出有價值的信息,從而提升用戶諮詢的滿意度,我們將在下文進行詳細介紹。

圖 1 KBQA 系統架構圖

對於 KBQA 模型,目前的主流解決方案有兩種,如下圖 2 所示:

圖 2 KBQA 解決方案分類

基於語義解析的方法可解釋性更強,但這種方法需要標註大量的自然語言邏輯表達式,而信息抽取式的方法更偏向端到端的方案,在複雜問題、少樣本情況下表現更好,但若子圖過大,會顯著降低計算的速度。

因此,考慮到兩者的優勢,我們採用將兩者結合的方案。如下圖 3 所示,整體的流程分爲四大步驟,以 “故宮週末有學生票嗎” 爲例:

圖 3 美團 KBQA 解決方案

  1. Query 理解:輸入原始 Query,輸出 Query 理解結果。其中會對對 Query 進行句法分析,識別出用戶查詢的主實體是 “故宮” 、業務領域爲 “旅遊”、問題類型爲一跳(One-hop)。

  2. 關係識別:輸入 Query、領域、句法解析結果、候選關係,輸出每個候選的分數。在這個模塊中,我們藉助依存分析強化 Query 的問題主幹,召回旅遊領域的相關關係,進行匹配排序,識別出 Query 中的關係爲 “門票”。

  3. 子圖召回:輸入前兩個模塊中解析的主實體和關係,輸出圖譜中的子圖(多個三元組)。對於上述例子,會召回旅遊業務數據下主實體爲 “故宮”、關係爲“門票” 的所有子圖。

  4. 答案排序:輸入 Query 和子圖候選,輸出子圖候選的分數,如果 Top1 滿足一定閾值,則輸出作爲答案。基於句法分析結果,識別出約束條件爲 “學生票”,基於此條件最終對 Query-Answer 對進行排序,輸出滿足的答案。

下面將介紹我們對於重點模塊的建設和探索。

2.1 Query 理解

Query 理解是 KBQA 的第一個核心模塊,負責對句子的各個成分進行細粒度語義理解,其中兩個最重要的模塊是:

實體識別是句法分析的重要步驟,我們先基於序列標註模型識別實體,再鏈接到數據庫中的節點。對於該模塊我們主要做了以下優化:

最終,該模塊會輸出句子中各個重要成分的類型,如下圖 4 所示:

圖 4 Query 理解流程及結果

依存分析是句法分析的一種,它的目的是識別句子中詞與詞的非對稱支配關係,在輸出的結果中用有向弧表示,該弧線由從屬詞(dep)指向支配詞(head)。對於 KBQA 任務,我們定義了五種關係,如下圖 5 所示:

圖 5 依存類型定義

依存分析主要有兩種方案:基於轉移的(Transition-based)和基於圖的(Graph-based)。基於轉移的依存分析將依存句法樹的構建建模爲一系列操作,由模型預測每一步的動作(shift、left_arc、right_arc),不斷將未處理的節點入棧並賦予關係,最終構成句法樹。基於圖的方法則致力於在圖中找出一棵最大生成樹,也就是句子整體依存關係的全局最優解。考慮到基於圖的方法是對全局進行搜索,準確率更高,我們採用較爲經典的 “Deep Biaffine Attention for Neural Dependency Parsing” 模型,它的結構如下圖 6 所示:

圖 6 依存分析模型結構

該模型先通過 BiLSTM 對詞與詞性的拼接向量進行編碼,之後採用對用兩個 MLP 頭分別編碼出 h(arc-head) 和 h(arc-dep) 向量,去除冗餘信息。最終將各個時刻的向量拼接起來得到 H(arc-head) 和 H(arc-dep),且在 H(arc-dep) 上拼接了一個單位向量,加入中間矩陣 U(arc) 進行仿射變換,得到 dep 與 head 的點積分數矩陣 S(arc),找到每個詞依存的 head。

有了依存分析的結果,我們可以更好地識別關係、複雜問題,具體的特徵使用方法將在下文進行介紹。

2.2 關係識別

關係識別是 KBQA 中另一個核心模塊,目的是識別出用戶 Query 所問的關係(Predicate),從而與主實體(Subject)聯合確定唯一子圖,得到答案(Object)。

在實踐中,考慮到圖譜中邊關係的數量會不斷增加,我們將關係識別建模爲文本匹配任務,輸入用戶 Query、Query 特徵和候選關係,輸出關係匹配的分數。爲了解決開頭提到的多領域問題,我們在輸入的特徵中加入了領域信息,從而在領域表示中存儲一定的領域相關知識,讓模型更好地判斷。同時,爲了提升複雜 Query 的理解,我們在輸入中還融入了句法信息,讓模型可以更好地理解帶約束、多跳的問題。

圖 7 關係識別模型結構

隨着大規模預訓練語言模型的出現,BERT 等大模型在匹配任務上取得了 SOTA 的結果,通常業界通用的方法主要歸類爲以下兩種:

  1. 表示型:也稱 “雙塔模型”,它的主要思想是將兩段文本轉換成一個語義向量,然後在向量空間計算兩向量的相似度,更側重對語義向量表示層的構建。

  2. 交互型:該方法側重於學習句子中短語之間的對齊,並學習比較他們之間的對齊關係,最終將對齊整合後的信息聚合到預測層。由於交互型模型可以利用到文本之前的對齊信息,因而精度更高、效果更好,所以在本項目中我們採用交互型模型來解決匹配問題。

爲了充分利用 BERT 的語義建模能力,同時考慮實際業務的線上延時要求,我們在推理加速、數據增強、知識增強方面做了以下三點優化:

  1. 層次剪枝:BERT 每層都會學到不同的知識,靠近輸入側會學到較爲通用的句法知識,而靠近輸出則會學習更多任務相關的知識,因此我們參考 DistillBERT,採取 Skip 等間隔式層次剪枝,只保留對任務效果最好的 3 層,比單純保留前三層的剪枝在 F1-score 上提升了 4%,同時,實驗發現不同剪枝方法效果差距可達 7%。

  2. 領域任務數據預精調:剪枝後,由於訓練數據有限,3 層模型的效果有不小的下降。通過對業務的瞭解,我們發現美團的 “問大家” 模塊數據與線上數據的一致性很高,並對數據進行清洗,將問題標題和相關問題作爲正例,隨機選取字面相似度 0.5-0.8 之間的句子作爲負例,生成了大量弱監督文本對,預精調後 3 層模型在準確率上提升超過 4%,甚至超過了 12 層模型的效果。

  3. 知識增強:由於用戶的表達方式多種多樣,準確識別用戶的意圖,需要深入語意並結合語法信息。爲了進一步提升效果,同時解決部分 Case,我們在輸入中加入了領域與句法信息,將顯式的先驗知識融入 BERT,在注意力機制的作用下,同時結合句法依存樹結構,準確建模詞與詞之間的依賴關係,我們在業務數據以及五個大型公開數據集上做驗證,對比 BERT Base 模型在準確率上平均提升 1.5%。

經過上述一系列迭代後,模型的速度、準確率都有了大幅的提升。

2.3 複雜問題理解

在真實場景中,大部分問題可以歸爲以下四類(綠色爲答案節點),如下圖 8 所示:

圖 8 複雜問題分類

問題的跳數根據實體數量決定,單跳問題通常只涉及商戶的基本信息,比如問商戶的地址、電話、營業時間、政策等,在知識圖譜中都可以通過一組 SPO(三元組)解答;兩跳問題主要是針對商戶中某些設施、服務的信息提問,比如酒店的健身房在幾層、早餐幾點開始、以及接送機服務的價格等,需要先找到商戶 -> 主實體(設施 / 服務 / 商品等)的路徑,再找到主實體的基本信息三元組,也就是 SPX、XPO 兩個三元組。約束問題指主實體或答案節點上的約束條件,一般爲時間、人羣或是定語。

下面介紹針對不同類型的複雜問題,我們所進行的一些改進。

2.3.1 帶約束問題

通過對線上日誌的挖掘,我們將約束分爲以下幾類,如下圖 9 所示:

圖 9 約束問題分類

對於帶約束問題的回答涉及兩個關鍵步驟:約束識別答案排序

通過 KBQA 系統中的依存分析模塊,我們可以識別出用戶在實體或關係信息上所加的約束限制,但約束的說法較多,且不同節點的約束類型也不一樣,因此我們在構造數據庫查詢 SQL 時先保證召回率,儘量召回實體和關係路徑下的所有候選節點,並在最終排序模塊對答案約束進行打分排序。

爲了提升效率,我們首先在知識存儲層上進行了優化。在複合屬性值的存儲方面,Freebase 提出 Compound Value Type (CVT) 類型,如下圖 10 所示,來解決這類複合結構化的數據的存儲與查詢問題。比如歡樂谷的營業時間,對於不同的場次是不一樣的。這種複合的屬性值可以用 CVT 的形式去承接。

圖 10 CVT 類型示例

但是,CVT 存儲方式增加查詢複雜度、耗費數據庫存儲。以圖 “歡樂谷營業時間 CVT” 爲例:

爲了解決上述問題,我們採用 Key-Value 的結構化形式承載屬性信息。其中 Key 爲答案的約束信息,如人羣、時間等可以作爲該屬性值的約束的信息,都可以放在 Key 中,Value 即爲要查的答案。對於上文的例子,我們將所有可能的約束維度的信息組成 Key,如下圖 11 所示:

圖 11 約束問題解決方案

之後,爲了解決約束值說法過多的問題,在實際查詢過程中,在找不到完全匹配的情況下,我們用屬性值的 Key 和問題中的約束信息進行匹配計算相關度,相關度最高的 Key,對應的 Value 即爲答案。因此,Key 的表示方法可以爲多種形式:

這種形式的存儲方式,相當於只存儲一個三元組,即 <實體 -> 營業時間 KV>,查詢過程壓縮成了一跳 + 文本匹配排序。基於語義模型的文本匹配可以在一定程度上解決文本表達不同造成的不能完全匹配的問題。對語義模型進行優化後,可以儘量壓縮匹配時間,達到十幾毫秒。

進行復雜條件優化後,先通過前置模塊識別到實體、關係和約束,組成約束文本,再與當前召回子圖的 Key 值候選進行匹配,得到最終的答案。

2.3.2 多跳問題

多跳問題是天然適合 KBQA 的一類問題,當用戶詢問商戶中的設施、服務、商品等實體的信息時,我們只需要先在圖譜中找到商戶,再找到商戶下的實體,接着找到下面的基本信息。如果使用 FAQ 問答的解法,就需要爲每個複雜問題都設置一個標準問,比如 “健身房的位置”、“游泳館的位置” 等。而在 KBQA 中,我們可以很好地對這類問題進行壓縮,不管問什麼實體的位置,都問的是 “位置” 這條邊關係,只是起始實體不同。

在 KBQA 系統中,我們先依賴依存分析模塊對句子成分間的依賴關係進行識別,之後再通過關係識別模塊判斷句子所詢問的關係跳數以及關係,具體流程如下圖 12 所示:

圖 12 多跳問題解決方案

藉助實體識別的類型,我們可以將句子中的重要成分進行替換,從而壓縮候選關係配置的個數、提升關係識別準確率。在對句子進行了充分理解後,系統會基於主實體、關係、跳數對子圖進行查詢,並輸入給答案排序模塊進行更細粒度的約束識別和打分。

2.4 觀點問答

除了上述基本信息類的查詢 Query 外,用戶還會詢問觀點類的問題,比如 “迪士尼停車方便嗎?”、“XX 酒店隔音好嗎?” 等。對於主觀觀點類問題,可以基於 FAQ 或閱讀理解技術,從用戶評論中找出對應的評論,但這種方法往往只能給出一條或幾條評論,可能會太過主觀,無法彙總羣體的觀點。因此我們提出了觀點問答方案,給出一個觀點的正反支持人數,同時考慮到可解釋性,也會給出多數觀點的評論證據,在 App 中的實際展示如下圖 13 所示:

圖 13 觀點問答截圖

爲了自動化地批量挖掘用戶觀點,我們拆解了兩步方案:觀點發現和 Evidence 挖掘,如下圖 14 所示。

圖 14 觀點挖掘步驟

第一步,先通過觀點發現在用戶評論中挖掘出多種觀點。我們採用基於序列標註的模型發掘句子中的實體和觀點描述,並使用依存分析模型對實體 - 觀點的關係進行判斷。

第二步,在挖掘到一定數量的觀點後,再深入挖掘評論中的證據(Evidence),如下圖 15 所示。雖然在第一步觀點發現時也能找到部分觀點的出處,但還有很多用戶評論的觀點是隱式的。比如對於 “是否可以帶寵物”,用戶不一定在評論中直接指明,而是說 “狗子在這裏玩的很開心”。這就需要我們對評論語句進行深度語義理解,從而歸納其中的觀點。在方案的落地過程中,最初我們使用了分類模型對觀點進行分類,輸入用戶評論,用編碼器對句子進行理解,之後各個觀點的分類頭判斷觀點正向程度。但隨着自動化挖掘的觀點增多,爲了減少人工標註分類任務的成本,我們將其轉換成了匹配任務,即輸入觀點標籤(Tag)和用戶評論,判斷評論語句對該觀點的支撐程度。最後,爲了優化速度,我們對 12 層 Transformer 進行了裁剪,在速度提升 3 倍的情況下效果只降了 0.8%,實現了大批量的觀點離線挖掘。

圖 15 觀點證據挖掘步驟

2.5 端到端方案的探索

在上文中,我們針對多跳、帶約束等複雜問題設計了不同的方案,雖然可以在一定程度上解決問題,但系統的複雜度也隨之提高。基於關係識別模塊的預訓練思路,我們對通用的、端到端的解決方案進行了更多的探索,並在今年的 EMNLP 發表了《Large-Scale Relation Learning for Question Answering over Knowledge Bases with Pre-trained Language Models》論文

對於 KBQA,目前學術界有很多研究專注於圖學習方法,希望用圖學習來更好地表示子圖,但卻忽略了圖譜節點本身的語義。同時,BERT 類的預訓練模型是在非結構化文本上訓練的,而沒接觸過圖譜的結構化數據。我們期望通過任務相關的數據來消除兩者的不一致性,從而提出了三種預訓練任務,如下圖 16 所示:

圖 16 關係識別預訓練任務

  1. Relation Extraction:基於大規模關係抽取開源數據集,生成了大量一跳( [CLS]s[SEP]h, r, t[SEP] )與兩跳( [CLS]s1 , s2 [SEP]h1 , r1 , t1 (h2 ), r2 , t2 [SEP] )的文本對訓練數據,讓模型學習自然語言與結構化文本間的關係。

  2. Relation Matching:爲了讓模型更好的捕捉到關係語義,我們基於關係抽取數據生成了大量文本對,擁有相同關係的文本互爲正例,否則爲負例。

  3. Relation Reasoning:爲了讓模型具備一定的知識推理能力,我們假設圖譜中的 (h, r, t) 缺失,並利用其他間接關係來推理 (h, r, t) 是否成立,輸入格式爲:[CLS]h, r, t[SEP]p1 [SEP] . . . pn [SEP]。

經過上述任務預訓練後,BERT 模型對於 Query 和結構化文本的推理能力顯著提升,並且在非完全 KB 的情況下有更好的表現,如下圖 17 所示:

圖 17 模型效果

3 應用實踐

經過一年多的建設,當前 KBQA 服務已經接入美團的旅遊、酒店、到綜等多個業務,輔助商家及時回答用戶問題,並提升了用戶的滿意度和轉化率。

3.1 酒店問一問

酒店是用戶出行的必備需求之一,但一些中小商家沒有開通人工客服入口,無法及時回答用戶信息。爲滿足用戶對詳情頁內信息的快速查找,智能助理輔助未開通客服功能的酒店商家進行自動回覆,提升用戶下單轉化率。用戶可詢問酒店以及房型頁的各類信息,如下圖 18 所示:

圖 18 酒店問一問產品示例

3.2 門票地推

門票地推致力於幫助旅遊商家解決主要的賣票業務,在景區高峯時段,線上購票相比於排隊更加便捷,然而仍有很多用戶保持着線下購票的習慣。美團通過提過二維碼以及簡單的交互,提升了商戶賣票以及用戶購票的便捷程度。同時,我們通過在購票頁內置「智能購票助手」,解決用戶購票過程中的問題,幫用戶更快捷地買到合適的門票,如下圖 19 所示:

圖 19 門票地推產品示例

3.3 商家推薦回覆

除了出行場景外,用戶在瀏覽其他本地服務商家時也會有很多問題,比如 “理髮店是否需要預約?”、“店家最晚幾點關門?”,這些都可以通過商家客服進行諮詢。但商家本身的人力有限,難免在高峯時期迎接不暇。爲了降低用戶的等待時間,我們的問答服務會爲商家提供話術推薦功能,如下圖 20 所示。其中 KBQA 主要負責解答商家、團購相關的信息類問題。

圖 20 商家推薦回覆產品示例

4 總結與展望

KBQA 不僅是一個熱門的研究方向,更是一個複雜的系統,其中涉及到實體識別、句法分析、關係識別等衆多算法,不僅要關注整體準確率,更要控制延時,對算法和工程都提出了很大的挑戰。經過一年多的技術的探索,我們團隊不僅在美團落地多個應用,並在 2020 年獲得了 CCKS KBQA 測評的 A 榜第一、B 榜第二和技術創新獎。同時我們開放出了部分美團數據,與北大合作舉辦了 2021 年的 CCKS KBQA 測評。

回到技術本身,雖然目前我們的 KBQA 已能解決大部分頭部問題,但長尾、複雜問題纔是更大的挑戰,接下來還有很多前沿技術值得探索,我們希望探索以下方向:

也歡迎對 KBQA 感興趣的同學加入我們團隊,一起探索 KBQA 的更多可能性!文末附招聘信息,歡迎大家積極投遞簡歷。

作者簡介

如寐、梁迪、思睿、鴻志、明洋、武威,均來自美團搜索與 NLP 部 NLP 中心知識圖譜組。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/8vz32-tLU6U1oYPErhbW0Q