2015-07-06 2 views
3

Я использую Apache OpenNLP для анализа настроений в цепочках Yammer. Идея здесь состоит в том, чтобы классифицировать каждый разговор на положительные, отрицательные или нейтральные чувства. Разговор может быть одним предложением или группой предложений.Анализ настроений с использованием OpenNLP

У меня есть 2 модели - модель классификации коротких предложений и модель классификации длинного предложения. Модель классификации короткого предложения обучена с короткими предложениями (менее 10 слов) с обрезанием 2 и модель классификации длинного предложения обучена с более длинными предложениями с обрезанием 5.

Вот мой подход

  1. Прочитайте каждый разговор.
  2. Очистите его, чтобы удалить URL-адреса HTTP, специальные символы, добавить пробел после точки и т. Д.
  3. Используйте SentenceDetector, чтобы разделить разговор на предложения.
  4. Для каждой классификации предложений предложения. Если предложение коротко, то вызывается модель классификации коротких предложений или вызывается модель классификации длинного предложения. Результат классификации предложений положительный, отрицательный или нейтральный
  5. Подведите итоги классификации предложений. т. е. если будут найдены более положительные предложения, классифицируйте разговор как положительный, отрицательный или нейтральный соответственно.

У меня есть несколько вопросов, связанных с этим подходом

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

ответ

0

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

Что касается моделей с длинным и коротким предложением, это кажется хорошей идеей, предполагая, что между контентом имеется достаточно большая разница («обычно»), а не длинное предложение. Вы можете также рассмотреть другой признак функции для модели более длинного предложения ... иногда ngrams (word bigrams) работают хорошо, чтобы помочь контекстуализировать контент немного больше, чем обычный подход слова «сумка слов».

Что касается вывода, свертывание суммы может быть слишком сложным для нормализации из-за неизвестного количества предложений в каждом потоке (возможно ...), поэтому я бы рассмотрел возможность создания базовой статистики (мин, макс. , sum, avg, stdev, most) для каждого класса каждой модели, чтобы вы могли задавать лучшие вопросы о результатах (например, вы могли бы записать результаты в индекс для нечеткого обнаружения, который позволил бы использовать несколько вариантов использования)

HTH

 Смежные вопросы

  • Нет связанных вопросов^_^