NLTK NaiveBayesClassifier 分类器问题
NLTK NaiveBayesClassifier classifier issues
我正在试验 NaiveBayesClassifier 并且有以下训练数据:
positive_vocab = [ 'awesome' ]
negative_vocab = [ 'bad']
neutral_vocab = [ 'so-so' ]
...
classifier = NaiveBayesClassifier.train(train_set)
然后我将以下句子归类:不好 很棒的电影,我喜欢它
这是我得到的每个单词的结果:
差:差
awesome:pos
电影,:pos
i:pos
liked:pos
it:pos
How/why 决定将不在训练集中的单词(例如 I Liked It, Movie)分类为正数?
谢谢
训练情绪模型意味着您的模型了解词语如何影响情绪。 因此,这不是关于指定哪些词是正面的,哪些是负面的——而是关于如何训练你的模型从文本本身理解它。
最简单的实现称为 "bag of words"(通常与 TF-IDF 归一化一起使用)。 Bag of words 的工作原理是:将文本按单词拆分并计算给定文本块(或评论)中每个单词的出现次数。这样,行对应不同的评论,列对应给定单词在给定评论中出现的次数。这个 table 成为你的 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
我正在试验 NaiveBayesClassifier 并且有以下训练数据:
positive_vocab = [ 'awesome' ]
negative_vocab = [ 'bad']
neutral_vocab = [ 'so-so' ]
...
classifier = NaiveBayesClassifier.train(train_set)
然后我将以下句子归类:不好 很棒的电影,我喜欢它
这是我得到的每个单词的结果:
差:差 awesome:pos 电影,:pos i:pos liked:pos it:pos
How/why 决定将不在训练集中的单词(例如 I Liked It, Movie)分类为正数?
谢谢
训练情绪模型意味着您的模型了解词语如何影响情绪。 因此,这不是关于指定哪些词是正面的,哪些是负面的——而是关于如何训练你的模型从文本本身理解它。
最简单的实现称为 "bag of words"(通常与 TF-IDF 归一化一起使用)。 Bag of words 的工作原理是:将文本按单词拆分并计算给定文本块(或评论)中每个单词的出现次数。这样,行对应不同的评论,列对应给定单词在给定评论中出现的次数。这个 table 成为你的 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