根據判斷主題的級別, 將所有的nlp任務分為兩種型別:
1.token-level task: token級別的任務. 如完形填空(cloze), **句子中某個位置的單詞; 或者實體識別; 或是詞性標註; squad等.
2.sequence-level task: 序列級別的任務, 也可以理解為句子級別的任務. 如情感分類等各種句子分類問題; 推斷兩個句子的是否是同義等.
token-level task
cloze task
即bert模型預訓練的兩個任務之一, 等價於完形填空任務, 即給出句子中其他的上下午token, 推測出當前位置應當是什麼token.
解決這個問題就可以直接參考bert在預訓練時使用到的模型: masked language model. 即在與訓練時, 將句子中的部分token用[masked]這個特殊的token進行替換, 就是將部分單詞遮掩住, 然後目標就是**[masked]對應位置的單詞.
這種訓練的好處是不需要人工標註的資料. 只需要通過合適的方法, 對現有語料中的句子進行隨機的遮掩即可得到可以用來訓練的語料. 訓練好的模型, 就可以直接使用了.
squad(standford question answering dataset) task
這是乙個生成式的任務. 樣本為語句對. 給出乙個問題, 和一段來自於wikipedia的文字, 其中這段文字之中, 包含這個問題的答案, 返回一短語句作為答案.
因為給出答案, 這是乙個生成式的問題, 這個問題的特殊性在於最終的***含在語句對的文字內容之中, 是有範圍的, 而且是連續分布在內容之中的.
因此, 我們找出答案在文字語句的開始和結尾處, 就能找到最後的答案. 通過對文字語句序列中每個token對應的所有hidden vector做softmax判斷是開始的概率和是結束的概率, 最大化這個概率就能進行訓練, 並得到輸出的結果.
named entity recognition
本質是對句子中的每個token打標籤, 判斷每個token的類別.
常用的資料集有:
ner(named entity recognition) dataset: 對應於person, organization, location, miscellaneous, or other (non-named entity).
sequence-level task
nli(natural language inference) task
自然語言推斷任務, 即給出一對(a pair of)句子, 判斷兩個句子是entailment(相近), contradiction(矛盾)還是neutral(中立)的. 由於也是分類問題, 也被稱為sentence pair classification tasks.
在智慧型問答, 智慧型客服, 多輪對話中有應用.
常用的資料集有:
mnli(multi-genre natural language inference): 是glue datasets(general language understanding evaluation)中的乙個資料集. 是乙個大規模的**眾多的資料集, 目的就是推斷兩個句子是意思相近, 矛盾, 還是無關的.
wnli(winograd nli)
sentence pair classification tasks
兩個句子相關性的分類問題, nli task是其中的特殊情況. 經典的此類問題和對應的資料集有:
NLP預備任務
由於之前已經安裝好了tensorflow,所以就直接跳過這步了。參考 tensorflow安裝教程 tensrflow基礎 關注圖 會話 tensor 變數 feed和fetch。使用圖 graphs 來表示計算任務 在被稱之為會話 session 的上下文 context 中執行圖 使用tenso...
007 NLP 預備任務
之前已經安裝好了,版本 anoconda3 5.2.0 python 3.6.5 cuda 10.1 cudnn 7.5 tensorflow gpu 1.12.0 tensorflow程式中,系統會自動維護乙個預設的計算圖,通過tf.get default graph函式可以獲取當前預設的計算圖。...
NLP基本任務
1.序列標註 分詞 pos tag ner 語義標註 2.分類任務 文字分類 情感計算 3.句子關係判斷 entailment qa 自然語言推理 4.生成式任務 機器翻譯 文字摘要 詞法分析 lexical analysis 對自然語言進行詞彙層面的分析,是nlp基礎性工作 分詞 word seg...