[python] 문장 분류

이 블로그에서는 Python을 사용하여 문장을 분류하는 방법을 알아보겠습니다.

1. 자연어 처리 라이브러리 설치

문장을 분류하려면 먼저 자연어 처리 라이브러리를 설치해야합니다. 가장 인기 있는 자연어 처리 라이브러리 중 하나인 nltk를 사용하여 진행해 보겠습니다.

pip install nltk

2. 데이터 전처리

분류할 문장 데이터를 불러온 후, 텍스트 데이터를 전처리해야 합니다. 이 단계에는 문장을 토큰화하고, 불필요한 문자를 제거하며, 단어를 소문자로 변환하는 등의 작업이 포함됩니다.

import nltk
nltk.download('punkt')

from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from string import punctuation

# 예시 데이터
sentence = "This is an example sentence for text classification."

# 문장 토큰화
tokens = word_tokenize(sentence)

# 불용어 및 구두점 제거
stop_words = set(stopwords.words('english'))
words = [word.lower() for word in tokens if word.isalnum() and word.lower() not in stop_words and word not in punctuation]

print(words)

3. 모델 학습

전처리한 데이터를 사용하여 모델을 학습시킬 수 있습니다. 예를 들어, Naive Bayes 분류기를 사용하여 문장을 분류할 수 있습니다.

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 예시 레이블과 데이터
labels = ['positive', 'negative', 'neutral']
data = ['This is a positive sentence.', 'I am not happy with this.', 'It is okay.']

# TF-IDF 벡터화
tfidf = TfidfVectorizer()
X = tfidf.fit_transform(data)
y = labels

# 학습 및 테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Naive Bayes 모델 학습
model = MultinomialNB()
model.fit(X_train, y_train)

# 모델 평가
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy: {:.2f}%".format(accuracy * 100))

4. 예측

학습된 모델을 사용하여 새로운 문장을 분류할 수 있습니다.

new_sentence = "I feel great!"

# 새로운 문장 TF-IDF 벡터화
new_X = tfidf.transform([new_sentence])

# 모델을 사용하여 예측
predicted_label = model.predict(new_X)
print("Predicted label:", predicted_label[0])

이제 Python을 사용하여 문장을 분류하는 방법을 알아보았습니다. 다양한 모델과 전처리 기술을 사용하여 정확도를 더 높일 수 있습니다.

참고 문헌:

본 블로그는 Python을 활용하여 문장 분류하는 방법에 대한 간략한 소개를 제공합니다.