我正在寻找有关分隔名称的参考资料:“约翰·A.Doe”部分,第一个=John,中间=A.,最后一个=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
name: María de la Luz Sánchez Martínez
paternal:Sánchez
maternal: Martínez
first given: María de la Luz
name: Paloma Viridiana Alin Arias Medina
paternal: Arias
maternal: Medina
first given: Paloma
second given: Viridiana Alin

正如我所说,每个单词的含义取决于分数。人们无法知道这一点

Viridiana
Alin
如果不是来自乐谱,则给出名称。

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

有帮助吗?

解决方案

不幸的是 - 并且我自己做了相当多的这项工作 - 您的理想算法将非常特定于数据,并且您需要根据您的特定情况来解决这个问题。

在开发该算法的总时间和精力中,我想说时间将大致划分如下:

  1. 10% 用于一般字符串操作
  2. 数据的特定性质为30%(墨西哥名称格式,数据输入怪癖)
  3. 60%满足数据质量 /质量不足

我相信这对于一般的字符串操作来说是相当慷慨的。当然,这取决于您是否需要所有记录的高质量结果,还是仅需要“干净”的记录等,如果您能够忽略“困难”的记录,那么事情就会变得简单得多。

一些一般提示

  • 如果不需要,请删除非字母数字/空格字符
  • 按空格分割
  • 使用连字符/标点符号来识别姓氏或姓氏
  • 缩写(即 一般来说 单个字母)不是姓氏;IE。他们必须是第一 /中间
  • 确定您以编程方式识别每个名称的置信度(并彻底测试)。您可能会发现某些数据子集包含类似的模式,需要单独处理(它们可能来自不同的来源等)

其他提示

您可能需要添加一些自然语言或机器学习来检查。识别作者姓名的问题(例如在科学论文中)是很困难的,因为它们可以用不同的顺序,缩写的程度,精算等来报告。如果你的数据库很脏,那么无论你做什么,都会以模棱两可的方式结束。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top