我正在使用Stanford NLP为西班牙语文本进行POS标记。我可以为每个单词获得一个POS标签,但我注意到我只获得了Ancora标签的前四个部分,并且它缺少人,数字和性别的最后三个部分。
为什么Stanford NLP只使用简化版的Ancora标签?
是否可以使用Stanford NLP获取整个标签?
这是我的代码(请原谅jruby ......):
props = java.util.Properties.new()
props.put("tokenize.language", "es")
props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse")
props.put("ner.model", "edu/stanford/nlp/models/ner/spanish.ancora.distsim.s512.crf.ser.gz")
props.put("pos.model", "/stanford-postagger-full-2015-01-30/models/spanish-distsim.tagger")
props.put("parse.model", "edu/stanford/nlp/models/lexparser/spanishPCFG.ser.gz")
pipeline = StanfordCoreNLP.new(props)
annotation = Annotation.new("No sé qué estoy haciendo. Me pregunto si esto va a funcionar.")
我将此作为输出:
[Text = No CharacterOffsetBegin = 0 CharacterOffsetEnd = 2 PartOfSpeech = rn Lemma = no NamedEntityTag = O] [Text =séCharacterOffsetBegin= 3 CharacterOffsetEnd = 5 PartOfSpeech = vmip000 Lemma =séNamedEntityTag= O] [Text =quéCharacterOffsetBegin= 6 CharacterOffsetEnd = 9 PartOfSpeech = pt000000 Lemma =quéNamedEntityTag= O] [Text = estoy CharacterOffsetBegin = 10 CharacterOffsetEnd = 15 PartOfSpeech = vmip000 Lemma = estoy NamedEntityTag = O] [Text = haciendo CharacterOffsetBegin = 16 CharacterOffsetEnd = 24 PartOfSpeech = vmg0000 Lemma = haciendo NamedEntityTag = O] [Text =。 CharacterOffsetBegin = 24 CharacterOffsetEnd = 25 PartOfSpeech = fp Lemma =。 NamedEntityTag = O]
(我注意到这些引理也不正确,但这可能是一个单独问题的问题。没关系,我看到Stanford NLP不支持西班牙语的词形还原。)
答案 0 :(得分:1)
为什么Stanford NLP只使用简化版的Ancora标签?
这是确保高标记准确性的实际决策。 (保留标签上的形态学信息会导致整个标记器遭受数据稀疏性的影响,并且不仅在形态学注释方面更糟糕,而且在整个方面都会更糟。)
是否可以使用Stanford NLP获取整个标签?
没有。不过,你可以用一个简单的基于规则的系统做到这一点,或者使用斯坦福分类器训练你自己的形态注释器。 (如果你选择任何一条路径,请随意分享你的代码!)
答案 1 :(得分:0)
如果仅使用Stanford POS标记器并不严格,您可能需要尝试使用POS和形态标记工具包RDRPOSTagger。 RDRPOSTagger支持40种不同语言(包括西班牙语)的预训练POS和形态标记。
对于西班牙语POS和形态标记,RDRPOSTagger使用IULA西班牙LSP树库进行了培训。然后,RDRPOSTagger在Java实现中获得 97.95%的标记准确度,标记速度为 200K字/秒( 10K字/秒在Python实现中),使用Window7 OS 64位核心i5 2.50GHz CPU和6GB内存的计算机。