运行 带有法国模型的 Stanford corenlp 服务器
Running Stanford corenlp server with French models
我正在尝试使用 Stanford CoreNLP 工具分析一些法语文本(这是我第一次尝试使用任何 StanfordNLP 软件)
为此,我已经下载了 v3.6.0 jar 和相应的 french models。
然后我 运行 服务器:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer
如本 中所述,我将 API 调用为:
wget --post-data 'Bonjour le monde.' 'localhost:9000/?properties={"parse.model":"edu/stanford/nlp/models/parser/nndep/UD_French.gz", "annotators": "parse", "outputFormat": "json"}' -O -
但我收到以下日志 + 错误:
[pool-1-thread-1] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP
Adding annotator tokenize
[pool-1-thread-1] INFO edu.stanford.nlp.pipeline.TokenizerAnnotator - TokenizerAnnotator: No tokenizer type provided. Defaulting to PTBTokenizer.
[pool-1-thread-1] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator ssplit
[pool-1-thread-1] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator parse
[pool-1-thread-1] INFO edu.stanford.nlp.parser.common.ParserGrammar - Loading parser from serialized file edu/stanford/nlp/models/parser/nndep/UD_French.gz ...
edu.stanford.nlp.io.RuntimeIOException: java.io.StreamCorruptedException: invalid stream header: 64696374
at edu.stanford.nlp.parser.common.ParserGrammar.loadModel(ParserGrammar.java:188)
at edu.stanford.nlp.pipeline.ParserAnnotator.loadModel(ParserAnnotator.java:212)
at edu.stanford.nlp.pipeline.ParserAnnotator.<init>(ParserAnnotator.java:115)
...
提出的解决方案 here 表明代码和模型版本不同,但我从同一页面下载了它们(它们的名称中都有相同的版本号)所以我很确定它们是相同的。
关于我做错了什么的任何其他提示?
(我还要说明一下,我不是 Java 专家,所以也许我忘记了一个愚蠢的步骤...)
好的,经过大量的阅读和不成功的尝试,我找到了一种让它工作的方法(对于 v3.6.0)。以下是详细信息,如果其他人可能对它们感兴趣的话:
从http://stanfordnlp.github.io/CoreNLP/index.html#download下载代码和法语模型。解压缩代码 .zip
并将法语模型 .jar
复制到该目录(不要删除英语模型,它们有不同的名称)
cd 到该目录,然后 运行 服务器:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer
(遗憾的是-prop
标志在这里没有帮助)
调用 API 重复 StanfordCoreNLP-french.properties
中列出的属性:
wget --header="Content-Type: text/plain; charset=UTF-8"
--post-data 'Bonjour le monde.'
'localhost:9000/?properties={
"annotators": "tokenize,ssplit,pos,parse",
"parse.model":"edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz",
"pos.model":"edu/stanford/nlp/models/pos-tagger/french/french.tagger",
"tokenize.language":"fr",
"outputFormat": "json"}'
-O -
最终使用法国模型给出了 200 个响应!
(注意:不知道如何让它与 UI 一起工作(同样支持 utf-8))
作为对某些人可能有用的补充,这是德语的完整属性文件的样子:
# annotators
annotators = tokenize, ssplit, mwt, pos, ner, depparse
# tokenize
tokenize.language = de
tokenize.postProcessor = edu.stanford.nlp.international.german.process.GermanTokenizerPostProcessor
# mwt
mwt.mappingFile = edu/stanford/nlp/models/mwt/german/german-mwt.tsv
# pos
pos.model = edu/stanford/nlp/models/pos-tagger/german-ud.tagger
# ner
ner.model = edu/stanford/nlp/models/ner/german.distsim.crf.ser.gz
ner.applyNumericClassifiers = false
ner.applyFineGrained = false
ner.useSUTime = false
# parse
parse.model = edu/stanford/nlp/models/srparser/germanSR.beam.ser.gz
# depparse
depparse.model = edu/stanford/nlp/models/parser/nndep/UD_German.gz
Arabic, Chinese, French, German and Spanish can all be found in the CoreNLP github repository 的完整 属性 个文件。
我正在尝试使用 Stanford CoreNLP 工具分析一些法语文本(这是我第一次尝试使用任何 StanfordNLP 软件)
为此,我已经下载了 v3.6.0 jar 和相应的 french models。
然后我 运行 服务器:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer
如本
wget --post-data 'Bonjour le monde.' 'localhost:9000/?properties={"parse.model":"edu/stanford/nlp/models/parser/nndep/UD_French.gz", "annotators": "parse", "outputFormat": "json"}' -O -
但我收到以下日志 + 错误:
[pool-1-thread-1] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP
Adding annotator tokenize
[pool-1-thread-1] INFO edu.stanford.nlp.pipeline.TokenizerAnnotator - TokenizerAnnotator: No tokenizer type provided. Defaulting to PTBTokenizer.
[pool-1-thread-1] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator ssplit
[pool-1-thread-1] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator parse
[pool-1-thread-1] INFO edu.stanford.nlp.parser.common.ParserGrammar - Loading parser from serialized file edu/stanford/nlp/models/parser/nndep/UD_French.gz ...
edu.stanford.nlp.io.RuntimeIOException: java.io.StreamCorruptedException: invalid stream header: 64696374
at edu.stanford.nlp.parser.common.ParserGrammar.loadModel(ParserGrammar.java:188)
at edu.stanford.nlp.pipeline.ParserAnnotator.loadModel(ParserAnnotator.java:212)
at edu.stanford.nlp.pipeline.ParserAnnotator.<init>(ParserAnnotator.java:115)
...
提出的解决方案 here 表明代码和模型版本不同,但我从同一页面下载了它们(它们的名称中都有相同的版本号)所以我很确定它们是相同的。
关于我做错了什么的任何其他提示?
(我还要说明一下,我不是 Java 专家,所以也许我忘记了一个愚蠢的步骤...)
好的,经过大量的阅读和不成功的尝试,我找到了一种让它工作的方法(对于 v3.6.0)。以下是详细信息,如果其他人可能对它们感兴趣的话:
从http://stanfordnlp.github.io/CoreNLP/index.html#download下载代码和法语模型。解压缩代码
.zip
并将法语模型.jar
复制到该目录(不要删除英语模型,它们有不同的名称)cd 到该目录,然后 运行 服务器:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer
(遗憾的是-prop
标志在这里没有帮助)
调用 API 重复
StanfordCoreNLP-french.properties
中列出的属性:wget --header="Content-Type: text/plain; charset=UTF-8" --post-data 'Bonjour le monde.' 'localhost:9000/?properties={ "annotators": "tokenize,ssplit,pos,parse", "parse.model":"edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz", "pos.model":"edu/stanford/nlp/models/pos-tagger/french/french.tagger", "tokenize.language":"fr", "outputFormat": "json"}' -O -
最终使用法国模型给出了 200 个响应!
(注意:不知道如何让它与 UI 一起工作(同样支持 utf-8))
作为对某些人可能有用的补充,这是德语的完整属性文件的样子:
# annotators
annotators = tokenize, ssplit, mwt, pos, ner, depparse
# tokenize
tokenize.language = de
tokenize.postProcessor = edu.stanford.nlp.international.german.process.GermanTokenizerPostProcessor
# mwt
mwt.mappingFile = edu/stanford/nlp/models/mwt/german/german-mwt.tsv
# pos
pos.model = edu/stanford/nlp/models/pos-tagger/german-ud.tagger
# ner
ner.model = edu/stanford/nlp/models/ner/german.distsim.crf.ser.gz
ner.applyNumericClassifiers = false
ner.applyFineGrained = false
ner.useSUTime = false
# parse
parse.model = edu/stanford/nlp/models/srparser/germanSR.beam.ser.gz
# depparse
depparse.model = edu/stanford/nlp/models/parser/nndep/UD_German.gz
Arabic, Chinese, French, German and Spanish can all be found in the CoreNLP github repository 的完整 属性 个文件。