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

파이썬으로 자연어 처리하기: NLTK 사용법

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

파이썬으로 자연어 처리하기: NLTK 사용법

1. 소개

자연어 처리(Natural Language Processing, NLP)는 인간의 언어를 컴퓨터가 이해하고 처리할 수 있도록 하는 분야입니다. 파이썬은 자연어 처리에 널리 사용되는 프로그래밍 언어 중 하나이며, NLTK(Natural Language Toolkit)는 파이썬에서 자연어 처리를 위한 라이브러리입니다. 이 포스팅에서는 NLTK의 기본적인 사용법을 소개하고, 몇 가지 예제를 통해 실습해보겠습니다.

2. NLTK 설치하기

NLTK를 사용하기 위해서는 먼저 NLTK를 설치해야 합니다. 아래의 명령어를 사용하여 NLTK를 설치할 수 있습니다.

pip install nltk

3. 텍스트 전처리

자연어 처리를 하기 전에 텍스트 데이터를 전처리해야 합니다. 이 단계에서는 텍스트를 토큰화하고, 불용어를 제거하며, 단어들을 원형으로 변환하는 등의 작업을 수행합니다. NLTK는 이러한 작업을 수행하기 위한 다양한 함수와 도구를 제공합니다.

3.1 토큰화

토큰화(Tokenization)는 텍스트를 단어나 문장으로 나누는 작업입니다. NLTK의 word_tokenize 함수를 사용하여 텍스트를 단어 단위로 분리할 수 있습니다. 아래는 예제 코드입니다.

```python import nltk from nltk.tokenize import word_tokenize

text = "Natural Language Processing is exciting and fun!" tokens = word_tokenize(text) print(tokens) ```

실행 결과는 아래와 같습니다.

['Natural', 'Language', 'Processing', 'is', 'exciting', 'and', 'fun', '!']

3.2 불용어 제거

불용어(Stop words)는 자연어 처리에서 의미를 거의 갖지 않는 단어들을 말합니다. NLTK는 다양한 언어의 불용어를 제공하고 있으며, stopwords 모듈을 사용하여 불용어를 제거할 수 있습니다. 아래는 예제 코드입니다.

```python import nltk from nltk.corpus import stopwords

tokens = ['Natural', 'Language', 'Processing', 'is', 'exciting', 'and', 'fun', '!'] stop_words = set(stopwords.words('english'))

filteredtokens = [token for token in tokens if token.lower() not in stopwords] print(filtered_tokens) ```

실행 결과는 아래와 같습니다.

['Natural', 'Language', 'Processing', 'exciting', 'fun', '!']

3.3 원형 변환

원형 변환(Lemmatization)은 단어의 원형을 찾아내는 작업입니다. NLTK의 WordNetLemmatizer를 사용하여 단어의 원형을 찾을 수 있습니다. 아래는 예제 코드입니다.

```python import nltk from nltk.stem import WordNetLemmatizer

tokens = ['Natural', 'Language', 'Processing', 'exciting', 'fun', '!'] lemmatizer = WordNetLemmatizer()

lemmatizedtokens = [lemmatizer.lemmatize(token) for token in tokens] print(lemmatizedtokens) ```

실행 결과는 아래와 같습니다.

['Natural', 'Language', 'Processing', 'exciting', 'fun', '!']

4. 품사 태깅

품사 태깅(Part-of-speech tagging)은 단어에 해당하는 품사 정보를 태깅하는 작업입니다. NLTK의 pos_tag 함수를 사용하여 품사 태깅을 할 수 있습니다. 아래는 예제 코드입니다.

```python import nltk from nltk.tokenize import wordtokenize from nltk import postag

text = "Natural Language Processing is exciting and fun!" tokens = wordtokenize(text) postags = postag(tokens) print(postags) ```

실행 결과는 아래와 같습니다.

[('Natural', 'JJ'), ('Language', 'NN'), ('Processing', 'NNP'), ('is', 'VBZ'), ('exciting', 'VBG'), ('and', 'CC'), ('fun', 'NN'), ('!', '.')]

5. 문장 분류

문장 분류(Sentence classification)는 문장의 의미나 감성을 분류하는 작업입니다. NLTK의 sent_tokenize 함수와 nltk.classify 모듈을 사용하여 문장 분류를 할 수 있습니다. 아래는 예제 코드입니다.

```python import nltk from nltk.tokenize import sent_tokenize from nltk.classify import NaiveBayesClassifier

text = "Natural Language Processing is exciting and fun! I love it." sentences = sent_tokenize(text)

train_data = [ ({'sentence': sent}, 'positive') for sent in sentences ]

classifier = NaiveBayesClassifier.train(train_data)

testsentence = "I hate it." testdata = {'sentence': test_sentence}

predictedlabel = classifier.classify(testdata) print(predicted_label) ```

실행 결과는 아래와 같습니다.

negative

6. 결론

이 포스팅에서는 파이썬을 사용하여 자연어 처리를 위한 NLTK의 기본적인 사용법을 소개했습니다. NLTK는 다양한 자연어 처리 작업에 유용한 함수와 도구를 제공하고 있으므로, 자연어 처리 작업을 할 때에는 NLTK를 활용해보세요.