모든 유니코드 코드 포인트는 '스크립트(script)'라고 불리는 하나의 코드 포인트 집합에 속합니다. 문자의 스크립트는 해당 문자가 어느 언어에 속하는지를 결정하는 중요한 기준이 됩니다. TensorFlow는 특정 코드 포인트가 어떤 스크립트를 사용하는지 확인할 수 있는 tf.strings.unicode_script 메서드를 제공합니다. 여기서 반환되는 스크립트 코드는 int32 값이며, ICU(International Components for Unicode)의 UScriptCode 값에 매핑됩니다.
함께 읽기: TensorFlow란 무엇이며, Keras는 TensorFlow와 함께 어떻게 신경망을 만들까요?
이번 글에서는 Python으로 유니코드 문자열을 표현하고, 유니코드 전용 연산을 활용해 이를 조작하는 방법을 살펴보겠습니다. 먼저 표준 문자열 연산의 유니코드 버전을 이용해 스크립트 감지(script detection)를 기반으로 유니코드 문자열을 토큰 단위로 분리하는 과정부터 시작합니다.
아래 코드는 Google Colaboratory 환경에서 실행됩니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU(그래픽 처리 장치)도 무료로 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축된 서비스입니다.
print("아래는 각각 '芸'과 'Б'를 나타냅니다")
uscript = tf.strings.unicode_script([33464, 1041])
print(uscript.numpy()) # [17, 8] == [USCRIPT_HAN, USCRIPT_CYRILLIC]
print("다차원 문자열에 적용")
print(tf.strings.unicode_script(batch_chars_ragged))코드 출처: https://www.tensorflow.org/tutorials/load_data/unicode
출력 결과
아래는 각각 '芸'과 'Б'를 나타냅니다 [17 8] 다차원 문자열에 적용 <tf.RaggedTensor [[25, 25, 25, 25, 25], [25, 25, 25, 25, 0, 25, 25, 0, 25, 25, 25, 0, 25, 25, 25, 25, 25, 25, 25, 0, 25, 25, 25, 25, 25, 25, 25, 25], [25, 25, 25, 25, 25, 25, 25, 25, 25], [0]]>
설명
- 모든 유니코드 코드 포인트는 '스크립트'라고 하는 단일한 코드 포인트 집합에 속합니다.
- 문자의 스크립트는 해당 문자가 어느 언어에 속할 수 있는지 판단하는 데 도움을 줍니다.
- TensorFlow는 주어진 코드 포인트가 어떤 스크립트를 사용하는지 확인할 수 있는 tf.strings.unicode_script 연산을 제공합니다.
- 스크립트 코드는 int32 값이며, ICU(International Components for Unicode)의 UScriptCode 값에 매핑됩니다.
- tf.strings.unicode_script 연산은 다차원 tf.Tensor뿐만 아니라 코드 포인트를 담은 tf.RaggedTensor에도 적용할 수 있습니다.