Я играл с различными классификаторами и vectorizers, что scikit учиться обеспечивают так скажем, у меня есть следующие:Проблемы классификации помеченного текста, неправильного предсказания?
training = [["this was a good movie, 'POS'"],
["this was a bad movie, 'NEG'"],
["i went to the movies, 'NEU'"],
["this movie was very exiting it was great, 'POS'"],
["this is a boring film, 'NEG'"]
,........................,
[" N-sentence, 'LABEL'"]]
#Where each element of the list is another list that have documents, then.
splitted = [#remove the tags from training]
from sklearn.feature_extraction.text import HashingVectorizer
X = HashingVectorizer(
tokenizer=lambda doc: doc, lowercase=False).fit_transform(splitted)
print X.toarray()
Тогда у меня есть это векторное представление:
[[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]]
Проблема с этим является то, что я не знаю, если я оцифрованный правый корпус, а затем:
#This is the test corpus:
test = ["I don't like this movie it sucks it doesn't liked me"]
#I vectorize the corpus with hashing vectorizer
Y = HashingVectorizer(
tokenizer=lambda doc: doc, lowercase=False).fit_transform(test)
Тогда я распечатайте Y
:
[[ 0. 0. 0. ..., 0. 0. 0.]]
Тогда
y = [x[-1]for x in training]
#import SVM and classify
from sklearn.svm import SVC
svm = SVC()
svm.fit(X, y)
result = svm.predict(X)
print "\nThe opinion is:\n",result
И вот проблема, я получил следующее Insted из [NEG], который на самом деле правильный прогноз:
["this was a good movie, 'POS'"]
Я предполагаю, что я не векторизации право training
или y
Цель неверна, может кто-нибудь помочь мне понять, что происходит, и как я должен векторизовать training
, чтобы иметь правильное предсказание?
Спасибо, что помогли мне понять. Проблема, которую я хотел бы прояснить, - это «labelin». Как насчет того, если я скажу так же, как пример: 1000000 предложений 'training', как я могу пометить предложения обучения и представить его классификатору, если я просто назову вручную этими 1000000 предложениями и поместим их в конце каждого из них предложение?. – tumbleweed
Если вы имеете в виду в текстовом файле, то вы можете выбрать разделитель как '|', а потом их будет легко читать отдельно с помощью pandas или cvs-модуля. – elyase
Я имею в виду что-то вроде этого: 'training = [[" первое предложение, 'LABEL' "], [" второе предложение, LABEL ']] ... ["N opinion,' LABEL ']]]. Потому что я хотел бы получить все документы в списке, один документ в списке и затем векторизовать их. – tumbleweed