Python命名实体识别查找特定实体

我目前有一个关于自然语言处理的项目,我尝试使用NLTK来识别一个人的名字。但是,问题比仅仅找出词性要更具挑战性。

"input = "Hello world, the case is complex. John Due, the plaintiff in the case has hired attorney John Smith for the case."

所以,挑战在于:我只想从整个文档中获取律师的名字作为返回结果,而不是其他人的名字,所以是“John Smith”,词性:PERSON,职业:律师。返回结果可以是这样的,或者只是“John Smith”。

{  "name": "John Smith", "type": "PERSON", "occupation": "attorney"}

我已经尝试了NLTK的词性分析,也尝试了Google Cloud Natural Language API,但它们只能帮助我检测到人的名字。我如何检测它是否是律师?请指导我正确的途径。我是否需要训练自己的数据或语料库来检测“律师”。我有成千上万的法院文档txt文件。


回答:

预训练的机器学习模型的问题在于,它们在你想要实现的目标上没有太多的灵活性。像Google Cloud Natural Language这样的工具提供了一些非常有趣的功能,但你不能让它们为你做其他工作。在这种情况下,你需要训练自己的模型,或者尝试不同的方法,使用像TensorFlow这样的工具,这需要很高的专业知识才能获得不错的结果。

然而,关于你的具体用例,你可以使用analyzeEntities方法来查找命名实体(常见名词和专有名词)。结果表明,如果“律师”这个词紧挨着实际是律师的人的名字(如“我是John,我的律师James正在处理我的案件。”或你的例子“Hello world, the case is complex. John Due, the plaintiff in the case has hired attorney John Smith for the case.”),它会将这两个实体联系在一起。

你可以使用我分享的这个调用在API Explorer中进行测试,你会看到对于这个请求:

{ "document": {  "content": "I am John, and my attorney James is working on my case.",  "type": "PLAIN_TEXT" }, "encodingType": "UTF8"}

一些结果实体是:

{   "name": "James",   "type": "PERSON",   "metadata": {   },   "salience": 0.5714066,   "mentions": [    {     "text": {      "content": "attorney",      "beginOffset": 18     },     "type": "COMMON"    },    {     "text": {      "content": "James",      "beginOffset": 27     },     "type": "PROPER"    }   ]  },  {   "name": "John",   "type": "PERSON",   "metadata": {   },   "salience": 0.23953272,   "mentions": [    {     "text": {      "content": "John",      "beginOffset": 5     },     "type": "PROPER"    }   ]  }

在这种情况下,你将能够解析JSON响应,并看到James(正确地)与“律师”这个名词联系在一起,而John则没有。然而,根据我进行的一些测试,这种行为似乎只有在“律师”这个词紧挨着你试图识别的名字时才可重现。

我希望这对你有帮助,但如果你的需求更复杂,你将无法使用像Natural Language API这样的现成解决方案来实现。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注