본문 바로가기
■ 칼퇴를 위한 파이썬 : 사례

파이썬으로 데이터 전처리하기: 자연어 처리

by 포탈메이커 2023. 7. 20.

파이썬으로 데이터 전처리하기: 자연어 처리

소개

자연어 처리는 인공지능 및 기계 학습 분야에서 중요한 역할을 하는데, 이를 위해 데이터 전처리는 매우 중요한 단계입니다. 파이썬은 다양한 라이브러리를 제공하여 데이터 전처리를 효과적으로 수행할 수 있습니다. 이번 포스팅에서는 파이썬을 사용하여 자연어 처리를 위한 데이터 전처리 방법을 알아보겠습니다.

텍스트 데이터 불러오기

텍스트 데이터를 불러오는 첫 번째 단계는 데이터를 파이썬으로 불러오는 것입니다. 텍스트 파일을 불러올 때에는 open() 함수를 사용하여 파일을 열고, read() 함수를 사용하여 파일 내용을 읽어올 수 있습니다. 다음은 예시 코드입니다.

python file_path = "data.txt" with open(file_path, 'r', encoding='utf-8') as file: text_data = file.read()

위 코드에서 file_path 변수에는 텍스트 파일의 경로를 입력하시면 됩니다. 그리고 open() 함수를 사용하여 파일을 열고, read() 함수를 사용하여 파일 내용을 text_data 변수에 저장합니다.

텍스트 정제하기

방금 불러온 텍스트 데이터는 정제되지 않은 상태일 수 있습니다. 정제란 특수문자, HTML 태그, 불필요한 공백 등을 제거하여 텍스트 데이터를 깨끗한 상태로 만드는 과정을 의미합니다. 이를 위해 정규 표현식을 사용할 수 있습니다. 다음은 예시 코드입니다.

```python import re

def clean_text(text): # HTML 태그 제거 text = re.sub('<.*?>', '', text) # 특수문자 제거 text = re.sub('[^a-zA-Z0-9ㄱ-ㅣ가-힣]', ' ', text) # 공백 제거 text = re.sub('\s+', ' ', text) return text

cleanedtext = cleantext(text_data) ```

위 코드에서 clean_text() 함수는 텍스트 데이터를 인자로 받아 정제된 텍스트를 반환합니다. re.sub() 함수를 사용하여 정규 표현식에 맞는 패턴을 찾아 지정된 문자로 대체합니다. 예제 코드에서는 HTML 태그, 특수문자, 공백을 제거한 후 반환합니다.

텍스트 토큰화

텍스트 토큰화는 텍스트 데이터를 단어로 나누는 작업을 의미합니다. 토큰화는 문장을 단어 단위로 분리하는 워드 토큰화, 단어를 음절 단위로 분리하는 음절 토큰화 등 다양한 기법이 있습니다. 가장 일반적인 방법은 워드 토큰화입니다. 워드 토큰화를 위해 자주 사용되는 라이브러리로는 nltkKoNLPy가 있습니다. 다음은 예시 코드입니다.

```python from nltk.tokenize import word_tokenize

tokens = wordtokenize(cleanedtext) ```

위 코드에서 word_tokenize() 함수는 텍스트 데이터를 인자로 받아 단어로 나눈 후 토큰 리스트를 반환합니다. 이를 tokens 변수에 저장합니다.

텍스트 정규화

텍스트 정규화는 텍스트 데이터를 일관된 형태로 변환하는 작업입니다. 대문자를 소문자로 변환하거나, 단어의 원형을 추출하는 등의 작업을 포함합니다. 다음은 예시 코드입니다.

```python def normalizetext(tokens): normalizedtokens = [token.lower() for token in tokens] return normalized_tokens

normalizedtokens = normalizetext(tokens) ```

위 코드에서 normalize_text() 함수는 토큰 리스트를 인자로 받아 토큰들을 소문자로 변환하여 반환합니다.

불용어 처리

불용어란 자주 등장하지만 의미를 가지지 않는 단어를 의미합니다. 예를 들어 'the', 'is', 'are' 등의 단어는 자주 등장하지만 문맥을 이해하는 데 큰 도움을 주지 않는 경우가 많습니다. 이러한 불용어를 제거함으로써 자연어 처리의 정확도를 높일 수 있습니다. 다음은 예시 코드입니다.

```python from nltk.corpus import stopwords

def removestopwords(tokens): stopwordlist = stopwords.words('english') # 영어 불용어 리스트 사용 filteredtokens = [token for token in tokens if token not in stopwordlist] return filtered_tokens

filteredtokens = removestopwords(normalized_tokens) ```

위 코드에서 remove_stopwords() 함수는 정규화된 토큰 리스트를 인자로 받아 불용어를 제거한 후 반환합니다. stopwords.words() 함수를 사용하여 영어 불용어 리스트를 불러옵니다.

결과 확인

마지막으로 데이터 전처리를 마친 텍스트를 확인해봅시다.

python print(filtered_tokens)

위 코드는 데이터 전처리가 완료된 텍스트를 출력합니다. 데이터 전처리를 통해 텍스트 데이터를 효과적으로 처리할 수 있습니다.

결론

이번 포스팅에서는 파이썬을 사용하여 자연어 처리를 위한 데이터 전처리 방법을 간단히 알아보았습니다. 텍스트 데이터 불러오기, 텍스트 정제하기, 텍스트 토큰화, 텍스트 정규화, 불용어 처리 등 다양한 단계를 거쳐 자연어 처리에 필요한 데이터를 전처리할 수 있습니다. 데이터 전처리를 효과적으로 수행하여 자연어 처리의 성능을 높여보세요.