stanford corenlp java类jar文件编译缺少'。'

时间:2020-01-11 00:26:49

标签: java windows 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.jar。

我完全按照所示从NER网站复制了示例代码。

有什么想法吗?

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

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

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

** Update2(项目构建/设置信息): 在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.java

然后在该问题的主题中出现错误:

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,所以我尝试了Documents命令行中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。 / p>

我只是试图将一个字符串输入斯坦福大学图书馆,以获取经过nlp处理的字符串作为可用输出(NERPipelineDemo,令牌和ner标签)。

*** Update3(响应后) 我将添加的导入内容删除到NERPipelineDemo.java并进行编译,并得到错误,并更正了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 个答案:

没有答案
相关问题