파이썬을 활용한 페이스북 게시글 Sentiment analysis

소개

Sentiment analysis(감성 분석)은 텍스트 데이터에서 긍정적, 부정적 또는 중립적인 감성을 자동으로 분석하는 기술입니다. 이 기술은 소셜 미디어 플랫폼에서 많은 가치를 가지고 있습니다. 페이스북은 세계에서 가장 큰 소셜 미디어 플랫폼 중 하나이며, 사용자들이 게시하는 글과 댓글에는 다양한 감성이 담겨있습니다. 이제 우리는 파이썬을 사용하여 페이스북 게시글의 감성을 분석해보겠습니다.

필요한 라이브러리 설치

이 프로젝트를 위해 우선 몇 가지 파이썬 라이브러리를 설치해야 합니다:

pip install nltk
pip install requests
pip install pandas

페이스북 API 연결

페이스북 API를 사용하여 게시글 데이터에 접근할 수 있습니다. 페이스북 개발자 사이트에서 앱을 생성하고 인증 토큰을 발급받아야 합니다. 발급받은 토큰을 사용하여 API를 호출할 수 있습니다.

import requests

access_token = 'YOUR_ACCESS_TOKEN'
page_id = 'YOUR_PAGE_ID'

def get_posts():
    url = f'https://graph.facebook.com/{page_id}/posts?access_token={access_token}'
    response = requests.get(url)
    posts = response.json()['data']
    return posts

위의 코드는 get_posts 함수를 정의하여 페이스북 페이지의 게시글을 가져오는 역할을 합니다. YOUR_ACCESS_TOKENYOUR_PAGE_ID에 각각 액세스 토큰과 페이지 ID를 입력해주어야 합니다.

텍스트 전처리

NLTK(Natural Language Toolkit)는 자연어 처리를 위한 파이썬 라이브러리입니다. 이를 사용하여 텍스트 데이터를 전처리할 수 있습니다. 전처리 단계에는 토큰화, 불용어 제거, 어간 추출 등이 포함될 수 있습니다.

import nltk
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('wordnet')

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

def preprocess_text(text):
    tokens = word_tokenize(text)
    tokens = [word.lower() for word in tokens if word.isalpha()]
    stop_words = set(stopwords.words('english'))
    tokens = [word for word in tokens if word not in stop_words]
    lemmatizer = WordNetLemmatizer()
    tokens = [lemmatizer.lemmatize(word) for word in tokens]
    
    return tokens

위의 코드는 preprocess_text 함수를 정의하여 텍스트 데이터를 전처리하는 역할을 합니다. 이 함수는 텍스트를 토큰화하고 소문자로 변환한 뒤, 불용어를 제거하고 어간을 추출합니다.

감성 분석 모델 생성

이제 텍스트 데이터를 전처리한 후, 텍스트의 감성을 예측하는 모델을 생성해야 합니다. 기계 학습 알고리즘 중 하나인 Support Vector Machine(SVM)을 사용하여 이 작업을 수행할 수 있습니다.

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import classification_report

def sentiment_analysis(posts):
    texts = []
    labels = []

    for post in posts:
        text = preprocess_text(post['message'])
        label = post['sentiment']
        texts.append(' '.join(text))
        labels.append(label)

    vectorizer = TfidfVectorizer()
    X = vectorizer.fit_transform(texts)
    y = labels

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

    classifier = SVC()
    classifier.fit(X_train, y_train)

    y_pred = classifier.predict(X_test)

    print(classification_report(y_test, y_pred))

위의 코드는 sentiment_analysis 함수를 정의하여 감성 분석을 수행하는 역할을 합니다. 이 함수는 텍스트 데이터를 전처리하고 TF-IDF 벡터로 변환한 다음 SVM 모델을 훈련시키고 결과를 분석합니다.

실행

이제 모든 준비가 끝났습니다. 아래의 코드를 실행하여 페이스북 게시글의 감성 분석을 수행해보세요.

posts = get_posts()
sentiment_analysis(posts)

결론

파이썬과 페이스북 API를 활용하여 페이스북 게시글의 감성 분석을 수행하는 방법을 알아보았습니다. 이를 통해 페이스북 사용자들이 게시하는 글과 댓글의 감성을 분석하여 플랫폼의 분위기를 파악할 수 있습니다. 감성 분석은 소셜 미디어 분석, 마케팅 전략 수립, 사용자 반응 분석 등 다양한 분야에서 활용할 수 있는 강력한 도구입니다.