[python] 파이썬을 활용한 자연어 처리(NLP)

자연어 처리(Natural Language Processing, NLP)는 인간의 언어를 컴퓨터와 같은 기계가 이해하고 분석하는 분야입니다. 파이썬은 NLP 작업을 위한 강력하고 유연한 도구로 널리 사용됩니다. 이번 블로그에서는 파이썬을 사용하여 NLP를 수행하는 방법에 대해 알아보겠습니다.

1. NLP 라이브러리 소개

파이썬에서 NLP 작업을 수행하는 데에는 여러 라이브러리들이 존재합니다. 그 중에서도 자연어 처리를 위한 대표적인 라이브러리로는 다음이 있습니다:

2. 텍스트 전처리

NLP 작업을 시작하기 전에 텍스트 데이터를 토큰화, 정제, 정규화하는 전처리가 필요합니다. 이를 위해 다음과 같은 작업이 수행됩니다:

import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer, WordNetLemmatizer

text = "Natural language processing is a subfield of artificial intelligence."
tokens = word_tokenize(text)
stop_words = set(stopwords.words('english'))
filtered_tokens = [word for word in tokens if word.lower() not in stop_words]
stemmer = PorterStemmer()
lemmatizer = WordNetLemmatizer()
stemmed_tokens = [stemmer.stem(word) for word in filtered_tokens]
lemmatized_tokens = [lemmatizer.lemmatize(word) for word in filtered_tokens]

3. 문서 분류

NLP는 텍스트를 특정 주제에 따라 분류하고 분석하는 데에도 사용됩니다. 기계 학습(Machine Learning) 알고리즘을 활용하여 텍스트 문서를 다양한 카테고리로 분류할 수 있습니다.

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

text_data = ["Python is a popular programming language.",
             "NLP enables machines to understand and interpret human language.",
             "Data science involves analyzing and interpreting complex data sets."]

target = [0, 1, 2]  # Categories for the text data

model = make_pipeline(TfidfVectorizer(), MultinomialNB())
X_train, X_test, y_train, y_test = train_test_split(text_data, target, test_size=0.2, random_state=42)
model.fit(X_train, y_train)
predicted_categories = model.predict(X_test)
accuracy = accuracy_score(y_test, predicted_categories)

결론

파이썬을 활용한 자연어 처리는 다양한 영역에서 활용되고 있으며, 위에서 언급된 방법들을 통해 NLP 작업을 수행할 수 있습니다. NLTK, SpaCy, gensim, TextBlob와 같은 라이브러리들을 활용하여 NLP 작업의 복잡성을 감소시킬 수 있으며, 해당 분야의 지식과 함께 파이썬을 사용하여 다양한 텍스트 기반 애플리케이션을 개발할 수 있습니다.

참고 문헌