[python] NLTK를 사용해 텍스트 추론을 수행하는 방법은 무엇인가요?
자연어 처리 툴킷(Natural Language Toolkit, NLTK)는 텍스트 처리 및 분석을 위한 파이썬 라이브러리입니다. NLTK를 사용하여 텍스트 추론을 수행하는 방법은 다음과 같습니다:
-
NLTK 설치하기
pip install nltk
-
NLTK 패키지 가져오기
import nltk
-
텍스트 전처리하기
텍스트 전처리는 텍스트 데이터를 정제하고 필요한 변환을 수행하는 단계입니다. 예를 들어, 특수 문자 제거, 대소문자 변환, 토큰화 및 불용어 제거 등의 작업을 수행할 수 있습니다. 다음은 간단한 예시입니다:
from nltk.tokenize import word_tokenize from nltk.corpus import stopwords def preprocess_text(text): # 소문자 변환 text = text.lower() # 토큰화 tokens = word_tokenize(text) # 불용어 제거 stop_words = set(stopwords.words('english')) tokens = [token for token in tokens if token not in stop_words] return tokens
-
문서 임베딩 생성하기
텍스트를 벡터 형식으로 변환하는 문서 임베딩 작업을 수행합니다. NLTK에서는 다양한 방법을 제공합니다. 예를 들어, 단어 빈도 기반(TF-IDF) 벡터화, Word2Vec, GloVe 등을 사용할 수 있습니다.
from nltk.text import TextCollection from nltk.tokenize import word_tokenize from nltk.corpus import stopwords from sklearn.feature_extraction.text import TfidfVectorizer def create_tfidf_vector(docs): # 전처리 docs = [preprocess_text(doc) for doc in docs] # 문서 모음 생성 text_collection = TextCollection(docs) # TfidfVectorizer를 사용하여 TF-IDF 벡터화 vectorizer = TfidfVectorizer() tfidf_matrix = vectorizer.fit_transform(docs) return tfidf_matrix
-
텍스트 추론 모델 학습하기
벡터 형식으로 변환된 텍스트 데이터를 사용하여 추론 모델을 학습합니다. NLTK에서는 분류(classification) 및 회귀(regression) 문제에 대한 다양한 알고리즘을 제공합니다. 예를 들어, Naive Bayes, SVM, Decision Tree 등을 사용할 수 있습니다.
from nltk.classify import NaiveBayesClassifier def train_classifier(train_data): # NLTK의 Naive Bayes 분류기를 사용하여 모델 학습 classifier = NaiveBayesClassifier.train(train_data) return classifier
-
모델 평가 및 예측하기
학습된 모델을 사용하여 텍스트 데이터의 클래스 레이블을 예측하고 평가할 수 있습니다. NLTK에서는 다양한 평가 지표를 제공합니다.
from nltk import metrics def evaluate_classifier(classifier, test_data): # 모델 평가 accuracy = nltk.classify.accuracy(classifier, test_data) precision = metrics.precision(classifier, test_data) recall = metrics.recall(classifier, test_data) f_measure = metrics.f_measure(classifier, test_data) return accuracy, precision, recall, f_measure
이렇게 NLTK를 사용하여 텍스트 추론을 수행할 수 있으며, 실제 데이터에 따라 전처리 및 모델 선택을 조정하면 됩니다.
참고 자료: