본문 바로가기
인공지능

자연어 데이터 전처리 방법 - 영어

by judy@ 2023. 5. 15.

목차

1. 문장 토큰화

2. 단어 토큰화

3. 정규 표현식을 통한 토큰화

4. 불용어 제거


전처리 대상 정의

전처리는 아래와 같이 3개의 문장으로 정의된 문단을 사용한다.

para = "Hello everyone. It's good to see you. Let's start out text mining class!"

 

 

1. 문장 토큰화

위 문단을 문장 단위로 토큰화하는 nltk의 sent_tokenize로 토큰화하면 아래와 같이 분할된다. 

import nltk

nltk.download('punkt')
nltk.download('webtext')

from nltk.tokenize import sent_tokenize
print(sent_tokenize(para))
['Hello everyone.', "It's good to see you.", "Let's start out text mining class!"]

 

2. 단어 토큰화

위 문단을 단어 단위로 토큰화하는 nltk의 word_tokenize로 토큰화하면 아래와 같이 분할된다.

from nltk.tokenize import word_tokenize

print(word_tokenize(para))
['Hello', 'everyone', '.', 'It', "'s", 'good', 'to', 'see', 'you', '.', 'Let', "'s", 'start', 'out', 'text', 'mining', 'class', '!']

 

3. 정규표현식을 통한 단어 토큰화

위 두 방법 외에도 정규표현식을 통해 아래와 같이 토큰화할 수 있다. 정규표현식을 활용하면 필요없는 문자 등의 노이즈도 제거할 수 있다. 아래 정규표현식은 공백을 기준으로 주어진 문단을 단어로 토큰화하기 위한 식이다.

from nltk.tokenize import RegexpTokenizer

tokenizer = RegexpTokenizer("[\w']+")
tokens = tokenizer.tokenize(para)
print(tokens)
['Hello', 'everyone', "It's", 'good', 'to', 'see', 'you', "Let's", 'start', 'out', 'text', 'mining', 'class']

 

4. 불용어 제거

불용어는 실제 사용되는 단어이지만 분석에는 별 필요가 없는 단어를 말하며 영어에서는 with, to, do 등이 될 수 있다. 아래는 토큰 목록에서 불용어를 제거하는 코드로 english_stops 에는 불용어 목록이, tokens에는 정규표현식을 통해 토큰화한 단어 목록이 있다.

nltk.download('stopwords')
from nltk.corpus import stopwords

english_stops = set(stopwords.words('english'))
[word for word in tokens if word not in english_stops]
['Hello',
 'everyone',
 "It's",
 'good',
 'see',
 "Let's",
 'start',
 'text',
 'mining',
 'class']

 

 

반응형