機器之心釋出
來源:百度飛槳
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 Analy sis 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)利用少量標註資料(特定對話系統或場景的人工打分),在匹配模型基礎上進行微調,可以顯著提高該對話系統或場景的評估效果。
以四個不同的對話系統(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: DialogueGeneralUnderstanding),透過實驗表明,使用 base-model(BERT) 並結合常見的學習正規化,在幾乎全部對話理解任務上取得比肩甚至超越各個領域業內最好的模型的效果,展現了學習一個通用對話理解模型的巨大潛力。
DGU 針對資料集開發了相關的模型訓練過程,支援分類,多標籤分類,序列標註等任務,使用者可針對自己的資料集,進行相關的模型定製
基於對話相關的業內公開資料集進行評測,效果如下表所示。
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/dialogue_model_toolkit/dialogue_general_understanding
2、知識驅動對話
人機對話是人工智慧(AI)中最重要的話題之一,近年來受到學術界和工業界的廣泛關注。目前,對話系統仍然處於起步階段,通常是被動地進行交談,並且更多地將他們的言論作為回應而不是他們自己的倡議,這與人與人的談話不同。因此,我們在一個名為知識驅動對話的新對話任務上設定了這個競賽,其中機器基於構建的知識圖與人交談。它旨在測試機器進行類似人類對話的能力。
我們提供基於檢索和基於生成的基線系統。這兩個系統都是由 PaddlePaddle(百度深度學習框架)和 Pytorch(Facebook 深度學習框架)實現的。兩個系統的效能如下表所示。
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