2016-03-27 12 views
0

オンラインデモ版と依存版パーサーのダウンロード版の両方を試しました。オンラインデモのEnhanced Dependenciesは正確な結果を得ることができました。たとえば、「ジェームズ・キャメロンとレオナルド・ディカプリオ監督の映画をお勧めしますか? 完全な依存関係が得られなかった理由

ルート(ROOT-0は、お勧め-3)、AUX(お勧め-3を、CAN-1) nsubj(お勧め-3を、あなた-2) nsubj(映画-6、私-4:結果の下に生成されました) det(movie-6、a-5) xcomp(推奨-3、ムービー-6) nsubjpass(directed-9、which-7) nsubjpass(acted-14、which-7)(extra) auxpass (有向-9であった-8) ACL:relcl(映画-6、指向-9) 場合(キャメロン-12、によって-10) 化合物(キャメロン-12、ジェームズ-11) nmod:エージェント(有向-9、Cameron-12) cc(directed-9および-13) (DiCaprio-17、Leonardo-16) の化合物(DiCaprio-17、by-15) の化合物(DiCaprio-17、Leonardo-16 ) nmod:by(acted-14、DiCaprio-17)

「directed」と「acted」の2つの動詞は数語で区切られていますが、オンラインデモでは両方とも名詞 "movie"(acl:relcl(movie-6、directed-9)、acl:relcl(movie-6、acted-14)(extra))。

ただし、以下の私はスタンフォード大学のウェブサイトからダウンロードしたjarファイルになった結果です。 CoreNLPのバージョンは3.6.0さ:

ルート(ROOT-0は、お勧め-3)を AUX(、-3をお勧めすることができ-1) nsubj(お勧め-3を、あなた-2) nsubj(映画-7 、me-4) det(movie-7、a-5) amod(movie-7、romantic-6) dobj(おすすめ-3、映画-7) nsubjpass(directed-10、movie-7) (Cameron-13、by-11) 化合物(Cameron-13、-11) ケース(Cameron-13、by-11) 化合物13、James-12) nmod:agent(directed-10、Cameron-13) cc(Cameron-13および-14) nmod:エージェント(有向-10を、作用-15) CONJ:及び(キャメロン-13、作用-15) 場合(ディカプリオ-18、によって-16) 化合物(ディカプリオ-18、レオナルド-17) nmodこの場合、パーサーは依存関係acl:relcl(movie-6、acted-14)を取得できませんでした。この場合、パーサーは依存関係acl:relcl(movie-6、acted-14)を取得できませんでした。 (余分な)。

これは私のコンストラクタコードです:

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

私が「MAXIMAL」「depparse.extradependencies」を設定することによって、私は のことができるようにすべきであるという考えは、オンラインデモのと同じ結果を得ることができます。私は何が欠けていたのですか?そして、どのようにして 注釈を正しく設定する必要がありますか?おかげで非常に多く

答えて

0

このコードは、より密接オンラインデモと一致する必要があります。 NN依存性パーサーではなく、PCFGパーサーを使用したいとします。

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

ありがとうございました。彼らの違いは何ですか? – Yangrui

+0

デモではconstituency parserを実行し、constituency parseを変換して依存関係を生成します。 NN依存性パーサは依存性解析のみを作成します。 – StanfordNLPHelp

関連する問題