文本文件聚类

时间:2011-05-06 07:28:12

标签: java

我有如下所示的文本文件

例如:

文件1:

       yamaha
       gladiator 
       bike  

文件2:

       bajaj 
       pulsar
       bike

文件3:

       yamaha 
       gladiator
       india

我必须单独阅读这些文件并创建群集。意思是说,从上面的例子来看,文件1和文件3是相似的,并且将创建一个集群。我想要至少一个单词在两个文件之间匹配以构成一个集群。所以最后我必须从前面得到两个集群作为 1:yamaha和2:bajaj。请帮助我....

2 个答案:

答案 0 :(得分:1)

听起来你只需要将每个文件读成Set<String>个单词,然后寻找交叉点来构建你的集群。例如,可以通过将单词地图构建为出现次数(Map<String, Integer>)或将单词地图构建为一组文件名(Map<String, Set<String>>)来实现。

不确定第二个示例群集来自何处,因为“bajaj”仅存在于文件2中。

编辑:根据请求解释地图和集合的工作原理

实例化将字符串(单词)映射到一组文件名的地图:

Map<String, Set<String>> wordsToFilenames = new HashMap<String, Set<String>>();

在文件名中添加一个单词(假设我们已经从文件中读入单词变量并将文件名放在文件名变量中,两个字符串):

Set<String> filenamesForWord;

if (wordsToFilenames.containsKey(word)) {
    filenamesForWord = wordsToFilenames.get(word);
}
else {
    filenamesForWord = new HashSet<String>();
    wordsToFilenames.put(word, filenamesForWord);
}

filenamesForWord.add(filename);

答案 1 :(得分:0)

您可以查看在文档分类方面做得很好的naïve Bayesian classifier。对于其他算法,请尝试使用Google搜索text classification algorithm