如何在 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 向量:每个位置都包含单个代码点的方法。