Klasyfikacja dokumentów tekstowych to simple task with scikit-learn, ale nie ma w niej czystego wsparcia w NLTK, istnieją również próbki do tego w sposób trudny, jak na przykład this. Chcę wstępnie przetworzyć z NLTK i sklasyfikować przy pomocy sckit-learn i znalazłem SklearnClassifier w NLTK, ale jest mały problem.Używanie klasyfikatora scikit-learn wewnątrz pakietu nltk, multiclass
W scikit-learn wszystko jest 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_
Rezultatem jest ['first' 'second']
i to moje oczekiwania. Ale gdy próbuję użyć tego samego kodu w 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()
Rezultatem jest [('first',), ('second',), ('first', 'second')]
i to nie jest właściwy. Czy istnieje jakieś rozwiązanie?