토큰화
토큰화란?? 간단히 말해서 텍스트를 단어 또는 문장으로 분할합니다…
여기서는 NLP에서 사용할 수 있는 다양한 토크나이저에 대해 살펴보겠습니다.
- 여백
text = 'Earth was born around 4.54 billion years ago.'
print(text.split())
# output
# ['Earth', 'was', 'born', 'around', '4.54', 'billion', 'years', 'ago.']
2. 특정 분할
공백과 동일하지만 여기서는 split원하는 스플리터를 제공합니다.
text = 'Egypt, a country linking northeast Africa with the Middle East, dates to the time of the pharaohs.'
print(text.split(','))
# output
# ['Egypt', ' a country linking northeast Africa with the Middle East', ' dates to the time of the pharaohs.']
3. NLTK
NLTK는 인간 언어 데이터로 작업하는 Python 프로그램을 구축하기 위한 선도적인 플랫폼입니다. 사용할 수 있는 많은 토크나이저가 있습니다.
l) word_toknizer: 분할 기능의 문제를 해결합니다.
ll) sent_tokenize: 이전에 학습한 모델로 분할 텍스트를 사용합니다.
lll) wordpunct_tokenize: 여기에서 모든 단어와 구두점을 분할합니다.
lV) TreebankWordTokenizer: 텍스트를 이러한 구두점 ?!.,;으로 분할하는 한편, 영어 단어에 대한 다양한 공통 규칙입니다.
V) TweetTokenizer: 이 문장 부호로 텍스트를 분할 ?!.,;하므로 이모티콘
Vl) MWETokenizer:add_mwe 여기에서 이 토크나이저가 제공 하는 대로 원하는 대로 토큰을 추가할 수 있습니다 .
4. 텍스트블롭
TextBlob은 텍스트 데이터 처리를 위한 Python(2 및 3) 라이브러리입니다 . 품사 태깅, 명사구 추출, 감정 분석, 분류, 번역 등과 같은 일반적인 자연어 처리(NLP) 작업에 들어가기 위한 간단한 API를 제공합니다.
from textblob import TextBlob
text="""But I'm glad you'll see me as I am. Above all, I wouldn't want people to think that I want to
prove anything. I don't want to prove anything, I just want to live; to cause no evil to anyone but myself.
I have that right, haven't I? Leo Tolstoy """
blob_object= TextBlob(text) # Word tokenization of the text
text_words = blob_object.words # To see all tokens
print(text_words) # To count the number of tokens
print(len(text_words))
# output
# ['But', 'I', "'m", 'glad', 'you', "'ll", 'see', 'me', 'as', 'I', 'am', 'Above', 'all', 'I', 'would', "n't", 'want', 'people', 'to', 'think', 'that', 'I', 'want', 'to', 'prove', 'anything', 'I', 'do', "n't", 'want', 'to', 'prove', 'anything', 'I', 'just', 'want', 'to', 'live', 'to', 'cause', 'no', 'evil', 'to', 'anyone', 'but', 'myself', 'I', 'have', 'that', 'right', 'have', "n't", 'I', 'Leo', 'Tolstoy']
# 55
5. 여유
spaCy는 Python의 자연어 처리를 위한 무료 오픈 소스 라이브러리입니다 . NER, POS 태그 지정, 종속성 구문 분석, 단어 벡터 등을 제공합니다.
6. 젠심
Gensim: Radim Rehurek이 작성한 비지도 토픽 모델링 및 자연어 처리 에 사용되는 Python의 오픈 소스 라이브러리입니다 . 문서에서 의미론적 주제를 추출하도록 설계되었습니다. 대용량 텍스트 컬렉션을 처리할 수 있습니다.
7. 케라스
Keras는 오픈 소스 라이브러리로 가장 신뢰할 수 있는 딥 러닝 프레임워크 중 하나입니다. 토큰화를 수행하기 위해 다음을 사용합니다. Class Keras.preprocessing.text 클래스의 text_to_word_sequence 메서드. Keras의 장점은 알파벳을 토큰화하기 전에 소문자로 변환하여 시간을 상당히 절약할 수 있다는 것입니다.
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.text import text_to_word_sequence
text = "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe. #Albert Einstein"
tokinzer = Tokenizer(num_words=20) # as recommended we put here the max text length we have
tokinzer.fit_on_texts(text)
tokens = text_to_word_sequence(text)
print(tokens)
# output
# ['two', 'things', 'are', 'infinite', 'the', 'universe', 'and', 'human', 'stupidity', 'and', "i'm", 'not', 'sure', 'about', 'the', 'universe', '', 'albert', 'einstein']
8. 서브워드 기반 토큰화
인기 있는 토큰화는 단어 기반 토큰화와 문자 기반 토큰화 사이의 솔루션인 하위 단어 기반 토큰화입니다. 주요 아이디어는 단어 기반 토큰화(매우 큰 어휘 크기, 많은 수의 OOV 토큰, 매우 유사한 단어의 다른 의미) 및 문자 기반 토큰화(매우 긴 시퀀스 및 덜 의미 있는 개별 토큰)가 직면한 문제를 해결하는 것입니다.
하위 단어 기반 토큰화 알고리즘은 다음 원칙을 사용합니다.
- 자주 사용하는 단어를 더 작은 하위 단어로 나누지 마십시오.
- 드문 단어를 더 작은 의미 있는 하위 단어로 나눕니다.
도전
토큰화 작업의 문제점과 한계에 대해 논의해 봅시다.
일반적으로 이 작업은 문장의 경계를 정의하기 위해 공백이나 문장 부호를 사용하여 단어를 구분하는 영어 또는 프랑스어로 작성된 텍스트 코퍼스에 사용됩니다. 안타깝게도 이 방법은 중국어, 일본어, 한국어 태국어, 힌디어, 우르두어, 타밀어 등과 같은 다른 언어에는 적용할 수 없습니다. 이 문제로 인해 모든 언어를 결합하는 공통 토큰화 도구를 개발해야 합니다.
또 다른 제한은 아랍어가 언어로서 복잡한 형태를 가지고 있기 때문에 아랍어 텍스트의 토큰화에 있습니다. 예를 들어, 하나의 아랍어 단어는 "عقد"(eaqad)라는 단어와 같이 최대 6개의 다른 토큰을 포함할 수 있습니다.
결론
우리는 토큰화와 우리가 사용할 수 있는 많은 기술에 대해 이야기했습니다. 이 분야에서 수행된 많은 유형의 연구가 있고 성장하고 있으며 NLP가 직면한 많은 문제가 있지만 이러한 문제가 해결될 미래를 보게 될 것입니다.
이 링크 에서 코드를 볼 수 있습니다

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































