NLP, разница между использованием анализа настроений NLTK и использованием подхода ML

#python #machine-learning #nlp #nltk #sentiment-analysis

#python #машинное обучение #nlp #nltk #анализ настроений

Вопрос:

Недавно я начал изучать NLP и ML с помощью Python. Я начал с анализа настроений. Мне трудно понять, где машинное обучение вступает в игру при проведении анализа настроений.

Допустим, я анализирую твиты или заголовки новостей с помощью SentimentIntensityAnalyzer от NLTK, и я загружаю соответствующие случаю лексиконы, поэтому я получаю полярность и негативность, позитивность, нейтральные оценки. Теперь я не понимаю, в каком случае я должен использовать код, как в этой статье:

Настрой с помощью ML toturial

или просто встроенный, как в NLTK, или даже что-то вроде BERT от Google?

Любой ответ или ссылка на блог или учебник будут приветствоваться!

Ответ №1:

SentimentIntensityAnalyzer это инструмент, созданный специально для анализа настроений, он прост в использовании, но может пропустить некоторые случаи, например:

 In [52]: from nltk.sentiment.vader import SentimentIntensityAnalyzer                                                

In [53]: sia = SentimentIntensityAnalyzer()                                                                         

In [54]: sia.polarity_scores("I am not going to miss using this product.")                                          
Out[54]: {'neg': 0.0, 'neu': 0.829, 'pos': 0.171, 'compound': 0.1139}
  

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

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

Основные преимущества BERT:

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

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

  3. Поскольку BERT не требует (или требует намного меньше) разработки функций, он может быть быстрым с точки зрения разработки ML для получения хороших начальных результатов.

Основными ограничениями BERT являются:

  1. Кривая обучения, в основном концептуальное понимание того, как это работает. Использование BERT не очень сложно.

  2. БЕРТ медленно обучается и прогнозирует. Вам в значительной степени нужно использовать хотя бы умеренный графический процессор даже для небольшого набора данных.

  3. Отсутствие прозрачности. Действительно трудно понять, почему модель на основе BERT предлагает то, что она предлагает.

Ответ №2:

NLP по сути является частью ML, или, другими словами, использует ML. Это «междисциплинарная область компьютерных и информационных наук, искусственного интеллекта и лингвистики, которая исследует естественный язык в текстах или речах» (ссылка).

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

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

Ориентировочные учебные пособия: Классификация текста в Python с использованием spaCy, Тренируйте свой собственный анализатор настроений с помощью spaCy, Точная настройка BERT для анализа настроений, Упрощение анализа настроений в Python.