머신러닝/NLP
Word Tokenization (단어 토큰화)
su0a
2024. 5. 13. 18:24
1. 단어 토큰화
문장 내에서 단어를 기준으로 토큰화
2. 단어 토큰화 함수
from nltk.tokenize import word_tokenize
from nltk.tokenize import WordPunctTokenizer
from tensorflow.keras.preprocessing.text import text_to_word_sequence
word_tokenize, WordPunctTokenizer, text_to_word_sequence 함수는 각각 아포스트로피(작은따옴표- ' ) 를 처리하는 방법이 다름
(1) word_tokenize
print('word_tokenize 함수를 사용한 토큰화 :',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."))
위 코드 실행 결과
word_tokenize 함수를 사용한 토큰화 : ['Do', "n't", 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', ',', 'Mr.Jone', "'s", 'Orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop', '.']
(2) WordPunctTokenizer
print('WordPunctTokenizer 함수를 사용한 토큰화: ',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."))
위 코드 실행 결과
WordPunctTokenizer 함수를 사용한 토큰화: ['Don', "'", 't', 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', ',', 'Mr', '.', 'Jone', "'", 's', 'Orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop', '.']
(3) text_to_word_sequence
print('text_to_word_sequence 함수를 사용한 토큰화: ',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."))
위 코드 실행 결과
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. 토큰화에서 고려해야 할 사항
1) 구두점이나 특수 문자를 단순 제외해서는 안됨
Ph.D 처럼 단어 자체에 구두점을 갖고 있는 경우나 01/02/06 처럼 슬래시로 날짜임을 암시하는 경우 해당 문자를 단순 제외하면 의미가 불분명해질 수 있음
2) 줄임말이 있는 경우 접어를 처리할 수 있어야 함
3) 하나의 단어 내에 띄어쓰기가 있는 경우에도 하나의 토큰으로 처리할 수 있어야 함
4. 문장 토큰화
corpus 내에서 문장 단위로 토큰화
5. 문장 토큰화 함수
영어문장의 토큰화를 수행하는 경우 - NLTK
from nltk.tokenize import sent_tokenize
한글문장의 토큰화를 수행하는 경우 - KSS
import kss
6. 품사 태깅
단어의 표기는 같지만 품사에 따라서 단어의 의미가 달라지기도 함
ex) fly - 동사: 날다, 명사: 파리
7. 품사 태깅 함수
영어 품사 태깅 - NLTK
from nltk.tag import pos_tag
pos_tag(sentence)
한글 품사 태깅 - KoNLPy
from konlpy.tag import Okt
from konlpy.tag import Kkma
okt.pos(sentence)
kkma.pos(sentence)