2013-10-22 30 views
0

我正在嘗試使用Stanford NLP解析器來解析POS標記的數據。由於我的數據已經被標記和符號化,我試圖用setOptionFlags()方法告知解析器這個樣,在Java中設置Stanford NLP解析器的選項

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,這是它​​們在他們的例子中完成的方式。請幫忙!

回答

0

標記化,標記分隔符等選項不是用於解析器的選項,而是用於在LexicalizedParser的主方法中爲解析器構建輸入的DocumentPreprocessor選項。對於實際的解析器,輸入是一個令牌列表,並且這些被解析。因此,您不能將這些選項作爲解析器選項與setOptions()

如果你有一個令牌列表,你可以用LexicalizedParserpublic Tree parse(List<? extends HasWord> lst)這個方法將它們直接放到解析器中。如果列表中的項目執行HasTag(例如,TaggedWordCoreLabel)並且具有非空標記,則解析器將在分析該句子時使用該標記。

如果你想使用DocumentPreprocessor文本拆分與符號化標籤的話,那麼你需要創建一個DocumentPreprocessor,然後用像setTagDelimiter(String s)方法設置好了(有點手動,抱歉)。