Цель проблемы:

Основная цель проекта - спрогнозировать настроения для ряда обзоров фильмов, полученных из базы данных фильмов в Интернете (IMDb). Этот набор данных содержит 50 000. Обзоры фильмов, которые были предварительно помечены ярлыками класса тональности как «положительный» или «отрицательный» на основе содержания обзора. Помимо этого, есть дополнительные обзоры фильмов, которые не помечены.

Набор данных можно получить на сайте http://ai.stanford.edu/~amaas/data/sentiment/, любезно предоставлено Стэнфордским университетом и Эндрю Л. Маасом, Раймондом Э. Дейли, Питером Т. Фамом, Дэном Хуангом, Эндрю Й. Нг и Кристофер Поттс. У них есть наборы данных в виде необработанного текста, а также уже обработанный пакет форматов слов.

Следовательно, наша задача будет заключаться в том, чтобы предсказать настроение 15 000 обзоров фильмов с ярлыками и использовать оставшиеся 35 000 обзоров для обучения наших контролируемых моделей.

Шаг 1. Предварительная обработка и нормализация текста

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

• Чистящий текст:

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

• Удаление диакритических знаков:

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

• Расширяющиеся схватки:

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

• Удаление специальных символов:

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

• Удаление стоп-слов:

Слова, которые не имеют большого значения или не имеют никакого значения, особенно при построении значимых элементов из текста, также известны как стоп-слова. Такие слова, как a, an, the и т. Д., Считаются стоп-словами. Универсального списка запрещенных слов не существует, но мы используем стандартный список запрещенных слов на английском языке от nltk. При необходимости вы также можете добавить свои собственные игнорируемые слова для конкретного домена.

• Стемминг и лемматизация:

Основы слов обычно являются базовой формой возможных слов, которые могут быть созданы путем присоединения к основанию аффиксов, таких как префиксы и суффиксы, для создания новых слов. Это называется перегибом. Обратный процесс получения основной формы слова известен как основание. Простым примером являются слова WATCHES, WATCHING и WATCHED. У них есть корень слова WATCH как основная форма. Пакет nltk предлагает широкий выбор стеммеров, таких как PorterStemmer и LancasterStemmer. Лемматизация очень похожа на выделение корней, когда мы удаляем аффиксы слов, чтобы получить базовую форму слова. Однако основная форма в этом случае известна как корневое слово, но не как корневая основа. Разница в том, что корневое слово всегда является лексикографически правильным словом (присутствует в словаре), но коренное слово может быть другим. Мы будем использовать только лемматизацию в нашем конвейере нормализации, чтобы сохранить лексикографически правильные слова.

Код нормализации текста см. - https://github.com/Puspita-111/Suven-consultants-and-technology/blob/main/Text%20Normalization%20Demo.ipynb

Подход 1. Проведение анализа настроений с использованием моделей, основанных на неконтролируемой лексике:

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

. Словарь Бин Лю

. Лексикон субъективности MPQA

. Словарь шаблонов

. AFINN Lexicon

. SentiWordNet Lexicon

. VADER Lexicon

Мы будем использовать последние 3 модели лексики для анализа настроений. Ссылка- https://github.com/Puspita-111/Suven-consultants-and-technology/blob/main/Sentiment%20Analysis%20-%20Unsupervised%20Lexical.ipynb

Оценка модели AFINN:

Model Performance metrics:
------------------------------
Accuracy: 0.71
Precision: 0.73
Recall: 0.71
F1 Score: 0.71
Model Classification report:
------------------------------
             precision    recall  f1-score   support
   positive       0.67      0.85      0.75      7510
   negative       0.79      0.57      0.67      7490
avg / total       0.73      0.71      0.71     15000

Prediction Confusion Matrix:
------------------------------
                 Predicted:         
                   positive negative
Actual: positive       6376     1134
        negative       3189     4301

Оценка модели SentiWordNet:

Model Performance metrics:
------------------------------
Accuracy: 0.69
Precision: 0.69
Recall: 0.69
F1 Score: 0.68

Model Classification report:
------------------------------
             precision    recall  f1-score   support

   positive       0.66      0.76      0.71      7510
   negative       0.72      0.61      0.66      7490

avg / total       0.69      0.69      0.68     15000


Prediction Confusion Matrix:
------------------------------
                 Predicted:         
                   positive negative
Actual: positive       5742     1768
        negative       2932     4558

Оценка модели VADER:

Model Performance metrics:
------------------------------
Accuracy: 0.71
Precision: 0.72
Recall: 0.71
F1 Score: 0.71

Model Classification report:
------------------------------
             precision    recall  f1-score   support

   positive       0.67      0.83      0.74      7510
   negative       0.78      0.59      0.67      7490

avg / total       0.72      0.71      0.71     15000


Prediction Confusion Matrix:
------------------------------
                 Predicted:         
                   positive negative
Actual: positive       6235     1275
        negative       3068     4422

Подход 2: классификация настроений с помощью контролируемого обучения:

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

Основные шаги для достижения этого перечислены ниже:

1. Подготовьте наборы данных для обучения и тестирования (необязательно набор данных для проверки)

2. Предварительная обработка и нормализация текстовых документов.

3. Разработка функций

4. Модельное обучение

5. Прогнозирование и оценка модели

Код см. - https://github.com/Puspita-111/Suven-consultants-and-technology/blob/main/Sentiment%20Analysis%20-%20Supervised.ipynb

Модель логистической регрессии по характеристикам BOW:

Model Performance metrics:
------------------------------
Accuracy: 0.91
Precision: 0.91
Recall: 0.91
F1 Score: 0.91
Model Classification report:
------------------------------
             precision    recall  f1-score   support
   positive       0.90      0.91      0.91      7510
   negative       0.91      0.90      0.90      7490
avg / total       0.91      0.91      0.91     15000

Prediction Confusion Matrix:
------------------------------
                 Predicted:         
                   positive negative
Actual: positive       6817      693
        negative        731     6759

Модель логистической регрессии по функциям TF-IDF:

Model Performance metrics:
------------------------------
Accuracy: 0.9
Precision: 0.9
Recall: 0.9
F1 Score: 0.9

Model Classification report:
------------------------------
             precision    recall  f1-score   support

   positive       0.89      0.90      0.90      7510
   negative       0.90      0.89      0.90      7490

avg / total       0.90      0.90      0.90     15000


Prediction Confusion Matrix:
------------------------------
                 Predicted:         
                   positive negative
Actual: positive       6780      730
        negative        828     6662

Модель SVM на BOW особенности:

Model Performance metrics:
------------------------------
Accuracy: 0.9
Precision: 0.9
Recall: 0.9
F1 Score: 0.9

Model Classification report:
------------------------------
             precision    recall  f1-score   support

   positive       0.90      0.89      0.90      7510
   negative       0.90      0.91      0.90      7490

avg / total       0.90      0.90      0.90     15000


Prediction Confusion Matrix:
------------------------------
                 Predicted:         
                   positive negative
Actual: positive       6721      789
        negative        711     6779

Модель SVM по функциям TF-IDF:

Model Performance metrics:
------------------------------
Accuracy: 0.9
Precision: 0.9
Recall: 0.9
F1 Score: 0.9

Model Classification report:
------------------------------
             precision    recall  f1-score   support

   positive       0.89      0.91      0.90      7510
   negative       0.91      0.88      0.90      7490

avg / total       0.90      0.90      0.90     15000


Prediction Confusion Matrix:
------------------------------
                 Predicted:         
                   positive negative
Actual: positive       6839      671
        negative        871     6619

Таким образом, мы можем понять, что модель логистической регрессии для функций BOW работает лучше, чем модель AFINN. Вот сравнение ниже:

AFINN                                           LOGISTIC REGRESSION
Accuracy: 0.71                                      Accuracy: 0.91
Precision: 0.73                                     Precision: 0.91
Recall: 0.71               VS                       Recall: 0.91
F1 Score: 0.71                                      F1 Score: 0.91

Будьте на связи…

Автор: Пушита Саха, энтузиаст машинного обучения и глубокого обучения, рассказчик историй данных.