Что вы имеете в виду по классификации очень важно.
Категория: Запланированная задача, для которой требуется предварительно маркированное тело заранее. Переходя от уже помеченного корпуса, вам необходимо создать модель, используя несколько методов и подходов, и, наконец, вы можете классифицировать немаркированный тестовый корпус с помощью этой модели. Если это так, вы можете использовать классификатор с несколькими классами, который обычно является бинарным деревом приложения двоичного классификатора. Современный подход для такого рода задач - использование отрасли машинного обучения, SVM. Два из лучших классификаторов SVM: LibSVM и SVMlight. Они с открытым исходным кодом, простые в использовании и включают в себя многоклассовые инструменты классификации. Наконец, вы должны провести обзор литературы, чтобы понять, что делать, а также получить хорошие результаты, потому что использование этих классификаторов само по себе недостаточно. Вы должны манипулировать/предварительно обработать ваш корпус, чтобы извлечь информационные детали (например, униграммы) и исключить шумные части. В общем, вам, скорее всего, предстоит пройти долгий путь, но НЛП - очень интересная тема и стоит работать.
Однако, если вы имеете в виду классификацию, это кластеризация, то проблема будет сложнее. Кластеризация - это задача без надзора, что означает, что вы не будете включать информацию о том, какой пример принадлежит какой группе/теме/классу. Существуют также академические работы по гибридным полуконтролируемым подходам, но они немного расходятся с реальной целью проблемы кластеризации. Предварительная обработка, которую вы должны использовать при управлении своим корпусом, имеет схожую природу с тем, что вы должны делать в проблеме классификации, поэтому я больше не буду упоминать об этом. Для кластеризации необходимо придерживаться нескольких подходов. Во-первых, вы можете использовать LDA (Latent Dirichlet Allocation) способ уменьшить размерность (количество измерений вашего пространственного пространства) вашего корпуса, что будет способствовать повышению эффективности и информации от функций. Рядом или после LDA вы можете использовать Иерархическое кластерирование или аналогичные другие методы, такие как K-Means, чтобы скопировать ваш немеченой корпус. Вы можете использовать Gensim или Scikit-Learn как инструменты с открытым исходным кодом для кластеризации. Оба являются мощными, хорошо документированными и простыми в использовании инструментами.
Во всех случаях делайте много академического чтения и пытайтесь понять теорию под этими задачами и проблемами. Таким образом, вы можете придумать инновационные и эффективные решения, для которых вы конкретно занимаетесь, потому что проблемы в НЛП обычно зависят от вашего тела, и вы, как правило, сами по себе, имея дело с вашей конкретной проблемой. Очень сложно найти общие и готовые к использованию решения, и я также не рекомендую полагаться на такой вариант.
Я могу ответить на ваш вопрос, извините за неуместные детали.
удачи =)
Большое спасибо, Шейн, за ваш ответ.Я обязательно посмотрю на данные, которые вы упомянули! Но да, я работаю только по английским данным и общим доменам новостных статей (похожих на те, которые классифицированы по Алхимии и OpenCalais). Я дам MALLET выстрел. – MFARID
Отлично, дайте мне знать, если у вас возникнут проблемы! – Shane