close


第九章 自然語言處理專案案例

第九章簡介

本章介紹NLP中常用的模型及任務實現,模型主要包括RNNLSTMTransformerBERTGPT,任務方面包括情感分析、文本分類、機器翻譯、命名體識別、QA問答、文章續寫。

9.1 NLP基礎概念

NLP任務不同於CV任務,它存在更多難點,例如

  • 資料表示:NLP任務處理的是文本資料,需要將自然語言文本轉化為電腦可處理的形式,即如何把字串變為數值資料,常用的有詞嵌入(Word Embedding),而CV任務處理的圖像,天然是數值形資料
  • 上下文依賴:文本具有豐富的上下文依賴性,單個詞或短語的含義可以依賴于其周圍的上下文,這使得NLP任務在理解和處理上更具挑戰性。
  • 長期依賴:文本序列可能非常長,並且存在長期依賴性,需要模型能夠捕捉長距離的上下文資訊
  • 多義性和歧義性:語言中存在多義詞和歧義性,需要根據上下文來進行準確理解和推斷。

由於NLP任務存在諸多難點,因此在正式開始前,需要對NLP基礎概念進行說明。

首先介紹NLP資料處理基礎流程,然後介紹各式各樣的NLP任務,最後總結NLP基礎概念名詞

NLP任務處理流程

以電影影評文本分類為例,流程可分為以下幾個步驟:

  1. 數據清洗和預處理:去除無關字元、標點符號、HTML標籤、去除停用詞等,目的是得到具備真實語義的文本序列。
  2. 分詞:將文本序列劃分為具備獨立語義的詞元(token),每個token是基本單位。英文中通常用空格可區分,而中文常需要特定的分詞方法。例如,這電影不錯。可劃分為["", "電影", "", "", ""],或者將每個字元劃分,["", "", "", "", "", ""]。具體要如何分詞,這需要根據任務以及模型的能力決定,對於BERT這樣的模型,或許以及學會了分詞、組詞的能力,只需要逐個字輸入即可。
  3. 構建詞表:詞表(Vocabulary)是個字典,作用是將詞元(token)映射到整數索引,例如[('', 0), ('the', 1), ('i', 2), ('and', 3)...]。詞表將文本資料中的詞元(token)映射為對應的識別字(通常是正整數),然後使用詞嵌入模型將這些識別字轉化為對應的詞向量表示。
  4. 詞嵌入:模型運算需要的是數值型資料,因此需要一個映射,將字元映射到向量,這個向量可理解為特徵向量/詞向量,這個映射過程稱為詞嵌入(word embedding)。詞嵌入是個複雜問題,需要的約束較多。例如,語義相近的詞元(token)的特徵向量要接近,即余弦距離要小。目前常採用已經預訓練好的詞嵌入模型,如word2vec, GloVe, FastText等。
  5. 演算法模型:NLP模型通常是序列模型,即可處理多個詞向量輸入,然後根據任務類型進行輸出,如文本分類則最終輸出一個分類概率向量,翻譯任務則輸出一些列分類概率向量,向量個數是文本單詞/詞元個數,概率向量的長度是詞表大小,即把單詞的輸出轉換為單詞分類,只能在詞表中選一個最有可能詞進行輸出。

NLP常見任務

CV任務不同,NLP任務繁多,需要歸納總結,逐個分析。

下面借助台大李宏毅老師2021NLP課程的內容,梳理NLP主要內容。

詳細內容參見:http://speech.ee.ntu.edu.tw/~tlkagk/courses_DLHLP20.html

NLP任務細分有十多種大類,小類有幾十種,但整體歸納下來可概括為兩種類型,分別是seq2clsseq2seq

  • seq2cls:輸入是序列,輸出是類別,根據輸出數量又可分序列級分類token級分類。文本分類就是序列級,詞性標注就是token級。
  • seq2seq:輸入是序列,輸出也序列,例如機器翻譯、文章摘要、問答系統、閱讀理解等任務都是seq2seq的。

<<AI人工智慧 PyTorch自學>> 第九章 自然語言處

下面對常見的NLP任務進行一句話概括。

  • 詞性標記,Part-of-Speech(POS) Taggingseq2cls 為每個token輸出一個類別,在早期NLP模型中,作為預處理,將詞性和文本輸入到下游模型中,期望通過詞性資訊提升模型能力。
  • 分詞,word segmentationseq2cls,將文本序列切分開,英文有空格進行切分,中文則需要分詞,文本序列切分為多個token
  • 指代消解,coreference resolution:將同一個東西(entity)的不同表達識別出來,給下游任務額外的提示資訊。
  • 情感分析,sentiment classificationseq2cls,將整個文本進行輸出一個類別,常用於影評、社交媒體評論的分類。
  • 輿情分析(立場檢測),Stance Detectionseq+seq 2 cls,常分為4類:Many systems use the Support, Denying, Querying, andCommenting (SDOC) labels for classifying replies
  • 機器翻譯, machine translationseq2seq,很好理解,兩種語言之間的轉換,典型的seq2seq任務。
  • 文本摘要,summarization:抽取式(Extraction-based)seq2cls。為原文中逐個token進行二分類,保留/不保留,最終輸出保留的token(單詞/句子)。
  • 文本摘要,summarization:生成式(Abstraction-based)seq2seq。將原文進行理解、編碼,再經解碼器輸出總結的內容。類似機器翻譯,輸出的是NxM的概率向量矩陣。Ntoken數量,M是詞表中詞的數量。
  • 問答系統:seq2seq,輸入問題,輸出答案,進階版問答系統還具備記憶能力,能根據上下文進行回答,這就變為對話系統。
  • 命名實體識別,NERName Entity Recognition):seq2cls,將文本中的實體(如人名、地名、組織名)進行標注和分類,將每個token分類為實體類型或非實體類型。
  • 關係抽取,Relation Extractionseq2seq,旨在從文本中提取出實體之間的關係。輸入是包含兩個實體的句子以及兩個實體,輸出是描述這兩個實體關係的標籤或文本。
  • 自然語言推理 Natural Language Inference (NLI)seq2cls,推理模型的文本輸入:premise(前提) + hypothesis(假設) ,模型輸出:對假設是否成立的判斷結果,矛盾/包含(可推得)/中立(contradiction/entailment/neutral)

NLP基礎概念

以上是對一個樣本推理過程涉及的幾個關鍵步驟進行了介紹,在訓練過程中組batch可能還會涉及連接詞、填充詞的預處理,這裡暫不作說明。

下面總結一些NLP中常用的概念名詞,便於理解任務。

  1. 詞表(Vocabulary):文本資料集中出現的所有單詞的集合。
  2. 語料庫(Corpus):用於NLP任務的文本資料集合,可以是大規模的書籍、文章、網頁等。
  3. 詞嵌入(Word Embedding):將單詞映射到低維連續向量空間的技術,用於捕捉單詞的語義和語法資訊。
  4. 停用詞(Stop Words):在文本處理中被忽略的常見單詞,如"a""the""is"等,它們通常對文本的意義貢獻較小。
  5. 分詞(Tokenization):將文本分割成一個個單詞或標記的過程,為後續處理提供基本的單位。
  6. 詞頻(Term Frequency):在給定文檔中,某個單詞出現的次數。
  7. 逆文檔頻率(Inverse Document Frequency):用於衡量一個單詞在整個語料庫中的重要性,是將詞頻取倒數並取對數的值。
  8. TF-IDFTerm Frequency-Inverse Document Frequency):一種常用的文本特徵表示方法,綜合考慮了詞頻和逆文檔頻率。
  9. 詞袋模型(Bag of Words):將文本表示為一個單詞的集合,忽略了單詞的順序和語法結構。
  10. N-gram:連續的N個單詞構成的序列,用於捕捉文本中的局部特徵和上下文資訊。

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 HCHUNGW 的頭像
    HCHUNGW

    HCHUNGW的部落格

    HCHUNGW 發表在 痞客邦 留言(0) 人氣()