2017-08-09 67 views
0

從Scikit學習使用Python MultinomialNB(),我想不僅在文檔Word功能,而且在情緒詞典(意思是隻字未列出的Python數據類型)的文件進行分類。添加功能,多項樸素貝葉斯分類器 - Python的

假設這些文件,以培養

train_data = ['i hate who you welcome for','i adore him with all my heart','i can not forget his warmest welcome for me','please forget all these things! this house smells really weird','his experience helps a lot to complete all these tedious things', 'just ok', 'nothing+special today'] 

train_labels = ['Nega','Posi','Posi','Nega','Posi','Other','Other'] 

psentidict = ['welcome','adore','helps','complete','fantastic'] 
nsentidict = ['hate','weird','tedious','forget','abhor'] 
osentidict = ['ok','nothing+special'] 

我可以通過所有令牌的計算根據相應的標籤訓練下方

from sklearn import naive_bayes 
from sklearn.pipeline import Pipeline 

text_clf = Pipeline([('vect', CountVectorizer()), 
        ('clf', naive_bayes.MultinomialNB(alpha = 1.0)),]) 

text_clf = text_clf.fit(train_data, train_labels) 

喜歡這些名單雖然我訓練中的數據,我想將我的情感字典用作額外的分類功能。

這是因爲通過詞典訓練的特徵,可以預測OOV(超出詞彙量)。只有笨拙的拉普拉斯平滑(alpha = 1.0),整體精度將受到嚴重限制。

test_data = 'it is fantastic' 
predicted_labels = text_clf.predict(test_data) 

隨着字典功能的增加,可以預測上面的句子,儘管每一個單詞都不在訓練文檔中。

如何將psentidict,nsentidictosentidict的特徵添加到Multinomial樸素貝葉斯分類器?

回答

1

我相信沒有其他辦法,包括你的多項Naive Bayes模型的特點(所以我覺得這是更好地找到另一種方式訓練他們,就像文件可以扭曲的測量)。這很簡單,因爲你想要將某種標籤與特徵相關聯(比如說,對正確的值來說是正值)。這隻能通過用上述一對特徵和標籤來訓練你的模型來實現。你可以做的是,通過創建具有上述特徵的句子來改進模型,而不是直接使用單詞,比如,對於'仇恨'這個詞,你可以用'我全心全意恨你'和添加情緒作爲'消極',而不是隻使用'仇恨':'消極'。所以,你已經爲你的數據集創建了更多這樣的例子。

希望this link有幫助。