我一直在研究whatsapp对话分析器,现在我对做TF-IDF事情很感兴趣。
我一方面有一个对话中出现的所有单词的列表,没有语法错误,所有单词都出现在词典中。
另一方面,对于tdif计算器输入,我有:
这里是使我有些困惑的部分。 我有一个for循环,该循环遍历单词列表,而在此循环中,还有另一个for循环,用于计算整个会话中该单词的tfidf。
每个内部循环应该给我一个不同的值(逻辑上),但是我不知道该值如何处理。 我要做的是将这些值加到一个变量中,然后将其除以值> 0的次数。
结果是“微波”,“你好”和一些随机单词。我确定问题在于如何计算值的“平均值”。
希望您能理解我并提供帮助。
TFIDFCalculator tfidf = new TFIDFCalculator();
for (String s : wordList) {
double avg = 0;
int j = 0;
for (List doc : documents) {
double n = tfidf.tfIdf(doc, documents, s);
if (!Double.isNaN(n)) {
avg += n;
if (n > 0)
j++;
}
}
if (relevantWords.length == m)
relevantWords = java.util.Arrays.copyOf(relevantWords, relevantWords.length + (relevantWords.length / 2));
relevantWords[m] = new Word(s, avg/j);
//System.out.println("Word added: " + s + "/" + avg);
m++;