В большинстве приложений такого типа вам придется использовать собственный код для выполнения задачи статистической классификации. Как предположил Лука, NLTK - идеальный инструмент для манипуляции естественным языком в Python, если ваша цель не мешает некоммерческому характеру его лицензии. Однако я бы посоветовал другие программные пакеты для моделирования. Я не нашел много сильных продвинутых моделей машинного обучения, доступных для Python, поэтому я собираюсь предложить несколько автономных двоичных файлов, которые легко с ним взаимодействуют.
Возможно, вас заинтересует The Toolkit for Advanced Discriminative Modeling , который можно легко связать с Python. Это использовалось для задач классификации в различных областях обработки естественного языка. У вас также есть выбор из нескольких различных моделей. Я предлагаю начать с классификации максимальной энтропии, если вы уже знакомы с реализацией наивного байесовского классификатора. Если нет, вы можете изучить его и написать код, чтобы действительно получить достойное представление о статистической классификации как о задаче машинного обучения.
Группы компьютерной лингвистики Техасского университета в Остине провели занятия, на которых большинство проектов, вышедших из них, использовали этот замечательный инструмент. Вы можете посмотреть страницу курса по компьютерной лингвистике II, чтобы получить представление о том, как заставить его работать и какие предыдущие приложения он обслуживал.
Еще один отличный инструмент, который работает в том же духе, - это Mallet . Разница между Mallet в том, что там немного больше документации и доступно несколько моделей, таких как деревья решений, и он написан на Java, что, на мой взгляд, делает его немного медленнее. Weka - это целый набор различных моделей машинного обучения в одном большом пакете, который включает некоторые графические элементы, но на самом деле он в основном предназначен для педагогических целей, и я бы не стал его запускать в производство.
Удачи в решении вашей задачи. По-настоящему трудной частью, вероятно, будет объем инженерных знаний, необходимых вам заранее, чтобы классифицировать «исходный набор», на основе которого ваша модель будет учиться. Он должен быть довольно большим, в зависимости от того, проводите ли вы двоичную классификацию (счастливые или грустные) или целый ряд эмоций (что потребует еще большего). Обязательно сохраните некоторые из этих спроектированных данных для тестирования или запустите несколько тестов с десятикратным увеличением или удалением одного, чтобы убедиться, что вы действительно делаете хорошую работу по прогнозированию, прежде чем размещать их там. И, самое главное, получайте удовольствие! На мой взгляд, это лучшая часть НЛП и ИИ.