Анализ товарных обзоров, рекомендации фильмов, прогнозы фондового рынка... Очень полезен анализ настроений. Эта статья поможет вам шаг за шагом получить собственные результаты анализа тональности с помощью Python. Не хотите попробовать?
нужно
Если вы занимаетесь исследованиями в области науки о данных или деловой практикой, вы должны быть знакомы с термином «анализ настроений».
В Википедии определение анализа настроений звучит так:
Анализ тональности текста (также известный как интеллектуальный анализ мнений) относится к использованию обработки естественного языка, интеллектуального анализа текста и компьютерной лингвистики для выявления и извлечения субъективной информации из исходного материала.
Звучит грандиозно, не так ли? Что, если бы вы были более конкретными?
Дайте вам фрагмент текста, и вы сможете использовать автоматизированный метод анализа тональности, чтобы понять, какая эмоциональная окраска содержится в этом фрагменте контента.
Волшебно, правда?
Анализ настроений — это не уловка. Это способ заработать состояние в тишине. Еще в 2010 году некоторые ученые отметили, что анализ настроений общедоступной информации в Твиттере можно использовать для прогнозирования взлетов и падений фондового рынка с точностью 87,6%!
По мнению этих ученых, как только вы получите доступ к огромному количеству текстовых данных в социальных сетях в режиме реального времени и освоите темную магию анализа настроений, у вас появится хрустальный шар для прогнозирования последних тенденций инвестиционного рынка.
Разве это чувство сокрушения конкурентов с помощью науки о данных не удивительно?
В эпоху больших данных нам доступно слишком много текстовых данных. Нам достаточно информации из комментариев от Dianping, Douban и Amazon Shanghai, чтобы копнуть глубже.
Вы задаетесь вопросом, как вы, студент гуманитарных наук, не специализирующийся на компьютерах, можете применять такие передовые технологии?
не нужно беспокоиться. В прошлом анализ настроений был только рецептом для лабораторий или крупных компаний. Сейчас он уже залетел в дома простых людей. Снижение порога позволяет обычным людям использовать несколько строк кода Python для завершения обработки анализа тональности больших объемов текста.
Готовитесь попробовать?
Итак, приступим.
Установить
Чтобы получить максимальную отдачу от Python и связанных с ним пакетов, вам необходимо сначала установить пакет Anaconda. Подробные этапы процесса см.Как сделать облако слов в Python" статья.
Перейдите в «Терминал» вашей системы (macOS, Linux) или «Командная строка» (Windows), войдите в демо-версию нашего рабочего каталога и выполните следующие команды.
pip install snownlp
pip install -U textblob
python -m textblob.download_corpora
Итак, ваша среда выполнения анализа тональности настроена.
В терминале или командной строке введите:
jupyter notebook
Вы увидите предыдущие файлы в каталоге, просто игнорируйте их.
Что ж, теперь мы можем с радостью использовать Python для написания программ и анализа тональности текста.
английский
Давайте сначала посмотрим на анализ тональности английских текстов.
Здесь нам нужно использоватьПакет TextBlob.
На самом деле, как видно из приведенного выше рисунка, этот пакет может делать много вещей, связанных с обработкой текста. В этой статье мы сосредоточимся только на анализе настроений. Позже мы представим другие функции.
Давайте создадим новый блокнот Python 2 и назовем его «анализ настроений».
Сначала подготовьте текстовые данные на английском языке.
text = "I am happy today. I feel sad today."
Здесь мы вводим два предложения и сохраняем их в переменной text. Вы, изучавшие английский более десяти лет, должны сразу распознать эмоциональные признаки этих двух предложений. Первое предложение — «Я сегодня счастлив», положительное, второе предложение — «Я сегодня в депрессии», отрицательное.
Давайте посмотрим, сможет ли инструмент анализа тональности TextBlob правильно определить атрибуты тональности этих двух предложений.
Сначала мы вызываем TextBlob.
from textblob import TextBlob
blob = TextBlob(text)
blob
Нажмите Shift+Enter для выполнения, результат, похоже, просто распечатает эти два предложения без изменений.
Не волнуйтесь, TextBlob уже помог нам разбить фрагмент текста на предложения. Посмотрим, правильно ли его деление.
blob.sentences
Вывод после выполнения следующий:
Разделение правильное. Но что такого замечательного в том, что ты можешь разбить предложение? ! Мне нужны результаты анализа настроений!
Почему ты так беспокоишься? Приходите шаг за шагом. Хорошо, мы выводим результат анализа тональности первого предложения:
blob.sentences[0].sentiment
После выполнения вы увидите интересные результаты:
Аффективная полярность 0,8, субъективность 1,0. Чтобы проиллюстрировать, диапазон полярности настроений составляет [-1, 1], где -1 полностью отрицателен, а 1 полностью положителен.
Поскольку я сказал, что я «счастлив», анализ настроений был положительным.
Куй железо, пока горячо, давайте посмотрим на второе предложение.
blob.sentences[1].sentiment
Результат после выполнения следующий:
Эмоциональная полярность, соответствующая «депрессии», равна отрицательному значению 0,5, нет проблем!
Что еще более интересно, мы также можем позволить TextBlob всесторонне проанализировать тональность всего текста.
blob.sentiment
Каков результат выполнения?
Дай тебе 10 секунд, угадай что.
Не продавайте, это так:
Вы можете найти это неразумным. Как можно совместить предложение «счастливый» и предложение «разочарование», чтобы в итоге получить положительный результат?
Во-первых, слова разных полярностей численно различны. Мы должны уметь находить больше негативных слов, чем «депрессия». И это тоже логично, кто бы так противоречиво описывал свое настроение в это время «одной ногой в небе и одной ногой в земле»?
китайский язык
Поэкспериментировав с анализом тональности английского текста, пришло время вернуться к нашему родному языку. Ведь самый распространенный текст в Интернете по-прежнему на китайском языке.
Анализ китайского текста, мы используемПакет SnowNLP. Этот пакет так же универсален, как TextBlob.
Сначала подготовим текст. На этот раз мы попробуем изменить 2 прилагательных.
text = u"我今天很快乐。我今天很愤怒。"
Обратите внимание, что мы добавили букву u перед кавычками, это важно. Поскольку он подсказывает Python: «Формат кодировки текста, который мы вводим в этом абзаце, — Unicode, не ошибитесь». Что касается деталей формата кодировки текста, мы подробно поговорим, когда будет возможность.
Что ж, текст есть, пусть SnowNLP сделает всю работу.
from snownlp import SnowNLP
s = SnowNLP(text)
Мы хотим увидеть, может ли SnowNLP правильно разделить наши входные предложения, такие как TextBlob, поэтому мы выполняем следующий вывод:
for sentence in s.sentences:
print(sentence)
Результат выполнения таков:
Хорошо, кажется, что SnowNLP прав в сегментации предложений.
Давайте посмотрим на результаты анализа тональности первого предложения.
s1 = SnowNLP(s.sentences[0])
s1.sentiments
Результат после выполнения:
Кажется, ключевое слово «счастье» действительно красноречиво. В основном получил полные оценки.
Давайте посмотрим на второе предложение:
s2 = SnowNLP(s.sentences[1])
s2.sentiments
Результат выполнения следующий:
Вы, должно быть, заметили здесь проблему — слово «гнев» выражает такую сильную отрицательную эмоцию, почему оценка все еще положительная?
Это связано с тем, что SnowNLP и textblob имеют разные методы оценки. Значение анализа настроений SnowNLP выражает «вероятность того, что это предложение представляет собой положительную эмоцию». То есть для предложения «Я сегодня злюсь» SnowNLP считает, что оно имеет очень низкую вероятность выражения положительных эмоций.
Это объяснение имеет больше смысла.
резюме
Выучил основные движения, очень доволен, не так ли? Теперь вы можете найти тексты на китайском и английском языках, чтобы попрактиковаться в анализе настроений.
Но вы можете столкнуться с проблемами очень быстро. Например, если вы введете несколько откровенно негативных эмоциональных утверждений, результаты будут очень положительными.
Не думайте, что вас снова обманули. Позвольте мне объяснить, где проблема.
Во-первых, сентиментальная оценка многих предложений требует контекста и базовых знаний, поэтому отсутствие такой информации повлияет на точность суждения. В этом люди сильнее машин (по крайней мере, на данный момент).
Во-вторых, любой инструмент анализа настроений фактически обучается. Какой текстовый материал используется для обучения, напрямую влияет на адаптивность модели.
Например, SnowNLP, его обучающий текст — это данные обзора. Поэтому, если вы используете его для анализа информации китайских комментариев, эффект должен быть хорошим. Однако, если вы используете его для анализа других типов текстов, таких как романы, поэзия и т. д., эффект будет значительно снижен. Из-за того, как текстовые данные объединяются таким образом, такого раньше не было.
Решение, конечно же, состоит в том, чтобы тренировать его на других типах текста. Если вы хорошо информированы, то, естественно, «привыкнете». По поводу обучения обращайтесь к автору соответствующего пакета программ.
обсуждать
В дополнение к областям применения анализа текста, упомянутым в этой статье, какие другие работы, которые вы знаете, можно автоматизировать с помощью анализа тональности? Помимо TextBlob и SnowNLP, знаете ли вы какие-либо открытые пакеты бесплатного программного обеспечения, которые могут помочь нам в нашей работе по анализу настроений? Добро пожаловать, чтобы оставить сообщение, чтобы поделиться с вами, мы обменяемся и обсудим вместе.
Лайк пожалуйста лайк. Вы также можете подписаться на мой публичный аккаунт в WeChat и закрепить его."Юшу Жилан" (nkwangshyi).
Если вы интересуетесь наукой о данных, вы можете прочитать мою серию постов с учебными указателями "Как эффективно начать работу с наукой о данных?", есть более интересные задачи и решения.