다운로드
작성자: admin 작성일시: 2018-04-18 21:57:09 조회수: 2160 다운로드: 279
카테고리: 머신 러닝 태그목록:

텐서플로 텍스트 처리

이 절에서는 텐서플로가 제공하는 텍스트 처리 기능을 설명한다.

tf.keras.utils.get_file 함수

tf.keras.utils.get_file 함수는 인터넷의 파일을 로컬 컴퓨터의 홈 디렉토리 아래 .keras/datasets 디렉토리로 다운로드한다.

In [1]:
import tensorflow as tf 

url = 'https://storage.googleapis.com/download.tensorflow.org/data/illiad/butler.txt'
text_path = tf.keras.utils.get_file("butler.txt", origin=url)  
text_path
Out:
'/home/dockeruser/.keras/datasets/butler.txt'

tf.data.TextLineDataset 클래스

tf.data.TextLineDataset 클래스는 텍스트 파일로부터 라인을 하나씩 추출하는 데이터셋이다. 위에서 다운로드받은 텍스트 파일을 tf.data.TextLineDataset 클래스 객체로 만들어 3줄만 출력하면 다음과 같다.

In [2]:
ds_file = tf.data.TextLineDataset(text_path)
for x in ds_file.take(1):
    print(x)
tf.Tensor(b'\xef\xbb\xbfSing, O goddess, the anger of Achilles son of Peleus, that brought', shape=(), dtype=string)

tfds.features.text.Tokenizer 토크나이저

텐서플로 tensorflow_datasets 패키지(이하 tfds 패키지)의 feature.text 서브패키지는 텍스트 데이터를 처리할 수 있는 기능을 제공한다. 그 중의 하나가 tfds.features.text.Tokenizer 토크나이저다.

In [3]:
import tensorflow_datasets as tfds

tokenizer = tfds.features.text.Tokenizer()
tokens = tokenizer.tokenize(x.numpy())
tokens
Out:
['Sing',
 'O',
 'goddess',
 'the',
 'anger',
 'of',
 'Achilles',
 'son',
 'of',
 'Peleus',
 'that',
 'brought']

전체 문서를 토큰화하여 어휘목록(vocabulary)을 생성한다.

In [4]:
vocabulary_set = set()
for text_tensor in ds_file:
    some_tokens = tokenizer.tokenize(text_tensor.numpy())
    vocabulary_set.update(some_tokens)

vocab_size = len(vocabulary_set)
vocab_size
Out:
7811

tfds.features.text.TokenTextEncoder 인코더

tfds.features.text.TokenTextEncoder 인코더는 토큰들을 숫자로 변환한다. 변환할 때는 encode() 메서드를 사용한다.

In [5]:
encoder = tfds.features.text.TokenTextEncoder(vocabulary_set)
encoder.encode(x.numpy())
Out:
[4104, 3644, 4170, 4965, 5838, 5295, 1764, 533, 5295, 7620, 5680, 7393]

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!