我有以下代码,它将目录中的许多文件读入哈希映射,这是我的功能 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);
}
}
}
}
}
}
您可以看到该路径指向一个名为“无神论”的目录,还有一个名为 sports 的目录,我想尝试线性分离这两类文档,然后尝试将看不见的测试文档分成任一类别。
怎么做?如何将其概念化。我会很感激一个可靠的参考,全面的解释或某种伪代码。
我在网上没有找到很多信息丰富且清晰的参考资料。