首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何智能地解析姓氏

如何智能地解析姓氏
EN

Stack Overflow用户
提问于 2011-08-28 08:39:22
回答 3查看 1.4K关注 0票数 4

假设西方命名约定为FirstName MiddleName(s) LastName

从全名中正确解析出姓氏的最佳方法是什么?

例如:

代码语言:javascript
复制
John Smith --> 'Smith'
John Maxwell Smith --> 'Smith'
John Smith Jr --> 'Smith Jr'
John van Damme --> 'van Damme'
John Smith, IV --> 'Smith, IV'
John Mark Del La Hoya --> 'Del La Hoya'

...and数不清的其他排列。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-28 08:44:03

也许这里最好的答案就是不去尝试。名字是独立的和独特的,即使将你自己限制在西方传统中,你也永远不能确定你会想到所有的边缘情况。我的一个朋友合法地将他的名字改成了一个单词,他经历了一段地狱般的时间,与各种机构打交道,这些机构的程序无法处理这个问题。你处于一个独特的位置,你是一个创建实现过程的软件的人,所以你有机会设计一些不会惹恼那些使用非传统名字的人的东西。想一想为什么你一开始就需要解析出姓氏,看看你还能做些什么。

这就是说,作为纯粹的技术问题,最好的方法可能是从包含名称的字符串的末尾删除字符串“Jr”、“Jr.”、"III“、”III“等,然后从字符串中的最后一个空格到(new,在删除Jr之后,等等)结束。这不会从你的例子中得到,比如说,"Del La Hoya“,但你甚至不能指望一个人来理解--我做出了一个有根据的猜测,约翰·马克·Del La Hoya的姓是"Del La Hoya”,而不是"Mark Del La Hoya“,因为我是以英语为母语的人,我对西班牙语的姓氏有一些直觉-如果名字是,说"Gauthip Yeidze Ka Illunyepsi”,我完全不知道这个Ka是否应该算作姓氏的一部分,因为我不知道它来自什么语言。

票数 17
EN

Stack Overflow用户

发布于 2017-07-14 05:38:20

https://pypi.python.org/pypi/nameparser上遇到了一个名为"nameparser“的库,它可以处理上述六种情况中的四种:

代码语言:javascript
复制
#!/usr/bin/env python
from nameparser import HumanName

def get_lname(somename):
    name = HumanName(somename)
    return name.last

people_names = [
    ('John Smith', 'Smith'),
    ('John Maxwell Smith', 'Smith'),
    # ('John Smith Jr', 'Smith Jr'),
    ('John van Damme', 'van Damme'),
    # ('John Smith, IV', 'Smith, IV'),
    ('John Mark Del La Hoya', 'Del La Hoya')
]

for name, target in people_names:
    print('{} --> {} <-- {}'.format(name, get_lname(name), target))
    assert get_lname(name) == target    
票数 1
EN

Stack Overflow用户

发布于 2011-08-28 23:30:32

我在这里支持Tnekutippa,但你应该去named entity recognition看看。它可能有助于自动化一些过程。然而,正如前面提到的,这是相当困难的。我不太确定斯坦福大学的人是否能从盒子里提取出名字和姓氏,但机器学习方法可能会对这项任务非常有用。斯坦福大学的NER可能是一个很好的起点,或者你可以尝试制作自己的分类器和训练语料库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7218310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档