当我创建NLP模型时,我使用了keras tokenizer来标记训练数据。因此,训练数据中的每一个单词都有一个相关的数字。现在我想在android应用中运行这个模型。所以我把模型转换成了tflite格式。现在在我的应用程序中,当用户给我一个文本输入时,我应该使用训练数据中使用的相同标记将其转换为数字数组。我无法做到这一点,因为 tflite 只包含模型,而不是 tokenizer。怎样才能做到这一点?
您需要将标记化的词汇从Python迁移到Android中。使用 tf.keras.preprocessing.text.Tokenizer.word_index
财产。这是一个 dict
的 ( word , index )
你需要将其导出为JSON文件。
import json
with open( 'android/word_dict.json' , 'w' ) as file:
json.dump( tokenizer.word_index , file )
现在,我们在Android中解析JSON文件并创建一个 Hashmap<String,Integer>
.
int[]
这就是我们模型的输入。我已经在这篇博客中讨论了整个过程->。用TensorFlow在Android中进行文本分类
在 keras 中发现了一个新层,叫做 tensorflow.keras.layer.experimental.preprocessing.TextVectorization。
这个图层完成了文本标记化的过程。
这个层可以添加到模型中,并在导入模型时得到导入。这在Tensorflow Dev summit 2020中展示的NLP模型程序中使用过。
演讲链接。https:/www.youtube.comwatch?v=aNrqaOAt5P4&list=LLyOAs3oTHjtkbQ9pqG0MYIQ&index=5&t=616s。