Keras로 딥러닝을 위한 텍스트 데이터 준비하는 방법

 

딥러닝 모델에는 원문을 직접 입력 할 수 없습니다.

텍스트 데이터는 머신러닝과 딥러닝 모델의 입력 또는 출력으로 사용될 숫자로 인코딩되어야합니다.

Keras 딥러닝 라이브러리는 텍스트 데이터를 준비하는 데 도움이되는 몇가지 기본 도구를 제공합니다.

이튜토리얼에서는 Keras를 사용하여 텍스트 데이터를 준비하는 방법을 살펴 봅니다.

이 튜토리얼을 완료하면 다음 사항을 알 수 있습니다.

– 텍스트 데이터를 빠르게 준비하는 데 사용할 수있는 편리한 방법
– 학습 데이터에 적합하고 교육, 검증 및 테스트 문서를 인코딩하는 데 사용되는 Tokenizer API
– Tokenizer API가 제공하는 4가지 문서 인코딩 체계의 범위

text_to_word_sequence로 단어 분리

텍스트로 작업 할 때 첫번째 단계는 이를 단어로 분리하는 것입니다.

단어를 토큰이라고하며 텍스트를 토큰으로 분할하는 프로세스를 토큰화라고합니다.

Keras는 텍스트를 단어 목록으로 분리하는 데 사용할 수 있는 text_to_word_sequence () 함수를 제공합니다 .

기본적으로 이 함수는 자동으로 다음 세가지를 수행합니다.

  • 단어를 공백으로 나눕니다 (split = “”).

  • 구두점을 필터링합니다 (filters = ‘!’# $ % & () * +, – .; : <=>? @ [\\] ^ _`{|} ~ \ t \ n ‘).

  • 텍스트를 소문자로 변환합니다 (lower = True).

함수에 인수를 전달하여 이러한 기본값을 변경할 수 있습니다.

one_hot으로 인코딩

문서의 각 단어가 고유한 정수로 표시되는 정수값의 시퀀스로 문서를 표현하는 것이 일반적입니다.

Keras는 한단계로 텍스트 문서를 토큰화하고 정수로 인코딩하는데 사용할 수 있는 one_hot () 함수 를 제공합니다 . 이름으로만 보면 문서의 원-핫 인코딩을 생성할 것 같지만 그렇지 않습니다. 대신 이 함수는 다음 섹션에서 설명할 hashing_trick () 함수에 대한 래퍼입니다. 이 함수는 정수로 인코딩된 문서 버전을 반환합니다. 해시 함수를 사용한다는 것은 충돌이 있을 수 있으며 모든 단어에 고유한 정수값이 할당되지 않는다는 것을 의미합니다.

위섹션의 text_to_word_sequence () 함수와 마찬가지로 one_hot () 함수는 텍스트를 소문자로 만들고 구두점을 필터링하며 공백을 기반으로 단어를 분할합니다.

텍스트 외에도 어휘 크기(총 단어)를 지정해야 합니다. 추가 단어가 들어있는 추가 문서를 인코딩하려는 경우 문서의 총 단어 수 또는 그 이상일 수 있습니다. 어휘의 크기는 단어가 해시되는 해싱 공간을 정의합니다. 이상적으로는 충돌 횟수를 최소화하기 위해 어휘보다 몇 퍼센트 (아마도 25 %) 더 커야합니다. 기본적으로 ‘hash’함수가 사용되지만, 다음 섹션에서 보게 될, hashing_trick() 함수를 직접 호출 할 때 대체 해시 함수를 지정할 수 있습니다.

이전 섹션의 text_to_word_sequence () 함수를 사용하여 문서를 단어로 분리한 다음 세트를 사용하여 문서의 고유 단어만 나타낼 수 있습니다. 이 세트의 크기는 한 문서의 어휘 크기를 추정하는 데 사용할 수 있습니다.

hashing_trick을 사용한 해시 인코딩

정수 및 카운트 기본 인코딩의 한계는 단어의 어휘 및 정수에 대한 매핑을 유지해야 한다는 것입니다.

이 방법의 대안은 단방향 해시 함수를 사용하여 단어를 정수로 변환하는 것입니다. 이렇게하면 더 빠르고 더 적은 메모리가 필요한 어휘를 추적할 필요가 없습니다.

Keras는 one_hot () 함수와 마찬가지로 문서를 토큰화 한 다음 정수를 인코딩하는 hashing_trick () 함수를 제공합니다. 더 많은 유연성을 제공하여 해시 함수를 ‘해시'(기본값) 또는 내장된 md5 함수나 사용자 고유의 함수와 같은 다른 해시 함수로 지정할 수 있습니다.

Tokenizer API

지금까지 Keras로 텍스트를 준비하는 일회용 편의 방법을 살펴 보았습니다.

Keras는 여러 텍스트 문서를 준비하는 데 적합하고 재사용 할 수 있는 텍스트 준비를 위한 보다 정교한 API를 제공합니다. 이것은 대규모 프로젝트에서 선호되는 접근 방식 일 수 있습니다.

Keras는 딥러닝을 위해 텍스트 문서를 준비하기 위한 Tokenizer 클래스를 제공합니다 . Tokenizer를 구축하고 원시 텍스트 문서 또는 정수로 인코딩된 텍스트 문서에 맞춰야합니다.

Tokenizer가 교육 데이터에 적합하면 학습 또는 테스트 데이터세트의 문서를 인코딩하는 데 사용할 수 있습니다. Tokenizer의 texts_to_matrix () 함수는 입력별로 제공되는 문서 당 하나의 벡터를 만드는 데 사용할 수 있습니다. 벡터의 길이는 어휘의 전체 크기입니다.

이 함수는 함수에 대한 모드 인수를 통해 제공될 수 있는 표준 bag-of-word 모델 텍스트 인코딩 체계 모음을 제공합니다.

원문
https://machinelearningmastery.com/prepare-text-data-deep-…/

Tags:

딥러닝

Keras

토큰화

토큰

tokenizing

NLP

자연어