[파이썬] nltk 텍스트에서의 사건 및 상황 인식

자연어 처리(Natural Language Processing, NLP)는 인간의 언어를 컴퓨터가 이해할 수 있는 형태로 처리하는 분야입니다. NLTK(Natural Language Toolkit)는 파이썬에서 NLP를 수행하는 데에 널리 사용되는 도구 모음입니다. 이번 블로그 포스트에서는 NLTK를 사용하여 텍스트에서 사건과 상황을 인식하는 방법에 대해 알아보겠습니다.

1. 토큰화(Tokenization)

NLTK를 사용하여 텍스트를 토큰화하는 것은 매우 기본적인 작업입니다. 토큰화는 텍스트를 작은 단위로 나누는 것을 의미합니다. 이 단위는 단어, 문장, 혹은 의미있는 구조일 수 있습니다. 아래는 파이썬 코드에서 NLTK를 사용하여 텍스트를 단어로 토큰화하는 예제입니다.

import nltk

text = "NLTK 토큰화는 텍스트를 작은 단위로 나누는 과정입니다."
tokens = nltk.word_tokenize(text)

print(tokens)

위 코드를 실행하면 아래와 같은 출력이 나타납니다.

['NLTK', '토큰화는', '텍스트를', '작은', '단위로', '나누는', '과정입니다', '.']

2. 명사 추출(Noun Extraction)

NLTK를 사용하여 텍스트에서 명사를 추출할 수 있습니다. 명사는 문맥에서 중요한 정보를 담고 있을 수 있기 때문에 이러한 작업은 정보 추출에 유용합니다. 아래는 NLTK를 사용하여 텍스트에서 명사를 추출하는 예제입니다.

import nltk

text = "NLTK를 사용하여 텍스트에서 명사를 추출하는 방법을 알아보겠습니다."
tokens = nltk.word_tokenize(text)
tagged_tokens = nltk.pos_tag(tokens)
nouns = [word for word, pos in tagged_tokens if pos.startswith('N')]

print(nouns)

위 코드를 실행하면 아래와 같은 출력이 나타납니다.

['NLTK', '텍스트', '명사', '추출', '방법']

3. 개체명 인식(Named Entity Recognition)

개체명 인식은 텍스트에서 주어진 문맥에서 이름이 있는 개체(예: 사람, 장소, 회사 등)를 식별하는 작업입니다. NLTK를 사용하여 개체명 인식을 수행하는 방법을 살펴보겠습니다. 아래는 NLTK에서 제공하는 개체명 인식기를 사용하여 텍스트에서 개체명을 추출하는 예제입니다.

import nltk

text = "구글은 미국의 다국적 기업입니다."
tokens = nltk.word_tokenize(text)
tagged_tokens = nltk.pos_tag(tokens)
entities = nltk.chunk.ne_chunk(tagged_tokens)

for entity in entities:
    if hasattr(entity, 'label'):
        print(entity.label(), ' '.join(c[0] for c in entity))

위 코드를 실행하면 아래와 같은 출력이 나타납니다.

ORGANIZATION 구글
GPE 미국

결론

NLTK를 사용하여 텍스트에서 사건과 상황을 인식하는 방법에 대해 알아보았습니다. 위에서 소개한 기술들은 NLP의 핵심 작업들 중 일부에 불과합니다. NLTK는 이 외에도 품사 태깅, 의미 분석, 감성 분석 등 다양한 작업을 수행할 수 있는 도구입니다. 자연어 처리에 관심이 있는 분들에게는 NLTK를 익히는 것을 추천합니다.