从名称对中确定名字和姓氏?

数据挖掘 深度学习
2022-02-23 00:12:40

假设我得到了一个名称对列表:

[
    [ 'John', 'Smith'],
    [ 'Alex', 'Gordon'],
    ...
]

我希望知道(或获得合理的确定性)哪一列是姓氏,哪一列是名字,假设所有列都是一致的,并且每个名称对仅由一个名字和一个姓氏组成。

一个明显的挑战是检查两个名称都可以用作名字的名称对,例如['Graham', 'Tyler']

这个模型是合理实现的吗?

1个回答

您可以在此处应用更简单的策略,这可能会导致比神经网络更好的结果。幸运的是,我们拥有大多数国家的人口普查数据。例如,您可以使用美国人口普查数据

我们可以使用它们的搜索功能在数组中找到两个名称的共性。那么我们可以说排名较高的名字是名字。例如,我们可以看到对于 name ['John', 'Smith'],John 最近一年的排名为 27,而 Smith 没有列出。所以我们可以假设约翰是名字,史密斯是姓氏。

这种技术是一种非常古老的预测手段,我们已经通过民意调查获得了数据的分布。所以我们可以直接使用它,我们不需要训练模型来学习下划线分布(这对于像名字这样有很多噪音的东西来说是非常困难的)。

如果您有每个人的额外数据,例如出生日期或性别,那么您将通过这些先验信息获得更好的结果。这类似于您在应用朴素贝叶斯算法时将实现的结果,但是在这种情况下,分布已经确定了。