nlp常用任務以及各類任務常用模型

nlp常用任務以及各類任務常用模型


本文主要簡單描述目前nlp方向的應用類型以及該類型下的常用方法(以及目前通用的數據集)

詳細信息參考自 https://github.com/sebastianruder/NLP-progress


nlp四大任務類型

序列標註:分詞/POS Tag詞性標註/NER命名實體識別

分詞/POS Tag詞性標註

目前分詞和詞性標註技術已經非常成熟,常用的庫有Jieba,哈工大pyltp等,以下不再贅述。
具體分詞技術可以參考 https://blog.csdn.net/scarlettyellow/article/details/80458043

詞性標註的目的在於得到分詞之後每個詞的語法屬性(名詞,動詞,形容詞等);主要任務是消除詞性兼類歧義;可以應用在句法分析,詞彙獲取,信息抽取等應用中。
中文詞性標註的難點在於中文沒有屈折變化,也沒有附加詞綴,即一個詞能夠不改變形態的情況下表示多種意思,所以無法像英語那樣通過詞綴進行詞性標註。
具體詞性標註技術可以參考:
https://github.com/sebastianruder/NLP-progress/blob/master/english/part-of-speech_tagging.md
https://www.zhihu.com/question/302423008
漢語詞性對照表: https://blog.csdn.net/sinat_33741547/article/details/78894163

NER命名實體識別

命名實體識別的目地的在於抽取出句子中的命名性指稱項,即人名,地名等實體
中文進行命名實體識別的難點:

  1. 中文沒有空格作爲每個詞的分隔,沒有英文當中的大小寫(英文中地名等相關名詞一般爲大寫)。
  2. 中文的詞非常靈活,有時不通過上下文無法判斷出時候是命名實體,並且在不同的語境中同一個詞表示的實體可能不同。
  3. 中文存在嚴重的詞嵌套現象。
  4. 中文多數詞會進行簡化表達。

命名實體識別和詞性標註一樣可以看作是一個序列標註問題,即可以使用相同的統計學習方法(HMM,CRF等),也可以使用神經網絡(LSTM等),目前比較流行的是神經網絡+傳統機器學習方法(RNN-CRF+Flair等)。
具體技術可參考:
https://www.cnblogs.com/robert-dlut/p/6847401.html
https://blog.csdn.net/ARPOSPF/article/details/81106212

相關模型和數據集:
https://github.com/sebastianruder/NLP-progress/blob/master/english/named_entity_recognition.md

分類任務:文本分類(Text classification)/情感分析

文本分類

文本分類分爲基於sentence和基於document兩大類,是nlp領域最經典的應用場景之一。文本分類的核心要點在於是否能得到好的文本向量表示,即好的文本向量(更好地代表原文本的特徵)能夠顯著地提升分類精度。
爲了得到較爲合理化的embedding,目前nlp做的最好的是基於attention機制的各大預訓練模型(Transformer, BERT, ERNIE, XLNet, GPT等)。

相關模型和數據集:
https://github.com/sebastianruder/NLP-progress/blob/master/english/text_classification.md

情感分析

情感分析也可以看作是一個特殊的分類任務,類別不同於一般的文本類別,例如評論類別的識別(好的評論或者不好的評論),重點在於分析文本所蘊含的情感。
具體描述:https://www.jianshu.com/p/e424061acc51

相關模型和數據集:
https://github.com/sebastianruder/NLP-progress/blob/master/english/sentiment_analysis.md

句子關係判斷:QA問答/自然語言推理(Natural language inference)

QA問答
QA系統發展:

(一) 基於檢索(IR)匹配: 根據關鍵詞在文本庫中搜索相關文檔,並進行降序排序,然後從文檔中提取答案。
(二) 知識圖譜(結構化文本),基於知識庫(KB-QA): 通過把大量知識通過一定格式匯聚起來形成知識庫。
KB-QA

知識庫問答的主流方法

1)語義解析(Semantic Parsing),主體思想是將自然語言轉化爲一系列形式化的邏輯形式(logic form),通過對邏輯形式進行自底向上的解析,得到一種可以表達整個問題語義的邏輯形式,通過相應的查詢語句(類似lambda-Caculus)在知識庫中進行查詢,從而得出答案。
2)信息抽取(Information Extraction),通過提取問題中的實體,通過在知識庫中查詢該實體可以得到以該實體節點爲中心的知識庫子圖,子圖中的每一個節點或邊都可以作爲候選答案,通過觀察問題依據某些規則或模板進行信息抽取,得到問題特徵向量,建立分類器通過輸入問題特徵向量對候選答案進行篩選,從而得出最終答案。
3)向量建模(Vector Modeling),根據問題得出候選答案,把問題和候選答案都映射爲分佈式表達(Distributed Embedding),通過訓練數據對該分佈式表達進行訓練,使得問題和正確答案的向量表達的得分(通常以點乘爲形式)儘量高。

具體關於知識庫的介紹: https://zhuanlan.zhihu.com/p/25735572
(三) MRC機器閱讀理解: 給定一個問題 Q 和一個與 Q 相關的文檔 D,自動得到 Q 對應的答案 A。
MRC

主要方法

1)匹配式:給出文章,問題和答案集,從答案集中選出最高得分的答案,像選擇題。
2)抽取式:從文檔中抽取出答案,前提是文檔中包括問題答案。
3)生成式:當文檔中沒有答案時需要機器去自動生成答案,該方法與抽取式不同之處在於Encoder不同。

具體關於閱讀理解的介紹:https://zhuanlan.zhihu.com/p/41217854
相關論文:https://github.com/dapurv5/awesome-question-answering
相關數據集:https://github.com/sebastianruder/NLP-progress/blob/master/english/question_answering.md#ms-marco

自然語言推理

自然語言推理主要是判斷兩個句子或者兩個詞之間的語義關係,即前提(premise)和假設(hypothesis)之間的蘊含關係。該任務最終會退化爲一個分類任務,即去判斷兩個句子或詞之間的關係的類別,一般情況下有三類(Entailment,Contradiction,Neutral)。
推理類型

  1. 詞級別的推理
  2. 句子級別的推理
  3. 詞匹配方法

常用數據集

  1. SNLI 包含 550k hypothesis/premise pairs, 目前測試精度最高的模型是 MT-DNNSemBERT, 精度在91.6%。
  2. MultiNLI 包含 433k hypothesis/premise pairs, 相比於SNLI,MultiNLI提供了多題材數據, 目前最好模型是 RoBERTa
  3. SciTail 包含 27k hypothesis/premise pairs, 和上面兩個數據的不同之處在於該數據集來自於真實場景下四年級科學問答數據。

相關模型和數據集:
https://github.com/sebastianruder/NLP-progress/blob/master/english/natural_language_inference.md

生成式任務:機器翻譯/文本摘要

機器翻譯

簡單來說機器翻譯的基礎框架就是編碼解碼器。通過網絡捕捉不同語言之間的特性進行不同語言之間的轉換(squence-to-squence)。
目前比較流行的機器翻譯架構是基於self-attention的,自transformer提出之後,幾乎所有的由LSTM或者CNN實現的squence-to-squence模型都用attention機制替換了一遍。

相關模型:https://github.com/sebastianruder/NLP-progress/blob/master/english/machine_translation.md

文本摘要
主要方法

1)抽取式(extractive):按照一定的權重,從原文中尋找跟中心思想最接近的一條或幾條句子,缺點是句子不太通順。
2)生成式(abstractive):通讀原文後,在理解整篇文章意思的基礎上,按自己的話生成流暢的翻譯。(transformer),基礎架構也是Encoder-Decoder。

相關模型和數據集:https://github.com/sebastianruder/NLP-progress/blob/master/english/summarization.md


該博文僅供學習收集數據使用!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章