У моего предыдущего работодателя (SmartFinance❤) моя основная роль была руководителем проекта команды Natural Language. Обработка естественного языка — это способность компьютеров понимать человеческий язык через речь и текст. Я нахожу это очень интересным и, конечно же, сложным. Это также имеет отношение к ключевой цели искусственного интеллекта — установлению связи между компьютерами и людьми: младенцы погружаются в язык и учатся обрабатывать его, поэтому, если компьютерные программы умны, они должны уметь это делать, надеюсь, лучше. >?Одна особая область естественного языка, которую я нахожу увлекательной, называется анализом настроений. Это изучение эмоций на естественном языке и способности компьютера это понимать. Для этого компьютерные программы применяют методы анализа естественного языка и текста для распознавания и извлечения субъективной информации из текста.

Мы знаем, что это навык (большинства) людей. Несмотря на то, что мы, как правило, довольно хорошо интерпретируем общение, помимо того, какие слова явно сказаны, это все еще сложная задача для нас. Например, когда друг отправляет текстовое сообщение, в котором говорится: «k», некоторые люди, получающие это сообщение, могут интерпретировать это как человека, отправившего сообщение, сумасшедшего, отчасти из-за того, что это был короткий ответ; другие люди могут просто прийти к выводу, что человек, отправивший его, соглашается с любым первоначальным сообщением, которое было отправлено им.

Хотя анализ настроений очень сложен, он важен, поскольку имеет много практического применения. Он часто используется для анализа отзывов (о фильмах, продуктах, песнях и т. д.) и классификации их как положительных или отрицательных. Это полезно для компаний, чтобы оценить, какие продукты получили отрицательные отзывы, а какие положительные. Еще один распространенный случай анализа настроений — количественная оценка мнений в социальных сетях. Это полезно для отслеживания успеха в социальных сетях; например, если о теме в новостях или о компании говорят положительно или отрицательно.

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

Тональность – это популярная библиотека, используемая для анализа тональности входного текста. Он принимает в качестве входных данных текстовый блок и использует список слов AFINN-165 и рейтинг настроений эмодзи.

Эти списки содержат слова/смайлики с жестко заданным рейтингом от -5 до +5 по валентности. Модуль настроений возвращает: токены, слова, положительный массив, отрицательный массив, общий балл и сравнительный рейтинг. Токены — это каждая часть входного текста; слова - это те, которые имеют соответствующие совпадающие значения в любом списке; положительный список — это массив слов, оцененных как положительные; и аналогично, отрицательный список содержит слова, распознанные как отрицательные.

Как только модуль получает входной текст, он выполняет анализ, сверяя токены входного текста с их соответствующими оценками в этих двух списках. Он суммирует рейтинг каждого слова, включая рассмотрение отрицателей (например, не может), которые меняют тональность следующего за ним слова. Эта сумма является возвращенным счетом. Наконец, выводимое сравнительное значение представляет собой сумму каждого токена/количества токенов.

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

1) Порядок слов имеет значение, и многие методы этого не учитывают. Например, в обзоре: «плохо» vs «хорошо, нет?» означают очень разные вещи. Это легко осознать человеку, потому что мы читаем его с разной коннотацией, но компьютеру гораздо труднее понять и интерпретировать разницу.

2) В настоящее время, как объяснялось ранее, этот модуль анализа тональности использует оценки каждого слова и выполняет простые алгоритмы для определения общей тональности текстового блока. Поскольку возвращаемый общий и сравнительный баллы в первую очередь основаны на оценках слов, они жизненно важны. Это заставляет меня задаться вопросом, как лучше всего установить эти рейтинги? В настоящее время я предполагаю, что рейтинги валентности устанавливаются вручную, а затем корректируются на основе результатов анализа. Это много работы; вместо этого мы должны иметь возможность делать это автоматически.

Для этого нам нужен какой-то алгоритм обучения, чтобы адаптировать оценку каждого слова. Алгоритм обучения должен будет различать, какие оценки приводят к значительным положительным изменениям, а затем соответствующим образом корректировать оценки. Например, предположим, что человек оценивает набор отзывов и делает вывод, что некоторые из них положительные, а некоторые — отрицательные; затем алгоритм просматривает тот же набор, но классифицирует их все как положительные. Программа должна будет скорректировать оценки слов в этих обзорах, чтобы алгоритм выдавал более точные результаты.

3) Следующей большой проблемой анализа настроений является адаптация предметной области: в разных предметных областях люди используют разные слова для обозначения разных вещей. Например, исследователи из Пенсильванского университета сформулировали алгоритм обучения анализу настроений для обзоров и обучили его на обзорах книг на Amazon. Затем они использовали модель, созданную для просмотра обзоров фильмов. Поскольку модель была создана для обзоров книг, она не будет работать так же для обзоров фильмов, поэтому нам нужно подумать о том, что и сколько нужно изменить. Модель должна выучить новый словарный запас; например, значения некоторых слов могут измениться с положительной оценки на отрицательную, а значения некоторых слов могут стать неактуальными. Например, слово «автор» очень важно в рецензиях на книги и гораздо реже — в рецензиях на фильмы.

Другой пример — просмотр обзоров компьютеров, а затем их использование для анализа обзоров мобильных телефонов. Есть слова, на которые стоит обратить внимание обоим; например, «скорость» или «память». Но новые слова, которые появляются, могут быть важны для одного, но не для другого; например, «сервис» важен для сотовых телефонов, но не для компьютеров. Итак, критерии, которые вы оцениваете, меняются по мере того, как вы переходите на новый домен.

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

4) Наконец, помимо смены домена на домен, нам нужно подумать о том, как язык меняется со временем и платформой. Например, анализ настроений обычно проводится по твитам. Текст здесь отличается от других платформ из-за таких аспектов, как сленг, а также веб-грамматика; например, слова «больной» и «больной» могут иметь разное значение в зависимости от времени/года и платформы, на которой они используются.

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