티스토리 뷰

728x90

자연어 처리에서 가장 중요한 전처리 작업이 바로 "텍스트 전처리" 입니다.

텍스트 전처리를 하는데에 있어 Python에는 다양한 라이브러리가 존재하지만

오늘은 NLTK를 이용하여 처리하는 작업을 수행해보겠습니다.

필요한 라이브러리 설치

  • pip3 install nltk

먼저 토큰화를 진행하기 위해서는 아래와 같이 "punkt"라는 것을 설치해주어야 합니다.

1
2
3
import nltk
 
nltk.download('punkt')
cs

###만약 아나콘다 환경이 아니며 설치시 오류가 난다면 아래링크를 참조해보세요.
programmers.co.kr/learn/courses/21/lessons/946#noteprogrammers.co.kr/learn/courses/21/lessons/946#note%EF%BB%BF

그럼 바로 실습으로 넘어가도록 하겠습니다.

문구를 이용하여 각 단어로 분할하는 작업 즉 토큰화를 수행해보도록 하겠습니다.

1
2
3
4
from nltk.tokenize import word_tokenize

EM = "I finished watching Miss Kobayashi's Dragon Maid. We now need Dragon girls too."
token = word_tokenize(EM)
cs

보통 위와 같은 방법으로 토큰화를 많이 진행하지만 ['s] 와 같이 어파스트로피를 함께 처리해주지 못합니다.

그런 경우에는 아래와 같은 방법으로 수행해주면 됩니다.

1
2
3
4
from nltk.tokenize import TweetTokenizer
tokeniz = TweetTokenizer()
 
token = tokeniz.tokenize(EM)
cs

저는 두번째 방법으로 수행한 결과를 이용하여 진행하도록 하겠습니다.

문단의 토큰화를 진행했으니 분석을 위해서는 이에 대해서 쓸모없는 단어 혹은 특수문자 등은 지워주는게 좋겠죠?

그렇기 위해서는 불용어(Stop word)와 특수문자를 지워주도록 하겠습니다.

아까와 같이 불용어를 다운로드 하겠습니다.

1
2
3
import nltk
 
nltk.download('stopwords')
cs

이제 불용어+특수문자 처리를 수행해보도록 하겠습니다.

1
2
3
4
5
from nltk.corpus import stopwords #불용어
from string import punctuation #특수문자
 
stop_words = stopwords.words('english'+ list(punctuation) 
filtered_sentence = [w for w in token if not w.lower() in stop_words]
cs

결과를 보시면 불용어와 특수문자인 ["I", "We", "now", "too", "."] 가 삭제되었습니다.

728x90
댓글
250x250
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함