#python #machine-learning #nlp #nltk #sentiment-analysis
#python #машинное обучение #nlp #nltk #анализ настроений
Вопрос:
Недавно я начал изучать NLP и ML с помощью Python. Я начал с анализа настроений. Мне трудно понять, где машинное обучение вступает в игру при проведении анализа настроений.
Допустим, я анализирую твиты или заголовки новостей с помощью SentimentIntensityAnalyzer от NLTK, и я загружаю соответствующие случаю лексиконы, поэтому я получаю полярность и негативность, позитивность, нейтральные оценки. Теперь я не понимаю, в каком случае я должен использовать код, как в этой статье:
или просто встроенный, как в 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:
-
При достаточном количестве обучающих данных BERT может быть очень мощным, при достаточном количестве обучающих данных он должен быть в состоянии правильно получить пример в начале моего поста. И это огромное преимущество.
-
Поскольку BERT уже предварительно обучен, для получения хороших разумных результатов может потребоваться относительно небольшое количество обучающих выборок.
-
Поскольку BERT не требует (или требует намного меньше) разработки функций, он может быть быстрым с точки зрения разработки ML для получения хороших начальных результатов.
Основными ограничениями BERT являются:
-
Кривая обучения, в основном концептуальное понимание того, как это работает. Использование BERT не очень сложно.
-
БЕРТ медленно обучается и прогнозирует. Вам в значительной степени нужно использовать хотя бы умеренный графический процессор даже для небольшого набора данных.
-
Отсутствие прозрачности. Действительно трудно понять, почему модель на основе BERT предлагает то, что она предлагает.
Ответ №2:
NLP по сути является частью ML, или, другими словами, использует ML. Это «междисциплинарная область компьютерных и информационных наук, искусственного интеллекта и лингвистики, которая исследует естественный язык в текстах или речах» (ссылка).
Одной из задач NLP может быть анализ настроений, на который вы ссылались, для которого вы могли бы использовать различные инструменты NLP и ML. Существует большое разнообразие задач NLP и соответствующих им библиотек, в зависимости от ваших целей, таких как анализ настроений, тематическое моделирование и распознавание именованных объектов (NER).
Существует также несколько библиотек NLP даже для одной и той же задачи. В случае анализа настроений, например, Huggingface, NLKT и spaCy могут выполнять ту же цель. Вы могли бы посоветовать их документацию и решить, что подходит для вашей задачи, исходя из их производительности и требований.
Ориентировочные учебные пособия: Классификация текста в Python с использованием spaCy, Тренируйте свой собственный анализатор настроений с помощью spaCy, Точная настройка BERT для анализа настроений, Упрощение анализа настроений в Python.