向AI轉型的程式設計師都關注了這個號👇👇👇
機器學習AI算法工程 公眾號: datayx
句子相似度計算,即給定客服裡用戶描述的兩句話,用算法來判斷是否表示了相同的語義。
今年和去年前後相繼出現了多個關於句子相似度判定的比賽,即得定兩個句子,用算法判斷是否表示了相同的語義或者意思。其中第4、5這個2個比賽數據集格式比較像,2、3 的數據集格式比較像,本倉庫基於2、3數據集做實驗
下面是比賽的列表:
https://www.kaggle.com/c/quora-question-pairs
The goal of this competition is to predict which of the provided pairs of questions contain two questions with the same meaning.
數據集未經過脫敏處理,用真實的英文單詞標識
https://dc.cloud.alipay.com/index#/topic/intro?id=8
問題相似度計算,即給定客服裡用戶描述的兩句話,用算法來判斷是否表示了相同的語義。
數據集未經過脫敏處理 示例:
「花唄如何還款」 --「花唄怎麼還款」:同義問句
「花唄如何還款」 -- 「我怎麼還我的花被呢」:同義問句
「花唄分期後逾期了如何還款」-- 「花唄分期後逾期了哪裡還款」:非同義問句 對於例子a,比較簡單的方法就可以判定同義;對於例子b,包含了錯別字、同義詞、詞序變換等問題,兩個句子乍一看並不類似,想正確判斷比較有挑戰;對於例子c,兩句> 話很類似,僅僅有一處細微的差別 「如何」和「哪裡」,就導致語義不一致。"""
https://biendata.com/competition/CCKS2018_3/leaderboard/
與基於Quora的的的語義等價判別相同,本次評測任務的主要目標是針對中文的真實客服語料,進行問句意圖匹配。集給定兩個語句,要求判定兩者意圖是否相同或者相近。所有語料來自原始的銀行領域智能客服日誌,並經過了篩選和人工的意圖匹配標註。
數據集經過脫敏處理 輸入:一般幾天能通過審核\ t一般審核通過要多久 輸出:1
https://biendata.com/competition/chip2018/
本次評測任務的主要目標是針對中文的真實患者健康諮詢語料,進行問句意圖匹配。給定兩個語句,要求判定兩者意圖是否相同或者相近。所有語料來自網際網路上患者真實> 的問題,並經過了篩選和人工的意圖匹配標註。平安雲將為報名的隊伍提供GPU的訓練環境。
數據集經過脫敏處理,問題由數字標示 訓練集包含20000條左右標註好的數據(經過脫敏處理,包含標點符號),供參賽人員進行訓練和測試。 測試集包含10000條左右無label的數據(經過脫敏處理,包含標點> 符號)。選手需要對測試集數據的label進行預測並提交。測試集數據作為AB榜的評測依據。
智能客服聊天機器人場景中,待客戶提出問題後,往往需要先計算客戶提出問題與知識庫問題的相似度,進而定位最相似問題,再對問題給出答案。本次比賽的題目便是問 > 題相似度算法設計。
數據集經過脫敏處理,問題由數字標示 為保護用戶隱私並保證比賽的公平公正,所有原始文本信息都被編碼成單字ID序列和詞語ID序列。單字包含單個漢字、英文字母、標點及空格等;詞語包含切詞後的中> 文詞語、英文單詞、標點及空格等。單字ID和詞語ID存在於兩個不同的命名空間,即詞語中的單字詞或者標點,和單字中的相同字符及相同標點不一定有同一個ID。其> > 中,單字序列以L開頭,詞語序列以W開頭。
這篇文章想發散開來講,從傳統方法到深度模型,結合賽題的數據特點對文本相似性匹配的方法做一個梳理。以及針對比賽中的技巧做一個總結。
Quora給的題就給定兩個quora中的提問。提問數據是類似知乎上的提問標題,判斷兩個問題是不是一個問題。比如:A.如何學習NLP? B.怎樣學習自然語言處理?這就明顯是一個問題。這個題屬於NLP中的文本相似性匹配,由於quora構建數據的方式存在圖的特徵,後來發現其圖模型方面也值得研究。以下部分圖片來自於Quora第四名YesOfCourse團隊的ppt。
文本相似性/相關性度量是NLP和信息檢索中非常基礎的任務,在搜尋引擎,QA系統中有舉足輕重的地位,一般的文本相似性匹配,從大的方法來講,傳統方法和深度學習方法。
特徵工程方法傳統方法不外乎各種角度的特徵工程,我把常用的特徵羅列如下,比如
編輯距離(Edit Distance),又稱Levenshtein距離,是指兩個字串之間,由一個轉成另一個所需的最少編輯操作次數。許可的編輯操作包括將一個字符替換成另一個字符,插入一個字符,刪除一個字符。一般來說,編輯距離越小,兩個串的相似度越大。深度模型有兩種思路,一種是基於表示,一種是基於交互。不過基於交互的模型大多也是先要拿到文本表示,從文本表示構建交互,從交互到特徵抽取的思路。其基本的模型如下所示
這是一個非常直觀的思路,最後一層的matching score建模方法甚至可以用一個簡單的FC代替,或者做一次element-wise 乘之後接FC。下面有在IR中用表示方法做這個問題的幾篇論文。
DSSM: LearningDeep Structured Semantic Models for
WebSearchusing Click-through Data (Huanget al., CIKM』13)
CDSSM: Alatentsemanticmodelwith convolutional- poolingstructureforinformationretrieval (ShenY,HeX, Gao J,etal.CIKM』14)
ARC I: ConvolutionalNeural NetworkArchitecturesfor MatchingNaturalLanguageSentences(Huet al., NIPS』14)
LSTM-RNN:Deep Sentence Embedding Using the Long Short Term MemoryNetwork:Analysis and Application toInformation Retrieval (Palangietal.,TASLP』2016)
基於交互的方法是通過Interaction來對文本相似性建模,其模型基本的原理是。
有一篇非常有意思的文章Text Matching as Image Recognition. (Liang Pang, Yanyan Lan, Jiafeng Guo, Jun Xu, and Xueqi Cheng. AAAI 2016)這也是龐亮學長在AAAI 2016上的工作,所以他們打這個比賽,完全就是把中科院的模型拉出來遛遛。這個模型也很直覺,就是把兩個文本的相似性建模成一張圖片,再用CNN做特徵抽取器。
拿到每個詞的embedding。 (embedding)
構建兩個文本的相似矩陣。 (Interaction)
把相似矩陣放入兩層CNN中。 (Feature extract)
把CNN的結果放入兩層的全連接中。 (FC)
獲得二分類的score。 (distribution)
後來的一些工作都大同小異,比如不直接使用詞向量,利用RNN的隱層向量去構建交互等等。具體的文章如下,感興趣的同學可以看一下。
DeepMatch: A Deep Architecture for Matching Short Texts (Lu and Li, NIPS』13)
ARC II: Convolutional Neural Network Architectures for Matching Natural Language Sentences (Hu et al., NIPS』14)
MatchPyramid: Text Matching as Image Recognition. (Liang Pang, Yanyan Lan, Jiafeng Guo, Jun Xu, and Xueqi Cheng. AAAI 2016)
Match-SRNN: Modeling the Recursive Matching Structure with Spatial RNN. (Shengxian Wan, Yanyan Lan, Jiafeng Guo, Jun Xu, and Xueqi Cheng. IJCAI 2016)
下面回到這個比賽中,具體結合數據談一談。
在比賽中發現,訓練集和測試集的正負樣本比有明顯差異,分布上的差異最後體現在logloss指標上的gap,在比賽中大家推導出一個後處理的公式,然後可以拉平分布帶來的分數異動。使用貝葉斯公司能推導出這個後處理,前提是可以測出分布的情況下。有論文對這個做了詳細的講解。"Adjusting the Outputs of a Classifier to New a Priori Probabilities: A SimpleProcedure
https://pdfs.semanticscholar.org/d6d2/2681ee7e40a1817d03c730d5c2098ef031ae.pdf
比賽中一些預處理方法有
top1 -top 5 詳細解決方案獲取方式:
關注微信公眾號 datayx 然後回復 文本相似性 即可獲取。
不得不提的是,這個比賽中有一個非常關鍵的leak信息。一個問題如果出現頻繁的話,就很可能是一個重複的問題。後來發現前幾名在這個leak上做了很多文章,取得了非常好的效果。後來CPMP給的解釋是:
A question that is asked often has more chances to be redundant. Thanks for sharing.以第一名的解法為例,他的特徵工程中含有大量的來自圖的Structural features 。我感覺這部分也是最關鍵的。第一名的解法有300多個模型做了stacking。簡直爆炸。
第四名HouJP學長的,亮點就是深度模型的分數很高,不愧是中科院IR大佬。
第五名的解法也是在圖的建模上挖掘了大量的特徵。
第七名亮點就是這個人比較懶,花了大量的時間在深度模型上。和第一名都用了一個叫 decomposable attention 的東西。
後來總結一下這個賽題,由於基於圖的特徵的存在,使得這部分的特徵工程尤為重要,這也是我們做的不好的地方。前幾名在圖上都做了充分的挖掘,體現了強大的特徵工程能力。不過這部分東西,單純的文本相似性/相關性的工作沒什麼貢獻,如果抱著研究目的的同學可以忽略這部分。
由於這是我參加的第一次比賽,所以印象十分深刻。學到了一些對比賽使用的流程性的東西,體會到pipeline的重要性,不過教訓也很多,也算一種成長吧。
https://zhuanlan.zhihu.com/p/35093355
閱讀過本文的人還看了以下:
《21個項目玩轉深度學習:基於TensorFlow的實踐詳解》完整版PDF+附書代碼
將機器學習模型部署為REST API
FashionAI服裝屬性標籤圖像識別Top1-5方案分享
重要開源!CNN-RNN-CTC 實現手寫漢字識別
yolo3 檢測出圖像中的不規則漢字
同樣是機器學習算法工程師,你的面試為什麼過不了?
前海徵信大數據算法:風險概率預測
【Keras】完整實現『交通標誌』分類、『票據』分類兩個項目,讓你掌握深度學習圖像分類
VGG16遷移學習,實現醫學圖像識別分類工程項目
特徵工程(一)
特徵工程(二) :文本數據的展開、過濾和分塊
特徵工程(三):特徵縮放,從詞袋到 TF-IDF
特徵工程(四): 類別特徵
特徵工程(五): PCA 降維
特徵工程(六): 非線性特徵提取和模型堆疊
特徵工程(七):圖像特徵提取和深度學習
如何利用全新的決策樹集成級聯結構gcForest做特徵工程並打分?
Machine Learning Yearning 中文翻譯稿
螞蟻金服2018秋招-算法工程師(共四面)通過
全球AI挑戰-場景分類的比賽源碼(多模型融合)
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(列印收藏)
python+flask搭建CNN在線識別手寫中文網站
中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學習與特徵工程
不斷更新資源
深度學習、機器學習、數據分析、python
搜索公眾號添加: datayx
長按圖片,識別二維碼,點關注