Анализа настроений в Twitter в Python [закрыт]
Я ищу реализацию с открытым исходным кодом, предпочтительно в python, из Анализ Текстовых Настроений (http://en.wikipedia.org/wiki/Sentiment_analysis). Кто-нибудь знаком с такой реализацией с открытым исходным кодом, которую я могу использовать?
Я пишу приложение, которое ищет twitter для некоторого поискового запроса, скажем "youtube", и подсчитывает" счастливые "твиты против" грустных " твитов.
Я использую приложение Google, так что это в python. Я хотел бы иметь возможность классифицировать Результаты поиска из Twitter, и я хотел бы сделать это в Python.
Я не смог найти такой анализатор настроений до сих пор, особенно не в python.
Вы знакомы с такими средствами я могу пользоваться? Предпочтительно это уже в Python, но если нет, надеюсь, я смогу перевести его на Python.
обратите внимание, что тексты, которые я анализирую, очень короткие, это твиты. Поэтому в идеале этот классификатор оптимизирован для таких коротких текстов.
кстати, twitter делает поддержите":) "и": ("операторы в поиске, которые стремятся сделать именно это, но, к сожалению, классификация, предоставленная ими, не так велика, поэтому я решил, что могу попробовать это сам.
спасибо!
кстати, ранняя демонстрация здесь и код у меня есть до сих пор здесь и я хотел бы открыть его с любым заинтересованным разработчиком.
12 ответов:
с большинством из этих видов приложений вам придется свернуть большую часть вашего собственного кода для задачи статистической классификации. Как предположил лука, NLTK является идеальным инструментом для манипулирования естественным языком в Python, если ваша цель не мешает некоммерческому характеру его лицензии. Однако я бы предложил другие программные пакеты для моделирования. Я не нашел много сильных продвинутых моделей машинного обучения, доступных для Python, поэтому я собираюсь предложить некоторые автономные двоичные файлы, которые легко сотрудничают с ним.
вы можете быть заинтересованы в инструментарий для расширенного Дискриминативного моделирования, который может быть легко сопряжен с Python. Это было использовано для задач классификации в различных областях обработки естественного языка. У вас также есть выбор из нескольких разных моделей. Я бы предложил начать с максимальной классификации энтропии, если вы уже знакомы с реализацией наивного классификатора Байеса. Если нет, то вы можете хотите изучить его и закодировать, чтобы действительно получить достойное понимание статистической классификации как задачи машинного обучения.
в Университете Техаса в Остине группы компьютерной лингвистики провели занятия, где большинство проектов, выходящих из них, использовали этот отличный инструмент. Вы можете посмотреть на странице курса для Компьютерная лингвистика II чтобы получить представление о том, как заставить его работать и что предыдущие приложения он служил.
другой отличный инструмент, который работает в том же духе молоток. Разница между Mallet заключается в том, что есть немного больше документации и еще несколько доступных моделей, таких как деревья решений, и это на Java, что, на мой взгляд, делает его немного медленнее. Weka это целый набор различных моделей машинного обучения в одном большом пакете, который включает в себя некоторые графические материалы, но это действительно в основном предназначено для педагогических целей, и на самом деле это не то, что я бы поставил производство.
удачи с вашей задачей. Реальной трудной частью, вероятно, будет количество знаний, необходимых для вас, чтобы классифицировать "набор семян", из которого ваша модель будет учиться. Он должен быть довольно значительным, в зависимости от того, делаете ли вы бинарную классификацию (happy vs sad) или целый спектр эмоций (что потребует еще больше). Убедитесь в том, чтобы провести некоторые из этих инженерных данных для тестирования, или запустить некоторые десятикратные или удалить-один тесты, чтобы убедитесь, что вы на самом деле делаете хорошую работу прогнозирования, прежде чем положить его там. И самое главное, получайте удовольствие! Это лучшая часть НЛП и ИИ, на мой взгляд.
удачи с этим.
настроения чрезвычайно контекстуальны, а культура чириканья усугубляет проблему, потому что вам не дается контекст для большинства твитов. Весь смысл twitter заключается в том, что вы можете использовать огромное количество общего контекста "реального мира", чтобы упаковать значимую коммуникацию в очень короткое сообщение.
Если они говорят, что видео плохое, значит ли это плохо, или плохо?
в лингвистике профессор читал лекции однажды в ее класс. "На Английском Языке," она сказала: "двойной негатив образует положительный. На некоторых языках, однако, такой как русский, двойной негатив есть все равно негатив. Тем не менее, нет язык, в котором двойной позитив может сформируйте негатив."
голос из задней части комнаты по трубам вверх, "да . . .право."
спасибо всем за ваши предложения, они были действительно очень полезно! В итоге я использовал наивный байесовский классификатор, который я позаимствовал у здесь. Я начал с подачи его со списком хороших / плохих ключевых слов, а затем добавил функцию "учиться", используя обратную связь с пользователем. Это оказалось довольно хорошо работать.
полная информация о моей работе, как в блоге.
опять же, ваша помощь была очень полезной, так что спасибо!
Я построил список слов, помеченных тональностью. Вы можете получить к нему доступ отсюда:
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.
списки слов подходы имеют свои ограничения. Исследование ограничений моего списка слов вы найдете в статье "A new ANEW: оценка списка слов для анализа настроений в микроблогах". Эта статья доступна на моей домашней странице.
обратите внимание
unicode(s, 'utf-8')отсутствует в коде (по педагогическим причинам).
многие исследовательские работы показывают, что хорошей отправной точкой для анализа настроений является рассмотрение прилагательных, например, являются ли они положительными прилагательными или отрицательными прилагательными. Для короткого блока текста это в значительной степени ваш единственный вариант... Есть статьи, которые смотрят на целые документы или анализ уровня предложения, но, как вы говорите, твиты довольно короткие... Нет никакого реального магического подхода к пониманию чувства предложения, поэтому я думаю, что лучше всего было бы выследить одного из них эти исследовательские работы и пытаются получить свои данные о положительно/отрицательно ориентированных прилагательных.
теперь, как уже было сказано, сентиментальность является специфичной для домена, и вам может быть трудно получить высокий уровень точности с набором данных общего назначения.
удачи.
Я думаю, вам может быть трудно найти то, что вы ищете. Самое близкое, что я знаю, это LingPipe, которая имеет анализ настроений функции и доступен под ограниченным видом лицензии с открытым исходным кодом, но написан на Java.
кроме того, системы анализа настроений обычно разрабатываются путем обучения системы данным обзора продукта/фильма, которые значительно отличаются от среднего твита. Они будут оптимизированы для текст с несколькими предложениями, все о той же теме. Я подозреваю, что вам лучше было бы придумать систему, основанную на правилах, возможно, основанную на лексиконе терминов настроения, таких как тот, который предоставляет Питтсбургский университет.
проверить Мы Чувствуем Себя Прекрасно для реализации подобной идеи с очень красивым интерфейсом (и twitrratr).
посмотри инструмент анализа настроений Twitter. Он написан на python, и он использует наивный классификатор Байеса с полууправляемым машинным обучением. Источник можно найти здесь.
может быть TextBlob (на основе NLTK и pattern) является правильным инструментом анализа настроений для вас.
я наткнулся на Natural Language Toolkit некоторое время назад. Возможно, вы могли бы использовать его в качестве отправной точки. Она также имеет много модулей и аддонов, так что, возможно, у них уже есть что-то подобное.
несколько дурацкая мысль: вы можете попробовать использовать API Twitter для загрузки большого набора твитов, а затем классифицировать подмножество этого набора с помощью смайликов: одна положительная группа для ":)", ":]", ":D", etc, и другая отрицательная группа с ": ( " , etc.
Как только у вас есть эта грубая классификация, вы можете искать больше подсказок с помощью анализа частоты или 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 (см. здесь).
Comments