让我们说我从以下文字开始:
I love Toyota Camrys and hate Ferraris
我使用像Stanford CoreNLP这样的POS标记器并获得以下注释:
I_PRP love_VBP Toyota_NNP Camrys_NNPS and_CC hate_VB Ferraris_NNP
让我们假设我有一个命名实体识别器,并且能够通过上述符号识别凯美瑞和法拉利。
我希望能够推断上述句子,例如我推断出以下内容:
甚至可能:
我目前正在使用手动编码启发式和插槽匹配进行上述操作。
问题:有没有更标准的方法来实现这一目标?
例如,我从Gate进入JAPE Java Annotation Patterns Engine - 是工具链的一部分是这样做的。
答案 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依赖项创建的注释。