嗨我有一个相对较大的文本块,我想找到其中最常见的关键字并计算这些关键字的密度。我想到的方式看起来似乎很慢或性能要求和困难:
迭代文本块中的每个单词 找到每个单词的所有相同匹配项 计算每个单词的总匹配数 比如前五个最匹配,然后计算它们相对于总块数的密度。 输出结果
使用jquery有没有简单快捷的方法呢?
答案 0 :(得分:5)
var text = "Lorem ipsum ...";
var word_list = text.split(/\W+/); // Split the text into words.
var counts = {};#
Allocate a dictionary
for (var i = 0; i < word_list.length; ++i) {
var word = word_list[i];
counts[word] = (counts[word] || 0) + 1; // Increment count by one.
}
var densities = {};
for (word in counts) {
densities[word] = parseFloat((counts[word] / word_list.length) * 100).toFixed(2); // Calculates all the densities percentage.
}
剩下的就是获得最频繁的那些。
您可能希望更改文本拆分为关键字的方式,或过滤非常常见/简短的字词。现在“它的”最终被分成'它','s'。这可能不是你想要的。
答案 1 :(得分:1)
我会用不同的滑动窗口来解决这个问题。每次遇到空格" "
时,递增一个单词计数器,并将当前单词添加到存储桶中。如果存储桶包含该字,请向存储桶添加计数器。解析整个文本后,获取具有最大计数的存储桶。输出桶字,将桶数除以最大计数。