[파이썬] nltk 텍스트 스트리밍 및 실시간 분석

nltk-logo

Natural Language Toolkit (NLTK)는 파이썬에서 자연어 처리를 위한 도구 모음입니다. NLTK는 형태소 분석, 토큰화, 품사 태깅, 청크 단위로 묶기, 문장 구문 분석 등 다양한 자연어 처리 작업을 수행할 수 있습니다. 이번 블로그는 NLTK를 사용하여 텍스트 스트리밍을 실시간으로 분석하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 설치하기

NLTK를 사용하기 위해서는 NLTK 라이브러리를 설치해야 합니다. 터미널 또는 명령 프롬프트에서 다음 명령을 실행하여 NLTK를 설치합니다.

pip install nltk

텍스트 데이터 스트리밍하기

트위터나 RSS 피드와 같이 실시간으로 생성되는 텍스트 데이터를 처리하기 위해 스트리밍을 사용할 수 있습니다. NLTK에서는 nltk.twitter 모듈을 통해 트위터 스트리밍 API를 사용할 수 있습니다.

애플리케이션을 등록하고 Twitter API 키를 발급 받은 후, 아래의 예제 코드를 사용하여 텍스트 데이터를 스트리밍할 수 있습니다.

import nltk
from nltk.twitter import TwitterStream

# Twitter API 키 설정
api_key = 'YOUR_API_KEY'
api_secret = 'YOUR_API_SECRET'
access_token = 'YOUR_ACCESS_TOKEN'
access_token_secret = 'YOUR_ACCESS_TOKEN_SECRET'

# Twitter 스트리밍 객체 생성
stream = TwitterStream(consumer_key=api_key, consumer_secret=api_secret,
                       token=access_token, token_secret=access_token_secret)

# 키워드 필터링해서 트윗 스트림 얻기
tweets = stream.statuses.filter(track='python')

for tweet in tweets:
    # 트윗 처리 코드 작성
    print(tweet['text'])

위의 코드는 NLTK의 Twitter 스트리밍을 사용하여 ‘python’ 키워드를 포함하는 트윗을 스트리밍합니다. api_key, api_secret, access_token, access_token_secret 값을 본인의 키로 설정하면 됩니다.

텍스트 데이터 실시간 분석하기

스트리밍 데이터를 받아와서 실시간으로 분석하는 것도 가능합니다. NLTK의 텍스트 분석 기능을 사용하여 텍스트 데이터를 처리할 수 있습니다.

다음은 스트리밍 데이터에서 특정 단어의 출현 빈도를 실시간으로 계산하는 예제 코드입니다.

import nltk
from nltk.twitter.util import t2w

# Twitter API 키 설정
api_key = 'YOUR_API_KEY'
api_secret = 'YOUR_API_SECRET'
access_token = 'YOUR_ACCESS_TOKEN'
access_token_secret = 'YOUR_ACCESS_TOKEN_SECRET'

# Twitter 스트리밍 객체 생성
stream = TwitterStream(consumer_key=api_key, consumer_secret=api_secret,
                       token=access_token, token_secret=access_token_secret)

# 키워드 필터링해서 트윗 스트림 얻기
tweets = stream.statuses.filter(track='python')

# 단어 빈도 딕셔너리 초기화
word_freq = {}

for tweet in tweets:
    # 트윗 텍스트 추출
    text = tweet['text']
    
    # 텍스트를 단어로 분리
    words = nltk.word_tokenize(text)
    
    # 단어 빈도 계산
    for word in words:
        word = word.lower()
        if word.isalpha():
            if word in word_freq:
                word_freq[word] += 1
            else:
                word_freq[word] = 1
    
    # 분석 결과 출력
    print(word_freq)

위의 코드는 스트리밍 데이터에서 ‘python’ 키워드를 포함하는 트윗의 단어 빈도를 실시간으로 계산합니다. api_key, api_secret, access_token, access_token_secret 값을 본인의 키로 설정하고, 원하는 키워드로 track 값을 변경하면 됩니다.

위의 예제 코드를 참고하여 NLTK를 사용하여 텍스트 스트리밍을 생성하고 실시간으로 분석하는 방법을 응용하여 다양한 자연어 처리 작업을 수행할 수 있습니다.

참고 문서: NLTK Documentation