【发布时间】:2015-04-16 16:24:26
【问题描述】:
我有以下代码,它将目录中的许多文件读入哈希映射,这是我的功能向量。从某种意义上说,它没有阻止,但这有点幼稚,但这不是我现在主要关心的问题。我想知道如何使用这个数据结构作为感知器算法的输入。我想我们称之为一袋文字,不是吗?
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 的目录,我想尝试线性分离这两类文档,然后尝试将看不见的测试文档分成任一类别。
如何做到这一点?如何将其概念化。我会很感激一个可靠的参考,全面的解释或某种伪代码。
我没有在网上找到很多内容丰富且清晰的参考资料。
【问题讨论】:
-
您需要将您的文件(文档)矢量化为矢量表示,也许您想看看我的矢量化器类:github.com/thomasjungblut/thomasjungblut-common/blob/master/src/…
-
这与我现在拥有的哈希映射有何不同?
-
@ThomasJungblut 我认为这就是我现在已经在做的事情,不是吗?
-
你的
bag_of_words是一本字典,你需要一袋你解析的每个文档(文件)。 -
啊,所以现在我将所有文件放入一个字典中,但我真正应该做的是为每个文件创建一个单独的字典?
标签: java machine-learning perceptron