2011-08-14 15 views
1

私は多くのプロジェクトにString Scoreを使用しています。もっと良いjavascriptのテキストマッチングスコアリングシステムをお探しください

今、私はいくつかの言葉だけではなく、より大きなテキストセットに用語をマッチさせたいプロジェクトに取り組んでいます。同様に、段落。私はstring1よりも高いようstring2返すように用語eatを希望

string1 = "I want to eat."; 
string2 = "I want to eat. Let's go eat. All this talk about eating is making me hungry. Ready to eat?"; 

は、次の2つの文字列を与えられました。しかし、より高いstring1スコア:

string1.score('eat'); 
> 0.5261904761904762 

string2.score('eat'); 
> 0.4477777777777778 

は、たぶん私は、より高いスコアすべきstring2思考では間違っている、それはあなたのロジックである場合、私は、そのロジックの引数を聞いてみたいです。それ以外の場合は、よりコンテキストのjavascriptのマッチングアルゴリズムのアイデアですか?

+1

このような質問はjavascriptでは稀です! +1 – Mrchief

答えて

2

scorestring2で、アカウントの繰り返しに"eat"の唯一の発生を取っていない場合は"eat"の他の発生は合計スコアのに対してカウントし、比類のないゴミとして処理されるので、スコアに追加されます。

多くの文字列類似性メトリックは、このように動作します。 Edit distanceでは、一致しない文字が多いほど、スコアと繰り返しが低いものは不一致として扱われます。

それは、それが使用しているアルゴ何​​を読んでから私に明確ではないですが、スコア変数

var total_character_score = 0, 
    start_of_string_bonus, 
    abbreviation_score, 
    fuzzies=1, 
    final_score; 

は、アカウントに複数の繰り返しを取るしていないようです。

複数の出現を数えたい場合は、文字列類似性アルゴリズムではなく、fuzzy match algoであることがわかりますので、一致する数を見つけることができます。

yeti witchが最適です。

+0

そうです、それは理にかなっています。私の質問は、より良い選択肢を見つけることです。 – hookedonwinter

+0

@hookedonwinter、私の編集をご覧ください。 –

+0

ありがとうございます。私は今、魔女を探しています。あなたは私が探しているものと、検索するボキャブラリーを理解するのを間違いなく助けてくれました。それではありがとうございます:) – hookedonwinter

関連する問題