Это основа области обработки естественного языка, называемой анализ настроений . Хотя ваш вопрос носит общий характер, он, безусловно, не является глупым - например, Amazon проводит подобные исследования текста, например, в обзорах продуктов.
Если вы серьезно относитесь к этому, то простая версия может быть достигнута с помощью -
Получить корпус позитивных / негативных настроений . Если бы это был профессиональный проект, вы могли бы потратить некоторое время и вручную аннотировать корпус, но если вы спешили или просто хотели сначала поэкспериментировать с этим, то я бы посоветовал взглянуть на корпус полярности настроений из исследований Бо Пана и Лилиан Ли. Проблема с использованием этого корпуса заключается в том, что он не предназначен для вашего домена (в частности, корпус использует обзоры фильмов), но он все равно должен применяться.
Разделите ваш набор данных на предложения, положительные или отрицательные . Для корпуса полярности настроения вы можете разделить каждый отзыв на составные предложения и затем применить тег общей полярности настроения (положительный или отрицательный) ко всем этим предложениям. Разделите этот корпус на две части - 90% должны быть для обучения, 10% должны быть для теста. Если вы используете Weka, то он может справиться с расщеплением корпуса для вас.
Применение алгоритма машинного обучения (например, SVM, Наивный Байес, Максимальная энтропия) к учебному корпусу на уровне слов. Эта модель называется мешком слов модели , который просто представляет предложение как слова, из которых оно состоит. Это та же модель, на которой работают многие спам-фильтры. Для хорошего ознакомления с алгоритмами машинного обучения есть приложение под названием Weka , которое реализует ряд этих алгоритмов и дает вам графический интерфейс для работы с ними. Затем вы можете проверить производительность модели с машинным обучением по ошибкам, сделанным при попытке классифицировать ваш тестовый корпус с этой моделью.
Примените этот алгоритм машинного обучения к своим сообщениям пользователя . Для каждого поста пользователя разделите пост на предложения, а затем классифицируйте их, используя вашу модель машинного обучения.
Так что да, если вы серьезно относитесь к этому, то это достижимо - даже без прошлого опыта в компьютерной лингвистике. Это будет изрядная работа, но даже с помощью текстовых моделей можно добиться хороших результатов.
Если вам нужна дополнительная помощь, не стесняйтесь обращаться ко мне - я всегда рад помочь другим, заинтересованным в НЛП =]
Маленькие заметки -
- Простое разбиение сегмента текста на предложения - это поле НЛП, которое называется обнаружение границы предложения . Для этого есть ряд инструментов, OSS или бесплатных, но для вашей задачи подойдет простое разделение на пробелы и знаки препинания.
- SVMlight также является еще одним учеником, изучающим машины, и фактически их индуктивный SVM выполняет задачу, аналогичную той, на которую мы смотрим - пытаясь классифицировать статьи Reuter о «корпоративных приобретениях» с 1000 положительные и 1000 отрицательных примеров.
- Превращение предложений в функции для классификации может потребовать некоторой работы. В этой модели каждое слово представляет собой особенность - для этого требуется токенизация предложения, что означает отделение слов и знаков препинания друг от друга. Еще один совет - строчные буквы всех отдельных токенов слов, чтобы слова «Я ненавижу тебя» и «Я ненавижу тебя» в конечном итоге считались одинаковыми. С большим количеством данных вы могли бы попытаться также указать, помогает ли использование заглавных букв в классификации, злится ли кто-то, но я считаю, что слов должно быть достаточно, по крайней мере, для первоначального усилия.
Редактировать
Я только что обнаружил LingPipe, у которого на самом деле есть учебник по анализу настроений с использованием Bo Pang и Lillian Lee Sentiment Polarity, о котором я говорил. Если вы используете Java, это может быть отличным инструментом для использования, и даже если это не так, он проходит через все шаги, которые я обсуждал выше.