2012-09-10 69 views

回答

7

對於處理此問題的較低級別的類,您可以查看tokenizer documentation。在CoreNLP級別,您可以使用Annotator的「標記化,ssplit」。

+0

從管道中獲取結果句子列表的最簡單方法是什麼?我可以得到列表,但不知道如何獲得列表句子。 –

+0

我找到了解決辦法:做「sentence.get(TextAnnotation.class);」句子是一個CoreMap。 –

1

爲什麼不使用BreakIteratorjava.text包......拆分句子,行,字,字符...等

請參閱此鏈接:

http://docs.oracle.com/javase/6/docs/api/java/text/BreakIterator.html

+0

它以前不知道它。我會仔細看看的。謝謝。 – thetna

+0

不客氣...... –

+7

要小心,NLP解析有很多細節,像BreakIterator這樣的簡單策略可能無法正確處理。例如,你會正確處理一個句子,例如「麪包花費$ 4.99」或「怎麼回事?」問母親。「如果你對一種天真的解決方案沒問題,BreakIterator就可以做得很好。如果你想更有力地處理這些案例,斯坦福大學的NLP庫是一個好主意。 –

3

有你看過main Stanford NLP page上的文檔?大約一半的時候,它提供了一個你正在尋找的確切東西的例子。這個例子不僅分割句子,而且分詞。

0
Properties properties = new Properties(); 
    properties.setProperty("annotators", "tokenize, ssplit, parse"); 
    StanfordCoreNLP pipeline = new StanfordCoreNLP(properties); 
    List<CoreMap> sentences = pipeline.process(SENTENCES) 
    .get(CoreAnnotations.SentencesAnnotation.class);  
    // I just gave a String constant which contains sentences. 
    for (CoreMap sentence : sentences) { 
      System.out.println(sentence.toString()); 
    }