基于飛槳實(shí)現(xiàn)的特定領(lǐng)域知識(shí)圖譜融合方案:ERNIE-Gram文本匹配算法

文本匹配任務(wù)在自然語言處理領(lǐng)域中是非常重要的基礎(chǔ)任務(wù),一般用于研究?jī)啥挝谋局g的關(guān)系。文本匹配任務(wù)存在很多應(yīng)用場(chǎng)景,如信息檢索、問答系統(tǒng)、智能對(duì)話、文本鑒別、智能推薦、文本數(shù)據(jù)去重、文本相似度計(jì)算、自然語言推理、問答系統(tǒng)、信息檢索等,這些自然語言處理任務(wù)在很大程度上都可以抽象成文本匹配問題,比如信息檢索可以歸結(jié)為搜索詞和文檔資源的匹配,問答系統(tǒng)可以歸結(jié)為問題和候選答案的匹配,復(fù)述問題可以歸結(jié)為兩個(gè)同義句的匹配。
而在知識(shí)融合過程中的關(guān)鍵技術(shù)是實(shí)體對(duì)齊,又被稱為實(shí)體匹配,其旨在推斷來自不同數(shù)據(jù)集合中的不同實(shí)體是否映射到物理世界中同一對(duì)象的處理過程。實(shí)體對(duì)齊的終極目標(biāo)是將多源知識(shí)庫中的實(shí)體建立映射關(guān)系,也正因如此,文本匹配算法可以在知識(shí)融合過程中針對(duì)非結(jié)構(gòu)化文本進(jìn)行較好的語義對(duì)齊,建立映射關(guān)系,具體方案如下圖所示。

在粗選階段,我們需要根據(jù)知識(shí)庫尋找相似實(shí)體對(duì),通過精準(zhǔn)匹配和部分匹配的方式進(jìn)行實(shí)體簇的粗選。其中,精準(zhǔn)匹配主要采用同名召回、同音召回、別名召回三類策略。部分匹配主要采用jaccard距離等方法構(gòu)建倒排,根據(jù)閾值進(jìn)行挑選。
在精排階段,我們根據(jù)粗選出來的實(shí)體對(duì),構(gòu)建Pair-wise類特征,進(jìn)行精細(xì)算分。根據(jù)特征的種類,可以劃分為標(biāo)簽、屬性、非結(jié)構(gòu)化文本三類特征。在實(shí)際對(duì)齊任務(wù)中,頭尾部的實(shí)體經(jīng)常缺失各種關(guān)鍵屬性,難以判斷實(shí)體是否可以對(duì)齊,此時(shí)就利用非結(jié)構(gòu)化文本提供關(guān)鍵信息,這里就可以通過使用飛槳ERNIE-Gram模型將根據(jù)計(jì)算的三類特征進(jìn)行實(shí)體對(duì)齊。由于各領(lǐng)域的schema不同,涉及到的屬性類特征也不盡相同。故根據(jù)對(duì)數(shù)據(jù)的分析,為schema相差較大的領(lǐng)域設(shè)計(jì)不同的GBDT模型,最終完成對(duì)齊。本文主要講解精排階段的文本匹配算法,更多方案和技術(shù)細(xì)節(jié)請(qǐng)參考下述項(xiàng)目。
項(xiàng)目鏈接:https://aistudio.baidu.com/aistudio/projectdetail/5456683?channelType=0&channel=0
項(xiàng)目合集:https://aistudio.baidu.com/aistudio/projectdetail/5427356?contributionType=1
01 融合方案操作步驟
PART1 環(huán)境版本要求
環(huán)境安裝需根據(jù)Python和飛槳框架的版本要求進(jìn)行選擇。
Python3版本要求:python3.7及以上版本,參考https://www.python.org/?
飛槳框架版本要求:飛槳框架2.0+版本,參考https://www.paddlepaddle.org.cn/documentation/docs/zh/install/pip/macos-pip.html
飛槳環(huán)境的安裝:需首先保證Python和pip是64bit,且處理器架構(gòu)為x86_64(或稱作x64、Intel 64、AMD64)。目前飛槳暫不支持arm64架構(gòu)(mac M1除外,飛槳已支持Mac M1 芯片)。
PART2 數(shù)據(jù)集簡(jiǎn)介
LCQMC[1]是百度知道領(lǐng)域的中文問題匹配數(shù)據(jù)集,以解決中文領(lǐng)域大規(guī)模問題匹配。該數(shù)據(jù)集從百度知道的不同領(lǐng)域用戶問題中抽取構(gòu)建數(shù)據(jù)。部分?jǐn)?shù)據(jù)集展示如下:
西安下雪了?是不是很冷啊? ? ?西安的天氣怎么樣???還在下雪嗎?? ?0
第一次去見女朋友父母該如何表現(xiàn)?? ?第一次去見家長(zhǎng)該怎么做 ? ?0
豬的護(hù)心肉怎么切 ? ?豬的護(hù)心肉怎么吃 ? ?0
顯卡驅(qū)動(dòng)安裝不了,為什么?? ?顯卡驅(qū)動(dòng)安裝不了怎么回事 ? ?1
一只蜜蜂落在日歷上(打一成語) ? ?一只蜜蜂停在日歷上(猜一成語) ? ?1
PART3 模型情況
在ERNIE-Gram模型[2]發(fā)布以前,學(xué)界工作主要集中在將BERT的掩碼語言建模(MLM)的目標(biāo)從Mask單個(gè)標(biāo)記擴(kuò)展到N個(gè)標(biāo)記的連續(xù)序列,但這種連續(xù)屏蔽方法忽略了對(duì)粗粒度語言信息的內(nèi)部依賴性和相互關(guān)系的建模。作為一種改進(jìn)方法ERNIE-Gram采用了一種顯式n-gram掩碼方法,以加強(qiáng)對(duì)預(yù)訓(xùn)練中粗粒度信息的整合。在ERNIE-Gram中,n-grams被Mask并直接使用明確的n-gram序列號(hào)而不是n個(gè)標(biāo)記的連續(xù)序列進(jìn)行預(yù)測(cè)。此外,ERNIE-Gram采用了一個(gè)生成器模型,對(duì)可信的n-gram序列號(hào)進(jìn)行采樣,作為可選的n-gram掩碼,并以粗粒度和細(xì)粒度的方式進(jìn)行預(yù)測(cè),以實(shí)現(xiàn)全面的n-gram預(yù)測(cè)和關(guān)系建模。在論文中實(shí)驗(yàn)表明,ERNIE-Gram在很大程度上優(yōu)于XLNet和RoBERTa等預(yù)訓(xùn)練模型。其中掩碼的流程見下圖所示。

ERNIE-Gram模型充分地將粗粒度語言信息納入預(yù)訓(xùn)練,進(jìn)行了全面的n-gram預(yù)測(cè)和關(guān)系建模,消除之前連續(xù)掩蔽策略的局限性,進(jìn)一步增強(qiáng)了語義n-gram的學(xué)習(xí)。n-gram關(guān)系建模的詳細(xì)架構(gòu)如下圖所示,子圖(b)中是一個(gè)n-gram抽樣的例子,其中虛線框代表抽樣模塊,綠色的文本是原始n-gram,藍(lán)色的斜體文本是抽樣的n-gram。本文不一一展開,更多算法原理和技術(shù)細(xì)節(jié)請(qǐng)參考原論文。

為讓同學(xué)們快速上手,本項(xiàng)目使用語義匹配數(shù)據(jù)集LCQMC作為訓(xùn)練集,基于ERNIE-Gram預(yù)訓(xùn)練模型訓(xùn)練了單塔Point-wise語義匹配模型,用戶可以直接基于這個(gè)模型對(duì)文本對(duì)進(jìn)行語義匹配的二分類任務(wù)。(在文本匹配任務(wù)數(shù)據(jù)的每一個(gè)樣本通常由兩個(gè)文本組成query和title。類別形式為0或1,0表示query與title不匹配,1表示匹配。)同時(shí)考慮到在不同應(yīng)用場(chǎng)景下的需求,下面也將簡(jiǎn)單講解一下不同類型的語義匹配模型和應(yīng)用場(chǎng)景。


基于單塔Point-wise范式的語義匹配模型Ernie_Matching模型精度高、計(jì)算復(fù)雜度高, 適合直接進(jìn)行語義匹配二分類的應(yīng)用場(chǎng)景?;趩嗡air-wise范式的語義匹配模型Ernie_Matching模型精度高、計(jì)算復(fù)雜度高,對(duì)文本相似度大小的序關(guān)系建模能力更強(qiáng),適合將相似度特征作為上層排序模塊輸入特征的應(yīng)用場(chǎng)景?;陔p塔Point-Wise范式的語義匹配模型計(jì)算效率更高,適合對(duì)延時(shí)要求高、根據(jù)語義相似度進(jìn)行粗排的應(yīng)用場(chǎng)景。
PART4 模型訓(xùn)練與預(yù)測(cè)
以中文文本匹配公開數(shù)據(jù)集LCQMC為示例數(shù)據(jù)集,可在訓(xùn)練集(train.tsv)上進(jìn)行單塔 Point-wise 模型訓(xùn)練,并在開發(fā)集(dev.tsv)驗(yàn)證。
模型訓(xùn)練


預(yù)測(cè)結(jié)果部分展示。

如果想要使用其他預(yù)訓(xùn)練模型如ERNIE、BERT、RoBERTa等,只需更換model和tokenizer即可。

NOTE:如需恢復(fù)模型訓(xùn)練,則可以設(shè)置init_from_ckpt,如
init_from_ckpt=checkpoints/model_100/model_state.pdparams。如需使用ernie-tiny模型,則需提前先安裝sentencepiece依賴,如pip install sentencepiece。
模型預(yù)測(cè)


在深度學(xué)習(xí)模型構(gòu)建上,飛槳框架支持動(dòng)態(tài)圖編程和靜態(tài)圖編程兩種方式,兩種方式下代碼編寫和執(zhí)行方式均存在差異。動(dòng)態(tài)圖編程體驗(yàn)更佳、更易調(diào)試,但是因?yàn)椴捎肞ython實(shí)時(shí)執(zhí)行的方式,開銷較大,在性能方面與 C++ 有一定差距。靜態(tài)圖調(diào)試難度大,但是將前端Python編寫的神經(jīng)網(wǎng)絡(luò)預(yù)定義為Program描述,轉(zhuǎn)到C++端重新解析執(zhí)行,從而脫離了對(duì)Python的依賴,往往執(zhí)行性能更佳,并且預(yù)先擁有完整網(wǎng)絡(luò)結(jié)構(gòu)也更利于全局優(yōu)化。同時(shí),你可以進(jìn)行基于靜態(tài)圖的部署預(yù)測(cè)和模型導(dǎo)出。使用動(dòng)態(tài)圖訓(xùn)練結(jié)束之后,可以使用靜態(tài)圖導(dǎo)出工具export_model.py將動(dòng)態(tài)圖參數(shù)導(dǎo)出成靜態(tài)圖參數(shù)。實(shí)現(xiàn)方式可參考如下指令:


02 結(jié)論
PART 1項(xiàng)目小結(jié)
該項(xiàng)目中還涉及部分對(duì)無監(jiān)督模型以及有監(jiān)督模型的對(duì)比內(nèi)容,如下圖所示。

結(jié)論如下:
SimCSE模型適合缺乏監(jiān)督數(shù)據(jù),但是又有大量無監(jiān)督數(shù)據(jù)的匹配和檢索場(chǎng)景。
相比于SimCSE模型,DiffCSE模型會(huì)更關(guān)注語句之間的差異性,具有精確的向量表示能力。DiffCSE模型同樣適合缺乏監(jiān)督數(shù)據(jù)又有大量無監(jiān)督數(shù)據(jù)的匹配和檢索場(chǎng)景。
明顯看到有監(jiān)督模型中ERNIE-Gram比之前所有模型性能的優(yōu)秀。
受篇幅限制影響,這里不詳細(xì)展開模型的對(duì)比詳情,感興趣的同學(xué)可以點(diǎn)擊下方鏈接詳細(xì)了解。同時(shí)歡迎同學(xué)們?cè)陲w槳AI Studio平臺(tái)發(fā)揮自己的創(chuàng)造力和想象力。
項(xiàng)目鏈接:https://aistudio.baidu.com/aistudio/projectdetail/5456683?channelType=0&channel=0
項(xiàng)目合集:https://aistudio.baidu.com/aistudio/projectdetail/5427356?contributionType=1
PART2 未來展望
本項(xiàng)目主要圍繞著特定領(lǐng)域知識(shí)圖譜(Domain-specific Knowledge Graph,DKG)融合方案中的一環(huán)講解了基于ERNIE-Garm的文本匹配算法。希望看到這篇項(xiàng)目的開發(fā)者們,能夠在此基礎(chǔ)上共同努力共建知識(shí)圖譜領(lǐng)域,走通知識(shí)抽取、知識(shí)融合、知識(shí)推理和質(zhì)量評(píng)估的完整流程。
參考文獻(xiàn)
[1] Xin Liu, Qingcai Chen, Chong Deng, Huajun Zeng, Jing Chen, Dongfang Li, Buzhou Tang, LCQMC: A Large-scale Chinese Question Matching Corpus,COLING2018.
[2] Xiao, Dongling, Yu-Kun Li, Han Zhang, Yu Sun, Hao Tian, Hua Wu, and Haifeng Wang. “ERNIE-Gram: Pre-Training with Explicitly N-Gram Masked Language Modeling for Natural Language Understanding.”ArXiv:2010.12148 [Cs].