如何在 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
当我创建 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