Как улучшить мой алгоритм написания словаря для определения тональности текста?
Я хочу создать свой словарь с оценкой негативности/позитивности слов. Т. е. будет файл в котором будут слова и их оценка (негативное, позитивное, нейтральное).
Вот такой алгоритм мне пришел в голову:
- я нахожу источники текста и разделяю их на позитивные и негативные
- Перед парсингом чищу текст от запятых предлогов и вводных слов и перевожу слова в начальную форму
- делаю парсинг источника и самым частым словам в количестве 30% от текста присваиваю ярлык негативные(если сейчас идет парсинг негативного источника)
- Аналогично с позитивными
Так вот мои вопросы:
- Насколько этот алгоритм плох и как его улучшить?
- как найти нейтральные слова?
- что делать со словами которые и позитивные и негативные?
- Как можно реализовать числовую оценку позитивности/негативности в диапазоне каком-то?
Ответы (1 шт):
Насколько этот алгоритм плох и как его улучшить?
- В данном алгоритме не учитываются "веса" слов. Одни слова могут сильно влиять на тональность, другие не очень.
- Не учитываются сочетания слов (2-3 слова, идущие подряд), а это тоже может дать прирост качества.
- Не используются частоты, с которыми слова встречаются во всём корпусе и в конкретных источниках. Посмотрите к примеру на преобразование
TF/IDF
.
как найти нейтральные слова?
что делать со словами которые и позитивные и негативные?
Это на самом деле один вопрос, а не два. Слова, которые не сильно влияют на тональность (или бывают обоих тональностей) должны иметь малый вес при определении тональности.Как можно реализовать числовую оценку позитивности/негативности в диапазоне каком-то?
Проще всего всё-таки использовать какой-то алгоритм машинного обучения для этого, он сам подберёт веса слов и сделает преобразование количества слов в итоговую оценку 0 или 1, где скажем 0 - это негатив, а 1 - это позитив. Почитайте, например, про логистическую регрессию. И обычно алгоритмы машинного обучения могут выдать не только результат в виде 0 и 1, но и степень уверенности в этом результате. Проще всего посмотреть формулы из логистической регрессии, как там результат предсказания преобразуется в диапазон [0-1].