2

嗨,我有一个相对较大的文本块,我想在其中找到最常见的关键字并计算这些关键字的密度。我想到的方式似乎可能很慢或性能要求高且困难:

遍历文本块中的每个单词。
为这些单词中的每一个找到所有相同的匹配项计算这些单词中的每一个的总匹配项假设前 5 个最多匹配项,然后计算它们相对于总块的密度。输出结果

有没有使用 jquery 做这件事的简单快速更好的方法?

4

2 回答 2

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.
}

剩下的就是获取最常见的。

您可能想要更改文本拆分为关键字的方式,或过滤掉非常常见/简短的单词。现在“it's”最终分裂成“it”、“s”。这可能不是你想要的。

于 2013-01-27T23:07:51.980 回答
1

我会用不同的滑动窗口来解决这个问题。每次遇到空格" "时,增加一个单词计数器,并将当前单词添加到存储桶中。如果存储桶包含该单词,则在存储桶中添加一个计数器。解析整个文本后,获取具有最大计数的存储桶。输出桶字,将桶数除以最大计数。

于 2013-01-27T23:05:23.160 回答