입력: Time is an illusion. Lunchtime double so!
이러한 입력으로부터 구두점을 제외시킨 토큰화 작업의 결과는 다음과 같음.
출력: "Time", "is", "an", "illusion", "Lunchtime", "double", "so"
word_tokenize
from nltk.tokenize import word_tokenize
from nltk.tokenize import WordPunctTokenizer
from tensorflow.keras.preprocessing.text import text_to_word_sequence
print('단어 토큰화 1 :', word_tokenize("Don't be fooled by the dark sounding name, Mr.Jone's Orphanage is as cheery as cheery goes for a pastry shop."))
>> 단어 토큰화 1 : ['Do', "n't", 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', ',', 'Mr.Jone', "'s", 'Orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop', '.']
print('단어 토큰화 2 :', WordPunctTokenizer().tokenize("Don't be fooled by the dark sounding name, Mr.Jone's Orphanage is as cheery as cheery goes for a pastry shop."))
>> 단어 토큰화 2 : ['Don', "'", 't', 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', ',', 'Mr', '.', 'Jone', "'", 's', 'Orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop', '.']
print('단어 토큰화 3 :', text_to_word_sequence("Don't be fooled by the dark sounding name, Mr.Jone's Orphanage is as cheery as cheery goes for a pastry shop."))
>>단어 토큰화 3 : ["don't", 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', 'mr', "jone's", 'orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop']
text_to_word_sequence
는 기본적으로 모든 알파벳을 소문자로 바꾸면서 마침표나 컴마, 느낌표 등의 구두점 제거Ph.D
, AT&T
와 같은 경우) 또는 달러($
)나 슬래시(/
)로 예를 들었을때, $45.55
와 같은 가격을 의미하기도 함. ,
)가 있는 경우, 123,456,789,
와 같은 세 자리 단위로 컴마가 있음. what're
은 what are
의 줄임말, we're
은 we are
의 줄임말 Penn Treebank Tokenization
은 다음과 같음. from nltk.tokenize import TreebankWordTokenizer
tokenizer = TreebankWordTokenizer()
text = "Starting a home-based restaurant may be an ideal. it doesn't have a food chain or restaurant of their own"
print('Treebank WordTokenizer : ', tokenizer.tokenize(text))
>> Treebank WordTokenizer : ['Starting', 'a', 'home-based', 'restaurant', 'may', 'be', 'an', 'ideal.', 'it', 'does', "n't", 'have', 'a', 'food', 'chain', 'or', 'restaurant', 'of', 'their', 'own']
from nltk.tokenize import sent_tokenize
text ='His barber kept his word. But keeping such a huge secret to himself was driving him crazy. Finally, the barber went up a mountain and almost to the edge of a clif. He dug a hole in the midst of some reeds. He looked about, to make sure no one was near.'
print('문장 토큰화 1 : ', sent_tokenize(text))
>> 문장 토큰화 1 : ['His barber kept his word.', 'But keeping such a huge secret to himself was driving him crazy.', 'Finally, the barber went up a mountain and almost to the edge of a clif.', 'He dug a hole in the midst of some reeds.', 'He looked about, to make sure no one was near.']
text = 'I am actively looking for PH.D students. and you are a Ph.D student.'
print('문장 토큰화 2 : ', sent_tokenize(text))
>> 문장 토큰화 2 : ['I am actively looking for PH.D students.', 'and you are a Ph.D student.']
import kss
text ='딥 러닝 자연어 처리가 재밌기는 합니다. 그런데 문제는 영어보다 한국어로 할 때 너무 어렵습니다. 이제 해보면 알걸요?'
print('한국어 문장 토큰화 : ',kss.split_sentences(text))
>> [Korean Sentence Splitter]: Initializing Pynori...
한국어 문장 토큰화 : ['딥 러닝 자연어 처리가 재밌기는 합니다.', '그런데 문제는 영어보다 한국어로 할 때 너무 어렵습니다.', '이제 해보면 알걸요?']
from nltk.tokenize import word_tokenize
from nltk.tag import pos_tag
text = 'I am actively looking for PH.D students. and you are a Ph.D student.'
tokenized_sentence = word_tokenize(text)
print('단어 토큰화 : ', tokenized_sentence)
print('품사 태깅 : ',pos_tag(tokenized_sentence))
>> 단어 토큰화 : ['I', 'am', 'actively', 'looking', 'for', 'PH.D', 'students', '.', 'and', 'you', 'are', 'a', 'Ph.D', 'student', '.']
>> 품사 태깅 : [('I', 'PRP'), ('am', 'VBP'), ('actively', 'RB'), ('looking', 'VBG'), ('for', 'IN'), ('PH.D', 'NNP'), ('students', 'NNS'), ('.', '.'), ('and', 'CC'), ('you', 'PRP'), ('are', 'VBP'), ('a', 'DT'), ('Ph.D', 'NNP'), ('student', 'NN'), ('.', '.')]
from konlpy.tag import Okt
from konlpy.tag import Kkma
okt = Okt()
kkma = Kkma()
print('OKT 형태소 분석 : ', okt.morphs('열심히 코딩한 당신, 연휴에는 여행을 가봐요.'))
print('OKT 품사 태깅 : ', okt.pos('열심히 코딩한 당신, 연휴에는 여행을 가봐요.'))
print('OKT 명사 추출 : ', okt.nouns('열심히 코딩한 당신, 연휴에는 여행을 가봐요.'))
print('꼬꼬마 형태소 분석 : ', kkma.morphs('열심히 코딩한 당신, 연휴에는 여행을 가봐요.'))
print('꼬꼬마 품사 태깅 : ', kkma.pos('열심히 코딩한 당신, 연휴에는 여행을 가봐요.'))
print('꼬꼬마 명사 추출 : ', kkma.nouns('열심히 코딩한 당신, 연휴에는 여행을 가봐요.'))
>> OKT 형태소 분석 : ['열심히', '코딩', '한', '당신', ',', '연휴', '에는', '여행', '을', '가봐요', '.']
>> OKT 품사 태깅 : [('열심히', 'Adverb'), ('코딩', 'Noun'), ('한', 'Josa'), ('당신', 'Noun'), (',', 'Punctuation'), ('연휴', 'Noun'), ('에는', 'Josa'), ('여행', 'Noun'), ('을', 'Josa'), ('가봐요', 'Verb'), ('.', 'Punctuation')]
>> OKT 명사 추출 : ['코딩', '당신', '연휴', '여행']
>> 꼬꼬마 형태소 분석 : ['열심히', '코딩', '하', 'ㄴ', '당신', ',', '연휴', '에', '는', '여행', '을', '가보', '아요', '.']
>> 꼬꼬마 품사 태깅 : [('열심히', 'MAG'), ('코딩', 'NNG'), ('하', 'XSV'), ('ㄴ', 'ETD'), ('당신', 'NP'), (',', 'SP'), ('연휴', 'NNG'), ('에', 'JKM'), ('는', 'JX'), ('여행', 'NNG'), ('을', 'JKO'), ('가보', 'VV'), ('아요', 'EFN'), ('.', 'SF')]
>> 꼬꼬마 명사 추출 : ['코딩', '당신', '연휴', '여행']