(0)NLP的流程

一、NLP項目的Pipeline

  • 數據清洗(無用的標籤、特殊的符號、停用詞、大寫轉小寫)

  • 分詞

  • 標準化:

     - Stemming:還原的單詞不一定存在詞典中,不保證還原爲一個有效的單詞
     - Lemmazation:保證存在詞典中
    
  • 特徵提取:tf-idf、word2vec

    - 提取特徵,特徵工程決定了系統的上限,用模型去逼近這個上限。	
    
  • 建模:相似度算法、分類算法等

  • 評估:acc、精確率、召回率、f1

二、word segmentation

2.1 最大匹配算法(max matching)

最大匹配是一個基於匹配規則的貪心算法。

  • 前項最大匹配:max_len = 5(一般小於10,太大時間複雜度會很高),取百分比最多的詞的長度,
  • 後向最大匹配

最大匹配的缺點:

  • 局部最優
  • 效率(max_len)
  • 歧義(不考慮語義),停留在單詞階段

2.2 Incorporate Semantic

  • 生成輸入句子的所有可能的劃分(根據詞典),選擇其中最好的作爲最終的劃分(比如LM)
  • 怎麼解決效率問題:動態規劃

三、文本表示

3.1 one-hot representation

  • boolean based

  • Count based

    - 並不是出現的越多就越重要
    - 並不是出現的越少,就越不重要 
    
  • tf-idf based

    - tf-idf(w) = tf(d,w) * idf(w)
    - tf(d,w):文檔d中w的詞頻
    - idf(w):考慮單詞的重要性,
    	- log(N/N(w)),如果詞w出現在許多文檔中,說明這個詞不重要
    	- 不希望這個值太大,所以加上log
    	- N:語料庫中的文檔總數
    	- N(w):詞語w出現在多少個文檔中
    

缺點:

  • one-hot representation 無法表達單詞之間的相似度(不能表達語義相似度)
  • Sparsity(稀疏性):向量大小是詞典的大小

3.2 Distributed Representation

一般不超過300維。

  • 容量空間:

    - 100維的one-hot表示法最多表示多少單詞?100個
    - 100維的分佈式表示法最多表示多少單詞?無窮個
    
  • 分佈式的優點:

    - 分佈式解決了稀疏性
    - one-hot無法表達單詞的相似度,分佈式可以(且可視化)
    
  • 句子向量怎麼計算:平均法則

3.3 文本相似度

  • 歐式距離:沒有考慮方向
  • 餘弦相似度:考慮了方向

四、建模方法

4.1 Noisy channel Model

p(text|source) = p(source|text) * p(text)

應用場景:

  • 機器翻譯:

    p(中文|英文) = p(英文|中文) * p(中文)

  • 拼寫糾錯

    p(正確的寫法|錯誤的寫法) = p(錯|正) * p(正)

4.2 LM

  • 用來判斷一句話是否在語法上通順

  • 目標:p(s) = p(w1,w2,…,wn)

  • 馬爾科夫假設

    - Unigram:不考慮,獨立
    - Bigram:一階馬爾科夫假設
    - N-gram
    
  • 語言模型:就是訓練這些條件概率

  • 一個短句包含很多單詞時,概率很難計算且大部分爲0

  • 字符串越長,在文章中找到相應字符串的次數(概率)就越小,統計結果不準確

  • 評估語言模型

    - perplexity = 2 ^ -x , x:average log likelihood
    - perplexity越小越好,x越大越好,x = log(p(w1)p(w2)...)
    

4.3 語料庫沒有出現的單詞怎麼辦?

訓練語料庫沒出現,不代表未來不會出現。

  • Add-K-smoothing

    - p(wi|wi-1) = c(wi-1,wi) / c(wi)
    - p(wi|wi-1) = c(wi-1,wi)+k / c(wi) +kv
    
  • Interpolation

    核心思路:在計算Trigram概率下時,同時考慮Ungram,Bigram,Trigram出現的頻次。加權爲1

  • Good-Turning Smoothing

    - 沒有出現過的單詞:P = 0 變爲 P = N1 / N
    - 出現過的單詞:P = c / N 變爲 P = [(c+1) * N(c+1)] / [Nc * N]
    - Nc:出現c次單詞的個數  
    

五、評價指標

  • 準確率acc

  • 精確率

    - precision = TP / (TP + FP)  選出的有多少是對的
    - recall = TP / (TP + FN) 選出來整體的多少
    
  • f1

    - f1 = 2*p*r / p+r
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章