TensorFlow 現(xiàn)在可以支持 Unicode,這是一種標(biāo)準(zhǔn)編碼系統(tǒng),可以表示幾乎所有語(yǔ)言的字符。處理自然語(yǔ)言時(shí),了解字符的編碼方式非常重要。在像英語(yǔ)這樣的小字符集的語(yǔ)言中,每個(gè)字符都可以使用 ASCII 進(jìn)行表示。但是這種方法對(duì)于其他語(yǔ)言來(lái)說(shuō)并不實(shí)用,例如中文,這些語(yǔ)言有數(shù)千個(gè)字符。即使處理英文文本,Emojis 等特殊字符也不能用 ASCII 表示。
定義字符及其編碼的最常用標(biāo)準(zhǔn)是 Unicode,它幾乎支持所有語(yǔ)言。對(duì)于 Unicode,每個(gè)字符使用唯一的整數(shù) code point 表示,其值介于 0 和 0x10FFFF 之間。當(dāng)按順序放置 code point 時(shí),將形成 Unicode 字符串。
Unicode tutorial colab展示了如何在 TensorFlow 中表示 Unicode 字符串。使用 TensorFlow 時(shí),有兩種標(biāo)準(zhǔn)方式來(lái)表示 Unicode 字符串:
作為整數(shù)向量,其中每個(gè)位置包含單個(gè) code point
作為字符串,使用字符編碼將 code point 序列編碼到字符串中。有許多字符編碼,其中一些最常見的是 UTF-8,UTF-16 等
以下代碼分別使用 code point、UTF-8 和 UTF-16 顯示字符串 “語(yǔ)言處理” 的編碼。
當(dāng)然,您可能需要在各種表示方式之間進(jìn)行轉(zhuǎn)換,而 TensorFlow 1.13 已添加了執(zhí)行此操作的函數(shù):
tf.strings.unicode_decode: 將字符串標(biāo)量轉(zhuǎn)換為 code point 的向量(https://www.tensorflow.org/versions/r1.13/api_docs/python/tf/strings/unicode_decode)
tf.strings.unicode_encode: 將 code point 向量轉(zhuǎn)換為字符串標(biāo)量(https://www.tensorflow.org/versions/r1.13/api_docs/python/tf/strings/unicode_decode)
tf.strings.unicode_transcode: 將字符串標(biāo)量轉(zhuǎn)換為不同的編碼(https://www.tensorflow.org/versions/r1.13/api_docs/python/tf/strings/unicode_transcode)
因此,如果要將上述示例中的 UTF-8 解碼為 code point 向量,則可以執(zhí)行以下操作:
當(dāng)解碼包含多個(gè)字符串的 Tensor 時(shí),字符串可能具有不同的長(zhǎng)度。 unicode_decode 將結(jié)果作為 RaggedTensor 返回,其中內(nèi)部維度的長(zhǎng)度根據(jù)每個(gè)字符串中的字符數(shù)而變化。
-
編碼
+關(guān)注
關(guān)注
6文章
944瀏覽量
54843 -
Unicode
+關(guān)注
關(guān)注
0文章
24瀏覽量
12580 -
tensorflow
+關(guān)注
關(guān)注
13文章
329瀏覽量
60537
原文標(biāo)題:TensorFlow 支持 Unicode 編碼
文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論