ЦЕЛЬ

Цель этого проекта - выявить и извлечь субъективную информацию из онлайн-обзоров. В частности, задача - анализ тональности. Согласно Википедии, анализ тональности направлен на определение отношения говорящего или писателя к какой-либо теме или общей контекстной полярности документа. Было показано, что отношение людей во многом проявляется в языке, который они принимают. Это задание раскроет вам тайну и поможет лучше понять наши сообщения в Интернете!

ПРОГНОЗНЫЙ АНАЛИЗ

ETL

ЗАГРУЗКА ДАННЫХ
Были загружены данные обзоров IMDB / Yelp / Amazon. В каждом наборе было 5000 записей.
«rstrip» использовался для того, чтобы сначала извлечь строки и создать список строк данных, а затем каждая строка была разделена на вкладки, по существу разделяя данные на формат с двумя столбцами, то есть REVIEW и SCORE.

Кроме того, было замечено, что для всех трех источников данных количество положительных и отрицательных отзывов, то есть баллы 0 и 1, были сбалансированы. Следовательно, набор данных был сбалансированным.

ДАННЫЕ ПОДГОТОВКА

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

Затем мы попытались удалить все знаки препинания, чтобы такие слова, как «я» и «я» (последнее - пример слова в конце строки), вообще не считались разными словами.

Затем мы удалили все стоп-слова, потому что такие слова, как «is», «the», «a», «too» и т. Д., Не передают никаких настроений. Для этого мы использовали встроенный словарь стоп-слов, предоставленный библиотекой NLTK.

Забегая вперед, мы сочли важным использовать функцию STEMMER, чтобы существительные, глаголы, наречия и т. Д. Не учитывались как разные вхождения. По сути, стемминг сокращает такие слова, как «видит» и «видел» до «видеть», так что у нас есть сокращенное и компактное представление семейства слов для всего.

Наконец, мы выполнили лемматизацию, чтобы разумно сгруппировать синонимы в единую категорию (например, хорошо, лучше, лучше все сгруппированы в категории Хорошо). Для этого мы использовали встроенный инструмент под названием Word Net Lemmatizer.

Разделение набора для обучения и тестирования
Мы использовали следующий фрагмент, чтобы разделить данные на данные для обучения и тестирования.

Подготовка данных и прогнозирование

Модель набора слов
Извлечение характеристик и представление каждого отзыва с помощью модели набора слов, т. е. каждое слово в обзоре становится отдельным элементом в векторе признаков. . Для этого сначала просмотрите все обзоры в обучающей выборке и создайте словарь уникальных слов. Затем выполните еще один обзор как в обучающей выборке, так и в наборе тестирования и подсчитайте количество вхождений каждого слова в вашем словаре. Элемент i th в векторе характеристик отзыва - это количество появлений i -го словарного слова в обзоре.

Поскольку подавляющее большинство английских слов не будет появляться в большинстве обзоров, большинство элементов вектора признаков будут равны 0. Это говорит о том, что нам нужна стратегия постобработки или нормализации, которая борется с огромной дисперсией элементов в векторе признаков. .
l 2 normalization - нормализация l 2 нормы вектора признаков, x ˆ = x / || x ||

Прогноз настроения

Логистическая регрессия и наивная байесовская модель были обучены и использовались для прогнозирования точности по тестовым данным.
ЛОГИСТИЧЕСКАЯ РЕГРЕССИЯ: точность - 0,79
NAVE BAYES: точность - 0,801

PCA для модели мешка слов
Функции в модели мешка слов имеют большую избыточность. Итак, мы реализовали PCA, чтобы уменьшить размерность вычисляемых функций до 10, 50 и 100 соответственно.

Прогноз настроения

Матрица точности для функций PCA

РЕЗУЛЬТАТ

Согласно приведенным выше результатам, сравните характеристики мешка слов, 2-грамма и PCA для мешка слов:

Таким образом, очевидно, что наилучшая производительность достигается при использовании модели СУМКА СЛОВ.

On looking at the Logistic Regression result some specific words have the most weight in de-ciding the sentiment of a sentence. For eg. best

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