私はStanford-NERでカスタムNERモデルを訓練しました。プロパティファイルを作成し、javaコマンドで-serverProperties
引数を使用してサーバを起動しました(私の別の質問に続き、hereと表示されます)。カスタムNERモデルがロードされますが、サーバがカスタムを読み込もうとするとモデル、それがこのエラーで失敗します。次のようにエラーとjava.io.EOFException: Unexpected end of ZLIB input stream
NER Classifierを読み込む際のエラー - ZLIB入力ストリームの予期しない終了
stderr.log
出力は次のようになります。
[main] INFO CoreNLP - --- StanfordCoreNLPServer#main() called ---
[main] INFO CoreNLP - setting default constituency parser
[main] INFO CoreNLP - warning: cannot find edu/stanford/nlp/models/srparser/englishSR.ser.gz
[main] INFO CoreNLP - using: edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz instead
[main] INFO CoreNLP - to use shift reduce parser download English models jar from:
[main] INFO CoreNLP - http://stanfordnlp.github.io/CoreNLP/download.html
[main] INFO CoreNLP - Threads: 4
[main] INFO CoreNLP - Liveness server started at /0.0.0.0:9000
[main] INFO CoreNLP - Starting server...
[main] INFO CoreNLP - StanfordCoreNLPServer listening at /0.0.0.0:80
[pool-1-thread-3] INFO CoreNLP - [/127.0.0.1:35546] API call w/annotators tokenize,ssplit,pos,lemma,depparse,natlog,ner,openie
[pool-1-thread-3] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator tokenize
[pool-1-thread-3] INFO edu.stanford.nlp.pipeline.TokenizerAnnotator - No tokenizer type provided. Defaulting to PTBTokenizer.
[pool-1-thread-3] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator ssplit
[pool-1-thread-3] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator pos
[pool-1-thread-3] INFO edu.stanford.nlp.tagger.maxent.MaxentTagger - Loading POS tagger from edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger ... done [0.7 sec].
[pool-1-thread-3] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator lemma
[pool-1-thread-3] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator depparse
[pool-1-thread-3] INFO edu.stanford.nlp.parser.nndep.DependencyParser - Loading depparse model file: edu/stanford/nlp/models/parser/nndep/english_UD.gz ... [pool-1-thread-3] INFO edu.stanford.nlp.parser.nndep.Classifier - PreComputed 99996, Elapsed Time: 12.297 (s)
[pool-1-thread-3] INFO edu.stanford.nlp.parser.nndep.DependencyParser - Initializing dependency parser ... done [13.6 sec].
[pool-1-thread-3] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator natlog
[pool-1-thread-3] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator ner
java.io.EOFException: Unexpected end of ZLIB input stream
at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:240
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:117)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2620)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2636)
at java.io.ObjectInputStream$BlockDataInputStream.readDoubles(ObjectInputStream.java:3333)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1920)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1529)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1933)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1529)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
at edu.stanford.nlp.ie.crf.CRFClassifier.loadClassifier(CRFClassifier.java:2650)
at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1462)
at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1494)
at edu.stanford.nlp.ie.crf.CRFClassifier.getClassifier(CRFClassifier.java:2963)
at edu.stanford.nlp.ie.ClassifierCombiner.loadClassifierFromPath(ClassifierCombiner.java:282)
at edu.stanford.nlp.ie.ClassifierCombiner.loadClassifiers(ClassifierCombiner.java:266)
at edu.stanford.nlp.ie.ClassifierCombiner.<init>(ClassifierCombiner.java:141)
at edu.stanford.nlp.ie.NERClassifierCombiner.<init>(NERClassifierCombiner.java:128)
at edu.stanford.nlp.pipeline.AnnotatorImplementations.ner(AnnotatorImplementations.java:121)
at edu.stanford.nlp.pipeline.AnnotatorFactories$6.create(AnnotatorFactories.java:273)
at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:152)
at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:451)
at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:154)
at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:145)
at edu.stanford.nlp.pipeline.StanfordCoreNLPServer.mkStanfordCoreNLP(StanfordCoreNLPServer.java:273)
at edu.stanford.nlp.pipeline.StanfordCoreNLPServer.access$500(StanfordCoreNLPServer.java:50)
at edu.stanford.nlp.pipeline.StanfordCoreNLPServer$CoreNLPHandler.handle(StanfordCoreNLPServer.java:583)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:82)
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:675)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
私はこのエラーをGoogleで検索していると私は読んだのほとんどが2007-からのJavaの問題に関してです2010年のEOFExceptionは "a自発的に "スローされる。この情報はhereです。
"新しいDeflater(Deflater.BEST_COMPRESSION、true)を介してgzipを使用すると、いくつかのファイルでは、EOFExceptionがスローされますが、ファイルが正しくても、EOFExceptionが一貫してスローされますいくつかのファイルについてはスローされ、それ以外の場合にはスローされます。
gzipの出力ストリームを閉じる必要があることをこのエラー状態に関して他の人の質問に回答していますか?それが何を意味しているのかわからず、Stanford-NERが私のためにgzipファイルを作成するソフトウェアなので、私がそのアドバイスをどのように実行するのか分からない。
質問:このエラーを解決するためにどのような処置を取ることができますか?私はこれが過去に他人に起こったことを期待しています。また、@ StanfordNLPHelpから、過去に同様の問題が発生しているかどうか、何か処理が行われているかどうかなどのフィードバックを探しています。この問題を解消するためにCoreNLPソフトウェアに行われています。 CoreNLPのソリューションがある場合、どのファイルを変更する必要がありますか、これらのファイルはCoreNLPフレームワーク内にありますか、どのような変更が必要ですか?
情報を追加(PER @StanfordNLPHelpのコメント):
私のモデルでは、方向を使用して訓練されたがhereを見つけました。モデルを訓練するために、私は約90の文書からのテキストを含む指示に概説されるようにTSVを使用した。私はこれが訓練するための相当量のデータではないことを知っていますが、私たちはテストの段階にあり、より多くのデータを取得する際にモデルを改善します。
このTSVファイルとStandford-NERソフトウェアを使用して、以下のコマンドを実行しました。
java -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -prop austen.prop
私はその後、私のモデルが構築されていたたとさえロードし、成功裏にスタンフォード-NERのソフトウェアが付属していますNERのGUIを使用してテキストの大規模コーパスにタグを付けることができました。
なぜ私はモデルを動作させることができませんでしたが、CoreNLPの標準である「3クラスモデル」へのファイルパスでserver.propertiesファイルを更新しようとしました。やはり同じエラーで失敗しました。
私のカスタムモデルと3クラスモデルの両方がStanford-NERソフトウェアで動作するが、読み込みに失敗するという事実は、私のカスタムモデルが問題ではなく、CoreNLPソフトウェアのロード方法に問題があると信じているこれらのモデルは-serverProperties
引数で指定します。それとも私がまったく気付いていないものかもしれません。
NERモデルのトレーニングに使用したプロパティファイルは、列車ファイルの変更された方向のオンと似ていて、出力ファイル名が変更されました。それは次のようになります。
# location of the training file
trainFile = custom-model-trainingfile.tsv
# location where you would like to save (serialize) your
# classifier; adding .gz at the end automatically gzips the file,
# making it smaller, and faster to load
serializeTo = custome-ner-model.ser.gz
# structure of your training file; this tells the classifier that
# the word is in column 0 and the correct answer is in column 1
map = word=0,answer=1
# This specifies the order of the CRF: order 1 means that features
# apply at most to a class pair of previous class and current class
# or current class and next class.
maxLeft=1
# these are the features we'd like to train with
# some are discussed below, the rest can be
# understood by looking at NERFeatureFactory
useClassFeature=true
useWord=true
# word character ngrams will be included up to length 6 as prefixes
# and suffixes only
useNGrams=true
noMidNGrams=true
maxNGramLeng=6
usePrev=true
useNext=true
useDisjunctive=true
useSequences=true
usePrevSequences=true
# the last 4 properties deal with word shape features
useTypeSeqs=true
useTypeSeqs2=true
useTypeySequences=true
wordShape=chris2useLC
マイserver.propertiesファイルはner.model = /path/to/custom_model.ser.gz
のみ1行が含まれて私はまた、起動スクリプト内の$ CLASSPATH変数に/path/to/custom_model
を追加しました。 CLASSPATH="$CLASSPATH:$JAR
をCLASSPATH="$CLASSPATH:$JAR:/path/to/custom_model.ser.gz
に変更しました。私はZLIBエラーが最初に表示されるので、これが必要なステップかどうかはわかりません。これを完全性のために含めたかっただけです。
gunzip custom_model.ser.gz
コマンドを使用して私のカスタムモデルを「ガンゼット」しようとしましたが、モデルを読み込もうとした時と同様のエラーが発生しました。それはgzip: custom_model.ser.gz: unexpected end of file
@ChristopherManningあなたは明らかにCoreNLPについてかなり知っていますが、私はあなたがエラー関連の質問に答える傾向があることを知りました。あなたはこれを前に見たことがありますか? –
トレーニングを受けたモデルを実際に正常に実行したことがありますか?新しいnerモデルをどのように訓練したかについていくつかの詳細を説明してください。たとえば、コマンドとプロパティファイルが使用されましたか?このようなエラーが発生した場合、訓練されたモデルファイル自体に何か問題があると思います。 – StanfordNLPHelp
また、コマンドラインでファイルをgunzip'ingしようとしましたか?私はファイルをgzipして作業しなければならないとは思わない。したがって、gzip形式でないバージョンを読み込めます。 – StanfordNLPHelp