TensorFlow构建俄语文本数据集后打印仅显示字节码问题咨询
问题原因
TensorFlow的tf.string类型张量底层存储的是UTF-8编码的字节序列,打印时默认直接输出原始bytes格式:
- 英文字符完全落在ASCII编码范围内,字节序列直接展示也可读
- 俄语文本使用西里尔字符,属于UTF-8多字节编码,不在ASCII范围内,因此打印时会输出
\xd0\xa2这类字节码,属于显示逻辑问题,数据本身的编码存储是正确的,不影响后续训练、向量化等处理流程。
解决方案
如果需要正常查看俄语文本内容,只需在打印时做转码处理即可,最简单的实现方式如下:
for example_input_batch, example_target_batch in dataset.take(1): # 俄语批次转UTF-8编码后打印 print([text.decode('utf-8') for text in example_input_batch[:5].numpy()]) print() # 英文批次可直接打印,也可按同样逻辑转码 print(example_target_batch[:5]) break
如果需要对整个数据集做统一转码处理,可在数据集构造时增加映射操作:
def trans_coding(inp, targ): inp = tf.strings.unicode_decode(inp, input_encoding='UTF-8') # 若后续需要转回字符串格式,可搭配tf.strings.unicode_encode使用 return inp, targ dataset = dataset.map(trans_coding)
内容的提问来源于stack exchange,提问作者Aslan
相关产品推荐
相关产品推荐

