Jak mogę programowo uzyskać ten sam pakiet zależności przy użyciu stanuford corenlp, jak widać w demo online?Jak uzyskać zależność od analizowania danych wyjściowych dokładnie tak, jak w wersji online?
Używam pakietu corenlp do uzyskania analizy zależności dla następującego zdania.
Drugi pracownik opieki zdrowotnej w Teksasie pozytywnie ocenia Ebola, mówią władze.
próbuję uzyskać parse programowo za pomocą poniższego
Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
String text = "Second healthcare worker in Texas tests positive for Ebola , authorities say ."; // Add your text here!
Annotation document = new Annotation(text);
pipeline.annotate(document);
String[] myStringArray = {"SentencesAnnotation"};
List<CoreMap> sentences = document.get(SentencesAnnotation.class);
for(CoreMap sentence: sentences) {
SemanticGraph dependencies = sentence.get(BasicDependenciesAnnotation.class);
IndexedWord root = dependencies.getFirstRoot();
System.out.printf("root(ROOT-0, %s-%d)%n", root.word(), root.index());
for (SemanticGraphEdge e : dependencies.edgeIterable()) {
System.out.printf ("%s(%s-%d, %s-%d)%n", e.getRelation().toString(), e.getGovernor().word(), e.getGovernor().index(), e.getDependent().word(), e.getDependent().index());
}
}
}
I uzyskać następujące dane wyjściowe przy użyciu corenlp Stanford 3.5.0 pakietu kod.
root(ROOT-0, worker-3)
amod(worker-3, Second-1)
nn(worker-3, healthcare-2)
prep(worker-3, in-4)
amod(worker-3, positive-7)
dep(worker-3, say-12)
pobj(in-4, tests-6)
nn(tests-6, Texas-5)
prep(positive-7, for-8)
pobj(for-8, ebola-9)
nsubj(say-12, authorities-11)
Ale demo online daje inną odpowiedź, która oznacza, jak root i ma inne relacje, takie jak ccomp między słowami w analizie.
amod(worker-3, Second-1)
nn(worker-3, healthcare-2)
nsubj(tests-6, worker-3)
prep(worker-3, in-4)
pobj(in-4, Texas-5)
ccomp(say-12, tests-6)
acomp(tests-6, positive-7)
prep(positive-7, for-8)
pobj(for-8, Ebola-9)
nsubj(say-12, authorities-11)
root(ROOT-0, say-12)
Jak mogę rozwiązać moje wyniki, aby dopasować je do wersji demonstracyjnej online?
Wierzę, że analizator składni jest deterministyczny. Upewnij się, że korzystasz z tej samej wersji CoreNLP, co wersja demonstracyjna online, i że używasz tego samego modelu. Być może będziesz musiał wysłać e-mail do zespołu Stanford i zapytać, która wersja/model jest uruchomiony na stronie internetowej - nie wiesz, czy rzeczywiście o tym wspominają. – mbatchkarov