如何在运行命名实体识别后从句子中提取含义?

时间:2014-05-21 20:56:07

标签: python nlp nltk

首先:如何修改标题?

我使用自己的命名实体识别算法来解析纯文本中的数据。具体来说,我正在尝试提取律师执业领域。我看到的常见句子结构是:

1)Neil专注于就业,税务和版权诉讼。

2)Neil专注于一般公司事务,包括证券,商业组织,合同准备和知识产权保护。

我的实体提取在找到关键词方面做得很好,例如,我从句子1输出的内容可能如下所示:

Neil专注于(就业),(税务)和(版权诉讼)。

但是,这对我没有帮助。更有帮助的是,如果我得到一个看起来更像这样的输出:

Neil专注于(就业 - 诉讼),(税务诉讼)和(版权诉讼)。

有没有办法使用现有的python框架来实现这个目标,例如nltk(在我的算法提取练习区域之后)我可以使用ntlk来提取我的“练习区”修改的其他单词以获得更多完整的图片?

3 个答案:

答案 0 :(得分:4)

Named entity recognition(NER)系统通常使用基于语法的规则或统计语言模型。你在这里描述的内容似乎只基于关键词。

通常,与大多数复杂的NLP任务非常相似,NER系统应该针对特定领域的数据进行培训,以便它们能够很好地处理以前看不见的(测试)数据。你需要有足够的机器学习知识才能沿着这条路走下去。

在"正常"语言,如果你想提取单词或短语并将它们分类为你定义的类(例如诉讼),那么在外部本体中使用类别标签通常是有意义的。一个例子可能是:

  • 您想提取与体育相关的单词和短语。

这样的分类(即,检测单词是否确实与运动相关)不是一般的" - 足够的问题。这意味着您将找不到可以解决问题的现成系统(例如NLTK库中的算法)。但是,您可以使用像维基百科这样的本体,并利用那里提供的类别标签。

  • 例如,你可以检查一下,如果你在维基百科搜索" football",它有一个类别标签"球类游戏",而这反过来又是" sports" ;

请注意,维基百科类别标签构成了有向图。如果您构建了一个利用此类本体的类别结构的系统,您应该能够根据需要对文本中的术语进行分类。此外,您甚至可以控制分类的粒度(例如,您是否只需要"体育"或"个人运动"以及"团队运动")。

我已经建立了这样一个系统,用于对与计算机科学相关的术语进行分类,并且它的工作非常好。最接近的免费系统以类似的方式工作,是由伊利诺伊大学厄本那 - 香槟分校的认知计算小组建立的Wikifier

警告:您可能需要调整一个简单的基于类别的代码以满足您的需求。例如。没有维基百科页面的诉讼"。相反,它会将您重定向到标题为"诉讼"的页面。此类案件需要单独处理。

最终注释:这个解决方案实际上并不属于NLP领域,但我过去的经验表明,对于某些领域,这种基于本体的方法非常有效。另外,我使用了" sports"在我的回答中举例说明,因为我对法律术语一无所知。但我希望我的例子可以帮助你理解潜在的过程。

答案 1 :(得分:1)

我认为你的“算法”甚至不是在进行实体识别......但是,伸展你提出的问题相当多,你想要做的事情看起来像是包含省略号的协调结构中的共参考分辨率。根本不容易:从谷歌搜索语言学和计算语言学的一些相关文献开始。我使用下面字段中的标准术语。

实际上,您可以从指定最近的前因(英语中最常用的方法)开始。使用您的示例:

  • 首先提取句子中的所有“实体”

  • 来自实体列表的
  • ,识别先前的候选人(“诉讼”等)。这是一项非常困难的任务,涉及许多不同的问题......如果事先知道对你有意义的“实体”,你可以避免它。

  • 最后,你将每个回指/ cataphora分配(解决)到最近的前因。

答案 2 :(得分:0)