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