如何使用Tensorflow和Python将伊利亚特数据集中的分词转换为整数?


Tensorflow 是 Google 提供的一个机器学习框架。它是一个开源框架,与 Python 结合使用,用于实现算法、深度学习应用程序等等。它被用于研究和生产目的。

可以使用以下代码行在 Windows 上安装“tensorflow”包:

pip install tensorflow

张量是 TensorFlow 中使用的数据结构。它有助于连接流图中的边。此流图称为“数据流图”。张量只不过是多维数组或列表。

它们可以使用三个主要属性进行识别:

  • - 它说明张量的维度。可以理解为张量的阶数或已定义张量的维度数。

  • 类型 - 它说明与张量元素相关联的数据类型。它可以是一维、二维或 n 维张量。

  • 形状 - 它是由行数和列数共同组成的。

我们将使用伊利亚特数据集,其中包含 William Cowper、Edward(Derby 伯爵)和 Samuel Butler 三个译本的文本数据。该模型经过训练,可以在给出一行文本时识别翻译者。所使用的文本文件已进行预处理。这包括删除文档标题和页脚、行号和章节标题。

我们使用 Google Colaboratory 来运行以下代码。Google Colab 或 Colaboratory 帮助在浏览器上运行 Python 代码,无需任何配置,并且可以免费访问 GPU(图形处理单元)。Colaboratory 建立在 Jupyter Notebook 之上。

示例

以下是代码片段:

keys = vocab
values = range(2, len(vocab) + 2) # reserve 0 for padding, 1 for OOV
print("Map the tokens to integers")
init = tf.lookup.KeyValueTensorInitializer(
   keys, values, key_dtype=tf.string, value_dtype=tf.int64)
num_oov_buckets = 1
vocab_table = tf.lookup.StaticVocabularyTable(init, num_oov_buckets)
print("A function has been defined to standardize, tokenize and vectorize the dataset using
tokenizer and lookup table")
def preprocess_text(text, label):
   standardized = tf_text.case_fold_utf8(text)
   tokenized = tokenizer.tokenize(standardized)
   vectorized = vocab_table.lookup(tokenized)
   return vectorized, label

代码来源 - https://tensorflowcn.cn/tutorials/load_data/text

输出

Map the tokens to integers
A function has been defined to standardize, tokenize and vectorize the dataset using tokenizer
and lookup table

解释

  • 词汇表集用于创建 StaticVocabularyTable。

  • 标记被映射到 [2, vocab_size + 2] 范围内的整数。

  • 数字 0 用于表示填充,数字 1 用于表示词汇表外 (OOV) 标记。

更新于:2021年1月19日

98 次浏览

开启您的职业生涯

完成课程,获得认证

开始学习
广告