Обработка естественного языка, также известная как НЛП, в широком смысле определяется как автоматическая обработка естественного языка, например речи и текста, с помощью программного обеспечения. Анализ настроений - один из широко используемых компонентов НЛП.

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

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

Цель: цель задачи - выявить положительные и отрицательные отзывы на основе связанных с ними настроений.

Приступим !!!

ШАГ 1: Предварительная обработка данных

Это очень важная часть интеллектуального анализа текста. Необработанные данные содержат много шума, который не имеет отношения к информации, например, знаки препинания, пробелы, короткие слова (a, an, и т. Д.). В противном случае существует риск работы с зашумленными и несоответствующими данными.

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

Обработка имен пользователей. Не со всеми строками набора данных связаны имена пользователей, а также они не предоставляют никакой информации о характере твита. Так что мы можем их удалить. Сначала мы объединяем данные поезда и тестовые данные для очистки данных.

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

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

Как видно из приведенных выше данных, все знаки препинания удалены. Но «надлежащий_твит» по-прежнему содержит слова, не относящиеся к какой-либо надлежащей информации, например, было, и т. Д., Поэтому мы удалим и эти короткие слова.

Теперь мы проводим токенизацию твитов для отдельной обработки слов.

Теперь наши данные могут содержать корневые слова, а также производные от них слова. Например: беги, беги, беги. Хотя слова разные, но их значение одно и то же, если с ними не обращаться должным образом, эти 3 слова с одинаковыми значениями будут вносить вклад в 3 разные функции, которые не требуются. Итак, мы выполняем Stemming, при котором все слова сокращаются до их корня, так что количество функций сокращается. Для этого используется класс PorterStemmer из nltk (Natural Language Toolkit).

Теперь мы снова соединяем токены ……

На предыдущем этапе мы удалили все специальные символы, но сохранили хэштеги. Почему???? Потому что сегодня хэштеги - это способ самовыражения. Например: #goodmoodgoodday, #betterlife - это будет считаться позитивным, а #hateworld #fail - негативным. Итак, давайте посмотрим на хэштеги каждого твита.

Поскольку в нашем наборе данных положительные твиты имеют «метку» 0, а отрицательные твиты имеют «метку» 1, мы можем разделить положительные и отрицательные хэштеги с помощью «метки».

Посмотрим, как распределяются слова по положительным и отрицательным хэштегам. Мы смотрим на 10 лучших положительных и отрицательных хэштегов.

Как мы видим, в положительных хэштегах есть такие слова, как милый, жизнь и т. Д. В то время как в отрицательных хэштегах есть такие слова, как hateapple, fail и т. Д. Таким образом, хэштеги могут быть важной функцией, которую нужно включать при прогнозировании настроений. Теперь мы будем использовать класс TfidfVectorizer для извлечения признаков.

Поскольку наш прогноз является двоичным, т.е. «0» положительный твит и «1» отрицательный твит, мы будем использовать LogisticRegression для прогнозирования.

Прогнозирование тестового набора и создание файла для отправки:

Приведенный выше подход дал оценку f1 около 87% на тестовой выборке. Спасибо за чтение !!!