有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

windows stanford corenlp java类jar文件编译缺少“.”

我已经8年没有使用java了,但我不记得有人谈论过jar文件

我正在尝试像在链接NER example java code上那样执行NER过程。我复制了他们的示例java类NERPipelineDemo,位于链接处。当我试图编译NERPipelineDemo时,它出现了错误,看起来需要我从网站下载NER软件包。我在download stanford corenlp(红色下载按钮)下载了它,最后得到了一个非常大的jar文件。我将jar文件复制到NERPipelineDemo所在的目录中。java在中,并在顶部添加了一个导入。这是示例链接中程序的顶部,为我添加的导入行添加了注释

package edu.stanford.nlp.examples;

import stanford-english-corenlp-2018-10-05-models.*;  //I added this line to example found online
import edu.stanford.nlp.pipeline.*;

import java.util.Properties;
import java.util.stream.Collectors;

public class NERPipelineDemo {

  public static void main(String[] args) {
    // set up pipeline properties
    Properties props = new Properties();
    props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner");
    // example customizations (these are commented out but you can uncomment them to see the results

    // disable fine grained ner
    // props.setProperty("ner.applyFineGrained", "false");

    // customize fine grained ner
    // props.setProperty("ner.fine.regexner.mapping", "example.rules");
    // props.setProperty("ner.fine.regexner.ignorecase", "true");

    // add additional rules, customize TokensRegexNER annotator
    // props.setProperty("ner.additional.regexner.mapping", "example.rules");
    // props.setProperty("ner.additional.regexner.ignorecase", "true");

    // add 2 additional rules files ; set the first one to be case-insensitive
    // props.setProperty("ner.additional.regexner.mapping", "ignorecase=true,example_one.rules;example_two.rules");

    // set document date to be a specific date (other options are explained in the document date section)
    // props.setProperty("ner.docdate.useFixedDate", "2019-01-01");

    // only run rules based NER
    // props.setProperty("ner.rulesOnly", "true");

    // only run statistical NER
    // props.setProperty("ner.statisticalOnly", "true");

    // set up pipeline
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
    // make an example document
    CoreDocument doc = new CoreDocument("Joe Smith is from Seattle.");
    // annotate the document
    pipeline.annotate(doc);
    // view results
    System.out.println("---");
    System.out.println("entities found");
    for (CoreEntityMention em : doc.entityMentions())
      System.out.println("\tdetected entity: \t"+em.text()+"\t"+em.entityType());
    System.out.println("---");
    System.out.println("tokens and ner tags");
    String tokensAndNERTags = doc.tokens().stream().map(token -> "("+token.word()+","+token.ner()+")").collect(
        Collectors.joining(" "));
    System.out.println(tokensAndNERTags);
  }

}

我没有处理这个问题。下载jar文件之后,因为我在网上搜索了它,看起来我可以在java程序中引用它

因此,当我尝试编译程序时,我现在有4个错误,而不是6个:

NERPipelineDemo.java:3: error: '.' expected
import stanford-english-corenlp-2018-10-05-models.*;
               ^
NERPipelineDemo.java:3: error: ';' expected
import stanford-english-corenlp-2018-10-05-models.*;
                ^
NERPipelineDemo.java:3: error: class, interface, or enum expected
import stanford-english-corenlp-2018-10-05-models.*;
                       ^
NERPipelineDemo.java:3: error: class, interface, or enum expected
import stanford-english-corenlp-2018-10-05-models.*;
                        ^
4 errors 

我很难弄清楚丢失了什么是文件名为stanford-english-corenlp-2018-10-05-models。罐子

我从NER网站复制了示例代码,如图所示

有什么想法吗

更新:我确实找到了另一个question online for stanford corenlp,我尝试了他们所做的,并得到了错误

"Could not find or load main class NERPipelineDemo.java"

我也看到了steps to use official release,但他们并没有谈论我在下载链接/按钮上得到的jar文件。我想他们谈论的是github的zip下载

**更新2(项目构建/设置信息): 在C:\Users\Michele\Documents中,我有:

stanford-english-corenlp-2018-10-05-models.jar (downloaded from link above, red button)
 NERPipelineDemo.java (copied exactly from https://stanfordnlp.github.io/CoreNLP/ner.html and named as shown)

在我的文档目录命令提示符下,我尝试了javac NERPipelineDemo。java,但第一个错误列表是

C:\Users\Michele\Documents>javac NERPipelineDemo.java
NERPipelineDemo.java:4: error: package edu.stanford.nlp.pipeline does not exist
import edu.stanford.nlp.pipeline.*;
^
NERPipelineDemo.java:41: error: cannot find symbol
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
    ^
  symbol:   class StanfordCoreNLP
  location: class NERPipelineDemo
NERPipelineDemo.java:41: error: cannot find symbol
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
                                   ^
  symbol:   class StanfordCoreNLP
  location: class NERPipelineDemo
NERPipelineDemo.java:43: error: cannot find symbol
    CoreDocument doc = new CoreDocument("Joe Smith is from Seattle.");
    ^
  symbol:   class CoreDocument
  location: class NERPipelineDemo
NERPipelineDemo.java:43: error: cannot find symbol
    CoreDocument doc = new CoreDocument("Joe Smith is from Seattle.");
                           ^
  symbol:   class CoreDocument
  location: class NERPipelineDemo
NERPipelineDemo.java:49: error: cannot find symbol
    for (CoreEntityMention em : doc.entityMentions())
         ^
  symbol:   class CoreEntityMention
  location: class NERPipelineDemo
6 errors

就在那时,我尝试添加 //进口stanford-english-corenlp-2018-10-05-models.*//添加到NERPipelineDemo。爪哇

然后它在这个问题的主题上出现了错误:

C:\Users\Michele\Documents>javac NERPipelineDemo.java
NERPipelineDemo.java:3: error: '.' expected
import stanford-english-corenlp-2018-10-05-models.*;
               ^
NERPipelineDemo.java:3: error: ';' expected
import stanford-english-corenlp-2018-10-05-models.*;
                ^
NERPipelineDemo.java:3: error: class, interface, or enum expected
import stanford-english-corenlp-2018-10-05-models.*;
                       ^
NERPipelineDemo.java:3: error: class, interface, or enum expected
import stanford-english-corenlp-2018-10-05-models.*;
                        ^
4 errors

然后我想我没有正确使用jar,所以我尝试了在我的文档命令行的stackoverflow链接上推荐的方法

java -cp .;stanford-english-corenlp-2018-10-05-models.jar edu.stanford.nlp.pipeline 

得到

Error: Could not find or load main class edu.stanford.nlp.pipeline

我肯定我不确定使用jar文件和/或使用java的过程是什么,因为我已经很生疏了,而且这里有很多新的api用法我还不习惯

我只是尝试向斯坦福图书馆提供一个字符串,以将nlp处理后的字符串作为可用输出(NERPipelineDemo、令牌和ner标记)

***更新3(响应后) 我删除了添加到NERPipelineDemo的导入。java,并使用和get错误编译,并更正了Update2中的命令:

javac -cp .;stanford-english-corenlp-2018-10-05-models.jar NERPipelineDemo.java
NERPipelineDemo.java:4: error: package edu.stanford.nlp.pipeline does not exist
import edu.stanford.nlp.pipeline.*;
^
NERPipelineDemo.java:41: error: cannot find symbol
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
    ^
  symbol:   class StanfordCoreNLP
  location: class NERPipelineDemo
NERPipelineDemo.java:41: error: cannot find symbol
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
                                   ^
  symbol:   class StanfordCoreNLP
  location: class NERPipelineDemo
NERPipelineDemo.java:43: error: cannot find symbol
    CoreDocument doc = new CoreDocument("Joe Smith is from Seattle.");
    ^
  symbol:   class CoreDocument
  location: class NERPipelineDemo
NERPipelineDemo.java:43: error: cannot find symbol
    CoreDocument doc = new CoreDocument("Joe Smith is from Seattle.");
                           ^
  symbol:   class CoreDocument
  location: class NERPipelineDemo
NERPipelineDemo.java:49: error: cannot find symbol
    for (CoreEntityMention em : doc.entityMentions())
         ^
  symbol:   class CoreEntityMention
  location: class NERPipelineDemo
6 errors

我不知道该怎么办。我不习惯使用api。我需要为该jar文件添加多个cp吗?一个cp不应该涵盖一切吗


共 (0) 个答案