텍스트 구조적 군집분석
# 패키지 로딩하기
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