2012-09-10 4 views

Répondre

7

Pour les classes de niveau inférieur qui traitent cela, vous pouvez consulter le tokenizer documentation. Au niveau CoreNLP, vous pouvez simplement utiliser "tokenize, ssplit" de l'annotateur.

+0

Quel est le moyen le plus simple d'obtenir la liste des phrases résultantes du pipeline? Je peux obtenir la liste , mais je ne sais pas comment obtenir la liste phrases. –

+0

J'ai trouvé la solution: faire "phrase.get (TextAnnotation.class);" où phrase est un CoreMap. –

1

Pourquoi ne pas utiliser BreakIterator du package java.text ...... diviser phrases, lignes, mots, personnages ... etc

Voir ce lien:

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

+0

il ne le savait pas avant. je vais regarder dedans. Merci. – thetna

+0

Vous êtes les bienvenus .... –

+7

Attention, il y a beaucoup de subtilités avec l'analyse syntaxique NLP qu'une stratégie simple telle que BreakIterator pourrait ne pas gérer correctement. Par exemple, seriez-vous capable de gérer correctement une phrase comme «Le pain coûte 4,99 $» ou «Quelle est la question? demanda la mère. Si vous êtes d'accord avec une solution naïve, BreakIterator fera l'affaire. Si vous voulez gérer ces cas de manière plus robuste, la bibliothèque PNL de Stanford est une excellente idée. –

3

Avez vous avez regardé la documentation sur le main Stanford NLP page? À peu près à mi-chemin, il fournit un exemple de presque la chose exacte que vous recherchez. L'exemple non seulement scinde les phrases, mais aussi les mots.

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()); 
    } 
Questions connexes