2016-12-03 3 views
0

У меня есть сегментированные ресурсы и ресурсы, которые соответствуют моим сегментарным предложениям.Как я могу остановить Stanford CoreNLP от сегментации моего предложения

Как я могу остановить Stanford CoreNLP от сегментации моего предложения до генерации дерева синтаксического анализа?

Я делаю работы на китайском языке.

ответ

0

Ваше описание не очень точное, поэтому я не уверен, правильно ли интерпретирую ваш вопрос. Похоже, вы хотите передать синтаксическому анализатору список токенов, не имея при этом какой-либо токенизации, верно? Если это так, было бы полезно узнать, какой парсер вы используете. Но с обоими, вы можете просто подать его список токенов, и corenlp не будет прыгать и испортить вашу токенизацию. Я не работал с китайскими ресурсами, но следующий может помочь вам (если вы сделали токенизации до того уже, и разделение на пробельных приводит к правильной токенизации):

String sentence = "I can't do that ."; 
    ArrayList<HasWord> hwl = new ArrayList<HasWord>(); 
    String[] tokens = sentence.split(" "); 
    for (String t : tokens){ 
    HasWord hw = new Word(); 
    hw.setWord(t); 
    hwl.add(hw); 
    } 
    LexicalizedParser lexParser = LexicalizedParser.loadModel("<path to chinese lex parsing here>","-maxLength", "70"); 
    Tree cTree = lexParser.parse(hwl); 
    System.out.println("c tree:" + cTree); 


    DependencyParser parser = DependencyParser.loadFromModelFile("<chinese model for dep parsing here>"); 
    MaxentTagger tagger = new MaxentTagger("<path to your tagger file goes here"); 
    List<TaggedWord> tagged = tagger.tagSentence(hwl); 
    GrammaticalStructure gs = parser.predict(tagged); 
    System.out.println("dep tree:" + gs.typedDependencies()); 

Удаление строки Stderr, которые написаны, это приводит к:

c tree:(ROOT (S (MPN (FM I) (FM can't)) (VVFIN do) (ADJD that) ($. .))) 
dep tree:[nsubj(can't-2, I-1), root(ROOT-0, can't-2), xcomp(can't-2, do-3), dobj(do-3, that-4), punct(can't-2, .-5)] 

надеюсь, что это поможет.

+0

Это отличный ответ, но я просто решил проблему, используя команду командной строки: 'java -Xmx2g -cp" ../parsing/* "edu.stanford.nlp.parser.lexparser.LexicalizedParser -sentences newline -outputFormat typedDependencies ../parsing/xinhuaFactored.ser.gz ./cpbdev.out> cpbdev.out.parsing' –

+0

И мне очень сложно понять эти API, как вы узнали об этом? Читая javadoc? –

+0

Ах, да, вы используете его из командной строки, так что имеет смысл. Вообще, я думаю, что API-интерфейсы от corenlp документированы довольно хорошо, но есть некоторые скрытые вещи, которые вам видны сами. Просто играть с ним всегда помогает понять :) – Igor

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