寻找原因/从实体和部分语音标记文本中提取信息

时间:2014-06-09 21:07:53

标签: nlp nltk named-entity-recognition gate

让我们说我从以下文字开始:

I love Toyota Camrys and hate Ferraris

我使用像Stanford CoreNLP这样的POS标记器并获得以下注释:

I_PRP love_VBP Toyota_NNP Camrys_NNPS and_CC hate_VB Ferraris_NNP

让我们假设我有一个命名实体识别器,并且能够通过上述符号识别凯美瑞和法拉利。

我希望能够推断上述句子,例如我推断出以下内容:

  • 我讨厌Camrys
  • 我爱法拉利

甚至可能:

  • 我讨厌丰田制造的东西
  • 我讨厌法拉利制造的东西

我目前正在使用手动编码启发式和插槽匹配进行上述操作。

问题:有没有更标准的方法来实现这一目标?

例如,我从Gate进入JAPE Java Annotation Patterns Engine - 是工具链的一部分是这样做的。

1 个答案:

答案 0 :(得分:2)

有两种方法可以做到:

1)编写自己的JAPE语法。这并不像看起来那么难。网上有很多JAPE手册。 "gate jape manual"的第一个google link似乎可以用于启动。此外,GATE ANNIE现有的JAPE语法可以为您的任务提供良好的示例和想法。

一开始你会尝试为GATE Gazetteer创建自己的字典,其中包含品牌名称(丰田,Ferrary,e.t.c。)的条目,以创建" Lookup"注释。然后你的JAPE规则将包含像

这样的规则

Rule: LoveBrand ( {Token.kind == word, Token.string = "I"} {Token.kind == word, Token.string = "love"} {Lookup.majorType == "brand"} ): label --> :label.Prefererence = {rule= "LoveBrand" }

2)在GATE中使用Parser_Stanford plugin。它将为Dependencies和TreeNodes创建两种类型的注释。依赖关系是单词之间的类型链接,TreeNodes是依赖关系折叠成树。只需尝试在GATE Developer GUI中使用Parser_Stanford插件,您就会知道如何将它用于您的任务。

您可以在this demo page处理"I love Toyota Camrys and hate Ferraris."以查看斯坦福解析器可以执行的操作。特别需要dobj类型的依赖项。如果您想使用其他斯坦福依赖项,则有Stanford dependencies manual描述所有可能的依赖项。

GATE的Parser_Stanford插件只是为您的文档添加了Stanford依赖项的注释。您可以使用JAPE语法添加GATE传感器处理资源,并在Parser_Stanford之后将其添加到GATE Developer中的处理资源序列中,以处理为Stanford依赖项创建的注释。