正则表达式或数据库检查字符串是否为人名?

时间:2009-11-18 20:12:53

标签: regex

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

5 个答案:

答案 0 :(得分:5)

不,没有办法知道。你在和Frank Zappa的孩子Moon Unit打交道吗,或者你正在处理Moon Unit,你真正的月球岩石纪念品的头号来源?名称可以是任何名称,公司名称可以是任何名称(包括其所有者的名字!)。唯一可以确定数据是否提供给你的方法。

答案 1 :(得分:5)

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

([A-Z][a-z][a-z]*)  *([A-Z][a-z]*)\.?  *([A-Z][a-z][a-z][a-z]*)

我们得到了99.8%的准确率。数据相当干净。这是针对C中的正则表达式引擎 - 所以语法可能与perl略有不同。我不知道你 将需要括号。

答案 2 :(得分:0)

你很难找到一个。特别是个人名称通常仅受想象力的限制。但是,如果您需要,我可以建议收集您的应用程序关注的所有汽车制造商的列表,并根据此列表检查XML名称数据;如果找到匹配,显然该名称是公司,如果没有,您可以认为该名称是个人。

答案 3 :(得分:0)

嗯,名字显然有一个由空格分隔的名字和姓氏,另一方面公司会有有限公司(有限公司),PLC(上市公司)或有限责任公司(根据美国法规列出的公司类型)。 ..我在这里走出人迹罕至的地方?如果last_name和first_name为空,请检查公司字段,反之亦然......似乎您已将两者的组合放入一个字段中,这使得它更难做....

答案 4 :(得分:0)

我建议使用机器学习算法。您可以使用监督学习来训练您的模型,并可以知道它是名字还是姓氏,或者如果是一个人则更好。我建议朴素贝叶斯算法。我推荐这种方法,因为在我的工作中我们遇到了这个问题,并且通过机器学习解决了。

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

https://mbejda.github.io/

然后您将拥有一个非常精确的模型来检测单词是否是一个人的名字。

推荐Python和scki-learn库。

希望获得帮助。

请问我是否有问题

最诚挚的问候。