Анализ настроений по большому набору текста интерактивной беседы

В названии говорится все; У меня есть база данных SQL, разрывающаяся на швах с текстом онлайн-беседы. Я уже проделал большую часть этого проекта на Python, поэтому хотел бы сделать это, используя библиотеку NLTK Python (если только не существует серьезной причины).

Данные организованы Thread , Username и Post . Каждая нить более или менее сосредоточена на обсуждении одного «продукта» категории, который я заинтересован в анализе. В конечном счете, когда это будет завершено, я бы хотел, чтобы у кого-то из предполагаемых мнений (например, нелюбимого рода) было высказано мнение о любом из продуктов, которые они обсуждали в какой-то момент.

  • Использование eval в Python?
  • разбор файла fasta с использованием генератора (python)
  • Почему код Python работает быстрее в функции?
  • Как я могу получить значения (x, y) линии, которые построены на графике контура?
  • Использование памяти DBSCAN scikit-learn
  • Есть ли простой способ сравнить скрипт python?
  • Итак, что я хотел бы знать:

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

    2) Как определить настроение конкретных пользователей на основе их сообщений? Из моего ограниченного понимания я должен сначала «обучить» NLTK распознавать определенные показатели мнения, а затем просто определить контекст этих слов, когда они появляются в тексте?

    Как вы уже догадались, у меня нет опыта работы с НЛП. Из моего чтения до сих пор, я думаю, что я могу справиться с его изучением. Даже простая базовая и грубая рабочая модель на данный момент будет отличной, если кто-то может указать мне в правильном направлении. Google не очень помог мне.

    PS У меня есть разрешение на анализ этих данных (в случае, если это имеет значение)

  • Почему код Python работает быстрее в функции?
  • разбор файла fasta с использованием генератора (python)
  • Есть ли простой способ сравнить скрипт python?
  • Какие библиотеки предлагают базовые или продвинутые методы НЛП?
  • Использование eval в Python?
  • Анализ выражений в Python
  • 2 Solutions collect form web for “Анализ настроений по большому набору текста интерактивной беседы”

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

    Если вы заинтересованы в создании классификатора положительных / отрицательных настроений, используя свой собственный набор учебных материалов, я бы избегал простого подсчета ключевых слов, поскольку они не точны по ряду причин (например, отрицание положительных слов: «недовольны», ). Альтернатива, где вы все еще можете использовать большой набор для обучения без необходимости вручную отмечать что-либо, – это дистанционное наблюдение . В принципе, этот подход использует смайлики или другие специфические текстовые элементы в качестве шумных ярлыков . Вам по-прежнему нужно выбирать, какие функции имеют значение, но многие исследования имеют хорошие результаты, просто используя униграммы или биграмы (отдельные слова или пары слов, соответственно).

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

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

    В NLTK есть несколько встроенных классификаторов с методами обучения и классификации ( Naive Bayes , MaxEnt и т. Д.), Но если вы заинтересованы в использовании Vector Vector Machines (SVM), вам следует искать в другом месте. Технически NLTK предоставляет вам класс SVM, но на самом деле это всего лишь оболочка для PySVMLight , которая сама по себе является оболочкой для SVMLight , написанной на C. У меня были многочисленные проблемы с этим подходом, хотя я бы рекомендовал LIBSVM .

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

    Вы можете обучить любой классификатор с похожими наборами данных и посмотреть, какие результаты будут получены при применении к вашим данным. Например, NLTK содержит Movie Reviews Corpus, который содержит 1000 положительных и 1000 отрицательных отзывов. Вот пример того, как с ним следует обучать классификатора Наивного Байеса . Некоторые другие наборы данных обзора, такие как данные обзора продукта Amazon, доступны здесь .

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

    Python - лучший язык программирования в мире.