如何使用 Tensorflow 和 Python 将 Unicode 字符串表示为 UTF-8 编码字符串?
pythonserver side programmingprogrammingtensorflow
可以使用‘encode’方法将一组 Unicode 字符串表示为 UTF8 编码字符串。
阅读更多:什么是 TensorFlow,以及 Keras 如何与 TensorFlow 配合使用来创建神经网络?
处理自然语言的模型可以处理具有不同字符集的不同语言。Unicode 被视为标准编码系统,用于表示几乎所有语言的字符。每个字符都借助介于 0 和 0x10FFFF 之间的唯一整数代码点进行编码。Unicode 字符串是零个或多个代码值的序列。
让我们了解如何使用 Python 表示 Unicode 字符串,并使用 Unicode 等效项来操作这些字符串。首先,我们借助标准字符串操作的 Unicode 等效项,根据脚本检测将 Unicode 字符串分离为标记。
我们使用 Google Colaboratory 来运行以下代码。Google Colab 或 Colaboratory 有助于在浏览器上运行 Python 代码,无需配置,并且可以免费访问 GPU(图形处理单元)。Colaboratory 是在 Jupyter Notebook 之上构建的。
print("A set of Unicode strings which is represented as a UTF8-encoded string") batch_utf8 = [s.encode('UTF-8') for s in[u'hÃllo', u'What is the weather tomorrow',u'Göödnight', u'😊']] batch_chars_ragged = tf.strings.unicode_decode(batch_utf8, input_encoding='UTF-8') for sentence_chars in batch_chars_ragged.to_list(): print(sentence_chars) print("Dense tensor with padding are printed") batch_chars_padded = batch_chars_ragged.to_tensor(default_value=-1) print(batch_chars_padded.numpy()) print("Converting to sparse matrix") batch_chars_sparse = batch_chars_ragged.to_sparse()
代码来源:https://www.tensorflow.org/tutorials/load_data/unicode
输出
A set of Unicode strings which is represented as a UTF8-encoded string [104, 195, 108, 108, 111] [87, 104, 97, 116, 32, 105, 115, 32, 116, 104, 101, 32, 119, 101, 97, 116, 104, 101, 114, 32, 116, 111, 109, 111, 114, 114, 111, 119] [71, 246, 246, 100, 110, 105, 103, 104, 116] [128522] Dense tensor with padding are printed [[ 104 195 108 108 111 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] [87 104 97 116 32 105 115 32 116 104 101 32 119 101 97 116 104 101 114 32 116 111 109 111 114 114 111 119] [71 246 246 100 110 105 103 104 116 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] [128522 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1]] Converting to sparse matrix
解释
- 解码多个字符串时,每个字符串中的字符数可能不相等。
- 结果将是一个 tf.RaggedTensor,其中最内层维度的长度会有所不同,并且这种变化取决于每个字符串中的字符数。
- 此 tf.RaggedTensor 可直接使用,也可以使用方法 tf.RaggedTensor.to_tensor 将其转换为带填充的密集 tf.Tensor,或使用方法 tf.RaggedTensor.to_sparse 将其转换为 tf.SparseTensor。