機器學習的過程是訓練模型和使用模型的過程,訓練就是基於已知資料做統計學習,使用就是用統計學習好的模型來計算未知的資料。
機器學習分為有監督學習和無監督學習,文字分類也分為有監督的分類和無監督的分類。有監督就是訓練的樣本資料有了確定的判斷,基於這些已有的判斷來斷定新的資料,無監督就是訓練的樣本資料沒有什麼判斷,完全自發的生成結論。
無論監督學習還是無監督學習,都是通過某種演算法來實現,而這種演算法可以有多重選擇,貝葉斯就是其中一種。在多種演算法中如何選擇最適合的,這才是機器學習最難的事情,也是最高境界。
貝葉斯是概率論的鼻祖,貝葉斯定理是關於隨機事件的條件概率的一則定理,貝葉斯公式是:
p(b|a)=p(a|b)p(b)/p(a);即,已知p(a|b),p(a)和p(b)可以計算出p(b|a)。
貝葉斯分類器就是基於貝葉斯概率理論設計的分類器演算法,nltk庫中已經實現,具體用法如下:
# coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
import nltk
my_train_set = [
(,'1'),
(,'2'),
(,'3'),
(,'3'),
(,'2'),
(,'2'),
(,'2'),
(,'2'),
(,'2'),
(,'2'),
]classifier = nltk.*****bayesclassifier.train(my_train_set)
print classifier.classify()
print classifier.classify()
執行後判斷特徵a和特徵b的分類分別是3和2
因為訓練集中特徵是a的分類是3的最多,所以會歸類為3
當然實際中訓練樣本的數量要多的多,特徵要多的多
不管是什麼分類,最重要的是要知道哪些特徵是最能反映這個分類的特點,也就是特徵選取。文件分類使用的特徵就是最能代表這個分類的詞。
因為對文件分類要經過訓練和**兩個過程,而特徵的提取是這兩個過程都需要的,所以,習慣上我們會把特徵提取單獨抽象出來作為乙個公共方法,比如:
from nltk.corpus import movie_reviews
all_words = nltk.freqdist(w.lower() for w in movie_reviews.words())
word_features = all_words.keys()[:2000]
defdocument_features
(document):
for word in word_features:
features['contains(%s)' % word] = (word in document_words)
return features
這是乙個簡單的特徵提取過程,前兩行找到movie_reviews語料庫中出現詞頻最高的2000個詞作為特徵,下面定義的函式就是特徵提取函式,每個特徵都是形如contains(***)的key,value就是true或false,表示這個詞是否在文件中出現
那麼我們訓練的過程就是:
featuresets = [(document_features(d), c) for (d,c) in documents]
classifier = nltk.*****bayesclassifier.train(featuresets)
要**乙個新的文件時:
classifier.classify(document_features(d))
通過
classifier.show_most_informative_features(5)
可以找到最優資訊量的特徵,這對我們選取特徵是非常有幫助的
文字分類除了文件分類外還有許多其他型別的分類,比如:
詞性標註:屬於一種文字分類,一般是基於上下文語境的文字分類
識別對話行為型別:對話行為型別是指問候、問題、回答、斷言、說明等
識別文字蘊含:即乙個句子是否能得出另外乙個句子的結論,這可以認為是真假標籤的分類任務。這是乙個有挑戰的事情
統計自然語言處理 文字分類
文字表示有向量空間模型,片語表示法,概念表示法 目前文字通常採用向量空間模型表示 向量空間模型 vsm 給定乙個文件d t1,w1 t2,w2 tn,wn d符合以下兩條約定 1 各個特徵項tk 1 k n 互異 即沒有重複 2 各個特徵項tk無先後順序關係 即不考慮文件的內部結構 在以上兩個約定下...
自然語言處理 搭建文字分類器
乙個完整的文字分類器主要由兩個階段,一是將文字向量化,將乙個字串轉化成向量形式 二是將向量喂到分類器,包括svm,cnn,lstm等等。這邊做的專案其實階段用的是 tf idf 來進行文字向量化,使用卡方校驗 chi square 來降低向量維度,使用liblinear 採用線性核的svm 來進行分...
NLP自然語言處理 文字分類之評價指標
準確率關注整體效果,只適合均衡的資料。準確率公式如下 a cc urac y 預測 正確的樣 本數總樣 本數 accuracy frac accura cy 總 樣本數預 測正確的 樣本數 資料不均衡時使用以下的評價指標。精確率關注模型 得準不准。精確率公式如下 p re cisi on 預 測正確...