【发布时间】:2020-02-10 13:27:29
【问题描述】:
是否有算法或 C# 库来确定人名是否正确,如果不正确,则找到最接近的匹配项?
我找到了类似 Levenshtein 距离算法的字符串匹配算法,但它们都检查一个字符串与另一个字符串之间的匹配,我想检查一个名称与所有可能的英文名称之间的匹配(例如),检查名称是否写错。
例如: 有人插入了“Giliam”这个名字,而它应该是“william”。我想知道是否有任何算法(或其中的一组)来检测错误并提出更正。
我想到的所有解决方案都涉及到一个巨大的人名字典的实现,并用它来检查每个匹配的输入名称的正确性……这对我来说听起来很可怕,所以我想寻求更好的方法。
谢谢。
【问题讨论】:
-
人类可以被称为字面上的任何东西。坦率地说,任何“更正”名称的尝试都更有可能通过“更正”所写正确的名称而导致问题。也可能是不成比例的少数族裔和移民以这种方式得到“纠正”,这使得尝试在政治和社会上变得愚蠢,IMO。同样,切勿尝试对最少字符之类的名称进行限制,甚至不要对单独的名字/姓氏的概念进行限制。哎呀,甚至我的名字也经常被“更正”(对马克),以至于令人讨厌!
-
你怎么知道它应该是“William”。也可以是“阿娇”
-
@OlivierJacot-Descombes 或者可能是 correct as written
标签: c# string-matching spell-checking