NLTK 朴素贝叶斯分类器分类器问题



我正在试验朴素贝叶斯分类器,并有以下训练数据:

positive_vocab = [ 'awesome' ]
negative_vocab = [ 'bad']
neutral_vocab = [ 'so-so' ]
...
classifier = NaiveBayesClassifier.train(train_set) 

然后我对以下句子进行分类:糟糕的真棒电影,我喜欢它

以下是我得到的每个单词:

坏:负 真棒:POS 电影,:p i:POS 喜欢:POS 它:POS

如何/为什么决定将不在训练集中的单词(例如我喜欢它,电影(分类为正数?

谢谢

训练情绪模型意味着模型了解单词如何影响情绪。因此,这不是关于指定哪些单词是积极的,哪些是消极的 - 而是关于如何训练你的模型从文本本身理解这一点

最简单的实现称为"词袋"(通常与 TF-IDF 规范化一起使用(。单词袋的工作方式是这样的:您按单词拆分文本,并计算给定文本块(或评论(中每个单词的出现次数。这样,行对应于不同的评论,列对应于给定评论中给定单词的出现次数。此表将成为您的X,要预测的目标情绪将成为您的Y(例如 0 表示负数,1 表示正面(。

然后训练分类器:

from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
reviews, Y = your_load_function()
vectorizer = TfidfVectorizer()  # or CountVectorizer()
X = vectorizer.fit_transform(reviews)  # convert text to words counts
model = MultinomialNB()
model.fit(X, Y)

训练模型后,可以进行预测:

new_reviews = your_load_function2()
new_X = vectorizer.transform(new_reviews)
predicted_Y = model.predict(new_X)

延伸阅读:
https://en.wikipedia.org/wiki/Bag-of-words_model
https://en.wikipedia.org/wiki/Tf-idf
http://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.MultinomialNB.html
http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html

最新更新