вопрос об анализе настроений - PullRequest
3 голосов
/ 21 апреля 2011

У меня есть вопрос, касающийся анализа настроений, с которым мне нужна помощь.

Прямо сейчас у меня есть куча твитов, которые я собрал через API поиска в Твиттере. Поскольку я использовал свои поисковые термины, я знаю, на какие темы или объекты (имена людей) я хочу посмотреть. Я хочу знать, как другие относятся к этим людям.

Для начала, я скачал список английских слов с известным значением валентности / настроения и вычислил настроения (+/-), основываясь на наличии этих слов в твите. Проблема в том, что настроения рассчитываются таким образом - на самом деле я больше смотрю на тон твита, чем на человека.

Например, у меня есть твит:

"lol... Person A is a joke. lmao!"

Сообщение очевидно в положительном тоне, но человек А должен получить отрицательный.

Чтобы улучшить мой анализ настроений, я, вероятно, могу принять во внимание отрицание и модификаторы из моего списка слов. Но как именно я могу получить свой анализ настроений, чтобы посмотреть на предмет сообщения (и, возможно, сарказм) вместо этого?

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

Ответы [ 3 ]

5 голосов
/ 21 апреля 2011

В ожидании ответов от исследователей в области ИИ, я дам вам несколько подсказок о том, что вы можете сделать быстро.

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

Один из возможных подходов к анализу настроений состоит в том, чтобы рассматривать его как контролируемую проблему обучения, когда у вас есть небольшой учебный корпус, включающий сделанные человеком аннотации (позже об этом) и тестовый корпус, на котором вы тестируетенасколько хорошо вы подходите / система работает.Для обучения вам понадобятся некоторые классификаторы, такие как SVM, HMM или другие, но не усложняйте их.Я бы начал с бинарной классификации: хорошо, плохо.Вы можете сделать то же самое для непрерывного спектра мнений, от положительного до отрицательного, то есть для получения рейтинга, такого как Google, где самые ценные результаты стоят на первом месте.

Для проверки начала Классификатор libsvm , он может выполнять как классификацию {хорошо, плохо}, так и регрессию (ранжирование).Качество аннотаций будет иметь огромное влияние на результаты, которые вы получите, но где их получить?

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

Глядя на этот пример, вы можете разработать свой собственный подход к указанной проблеме.Взгляните также на nltk .С помощью nltk вы можете выполнять часть речевых тегов и, если повезет, получить имена.Сделав это, вы можете добавить в свой классификатор функцию, которая будет присваивать оценку имени, если в пределах n слов (пропустить n-грамм) есть слова, выражающие мнения (посмотрите на корпус ресторана), или использовать веса, которые у вас уже есть, но этолучше всего полагаться на классников, чтобы узнать вес, это его работа.

3 голосов
/ 21 апреля 2011

В текущем состоянии технологии это невозможно.

Английский (и любой другой язык) является ОЧЕНЬ сложным и пока не может быть "проанализирован" программами.Зачем?Потому что ВСЕ должно быть в специальном корпусе.Сказать, что кто-то является шуткой, - это особый случай шутки, который является еще одним исключением в вашей программе.И так далее, и т. Д.

Хороший пример (опубликованный ScienceFriction где-то здесь на SO):

Аналогично, слово «непредсказуемый» может быть положительным в контекстеТриллер, но отрицательный при описании системы перерывов Toyota.

Если вы готовы потратить +/- 40 лет своей жизни на эту тему, продолжайте, это будет высоко ценится:)

2 голосов
/ 15 декабря 2012

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

Например, «часть речи» может помочь вам определить предмет, глагол и объект в предложении. А n-граммы могут помочь вам в примере с Toyota и триллером выяснить контекст. Посмотрите на TagHelperTools . Он построен на основе weka и обеспечивает пометку части речи и n-граммов.

Тем не менее, трудно получить результаты, которых хочет ОП, но это не займет 40 лет.

...