NLP 자연어 처리, Natural Language Processing
NLP data를 tf.record로 변환하기
$choice
2021. 3. 18. 19:21
다음 블로그를 보고 수정하였습니다.
kaen2891.tistory.com/65
1. 테스트 데이터
해당 데이터는 임의적으로 만든 데이터 data1.txt, data2.txt 입니다.
2. tf.record 파일 생성
writer 코드입니다.
import tensorflow as tf
print(tf.__version__)
import os
from glob import glob
import numpy as np
from tqdm import tqdm
def _bytes_feature(value):
"""Returns a bytes_list from a string / byte."""
return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))
def serialize_example(batch, list1):
filename = "./train_set.tfrecords"
writer = tf.io.TFRecordWriter(filename)
for i in tqdm(range(batch)):
feature = {}
lines_dataset = tf.data.TextLineDataset(list1[i])
for text_data in lines_dataset:
# print(text_data)
feature['input'] = _bytes_feature(text_data.numpy())
features = tf.train.Features(feature=feature)
example = tf.train.Example(features=features)
serialized = example.SerializeToString()
writer.write(serialized)
list_input = sorted(glob('./*.txt'))
serialize_example(len(list_input), list_input)
결과입니다.
3. tf.record 읽기
코드입니다.
import tensorflow as tf
record_file = './train_set.tfrecords'
feature_description = {
'input' : tf.io.FixedLenSequenceFeature([], tf.string, allow_missing=True)
}
def _parse_text_function(example_proto):
return tf.io.parse_single_example(example_proto, feature_description)
def input_fn(record_file, batch_size, buffer_size):
dataset = tf.data.TFRecordDataset(record_file)
print('raw_dataset', dataset)
parsed_text_dataset = dataset.map(_parse_text_function)
print('map', parsed_text_dataset)
train_dataset = parsed_text_dataset.shuffle(buffer_size).batch(batch_size) # 선택사항 : , drop_remainder=True)
print('buffer + batch', train_dataset)
train_datset = train_dataset.prefetch(tf.data.experimental.AUTOTUNE)
print('train_dataset autotune', train_dataset)
return train_dataset
batch_size = 3
train_dataset = input_fn(record_file, batch_size=batch_size, buffer_size=10)
print(train_dataset)
for (batch, text) in enumerate(train_dataset):
enc_raw = text['input']
print(enc_raw)
결과입니다.
4. Tokenizer 한 다음 tf.record 생성하기
코드는 추후에 올려드리겠습니다.
반응형