テキストドキュメントの分類はscikit-learnを使用した簡単なタスクですが、NLTKではそれを明確にサポートしていません。また、このように難しい方法で分類するためのサンプルもあります。NLTKで前処理し、sckit-learnで分類したいのですが、NLTKでSklearnClassifierを見つけましたが、少し問題があります。
scikit-learnではすべてがOKです:
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')]
、そしてそれは適切なものではありません。解決策はありますか?