Ваше описание не очень точное, поэтому я не уверен, правильно ли интерпретирую ваш вопрос. Похоже, вы хотите передать синтаксическому анализатору список токенов, не имея при этом какой-либо токенизации, верно? Если это так, было бы полезно узнать, какой парсер вы используете. Но с обоими, вы можете просто подать его список токенов, и 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)]
надеюсь, что это поможет.
Это отличный ответ, но я просто решил проблему, используя команду командной строки: 'java -Xmx2g -cp" ../parsing/* "edu.stanford.nlp.parser.lexparser.LexicalizedParser -sentences newline -outputFormat typedDependencies ../parsing/xinhuaFactored.ser.gz ./cpbdev.out> cpbdev.out.parsing' –
И мне очень сложно понять эти API, как вы узнали об этом? Читая javadoc? –
Ах, да, вы используете его из командной строки, так что имеет смысл. Вообще, я думаю, что API-интерфейсы от corenlp документированы довольно хорошо, но есть некоторые скрытые вещи, которые вам видны сами. Просто играть с ним всегда помогает понять :) – Igor