我使用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)来准确预测。
非常感谢任何有助于实现这一目标的帮助或指示。
答案 0 :(得分:0)
您需要一个等效的令牌生成器,管理词汇表并进行矢量化处理,以便预处理文本数据并提供模型。您可以使用Java Regex轻松地创建一个模仿Python的令牌生成器。您还可以检查Stanford NLP Group software in Java和Apache OpenNLP。
对于矢量化,请检查Deeplearning4J的DataVec,矢量化和ETL(提取转换负载)Java库。也许更有趣,请查看Deeplearning4J NLP Functionality。
答案 1 :(得分:0)
另一种方法可以是使用Python(使用Flask或其他Python网络框架)创建分类器网络服务,并公开对该网络服务的调用,以与基于Java的网络应用交换JSON / XML数据。