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 に答える