Java 在CoreNLP代码中,Penn树库词性符号本身在哪里实际表示?

Java 在CoreNLP代码中,Penn树库词性符号本身在哪里实际表示?,java,nlp,stanford-nlp,pos-tagger,Java,Nlp,Stanford Nlp,Pos Tagger,我特别寻找一些数据结构、枚举或生成过程,通过这些数据结构、枚举或生成过程,可以在内部表示不同的词类。我花了很长时间扫描Javadoc和源代码,但找不到我要找的东西。如果可能的话,我想直接访问标记集合,只要它们存储在某个中心位置。如果我提出的问题构成了关于CoreNLP词性标注操作方式的天真假设,请原谅,但如果我描述的内容确实以某种形式存在,这将非常有用。谢谢 实际上,我不确定它们是否在代码中的任何地方显式表示。标记器只是将它们作为字符串而不是任何类型的固定枚举输出,输出空间直接从训练数据推断出来

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

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


但是,对于英语,标记集应该是Penn Treebank标记集:

谢谢您的回答。是的,我想可能是这样的。我知道它使用了PTB(从你的回答中,现在我明白了为什么训练机制不符合特定的树库模型)。如果我能够以某种方式甚至通过编程方式访问这些值,而不必相信自己能够手动将这些值复制到自己的枚举中进行比较,这对我当前的项目来说仍然是一件好事。美国程序员通常不喜欢做这样的事情,而不是以某种方式实现自动化,所以你可以理解这是从哪里来的。哦,好吧。再次感谢您的帮助。:)因此,您可以尝试查看
AbstractSequenceClassifier#labels()
,它将为您提供序列模型的标签空间视图。但是,(1)这不一定是正确的(例如,理论上它可能比训练集中的标签更多),并且(2)从实际管道中获取标签是一件痛苦的事情。我建议您自己将标记硬编码到枚举中。在CoreNLP中,随着时间的推移,很多事情都会发生变化,但POS标记集不太可能是其中之一