【问题标题】:Where in the CoreNLP code are the Penn Treebank part-of-speech symbols themselves actually represented?在 CoreNLP 代码中,Penn Treebank 词性符号本身实际表示在哪里?
【发布时间】:2017-03-25 21:16:03
【问题描述】:

我正在专门寻找一些数据结构、枚举或生成过程,通过这些过程可以在内部表示不同的词性。我花了很长时间扫描 Javadoc 和源代码,但找不到我要找的东西。如果可能的话,我想直接访问标签的集合,如果它们存储在某个中心位置。如果我提出的问题构成了关于 CoreNLP 后标记操作方式的幼稚假设,请原谅我,但如果我所描述的内容确实以某种形式存在,这将非常有帮助。谢谢!

【问题讨论】:

    标签: java nlp stanford-nlp pos-tagger


    【解决方案1】:

    我实际上并不确定它们是否在代码中的任何地方明确表示。标注器只是将它们输出为字符串而不是任何类型的固定枚举,并且输出空间直接从训练数据中推断出来。这样做的好处是您可以在任意标签集上训练完全相同的模型。当然还有你刚刚遇到的劣势。 :)

    但是,对于英语,标签集应该是 Penn Treebank 标签集:https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html

    【讨论】:

    • 感谢您的回答。是的,这就是我认为可能是这种情况。我知道它使用 PTB(从您的回答中,现在我明白了为什么训练机制不符合特定的树库模型)。如果我能够以某种方式(甚至以编程方式)访问这些值,而不是必须相信我自己的能力将这些值手动复制到我自己的枚举中,那么这对我当前的项目来说仍然是件好事。我们程序员通常讨厌做这样的事情,而不是以某种方式自动化,所以你可以理解这是从哪里来的。那好吧。再次感谢您的帮助。 :)
    • 所以,你可以试试看AbstractSequenceClassifier#labels(),它会给你序列模型对标签空间的看法。但是,(1)这不一定是正确的(例如,理论上它可能有比训练集中更多的标签),以及(2)从实际管道中获取是一个痛苦。我建议您自己将标签硬编码到枚举中。 CoreNLP 中的很多事情都会随着时间而变化,但 POS 标签集不太可能是其中之一
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多