Regex 用于检查字符串是否为Person';她叫什么名字?

Regex 用于检查字符串是否为Person';她叫什么名字?,regex,Regex,我有一个应用程序,它读取关于车辆标题的XML信息,并将其解析到我的应用程序中。在我的数据库中,我总是根据个人的名字还是公司的名字来存储我的名字(因为这可能发生在我的系统中)。问题是XML源有名称数据,但它没有指定是个人还是公司。我需要知道,这样我才能将它适当地存储在我的数据库中。是否有名称数据库、正则表达式或库可以检查字符串是否与个人名称匹配?谢谢 你将很难找到一个。尤其是个人的名字,往往只受想象力的限制。但是,如果需要,我建议收集应用程序关心的所有汽车制造商的列表,并对照该列表检查XML名称数

我有一个应用程序,它读取关于车辆标题的XML信息,并将其解析到我的应用程序中。在我的数据库中,我总是根据个人的名字还是公司的名字来存储我的名字(因为这可能发生在我的系统中)。问题是XML源有名称数据,但它没有指定是个人还是公司。我需要知道,这样我才能将它适当地存储在我的数据库中。是否有名称数据库、正则表达式或库可以检查字符串是否与个人名称匹配?谢谢

你将很难找到一个。尤其是个人的名字,往往只受想象力的限制。但是,如果需要,我建议收集应用程序关心的所有汽车制造商的列表,并对照该列表检查XML名称数据;如果找到匹配项,显然名称是一家公司,如果没有,您可以假定名称是个人。

不,没有办法知道。你是在和弗兰克·扎帕的孩子“月亮单位”打交道,还是在和“月亮单位”打交道?月亮单位是你真正的月球摇滚纪念品的头号来源?名称可以是任何东西,公司名称可以是任何东西(包括其所有者的名称!)。要确定它是哪一个,唯一的办法是数据是否提供给您。

在我曾经为之工作的一家大型电信公司,我们遇到了这个问题。我们在200多万个名称上测试了以下正则表达式

([A-Z][a-z][a-z]*)  *([A-Z][a-z]*)\.?  *([A-Z][a-z][a-z][a-z]*)
我们得到了99.8%的准确率。数据相当干净。这是针对C语言中的正则表达式引擎的,因此语法可能与perl有点不同。我不知道你是不是
将需要括号。

好吧,名字显然有一个名字和姓氏,用空格分开,另一方面,公司会有有限公司(Limited)、上市公司(PLC)或有限责任公司(LLC)(根据美国法规上市的一种公司)……我在这里会走老路吗?如果姓氏和名字为空,请检查公司字段,反之亦然……似乎您将两者的组合放入了一个字段中,这使得操作更加困难……

我建议使用机器学习算法。你可以使用监督学习来训练你的模型,如果它是一个名字或姓氏,或者如果它是一个人,那么你就有一个可能性,甚至更好。我建议使用朴素贝叶斯算法。我推荐这种方法,因为在我的工作中,我们遇到了这个问题,我用机器学习解决了这个问题

您可以使用这些数据集使用名称来训练模型

然后你会有一个非常精确的模型来检测一个词是否是一个人的名字

推荐Python和scki学习库

希望这有帮助

如果你有什么问题,请问我


致以最诚挚的问候。

您使用的数据库是什么?不管怎样,我认为这很棘手。首先,你必须确定一个人的名字是什么样子的,公司也是如此。可能是某些公司的名字看起来像个人的名字。一家公司通常是一个完整的法人实体,就像一个人一样。它可以拥有财产,也可以被起诉。也许你不在乎。我看不到撇号或连字符的支持。您如何处理姓名,尤其是姓氏,如O'Halloran或Jones Drew?如果发现撇号,请插入一个额外的撇号,更好的是,使用存储过程来插入它,无论它是如何完成的,它都将进入,请记住,在将其传递到存储过程之前,您希望先对输入进行清理…谢谢。因为有很多人都有相同的答案,所以我选择了你的答案,因为你先回答了。所以,我认为你提出了一个很好的观点,关于这方面的困难。我想我可能只会使用一个字段,因为我真的不需要区分。任何时候你可以把Frank Zappa放入答案中,我都会投你一票。