Так ... Программа работает именно так, как и должна, но я не понимаю, какие причудливые сокращения выдает программа.
Если я введу «Я хочу, чтобы сегодня был школьный день», программавыдаст
I/PRP : wish/VBP : nsubj
wish/VBP : day/NN : csubj
today/NN : wish/VBP : nmod:tmod
was/VBD : day/NN : cop
a/DT : day/NN : det
school/NN : day/NN : compound
day/NN : ROOT : root
Я просто хочу знать, что такое вещи типа 'cop', 'det', 'nsubj', 'csubj' и т.д .;так что я могу понять отношения между этими словами.
String modelPath = null;
String taggerPath = null;
MaxentTagger tagger = null;
DependencyParser parser = null;
Properties props;
StanfordCoreNLP pipeline;
public ConversationEngine() {
modelPath = DependencyParser.DEFAULT_MODEL;
taggerPath = "edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger";
tagger = new MaxentTagger(taggerPath);
parser = DependencyParser.loadFromModelFile(modelPath);
props = new Properties();
props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
pipeline = new StanfordCoreNLP(props);
}
public void parseSentence(String text) {
String subject = "";
DocumentPreprocessor tokenizer = new DocumentPreprocessor(new StringReader(text));
for (List<HasWord> sentence : tokenizer) {
List<TaggedWord> tagged = tagger.tagSentence(sentence);
GrammaticalStructure gs = parser.predict(tagged);
for (TypedDependency dep : gs.typedDependenciesEnhancedPlusPlus()) {
System.out.println(dep.dep() + " : " + dep.gov() + " : " + dep.reln());
}
}
}