如何智能地解析姓氏

Dav*_*542 4 python regex parsing nlp

假设西方命名惯例FirstName MiddleName(s) LastName,

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

例如:

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'
Run Code Online (Sandbox Code Playgroud)

......还有无数其他的排列.

Tne*_*ppa 17

这里最好的答案可能不是尝试.名字是个人的和偶像的,甚至限制自己的西方传统,你永远不能确定你会想到所有的边缘情况.我的一个朋友合法地将他的名字改成了一个单词,而且他有一段时间处理各种机构,他们的程序无法解决这个问题.您处于创建实现程序的软件的独特位置,因此您有机会设计一些不会惹恼非常规名称的人的东西.想一想为什么你需要解析姓氏开头,看看你能做些什么.

话虽这么说,作为一个纯粹的技术问题,最好的方法可能是从末端特别修剪字符串"Jr",",Jr",",Jr.","III",",III"等.包含该名称的字符串,然后获取从字符串中的最后一个空格到(新的,删除Jr后等)结束的所有内容.从你的例子来看,这不会得到"Del La Hoya",但是你甚至不能真正指望一个人来做到这一点 - 我正在做出有根据的猜测John Mark Del La Hoya的姓氏是"Del" La Hoya"而不是"Mark Del La Hoya"因为我"母语为英语,我对西班牙姓氏的样子有一些直觉 - 如果名字是"Gauthip Yeidze Ka Illunyepsi",我绝对不知道把Ka算作姓氏的一部分,因为我不知道是什么语言.