强烈推荐| 飞桨十大中文NLP开源工具详解
PaddleNLP是基于飛槳(PaddlePaddle)開發的工業級中文NLP開源工具與預訓練模型集,將自然語言處理領域的多種模型用一套共享骨架代碼實現,可大大減少開發者在開發過程中的重復工作。PaddleNLP提供依托于百度百億級大數據的預訓練模型,適應全面豐富的 NLP任務,方便開發者靈活插拔嘗試多種網絡結構,并且讓應用最快速達到工業級效果。下面小編就帶你一一了解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
2.對話情緒識別
對話情緒識別適用于聊天、客服等多個場景,能夠幫助企業更好地把握對話質量、改善產品的用戶交互體驗,也能分析客服服務質量、降低人工質檢成本。對話情緒識別(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
二、文本匹配
1、短文本語義匹配
百度自主研發的短文本語義匹配語義匹配框架(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
三、序列標注
1、詞法分析
百度自主研發中文特色模型詞法分析任務(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
四、文本生成
1、機器翻譯
機器翻譯(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
五、語義表示與語言模型
1、語言表示工具箱
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/ERNIE
https://github.com/PaddlePaddle/LARK/tree/develop/BERT
https://github.com/PaddlePaddle/LARK/tree/develop/ELMo
2、語言模型
基于LSTM的語言模型任務是給定一個輸入詞序列(中文分詞、英文tokenize),計算其PPL(語言模型困惑度,用戶表示句子的流利程度),基于循環神經網絡語言模型的介紹可以參閱論文「Recurrent Neural Network Regularization」。相對于傳統的方法,基于循環神經網絡的方法能夠更好的解決稀疏詞的問題。此任務采用了序列任務常用的RNN網絡,實現了一個兩層的LSTM網絡,然后LSTM的結果去預測下一個詞出現的概率。
在small、meidum、large三個不同配置情況的ppl對比如下表所示。
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/language_model
六、復雜任務
1、對話模型工具箱
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
2、知識驅動對話
人機對話是人工智能(AI)中最重要的話題之一,近年來受到學術界和工業界的廣泛關注。目前,對話系統仍然處于起步階段,通常是被動地進行交談,并且更多地將他們的言論作為回應而不是他們自己的倡議,這與人與人的談話不同。因此,我們在一個名為知識驅動對話的新對話任務上設置了這個競賽,其中機器基于構建的知識圖與人交談。它旨在測試機器進行類似人類對話的能力。
我們提供基于檢索和基于生成的基線系統。這兩個系統都是由PaddlePaddle(百度深度學習平臺)和Pytorch(Facebook深度學習框架)實現的。兩個系統的性能如下表所示。
https://github.com/baidu/knowledge-driven-dialogue/tree/master
3、閱讀理解
在機器閱讀理解(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
總結
以上是生活随笔為你收集整理的强烈推荐| 飞桨十大中文NLP开源工具详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python高考考题_假如高考考pyth
- 下一篇: BFU C.yi的书包 01背包【水