Online demoda görüldüğü gibi stanford corenlp kullanarak aynı bağımlılık çözümlemesini nasıl programlanabilir?Bağımlılık, çıktıları tam olarak çevrimiçi demo olarak nasıl alır?
Aşağıdaki cümleye bağımlılık ayrıştırmasını elde etmek için corenlp paketini kullanıyorum.
Teksas'taki ikinci sağlık çalışanı, Ebola'nın pozitif olduğunu söylüyor, yetkililer söylüyor.
Programlı stanford corenlp 3.5.0 paketini kullanarak aşağıdaki çıktıyı almak
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());
}
}
}
aşağıdaki kodu kullanarak ayrıştırma ulaşmaya çalışıyorum.
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)
Ancak çevrimiçi demo işaretleri kök olarak söylüyorlar farklı bir cevap verir ve ayrıştırma içindeki kelimeler arasında ccomp gibi diğer ilişkileri vardır.
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)
Çıktılarımı çevrimiçi demo ile eşleştirmek için nasıl çözebilirim?
Çözümleyicinin deterministik olduğuna inanıyorum. CoreNLP'nin aynı sürümünü çevrimiçi demo olarak kullandığınızdan ve aynı modeli kullandığınızdan emin olun. Stanford ekibine e-posta göndermeniz ve web sitesinde hangi versiyonun/modelin çalıştırıldığını sormanız gerekebilir. – mbatchkarov