我一直在使用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匹配算法的任何想法?
答案 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会对你有用。