词法化不能处理以国会大厦字母开头的单词

时间:2018-06-14 17:09:58

标签: stanford-nlp

我正在开发一个使用StanfordNLP的项目。项目中的一个功能是从一段文本中提取所有名词并将每个名词解释。我正在使用以下代码提取名词

        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;

}

它正如预期的那样工作但是对于某些词来说,词形还原不起作用。我发现一些作为句子中第一个单词出现的名词有这个问题。例如:&#34;质子和电子都携带电荷。&#34;这里的单词&#34; Protons&#34;没有被转换为&#34;质子&#34;关于应用引理。与其他一些名词一样。

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

1 个答案:

答案 0 :(得分:0)

不幸的是,这是一段语音标记错误。 &#34;质子&#34;标有&#34; NNP&#34;不是&#34; NNS&#34;,所以没有对其进行词形还原。

您可以尝试在文本的低版本上运行,我注意到它会做正确的事情。