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

How to tokenize input text in android studio to process in NLP model?

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

您需要将标记化单词的词汇表从 Python 迁移到 Android。使用 tf.keras.preprocessing.text.Tokenizer.word_index 属性。这是 ( word , index )dict,您需要将其导出为 JSON 文件。

import json

with open( 'android/word_dict.json' , 'w' ) as file:
    json.dump( tokenizer.word_index , file )

现在,我们解析 Android 中的 JSON 文件并创建一个 Hashmap<String,Integer>

  • 从用户那里获取输入字符串并将其标记化。
  • 接下来,查找哈希图中使用的每个单词的索引。
  • 将这些整数存储在 int[] 中,这是我们模型的输入。

我已经在这个博客中讨论了整个过程 -> Text Classification in Android with TensorFlow

在 keras 中发现了一个名为 tensorflow.keras.layers.experimental.preprocessing.TextVectorization 的新层。

该层执行文本标记化过程。

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

Link 对谈: https://www.youtube.com/watch?v=aNrqaOAt5P4&list=LLyOAs3oTHjtkbQ9pqG0MYIQ&index=5&t=616s