String 人名拆分算法

String 人名拆分算法,string,pattern-recognition,String,Pattern Recognition,我正在寻找关于将一个名字分成几个部分的参考资料:“John a.Doe”,first=John,middle=a,last=Doe。在墨西哥,我们有父名、母名、第一名和第二名,而且可以用不同的排列方式书写,因此问题相当复杂 由于这取决于数据,我们正在使用匹配软件计算每个单词的分数,以便我们做出决定(它基于一个大型数据库)。输入的数据不是干净的,它是从一些政府网页导入的,并且经过人工过滤,因此可能也有需要识别的垃圾。有什么建议吗 [编辑] 示例: name: Javier Abdul Cór

我正在寻找关于将一个名字分成几个部分的参考资料:“John a.Doe”,first=John,middle=a,last=Doe。在墨西哥,我们有父名、母名、第一名和第二名,而且可以用不同的排列方式书写,因此问题相当复杂

由于这取决于数据,我们正在使用匹配软件计算每个单词的分数,以便我们做出决定(它基于一个大型数据库)。输入的数据不是干净的,它是从一些政府网页导入的,并且经过人工过滤,因此可能也有需要识别的垃圾。有什么建议吗

[编辑] 示例:

name: Javier Abdul Córdoba Gándara common permutations (or as it may appear in gvt data referring to same person): Córdoba Gándara Javier Abdul Javier A. Córdoba Gándara Javier Abdul Córdoba G. paternal=Córdoba maternal=Gándara first given:Javier second given:Abdul 姓名: 贾维尔·阿卜杜勒·科尔多瓦·甘达拉 常见排列(或gvt数据中可能出现的指同一人的排列): 科尔多瓦·甘达拉·贾维尔·阿卜杜勒 贾维尔·科尔多瓦·甘达拉 贾维尔·阿卜杜勒·科尔多瓦G。 父系=科尔多瓦 母亲=甘达拉 第一名:哈维尔 第二名:阿卜杜勒 姓名:María de la Luz Sánchez Martínez 父亲:桑切斯 母亲:马丁内斯 第一个给出:María de la Luz 名称:绿盲蝽 父亲:阿里亚斯 母亲:麦地那 第一批:帕洛马 第二次给药:绿僵菌 正如我所说,每个单词的意思取决于分数。如果不是从分数上,你无法知道Viridiana和Alin是被命名的

Viridiana
我们有一个非常强大的数据库(8000万条记录左右),所以我们可以使用评分系统。我正在设计一些使用该方法的算法,但正在寻找其他参考。

您可能需要添加一些自然语言或机器学习来检查。识别作者姓名(如科学论文中的作者姓名)的问题很困难,因为它们可能会以不同的顺序、缩写程度、省略号等进行报告。如果数据库不干净,无论你做什么,最终都会产生歧义。

你可能需要添加一些自然语言或机器学习来检查。识别作者姓名(例如,在科学论文中)的问题很困难,因为作者姓名可以以不同的顺序、缩写程度和,省略等。如果您的数据库不干净,无论您做什么,您都会以模糊结束。

不幸的是——我自己做了很多这方面的工作——您的理想算法将非常特定于数据,并且您需要针对您的特定情况解决这一问题

在开发此算法的总时间和精力中,我认为时间大致分为以下几部分:

  • 10%用于一般字符串操作
  • 30%用于特定性质的 数据(墨西哥名称格式、数据输入怪癖)
  • 60%以满足数据质量/缺乏 品质
  • 我相信这对于一般的字符串操作来说是相当慷慨的。当然,这取决于您是需要所有记录的高质量结果,还是只需要“干净”的记录等,如果您能够忽略“困难”的记录,这将使它简单得多

    一些一般提示

    • 如果不需要,请删除非字母数字/空白字符
    • 在空间上拆分
    • 使用连字符/标点符号标识姓氏或姓氏
    • 姓名首字母(通常为单数) 字母)不是姓氏;i、 e.他们 必须是第一位/中间位
    • 确定以编程方式标识每个名称的可信度(并对此进行彻底测试)。您可能会发现,有一些数据子集包含类似的模式,需要单独加以处理(它们可能来自不同的来源等)

    不幸的是——我自己也做了很多这方面的工作——您的理想算法将是非常特定于数据的,您需要针对您的特定情况进行计算

    在开发此算法的总时间和精力中,我认为时间大致分为以下几部分:

  • 10%用于一般字符串操作
  • 30%用于特定性质的 数据(墨西哥名称格式、数据输入怪癖)
  • 60%以满足数据质量/缺乏 品质
  • 我相信这对于一般的字符串操作来说是相当慷慨的。当然,这取决于您是需要所有记录的高质量结果,还是只需要“干净”的记录等,如果您能够忽略“困难”的记录,这将使它简单得多

    一些一般提示

    • 如果不需要,请删除非字母数字/空白字符
    • 在空间上拆分
    • 使用连字符/标点符号标识姓氏或姓氏
    • 姓名首字母(通常为单数) 字母)不是姓氏;i、 e.他们 必须是第一位/中间位
    • 确定以编程方式标识每个名称的可信度(并对此进行彻底测试)。您可能会发现,有一些数据子集包含类似的模式,需要单独加以处理(它们可能来自不同的来源等)

    你能举一些墨西哥名字的例子吗?你能举一些墨西哥名字的例子吗? name: Paloma Viridiana Alin Arias Medina paternal: Arias maternal: Medina first given: Paloma second given: Viridiana Alin Viridiana Alin