Вы когда-нибудь получали сообщение от своего друга или любимого человека, и вы не знали, как его оценить. Сейчас это что-то положительное или что-то отрицательное?

Это анализ настроений; оценивая тексты или аудио по их ощущениям. Это подраздел обработки естественного языка (NLP).

Чтобы решить эту проблему с помощью компьютеров, можно использовать множество методов. В этой вводной статье я хочу рассказать в целом о таких методах и построить их оттуда.

Подход на основе лексикона

Подход, основанный на лексике, — это просто… лексикон. Исследователи могут создавать эти словари автоматически, используя какой-то алгоритм, или им нужно маркировать их вручную.
Такие слова, как «захватывающий, удивительный, красивый», будут иметь положительное значение (+1), а отрицательные слова, такие как «несмешной, плохой, скучный», будут иметь отрицательное значение (-1). Нейтральные слова, такие как местоимения, или слова, не входящие в словарь, получат нулевое значение. Глядя на эти два примера (нули не пишутся, а учитываются), мы видим, что метод хорошо работает в лаконичных предложениях с ясным смыслом, но если они усложняются с отрицаниями и усилениями, мы теряем точность. Мы могли бы написать правила и исключения для этих случаев, но это требует другого словаря и очень быстро становится очень грязным. Однако результаты после учета этих проблем будут удовлетворительными, если вы останетесь в домене, для которого собираетесь его использовать. [2]

Инструментарий обработки естественного языка для Python предоставляет такую ​​модель с их моделью Sentiment Vader, вы можете найти ее здесь.

Еще одна модель, которая является довольно быстрой и очень производительной, — это наивный байесовский классификатор, использующий обучение с помощью научного набора. Он основан на теореме вероятности Байеса и обеспечивает очень хорошую точность, при этом обучение на 50 тысячах обзоров фильмов занимает всего несколько секунд.

В этом примере у нас есть 100 предложений, равномерно разделенных на положительные и отрицательные. У нас также есть предложение «Этот фильм красочный», которое встречается в общей сложности 16 раз. 15 раз появлялся в положительной части, один раз в отрицательной части, наверное дальтоник. Если бы мы ввели это предложение в обученный классификатор, чтобы он мог предсказать его тональность, он выполнил бы следующие вычисления:

Расчет вероятности того, что предложение будет положительным, составляет 15 на 16, что близко к 94%. Расчет вероятности того, что он будет отрицательным, составляет 1 к 16, то есть около 6%. Видя, что вероятность положительного предложения выше, классификатор классифицирует это предложение как положительное.

Но брать целые предложения очень неэффективно, так как язык очень сложен и предоставляет почти бесконечные возможности для того, чтобы сказать одно и то же. Отсюда модель получает свой аффикс «Наивный»; он предполагает, что каждое слово в предложении не зависит друг от друга, и вычисляет вероятности ранее для каждого слова независимо и берет сумму. Сумма является окончательной вероятностью и будет использоваться для классификации.

Эти две модели были самыми простыми моделями, которые любой мог вычислить на своем ноутбуке, в следующий раз мы на самом деле будем кодировать примеры, используя эти подходы, и сравнивать их результаты.

[1] Даниэль Пагано. Машинное обучение заменит задачи, а не рабочие места, говорят исследователи Массачусетского технологического института.
30 июня 2018 г. url: https://jwel.mit.edu/news/machine-learning-will-
replace- задачи-не-работы-говорят-мит-исследователи%C2%A0.

[2] Майте Табоада и др. Методы анализа настроений на основе лексикона. В: Computational Linguistics 37.2 (апрель 2011 г.), стр. 267–307. исн: 0891–2017. doi: 10.
1162/COLI_a_00049. URL: https://doi.org/10.1162/COLI_a_00049 (посещено
24.06.2020).