目前没有办法以它认为“太奇怪”的方式制作 parse 标记。如果它认为一个词的标签是不可能的,你不能让它成为可能,但你可以在它认为可能的范围内指定它应该使用什么。通常这已经足够了。这里应该够了。这是一个例子。正如您所注意到的,它经常在没有帮助的情况下出错(部分原因是它们在训练数据中没有得到充分证明。它并不总是让它们出错,但它通常会出错,我选择了 3 它确实出错了:
$ cat imper.txt
Use care when opening.
Brush your hair!
Shut the door.
$ java -cp stanford-parser.jar edu.stanford.nlp.parser.lexparser.LexicalizedParser englishPCFG.ser.gz imper.txt 2> /dev/null
(ROOT
(S
(NP (NNP Use))
(VP (VBP care)
(SBAR
(WHADVP (WRB when))
(S
(VP (VBG opening)))))
(. .)))
(ROOT
(NP
(NP (NNP Brush))
(NP (PRP$ your) (NN hair))
(. !)))
(ROOT
(NP
(NP (NNP Shut))
(NP (DT the) (NN door))
(. .)))
但是使用像这样的标记化和部分标记的文本:
$ cat imper.tok
Use_VB care when opening .
Brush_VB your hair !
Shut_VB the door .
一切都是固定的:
$ java -cp stanford-parser.jar edu.stanford.nlp.parser.lexparser.LexicalizedParser -tokenized -tagSeparator _ englishPCFG.ser.gz imper.tok 2> /dev/null
(ROOT
(S
(VP (VB Use)
(NP (NN care))
(SBAR
(WHADVP (WRB when))
(S
(VP (VBG opening)))))
(. .)))
(ROOT
(S
(VP (VB Brush)
(NP (PRP$ your) (NN hair)))
(. !)))
(ROOT
(S
(VP (VB Shut)
(NP (DT the) (NN door)))
(. .)))
但是你必须使用正确的标签。它不会将“使用”标记为 VB。这也太奇怪了。“使用”作为动词应该是 VBG。它是现在分词形式,而不是命令式中使用的裸动词。