文字匹配(語義相似度 行為相關性)技術綜述

2021-09-05 11:56:57 字數 3067 閱讀 1937

nlp 中,文字匹配技術,不像 mt、mrc、qa 等屬於 end-to-end 型任務,通常以文字相似度計算、文字相關性計算的形式,在某應用系統中起核心支撐作用,比如搜尋引擎、智慧型問答、知識檢索、資訊流推薦等。本篇將縱覽文字匹配的技術發展,並重點介紹文字語義相似度計算技術,以及多輪對話場景中的文字語義相似度計算技術。

從大量儲存的 doc 中,選取與使用者輸入 query 最匹配的那個 doc。

解決這些任務,無監督和有監督學習都提供了一些具體方法,我們這裡先談論有監督學習。通常,這些任務的訓練樣本具有同樣的結構:

共 n 組資料,每組資料結構相同:1 個 query,對應的 m 個 doc,對應的 m 個標籤。

可見,query 和 doc 的表徵形式較固定,至於具體 embedding 包含的資訊根據具體任務、場景、目標變化極大,按需設計。

但至於訓練樣本中的標籤,形式則區別甚大。可以分成下述三種形式:

上述三種不同監督形式,形成了不同的學習方式,彼此之間優劣異同就涉及到 learning2rank 技術了,具體可參考之前的博文,這裡不再贅述。雖然越靠後的形式得到的模型越符合我們預期,但其對訓練樣本形式的嚴苛性和演算法設計的複雜性使得工業應用難以開展,通常,解決我們遇到的任務,多採用 pointwise 或者 pairwise 方式。

再回顧下 「從大量儲存的 doc 中,選取與使用者輸入 query 最匹配的那個 doc」 這個經典問題,doc 與 query 的具體指代的改變使之可以推廣到多個具體任務中,監督資訊則可以從兩個維度拓展:

這一節,我們盡量將問題泛化,將多個相關任務進行了關聯。那麼,下面將就具體的任務 —— 文字語義相似度計算 —— 進行介紹。

pi、ssei、sts、ir-qa、ad-hoc retrieval

談起相似度計算,經常會出現幾個關聯的 nlp 任務,彼此存在微妙的區別:

當然,如何定義「相似」也是個開放問題。

quora 曾嘗試從更實用的角度給出定義,如果多個 query 所反映的意圖一致,或者說可以用同乙個 answer 回答,則可以認為語義一致,即 ssei。這也更符合 faq 問答系統中文字語義相似度計算的訴求。

此外,需要注意的是,雖然定義有區別,但幾個任務基於神經網路提出的很多模型,是彼此通用的。許多經典模型在乙個任務上被提出,評估時都會在其他幾個任務的資料上跑一下。當然,乙個模型遷移到其他任務時,也會進行針對性的微調,後面也會介紹到。總之,應該多關注這幾個相關任務上的技術發展,借鑑引用。

常用資料集

無監督技術

不少經典的無監督 sts 技術,雖然簡樸,但也能取得不錯的效果:

雖然無監督技術較粗糙,但能有效解決冷啟動問題。如 solr 全文檢索引擎就在用基於 ngram ld 的相似度召回技術,faq 問答引擎中使用 bow+ld 也能取得不錯的效果。主題模型和基於詞向量的模型,本質上都是基於詞共現資訊的,雖然引入了詞義資訊,但實際使用中,並無法替代基於詞彙重合度的經典演算法,效果相差不大。

基於有監督的相似度計算,我們這邊主要介紹基於神經網路的,基本可以分為兩大類,sentence encoding (sentence representation) 類、sentence interaction 類。下面將分別介紹。

se 網路

se 網路結構如下:

si 網路

si 網路結構如下:

深度語義

為了更好實現語義匹配、邏輯推理,需要 model 深度資訊,可以從如下角度改進上述基礎 se、si 網路:

學習形式

前面,提過可以按 pointwise、pairwise、listwise 順序公升格進行學習,在權衡標籤獲取難度和效果後,通常選用 dssm 結構,即形式上的 listwise,loss 上的 pairwise 結構。

提供一種最佳實踐方案:基於 dssm 結構分別訓練 se 和 si 網路,訓練好的 se 網路結合 faiss 作為預召回模組,訓練好的 si 網路作為匹配模組。

針對性調整

值得注意的是,前面雖然說 pi、ssei、sts、ir-qa、ad-hoc retrieval 等任務基於神經網路提出的很多模型是彼此通用的,但彼此借鑑時,還是有不少細節需要調整的。

ir-based qa 中提出的模型雖然也通用於相似度計算,但細節需要調整。如,siamese 網路最後 matching layer 採用 cos 的話,對於 paraphrase 任務自然是沒問題,兩文字 encoding 後向量相同則得分高,但對 qa 任務則不盡然,此時 answer 未必是最優的。因此,基於 se 結構的 qa 任務通常會加各種 attention,而 paraphrase 任務加 attention 基本沒有增益。在 qa 任務上, attention 起到將 q 中資訊線性對映到 a 中資訊的空間的作用,而 paraphrase 沒這個必要。

語義匹配任務和相關匹配任務,很多模型也是通用的,但兩個任務強調的有效資訊是截然不同的,因此在基礎模型上也會進行不少調整。如,需要格外關注 query 與 doc 完全匹配的 term,強調 query 中 term 的重要性,有時不必將 doc 作為整體和 query 進行匹配,等等。計算所提出了一系列相關匹配模型,如 drmm、anmm 等,可以參考 matchzoo。

可見,看起來很相似的任務,也會導致很不同的解決方案,再次驗證了 no-free-lunch 定理。

多輪對話場景

下面簡單介紹幾個經典的 ir-based 多輪對話的 qa 模型:

msra 在 acl2017 提出的 smn 模型:將 se 改進到 si, 聯合考慮 word-level interaction 和 segment-level interaction。不過其 representation 過程用的兩個 dru,過於繁瑣,可以參考阿里小蜜在2018的 mt-hcnn,進行了改進。

上交在 coling2018 提出的 dua 模型:採用了 self-attention 對 utterance 進行了 deep encoding。

短文本語義相似度計算

寫在開始之前 語義即聯絡。以下部分來自於我在公司內部的分享。在學術上,大致有以下三個概念和文字相似度相關 當我們在討論兩個短文本是不是相似 或者是不是表達同乙個意思 需要做兩件事 說它簡單,因為它是一種簡單的詞袋模型 說它重要,因為它很容易和倒排索引結合,正所謂 天下武功,無堅不摧,唯快不破!我會在...

相似度匹配

同學們的實驗報告抄襲現象嚴重,現為了防止實驗報告抄襲的惡習,讓真正撰寫實驗報告的組能夠獲得公平的分數,需要設計乙個系統能夠查詢兩個實驗報告中相同的文字內容,從而計算兩個實驗報告的相似度。給定2個字串行x和y,當另一串行z既是x的子串行又是y的子串行時,稱z是序列x和y的公共子串行。找到兩個序列的最長...

語義相似度 實踐篇

這篇文章,專門講語義相似度問題。先看場景 scene 二 kb qa的兩個問題 獲取question的語義表示 把語義表示轉換成知識圖譜的能夠理解的語言邏輯形式。無論是核心推導鏈還是向量建模,核心都是question和answer的語義相似度問題。雖然學術界對於語義相似度問題,都說是熱點和難點,但是...