寻找更好的javascript文本匹配评分系统

时间:2011-08-14 18:03:33

标签: javascript string-matching fuzzy-search

我一直在使用String Score进行很多项目。这对于排序名称,国家等名单非常有用。

现在,我正在开展一个项目,我希望将一个术语与一组更大的文本匹配,而不仅仅是几个单词。喜欢,一个段落。

给出以下两个字符串:

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?";

我希望术语eat返回string2高于string1。但是,string1得分更高:

string1.score('eat');
> 0.5261904761904762

string2.score('eat');
> 0.4477777777777778

也许我认为string2应该得分更高,我错了,如果这是你的逻辑,我很乐意听到这种逻辑的论据。否则,关于更多上下文javascript匹配算法的任何想法?

1 个答案:

答案 0 :(得分:2)

如果score未考虑重复,那么"eat"中只有一次string2会增加得分,因此"eat"的其他出现次数会被视为不匹配在总分中计入的垃圾。

许多字符串相似性指标以这种方式表现,例如在Edit distance中,不匹配的字符越多,得分和重复被视为不匹配的越低。

我不清楚阅读source它正在使用什么算法,但得分变量

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

似乎没有考虑多次重复。

如果你想要计算多次出现次数,那么听起来你想要的不是字符串相似性算法,而是fuzzy match algo所以你可以找到匹配的数量。

也许yeti witch会对你有用。