Вау, это довольно громадная тема, в которую вы рискуете :) Об этом, безусловно, можно прочитать много книг и статей, но я постараюсь представить краткое введение.Я не большой эксперт, но я работал над некоторыми из этих вещей.
Сначала вам нужно решить, хотите ли вы классифицировать эссе по заранее определенным темам / категориям (проблема классификации), или вы хотите, чтобы алгоритм принимал решениеразные группы сами по себе (проблема кластеризации).Из вашего описания видно, что вы заинтересованы в классификации.
Теперь, когда вы делаете классификацию, вам сначала нужно создать достаточно данных для обучения.Вам нужно иметь несколько эссе, которые разделены на разные группы.Например, 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», если вы хотите реализовать свой собственный