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