Вы когда-нибудь получали сообщение от своего друга или любимого человека, и вы не знали, как его оценить. Сейчас это что-то положительное или что-то отрицательное?
Это анализ настроений; оценивая тексты или аудио по их ощущениям. Это подраздел обработки естественного языка (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).