首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lemmatization不适用于大写字母开头的单词

Lemmatization不适用于大写字母开头的单词
EN

Stack Overflow用户
提问于 2018-06-15 01:09:58
回答 1查看 74关注 0票数 1

我正在做一个使用StanfordNLP的项目。该项目的一个功能是从一段文本中提取所有名词,并对每个名词进行词汇化。我正在使用下面的代码提取名词

代码语言:javascript
复制
        Properties props = new Properties();
        props.setProperty("annotators", "tokenize, ssplit, pos, lemma, parse, natlog, openie");
        StanfordCoreNLP pipeline = new StanfordCoreNLP(props);


        Annotation document = new Annotation(text);

        pipeline.annotate(document);         

        List<CoreMap> sentences = document.get(SentencesAnnotation.class);

        for(CoreMap sentence: sentences) {

          SemanticGraph dependencies = sentence.get(BasicDependenciesAnnotation.class);
          List<String> Nouns = Extractnouns(dependencies.typedDependencies(), sentence); 
        }

     private List<String> Extractnouns(Collection<TypedDependency> tdl, CoreMap sentence) { 
     List<String> concepts=new ArrayList<String>();
     for (TypedDependency td : tdl) 
            {

                String govlemma = td.gov().lemma(); 
                String deplemma = td.dep().lemma(); 
                String deptag=td.dep().tag();
                String govtag=td.gov().tag();
                if(deptag!=null && deptag.contains("NN") )
                {
                     concepts.add(deplemma);
                 }
                if(govtag!=null && govtag.contains("NN") )
                {
                     concepts.add(govlemma);
                 }
             }
         return concepts;

}

它像预期的那样工作,但对于某些单词来说,词汇化并不起作用。我观察到一些作为句子中第一个单词的名词存在这个问题。例如:“质子和电子都带电荷。”在这里,在应用引理时,“质子”一词没有转换为“质子”。和其他一些名词也一样。

你能告诉我这个问题的解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2018-06-17 12:19:20

不幸的是,这是一个词性标注错误。“Proton”被标记为"NNP“而不是"NNS",因此不会对其执行词汇化。

你可以尝试在文本的小写版本上运行,我注意到在这种情况下它做了正确的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50862687

复制
相关文章

相似问题

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