CoreNLP 关系提取器自定义实体

a5g8bdjr  于 5个月前  发布在  其他
关注(0)|答案(8)|浏览(81)

大家好,
感谢这个很棒的软件。我想请教一下以下问题:
在使用关系提取器从自定义实体类型中训练特定关系时,我注意到某些部分的当前可能实体是“硬编码”的,例如:

  • https://github.com/stanfordnlp/CoreNLP/blob/master/src/edu/stanford/nlp/ie/machinereading/domains/roth/RothEntityExtractor.java#L16
  • https://github.com/stanfordnlp/CoreNLP/blob/master/src/edu/stanford/nlp/ie/machinereading/domains/roth/RothCONLL04Reader.java#L64

通过修改这两个位,可以在需要的情况下成功地重用关系提取器与自定义实体,但这需要重新编译并进行初步排查以理解这一点。
您是否对一个pull-request感兴趣,该pull-request将这些硬编码方法重构为可以从属性文件中获取的内容?例如:在属性文件中可以指示一个“entitiesPath”选项,然后指向一个带有这些实体的正常化和非正常化值的制表符分隔文件作为其列。
如果没有提供此选项,则可能可以使用这些默认的硬编码实体来保持当前的行为。
这将使具有自定义实体的关系提取器工作流程在不重新编译代码的情况下成为可能。
请告知您的意见。
再次感谢您!

chy5wohz

chy5wohz1#

在制作自定义关系提取训练方面,已经引起了很大的兴趣。但我认为前进的道路是使训练新关系模型变得更容易,这些关系与KBPAnnotator一起工作。我将尽力确保为斯坦福核心NLP 3.8.0提供清晰的文档和必要的代码更改。

1wnzp6jl

1wnzp6jl2#

好的,非常感谢及时的回复。
所以理解是输入格式将从Roth CONLL04格式迁移到KBP格式进行训练,在这一点上会变得灵活。
目前我有一个小的customisation本地来调整这个,并将继续使用这种方法。

wnvonmuf

wnvonmuf3#

是的,那将是一个计划。我将开始着手这个工作,希望不会花费太长时间。顺便说一下,如果你碰巧有任何样本训练数据,我可以查看。我正在寻找一个例子,以便我可以确保我的修改正常工作。

8ulbf1ek

8ulbf1ek4#

你好@J38 - 抱歉我花了一段时间才回复你。

  1. 你有没有邮箱可以给我发数据?不幸的是,我无法将其链接到互联网。
  2. 此外,我想指出,我稍微修改了一下代码,以便在这个commit中添加对NER标签进行RE训练的参数化能力。它添加了一个新参数,可以在MachineReadingProperties属性文件中使用逗号分隔的值列表来设置RE机器阅读类所需的NER标签实体规范化。这是最终结果的示例。
    这种方法肯定与你的意图不同,如上所述,但如果你认为这样的参数化在有人需要此类自定义的情况下是有用的,那么我很乐意发起一个pull request,在KBPAnnotator实现Relation Extractor训练之前。
    请告诉我你的想法!👍
eulz3vhy

eulz3vhy5#

你好,

感谢斯坦福的优秀工具!

我非常需要能够在我的项目中使用自定义实体来训练关系抽取(RE)。虽然我不是专业的Java程序员(如果有适当的指导,我可以从源代码编译),但我并不完全理解如何像aoldoni建议的那样“更改代码”。在3.8版本中,是否有可能使用自定义实体训练自定义关系?如果不行,我应该如何使用aoldoni建议的方法?我有可用的原始roth格式的训练语料库。非常感谢您的回复!我附上了一个小样本训练文件。

rel_train.txt

d8tt03nd

d8tt03nd6#

你好,@rpalenik ,
如果不是这样,我该如何使用aoldoni建议的方法?
关于这个问题,请注意:

  1. 你可以使用这个分支:https://github.com/aoldoni/stanford-corenlp - 它包含了我所做的更改。
  2. 重新编译它,相关指南在这里:https://github.com/stanfordnlp/CoreNLP#build-instructions
  3. 然后在这个分支中使用新的"possibleEntities"属性,就像这个示例中所示:https://github.com/aoldoni/tetre/blob/develop/config/relation.properties#L54
pxyaymoc

pxyaymoc7#

你好 @aoldoni ,
非常感谢,我需要更多的帮助。我明白我需要做以下几件事:

  1. https://github.com/stanfordnlp/CoreNLP 克隆当前源文件
  2. 从你的仓库中替换相应的文件
  3. 编译
    然而,我遇到了很多编译错误。我是不是做错了?你能帮我用正确的方法吗?
    谢谢。
    R.
sulc1iza

sulc1iza8#

Here is the output from the compiler......
ant_error.txt

相关问题