Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 TensorFlow Text를 공백 토크나이저(WhitespaceTokenizer)와 함께 사용하는 방법

TensorFlow Text는 'WhitespaceTokenizer'를 호출하여 공백 토크나이저와 함께 사용할 수 있습니다. 이렇게 하면 토크나이저 객체가 생성되며, 생성된 토크나이저의 'tokenize' 메서드를 사용해 문자열을 토큰 단위로 분리할 수 있습니다.

사전 지식: Keras Sequential API와 CNN

이 튜토리얼에서는 Keras Sequential API를 사용합니다. Sequential API는 레이어를 일렬로 쌓아 올린 순차 모델을 만들 때 유용하며, 각 레이어는 정확히 하나의 입력 텐서와 하나의 출력 텐서를 가집니다.

또한 최소 하나 이상의 레이어를 포함하는 신경망 구조를 활용해 학습 모델을 구축할 수 있으며, 특히 컨볼루션 신경망(CNN)은 이미지 및 시퀀스 데이터 처리에 널리 사용됩니다.

TensorFlow Text는 TensorFlow 2.0과 함께 사용할 수 있는 텍스트 관련 클래스와 연산(op)들의 모음입니다. 시퀀스 모델링을 위한 전처리 작업에 매우 유용하게 활용됩니다.

아래 코드는 Google Colaboratory 환경에서 실행했습니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 설정 없이 무료로 GPU(그래픽 처리 장치)에 접근할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.

토큰화(Tokenization)란?

토큰화는 문자열을 토큰 단위로 나누는 과정입니다. 토큰은 단어, 숫자 또는 문장부호가 될 수 있습니다. 핵심 인터페이스로는 TokenizerTokenizerWithOffsets가 있으며, 각각 tokenize 메서드와 tokenize_with_offsets 메서드를 제공합니다.

여러 종류의 토크나이저가 존재하며, 대부분 Tokenizer 클래스를 확장한 TokenizerWithOffsets를 구현합니다. 이 인터페이스는 원본 문자열 내에서 토큰이 차지하는 바이트 오프셋 정보를 얻을 수 있는 기능을 제공하므로, 각 토큰이 원본 문자열의 어느 부분에서 생성되었는지 정확히 파악할 수 있습니다.

N-gram이란?

N-gram은 크기 n의 슬라이딩 윈도우를 적용했을 때 만들어지는 연속된 단어 시퀀스입니다. 토큰을 결합할 때는 세 가지 리덕션(reduction) 메커니즘이 지원됩니다.

  • Reduction.STRING_JOIN: 텍스트 처리에 사용되며, 문자열들을 서로 이어 붙입니다. 기본 구분자는 공백이지만, string_separater 인자를 통해 변경할 수 있습니다.
  • Reduction.SUM: 숫자 값의 합계를 계산할 때 사용됩니다.
  • Reduction.MEAN: 숫자 값의 평균을 계산할 때 사용됩니다.

예제 코드

print("Whitespace tokenizer is being called")
tokenizer = text.WhitespaceTokenizer()
tokens = tokenizer.tokenize(['Everything not saved will be lost.', u'Sad☹'.encode('UTF-8')])
print("Here, n is 2, hence it is bigram")
bigrams = text.ngrams(tokens, 2, reduction_type=text.Reduction.STRING_JOIN)
print("The bigrams are converted to a list")
print(bigrams.to_list())

출력 결과

Whitespace tokenizer is being called
Here, n is 2, hence it is bigram
The bigrams are converted to a list
[[b'Everything not', b'not saved', b'saved will', b'will be', b'be lost.'], []]

코드 설명

  • 먼저 공백 토크나이저(WhitespaceTokenizer)를 호출합니다.
  • n 값을 2로 설정했으므로, 인접한 두 토큰을 묶은 바이그램(bigram)이 생성됩니다.
  • UTF-8로 인코딩된 이모지 문자열은 공백이 없어 빈 리스트로 반환됩니다.
  • 생성된 토큰들은 리스트 형태로 변환되어 콘솔에 출력됩니다.