nlp - 从实体和词性标记文本中寻找原因/提取信息

标签 nlp nltk named-entity-recognition gate

假设我从以下文本开始:

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/

相关文章:

machine-learning - 我应该使用哪种聚类算法对职位进行聚类?

java - Java 中的意大利语词干提取库

python - Python 中 NLTK 工具包的默认分块器是什么?

python - 自然语言处理

python - nltk StanfordNERTagger : NoClassDefFoundError: org/slf4j/LoggerFactory (In Windows)

machine-learning - NER后如何使用k-means算法进行属性聚类?

nlp - 有人能简单解释一下自然语言处理的要素吗?

python - 在线版scikit-learn的TfidfVectorizer

python - 根据固定的关键字/短语列表从文档中提取关键字

nlp - 斯坦福 CoreNLP 命名实体识别如何捕获 5 英寸、5 英寸、5 英寸、5 英寸等测量值