В большинстве приложений такого типа вам придется использовать собственный код для выполнения задачи статистической классификации. Как предположил Лука, NLTK - идеальный инструмент для манипуляции естественным языком в Python, если ваша цель не мешает некоммерческому характеру его лицензии. Однако я бы посоветовал другие программные пакеты для моделирования. Я не нашел много сильных продвинутых моделей машинного обучения, доступных для Python, поэтому я собираюсь предложить несколько автономных двоичных файлов, которые легко с ним взаимодействуют.
Возможно, вас заинтересует The Toolkit for Advanced Discriminative Modeling , который можно легко связать с Python. Это использовалось для задач классификации в различных областях обработки естественного языка. У вас также есть выбор из нескольких различных моделей. Я предлагаю начать с классификации максимальной энтропии, если вы уже знакомы с реализацией наивного байесовского классификатора. Если нет, вы можете изучить его и написать код, чтобы действительно получить достойное представление о статистической классификации как о задаче машинного обучения.
Группы компьютерной лингвистики Техасского университета в Остине провели занятия, на которых большинство проектов, вышедших из них, использовали этот замечательный инструмент. Вы можете посмотреть страницу курса по компьютерной лингвистике II, чтобы получить представление о том, как заставить его работать и какие предыдущие приложения он обслуживал.
Еще один отличный инструмент, который работает в том же духе, - это Mallet . Разница между Mallet в том, что там немного больше документации и доступно несколько моделей, таких как деревья решений, и он написан на Java, что, на мой взгляд, делает его немного медленнее. Weka - это целый набор различных моделей машинного обучения в одном большом пакете, который включает некоторые графические элементы, но на самом деле он в основном предназначен для педагогических целей, и я бы не стал его запускать в производство.
Удачи в решении вашей задачи. По-настоящему трудной частью, вероятно, будет объем инженерных знаний, необходимых вам заранее, чтобы классифицировать «исходный набор», на основе которого ваша модель будет учиться. Он должен быть довольно большим, в зависимости от того, проводите ли вы двоичную классификацию (счастливые или грустные) или целый ряд эмоций (что потребует еще большего). Обязательно сохраните некоторые из этих спроектированных данных для тестирования или запустите несколько тестов с десятикратным увеличением или удалением одного, чтобы убедиться, что вы действительно делаете хорошую работу по прогнозированию, прежде чем размещать их там. И, самое главное, получайте удовольствие! На мой взгляд, это лучшая часть НЛП и ИИ.
Удачи с этим.
Настроения чрезвычайно зависят от контекста, а культура твитов усугубляет проблему, потому что вам не дают контекст для большинства твитов. Вся суть твиттера в том, что вы можете использовать огромное количество общего контекста «реального мира», чтобы упаковать значимое общение в очень короткое сообщение.
Если они говорят, что видео плохое, это значит плохое или плохое ?
источник
Спасибо всем за ваши предложения, они действительно были очень полезны! В итоге я использовал наивный байесовский классификатор, который позаимствовал отсюда . Я начал с того, что снабдил его списком хороших / плохих ключевых слов, а затем добавил функцию «обучения», используя отзывы пользователей. Получилось неплохо работать.
Полная информация о моей работе как в сообщении в блоге .
Опять же, ваша помощь была очень полезной, так что спасибо!
источник
Я составил список слов, помеченных сантиментами. Вы можете получить к нему доступ отсюда:
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.
Списки слов имеют свои ограничения. Вы найдете исследование ограничений моего списка слов в статье «Новый ANEW: оценка списка слов для анализа тональности в микроблогах». Эта статья доступна на моей домашней странице.
Обратите внимание, что
unicode(s, 'utf-8')
в коде отсутствует символ (по педагогическим причинам).источник
Многие исследования показывают, что хорошей отправной точкой для анализа настроений являются прилагательные, например, являются ли они положительными или отрицательными. Для короткого блока текста это в значительной степени ваш единственный вариант ... Есть статьи, в которых рассматриваются документы целиком или анализ на уровне предложений, но, как вы говорите, твиты довольно короткие ... Нет настоящего волшебного подхода к пониманию тональность предложения, поэтому я думаю, что вам лучше всего будет выследить одну из этих исследовательских работ и попытаться получить их набор данных положительно / отрицательно ориентированных прилагательных.
Как уже было сказано, тональность зависит от предметной области, и вам может быть трудно получить высокий уровень точности с набором данных общего назначения.
Удачи.
источник
Я думаю, вам будет сложно найти то, что вам нужно. Ближайшая вещь, о которой я знаю, - это LingPipe , который имеет некоторые функции анализа настроений и доступен по ограниченной лицензии с открытым исходным кодом, но написан на Java.
Кроме того, системы анализа настроений обычно разрабатываются путем обучения системы на данных обзора продукта / фильма, которые значительно отличаются от среднего твита. Они будут оптимизированы для текста с несколькими предложениями на одну и ту же тему. Я подозреваю, что вам лучше самому придумать систему, основанную на правилах, возможно, основанную на лексиконе эмоциональных терминов, подобных тому, который предоставляет Университет Питтсбурга .
Посмотрите We Feel Fine для реализации подобной идеи с действительно красивым интерфейсом (и twitrratr ).
источник
Взгляните на инструмент анализа настроений в Twitter . Он написан на python и использует наивный байесовский классификатор с частично контролируемым машинным обучением. Источник можно найти здесь .
источник
Возможно, TextBlob (основанный на NLTK и шаблоне) - подходящий инструмент для анализа настроений.
источник
Некоторое время назад я наткнулся на набор инструментов для естественного языка . Вероятно, вы могли бы использовать его как отправную точку. Также в нем много модулей и дополнений, так что, возможно, у них уже есть что-то подобное.
источник
Довольно дурацкая мысль: вы можете попробовать использовать Twitter API, чтобы загрузить большой набор твитов, а затем классифицировать подмножество этого набора с помощью смайлов: одна положительная группа для «:)», «:]», «: D» и т. Д. , и еще одна отрицательная группа с ":(" и т. д.
Как только у вас будет такая грубая классификация, вы сможете искать больше подсказок с помощью частотного анализа, анализа диаграмм или чего-то подобного.
Это может показаться глупым, но на этот счет были проведены серьезные исследования (поиск по запросу «анализ настроений» и смайлик). Стоит посмотреть.
источник
Существует API Twitter Sentiment от TweetFeel, который выполняет расширенный лингвистический анализ твитов и может извлекать положительные / отрицательные твиты. См. Http://www.webservius.com/corp/docs/tweetfeel_sentiment.htm
источник
Для тех, кто интересуется написанием кода Twitter Sentiment Analyis с нуля, на GitHub есть курс Coursera « Наука о данных » с кодом Python (как часть задания 1 - ссылка ). Настроения являются частью AFINN-111 .
Вы можете найти рабочие решения, например, здесь . В дополнение к списку тональности AFINN-111 существует простая реализация построения динамического списка терминов на основе частоты терминов в твитах, имеющих оценку pos / neg (см. Здесь ).
источник