Алгоритм классификации текста/категоризации
Моя цель - [полу] автоматически назначать тексты для разных категорий. Существует набор пользовательских категорий и набор текстов для каждой категории. Идеальный алгоритм должен уметь учиться по классификации человека, а затем автоматически классифицировать новые тексты.
Может ли кто-нибудь предложить такой алгоритм и, возможно, библиотеку .NET, которая реализует ше?
Ответы
Ответ 1
Выполнение этого не является тривиальным. Очевидно, вы можете создать словарь, который отображает определенные ключевые слова в категории. Просто найти ключевое слово предложит определенную категорию.
Тем не менее, в тексте на естественном языке ключевые слова обычно не были бы в их исходной форме. Вам понадобятся некоторые инструменты для морфологии, чтобы найти форму стебля и использовать его в словаре.
Но тогда кто-то мог написать что-то вроде: "Эта статья не о...". Это привело бы к необходимости синтаксиса и семантического анализа.
И тогда вы обнаружите, что определенные ключевые слова могут использоваться в нескольких категориях: "группа" может использоваться в музыке, технике или даже в ремесленной работе. Поэтому вам понадобится онтология, статистические или другие методы для взвешивания вероятности выбора категории, если она не определена.
Некоторые ключевые слова могут быть даже нелегко вписаться в онтологию: математик ближе к программисту или садовнику? Но вы сказали в своем вопросе, что категории создаются людьми, поэтому они также могут помочь в построении онтологии.
Посмотрите вычислительную лингвистику здесь и в Wikipedia для дальнейшие исследования.
Теперь, чем более узким является поле ваших текстов, тем они более структурированы и чем меньше словарный запас, тем легче становится проблема.
Снова некоторые ключевые слова для дальнейших исследований: морфология, синтаксический анализ, семантика, онтология, вычислительная лингвистика, индексирование, клавиша
Ответ 2
Существует несколько подходов к автоматической классификации текста. Самый простой из них - наивный классификатор Байеса. Другой - ближайший сосед К, который вы можете использовать. Этот ответ google на категоризация текста может вам помочь.
Ответ 3
Смотрите мою серию видео по этой теме.
http://vancouverdata.blogspot.com/2010/11/text-analytics-with-rapidminer-loading.html
Классификация находится в видео 5, но другие видео могут помочь вам ускориться.
Все это основано на программе FOSS RapidMiner.
Ответ 4
Поддержка векторной машины. Все любят машины векторной поддержки. Вам нужно будет немного почитать и, возможно, даже купить книгу. Но вы можете начать с чтения статьи, чтобы узнать, нравится ли вам эта идея.
Ответ 5
Посмотрите этот пример из изучения scikit. В этом примере существует целый ряд различных алгоритмов, поэтому вы можете сравнить результаты.
Ответ 6
Общий термин для этих методов - "многомерные методы". То, что при поиске по "текстовой классификации" или "категоризации текста" должно привести некоторые полезные выводы. Удачи!
Ответ 7
Я давно искал ответ на этот вопрос. Сегодня я нашел ответ.
Существует программа с открытым исходным кодом под названием "dbacl", которая делает это. Он классифицирует документы на столько категорий, сколько вам нравится (до определенного максимума).
Другие ответы на такие вещи, как "нетривиальные", все верны, но наличие простого в использовании пакета, который делает жесткий материал, помогает сделать его управляемым.
Ответ 8
Одна библиотека, которая легко справляется с этой задачей, - это Scikit-learn. Он имеет множество алгоритмов, таких как Stochast Gradient Descent (SGDClassifier). Я написал сообщение в блоге об этом с помощью примера с игрушкой http://www.data-blogger.com/2016/01/20/spam-detection/.