我有如下所示的文本文件
例如:
文件1:
yamaha
gladiator
bike
文件2:
bajaj
pulsar
bike
文件3:
yamaha
gladiator
india
我必须单独阅读这些文件并创建群集。意思是说,从上面的例子来看,文件1和文件3是相似的,并且将创建一个集群。我想要至少一个单词在两个文件之间匹配以构成一个集群。所以最后我必须从前面得到两个集群作为 1:yamaha和2:bajaj。请帮助我....
答案 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。