it-swarm.com.ru

Анализ настроений для Twitter в Python

Я ищу реализацию с открытым исходным кодом, предпочтительно на python, для Textual Sentiment Analysis ( http://en.wikipedia.org/wiki/Sentiment_analysis ). Кто-нибудь знаком с такой реализацией с открытым исходным кодом, которую я могу использовать?

Я пишу приложение, которое ищет в Твиттере какой-то поисковый запрос, скажем «youtube», и считает «счастливые» твиты против «грустных» твитов. Я использую приложение Google, поэтому оно написано на python. Я хотел бы иметь возможность классифицировать возвращенные результаты поиска из Твиттера, и я хотел бы сделать это в Python .... Я до сих пор не смог найти такой анализатор настроений, особенно не в Python. Вы знакомы с такой реализацией с открытым исходным кодом, которую я могу использовать? Предпочтительно это уже в Python, но если нет, надеюсь, я смогу перевести его на Python.

Обратите внимание, тексты, которые я анализирую, ОЧЕНЬ короткие, это твиты. Поэтому в идеале этот классификатор оптимизирован для таких коротких текстов.

Кстати, Twitter поддерживает в поиске операторы «:)» и «:(», которые стремятся сделать именно это, но, к сожалению, классификация, предоставленная ими, не так уж велика, поэтому я решил, что могу попробовать сам ,.

Спасибо!

Кстати, ранняя демоверсия - здесь и код, который у меня есть на данный момент, - здесь и я хотел бы открыть его с любым заинтересованным разработчиком.

84
Ran

В большинстве приложений такого рода вам придется развернуть большую часть собственного кода для статистической классификации. Как предположил Луцка, NLTK - это идеальный инструмент для манипулирования естественным языком в Python, если ваша цель не мешает некоммерческому характеру его лицензии. Однако я бы предложил другие программные пакеты для моделирования. Я не нашел много сильных продвинутых моделей машинного обучения, доступных для Python, поэтому я собираюсь предложить несколько автономных двоичных файлов, которые легко взаимодействуют с ним.

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

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

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

Удачи с твоей задачей. По-настоящему трудной частью, вероятно, будет количество знаний, необходимых заранее, чтобы вы могли классифицировать «начальный набор», из которого ваша модель будет учиться. Оно должно быть довольно значительным, в зависимости от того, занимаетесь ли вы бинарной классификацией (рад против грусти) или целым рядом эмоций (что потребует еще больше). Не забудьте сохранить некоторые из этих специально разработанных данных для тестирования или выполнить несколько десятков тестов или тестов «удалить один», чтобы убедиться, что вы действительно хорошо прогнозируете свою работу, прежде чем отправлять ее туда. И самое главное, получайте удовольствие! Это лучшая часть НЛП и ИИ, на мой взгляд.

41
Robert Elwell

Удачи с этим.

Настроения чрезвычайно контекстуальны, а культура твитов усугубляет проблему, потому что вам не дан контекст для большинства твитов. Весь смысл Twitter состоит в том, что вы можете использовать огромное количество общего контекста «реального мира», чтобы упаковать значимое общение в очень короткое сообщение.

Если они говорят, что видео плохое, значит ли это плохо или плохо ?

Преподавал лингвистический профессор в ее классе один день. "По-английски," она сказала: «Двойной отрицательный образует положительный. В некоторых языках, хотя, , таких как русский, двойной отрицательный является все еще отрицательный. Однако нет языка , где двойной положительный может сформировать отрицательный. "

Голос из задней части комнаты по трубке, "Да ... правильно."

74
MarkusQ

Спасибо всем за ваши предложения, они действительно были очень полезны!. В итоге я использовал наивный байесовский классификатор, который я позаимствовал у здесь . Я начал с того, что снабдил его списком хороших/плохих ключевых слов, а затем добавил функцию «обучения», используя отзывы пользователей. Оказалось, что работать довольно приятно.

Полная информация о моей работе, как в сообщение в блоге .

Опять же, ваша помощь была очень полезной, так что спасибо!

17
Ran

Я составил список слов, помеченный чувствами. Вы можете получить к нему доступ здесь:

http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6010/Zip/imm6010.Zip

В моем блоге вы найдете небольшую программу на Python: 

http://finnaarupnielsen.wordpress.com/2011/06/20/simplest-sentiment-analysis-in-python-with-af/

В этом посте показано, как использовать список Word с отдельными предложениями, а также с Twitter.

Подходы со списками слов имеют свои ограничения. Вы найдете исследование ограничений моего списка Word в статье «Новое ANEW: Оценка списка Word для анализа настроений в микроблогах». Эта статья доступна на моей домашней странице.

Обратите внимание, что в коде отсутствует unicode(s, 'utf-8') (по педагогическим причинам).

13
Finn Årup Nielsen

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

Теперь, как уже было сказано, настроение зависит от конкретной области, и вам может быть трудно получить высокий уровень точности с набором данных общего назначения.

Удачи.

9
Ben Coe

Я думаю, вам может быть трудно найти то, что вы ищете. Самая близкая вещь, о которой я знаю, это LingPipe , которая имеет некоторые функции анализа настроений и доступна по ограниченной лицензии с открытым исходным кодом, но написана на Java.

Кроме того, системы анализа настроения обычно разрабатываются путем обучения системы на основе данных обзора продукта/фильма, которые значительно отличаются от среднего твита. Они будут оптимизированы для текста с несколькими предложениями, все на одну тему. Я подозреваю, что вам лучше придумать саму систему, основанную на правилах, возможно, основанную на лексиконе сентиментальных терминов, таких как тот, который предлагает Университет Питтсбурга .

Проверьте We Feel Fine для реализации похожей идеи с действительно красивым интерфейсом (и twitrratr ).

4
Stompchicken

Взгляните на инструмент анализа настроений в Твиттере . Он написан на языке Python и использует наивный байесовский классификатор с машинным обучением под наблюдением. Источник можно найти здесь .

2
cyhex

Я наткнулся на Natural Language Toolkit некоторое время назад. Возможно, вы могли бы использовать его в качестве отправной точки. Он также имеет много модулей и дополнений, так что, возможно, у них уже есть что-то похожее.

1
Luka Marinko

Возможно TextBlob (основанный на NLTK и шаблоне) - подходящий инструмент для анализа настроений.

1
Sonson123

Для тех, кто интересуется программированием Twitter Sentiment Analyis с нуля, есть курс Coursera " Data Science " с кодом Python на GitHub (как часть задания 1 - link ). Чувства являются частью AFINN-111 .

Вы можете найти рабочие решения, например здесь . В дополнение к списку настроений AFINN-111 существует простая реализация построения динамического списка терминов, основанного на частоте терминов в твитах, имеющих положительный/отрицательный счет (см. здесь ).

0
philshem

Существует интерфейс Twitter Sentiment API от TweetFeel, который выполняет расширенный лингвистический анализ твитов и может получать положительные/отрицательные твиты. См. http://www.webservius.com/corp/docs/tweetfeel_sentiment.htm

0
Eugene Osovetsky

Несколько странная мысль: вы можете попробовать использовать Twitter API для загрузки большого набора твитов, а затем классифицировать подмножество этого набора с помощью смайликов: одна положительная группа для «:)», «:]», «: D» и т.д. и еще одна отрицательная группа с ":(" и т. д.

Как только вы получите эту грубую классификацию, вы сможете искать больше подсказок с помощью анализа частоты или ngram или чего-то подобного.

Это может показаться глупым, но серьезные исследования были проведены по этому вопросу (поиск «анализ настроения» и смайлик). Стоит посмотреть. 

0
user18015