次のコードがあります。ディレクトリから多くのファイルをハッシュマップに読み込みます。これは私の機能 vecteurです。ステミングを行わないという意味ではややナイーブですが、それは今のところ私の主な関心事ではありません。このデータ構造をパーセプトロン アルゴリズムへの入力として使用する方法を知りたいです。これを言葉の袋と呼んでいると思いますね。
public class BagOfWords
{
static Map<String, Integer> bag_of_words = new HashMap<>();
public static void main(String[] args) throws IOException
{
String path = "/home/flavius/atheism;
File file = new File( path );
new BagOfWords().iterateDirectory(file);
for (Map.Entry<String, Integer> entry : bag_of_words.entrySet())
{
System.out.println(entry.getKey()+" : "+entry.getValue());
}
}
private void iterateDirectory(File file) throws IOException
{
for (File f : file.listFiles())
{
if (f.isDirectory())
{
iterateDirectory(file);
}
else
{
String line;
BufferedReader br = new BufferedReader(new FileReader( f ));
while ((line = br.readLine()) != null)
{
String[] words = line.split(" ");//those are your words
String word;
for (int i = 0; i < words.length; i++)
{
word = words[i];
if (!bag_of_words.containsKey(word))
{
bag_of_words.put(word, 0);
}
bag_of_words.put(word, bag_of_words.get(word) + 1);
}
}
}
}
}
}
パスが 'atheism' と呼ばれるディレクトリに移動していることがわかります。そこにはスポーツと呼ばれるディレクトリもあります。これら 2 つのクラスのドキュメントを直線的に分離してから、目に見えないテスト ドキュメントをいずれかのカテゴリに分離しようとします。
どうやってするか?それをいかに概念化するか。確かなリファレンス、包括的な説明、またはある種の疑似コードをいただければ幸いです。
ウェブ上で有益で明快な参考文献はあまり見つかりませんでした。