Python

텍스트 구조적 군집분석

이부일 2020. 3. 2. 15:07

# 패키지 로딩하기
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import scipy.cluster.hierarchy as shc
from konlpy.tag import Hannanum
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.cluster import AgglomerativeClustering

 

# 한나눔 형태소 분석기 클래스 만들기
hannanum = Hannanum()

 

# 데이터 읽어오기
news = pd.read_csv("d:/deeplearning/textmining/군집분석데이터.csv", engine = "python")

 

# 명사 추출하기와 빈도 구하기
news_docs = []
for i in news["기사내용"]:
     news_docs.append(hannanum.nouns(i))

 

for i in range(len(news_docs)):
     news_docs[i] = " ".join(news_docs[i])

 

news_vec = CountVectorizer()
news_x = news_vec.fit_transform(news_docs)

 

# 데이터 프레임 만들기
news_df = pd.DataFrame(news_x.toarray(), columns = news_vec.get_feature_names())
news_df.index = news["검색어"]

 

# 구조적 군집분석
news_cluster = AgglomerativeClustering(n_clusters = 3, linkage = "ward")
news_cluster.fit_predict(news_df)

 

# 덴드로그램 작성하기
plt.figure(figsize = (10, 7))
plt.title("Customer Dendrograms")
dend = shc.dendrogram(shc.linkage(news_df, method = "ward"))
plt.show()

 

[출처] 잡아라! 텍스트마이닝 with 파이썬, 서대호 지음, BJ, p90~91