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

TensorFlow로 Python에서 문자열 부분 문자열(substring) 다루는 방법


TensorFlow에서는 strings 모듈에 포함된 substr 메서드를 사용하여 문자열의 일부(부분 문자열, substring)를 손쉽게 추출할 수 있습니다. 연산 결과는 NumPy 배열로 변환한 뒤 화면에 출력됩니다.

더 읽기: TensorFlow란 무엇이며, Keras는 TensorFlow와 함께 어떻게 신경망을 만들까요?

유니코드 문자열 다루기

이 글에서는 Python으로 유니코드(Unicode) 문자열을 표현하고, 이를 유니코드 기반 연산으로 조작하는 방법을 살펴봅니다. 먼저 표준 문자열 연산의 유니코드 등가 요소를 활용하여, 스크립트(script) 감지를 기준으로 유니코드 문자열을 토큰 단위로 분리합니다.

아래 코드는 Google Colaboratory 환경에서 실행되었습니다. Google Colab(Colaboratory)은 브라우저에서 별도의 설정 없이 Python 코드를 바로 실행할 수 있는 환경으로, GPU(그래픽 처리 장치)를 무료로 사용할 수 있으며 Jupyter Notebook을 기반으로 구축되었습니다.

print('기본 단위는 바이트(byte)입니다')
print('len이 1이면 단일 바이트가 반환됩니다')
tf.strings.substr(thanks, pos=7, len=1).numpy()
print('단위를 UTF8_CHAR로 지정합니다')
print('이 경우 최대 4바이트를 차지합니다')
print(tf.strings.substr(thanks, pos=7, len=1, unit='UTF8_CHAR').numpy())

코드 출처: https://www.tensorflow.org/tutorials/load_data/unicode

실행 결과

기본 단위는 바이트(byte)입니다
len이 1이면 단일 바이트가 반환됩니다
단위를 UTF8_CHAR로 지정합니다
이 경우 최대 4바이트를 차지합니다
b''

코드 설명

  • tf.strings.substr 연산은 unit 매개변수를 입력받습니다.
  • 이 unit 값은 pos(시작 위치)와 len(길이) 매개변수가 어떤 종류의 오프셋(offset)을 의미하는지 결정하는 데 사용됩니다.
  • unit의 기본값은 BYTE이며, 이 경우 pos와 len은 바이트 단위 오프셋으로 해석됩니다. 따라서 멀티바이트 문자의 중간을 잘라내면 빈 값(b'')이 반환될 수 있습니다.
  • UTF8_CHAR로 지정하면 pos와 len이 문자 단위로 해석되므로, 한글이나 러시아어처럼 여러 바이트로 구성된 문자를 안전하게 다룰 수 있습니다.