我正试图获得卢塞内指数中每个特定文件最经常出现的频率。 我试图确定我所关心的20个最容易出现的措辞。
然而,在请比较器时,我正在得到“无法公开显示器类型的例子”。
因此,我通过每份文件的载体,并尽我所知的最崇高术语。
protected static Collection getTopTerms(TermFreqVector tfv, int maxTerms){
String[] terms = tfv.getTerms();
int[] tFreqs = tfv.getTermFrequencies();
List result = new ArrayList(terms.length);
for (int i = 0; i < tFreqs.length; i++) {
TermFrq tf = new TermFrq(terms[i], tFreqs[i]);
result.add(tf);
}
Collections.sort(result, new FreqComparator());
if(maxTerms < result.size()){
result = result.subList(0, maxTerms);
}
return result;
}
/*Class for objects to hold the term/freq pairs*/
static class TermFrq{
private String term;
private int freq;
public TermFrq(String term,int freq){
this.term = term;
this.freq = freq;
}
public String getTerm(){
return this.term;
}
public int getFreq(){
return this.freq;
}
}
/*Comparator to compare the objects by the frequency*/
class FreqComparator implements Comparator{
public int compare(Object pair1, Object pair2){
int f1 = ((TermFrq)pair1).getFreq();
int f2 = ((TermFrq)pair2).getFreq();
if(f1 > f2) return 1;
else if(f1 < f2) return -1;
else return 0;
}
}
解释和更正 我将非常赞赏,如果其他人在提炼频率方面有经验,并且做得更好,我将向所有建议开放!
请帮助! Thanx!