String 对无关字符具有较低权重的字符串度量

String 对无关字符具有较低权重的字符串度量,string,string-matching,string-metric,String,String Matching,String Metric,我试图找到一个字符串度量,以便在列表中找到与任意输入最相似的条目。看起来,即使子字符串完全匹配,大多数常见的字符串度量也会对无关字符施加很大的权重。例如,“Corvette,红色2013”和“Corvette”使用difflib.get_close_matches()的匹配存储为0.11,但“octet rev”和“Corvette”的匹配分数为0.23 我知道我的名单可能会有一些无关的信息(比如“红色2013”),但我更感兴趣的是知道“corvette”是一个完全匹配的名字,而忽略了这些无关的

我试图找到一个字符串度量,以便在列表中找到与任意输入最相似的条目。看起来,即使子字符串完全匹配,大多数常见的字符串度量也会对无关字符施加很大的权重。例如,“Corvette,红色2013”和“Corvette”使用difflib.get_close_matches()的匹配存储为0.11,但“octet rev”和“Corvette”的匹配分数为0.23

我知道我的名单可能会有一些无关的信息(比如“红色2013”),但我更感兴趣的是知道“corvette”是一个完全匹配的名字,而忽略了这些无关的信息“八重奏版本”将被视为虚假匹配


是否有任何字符串匹配度量以我需要的方式衡量匹配?更好的是,python包中已经实现了一个吗?

您实际上在试图解决两个问题:最长的公共子字符串和最短的编辑距离。从谷歌的搜索结果可以看出,这是一个非常重要的研究领域。这些论文也不便宜。在你的情况下,应该把你的查询和列表条目分解成单独的标记,匹配每一对,并根据匹配查询标记的最佳{sum/avg/other score}的条目找到最佳匹配。因此,您忽略了未查询的无关标记。实际上,您试图解决两个问题:最长的公共子字符串和最短的编辑距离。从谷歌的搜索结果可以看出,这是一个非常重要的研究领域。这些论文也不便宜。在你的情况下,应该把你的查询和列表条目分解成单独的标记,匹配每一对,并根据匹配查询标记的最佳{sum/avg/other score}的条目找到最佳匹配。因此,您忽略了未查询的无关标记。