当前位置: 首页 > 知识库问答 >
问题:

Stanford NLP服务器“无法处理传入的注释”(德语)

寿卜鹰
2023-03-14

我想使用斯坦福大学的NLP服务器与德语文本。我测试了http://corenlp.run/,它在德语中运行良好。如果我在自己的机器上用

java -mx4g -cp “*” edu.stanford.nlp.pipeline.StanfordCoreNLPServer [port] [超时]

它只适用于英语。如果我选择德语,我会收到错误消息

无法处理传入的注释

命令行显示:

java.util.Properties.load(Properties.java:341)java.util.Properties$LineReader.readLine(Properties.java:434(StanfordCoreNLPServer.java:540),位于com.sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:79),位于sun.net.httpser.AuthFilter.doFilter(AuthFisher.java:33),位于com/sun.net:httpserver.Filter$Chain.doFisher(Filter.java:22),位于sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647)位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool Executor.java:1142

我想我得加上德语。jar文件在某个地方,但是我怎么也找不到,在哪里?

共有2个答案

从焱
2023-03-14

3.7.0目前处于测试模式。

因此,请确保重新下载3.7.0的最新版本。

如果使用以下命令启动服务器:

java -Xmx8g edu.stanford.nlp.pipeline.StanfordCoreNLPServer

注意:你需要所有的罐子

stanford-corenlp-full-2016-10-31/*

stanford-german-corenlp-models-current.jar

以使该命令生效。在德国jar中有一些路径问题,所以也重新下载它,因为我现在刚刚修复了它。

使用以下命令发出请求:

wget --post-data '<insert German text here...>' 'localhost:9000/?properties={"annotators":"tokenize,ssplit,pos,ner,parse","pipelineLanguage":"de","outputFormat":"json"}' -O -

它应该工作得很好!

注意:要将jar放在CLASSPATH中,可以发出以下命令:

export CLASSPATH=/path/to/stanford-corenlp-full-2016-10-31/*:/path/to/stanford-german-corenlp-models-current.jar

(将/path/to替换为计算机上这些资源所在的位置)

或者,当您调用java时,您可以指定一个类路径,如下所示:

java -cp "/path/to/stanford-corenlp-full-2016-10-31/*:/path/to/stanford-german-corenlp-models-current.jar" ...

服务器在加载德语属性的请求中查看“管道语言”属性,因此将“-prop”与 edu.stanford.nlp.管道一起使用将不起作用。

姚伟
2023-03-14

好吧,我解压缩了德语.jar文件,并在那里使用了属性文件,它像这样锁定。

annotators = tokenize, ssplit, pos, ner, parse

tokenize.language = de

pos.model = edu/stanford/nlp/models/pos-tagger/german/german-hgc.tagger

ner.model = edu/stanford/nlp/models/ner/german.conll.hgc_175m_600.crf.ser.gz
ner.applyNumericClassifiers = false
ner.useSUTime = false

parse.model = edu/stanford/nlp/models/lexparser/germanFactored.ser.gz

# depparse
depparse.model    = edu/stanford/nlp/models/parser/nndep/UD_German.gz
depparse.language = german

我这样启动服务器

java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -props StanfordCoreNLP-german.properties

但德语仍然不起作用。

我找不到如何处理“*”。我也试图添加

<dependency>
    <groupId>edu.stanford.nlp</groupId>
    <artifactId>stanford-corenlp</artifactId>
    <version>3.7.0</version>
    <classifier>models-german</classifier>
</dependency>

到pom.xml

 类似资料:
  • 我的gradle构建: 处理器不在单独的模块中。 处理器不做任何事情,在< code>#process中,它只是抛出,看看它是否在工作。 但绝对没有发生任何事情。没有错误,什么都没有。我怎样才能使它工作?

  • 我正在使用注释处理器来处理方法参数的注释。 用于参数的注释类型有一个注释@参数 现在,当注释处理器运行时,我想检查参数注释()是否有参数注释。我通过执行以下代码来实现这一点。 由于某种原因,arg始终为空。是否有注释未返回的原因?

  • 需要注释处理器的帮助。我创建了一个简单的注释处理器,它使用@autoservice注释来检查注释的字段是否为最终字段。但它没有显示任何编译时错误。这是我的配置 注释: 注释处理器: pom文件: 测试文件:

  • 但当我尝试构建以下类时,它表示找不到AbstractProcessor类: 如何让它识别这个类? 下面是确切的错误: 我的导入内容如下所示: 这是我的java版本:

  • 我正在使用注释处理来生成一些类...我有两个模块,处理器本身和使用它的“客户端”模块。我想通过客户端向处理器传递一个参数,我可以这样做 如何在处理器端检索此参数?

  • 我写了一个注释处理器,我想把一些信息写入文本文件。在我的类中,我扩展了并重写了 和 方法。 在方法中,我创建了一个新的(例如:) 我使用它在方法中将一些文本打印到一个文件中。