如何将Keras Tokenizer导入Java Deeplearning4j(DL4J)

时间:2018-05-04 06:26:23

标签: java import deep-learning keras

我使用Keras(TensorFlow上的2.1.4)实现了20个新闻组数据的文本分类。准确度为0.87。我还能够保存模型和标记化器,并在另一个python程序中使用它们来预测文本文件的类。使用下面的方法来保存模型和标记化器 -

# creates a HDF5 file 'my_model.h5'
model.model.save('my_model.h5')

# Save Tokenizer i.e. Vocabulary
with open('tokenizer.pickle', 'wb') as handle:
    pickle.dump(tokenizer, handle, protocol=pickle.HIGHEST_PROTOCOL)

如果您需要引用完整代码 - http://www.opencodez.com/python/text-classification-using-keras.htm

现在,我希望将Keras训练的模型和标记器导入 Java Web Application 。 Deeplearning4j提供了使用

加载Keras模型的选项
MultiLayerNetwork network = KerasModelImport.importKerasSequentialModelAndWeights("PATH TO YOUR H5 FILE")

但我找不到任何加载Tokenizer或其元数据的选项。

根据我的有限理解,你需要模型和保存的词汇元数据(tokenizer)来准确预测。

非常感谢任何有助于实现这一目标的帮助或指示。

2 个答案:

答案 0 :(得分:0)

您需要一个等效的令牌生成器,管理词汇表并进行矢量化处理,以便预处理文本数据并提供模型。您可以使用Java Regex轻松地创建一个模仿Python的令牌生成器。您还可以检查Stanford NLP Group software in JavaApache OpenNLP

对于矢量化,请检查Deeplearning4J的DataVec,矢量化和ETL(提取转换负载)Java库。也许更有趣,请查看Deeplearning4J NLP Functionality

答案 1 :(得分:0)

另一种方法可以是使用Python(使用Flask或其他Python网络框架)创建分类器网络服务,并公开对该网络服务的调用,以与基于Java的网络应用交换JSON / XML数据。