Подтвердить что ты не робот

Можно ли угадать настроение пользователя на основе структуры текста?

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

EDIT: Я никоим образом не специалист по языкознанию или обработке на естественном языке, поэтому извиняюсь, если этот вопрос слишком общий или глупый.

4b9b3361

Ответ 1

Это основа области обработки естественного языка, называемой анализ настроений. Хотя ваш вопрос является общим, это, конечно, не глупо - такого рода исследования проводятся Amazon по тексту в обзорах продуктов, например.

Если вы серьезно относитесь к этому, тогда простая версия может быть достигнута с помощью

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

  • Разделите свой набор данных в предложениях как "Положительные", так и "Отрицательные" . Для тела полярности чувств вы можете разделить каждый обзор на его составные предложения, а затем применить общий тег полярности настроения (положительный или отрицательный) ко всем этим предложениям. Разделите этот корпус на две части - 90% должны быть предназначены для обучения, 10% - для тестирования. Если вы используете Weka, тогда он может справиться с расщеплением корпуса для вас.

  • Применить алгоритм машинного обучения (например, SVM, Naive Bayes, Maximum Entropy) к учебному корпусу на уровне слов. Эта модель называется сумкой модели слов, которая просто представляет предложение как слова, из которых он состоит. Это та же модель, на которой работают многие спам-фильтры. Для ознакомления с алгоритмами машинного обучения есть приложение под названием Weka, которое реализует ряд этих алгоритмов и дает вам графический интерфейс для воспроизведения их. Затем вы можете проверить производительность модели, изученной машиной, на ошибки, допущенные при попытке классифицировать ваш тестовый корпус с помощью этой модели.

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

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

Если вам нужна дополнительная помощь, не стесняйтесь обращаться ко мне - я всегда рад помочь другим, заинтересованным в NLP =]


Маленькие заметки -

  • Простое разделение сегмента текста на предложения - это поле НЛП, называемое определение границы предложения. Существует множество инструментов, OSS или бесплатно, доступных для этого, но для вашей задачи простой раскол на пробелах и пунктуации должен быть прекрасным.
  • SVMlight также является другим учащимся, участвующим в изучении, и на самом деле их индуктивный SVM выполняет аналогичную задачу с тем, что мы рассматриваем - пытается классифицировать статьи Reuter о "корпоративных приобретениях" с 1000 положительными и 1000 отрицательными примерами.
  • Превращение предложений в функции для классификации может занять определенную работу. В этой модели каждое слово - это особенность - для этого требуется токенизация предложения, что означает разделение слов и знаков препинания друг от друга. Еще один совет - записать все отдельные лексемы слова так, чтобы "Я НЕНАВИЖУ ВАС" и "Я ненавижу ВАС", оба они считаются одинаковыми. С большим количеством данных вы можете попробовать, а также указать, помогает ли капитализация в классификации того, кто-то злится, но я считаю, что слов должно быть достаточно, по крайней мере, для первоначального усилия.

Edit

Я только что открыл LingPipe, который на самом деле имеет учебник по анализу сентиментальности с использованием тела полярности Бо Панга и Лиллиан Ли, о котором я говорил. Если вы используете Java, который может быть отличным инструментом для использования, и даже если он не пройдет через все этапы, описанные выше.

Ответ 2

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

  • Столицы имеют тенденцию обозначать агитацию, раздражение или разочарование и, безусловно, эмоциональный отклик, но затем некоторые новички делают это, потому что они не осознают значимости, поэтому вы не можете предположить, что, не глядя на то, что еще они написали ( чтобы убедиться, что это не все в шапках);
  • Капиталы - это всего лишь одна из форм внимания. Другие используют некоторые агрессивные цвета (например, красный) или используют жирный шрифт или более крупные шрифты;
  • Некоторые люди делают больше ошибок орфографии и грамматики и опечаток, когда они очень эмоциональны;
  • Сканирование для смайликов может дать вам очень четкое представление о том, что чувствует пользователь, но опять-таки что-то вроде:) можно было бы считать счастливым: "Я так сказал" или даже имел саркастическое значение;
  • Использование ругательств имеет тенденцию иметь четкое значение, но опять же его не ясно. В разговорной речи многих людей обычно будут содержаться определенные четыре буквы. Для некоторых других людей они могут даже не сказать "ад", вместо этого сказать "черт", поэтому значительная личная (даже "отстойная" ) значительна;
  • Группы знаков препинания (например, @# [email protected][email protected]), как правило, заменяются для исключений в контексте, когда ругательства необязательно подходят, так что менее вероятно, что они являются разговорными;
  • Восклицательные знаки могут указывать на удивление, шок или раздражение.

Вы можете посмотреть Достижения в анализе письменного текста или даже Определение настроения для блога путем объединения нескольких источников доказательств.

Наконец, стоит отметить, что письменный текст обычно воспринимается как более негативный, чем он есть на самом деле. Это распространенная проблема с электронной почтой в компаниях, как один пример.

Ответ 3

Я не могу поверить, что серьезно отношусь к этому... принимая одномерное пространство:

  • Если текст содержит проклятие, -10 настроение.
  • Я думаю, что восклицания будут иметь тенденцию быть отрицательными, поэтому -2 настроение.
  • Когда я расстраиваюсь, я печатаю Очень. Короткий. Предложения. -5 настроение.

Чем больше я думаю об этом, тем больше ясно, что многие из этих означающих указывают на экстремальное настроение вообще, но не всегда ясно, какое настроение.

Ответ 4

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

Ответ 5

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

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

Ответ 6

Анализ настроения и поведения - очень серьезная наука. Несмотря на то, что другие ответы насмехаются над вопросом, правоохранительные органы расследуют категоризацию настроения в течение многих лет. Использование в компьютерах, о которых я слышал, обычно имел больше контекста (информация о времени, голосовой шаблон, скорость изменения каналов). Я думаю, что вы могли бы с некоторым успехом определить, настроен ли пользователь в определенном настроении, обучая нейронную сеть образцами из двух известных групп: сердитым и не сердитым. Удачи вам в ваших усилиях.

Ответ 7

Я согласен с ojblass, что это серьезный вопрос.

Классификация настроений в настоящее время является горячей темой в области распознавания речи. Если вы думаете об этом, приложение интерактивного голосового ответа (IVR) должно обрабатывать гневных клиентов гораздо иначе, чем спокойные: сердитые люди должны быстро направляться к операторам с правильным опытом и обучением. Вокальный тон - довольно надежный индикатор эмоций, достаточно практичный, чтобы компании стремились заставить его работать. Google "распознавание речи речи", или прочтите это article, чтобы узнать больше.

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

Здесь есть "мультимодальная" область исследования эмоций. Представьте себе веб-интерфейс, с которым вы также можете поговорить (в соответствии с прототипом прототипа IBM/Motorola/Opera XHTML + Voice Profile). Обнаружение эмоций может быть основано на сочетании сигналов речевого и визуального входного модальности.

Ответ 8

Я думаю, мой алгоритм довольно прост, но почему бы не рассчитать смайлики через текст:) vs: (

Очевидно, что текст ":):):):)" разрешает счастливому пользователю, а ":(:(:(" наверняка решит грустный. Наслаждайтесь!

Ответ 9

Да.

Можно ли сделать это, это еще одна история. Сначала проблема заключается в том, что AI завершен.

Теперь, если у вас были тайм-ауты нажатия клавиш, вы должны понять это.

Ответ 10

Думаю, нечеткая логика. В любом случае будет довольно легко начать с нескольких правил определения настроения пользователя, а затем расширить и объединить "движок" с более точными и сложными.

Ответ 11

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

`K` 

`k`