[algorithm] Алгоритм для определения того, как положительный или отрицательный оператор / текст


Answers

В моей компании у нас есть продукт, который делает это, а также хорошо работает. Я сделал большую часть работы над этим. Я могу дать краткую мысль:

Вам нужно разделить абзац на предложения, а затем разделить каждое предложение на более мелкие субобъекты - расщепление на основе запятых, дефис, полу двоеточие, двоеточие, «и», «или» и т. Д. Каждое субпредложение будет демонстрировать совершенно индивидуальные чувства в некоторых случаях.

Некоторые предложения, даже если они разделены, должны быть объединены.

Например: продукт потрясающий, отличный и фантастический.

Мы разработали всеобъемлющий набор правил о типах предложений, которые должны быть разделены и которые не должны быть (на основе тегов POS слов)

На первом уровне вы можете использовать подход с мешком слов, то есть иметь список положительных и отрицательных слов / фраз и проверять каждое предложение. При этом также смотрите на слова отрицания типа «нет», «нет» и т. Д., Которые изменят полярность предложения.

Даже тогда, если вы не можете найти чувства, вы можете пойти на наивный подход к заливам . Этот подход не очень точен (около 60%). Но если вы применяете это только к предложению, которое не проходит через первый набор правил, вы можете легко получить точность до 80-85%.

Важной частью является положительный / отрицательный список слов и то, как вы разложили вещи. Если вы хотите, вы можете пойти даже на уровень выше, HMM (скрытая марковская модель) или CRF (условные случайные поля). Но я не профессионал в НЛП, а кто-то другой может заполнить вас в этой части.

Для любопытных людей мы реализовали все это python с NLTK и модулем Reverend Bayes.

Довольно просто и обрабатывает большинство предложений. Тем не менее, вы можете столкнуться с проблемами при попытке помечать контент из Интернета. Большинство людей не пишут правильные предложения в Интернете. Также очень трудно справиться с сарказмом.

Question

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

Например:

Джейсон - худший пользователь SO, которого я когда-либо видел (-10)

Джейсон - пользователь SO (0)

Джейсон - лучший пользователь SO, которого я когда-либо видел (+10)

Джейсон лучше всего сосать SO (-10)

Хотя, хорошо в SO, Джейсон хуже всего делает плохо (+10)

Нелегко, да? :)

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

Благодарю.




Как отмечалось, это происходит под анализом чувств при обработке естественного языка.
Afaik GATE не имеет компонента, который анализирует настроения.
По моему опыту, я применил алгоритм, который является адаптацией к тому, который описан в статье «Признание контекстной полярности в анализе настроений на уровне фразы» Терезы Уилсон, Жаны Вибе, Пол Хоффманн ( this ) как плагин GATE, который дает разумные хорошие результаты. Это может помочь вам, если вы хотите выполнить загрузку.




Может быть, программное обеспечение для оценки эссе можно использовать для оценки тона? WIRED статья.
Possible ссылка. (Я не мог его прочитать.)
This отчете сравнивается навык написания навыков с уровнем уровня Flesch-Kincaid, необходимым для его чтения!
Страница e-rator говорит, что они смотрят на неправильное обращение и тому подобное. (Может быть, плохой пост тоже написано неправильно)
Slashdot статья.

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




Это старый вопрос, но я обнаружил, что он ищет инструмент, который мог бы анализировать тон статьи, и нашел IBM Watson Tone Analyzer . Он позволяет ежемесячно ежемесячно получать звонки на 1000 апионов.




Вы можете сделать так:

    Jason is the worst SO user I have ever witnessed (-10)

худшее (-), остальное - (+). так что это будет (-) + (+) = (-)

    Jason is an SO user (0)

() + () = ()

    Jason is the best SO user I have ever seen (+10)

best (+), остальное - (). так что это будет (+) + () = (+)

    Jason is the best at sucking with SO (-10)

best (+), сосание (-). так что (+) + (-) = (-)

    While, okay at SO, Jason is the worst at doing bad (+10)

худшее (-), плохое (-). так что (-) + (-) = (+)




Ах, я помню одну библиотеку java для этого под названием LingPipe (коммерческая лицензия), которую мы оценили. Это будет хорошо работать для примера corpus, который доступен на сайте, но для реальных данных он отстой очень плохо.




Links