如何在android studio中标记输入文本以在NLP模型中处理?
当我创建NLP模型时,我使用keras标记器来标记我的训练数据。因此,训练数据中的每个单词都有一个与之相关联的数字。现在我想在android应用程序中运行该模型。因此,我将模型转换为tflite格式。 现在在我的应用程序中,当用户给我一个文本输入时,我应该使用我用于训练数据的相同标记将其转换为数字数组。我无法这样做,因为tflite只包含模型,而不包含标记器。如何在android studio中标记输入文本以在NLP模型中处理?,android,tensorflow,tensorflow2.0,tf.keras,tensorflow-lite,Android,Tensorflow,Tensorflow2.0,Tf.keras,Tensorflow Lite,当我创建NLP模型时,我使用keras标记器来标记我的训练数据。因此,训练数据中的每个单词都有一个与之相关联的数字。现在我想在android应用程序中运行该模型。因此,我将模型转换为tflite格式。 现在在我的应用程序中,当用户给我一个文本输入时,我应该使用我用于训练数据的相同标记将其转换为数字数组。我无法这样做,因为tflite只包含模型,而不包含标记器。 如何做到这一点?您需要将标记化单词的词汇表从Python迁移到Android。使用tf.keras.preprocessing.text
如何做到这一点?您需要将标记化单词的词汇表从Python迁移到Android。使用
tf.keras.preprocessing.text.Tokenizer.word\u index
属性。这是(单词,索引)
的dict
,您需要将其导出为JSON文件
import json
with open( 'android/word_dict.json' , 'w' ) as file:
json.dump( tokenizer.word_index , file )
现在,我们在Android中解析JSON文件并创建一个Hashmap
- 从用户处获取输入字符串并将其标记化
- 接下来,查找Hashmap中使用的每个单词的索引
- 将这些整数存储在
中,这是我们模型的输入int[]
我在这个博客中讨论了整个过程->在keras中发现了一个新的层,称为tensorflow.keras.layers.experimental.preprocessing.TextVectoriation 该层执行文本标记化过程 该层可以添加到模型中,并在导入模型时导入。这在Tensorflow Dev summit 2020中介绍的NLP模型计划中使用 演讲的链接: