如何在TensorFlow中表示和操作Unicode字符串?
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("A constant is defined") tf.constant(u"Thanks 😊") print("The shape of the tensor is") tf.constant([u"You are", u"welcome!"]).shape print("Unicode string represented as UTF-8 encoded scalar") text_utf8 = tf.constant(u"语言处理") print(text_utf8) print("Unicode string represented as UTF-16 encoded scalar") text_utf16be = tf.constant(u"语言处理".encode("UTF-16-BE")) print(text_utf16be) print("Unicode string represented as a vector of Unicode code points") text_chars = tf.constant([ord(char) for char in u"语言处理"]) print(text_chars)
代码来源:https://tensorflowcn.cn/tutorials/load_data/unicode
输出
A constant is defined The shape of the tensor is Unicode string represented as UTF-8 encoded scalar tf.Tensor(b'\xe8\xaf\xad\xe8\xa8\x80\xe5\xa4\x84\xe7\x90\x86', shape=(), dtype=string) Unicode string represented as UTF-16 encoded scalar tf.Tensor(b'\x8b\xed\x8a\x00Y\x04t\x06', shape=(), dtype=string) Unicode string represented as a vector of Unicode code points tf.Tensor([35821 35328 22788 29702], shape=(4,), dtype=int32)
解释
- TensorFlow `tf.string` 是一个基本数据类型。
- 它允许用户构建字节字符串张量。
- Unicode 字符串默认使用 UTF-8 编码。
- 由于字节字符串被视为原子单元,因此 `tf.string` 张量能够保存不同长度的字节字符串。
- 字符串长度不包含在张量维度中。
- 当使用 Python 构造字符串时,Unicode 处理在 v2 和 v3 之间有所不同。在 v2 中,Unicode 字符串用 "u" 前缀表示。
- 在 v3 中,字符串默认使用 Unicode 编码。
- 在 TensorFlow 中表示 Unicode 字符串的两种标准方法:
- 字符串标量:使用已知的字符编码对代码点序列进行编码。
- int32 向量:每一位包含单个代码点的方法。
广告