Анализа настроений в Twitter в Python [закрыт]

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

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

обратите внимание, тексты, которые я анализирую, очень короткие, это твиты. Поэтому в идеале этот классификатор оптимизирован для таких коротких текстов.

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

спасибо!

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

12 ответов


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

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

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

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

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


удачи с этим.

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

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

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

голос из глубины комнаты пискнул: "да . . .право."


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

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

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


Я построил список слов с надписью sentiment. Вы можете получить доступ к нему отсюда:

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/

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

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

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


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

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

удачи.


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

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

проверить Мы Чувствуем Себя Хорошо для реализации подобной идеи с очень красивым интерфейсом (и twitrratr).


посмотри инструмент анализа настроений Twitter. Он написан на python и использует наивный классификатор Байеса с полууправляемым машинным обучением. Источник можно найти здесь.


может быть TextBlob (на основе NLTK и pattern) является правильным инструментом анализа настроений для вас.


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


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

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

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


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


для тех, кто заинтересован в кодировании Twitter Sentiment Analyis с нуля, есть курс Coursera"Наука " С кодом python на GitHub (как часть задания 1 -ссылке). Чувства являются частью AFINN-111.

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