Java 人名的命名实体识别库 "Parts"

Java named entity recognition library for Persons Name "Parts"

我当前的项目需要提高客户详细信息的数据质量。

我们遇到的一个问题是,客户姓名的名字、中间名和姓氏具有单独的数据捕获输入字段,但在许多情况下,姓名的每个部分都输入错误。

我们需要清理我们持有的数据。

这个数据质量问题会影响我们以通信方式联系客户,因为我们不知道他们的名字、中间名和姓氏,我们使用不恰当的称呼冒犯了一些客户

我们需要一个命名实体识别库,它不仅可以检测人名,还可以检测名字、中间名和姓氏。

让这项数据质量任务变得更加困难的是,我们有近 1 亿客户,我们的客户群遍布全球,因此我们需要能够识别名字、中间名和姓氏,例如名字、父名和不同的部分顺序。有帮助的是我们也知道客户的国籍。

是否存在特定于人名部分的命名实体识别?

我意识到 "Perfect" 解决方案是不可能的,但我确信我可以提高我们目前拥有的数据质量。

我刚刚提到名字、中间名和姓氏是我最熟悉的名字结构,但我确实理解以下是我所面临的例子

In many parts of the world, parts of names are derived from titles, locations, genealogical information, caste, religious references, and so on. Here are a few examples:

    the Indian name Kogaddu Birappa Timappa Nair follows the order villageName-fathersName-givenName-lastName.
    the Rajasthani name Aditya Pratap Singh Chauhan is composed of givenName-fathersName-surname-casteName.

    in another part of India the name Madurai Mani Iyer represents townName-givenName-casteName.

    the Arabic Abu Karim Muhammad al-Jamil ibn Nidal ibn Abdulaziz al-Filistini translates as "Father of Karim, Muhammad (given name), The beautiful, Son of Nidal, Son of Abdulaziz, the Palestinian". Karim is Muhammad's first-born son.

有一个简单、通用的解决方案,公司似乎出乎意料地不愿意应用:

当且仅当通信确实来自专门为收件人准备通信的人时,才包含称呼。在这种情况下,关注收件人的一部分是在考虑收件人的文化的情况下编写正确的称呼。

如果您使用数据库中的名称通过计算机生成通信,请诚实对待您所做的事情。只需显示以任何形式提供给您的名称即可。不要试图用它来构建正式的称呼。不要以任何方式更改它。显然是计算机生成但试图假装个人关注的通信看起来很愚蠢,即使它们不正确到引起实际烦恼也是如此。