2017-10-03 5 views
1

私はword2vec関数でRを介してh2oクラスターにグローブをインポートしようとしています。 これについてはDoes or will H2O provide any pretrained vectors for use with h2o word2vec? 事前訓練されたグローブをダウンロードして、400B.300d.txtファイルをh2oにインポートしようとしましたが、解析に問題がありました。 次にGlove to Rを読んで、NAとして認識された1行を削除し、csvとして保存しました。 csvファイルをh2oで解析するとうまくいきましたが、それでword2vecモデルを作成できませんでした。java.lang.NullPointerExceptionword2vec関数を投げてh2oにグローブをインポートするNullPointerExceptionを投げるNullPointerExceptionを

私はh2o_3.15.0.99999バージョンを持っています。

マイコード:

h2o.init() 
glove<-h2o.importFile("glove.840B.300d.csv",header = F) 
model<-h2o.word2vec(pre_trained = glove,vec_size = 300) 

全出力:レポートの

|==========================================================================| 100% 

java.lang.NullPointerException 
java.lang.NullPointerException 
at water.AutoBuffer.tcpOpen(AutoBuffer.java:488) 
at water.AutoBuffer.sendPartial(AutoBuffer.java:679) 
at water.AutoBuffer.putA4f(AutoBuffer.java:1383) 
at hex.word2vec.Word2VecModel$Word2VecOutput$Icer.write90(Word2VecModel$Word2VecOutput$Icer.java) 
at hex.word2vec.Word2VecModel$Word2VecOutput$Icer.write(Word2VecModel$Word2VecOutput$Icer.java) 
at water.Iced.write(Iced.java:61) 
at water.AutoBuffer.put(AutoBuffer.java:771) 
at hex.Model$Icer.write86(Model$Icer.java) 
at hex.word2vec.Word2VecModel$Icer.write85(Word2VecModel$Icer.java) 
at hex.word2vec.Word2VecModel$Icer.write(Word2VecModel$Icer.java) 
at water.Iced.write(Iced.java:61) 
at water.Iced.asBytes(Iced.java:42) 
at water.Value.<init>(Value.java:348) 
at water.TAtomic.atomic(TAtomic.java:22) 
at water.Atomic.compute2(Atomic.java:56) 
at water.Atomic.fork(Atomic.java:39) 
at water.Atomic.invoke(Atomic.java:31) 
at water.Lockable.unlock(Lockable.java:181) 
at water.Lockable.unlock(Lockable.java:176) 
at hex.word2vec.Word2Vec$Word2VecDriver.computeImpl(Word2Vec.java:72) 
at hex.ModelBuilder$Driver.compute2(ModelBuilder.java:205) 
at water.H2O$H2OCountedCompleter.compute(H2O.java:1263) 
at jsr166y.CountedCompleter.exec(CountedCompleter.java:468) 
at jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:263) 
at jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:974) 
at jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1477) 
at jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104) 

答えて

1

おかげで、現在の実装は、アレイのJVMの最大の長さによって制限されています。このモデルは大きすぎると思われ、JVMの制限を超えています。

H2Oで修正する必要があります。

+0

感謝を! Google word2vecの事前学習モデルはバイナリファイルとして提供されていますが、そのようなファイルを処理する計画もありますか? –

+0

これは可能ですが、この機能のタイムラインはありません。 jiraの機能要求を記録することができれば嬉しいです:jira.h2o.ai –

1

モデルの最大配列サイズを超えている場合、回避策として少し前にトリミングすることができます。私は語彙が手袋のファイルで頻度順に並べられていると仮定しています。言い換えれば、私は最も頻繁な単語が最初に来ると仮定しており、最後の単語は一般的にあいまいであまり有用ではないと仮定しています。

など。このコードは単語の最初の50%を使用します。

h2o.init() 
glove <- h2o.importFile("glove.840B.300d.csv",header = F) 
parts <- h2o.split(glove, [0.5]) 
modelCommon <- h2o.word2vec(pre_trained = parts[[1]],vec_size = 300) 

あなたが次に何をするつもりだったかに応じて、データの後半のための第二のモデルを作ることができる:

modelObscure <- h2o.word2vec(pre_trained = parts[[2]],vec_size = 300) 
関連する問題