open-source русском - Анализ настроений для Twitter в Python




natural language (11)

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

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

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

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

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

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

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

Благодаря!

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


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

Возможно, вас заинтересует The Toolkit for Advanced Discriminative Modeling , который может быть легко сопряжен с Python. Это использовалось для задач классификации в различных областях обработки естественного языка. У вас также есть выбор из нескольких моделей. Я бы предложил начать с классификации Maximum Entropy, если вы уже знакомы с внедрением классификатора Naive Bayes. Если нет, вы можете захотеть заглянуть в него и закодировать один, чтобы действительно получить достойное понимание статистической классификации как задачи машинного обучения.

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

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

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


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

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

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


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


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

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


Удачи с этим.

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

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

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

Голос из задней части комнаты подпрыгнул: «Да ... верно».



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


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

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

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


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

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

Удачи.


Одно использование для метаклассов - это добавление новых свойств и методов в экземпляр автоматически.

Например, если вы посмотрите на модели Django , их определение выглядит немного запутанным. Похоже, что вы определяете только свойства класса:

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

Однако во время выполнения объекты Person заполняются всякими полезными методами. Посмотрите source какой-то удивительной метаклассификации.





python open-source nlp