我有一个名字列表,我需要将它们分成名字和姓氏。由于某些名称中有 2-3 个空格,因此对空格进行简单拆分是行不通的。
人们使用什么样的启发式方法来执行拆分?
请注意,这不是有效地询问如何在空格处拆分的问题的重复;我正在寻找启发式和算法,而不是实际的代码帮助。
更新:我将问题限制为英文风格的名称。这就是我需要解决的所有问题,并且可能是任何接近这个(英语)问题的人都需要解决的问题。
我有一个名字列表,我需要将它们分成名字和姓氏。由于某些名称中有 2-3 个空格,因此对空格进行简单拆分是行不通的。
人们使用什么样的启发式方法来执行拆分?
请注意,这不是有效地询问如何在空格处拆分的问题的重复;我正在寻找启发式和算法,而不是实际的代码帮助。
更新:我将问题限制为英文风格的名称。这就是我需要解决的所有问题,并且可能是任何接近这个(英语)问题的人都需要解决的问题。
我读过一篇关于这个主题的非常有趣和全面的帖子:
http://www.w3.org/International/questions/qa-personal-names
它甚至建议问问自己是否真的需要单独的名字和姓氏字段。它似乎取决于您的应用程序的目标区域。
有两种方法可以提供帮助,但不能完全解决这个问题。
不是真正的答案,但在这种情况下,确实没有完美的答案。
不同的国家和地区有不同的名称格式。例如,亚洲通常首先是姓氏,然后是名字。西方,你有名字和姓氏的约定,但是当人们双管齐下或包含中间名时会变得复杂。然后有些地区的人只有一个名字。
就个人而言,恐怕没有一种算法可以为您提供 100% 准确的结果。
以下假设是英式姓氏。如果不是这种情况,请更新您的问题。
通常可以安全地假设最后一个空格字符表示一个人的姓氏的开始。但由于有例外,一种策略是从其他来源编译一个包含已知多字姓氏的大型数据库。然后,您可以测试这些姓氏,并将它们视为例外。