2012-07-03 3 views
1

Может кто-нибудь, пожалуйста, предоставит мне реализацию Java Stanford CoreNLP для преобразования текстового файла в файл XML. То же самое, что я могу сделать сStanford CoreNLP- Текст в XML

java -cp stanford-corenlp-2012-05-22.jar;stanford-corenlp-2012-05-22-models.jar;xom.jar;joda-time.jar -Xmx3g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,parse,dcoref -file input.txt 

в командной строке.

+0

Исходный код или делать это в приложение Java? –

+0

Исходный код для преобразования input.txt в input.txt.xml. Код, выполняющий ту же задачу, что и указанная команда, выполняется при запуске в командной строке. Такие средства, как использование Stanford CoreNLP API для этого в программе Java или что-то еще, что можно сделать для достижения цели. – agarwav

ответ

2

В Java вы могли бы назвать это таким образом:

import edu.stanford.nlp.pipeline.StanfordCoreNLP; 

...

StanfordCoreNLP.main(new String[] { 
    "-annotators", "tokenize,ssplit,pos,lemma,ner,parse,dcoref", 
    "-file", "input.txt" }); 

(Если это достаточно)

+0

Thanx много: D Это сработало: D – agarwav

4

ответ Joop, безусловно, работает, но в случае, если вы хотите чтобы копать немного глубже, чем использовать основной метод в качестве вашего API, вот полный образец, который показывает, как анализ предложения в XML в файл.

import java.io.*; 
import java.util.*; 

import edu.stanford.nlp.io.*; 
import edu.stanford.nlp.ling.*; 
import edu.stanford.nlp.pipeline.*; 
import edu.stanford.nlp.trees.*; 
import edu.stanford.nlp.util.*; 

public class StanfordCoreNlpDemo { 

    public static void main(String[] args) throws IOException { 
    PrintWriter out; 
    if (args.length > 1) { 
     out = new PrintWriter(args[1]); 
    } else { 
     out = new PrintWriter(System.out); 
    } 
    PrintWriter xmlOut = null; 
    if (args.length > 2) { 
     xmlOut = new PrintWriter(args[2]); 
    } 

    StanfordCoreNLP pipeline = new StanfordCoreNLP(); 
    Annotation annotation; 
    if (args.length > 0) { 
     annotation = new Annotation(IOUtils.slurpFileNoExceptions(args[0])); 
    } else { 
     annotation = new Annotation("Kosgi Santosh sent an email to Stanford University. He didn't get a reply."); 
    } 

    pipeline.annotate(annotation); 
    pipeline.prettyPrint(annotation, out); 
    if (xmlOut != null) { 
     pipeline.xmlPrint(annotation, xmlOut); 
    } 
    // An Annotation is a Map and you can get and use the various analyses individually. 
    // For instance, this gets the parse tree of the first sentence in the text. 
    List<CoreMap> sentences = annotation.get(CoreAnnotations.SentencesAnnotation.class); 
    if (sentences != null && sentences.size() > 0) { 
     CoreMap sentence = sentences.get(0); 
     Tree tree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class); 
     out.println(); 
     out.println("The first sentence parsed is:"); 
     tree.pennPrint(out); 
    } 
    } 

} 
+0

Как-то это уже не работает, или я делаю что-то неправильно. Импорт для 'StanfordCoreNLP' больше не работает, потому что он не находится в пакете' * .pipeline. * '. Но я не могу найти его где-либо еще в рамках проекта. – Ogofo

+0

Все еще работает для меня! (С текущим v3.3.1.) Может быть, ваш CLASSPATH не прав? –

Смежные вопросы