当我从张量流数据集中打印印地文文本时获取编码输出
Getting encoded output when I print hindi text from a tensorflow dataset
我正在使用 this 语料库执行 NLP 任务。当我读取文件并将印地语和英语行存储到单独的列表中时,我得到如下字符串文字输出:
def extract_lines(fp):
return [line.strip() for line in open(fp).readlines()]
inp,target = extract_lines(train_hi),extract_lines(train_en)
sample: ['अपने अनुप्रयोग को पहुंचनीयता व्यायाम का लाभ दें', 'एक्सेर्साइसर पहुंचनीयता अन्वेषक'] ['Give your application an accessibility workout', 'Accerciser Accessibility Explorer']
然后我使用这两个列表创建一个 tensorflow 数据集:
buffer_size = len(inp)
batch_size = 64
dataset = tf.data.Dataset.from_tensor_slices((inp,target)).shuffle(buffer_size)
dataset = dataset.batch(batch_size)
我从
得到的输出
for input_sample,target_sample in dataset.take(1):
print(input_sample)
类似于:
tf.Tensor(
[b'\xe0\xa4\xb5\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xbf\xe0\xa4\xaf\xe0\xa5\x8b\xe0\xa4\x82\xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\x95\xe0\xa5\x8b\xe0\xa4\x9f\xe0\xa4\xbf\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\x81'
我对处理文本数据很陌生(尤其是在 tensorflow 中),这是怎么回事?
Tensorflow 默认将所有 unicode 字符串(例如印地语文本)转换为 utf-8
。查看此 guide 了解更多详情。如果你想查看你的数据,你可以像这样解码编码的字符串张量:
import tensorflow as tf
def extract_lines(fp):
return [line.strip() for line in fp]
inp,target = extract_lines(['अपने अनुप्रयोग को पहुंचनीयता व्यायाम का लाभ दें', 'एक्सेर्साइसर पहुंचनीयता अन्वेषक'] ),extract_lines(['Give your application an accessibility workout', 'Accerciser Accessibility Explorer'])
buffer_size = len(inp)
batch_size = 1
dataset = tf.data.Dataset.from_tensor_slices((inp,target)).shuffle(buffer_size)
dataset = dataset.batch(batch_size)
for x, y in dataset:
print("".join([chr(i) for i in tf.strings.unicode_decode(x, 'utf-8').to_tensor()[0]]), y)
एक्सेर्साइसर पहुंचनीयता अन्वेषक tf.Tensor([b'Accerciser Accessibility Explorer'], shape=(1,), dtype=string)
अपने अनुप्रयोग को पहुंचनीयता व्यायाम का लाभ दें tf.Tensor([b'Give your application an accessibility workout'], shape=(1,), dtype=string)
但请注意,一旦 Hindi-text 转换为 tf
张量,它将被 utf-8
编码。
我正在使用 this 语料库执行 NLP 任务。当我读取文件并将印地语和英语行存储到单独的列表中时,我得到如下字符串文字输出:
def extract_lines(fp):
return [line.strip() for line in open(fp).readlines()]
inp,target = extract_lines(train_hi),extract_lines(train_en)
sample: ['अपने अनुप्रयोग को पहुंचनीयता व्यायाम का लाभ दें', 'एक्सेर्साइसर पहुंचनीयता अन्वेषक'] ['Give your application an accessibility workout', 'Accerciser Accessibility Explorer']
然后我使用这两个列表创建一个 tensorflow 数据集:
buffer_size = len(inp)
batch_size = 64
dataset = tf.data.Dataset.from_tensor_slices((inp,target)).shuffle(buffer_size)
dataset = dataset.batch(batch_size)
我从
得到的输出for input_sample,target_sample in dataset.take(1):
print(input_sample)
类似于:
tf.Tensor( [b'\xe0\xa4\xb5\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xbf\xe0\xa4\xaf\xe0\xa5\x8b\xe0\xa4\x82\xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\x95\xe0\xa5\x8b\xe0\xa4\x9f\xe0\xa4\xbf\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\x81'
我对处理文本数据很陌生(尤其是在 tensorflow 中),这是怎么回事?
Tensorflow 默认将所有 unicode 字符串(例如印地语文本)转换为 utf-8
。查看此 guide 了解更多详情。如果你想查看你的数据,你可以像这样解码编码的字符串张量:
import tensorflow as tf
def extract_lines(fp):
return [line.strip() for line in fp]
inp,target = extract_lines(['अपने अनुप्रयोग को पहुंचनीयता व्यायाम का लाभ दें', 'एक्सेर्साइसर पहुंचनीयता अन्वेषक'] ),extract_lines(['Give your application an accessibility workout', 'Accerciser Accessibility Explorer'])
buffer_size = len(inp)
batch_size = 1
dataset = tf.data.Dataset.from_tensor_slices((inp,target)).shuffle(buffer_size)
dataset = dataset.batch(batch_size)
for x, y in dataset:
print("".join([chr(i) for i in tf.strings.unicode_decode(x, 'utf-8').to_tensor()[0]]), y)
एक्सेर्साइसर पहुंचनीयता अन्वेषक tf.Tensor([b'Accerciser Accessibility Explorer'], shape=(1,), dtype=string)
अपने अनुप्रयोग को पहुंचनीयता व्यायाम का लाभ दें tf.Tensor([b'Give your application an accessibility workout'], shape=(1,), dtype=string)
但请注意,一旦 Hindi-text 转换为 tf
张量,它将被 utf-8
编码。