자연어 처리의 토큰화

게시 됨: 2020-12-01

텍스트 데이터를 다룰 때 가장 기본적인 단계는 텍스트를 토큰화하는 것입니다. '토큰'은 개별 단어, 문장 또는 최소 단위로 간주될 수 있습니다. 따라서 문장을 별도의 단위로 나누는 것은 토큰화에 불과합니다.

이 튜토리얼을 마치면 다음에 대한 지식을 갖게 될 것입니다.

  • 토큰화란
  • 다양한 유형의 토큰화
  • 다양한 토큰화 방법

토큰화는 NLP 파이프라인에서 가장 기본적인 단계입니다.

그런데 왜 그럴까요?

이러한 단어나 토큰은 나중에 컴퓨터가 이해하고 이해할 수 있도록 숫자 값으로 변환됩니다. 이 토큰은 정리되고 사전 처리된 다음 "벡터화" 방법에 의해 숫자 값으로 변환됩니다. 그런 다음 이러한 벡터를 기계 학습 알고리즘 및 신경망에 제공할 수 있습니다.

토큰화는 단어 수준뿐만 아니라 문장 수준도 될 수 있습니다. 즉, 텍스트는 토큰으로 단어 또는 토큰으로 문장을 토큰화할 수 있습니다. 토큰화를 수행하는 몇 가지 방법에 대해 논의해 보겠습니다.

목차

파이썬 스플릿()

Python split() 함수는 언급된 문자로 분할된 토큰 목록을 반환합니다. 기본적으로 공백으로 단어를 나눕니다.

단어 토큰화

Mystr = “토큰화 튜토리얼입니다. 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP 작업에서 필수적입니다.”
토큰 = Mystr.split()

#산출:
>> [ 'This' , 'is' , 'a' , 'tokenization' , 'tutorial.' , 'We' , 'are' , 'learning' , 'different' , 'tokenization' , 'methods' , 'and' , 'ways?' , '토큰화' , 'is' , 'essential' , 'in' , 'NLP' , 'tasks.' ]

문장 토큰화

구분자를 "."로 전달하여 동일한 텍스트를 문장으로 분할할 수 있습니다.

Mystr = “토큰화 튜토리얼입니다. 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP 작업에서 필수적입니다.”

토큰 = Mystr.split( "." )

#산출:
>> [ '토큰화 튜토리얼' , ' 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP 작업에 필수적' , ]

이것은 간단하고 간단해 보이지만 많은 결함이 있습니다. 그리고 마지막 "." 다음에 분할됩니다. 또한. 그리고 "?"를 고려하지 않습니다. "."라는 한 문자만 사용하기 때문에 다음 문장의 표시자로 사용됩니다.

실제 시나리오의 텍스트 데이터는 매우 더럽고 단어와 문장에 제대로 입력되지 않습니다. 많은 가비지 텍스트가 있을 수 있으므로 이러한 방식으로 토큰화하기가 매우 어렵습니다. 따라서 보다 우수하고 최적화된 토큰화 방식으로 나아가겠습니다.

반드시 읽어야 할 것: 당신이 알아야 할 10가지 딥 러닝 기술

정규식

정규식(RegEx)은 문자 패턴과 일치시키는 데 사용되는 일련의 문자입니다. 우리는 RegEx를 사용하여 특정 패턴, 단어 또는 문자를 찾아 대체하거나 다른 작업을 수행합니다. Python에는 RegEx 작업에 사용되는 re 모듈이 있습니다. re 를 사용하여 텍스트를 토큰화하는 방법을 살펴보겠습니다 .

단어 토큰화

Mystr = “토큰화 튜토리얼입니다. 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP의 작업에 필수적입니다.”

토큰 = re.findall( “[\w']+” , Mystr)

#산출:
>> [ 'This' , 'is' , 'a' , 'tokenization' , 'tutorial' , 'We' , 'are' , 'learning' , 'different' , 'tokenization' , 'methods' , 'and' , '방법' , '토큰화' , 'is' , 'essential' , 'in' , 'NLP' , 'tasks' ]

그래서, 여기서 무슨 일이 일어났습니까?

re.findall() 함수 일치하는 모든 시퀀스와 일치하고 목록에 저장합니다. "[\w]+"라는 표현은 알파벳, 숫자 또는 밑줄("_")과 같은 모든 문자를 의미합니다. "+" 기호는 패턴의 모든 발생을 의미합니다. 따라서 기본적으로 모든 문자를 스캔하고 밑줄을 제외한 공백이나 다른 특수 문자에 도달할 때 하나의 토큰으로 목록에 넣습니다.

"NLP's"라는 단어는 단일 단어이지만 우리의 정규 표현식은 아포스트로피 때문에 "NLP"와 "s"로 구분했습니다.

문장 토큰화

Mystr = “토큰화 튜토리얼입니다. 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP의 작업에 필수적입니다.”

토큰 = re.compile( '[.!?] ' ).split(Mystr)

#산출:
>> [ '토큰화 튜토리얼' , '우리는 다양한 토큰화 방법과 방법을 배우고 있습니다' , '토큰화는 NLP 작업에서 필수적입니다.' ]

이제 여기에서 여러 분할 문자를 하나의 조건으로 결합하고 re.split 함수를 호출했습니다. 따라서 이 3개의 문자 중 하나에 도달하면 별도의 문장으로 처리됩니다. 이것은 분할할 여러 문자를 전달할 수 없는 파이썬 분할 기능에 비해 RegEx의 장점입니다.

더 읽어보기: 자연어 처리의 응용

NLTK 토큰나이저

NLTK(Natural Language Toolkit)는 NLP 작업을 처리하기 위한 Python 라이브러리입니다. NLTK는 완전한 NLP 파이프라인의 일부 특정 프로세스를 위해 만들어진 내장된 기능과 모듈로 구성됩니다. NLTK가 토큰화를 처리하는 방법을 살펴보겠습니다.

단어 토큰화

NLTK에는 토큰화 작업을 처리하기 위한 별도의 모듈인 NLTK.tokenize가 있습니다. 단어 토큰화의 경우 구성 방법 중 하나는 word_tokenize입니다.

nltk.tokenize 에서 가져오기 word_tokenize

Mystr = “토큰화 튜토리얼입니다. 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP의 작업에 필수적입니다.”
word_tokenize(Mystr)

#산출:
>>[ 'This' , 'is' , 'a' , 'tokenization' , 'tutorial' , '.' , 'We' , 'are' , 'learning' , 'different' , 'tokenization' , 'methods' , ',' , 'and' , 'ways' , '?' , '토큰화' , 'is' , 'essential' , 'in' , 'NLP' , 'tasks' , '.' ]

word_tokenize 는 구두점을 별도의 토큰으로 간주합니다 . 이러한 일이 발생하지 않도록 하려면 이 단계 자체 전에 모든 구두점과 특수 문자를 제거해야 합니다.

문장 토큰화

nltk.tokenize 에서 가져오기 sent_tokenize

Mystr = “토큰화 튜토리얼입니다. 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP의 작업에 필수적입니다.”
sent_tokenize(Mystr)

#산출:
>> [ '토큰화 튜토리얼입니다.' , '다양한 토큰화 방법과 방법을 배우고 있습니까?' , '토큰화는 NLP 작업에 필수적입니다.' ]

SpaCy 토큰나이저

SpaCy는 아마도 NLP 작업을 위한 가장 진보된 라이브러리 중 하나일 것입니다. 거의 50개 언어에 대한 지원으로 구성됩니다. 따라서 첫 번째 단계는 영어용 코어를 다운로드하는 것입니다. 다음으로 토크나이저, 태거, 파서, NER 및 단어 벡터를 로드하는 영어 모듈을 가져와야 합니다.

단어 토큰화

spacy.lang.en 에서 수입 영어

nlp = 영어()
Mystr = “토큰화 튜토리얼입니다. 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP의 작업에 필수적입니다.”
my_doc = nlp(Mystr)

토큰 = []
my_doc 토큰 :
Tokens.append(token.text)
토큰

#산출:
>> [ 'This' , 'is' , 'a' , 'tokenization' , 'tutorial' , '.' , 'We' , 'are' , 'learning' , 'different' , 'tokenization' , 'methods' , ',' , 'and' , 'ways' , '?' , '토큰화' , 'is' , 'essential' , 'in' , 'NLP' , "'s" , 'tasks' , '.' ]

여기에서 MyStr이 전달된 nlp 함수를 호출하면 이에 대한 단어 토큰이 생성됩니다. 그런 다음 이를 통해 색인을 생성하고 별도의 목록에 저장합니다.

문장 토큰화

spacy.lang.en 에서 수입 영어

nlp = 영어()
sent_tokenizer = nlp.create_pipe( 'sentencizer' )
nlp.add_pipe(sent_tokenizer)

Mystr = “토큰화 튜토리얼입니다. 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP의 작업에 필수적입니다.”

my_doc = nlp(Mystr)

보낸 = []
doc.sents 보낸 경우 :
Sent.append(sent.text)
보냄

#산출:
>> [ '토큰화 튜토리얼입니다.' , '다양한 토큰화 방법과 방법을 배우고 있습니까?' , "토큰화는 NLP의 작업에 필수적입니다." ]

문장 토큰화를 위해 creat_pipe 메서드를 호출하여 문장 토큰을 생성하는 sentencizer 구성 요소를 만듭니다. 그런 다음 파이프라인을 nlp 개체에 추가합니다. 텍스트 문자열을 nlp 객체에 전달하면 이번에는 이에 대한 문장 토큰이 생성됩니다. 이제 이전 예제와 같은 방식으로 목록에 추가할 수 있습니다.

케라스 토큰화

Keras는 현재 가장 선호되는 딥 러닝 프레임워크 중 하나입니다. Keras는 또한 텍스트 처리 작업을 위한 전용 클래스인 keras.preprocessing.text를 제공합니다. 이 클래스에는 텍스트 에서 단어 수준 토큰을 생성 하는 text_to_word_sequence 함수가 있습니다. 간단히 살펴보겠습니다.

keras.preprocessing.text 에서 text_to_word_sequence 가져오기

Mystr = “토큰화 튜토리얼입니다. 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP의 작업에 필수적입니다.”
토큰 = text_to_word_sequence(Mystr)
토큰

#산출:
>> [ 'this' , 'is' , 'a' , 'tokenization' , 'tutorial' , 'we' , 'are' , 'learning' , 'different' , 'tokenization' , 'methods' , 'and' , 'way' , 'tokenization' , 'is' , 'essential' , 'in' , "nlp's" , 'tasks' ]

"NLP"라는 단어를 단일 토큰으로 취급했음을 유의하십시오. 또한, 이 케라스 토크나이저는 추가 보너스인 모든 토큰을 소문자로 처리했습니다.

Gensim 토큰나이저

Gensim은 NLP 기반 작업 및 주제 모델링을 처리하기 위한 또 다른 인기 있는 라이브러리입니다. gensim.utils 클래스는 토큰화 작업에 사용할 수 있는 tokenize 메서드를 제공합니다.

단어 토큰화

gensim.utils 에서 가져오기 토큰화
Mystr = “토큰화 튜토리얼입니다. 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP의 작업에 필수적입니다.”

목록(토큰화(Mystr))

#산출:
>> [ 'This' , 'is' , 'a' , 'tokenization' , 'tutorial' , 'We' , 'are' , 'learning' , 'different' , 'tokenization' , 'methods' , 'and' , '방법' , '토큰화' , 'is' , 'essential' , 'in' , 'NLP' , 's' , 'tasks' ]

문장 토큰화

문장 토큰화를 위해 gensim.summarization.textcleaner 클래스의 split_sentences 메소드를 사용합니다.

gensim.summarization.textcleaner 에서 split_sentences 가져오기

Mystr = “토큰화 튜토리얼입니다. 다양한 토큰화 방법과 방법을 배우고 있습니까? 토큰화는 NLP의 작업에 필수적입니다.”

토큰 = split_sentences( Mystr )
토큰

#산출:
>> [ '토큰화 튜토리얼입니다.' , '다양한 토큰화 방법과 방법을 배우고 있습니까?' , "토큰화는 NLP의 작업에 필수적입니다." ]

가기 전에

이 튜토리얼에서는 애플리케이션을 기반으로 텍스트 데이터를 토큰화하는 다양한 방법에 대해 논의했습니다. 이것은 NLP 파이프라인의 필수 단계이지만 토큰화를 진행하기 전에 데이터를 정리해야 합니다.

기계 학습 및 AI에 대해 자세히 알아보려면 IIIT-B 및 upGrad의 기계 학습 및 AI PG 디플로마를 확인하세요. 이 PG 디플로마는 일하는 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제를 제공합니다. IIIT-B 동문 자격, 5개 이상의 실용적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

AI 주도 기술 혁명 주도

기계 학습 및 인공 지능 PG 디플로마
더 알아보기