6

Stanford CoreNLP ツールを使用してフランス語のテキストを分析しようとしています (StanfordNLP ソフトウェアを使用するのは初めてです)

そのために、v3.6.0 jar と対応するフランス語モデルをダウンロードしました。

次に、サーバーを次のように実行します。

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)
    ...

ここで提案された解決策は、コードとモデルのバージョンが異なることを示唆していますが、同じページからそれらをダウンロードしたため (両方とも名前に同じバージョン番号が含まれています)、それらが同じであると確信しています。

私が間違っていることに関する他のヒントはありますか?

(また、私は Java の専門家ではないので、愚かな手順を忘れていたのかもしれません...)

4

2 に答える 2

10

わかりました、多くの読み取りと試行の失敗の後、それを機能させる方法を見つけました(v3.6.0の場合)。他の誰かに興味がある場合は、詳細を以下に示します。

  1. http://stanfordnlp.github.io/CoreNLP/index.html#downloadからコードとフランス語モデルをダウンロードします。コードを解凍し.zip、フランス語のモデル.jarをそのディレクトリにコピーします (英語のモデルは削除しないでください。とにかく名前が異なります)。

  2. そのディレクトリに cd してから、次のようにサーバーを実行します。

    java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer
    

-prop(ここでフラグが役に立たないのは残念です)

  1. にリストされているプロパティを繰り返して 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 サポートも同様))

于 2016-06-16T10:14:27.840 に答える