TensorFlow는 인코딩된 문자열 스칼라와 코드 포인트 벡터 사이의 상호 변환을 손쉽게 처리할 수 있는 강력한 문자열 연산 기능을 제공합니다. 핵심이 되는 세 가지 함수는 다음과 같습니다.
- unicode_decode: 인코딩된 문자열 스칼라를 코드 포인트 벡터로 변환합니다.
- unicode_encode: 코드 포인트 벡터를 인코딩된 문자열 스칼라로 되돌립니다.
- unicode_transcode: 인코딩된 문자열 스칼라를 다른 인코딩 방식으로 변환합니다.
유니코드 문자열 처리 개요
이 글에서는 Python으로 유니코드 문자열을 표현하고, 표준 문자열 연산의 유니코드 호환 버전을 활용해 이를 조작하는 방법을 살펴봅니다. 특히 스크립트(문자 체계) 감지를 기반으로 유니코드 문자열을 토큰 단위로 분리하는 과정도 함께 다룹니다.
아래 코드는 Google Colaboratory 환경에서 실행됩니다. Google Colab은 브라우저에서 별도 설정 없이 Python 코드를 실행할 수 있으며, GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.
변환 코드 예제
print("Converting encoded string scalar to a vector of code points")
tf.strings.unicode_decode(text_utf8,input_encoding='UTF-8')
print("Converting vector of code points to an encoded string scalar")
tf.strings.unicode_encode(text_chars, output_encoding='UTF-8')
print("Converting encoded string scalar to a different encoding")
tf.strings.unicode_transcode(text_utf8, input_encoding='UTF8', output_encoding='UTF-16-BE')코드 출처: https://www.tensorflow.org/tutorials/load_data/unicode
실행 결과
Converting encoded string scalar to a vector of code points Converting vector of code points to an encoded string scalar Converting encoded string scalar to a different encoding <tf.Tensor: shape=(), dtype=string, numpy=b'\x8b\xed\x8a\x00Y\x04t\x06'>
코드 설명
- unicode_decode 함수는 인코딩된 문자열 스칼라를 입력받아 코드 포인트 벡터로 변환합니다. input_encoding 매개변수에 원본 인코딩(예: 'UTF-8')을 지정합니다.
- unicode_encode 함수는 코드 포인트 벡터를 다시 인코딩된 문자열 스칼라로 변환하며, output_encoding 매개변수로 출력 인코딩을 지정할 수 있습니다.
- unicode_transcode 함수는 별도의 디코딩 과정 없이 한 번에 입력 인코딩에서 다른 출력 인코딩(예: 'UTF-16-BE')으로 직접 변환해 주므로, 인코딩 형식만 바꾸고 싶을 때 가장 효율적입니다.
이처럼 TensorFlow의 문자열 연산을 활용하면 자연어 처리 파이프라인에서 다국어 텍스트 데이터를 일관성 있게 전처리하고, 다양한 인코딩 환경 간에 문제없이 데이터를 주고받을 수 있습니다.