如何在 Tensorflow 中表示和操作 Unicode 字符串?

pythonserver side programmingprogrammingtensorflow

Unicode 字符串默认采用 utf-8 编码。可以使用 Tensorflow 模块中的 ‘constant’ 方法将 Unicode 字符串表示为 UTF-8 编码的标量值。可以使用 Tensorflow 模块中的 ‘encode’ 方法将 Unicode 字符串表示为 UTF-16 编码的标量。

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

处理自然语言的模型可以处理具有不同字符集的不同语言。Unicode 被视为标准编码系统,用于表示几乎所有语言的字符。每个字符都借助一个介于 0 和 0x10FFFF 之间的唯一整数代码点进行编码。 Unicode 字符串是零个或多个代码值的序列。

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

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

import tensorflow as tf
print("定义一个常量")
tf.constant(u"谢谢😊")
print("张量的形状为")
tf.constant([u"您是",u"欢迎!"]).shape
print("Unicode 字符串表示为 UTF-8 编码标量")
text_utf8 = tf.constant(u"语言处理")
print(text_utf8)
print("Unicode 字符串表示为 UTF-16 编码标量")
text_utf16be = tf.constant(u"语言处理".encode("UTF-16-BE"))
print(text_utf16be)
print("Unicode 字符串表示为 Unicode 代码点向量")
text_chars = tf.constant([ord(char) for char in u"语言处理"])
print(text_chars)

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

输出

定义一个常量
张量的形状为
Unicode 字符串表示为 UTF-8 编码标量
tf.Tensor(b'\xe8\xaf\xad\xe8\xa8\x80\xe5\xa4\x84\xe7\x90\x86', shape=(), dtype=string)
Unicode 字符串表示为 UTF-16 编码标量
tf.Tensor(b'\x8b\xed\x8a\x00Y\x04t\x06', shape=(), dtype=string)
Unicode 字符串表示为 Unicode 代码点向量
tf.Tensor([35821 35328 22788 29702], shape=(4,), dtype=int32)

解释

  • TensorFlow tf.string 是一个基本的dtype。
  • 它允许用户构建字节字符串的张量。
  • Unicode 字符串默认采用 utf-8 编码。
  • tf.string 张量能够保存不同长度的字节字符串,因为字节字符串被​​视为原子单位。
  • 字符串长度不包含在张量维度中。
  • 当使用 Python 构造字符串时,unicode 处理在 v2 和 v3 之间会发生变化。在 v2 中,unicode 字符串用"u"表示前缀。
  • 在 v3 中,字符串默认采用 unicode 编码。
  • 在 TensorFlow 中,有两种表示 Unicode 字符串的标准方法:
  • 字符串标量:使用已知字符编码对代码点序列进行编码。
  • int32 向量:每个位置都包含单个代码点的方法。

相关文章