텍스트 데이터는 다양한 분야에서 중요한 정보를 제공하는데 사용됩니다. 그러나 실제로 이러한 데이터를 활용하기 위해서는 전처리 과정을 거쳐야 합니다. 텍스트 데이터를 전처리하는 과정은 데이터의 정제, 변환, 토큰화 등을 포함합니다. 이번 블로그 포스트에서는 Python에서 텍스트 데이터 전처리를 수행하는 가장 일반적인 기술들을 살펴보겠습니다.
1. 정규표현식 활용
정규표현식은 텍스트 데이터에서 특정한 패턴을 찾거나 변형하기 위해 사용됩니다. Python에서는 re
모듈을 통해 정규표현식을 지원합니다.
import re
text = "Hello, my email is example@email.com"
pattern = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b"
email = re.findall(pattern, text)
print(email) # ['example@email.com']
위의 예시는 주어진 텍스트에서 이메일 주소를 추출하는 예시입니다. 정규표현식을 사용하여 텍스트에서 이메일 패턴을 찾고, re.findall()
함수를 사용하여 모든 일치하는 패턴을 추출합니다.
2. 토큰화
텍스트 데이터를 개별적인 단어 또는 토큰으로 분리하는 것은 텍스트 마이닝 및 자연어 처리 작업에서 중요합니다. Python에서는 nltk
와 spaCy
와 같은 라이브러리를 활용할 수 있습니다.
import nltk
from nltk.tokenize import word_tokenize
text = "This is a sample sentence."
tokens = word_tokenize(text)
print(tokens) # ['This', 'is', 'a', 'sample', 'sentence', '.']
위의 예시는 주어진 문장을 개별 단어로 토큰화하는 방법을 보여줍니다. nltk.tokenize.word_tokenize()
함수를 사용하여 주어진 텍스트를 단어로 분리합니다.
3. 불용어 제거
불용어는 텍스트에서 유의미한 정보를 제공하지 않는 단어로, 분석 작업에서 제거해야 합니다. Python에서는 nltk
와 spaCy
라이브러리를 통해 불용어를 제거할 수 있습니다.
import nltk
from nltk.corpus import stopwords
text = "This is a sample sentence."
stop_words = set(stopwords.words('english'))
words = nltk.word_tokenize(text)
filtered_words = [word for word in words if word.casefold() not in stop_words]
print(filtered_words) # ['sample', 'sentence', '.']
위의 예시는 주어진 텍스트에서 영어의 불용어를 제거하는 방법을 보여줍니다. nltk.corpus.stopwords
모듈에서 영어 불용어를 가져온 후, 텍스트를 단어로 분리한 뒤, 불용어가 아닌 단어만 필터링하여 새로운 리스트를 생성합니다.
4. 텍스트 정제
텍스트 정제는 텍스트 데이터에서 노이즈, 특수 문자 및 HTML 태그 같은 불필요한 요소를 제거하는 과정입니다. Python에서는 정규표현식과 문자열 처리 함수를 활용하여 텍스트를 정제할 수 있습니다.
import re
text = "<p>This is a <strong>sample</strong> text.</p>"
clean_text = re.sub('<.*?>', '', text)
print(clean_text) # "This is a sample text."
위의 예시는 주어진 텍스트에서 HTML 태그를 제거하는 방법을 보여줍니다. re.sub()
함수를 사용하여 정규표현식 패턴에 해당하는 부분을 빈 문자열로 대체합니다.
텍스트 데이터 전처리는 텍스트 마이닝 및 자연어 처리 작업의 핵심 단계입니다. Python에서는 정규표현식, 토큰화, 불용어 제거, 텍스트 정제 등을 통해 텍스트 데이터를 전처리할 수 있습니다. 위에서 소개한 기술들은 많은 텍스트 분석 작업에 유용하게 사용될 수 있으며, 다른 기술들과 함께 조합하여 보다 정확하고 유용한 분석 결과를 얻을 수 있습니다.