Где в коде CoreNLP на самом деле представлены сами символы части речи Penn Treebank?

Я специально ищу какую-то структуру данных, перечисление или генеративный процесс, посредством которого различные части речи представляются внутри. Я потратил много времени на сканирование Javadoc и исходного кода и не могу найти то, что ищу. Я хотел бы получить прямой доступ к коллекции тегов, если это возможно, если они хранятся в каком-то центральном месте. Пожалуйста, простите меня, если вопрос, который я задаю, представляет собой наивное предположение о том, как работает пост-тегирование CoreNLP, но если то, что я описываю, действительно существует в той или иной форме, это было бы очень полезно. Спасибо!


person David Kriz    schedule 25.03.2017    source источник


Ответы (1)


На самом деле я не уверен, что они явно представлены где-либо в коде. Теггер просто выводит их как строки, а не как фиксированное перечисление, а выходное пространство выводится непосредственно из обучающих данных. Преимущество этого в том, что вы можете обучать одну и ту же модель на произвольных наборах тегов. И, конечно же, недостаток, с которым вы только что столкнулись. :)

Однако для английского языка набор тегов должен быть набором тегов Penn Treebank: https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html

person Gabor Angeli    schedule 26.03.2017
comment
Спасибо за ответ. Да, я так и думал, что может быть так. Я знаю, что он использует PTB (и из вашего ответа теперь я понимаю, почему механика обучения не соответствует конкретной модели банка деревьев). Для моего текущего проекта все же было бы хорошо, если бы я мог каким-то образом получить доступ к значениям — даже программно — вместо того, чтобы полагаться на свои собственные способности копировать значения для сравнения в свое собственное перечисление вручную. Мы, программисты, обычно ненавидим делать такие вещи вместо того, чтобы как-то автоматизировать, чтобы вы могли понять, откуда это берется. Ну что ж. Спасибо еще раз за помощь. :) - person David Kriz; 27.03.2017
comment
Итак, вы можете попробовать взглянуть на AbstractSequenceClassifier#labels(), который даст вам представление модели последовательности о пространстве меток. Но (1) это не обязательно должно быть правильным (например, теоретически у него может быть больше меток, чем в обучающем наборе), и (2) это сложно получить из фактического конвейера. Я бы рекомендовал просто жестко закодировать теги в перечисление. Со временем в CoreNLP многое меняется, но набор тегов POS вряд ли будет одним из них. - person Gabor Angeli; 27.03.2017