Как улучшить мой алгоритм написания словаря для определения тональности текста?

Я хочу создать свой словарь с оценкой негативности/позитивности слов. Т. е. будет файл в котором будут слова и их оценка (негативное, позитивное, нейтральное).

Вот такой алгоритм мне пришел в голову:

  1. я нахожу источники текста и разделяю их на позитивные и негативные
  2. Перед парсингом чищу текст от запятых предлогов и вводных слов и перевожу слова в начальную форму
  3. делаю парсинг источника и самым частым словам в количестве 30% от текста присваиваю ярлык негативные(если сейчас идет парсинг негативного источника)
  4. Аналогично с позитивными

Так вот мои вопросы:

  1. Насколько этот алгоритм плох и как его улучшить?
  2. как найти нейтральные слова?
  3. что делать со словами которые и позитивные и негативные?
  4. Как можно реализовать числовую оценку позитивности/негативности в диапазоне каком-то?

Ответы (1 шт):

Автор решения: CrazyElf
  1. Насколько этот алгоритм плох и как его улучшить?

    • В данном алгоритме не учитываются "веса" слов. Одни слова могут сильно влиять на тональность, другие не очень.
    • Не учитываются сочетания слов (2-3 слова, идущие подряд), а это тоже может дать прирост качества.
    • Не используются частоты, с которыми слова встречаются во всём корпусе и в конкретных источниках. Посмотрите к примеру на преобразование TF/IDF.
  2. как найти нейтральные слова?

  3. что делать со словами которые и позитивные и негативные?
    Это на самом деле один вопрос, а не два. Слова, которые не сильно влияют на тональность (или бывают обоих тональностей) должны иметь малый вес при определении тональности.

  4. Как можно реализовать числовую оценку позитивности/негативности в диапазоне каком-то?
    Проще всего всё-таки использовать какой-то алгоритм машинного обучения для этого, он сам подберёт веса слов и сделает преобразование количества слов в итоговую оценку 0 или 1, где скажем 0 - это негатив, а 1 - это позитив. Почитайте, например, про логистическую регрессию. И обычно алгоритмы машинного обучения могут выдать не только результат в виде 0 и 1, но и степень уверенности в этом результате. Проще всего посмотреть формулы из логистической регрессии, как там результат предсказания преобразуется в диапазон [0-1].

→ Ссылка