【发布时间】:2012-11-11 01:37:44
【问题描述】:
文本文档的分类是 simple task with scikit-learn,但在 NLTK 中并没有明确的支持,也有像 this 这样的困难示例。我想用 NLTK 进行预处理,用 sckit-learn 进行分类,我在 NLTK 中找到了 SklearnClassifier,但是有一点问题。
在 scikit-learn 中一切正常:
from sklearn.naive_bayes import MultinomialNB
from sklearn.multiclass import OneVsRestClassifier
X_train = [[0, 0], [0, 1], [1, 1]]
y_train = [('first',), ('second',), ('first', 'second')]
clf = OneVsRestClassifier(MultinomialNB())
clf.fit(X_train, y_train)
print clf.classes_
结果是['first' 'second'],这是我的预期。但是当我尝试在 NLTK 中使用相同的代码时:
from nltk.classify import SklearnClassifier
X_train = [{'a': 1}, {'b': 1}, {'c': 1}]
y_train = [('first',), ('second',), ('first', 'second')]
clf = SklearnClassifier(OneVsRestClassifier(MultinomialNB()))
clf.train(zip(X_train, y_train))
print clf.labels()
结果是[('first',), ('second',), ('first', 'second')],它不是正确的。有什么解决办法吗?
【问题讨论】:
标签: python nltk scikit-learn