短文本相似度計算

2022-09-04 07:15:08 字數 1193 閱讀 2611

短文本的相似度計算方法可以分為兩大類:基於深度學習的方法和基於非深度學習的方法。科研方面基本都是從深度學習方面入手,但個人覺得想把單語言的短文本相似度計算給做出花來比較難,相對而言基於深度學習的跨語言相似度計算稍微好點。工程方面多半不用深度學習的方法,主要是獲取帶標記的語比較難的(除非公司花錢找人標)。下面我將結合自己做過的相似度計算的任務,從深度學習和非深度學習兩個角度說一下文字相似度計算。

首先來說一下基於深度學習的文字相似度計算。在開始表演之前請允許我說一下故事背景。我們要做乙個網路查詢推薦,即類似於圖1一樣:使用者輸入查詢內容,網頁給出一些合理的推薦(這些推薦可以是之前**日誌記錄下的之前使用者的查詢資訊)。為了從日誌之中選出與使用者查詢內容最貼切的推薦返回給使用者,我們需要計算使用者輸入的查詢內容q和候選推薦s(s=)的相似度,並根據相似度返回對應的推薦給使用者。

在上述任務中,我們利用siamese network(見圖2)計算文字相似度。考慮到候選推薦s會比較大且真實的語料比較短,我們使用cnn做siamese network的基本機構,這樣我們在提高速度的同時也能保證效能。使用cnn的乙個好處就是我們可以很好地共享兩個cnn的引數,為此,我們比較了三種情況下模型效能結果。一種是兩個cnn不共享引數;另種是兩個cnn共享部分引數;最後一種是兩個cnn全部共享引數。實驗的結果顯示,在同一種語言(查詢和推薦的屬於同一種語言)的情況下,兩個cnn共享的引數越多模型的效能越好,在不同語言(查詢和推薦屬於不同的語言)的情況下兩個cnn共享的引數越多模型的效能越差。

圖2 siamese network

比較二者差異的主要由查詢語言和候選推薦語言是否一致造成的。當兩者一致時,用語習慣相同,使用一套引數能更好的擬合他們的分布;但當兩者不一致時,二者的語言環境差異很大,用一套引數很難同時模型二者的分布。使用cnn做相似度計算還是很難獲得句子整體的語義資訊,使用膨脹cnn(idcnn)做siamese network的基本單元效果應該會更好。另外把兩個句子任意兩個詞語的相似度組成的矩陣當成是處理也可以很好地適用於查詢推薦的,且聽nlpcc會議上的老師介紹,在資料較少的情況下這種方法更加實用。

綜上,文字相似度的計算還是由不少難點需要我們去克服的,這些難點往往涉及底層的nlp知識,感覺任重而道遠。

Python短文本相似度比較

對python內建庫difflib和fuzzywuzzy進行比較 difflib 基於ratcliff obershelp演算法 格式塔模式匹配 fuzzywuzzy 基於萊文斯坦距離 需要安裝python levenshtein pip install python levenshtein pip...

計算文字相似度

計算文字相似度 推薦2收藏 簡單講解 文字相似度計算在資訊檢索 資料探勘 機器翻譯 文件複製檢測等領域有著廣泛的應用。比如 控制,我們假設你開發了乙個微博 並且已經把世界上罵人的句子都已經收錄進了資料庫,那麼當乙個使用者發微博時會先跟罵人句子的資料庫進行比較,如果符合裡面的句子就不讓使用者發出。通常...

文字相似度計算

一 簡介 文字相似度是進行文字聚類的基礎,和傳統的結構化數值資料的聚類方法相似,文字聚類是通過計算文字之間的 距離 來表示文字之間的相似度,並產生聚類。文字相似度的常用計算反法有餘弦定理。但是文字資料和普通的資料不同,它是一種半結構化的資料,在進行聚類之前必須要對文字資料來源進行處理,如分詞 向量化...