0

我正在尝试使用斯坦福 NLP 解析器来解析 POS 标记数据。由于我的数据已经被标记和标记化,我正在尝试使用该setOptionFlags()方法来通知解析器,例如,

LexicalizedParser lp = LexicalizedParser.loadModel("edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz");
lp.setOptionFlags(new String[]{"-sentences", "newline", "-tokenized", "-tagSeparator", "_", "-tokenizerFactory", "edu.stanford.nlp.process.WhitespaceTokenizer", "-tokenizerMethod", "newCoreLabelTokenizerFactory"});

但是,我不断收到异常,

Exception in thread "main" java.lang.IllegalArgumentException: Unknown option: -sentences

我已经通过提供的 Javadocs 在线搜索,这是在他们的示例中完成的方式。请帮忙!

4

1 回答 1

0

标记化、标签分隔符等的选项不是解析器的选项 sensu stricto,而是用于DocumentPreprocessor在 的 main 方法中为解析器构建输入的选项LexicalizedParser。对于实际的解析器,输入是一个令牌列表,并且这些都被解析。因此,您不能将这些选项作为解析器选项与setOptions().

如果您有一个令牌列表,您可以使用以下方法将它们直接放入解析器中LexicalizedParserpublic Tree parse(List<? extends HasWord> lst)。如果列表中的项目实现HasTag(例如, aTaggedWord或 a CoreLabel)并且具有非空标签,那么解析器将在解析句子时使用该标签。

如果您想使用 aDocumentPreprocessor将文本与标记化的标记词分开,那么您需要创建 aDocumentPreprocessor然后使用setTagDelimiter(String s).

于 2013-10-23T00:18:46.760 回答