如何使用 Tensorflow 和 Python 获取句子中每个单词的代码点?

pythonserver side programmingprogrammingtensorflow

要获取句子中每个单词的代码点,首先检查句子是否是单词的开头。然后,检查字符索引是否从所有句子的扁平字符列表中的特定单词索引开始。验证后,使用以下方法获取每个单词中每个字符的代码点。

脚本标识符有助于确定单词边界和应添加的位置。单词边界添加到句子的开头以及每个脚本与前一个字符不同的字符。起始偏移量可用于构建 RaggedTensor。这个 RaggedTensor 将包含所有批次的单词列表

阅读更多: 什么是 TensorFlow,以及 Keras 如何与 TensorFlow 配合使用来创建神经网络?

让我们了解如何使用 Python 表示 Unicode 字符串,并使用 Unicode 等效项来操作这些字符串。首先,我们在标准字符串操作的 Unicode 等效项的帮助下,根据脚本检测将 Unicode 字符串分离为标记。

我们正在使用 Google Colaboratory 来运行以下代码。 Google Colab 或 Colaboratory 有助于通过浏览器运行 Python 代码,并且不需要零配置并可以自由访问 GPU(图形处理单元)。 Colaboratory 已在 Jupyter Notebook 上构建。

print("检查句子是否是单词的开头")
sentence_char_starts_word = tf.concat(
   [tf.fill([sentence_char_script.nrows(), 1], True),
    tf.not_equal(sentence_char_script[:, 1:], sentence_char_script[:, :-1])],
   axis=1)
print("检查字符索引是否从所有句子的扁平字符列表中的单词特定索引开始")
word_starts = tf.squeeze(tf.where(sentence_char_starts_word.values), axis=1)
print(word_starts)
print("获取每个单词中每个字符的代码点")
word_char_codepoint = tf.RaggedTensor.from_row_starts(
   values=sentence_char_codepoint.values,
   row_starts=word_starts)
print(word_char_codepoint)

代码来源:https://www.tensorflow.org/tutorials/load_data/unicode

输出

检查句子是否是单词的开头
检查字符索引是否从所有句子的扁平字符列表中的单词特定索引开始
tf.Tensor([ 0   5   7 12 13 15], shape=(6,), dtype=int64)
获取每个单词中每个字符的代码点
<tf.RaggedTensor [[72, 101, 108, 108, 111], [44, 32], [116, 104, 101, 114, 101], [46], [19990, 30028], [12371, 12435, 12395, 12385, 12399]]>

解释

  • 脚本标识符有助于确定应在何处添加单词边界。
  • 在每个句子的开头以及每个脚本与前一个字符不同的字符处添加单词边界。
  • 接下来,这些起始偏移量可用于构建 RaggedTensor。
  • 此 RaggedTensor 包含来自所有批次的单词列表

相关文章