如何在android studio中对输入文本进行标记化处理,以便在NLP模型中进行处理?

问题描述 投票:1回答:1

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

android tensorflow tensorflow2.0 tf.keras tensorflow-lite
1个回答
1
投票

您需要将标记化的词汇从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>.

  • 将用户输入的String进行标记化。
  • 接下来,在Hashmap中寻找每个单词的索引。
  • 将这些整数存储在一个 int[] 这就是我们模型的输入。

我已经在这篇博客中讨论了整个过程-&gt。用TensorFlow在Android中进行文本分类


0
投票

在 keras 中发现了一个新层,叫做 tensorflow.keras.layer.experimental.preprocessing.TextVectorization。

这个图层完成了文本标记化的过程。

这个层可以添加到模型中,并在导入模型时得到导入。这在Tensorflow Dev summit 2020中展示的NLP模型程序中使用过。

演讲链接。https:/www.youtube.comwatch?v=aNrqaOAt5P4&list=LLyOAs3oTHjtkbQ9pqG0MYIQ&index=5&t=616s。

© www.soinside.com 2019 - 2024. All rights reserved.