2016-03-27 17 views
0

Hem çevrimiçi demoyu denedim hem de bağımlılık çözümleyicisinin sürümünü indirdim. Çevrimiçi demo'nun Geliştirilmiş Bağımlılıkları doğru sonuçlar elde edebildi. Örneğin, "James Cameron ve Leonardo DiCaprio'nun yönettiği bir film önerebilir misin?" Sonuçların altındaki üretilen:Tam bağımlılığı neden alamıyordum?

kökü (KÖK-0, tavsiye-3) aux (tavsiye-3,-1 Can) nsubj (tavsiye-3, sen-2) nsubj (film-6, me-4) det (film-6, a-5) xcomp (tavsiye-3, film-6) nsubjpass (yönlendirilmiş-9, olduğu-7) nsubjpass (hareket-14, ki-7) (ekstra) auxpass (yönlendirilmiş-9, -8) acl: relcl (film-6, yönlendirilmiş-9) kasa (Cameron-12, by-10) bileşiği (Cameron-12, James-11) nmod: agent (yönlendirilmiş) -9, Cameron-12) cc (yönlendirilmiş-9 ve 13) acl: relcl (film-6, oyunculuk-14) (ekstra) conj: ve (yönlendirilmiş-9, hareket-14) kasa (DiCaprio-17, by-15) bileşik (DiCaprio-17, Leonardo-16) nmod: tarafından (hareket-14, DiCaprio-17) ve "hareket" birkaç kelime ile ayrıldı "yönlendirilmiş" iki fiil, çevrimiçi demo ikisi de atıfta fark ettik başardı

rağmen isim "film" (acl: relcl (film-6, yönlendirilmiş-9), acl: relcl (movie-6, acted-14) (extra)). Bununla birlikte, Stanford'un web sitesinden indirilen kavanoz dosyaları ile aldığım sonucu aşağıda bulabilirsiniz.

kök (KÖK-0, tavsiye-3) aux (tavsiye-3,-1 Can) nsubj (tavsiye-3, sen-2) nsubj (film-7: CoreNLP sürüm 3.6.0 olduğu beni-4) det (film-7, a-5) AMOD (film-7, romantik-6) dobj (tavsiye-3, film-7) nsubjpass (yönlendirilmiş-10, film-7) ref (movie-7, hangi-8) auxpass (yönlendirilmiş-10, -9) acl: relcl (film-7, yön-10) kasa (Cameron-13, by-11) bileşik (Cameron- 13, James-12) nmod: aracı (yönlendirilmiş-10, Cameron-13) cc (Cameron-13 ve 14) nmod: madde geçidi (hareket-15, 10-hedefli) ve (Cameron-13, hareket-15) durumda (DiCaprio-18 ile-16) bileşik (DiCaprio-18 Leonardo-17) nmod Yönetim tarafından (hareket-15, DiCaprio-18) punct (tavsiye-3, -19?)

Ve bu durumda

, ayrıştırıcı bağımlılık acl alamadı: relcl (film-6, hareket-14) (ekstra).

Bu benim yapıcı kodudur:

public CoreNlpParser() { 
     props = new Properties(); 
     props.put("annotators", "tokenize, ssplit, pos, parse, lemma, depparse, ner"); 
     props.setProperty("depparse.extradependencies", "MAXIMAL"); 
     pipeline = new StanfordCoreNLP(props); 
    } 

ben "depparse.extradependencies" ayarlayarak "MAXIMAL" Ben çevrimiçi demo aynı sonuçları elde mümkün olmalıdır için düşündük. Ne eksik ve annotators doğru şekilde nasıl yapılandırmalıyım? Çok teşekkürler

cevap

0

Bu kod çevrimiçi demo ile daha yakından eşleşmelidir. NN bağımlılık çözümleyicisini değil, PCFG ayrıştırıcısını kullanmak istiyorsunuz.

import java.io.*; 
import java.util.*; 
import java.util.Properties; 
import java.util.zip.*; 

import edu.stanford.nlp.io.IOUtils; 
import edu.stanford.nlp.ling.*; 
import edu.stanford.nlp.pipeline.*; 
import edu.stanford.nlp.semgraph.*; 
import edu.stanford.nlp.trees.*; 
import edu.stanford.nlp.util.*; 

public class EnhancedDependenciesDemo { 

    public static void main (String[] args) { 
     Properties props = StringUtils.argsToProperties(args); 
     StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 
     Annotation ann = new Annotation("Can you recommend me a movie " + 
       "which was directed by James Cameron and acted by Leonardo DiCaprio?"); 
     pipeline.annotate(ann); 
     for (CoreMap sentence : ann.get(CoreAnnotations.SentencesAnnotation.class)) { 
      Tree tree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class); 
      TreePrint treePrint = new TreePrint("typedDependenciesCollapsed"); 
      treePrint.printTree(tree); 
     } 
    } 
} 
+0

Teşekkür ederiz.Aralarındaki farkların neler olduğunu söyleyebilir misiniz? – Yangrui

+0

Demo, seçim ayrıştırıcısını çalıştırır ve seçim ayrıştırıcısını dönüştürerek bağımlılıklar üretir. NN bağımlılık çözümleyicisi yalnızca bağımlılık ayrıştırmaları oluşturur. – StanfordNLPHelp

İlgili konular