Предложения по настроению - PullRequest
5 голосов
/ 29 июля 2011

Давайте начнем с простой проблемы. Допустим, у меня есть предложение в 350 символов, и я бы хотел поместить это предложение в корзину «Хорошего настроения» или «Плохое настроение».

Как лучше всего разработать алгоритм для объединения предложения?

Ответы [ 6 ]

5 голосов
/ 29 июля 2011

Вручную классифицировать кучу предложений по настроению.Затем скормите их в наивный байесовский классификатор.Используйте что-то вроде SpamBayes в качестве отправной точки.

1 голос
/ 09 сентября 2011

Это называется Анализ настроений , и статья в Википедии содержит хорошее описание доступных методов.Одним из простых способов было бы использовать Google Prediction API и обучить его набору положительных, отрицательных и нейтральных предложений.

1 голос
/ 08 сентября 2011

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

Шаги, которые я бы посоветовал предпринять, постепенно приведут к лучшему и лучшему классификатору:

  1. Классифицируйте некоторые документы вручную и используйте их для обучения готовогоалгоритм.Я бы предложил использовать SVM (например, LibSVM в WEKA или SVMLight ), но наивные байесы или деревья решений, как предложено выше, также могут работать.

  2. Вручную классифицируйте еще несколько документов и перейдите от модели, основанной на униграмме, к более сложной, например, к биграммам или частям речи.Это можно сделать довольно легко с помощью TagHelper tools , который будет принимать ваши тексты и преобразовывать их в файлы, готовые к WEKA, используя эти приемы.Это добавит некоторый контекст к настроению каждого термина (например, «не» и «плохо» против «не плохо»).

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

1 голос
/ 29 июля 2011

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

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

0 голосов
/ 29 июля 2011

Попробуйте машинное обучение из множества таких предложений.Используйте некоторые функции, например, смайлики в качестве индикаторов настроения.Наблюдайте за качеством и добавляйте / изменяйте свой набор функций.

0 голосов
/ 29 июля 2011

Вы можете поиграть с инструментом Weka , чтобы обучить некоторый классификатор, который будет хорошо работать в вашем случае. Я бы порекомендовал попробовать алгоритм J48 , который, на мой взгляд, является реализацией алгоритма C4.5 для обучения деревьев решений.

...