原则上,这个问题可以用任何语言回答,但是我正在寻找JavaScript实现的方法。
有没有库可以让我测量两个字符串之间的“相似度”?更普遍地说,是否有任何算法可以做到这一点,我可以在JavaScript中实现?
以以下字符串为例:
Abnormal Elasticity of Single-Crystal Magnesiosiderite across the Spin Transition in Earth’s Lower Mantle 再考虑稍微调整一下的字符串。请注意不同的加粗部分:
bnormal Elasticity of Single Crystal Magne sio-Sid erite across the Spin-Tra nsition in Eart hs Lower Mant le.
JavaScript的本机等号运算符不能告诉您这些字符串之间的关系。在这种特定情况下,您可以使用正则表达式匹配字符串,但通常仅在您知道预期差异时才起作用。如果输入字符串是随机的,则此方法的通用性迅速下降。
方法... 我可以想象编写一种算法,将输入字符串拆分成任意数量的子字符串,然后将目标字符串与所有这些子字符串进行匹配,并使用匹配数作为相似度的衡量标准。但是这感觉像一种不太理想的方法,我甚至不想思考O如何取决于N的大小。
对于这种算法,似乎有很多自由参数。例如,字符的大小写敏感性是否应该对相似度的测量产生同等/更多/更少的贡献,似乎是由设计者做出的任意选择,即:
相似度(“Abxy”,“bAxy”)与相似度(“Abxy”,“aBxy”)
更具体地定义要求...第一个示例是我可以使用它的情况。我正在加载一堆字符串(学术论文标题),并检查它们是否存在于我的数据库中。但是,来源可能包含拼写错误、约定差异、错误等,这使匹配变得困难。在这种特定情况下,可能有更简单的方法来匹配标题:因为您可以预期可能会出现什么问题,所以这允许您编写一些正则表达式。
有没有库可以让我测量两个字符串之间的“相似度”?更普遍地说,是否有任何算法可以做到这一点,我可以在JavaScript中实现?
以以下字符串为例:
Abnormal Elasticity of Single-Crystal Magnesiosiderite across the Spin Transition in Earth’s Lower Mantle 再考虑稍微调整一下的字符串。请注意不同的加粗部分:
bnormal Elasticity of Single Crystal Magne sio-Sid erite across the Spin-Tra nsition in Eart hs Lower Mant le.
JavaScript的本机等号运算符不能告诉您这些字符串之间的关系。在这种特定情况下,您可以使用正则表达式匹配字符串,但通常仅在您知道预期差异时才起作用。如果输入字符串是随机的,则此方法的通用性迅速下降。
方法... 我可以想象编写一种算法,将输入字符串拆分成任意数量的子字符串,然后将目标字符串与所有这些子字符串进行匹配,并使用匹配数作为相似度的衡量标准。但是这感觉像一种不太理想的方法,我甚至不想思考O如何取决于N的大小。
对于这种算法,似乎有很多自由参数。例如,字符的大小写敏感性是否应该对相似度的测量产生同等/更多/更少的贡献,似乎是由设计者做出的任意选择,即:
相似度(“Abxy”,“bAxy”)与相似度(“Abxy”,“aBxy”)
更具体地定义要求...第一个示例是我可以使用它的情况。我正在加载一堆字符串(学术论文标题),并检查它们是否存在于我的数据库中。但是,来源可能包含拼写错误、约定差异、错误等,这使匹配变得困难。在这种特定情况下,可能有更简单的方法来匹配标题:因为您可以预期可能会出现什么问题,所以这允许您编写一些正则表达式。