假设我得到了一个名称对列表:
[
[ 'John', 'Smith'],
[ 'Alex', 'Gordon'],
...
]
我希望知道(或获得合理的确定性)哪一列是姓氏,哪一列是名字,假设所有列都是一致的,并且每个名称对仅由一个名字和一个姓氏组成。
一个明显的挑战是检查两个名称都可以用作名字的名称对,例如['Graham', 'Tyler']。
这个模型是合理实现的吗?
假设我得到了一个名称对列表:
[
[ 'John', 'Smith'],
[ 'Alex', 'Gordon'],
...
]
我希望知道(或获得合理的确定性)哪一列是姓氏,哪一列是名字,假设所有列都是一致的,并且每个名称对仅由一个名字和一个姓氏组成。
一个明显的挑战是检查两个名称都可以用作名字的名称对,例如['Graham', 'Tyler']。
这个模型是合理实现的吗?
您可以在此处应用更简单的策略,这可能会导致比神经网络更好的结果。幸运的是,我们拥有大多数国家的人口普查数据。例如,您可以使用美国人口普查数据。
我们可以使用它们的搜索功能在数组中找到两个名称的共性。那么我们可以说排名较高的名字是名字。例如,我们可以看到对于 name ['John', 'Smith'],John 最近一年的排名为 27,而 Smith 没有列出。所以我们可以假设约翰是名字,史密斯是姓氏。
这种技术是一种非常古老的预测手段,我们已经通过民意调查获得了数据的分布。所以我们可以直接使用它,我们不需要训练模型来学习下划线分布(这对于像名字这样有很多噪音的东西来说是非常困难的)。
如果您有每个人的额外数据,例如出生日期或性别,那么您将通过这些先验信息获得更好的结果。这类似于您在应用朴素贝叶斯算法时将实现的结果,但是在这种情况下,分布已经确定了。