Анализ документов и маркировка - PullRequest
3 голосов
/ 24 февраля 2011

Допустим, у меня есть куча эссе (тысячи), которые я хочу пометить, классифицировать и т. Д. В идеале я хотел бы обучить что-то , вручную классифицировав / пометив несколько сотен, а затемотпустите вещь.

Какие ресурсы (книги, блоги, языки) вы бы порекомендовали для выполнения такой задачи?Часть меня думает, что это было бы хорошо для Байесовского классификатора или даже Латентного семантического анализа , но я не очень знаком ни с тем, что я нашел изнесколько ruby ​​ gems .

Может ли что-то подобное быть решено байесовским классификатором?Должен ли я смотреть больше на семантический анализ / обработку естественного языка?Или я должен просто искать плотность ключевых слов и сопоставление оттуда?

Любые предложения приветствуются (я не против собрать несколько книг, если это то, что нужно)!

Ответы [ 2 ]

5 голосов
/ 04 марта 2011

Вау, это довольно громадная тема, в которую вы рискуете :) Об этом, безусловно, можно прочитать много книг и статей, но я постараюсь представить краткое введение.Я не большой эксперт, но я работал над некоторыми из этих вещей.

Сначала вам нужно решить, хотите ли вы классифицировать эссе по заранее определенным темам / категориям (проблема классификации), или вы хотите, чтобы алгоритм принимал решениеразные группы сами по себе (проблема кластеризации).Из вашего описания видно, что вы заинтересованы в классификации.

Теперь, когда вы делаете классификацию, вам сначала нужно создать достаточно данных для обучения.Вам нужно иметь несколько эссе, которые разделены на разные группы.Например, 5 эссе по физике, 5 эссе по химии, 5 эссе по программированию и так далее.Как правило, вы хотите получить как можно больше обучающих данных, но их количество зависит от конкретных алгоритмов.Вам также нужны данные проверки, которые в основном похожи на данные обучения, но полностью разделены.Эти данные будут использоваться для оценки качества (или производительности по математике) вашего алгоритма.

Наконец, сами алгоритмы.Два, с которыми я знаком, основаны на байесовском и TF-IDF.Для Байеса я сейчас разрабатываю нечто подобное для себя в ruby, и я задокументировал свой опыт в своем блоге.Если вам интересно, просто прочитайте это - http://arubyguy.com/2011/03/03/bayes-classification-update/, и если у вас есть какие-либо дополнительные вопросы, я постараюсь ответить.

TF-IDF - сокращение от TermFrequence - InverseDocumentFrequency.По сути, идея заключается в том, чтобы любой документ нашел в учебном наборе несколько документов, которые наиболее похожи на него, а затем определил его категорию на основе этого.Например, если документ D похож на T1, который представляет собой физику, и T2, который представляет собой физику, и T3, который представляет собой химию, вы предположите, что D, скорее всего, связан с физикой и небольшой химией.наиболее важны для редких слов и не имеют значения для общих слов.Например, «ядро» - редкое физическое слово, но «работа» - очень распространенное неинтересное слово.(Вот почему это называется частотой обратного члена).Если вы можете работать с Java, есть очень хорошая библиотека Lucene, которая предоставляет большую часть этого материала из коробки.Найдите API для «похожих документов» и посмотрите, как он реализован.Или просто Google для «TF-IDF», если вы хотите реализовать свой собственный

1 голос
/ 24 февраля 2011

В прошлом я делал нечто подобное (хотя это было для коротких новостей), используя некоторый алгоритм векторного кластера. Я не помню этого сейчас, это было то, что Google использовал в зачаточном состоянии. Используя их документ, я смог запустить прототип на PHP за один или два дня, а затем перенес его на Java для ускорения.

http://en.wikipedia.org/wiki/Vector_space_model

http://www.la2600.org/talks/files/20040102/Vector_Space_Search_Engine_Theory.pdf

...