如何使用Tensorflow和Python将Unicode字符串表示为UTF-8编码的字符串?


可以使用“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://tensorflowcn.cn/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。

更新于: 2021年2月19日

381 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告