问题:
是否有可能比较“Hollændervej”和“Hollaedervej”除了使用 Levenshtein 算法之后或之前的“ae”和“æ”之外是否相似?是关于某种程度的相似性吗?
此上下文是关于使 æ 和 ae 相等取决于您检索的单词。
其他信息:
*使用 Levenshtein 算法后比较单词“Økernveien”和“Okernveien”是否更容易,因为您的差异值为 1,尤其是在单词的开头。
为了比较它,您只需删除第一个字母。
比较“Hollændervej”和“Hollaedervej”比“Økernveien”和“Okernveien”更难。
*我相信您需要的不仅仅是 Levenshtein 算法来解决它。
*您还有另一个词是“Göteborg”和“Goteborg”、“Vårveien”、“Varveien”、“MARKEDSFØRING”、“MARKEDSFORING”、“Rhrts vei”和“Røhrts vei”、“Sjurs?ya”和“Sjursøya” 这是关于在每个国家都不是通用字母的字母..
我还要感谢为改进信息内容提供反馈的人们。
谢谢!
最佳答案
我认为您需要在执行 Levenshtein 距离后做一些额外的工作。首先,您应用 Levenshtein 算法来计算距离。这将提供将一个字符串转换为另一个字符串所需的最少编辑。但是你需要跟踪最小编辑路径。例如,如果您正在将 Hollændervej
转换为 Hollaedervej
,最小编辑路径可能如下所示:del->insert->insert 或 insert->delete->insert,基本上保留跟踪您删除、插入、替换的字符。
现在你需要有一个字典,里面有你认为根据单词字母表相似的“相似”字符。
例如 æ
映射到 {a,e}
。
现在检查路径中的这些特殊字符。
例如你的路径看起来像:del a -> insert æ -> del e,那么你需要寻找它的相邻条目(left = a, right = e or left = a, left = b or right = a, right = b).
如果它们与您在字典中的值中的内容匹配,则存在相似性并继续检查您的路径。
关于algorithm - 比较两个词的相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50758098/