【问题标题】:How to run multiple classifiers with Stanford NER?如何使用斯坦福 NER 运行多个分类器?
【发布时间】:2014-01-30 19:46:03
【问题描述】:

我想在一个文件上运行一个内置分类器,然后运行我自己的分类器,合并结果。

我如何使用斯坦福 NER 执行此操作,尤其是通过命令行?

我知道 How do I include more than one classifiers when using Stanford named entity recogniser? ,但这略有不同,因为该问题询问了具有 NERServer 的多个分类器。

看来我需要使用 CoreNLP 来依次运行多个 NER 模型...不使用 CoreNLP 可以吗?

假设我有一个文件,内容是“快速的棕色狐狸跳过美国的懒狗”。我运行内置分类器之一,它找到“America”作为位置,然后我运行我自己的,它找到“狐狸”和“狗”,结果应该是:

the quick brown <animal>fox</animal> jumped over the lazy <animal>dog</animal> in <location>America</location

【问题讨论】:

  • 所以你希望斯坦​​福 NER 进行合并?
  • 我看不到这将如何从命令行运行,但如果我在代码中这样做,我可能会设置两个管道,每个管道都配置有自己的模型;为每个模型创建一组重复的键,因为它们默认使用相同的键;在文本样本上运行两个管道;阅读每个结果列表(''CoreMap''s);然后为每个结果创建一个新的 CoreMap。虽然,我没有看到单个数据结构优于两个独立数据结构的好处。
  • 您需要一个命令行工具来 a) 在某些文本上运行 Stanford NER,b) 在相同文本上运行另一个 NER,以及 c) 以某种方式合并两者是否正确?您可能可以使用tee 或类似方法来完成此操作,但我不太了解“合并结果”位。这可能是一些胶水代码的情况。
  • @ap 问题是如果你一个接一个地运行分类器,xml 就会变得很不稳定,所以它需要智能地合并。谢谢
  • @NeilMcGuigan 我明白了——当我说“合并”位让我感到困惑时,这就是我的意思。你期待什么样的输出?

标签: nlp stanford-nlp named-entity-recognition


【解决方案1】:

因此,如果您一心想要在命令行中使用单个命令执行此操作,那么可以从这里开始:

cat corpus.txt | tee `stanfordNER -options here > out1.xml` | myNERTagger -options here > out2.xml && diff out1.xml out2.xml | awk to do whatever merging you want here...

但您可能会发现这不是解决方案。您将希望在一个小脚本中逐句执行,调用pyner 或类似方法以连接到斯坦福标记器,然后连接到您构建的任何自定义标记器,并在进行过程中合并差异。标记器的输出格式将极大地改变它的外观。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2020-04-28
    • 1970-01-01
    • 2018-12-04
    • 2015-01-06
    • 1970-01-01
    相关资源
    最近更新 更多