【发布时间】:2017-02-12 00:42:54
【问题描述】:
我想在java中建立一个倒排索引。我有 1400 个文本文件的 cran 数据。 我能够计算每个术语/单词的频率。我已经能够返回单词在整个集合中出现的次数,但我无法返回该单词出现在哪些文档中。这是我到目前为止的代码:
我想要以下形式的输出 术语 1:文档 1:2,文档 2:3 术语 2:文档 1:3,文档 4:1 ......等等
这里的 term 是 doc 文件中的一个词,doc 1:2 表示 term1 在 doc 1 中出现 2 次p>
public static void main(String[]args) throws FileNotFoundException{
Map<String, Integer> m = new HashMap<>();
String wrd;
for(int i=1;i<=2;i++){
//FileInputStream tdfr = new FileInputStream("D:\\logs\\steem"+i+".txt");
Scanner tdsc=new Scanner(new File("D:\\logs\\steem"+i+".txt"));
while(tdsc.hasNext()){
// m.clear();
Integer docid=i;
wrd=tdsc.next();
//Vector<Integer> vPosList = p.hPosList.get(wrd);
Integer freq=m.get(wrd);
//Integer doc=m1.get(i);
//System.out.println(m.get(wrd));
m.put(wrd, (freq == null) ? 1 : freq + 1);
}
System.out.println(m.size() + " distinct words" + " steem" +i);
System.out.println("Doc" +i+""+m);
//System.out.println("Doc"+i+""+m1);
m.clear();
tdsc.close();
}
//System.out.println(m.size() + " distinct words");
//System.out.println(m);
// System.out.println(m1);
}
}
【问题讨论】:
标签: java java-8 search-engine text-mining information-retrieval