如何在android studio中标记输入文本以在NLP模型中处理?

如何在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

当我创建NLP模型时,我使用keras标记器来标记我的训练数据。因此,训练数据中的每个单词都有一个与之相关联的数字。现在我想在android应用程序中运行该模型。因此,我将模型转换为tflite格式。 现在在我的应用程序中,当用户给我一个文本输入时,我应该使用我用于训练数据的相同标记将其转换为数字数组。我无法这样做,因为tflite只包含模型,而不包含标记器。
如何做到这一点?

您需要将标记化单词的词汇表从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模型计划中使用

演讲的链接: