首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我没有得到完全的依赖

为什么我没有得到完全的依赖
EN

Stack Overflow用户
提问于 2016-03-27 04:13:49
回答 1查看 320关注 0票数 0

我尝试了在线演示和下载版本的依赖解析器。在线演示的增强依赖能够得到准确的结果。例如,“你能给我推荐一部由詹姆斯·卡梅隆和莱昂纳多·DiCaprio执导的电影吗?”产生的结果如下:

根(根-0,推荐-3)辅助(推荐-3,可以-1) nsubj (推荐-3,你-2) nsubj (电影-6,me-4 )(电影-6,a-5 ) det (推荐-3,电影-6) nsubjpass (导演-9,其中-7) nsubjpass (执行-14,其中-7)(额外)辅助传递(导演-9,是-8) acl:relcl (电影-6,导演-9)案例( Cameron-12,by-10 )复合( Cameron-12,詹姆斯-11)nmod:特工(导演-9,卡梅隆-12) cc (导演-9,-13) acl:relcl (电影-6,表演-14)(额外)conj:和(导演-9,代理-14)案件( DiCaprio-17,by-15 )化合物( DiCaprio-17,Leonardo-16 ) nmod:by (代理-14,DiCaprio-17 )

虽然两个动词“直接”和“行为”是用几个单词分开的,但在线演示能够识别它们都是指名词“电影”(acl:relcl (电影-6,导演-9 ),acl:relcl (电影-6,表演-14)(额外))。

然而,下面是我从斯坦福网站下载的jar文件的结果。CoreNLP版本为3.6.0:

根(ROOT-0,推荐-3)辅助(推荐-3,Can-1) nsubj(推荐-3,you-2) nsubj(电影-7,me-4) det(电影-7,a-5) amod(电影-7,浪漫-6)dobj(推荐-3,电影-7)nsubjpass(导演-10,电影-7)参考(电影-7,其中-8)辅助通行证(导演-10,是acl:relcl(电影-7,导演-10)案例(Cameron-13,by-11)复合(Cameron-13,by-11)詹姆斯-12)nmod:特工(导演-10,卡梅隆-13)cc(卡梅隆-13,-14)nmod:特工(指示-10,行动-15)conj:和(Cameron-13,代理-15)案件(DiCaprio-18,by-16)化合物(DiCaprio-18,Leonardo-17) nmod:by(执行-15,DiCaprio-18) t(建议-3,-19)

在这种情况下,解析器无法获得依赖acl:relcl (file-6,action-14)(额外)。

这是我的构造函数代码:

代码语言:javascript
复制
public CoreNlpParser() {
        props = new Properties();
        props.put("annotators", "tokenize, ssplit, pos, parse, lemma, depparse, ner");
        props.setProperty("depparse.extradependencies", "MAXIMAL");
        pipeline = new StanfordCoreNLP(props);
    }

我认为,通过将"depparse.extradependencies“设置为”最大“,我应该能够获得与在线演示程序相同的结果。我所缺少的是什么,我应该如何正确配置注释器?非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-27 05:31:34

这段代码应该更接近在线演示。您希望使用PCFG解析器,而不是NN依赖解析器。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36243749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档