這裡主要的內容來自龐亮博士的一篇綜述性**,後面會放出**的參考位址。
深度文字匹配模型可以分為三類:
基於單語義文件表達的深度學習模型
基於單語義文件表達的深度學習模型主要思路是,首先將單個文字先表達成乙個稠密向量(分布式表達),然後直接計算兩個向量間的相似度作為文字間的匹配度。
基於多語義文件表達的深度學習模型
基於多語義的文件表達的深度學習模型認為單一粒度的向量來表示一段文字不夠精細,需要多語義的建立表達,更早地讓兩段文字進行互動, 然後挖掘文字互動後的模式特徵, 綜合得到文字間的匹配度。
直接建模匹配模式的深度學習模型
而直接建模匹配模式的深度學習模型則認為匹配問題需要更精細的建模匹配的模式
這裡說白了就是我們模型需要克服和解決的一些困難,解決實際問題的時候我們往往需要面對的也是這些問題。
詞語匹配的多元性
不同的詞語可能表示的是同乙個語義,比如同義詞, 「荷花」 、「蓮花」、「水芙蓉」、「芙蕖」,它們表示的都是同一種植物;同理乙個相同的詞在不同的語境下會有不同的語義,比如「蘋果」既可以是一種水果,也可以是一家公司, 亦可以是乙個品牌。
短語匹配的結構性
多個詞語可以按照一定的結構組合成短語,匹配兩個短語需要考慮短語的結構資訊。比如「機器學習」和「機器學習」是兩個詞順序匹配的,而「機器學習」和「學習機器」 只有詞語是匹配的,而順序是打亂的。這兩種情況的匹配程度是不一樣的。
文字匹配的層次性
文字是以層次化的方式組織起來的,詞語組成短語,短語組成句子,句子組成段落,段落組成篇章。這樣一種特性使得我們在做文字匹配的時候需要考慮不同層次的匹配資訊,按照層次的方式組織我們的文字匹配資訊。
傳統文字匹配依賴於大量的人工特徵,泛化能力比較差,深度文字匹配可以自動提取特徵,層次結構也更加好。
卷積神經網路的卷積核的結構能夠建模區域性化資訊,並有平移不變性的特性,堆疊起來的卷積層可以很方便地模擬語言層次化的特性。而迴圈神經網路更偏向於序列化建模,類似人類閱讀文字的方式每次將歷史的資訊壓縮到乙個向量,並作用於後面的計算,符合建模文字的序列性。
兩個基本問題:如果做文件的語義表示和如何計算語義表示的相似性
深度語義結構模型(deep semantic structured model, dssm)是最早將深度模型應用在文字匹配的工作之一,該模型主要針對查詢項和文件的匹配度進行建模,相對於傳統文字匹配的模型,該方法有顯著的提公升。深度語義結構模型是個典型的siamese 網路結構,每個文字物件都是由五層的網路單獨進行向量化的,最後計算兩個文字向量的余弦相似度來決定這兩段文字的相似程度。
整體框架如下
工具包中有三個主要模組,分別是資料準備,模型構建,培訓和評估。這三個模組實際上被組織為資料流的管道。
資料準備模組旨在將不同文字匹配任務的資料集轉換為統一格式作為深度匹配模型的輸入。使用者提供包含文字對及其標籤的資料集,並且該模組生成以下檔案。
詞典 記錄從每個單詞到稱為wid的唯一識別符號的對映。可以通過預定義規則過濾掉過於頻繁(例如停用詞),過於罕見或嘈雜(例如傳真號碼)的詞。
語料庫檔案
記錄從每個文字到稱為tid的唯一識別符號的對映,以及該文字中包含的一系列單詞識別符號。請注意,此處每個文字都被截斷或填充到使用者自定義的固定長度。
關係檔案
儲存兩個文字之間的關聯標籤,兩個tid和關聯標籤
更加詳細的細節
資料細節
在模型構建模組中,我們採用keras庫來幫助使用者方便地逐層構建深度匹配模型。 keras圖書館提供了一組常用的神經網路層,如卷積層,池化層,全連線層等。為了進一步促進深層文字匹配模型的構建,我們擴充套件了keras庫,以提供專門為文字匹配設計的一些層介面。
此外,該工具包實施了兩組具有代表性的深層文字匹配模型,即以表示為中心的模型和以互動為中心的模型。
為了學習深度匹配模型,該工具包為回歸,分類和排序提供了各種目標函式。例如,與排名相關的目標函式包括幾個眾所周知的逐點,成對和列表損失。使用者可以靈活地在訓練階段獲取不同的目標函式以進行優化。一旦模型被訓練,該工具包可用於產生匹配分數,**匹配標籤,或者針對輸入文字對目標文字(例如,文件)進行排名。
在這裡,我們採用兩個代表性資料集作為示例,以顯示matchzoo在排名和分類中的用法。對於排名任務,我們使用wikiqa資料集作為示例。對於分類任務,我們使用quoraqp資料集作為示例。
wikiqa for ranking
使用drmm作為乙個例子
python
matchzoo/main.py
--phase
train--
model_file
examples/wikiqa/config/drmm_wikiqa
.config
python
matchzoo/main.py
--phase
predict--
model_file
examples/wikiqa/config/drmm_wikiqa
.config
quoraqp for classification
使用matchpyramid作為乙個例子
python
matchzoo/main.py
--phase
train--
model_file
examples/quoraqp/config/matchpyramid_quoraqp
.config
python
matchzoo/main.py
--phase
predict--
model_file
examples/quoraqp/config/matchpyramid_quoraqp
.config
深度文字匹配
最近在了解文字匹配相關一些實現和演算法。在資訊檢索系統裡面,如何釐清文字的相關性,是乙個非常關鍵的問題。所謂的相關性,主要包括兩個方面,乙個方面是文字相關性,還有乙個語義的相關性。在經典的模型裡面,比較常見的做法是向量空間模型 vector space model 向量空間模型,原理則是將query...
文字匹配方法系列 BERT匹配模型
在介紹深層次互動匹配方法之前,本文接著多語義匹配方法 1 介紹基於bert模型實現文字匹配的方法。將其單獨介紹主要因為bert實現文字匹配操作方便且效果優秀,比較適用於工業應用場景。關於bert模型,devlin,j.chang,m.w.lee,k.toutanova,k.2018 2 在 中有較為...
嚴格匹配 perl的文字匹配提取
perl的正規表示式極其強大,對於文字處理很有優勢。下面這個例子展示在ic驗證中怎麼利用perl的正規表示式做匹配提取。在ic驗證中會寫大量的task function,對很複雜的系統進行 的時候,會大量呼叫task function,如果能夠在進出task function的時候在log中列印出進...