设计启发式以将全名拆分为相关字段

时间:2011-10-31 14:24:19

标签: c# .net

基本上,我需要创建一个最好的方法来获取名称字段并将其拆分为title,firstNames和lastNames。

E.g。丹尼尔乔治特朗普先生将成为: 标题:先生 FirstNames:丹尼尔乔治 LastNames:特朗普

先生。 Daniel George Trump和Sarah Trump夫人将成为: 标题:先生和夫人 FirstNames:Daniel George&莎拉 LastNames:特朗普&特朗普(一些输入可能是两个姓氏不同的人)。

由于

2 个答案:

答案 0 :(得分:3)

别。不要试图解释程序中的名称。你永远不会 只有才能做到正确。

人们的命名是如此极其复杂,以至于它的研究,称为 anthroponymia ,是熵的一个分支。

让我们假设您从标题,给定名称,中间名和姓氏开始。作为姓氏的父亲的名字。因此,您只需在组件中拆分名称并分配每个组件。

但是,这种方法在数百个案例中是完全错误的。有些人只使用一个名字和一个姓氏。其他人(例如西班牙语)使用一个给定的名字和两个姓氏。一些文化(匈牙利人,一些亚洲人)首先将命令颠倒为姓氏,然后是给定的名称(东部顺序)。有些人将姓氏用作姓氏(母语)。一些,氏族的名称,或家庭的历史名称,或出生地。有些人(葡萄牙人)通常将母亲姓氏作为中间名。来自使用东方秩序的国家的一些人,在向西方观众讲话时扭转秩序,而来自同一国家的一些其他人则不这样做。组合是无限的。一场完整而可怕的噩梦。

因此,在我看来,唯一正确的方法是留下一个名称实体,让用户选择他们想去的地方。不要试图解释它。

但是,有些情况可能要求您的软件遵守给定的一组独立字段。在这种情况下,只有在这种情况下,您唯一的选择是直接将其传递给用户,允许他们根据自己的喜好设置字段。

答案 1 :(得分:1)

您可以列出标准标题(先生,夫人等)并尝试匹配任何标准。然后对于双字名称,使用第一个作为名字,第二个作为姓氏。对于较长的名字,可以使用前两个单词作为名字,其余的作为最后一个。

相关问题