Обработка естественного языка (NLP) — одна из самых полезных областей машинного обучения, которая значительно продвинулась вперед. И это тоже моя любимая тема. Под НЛП подпадает анализ настроений, очень полезная функция для анализа текстов.
Что такое анализ настроений?
Анализ настроений, также известный как анализ мнений, представляет собой процесс «вычислительного» определения того, является ли текст положительным, отрицательным или нейтральным. Это получение мнения или эмоций говорящего или рецензента.
Зачем нужен анализ тональности?
1. Бизнес: в маркетинге компании используют его для разработки своих стратегий, чтобы понять отношение клиентов к продуктам или бренду, как люди реагируют на их кампании или запуск продуктов и почему потребители не покупают некоторые продукты.
2. Политика: в политической сфере он используется для отслеживания политических взглядов и выявления согласованности и несоответствия между заявлениями и действиями на уровне правительства. Его также можно использовать для прогнозирования результатов выборов!
3. Публичные действия. Анализ настроений также используется для мониторинга и анализа социальных явлений, выявления потенциально опасных ситуаций и определения общего настроения блогосферы.
Анализ настроений VADER:
Анализ настроений VADER. VADER (Valence Aware Dictionary and sEntiment Reasoner) — это основанный на лексике и правилах инструмент анализа тональности, который специально настроен на настроения, выраженные в социальных сетях, а также хорошо работает с текстами из других доменов.
VADER использует комбинацию словаря настроений (списка лексических признаков, например, слов), которые обычно помечаются в соответствии с их семантической ориентацией как положительные или отрицательные. VADER не только показывает оценку позитивности и негативности, но также сообщает нам о том, насколько позитивным или негативным является настроение.
Для установки VADER используйте:
--pip install vaderSentiment
Давайте углубимся в пример, приведенный ниже пример из одного моего проекта, в котором я использовал VADER для анализа заметок из проекта массовой мобилизации, который предоставляет данные для протестов со всего мира.
Шаг 1: Создайте корпус из текстового столбца
corpus=list(df[‘notes’])
Шаг 2: Анализатор ненасытных настроений
#instantiate SIA sia=SentimentIntensityAnalyzer() #Get polarity scores for the first title sia.polarity_scores(corpus[0])
Шаг 3: Создайте фрейм данных, используя каждый документ в вашем корпусе
for text in corpus: scores = sia.polarity_scores(text) scores['text'] = text dicts.append(scores) df_new = pd.DataFrame(dicts) df_new.head()
И вы получаете ниже кадр данных:
Давайте отсортируем кадр данных по положительным или отрицательным оценкам и посмотрим на результаты:
df_new.sort_values(by='pos', ascending=False).head(10)
df_new.sort_values(by='neg', ascending=False).head(10)
Насилие протеста и реакция государства — две целевые переменные, используемые для EDA.
Ниже приведены средние положительные, отрицательные и составные баллы против насилия со стороны протестующих.
df_new.groupby('protesterviolence').mean()[['pos', 'neg', 'compound']].plot(kind='barh',title='Average Positive, Negative & Compound Scores for Protester Violence',figsize=(15,10),color=(['blue','orange','red']))
Мы видим, что средний максимальный составной балл, выделенный красным, склоняется к негативным настроениям в отношении протестов с насилием со стороны протестующих (насилие со стороны протестующих = 1).
Ниже приведены средние положительные, отрицательные и составные баллы по отношению к ответу на состояние.
df_new.groupby('stateresponse').mean()[['pos', 'neg', 'compound']].plot(kind='barh',title='Average Positive, Negative & Compound Scores for State response',figsize=(15,10),color=(['blue','orange','red']))
Здесь мы видим максимальную отрицательную составную оценку, выделенную красным цветом, для отрицательной реакции состояния, такой как стрельба, убийства, избиения, аресты и т. д.
Вывод:
· Основываясь на приведенном выше анализе, VADER является очень мощным инструментом для анализа тональности текстов.
· Этот фрейм данных и оценки положительных и отрицательных результатов можно использовать в дальнейшем при моделировании.
Ресурсы:
https://www.geeksforgeeks.org/python-sentiment-analysis-using-vader/