제목에 가중치를 두고 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])}")

이 코드에서 주요 단계는 다음과 같습니다:

  1. CSV 파일에서 뉴스 데이터를 로드합니다.
  2. 제목과 본문을 추출하고 각각을 토큰화합니다.
  3. Gensim의 Dictionary를 사용하여 텍스트 데이터를 숫자로 변환합니다.
  4. 본문에 TF-IDF 가중치를 적용하여 중요 단어를 강조합니다.
  5. 제목과 본문을 결합하고 TF-IDF 가중치를 적용합니다.
  6. LDA 모델을 생성하고 원하는 토픽 수를 설정합니다.
  7. 각 뉴스에 대해 토픽 할당을 수행하고 결과를 출력합니다.

이 코드를 사용하면 제목에 가중치를 두고 LDA 토픽 모델링을 수행할 수 있습니다. 필요에 따라 토픽 수나 다른 매개변수를 조정하여 원하는 결과를 얻을 수 있습니다.