1. 程式人生 > >自然語言處理 學習筆記(三)

自然語言處理 學習筆記(三)

個人學習nlp筆記:學習材料CS124、COSC572和《Speech and Language Processing》第三版

在這裡插入圖片描述

自然語言處理 學習筆記(三)

1.樸素貝葉斯

本質上就是機器學習中的監督學習的分類方法,情感是否正向(0或1)就是我們所預測 y ^ \hat{y} 等等等等
在這裡插入圖片描述

1.1 樸素貝葉斯推導

本文提到的是multinomial 樸素貝葉斯,即特徵向量不是連續的,是0~x的整數。其中的特徵向量其實就是詞袋向量(bag-of-words),即每個單詞在一篇文章或句子中的計陣列成的一維向量。
在這裡插入圖片描述


P ( d ) P(d) 是引數,省略
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
最大後驗的貝葉斯和樸素貝葉斯分類器
在這裡插入圖片描述
在這裡插入圖片描述

1.2 樸素貝葉斯訓練

先驗 P ( c ) P(c) 等於類別c出現的概率
在這裡插入圖片描述

假定 P ( w i c ) P(w_{i}|c) 是獨立的,則likelihood P ( w i c ) P(w_{i}|c) 等於在c類中,單詞 w i w_{i} 出現的概率(出現的次數處以c類中出現的所有單詞次數合)
在這裡插入圖片描述

樸素貝葉斯中的Laplace平滑:
在這裡插入圖片描述

下面是簡化版流程和虛擬碼
在這裡插入圖片描述
在這裡插入圖片描述

1.3樸素貝葉斯和語言模型

樸素貝葉斯有點像多個unigram,以情感positive或者negative為例子,就像訓練了一個 L M n e g LM_{neg} 和一個 L M p o s LM_{pos} ,如果 L M n e g LM_{neg} 的概率較大,則句子的情感被分為negative
在這裡插入圖片描述
在這裡插入圖片描述

我們也可以使用詞袋模型的子空間(去掉很多諸如I,and等中性詞),不過詞袋模型丟失了很多資訊,比如詞在原文中的位置等等。
在這裡插入圖片描述
在這裡插入圖片描述

1.4效果評估:Precision,Recall, F-measure & accuracy

以二分類問題為例:
在這裡插入圖片描述
contingency table -> 列聯表
gold label -> 人類給定的標籤,也就是所謂正確的label
false positive -> select as positive falsely

在一些例子中,比如判斷一個詞是不是一個鞋的品牌名字,這種情況下,可能我們99.9%的詞都不是鞋的品牌(eg.1000個詞,只有十個positive的),那我們豈不是所以都標“negative”,那準確率也有99.9%了?所以此時就應該考慮召回率或準確度,在這個例子中:
R e c a l l = # o f   p o s i t i v e   t r u e l y # o f   ( p o s i t i v e   t r u e l y + n e g a t i v e   f a l s e l y ) = 0 0 + 10 = 0.0 % Recall = \frac{\# of\ positive\ truely}{\# of\ (positive\ truely+negative\ falsely)} = \frac{0}{0+10}=0.0\%
P r e c i s i o n = # o f   p o s i t i v e   t r u e l y # o f   ( p o s i t i v e   t r u e l y + p o s i t i v e   f a l s e l y ) = 0 0 + 0 = e m m m m Precision= \frac{\# of\ positive\ truely}{\# of\ (positive\ truely+positive\ falsely)} = \frac{0}{0+0}= emmmm
換個例子
分類器選出來40個positive,其中8個正確

gold positive gold negative
system positive 8 32
system negative 2 958

此時
R e c a l l = # o f   p o s i t i v e   t r u e l y # o f   ( p o s i t i v e   t r u e l y + n e g a t i v e   f a l s e l y ) = 8 8 + 2 = 80.0 % Recall = \frac{\# of\ positive\ truely}{\# of\ (positive\ truely+negative\ falsely)} = \frac{8}{8+2}=80.0\%
P r e c i s i o n = # o f   p o s i t i v e   t r u e l y # o f   ( p o s i t i v e   t r u e l y + p o s i t i v e   f a l s e l y ) = 8 8 + 32 = 20.0 % Precision= \frac{\# of\ positive\ truely}{\# of\ (positive\ truely+positive\ falsely)} = \frac{8}{8+32}= 20.0\%

Recall和Precision之間存在一種權衡的關係,增加Recall的同時Precision會降低,所以我們可以用F-score,一個recall和precision的結合(調和平均)來計算

在這裡插入圖片描述
在這裡插入圖片描述

調和平均是一個比較保守的評估方法,對比於算術平均,其的值會更接近兩個數中比較小的那個,所以其給Recall和Precion中比較小的那個更大的權重。

多分類問題:
在這裡插入圖片描述
在這裡插入圖片描述

使用microaverage和macroaverage使資料更直觀:
macroaverage是從巨集觀角度上,總和,再求準確度,而microaverage是按每個類求準確度再平均
在這裡插入圖片描述

交叉驗證:
在這裡插入圖片描述

1.5 實踐經驗

樸素貝葉斯很適合小資料,而且即使在這樣的情況下也不會過擬合
在這裡插入圖片描述

資料量合適時候
在這裡插入圖片描述
資料量足夠時,分類器的影響不大
在這裡插入圖片描述

不同領域的特徵和術語的處理也很重要,而詞幹提取幫助不大。給與比如標題等更大的權重也是不錯的選擇
在這裡插入圖片描述
part number 零件號碼

1.6 模型比較的統計檢驗

我們可以通過macro-averaged F1進行比較,看那個得分高,但是你不知道是不是因為test分割的巧合,導致其恰巧準確率高,所以我們可以引入統計學的方法來檢驗。模型A和B的分類結果的差為 δ ( x ) \delta(x)