最新中文NLP開源工具箱來了!支持6大任務(wù),面向工業(yè)應(yīng)用 | 資源
包括文本分類、文本匹配、序列標(biāo)注、文本生成、語義表示與語言模型和其他復(fù)雜任務(wù)等。
銅靈 發(fā)自 凹非寺
量子位 出品 | 公眾號 QbitAI
對于開發(fā)者來說,又有一個新的NLP工具箱可以使用了,代號PaddleNLP,目前已開源。
在這個基于百度深度學(xué)習(xí)平臺飛槳(PaddlePaddle)開發(fā)的工具箱里,裝有大量工業(yè)級中文NLP開源工具與預(yù)訓(xùn)練模型。
這個工具箱里的工具全面,共支持的6大NLP任務(wù),包括文本分類、文本匹配、序列標(biāo)注、文本生成、語義表示與語言模型和其他復(fù)雜任務(wù)等。
除了全面,PaddleNLP的效果也還不錯。比如基于百度海量搜索數(shù)據(jù),PaddleNLP訓(xùn)練了的語義匹配模型在真實(shí)FAQ問答場景中,比基于字面的相似度方法AUC提升5%以上。
無論你在聊天機(jī)器人、智能客服、新聞推薦、信息檢索、閱讀理解還是機(jī)器翻譯等場景,PaddleNLP都能一次性滿足你的需求。
飛槳表示,手握PaddleNLP,就能將NLP領(lǐng)域的多種模型用一套共享骨架代碼實(shí)現(xiàn),減少開發(fā)者在開發(fā)過程中的重復(fù)工作。能方便開發(fā)者靈活插拔嘗試多種網(wǎng)絡(luò)結(jié)構(gòu),并且讓應(yīng)用最快速達(dá)到工業(yè)級效果。
具體來看用法。
1、文本分類
文本情感分析
情感是人類的一種高級智能行為,為了識別文本的情感傾向,需要深入的語義建模。另外,不同領(lǐng)域(如餐飲、體育)在情感的表達(dá)各不相同,因而需要有大規(guī)模覆蓋各個領(lǐng)域的數(shù)據(jù)進(jìn)行模型訓(xùn)練。為此,可以通過基于深度學(xué)習(xí)的語義模型和大規(guī)模數(shù)據(jù)挖掘解決上述兩個問題。
百度研發(fā)的中文特色情感傾向分析模型(Sentiment Classification,簡稱Senta)針對帶有主觀描述的中文文本,可自動判斷該文本的情感極性類別并給出相應(yīng)的置信度。
情感類型分為積極、消極。情感傾向分析能夠幫助企業(yè)理解用戶消費(fèi)習(xí)慣、分析熱點(diǎn)話題和危機(jī)輿情監(jiān)控,為企業(yè)提供有利的決策支持。
基于開源情感傾向分類數(shù)據(jù)集ChnSentiCorp評測結(jié)果如下表所示,此外,PaddleNLP還開源了百度基于海量數(shù)據(jù)訓(xùn)練好的模型,該模型在ChnSentiCorp數(shù)據(jù)集上fine-tune之后(基于開源模型進(jìn)行Finetune的方法詳見Github),可以得到更好的效果。
- BOW(Bag Of Words)模型,是一個非序列模型,使用基本的全連接結(jié)構(gòu)。
- CNN(Convolutional Neural Networks),是一個基礎(chǔ)的序列模型,能處理變長序列輸入,提取局部區(qū)域之內(nèi)的特征。
- GRU(Gated Recurrent Unit),序列模型,能夠較好地解決序列文本中長距離依賴的問題。
- LSTM(Long Short Term Memory),序列模型,能夠較好地解決序列文本中長距離依賴的問題。
- BI-LSTM(Bidirectional Long Short Term Memory),序列模型,采用雙向LSTM結(jié)構(gòu),更好地捕獲句子中的語義特征。
- ERNIE(Enhanced Representation through kNowledge IntEgration),百度自研基于海量數(shù)據(jù)和先驗(yàn)知識訓(xùn)練的通用文本語義表示模型,并基于此在情感傾向分類數(shù)據(jù)集上進(jìn)行fine-tune獲得。
- ERNIE+BI-LSTM,基于ERNIE語義表示對接上層BI-LSTM模型,并基于此在情感傾向分類數(shù)據(jù)集上進(jìn)行Fine-tune獲得。
項(xiàng)目地址:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/sentiment_classification
對話情緒識別
對話情緒識別適用于聊天、客服等多個場景,能夠幫助企業(yè)更好地把握對話質(zhì)量、改善產(chǎn)品的用戶交互體驗(yàn),也能分析客服服務(wù)質(zhì)量、降低人工質(zhì)檢成本。
對話情緒識別(Emotion Detection,簡稱EmoTect),專注于識別智能對話場景中用戶的情緒,針對智能對話場景中的用戶文本,自動判斷該文本的情緒類別并給出相應(yīng)的置信度,情緒類型分為積極、消極、中性。
基于百度自建測試集(包含閑聊、客服)和nlpcc2014微博情緒數(shù)據(jù)集評測效果如下表所示,此外,PaddleNLP還開源了百度基于海量數(shù)據(jù)訓(xùn)練好的模型,該模型在聊天對話語料上fine-tune之后,可以得到更好的效果。
- BOW:Bag Of Words,是一個非序列模型,使用基本的全連接結(jié)構(gòu)。
- CNN:淺層CNN模型,能夠處理變長的序列輸入,提取一個局部區(qū)域之內(nèi)的特征。
- TextCNN:多卷積核CNN模型,能夠更好地捕捉句子局部相關(guān)性。
- LSTM:單層LSTM模型,能夠較好地解決序列文本中長距離依賴的問題。
- BI-LSTM:雙向單層LSTM模型,采用雙向LSTM結(jié)構(gòu),更好地捕獲句子中的語義特征。
- ERNIE:百度自研基于海量數(shù)據(jù)和先驗(yàn)知識訓(xùn)練的通用文本語義表示模型,并基于此在對話情緒分類數(shù)據(jù)集上進(jìn)行fine-tune獲得。
項(xiàng)目地址:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/emotion_detection
2、文本匹配
短文本語義匹配
百度自主研發(fā)的短文本語義匹配語義匹配框架(SimilarityNet, SimNet)是一個計(jì)算短文本相似度的框架,可以根據(jù)用戶輸入的兩個文本,計(jì)算出相似度得分。
SimNet 在語義表示上沿襲了隱式連續(xù)向量表示的方式,但對語義匹配問題在深度學(xué)習(xí)框架下進(jìn)行了 End-to-End 的建模,將point-wise與 pair-wise兩種有監(jiān)督學(xué)習(xí)方式全部統(tǒng)一在一個整體框架內(nèi)。
在實(shí)際應(yīng)用場景下,將海量的用戶點(diǎn)擊行為數(shù)據(jù)轉(zhuǎn)化為大規(guī)模的弱標(biāo)記數(shù)據(jù),在網(wǎng)頁搜索任務(wù)上的初次使用即展現(xiàn)出極大威力,帶來了相關(guān)性的提升。
SimNet框架在百度各產(chǎn)品上廣泛應(yīng)用,主要包括BOW、CNN、RNN、MMDNN等核心網(wǎng)絡(luò)結(jié)構(gòu)形式,提供語義相似度計(jì)算訓(xùn)練和預(yù)測框架,適用于信息檢索、新聞推薦、智能客服等多個應(yīng)用場景,幫助企業(yè)解決語義匹配問題。
基于百度海量搜索數(shù)據(jù),PaddleNLP訓(xùn)練了一個SimNet-BOW-Pairwise語義匹配模型,在一些真實(shí)的FAQ問答場景中,該模型效果比基于字面的相似度方法AUC提升5%以上。
基于百度自建測試集(包含聊天、客服等數(shù)據(jù)集)和語義匹配數(shù)據(jù)集(LCQMC)進(jìn)行評測,效果如下表所示。
LCQMC數(shù)據(jù)集以Accuracy為評測指標(biāo),而pairwise模型的輸出為相似度,因此采用0.958作為分類閾值,相比于基線模型中網(wǎng)絡(luò)結(jié)構(gòu)同等復(fù)雜的CBOW模型(準(zhǔn)確率為0.737),BOW_Pairwise的準(zhǔn)確率提升為0.7532。
項(xiàng)目地址:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/similarity_net
3、序列標(biāo)注
詞法分析
百度自主研發(fā)中文特色模型詞法分析任務(wù)(Lexical Analysis of Chinese),輸入是一個字符串,而輸出是句子中的詞邊界和詞性、實(shí)體類別。
序列標(biāo)注是詞法分析的經(jīng)典建模方式。LAC使用基于 GRU 的網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí)特征,將學(xué)習(xí)到的特征接入 CRF 解碼層完成序列標(biāo)注。
CRF解碼層本質(zhì)上是將傳統(tǒng) CRF 中的線性模型換成了非線性神經(jīng)網(wǎng)絡(luò),基于句子級別的似然概率,因而能夠更好的解決標(biāo)記偏置問題。LAC能整體性地完成中文分詞、詞性標(biāo)注、專名識別任務(wù)。
基于自建的數(shù)據(jù)集上對分詞、詞性標(biāo)注、專名識別進(jìn)行整體的評估效果,效果如下表所示。此外,在飛槳開放的語義表示模型 ERNIE 上 finetune,并對比基線模型、BERT finetuned 和 ERNIE finetuned 的效果,可以看出會有顯著的提升。
項(xiàng)目地址:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/lexical_analysis
4、文本生成
機(jī)器翻譯
機(jī)器翻譯(machine translation, MT)是利用計(jì)算機(jī)將一種自然語言(源語言)轉(zhuǎn)換為另一種自然語言(目標(biāo)語言)的過程,輸入為源語言句子,輸出為相應(yīng)的目標(biāo)語言的句子。
Transformer 是論文 「Attention Is All You Need 」中提出的用以完成機(jī)器翻譯(machine translation, MT)等序列到序列(sequence to sequence, Seq2Seq)學(xué)習(xí)任務(wù)的一種全新網(wǎng)絡(luò)結(jié)構(gòu)。
其同樣使用了 Seq2Seq 任務(wù)中典型的編碼器-解碼器(Encoder-Decoder)的框架結(jié)構(gòu),但相較于此前廣泛使用的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN),其完全使用注意力(Attention)機(jī)制來實(shí)現(xiàn)序列到序列的建模。
基于公開的 WMT’16 EN-DE 數(shù)據(jù)集訓(xùn)練 Base、Big 兩種配置的Transformer 模型后,在相應(yīng)的測試集上進(jìn)行評測,效果如下表所示。
項(xiàng)目地址:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/neural_machine_translation/transformer
5、語義表示與語言模型
語言表示工具箱
BERT 是一個遷移能力很強(qiáng)的通用語義表示模型, 以 Transformer 為網(wǎng)絡(luò)基本組件,以雙向 Masked Language Model和 Next Sentence Prediction 為訓(xùn)練目標(biāo),通過預(yù)訓(xùn)練得到通用語義表示,再結(jié)合簡單的輸出層,應(yīng)用到下游的 NLP 任務(wù),在多個任務(wù)上取得了 SOTA 的結(jié)果。
ELMo(Embeddings from Language Models) 是重要的通用語義表示模型之一,以雙向 LSTM 為網(wǎng)路基本組件,以 Language Model 為訓(xùn)練目標(biāo),通過預(yù)訓(xùn)練得到通用的語義表示,將通用的語義表示作為 Feature 遷移到下游 NLP 任務(wù)中,會顯著提升下游任務(wù)的模型性能。
PaddleNLP發(fā)布了基于百科類數(shù)據(jù)訓(xùn)練的預(yù)訓(xùn)練模型。
百度自研的語義表示模型ERNIE 通過建模海量數(shù)據(jù)中的詞、實(shí)體及實(shí)體關(guān)系,學(xué)習(xí)真實(shí)世界的語義知識。相較于 BERT 學(xué)習(xí)原始語言信號,ERNIE直接對先驗(yàn)語義知識單元進(jìn)行建模,增強(qiáng)了模型語義表示能力。
這里舉個例子:
Learnt by BERT :哈 [mask] 濱是 [mask] 龍江的省會,[mask] 際冰 [mask] 文化名城。
Learnt by ERNIE:[mask] [mask] [mask] 是黑龍江的省會,國際 [mask] [mask] 文化名城。
在 BERT 模型中,我們通過『哈』與『濱』的局部共現(xiàn),即可判斷出『爾』字,模型沒有學(xué)習(xí)與『哈爾濱』相關(guān)的任何知識。而 ERNIE 通過學(xué)習(xí)詞與實(shí)體的表達(dá),使模型能夠建模出『哈爾濱』與『黑龍江』的關(guān)系,學(xué)到『哈爾濱』是 『黑龍江』的省會以及『哈爾濱』是個冰雪城市。
訓(xùn)練數(shù)據(jù)方面,除百科類、資訊類中文語料外,ERNIE 還引入了論壇對話類數(shù)據(jù),利用 DLM(Dialogue Language Model)建模 Query-Response 對話結(jié)構(gòu),將對話 Pair 對作為輸入,引入 Dialogue Embedding 標(biāo)識對話的角色,利用 Dialogue Response Loss 學(xué)習(xí)對話的隱式關(guān)系,進(jìn)一步提升模型的語義表示能力。
ERNIE在自然語言推斷,語義相似度,命名實(shí)體識別,情感分析,問答匹配多項(xiàng)NLP中文任務(wù)上效果領(lǐng)先。
項(xiàng)目地址:
https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE
https://github.com/PaddlePaddle/LARK/tree/develop/BERT
https://github.com/PaddlePaddle/LARK/tree/develop/ELMo
語言模型
基于LSTM的語言模型任務(wù)是給定一個輸入詞序列(中文分詞、英文tokenize),計(jì)算其PPL(語言模型困惑度,用戶表示句子的流利程度),基于循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型的介紹可以參閱論文「Recurrent Neural Network Regularization」。
相對于傳統(tǒng)的方法,基于循環(huán)神經(jīng)網(wǎng)絡(luò)的方法能夠更好的解決稀疏詞的問題。此任務(wù)采用了序列任務(wù)常用的RNN網(wǎng)絡(luò),實(shí)現(xiàn)了一個兩層的LSTM網(wǎng)絡(luò),然后LSTM的結(jié)果去預(yù)測下一個詞出現(xiàn)的概率。
在small、meidum、large三個不同配置情況的ppl對比如下表所示。
項(xiàng)目地址:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/language_model
6、復(fù)雜任務(wù)
對話模型工具箱
Auto Dialogue Evaluation
對話自動評估模塊主要用于評估開放領(lǐng)域?qū)υ捪到y(tǒng)的回復(fù)質(zhì)量,能夠幫助企業(yè)或個人快速評估對話系統(tǒng)的回復(fù)質(zhì)量,減少人工評估成本。
1)在無標(biāo)注數(shù)據(jù)的情況下,利用負(fù)采樣訓(xùn)練匹配模型作為評估工具,實(shí)現(xiàn)對多個對話系統(tǒng)回復(fù)質(zhì)量排序;
2)利用少量標(biāo)注數(shù)據(jù)(特定對話系統(tǒng)或場景的人工打分),在匹配模型基礎(chǔ)上進(jìn)行微調(diào),可以顯著提高該對話系統(tǒng)或場景的評估效果。
以四個不同的對話系統(tǒng)(seq2seq_naive/seq2seq_att/keywords/human)為例,使用對話自動評估工具進(jìn)行自動評估。
1)無標(biāo)注數(shù)據(jù)情況下,直接使用預(yù)訓(xùn)練好的評估工具進(jìn)行評估; 在四個對話系統(tǒng)上,自動評估打分和人工評估打分spearman相關(guān)系數(shù),如下表所示。
2)對四個系統(tǒng)平均得分排序:
3)利用少量標(biāo)注數(shù)據(jù)微調(diào)后,自動評估打分和人工打分spearman相關(guān)系數(shù),如下表所示。
項(xiàng)目地址:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/dialogue_model_toolkit/auto_dialogue_evaluation
Deep Attention Matching Network
深度注意力機(jī)制模型是開放領(lǐng)域多輪對話匹配模型。根據(jù)多輪對話歷史和候選回復(fù)內(nèi)容,排序出最合適的回復(fù)。
多輪對話匹配任務(wù)輸入是多輪對話歷史和候選回復(fù),輸出是回復(fù)匹配得分,根據(jù)匹配得分排序,更多內(nèi)容請參閱論文Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network。
兩個公開數(shù)據(jù)集上評測效果如下表所示。
項(xiàng)目地址:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/dialogue_model_toolkit/deep_attention_matching
對話通用理解模型DGU
對話相關(guān)的任務(wù)中,Dialogue System常常需要根據(jù)場景的變化去解決多種多樣的任務(wù)。任務(wù)的多樣性(意圖識別、槽位解析、DA識別、DST等等),以及領(lǐng)域訓(xùn)練數(shù)據(jù)的稀少,給Dialogue System的研究和應(yīng)用帶來了巨大的困難和挑戰(zhàn),要使得dialogue system得到更好的發(fā)展,需要開發(fā)一個通用的對話理解模型。基于BERT的對話通用理解模塊(DGU:Dialogue General Understanding),通過實(shí)驗(yàn)表明,使用base-model(BERT)并結(jié)合常見的學(xué)習(xí)范式,在幾乎全部對話理解任務(wù)上取得比肩甚至超越各個領(lǐng)域業(yè)內(nèi)最好的模型的效果,展現(xiàn)了學(xué)習(xí)一個通用對話理解模型的巨大潛力。
DGU針對數(shù)據(jù)集開發(fā)了相關(guān)的模型訓(xùn)練過程,支持分類,多標(biāo)簽分類,序列標(biāo)注等任務(wù),用戶可針對自己的數(shù)據(jù)集,進(jìn)行相關(guān)的模型定制
基于對話相關(guān)的業(yè)內(nèi)公開數(shù)據(jù)集進(jìn)行評測,效果如下表所示。
項(xiàng)目地址:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/dialogue_model_toolkit/dialogue_general_understanding
知識驅(qū)動對話
人機(jī)對話是人工智能(AI)中最重要的話題之一,近年來受到學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注。目前,對話系統(tǒng)仍然處于起步階段,通常是被動地進(jìn)行交談,并且更多地將他們的言論作為回應(yīng)而不是他們自己的倡議,這與人與人的談話不同。
因此, 百度在一個名為知識驅(qū)動對話的新對話任務(wù)上設(shè)置了這個競賽,其中機(jī)器基于構(gòu)建的知識圖與人交談。它旨在測試機(jī)器進(jìn)行類似人類對話的能力。
這是提供基于檢索和基于生成的基線系統(tǒng)。 這兩個系統(tǒng)都是由PaddlePaddle(百度深度學(xué)習(xí)框架)和Pytorch(Facebook深度學(xué)習(xí)框架)實(shí)現(xiàn)的。 兩個系統(tǒng)的性能如下表所示。
項(xiàng)目地址:
https://github.com/baidu/knowledge-driven-dialogue/tree/master
閱讀理解
在機(jī)器閱讀理解(MRC)任務(wù)中,會給定一個問題(Q)以及一個或多個段落(P)/文檔(D),然后利用機(jī)器在給定的段落中尋找正確答案(A),即Q + P or D => A. 機(jī)器閱讀理解(MRC)是自然語言處理(NLP)中的關(guān)鍵任務(wù)之一,需要機(jī)器對語言有深刻的理解才能找到正確的答案。
基于PaddlePaddle的閱讀理解升級了經(jīng)典的閱讀理解BiDAF模型,去掉了char級別的embedding,在預(yù)測層中使用了pointer network,并且參考了R-NET中的一些網(wǎng)絡(luò)結(jié)構(gòu),效果上有了提升(在DuReader2.0驗(yàn)證集、測試集的表現(xiàn)見下表)。
DuReader是一個大規(guī)模、面向真實(shí)應(yīng)用、由人類生成的中文閱讀理解數(shù)據(jù)集。DuReader聚焦于真實(shí)世界中的不限定領(lǐng)域的問答任務(wù)。相較于其他閱讀理解數(shù)據(jù)集,DuReader的優(yōu)勢包括:
問題來自于真實(shí)的搜索日志
文章內(nèi)容來自于真實(shí)網(wǎng)頁
答案由人類生成
面向真實(shí)應(yīng)用場景
標(biāo)注更加豐富細(xì)致
項(xiàng)目地址:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/reading_comprehension