Наивный байесовский классификатор не работает для анализа настроений - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь обучить наивного байесовского классификатора, чтобы предсказать, будет ли обзор mov ie хорошим или плохим. Я следую этому руководству, но натолкнулся на ошибку при попытке обучить модель:

https://medium.com/@MarynaL / analyzing-mov ie -review-data-with-natural-language-processing- 7c5cba6ed922

Я прошел все шаги до тренировки модели. Мои данные и код выглядят так:

                                                 Reviews  Labels
0      For fans of Chris Farley, this is probably his...       1
1      Fantastic, Madonna at her finest, the film is ...       1
2      From a perspective that it is possible to make...       1
3      What is often neglected about Harold Lloyd is ...       1
4      You'll either love or hate movies such as this...       1
                                              ...     ...
14995  This is perhaps the worst movie I have ever se...       0
14996  I was so looking forward to seeing this film t...       0
14997  It pains me to see an awesome movie turn into ...       0
14998  "Grande Ecole" is not an artful exploration of...       0
14999  I felt like I was watching an example of how n...       0

gnb = MultinomialNB()
gnb.fit(all_train_set['Reviews'], all_train_set['Labels'])

Однако, пытаясь подобрать модель, я получаю эту ошибку:

ValueError: could not convert string to float: 'For fans of Chris Farley, this is probably his best film. David Spade pl

Если кто-нибудь может помочь мне решить, почему следование этому руководству прошло неправильно это будет очень цениться.

Большое спасибо

1 Ответ

0 голосов
/ 19 февраля 2020

Действительно, с Scikit-learn вы должны конвертировать тексты в числа перед вызовом классификатора. Вы можете сделать это, используя, например, CountVectorizer или TfidfVectorizer.

Если вы хотите использовать более современные вложения слов, вы можно использовать пакет Zeugma (установить его с pip install zeugma в терминале), например,

from zeugma.embeddings import EmbeddingTransformer

embedding = EmbeddingTransformer('glove')

X = embedding.transform(all_train_set['Reviews'])
y = all_train_set['Labels']

gnb = MultinomialNB()
gnb.fit(X, y)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...