うわー、それはあなたが冒険しているかなり大きなトピックです:)あなたがそれについて読むことができる本や記事は確かにたくさんありますが、私は簡単な紹介を提供しようとします。私は大きな専門家ではありませんが、このようなもののいくつかに取り組みました。
最初に、エッセイを事前定義されたトピック/カテゴリに分類するか(分類問題)、アルゴリズムが独自に異なるグループを決定するか(クラスタリング問題)を決定する必要があります。あなたの説明から、あなたは分類に興味があるようです。
ここで、分類を行うときは、最初に十分なトレーニングデータを作成する必要があります。あなたは異なるグループに分けられたエッセイの数を持っている必要があります。たとえば、5つの物理エッセイ、5つの化学エッセイ、5つのプログラミングエッセイなどです。通常、できるだけ多くのトレーニングデータが必要ですが、十分な量は特定のアルゴリズムによって異なります。また、検証データも必要です。これは基本的にトレーニングデータと似ていますが、完全に分離されています。このデータは、アルゴリズムの品質(または数学的に言えばパフォーマンス)を判断するために使用されます。
最後に、アルゴリズム自体。私がよく知っている2つは、ベイズベースとTF-IDFベースです。ベイズの場合、私は現在ルビーで自分と同じようなものを開発しており、自分の経験をブログに記録しています。興味のある方は、こちらをお読みください-http://arubyguy.com/2011/03/03/bayes-classification-update/。フォローアップの質問がある場合は、お答えします。
TF-IDFは、TermFrequence-InverseDocumentFrequencyの略です。基本的には、特定のドキュメントがトレーニングセット内で最も類似しているドキュメントをいくつか見つけ、それに基づいてカテゴリを把握するという考え方です。たとえば、ドキュメントDが物理学であるT1と物理学であるT2と化学であるT3に類似している場合、Dは物理学と少しの化学についてである可能性が最も高いと推測します。
それが行われる方法は、まれな単語に最も重要性を適用し、一般的な単語には重要性を適用しないことです。たとえば、「核」はまれな物理学の単語ですが、「仕事」は非常に一般的な興味のない単語です。(それが逆項頻度と呼ばれる理由です)。Javaを使用できる場合は、非常に優れたLuceneライブラリがあり、これらのほとんどをすぐに使用できます。「類似ドキュメント」のAPIを探し、それがどのように実装されているかを調べます。または、独自に実装したい場合は、「TF-IDF」をグーグルで検索してください