Классифицировать негативные и позитивные слова в больших файлах?
Я пытаюсь получить количество положительных и отрицательных значений в очень большом файле. Мне нужен только примитивный подход (это не займет много времени). Я попробовал sentiwordnet, но продолжаю получать IndexError: list index out of range
Я думаю, это связано со словами, которых нет в словаре wordnet. Текст содержит много опечаток и "не-слов".
Если бы кто-то мог дать какое-либо предложение, я был бы очень благодарен!
1 ответ
Все зависит от того, на что похожи ваши данные и какова конечная цель вашей задачи. Вам нужно дать нам немного более подробное описание вашего проекта, но, в общем, вот ваши варианты:
- Создайте свой собственный словарь для анализа настроений: я действительно сомневаюсь, что это то, что вы хотите сделать, так как это занимает много времени и усилия, но если ваши данные достаточно просты, это выполнимо.
- Очистите свои данные: если ваши токены не находятся в сети senti-wordnet из-за слишком большого количества шума и плохо написанных слов, то попробуйте исправить их, прежде чем передавать их через wordnet, это как минимум ограничит количество ошибок, которые вы получите.
- Используйте альтернативу senti-wordnet: согласен, хороших не так много, но вы всегда можете попробовать https://pypi.org/project/sentiment_classifier/ или nltk, если вы используете python (который, судя по вашему, кажется, что вы есть).
- Классифицируйте только то, что вы можете: это то, что я бы порекомендовал. Если слово отсутствует в senti-wordnet, перейдите к следующему. Просто лови ошибку (try: ... except IndexError: pass
) и попытайтесь определить, каково общее настроение данных, подсчитав слова настроения, которые вы на самом деле поймаете.
PS: Нам нужно было бы увидеть ваш код, чтобы быть уверенным, но я думаю, что есть еще одна причина, по которой вы получаете IndexError. Если бы слова не было в senti-wordnet, вы бы получили KeyError, но это также зависит от того, как вы закодировали свою функцию.
Удачи, и я надеюсь, что это было полезно.