제목에 가중치를 두고 LDA 토픽 모델링을 구현하려면 Python에서 Gensim 라이브러리를 사용할 수 있습니다. Gensim은 토픽 모델링에 특히 효과적이며, 제목에 가중치를 두는 것도 가능합니다. 다음은 12,000개의 뉴스 데이터로 LDA 토픽 모델링을 수행하는 예제 코드입니다:
import gensim
from gensim import corpora
from gensim.models import LdaModel
from gensim.models import TfidfModel
import pandas as pd
from nltk.tokenize import word_tokenize
# CSV 파일에서 뉴스 데이터 로드
df = pd.read_csv('your_news_data.csv')
# 제목과 본문을 별도의 리스트로 추출
titles = df['title'].tolist()
contents = df['content'].tolist()
# 제목 토큰화
title_tokens = [word_tokenize(title) for title in titles]
# 본문 토큰화
content_tokens = [word_tokenize(content) for content in contents]
# 텍스트 데이터를 Gensim의 사전(Dictionary)으로 변환
dictionary = corpora.Dictionary(content_tokens)
# 본문에 TF-IDF 가중치 적용
tfidf_model = TfidfModel([dictionary.doc2bow(text) for text in content_tokens])
# 제목과 본문을 합치고 TF-IDF 가중치 적용
combined_tokens = [title_tokens[i] + content_tokens[i] for i in range(len(title_tokens))]
tfidf_tokens = [tfidf_model[dictionary.doc2bow(text)] for text in combined_tokens]
# LDA 모델 생성
num_topics = 10 # 원하는 토픽 수 설정
lda_model = LdaModel(corpus=tfidf_tokens, id2word=dictionary, num_topics=num_topics, passes=10)
# 각 뉴스의 토픽 할당
topics = [lda_model[dictionary.doc2bow(text)] for text in combined_tokens]
# 결과 출력
for i, topic_dist in enumerate(topics):
print(f"뉴스 #{i + 1}의 주요 토픽: {max(topic_dist, key=lambda x: x[1])}")
이 코드에서 주요 단계는 다음과 같습니다:
이 코드를 사용하면 제목에 가중치를 두고 LDA 토픽 모델링을 수행할 수 있습니다. 필요에 따라 토픽 수나 다른 매개변수를 조정하여 원하는 결과를 얻을 수 있습니다.