Ответ 1
Для обучения любого классификатора требуется набор тренировок помеченных данных и экстрактор возможностей для получения наборов функций для каждого текста. После того, как у вас есть обученный классификатор, вы можете применить его к ранее невидимому тексту (без метки) и получить классификацию, основанную на используемом алгоритме машинного обучения. NLTK дает хорошее объяснение и некоторые примеры, чтобы поиграть с.
Если вы заинтересованы в создании классификатора положительных/отрицательных настроений, используя свой собственный набор учебных материалов, я бы избегал простого подсчета ключевых слов, так как они не являются точный по ряду причин (например, отрицание положительных слов: "недоволен" ). Альтернатива, где вы все еще можете использовать большой набор тренировок без необходимости вручную отмечать что-либо, - это дистанционное наблюдение. В принципе, этот подход использует смайлики или другие конкретные текстовые элементы как шумные метки. Вам все же нужно выбирать, какие функции имеют значение, но многие исследования имеют хорошие результаты, просто используя униграммы или битрамы (отдельные слова или пары слов, соответственно).
Все это можно сделать относительно легко с Python и NLTK. Вы также можете использовать инструмент, например NLTK-trainer, который является оболочкой для NLTK и требует меньше кода.
Я думаю, это исследование Go et al. является одним из самых простых для понимания. Вы также можете прочитать другие исследования для отдаленного наблюдения, анализ настроения удаленного наблюдения и анализ настроений.
В NLTK есть несколько встроенных классификаторов с методами обучения и классификации (Наивный Байес, MaxEnt и т.д.), но если вы заинтересованы в использовании поддерживающих векторных машин (SVM), вам следует искать в другом месте. Технически NLTK предоставляет вам класс SVM, но на самом деле это всего лишь оболочка для PySVMLight, который сам является оберткой для SVMLight, написанной на C. У меня были многочисленные проблемы с этим подходом, хотя и вместо этого рекомендует LIBSVM.
Для определения темы многие используют простые ключевые слова, но существуют более сложные методы.