假设我从以下文本开始:
I love Toyota Camrys and hate Ferraris
我使用像斯坦福 CoreNLP 这样的词性标注器并获得以下注释:
I_PRP love_VBP Toyota_NNP Camrys_NNPS and_CC hate_VB Ferraris_NNP
假设我有一个命名实体识别器,并且能够根据上述符号识别凯美瑞和法拉利。
我希望能够推理上面的句子,例如我推断出以下内容:
- 我讨厌凯美瑞
- 我喜欢法拉利
甚至可能:
- 我讨厌丰田制造的东西
- 我讨厌法拉利制造的东西
我目前正在使用手动编码的启发式方法和槽匹配来执行上述操作。
问题:是否有更标准的方法来完成此任务?
例如,我从 Gate 运行到 JAPE Java Annotation Patterns Engine——工具链的一部分就是做这样的事情。
最佳答案
有两种方法可以做到这一点:
1) 编写您自己的 JAPE 语法。这并不像看起来那么难。网上有很多 JAPE 手册。第一 google link对于“gate jape手册”
似乎可以启动。此外,GATE ANNIE 的现有 JAPE 语法可以为您的任务提供很好的示例和想法。
一开始,您将尝试为 GATE Gazetteer 创建自己的字典,其中包含品牌名称(丰田、费拉里等)的条目,以创建“查找”注释。那么你的 JAPE 规则将包含类似的规则
规则:LoveBrand
(
{Token.kind == word, Token.string = "I"}
{Token.kind == word, Token.string = "love"}
{Lookup.majorType == "品牌"}
): 标签
-->
:label.Prefererence = {rule= "LoveBrand"}
2) 使用Parser_Stanford plugin在门里。它将为依赖项和树节点创建两种类型的注释。依赖关系是几个单词之间的类型链接,TreeNodes 是折叠成树的依赖关系。只需尝试在 GATE 开发者 GUI 中使用 Parser_Stanford 插件,您就会了解如何使用它来完成您的任务。
您可以在 this demo page 上处理您的“我喜欢丰田凯美瑞,讨厌法拉利。”
看看斯坦福解析器能做什么。特别是您需要 dobj
类型的依赖项。有一个Stanford dependencies manual如果您想使用其他斯坦福依赖项,请包含所有可能依赖项的描述。
GATE 的 Parser_Stanford 插件只是将斯坦福依赖项的注释添加到您的文档中。您可以使用 JAPE 语法添加 GATE 转换器处理资源,并将其添加到 GATE Developer 中的 Parser_Stanford 之后的处理资源序列中,以处理为斯坦福依赖项创建的注释。
关于nlp - 从实体和词性标记文本中寻找原因/提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24129081/