# Docs 의 list 목록을 만드는게 우선 일이다
from txtutil import tf_idf
tf_idf('갤럭시', '갤럭시 노트 신제품 출시', ['갤럭시','갤럭시','노트','신제품','출시','출시'])
0.053319013889226566
import re
from glob import glob
filelist = glob('../data/kr-Report_201?.txt')
# 불용어 자료를 활용하여 Token 을 Filtering
# # stopwords.txt : 2015, 2016, 2017, 2018년 모두 존재하는 단어목록
# f = open('./data/stopwords.txt', 'r', encoding='utf-8')
# stopwords = f.read(); f.close()
# stopwords = stopwords.split(' ')
# stopwords[:10]
%%time
docs_tokens = []
skips = {'갤러시':'갤럭시', '가치창출':'가치창출'}
from txtutil import txtnoun
from nltk.tokenize import word_tokenize
for file in filelist:
texts = txtnoun(file, skip=skips)
tokens = word_tokenize(texts)
tokens = [token for token in tokens
if len(token) > 2]
# if (len(token) > 2) and (token not in stopwords)]
docs_tokens += tokens
CPU times: user 1min 8s, sys: 531 ms, total: 1min 9s Wall time: 1min 28s
from nltk import FreqDist
import pandas as pd
pd.Series(FreqDist(docs_tokens)).sort_values(ascending=False)[:5]
삼성전자 2075 협력사 1075 임직원 990 글로벌 705 리스크 577 dtype: int64
# 분석할 대상 데이터
texts = txtnoun('../data/kr-Report_2018.txt', skip=skips)
tokens = word_tokenize(texts)
tokens = [token for token in tokens
if len(token) > 2]
# if (len(token) > 2) and (token not in stopwords)]
tokens[:7]
['삼성전자', '지속가능경영보고서', '보고서', '삼성전자', '경제사회환경', '가치창', '이해관계자']
%%time
from txtutil import tf_idf
token_set = list(set(tokens))
result_dict = {}
for txt in token_set:
result_dict[txt] = tf_idf(txt, tokens, docs_tokens)
print('Calculating is Done.')
Calculating is Done. CPU times: user 55.3 s, sys: 137 ms, total: 55.5 s Wall time: 1min 19s
# 2018년도 tf-idf
# 생성한 TF-IDF 결과를 Pandas로 출력
import pandas as pd
tfidf = pd.Series(result_dict)
tfidf.sort_values(ascending=False)[:20]
삼성전자 0.121404 협력사 0.095371 지속가능경영보고서 0.084802 리스크 0.072616 임직원 0.072425 서비스 0.055274 글로벌 0.051513 온실가스 0.049012 이해관계자 0.048615 프로그램 0.047731 에너지 0.047293 배출량 0.041387 폐기물 0.039498 이사회 0.037083 시스템 0.036201 중요성 0.034973 근로자 0.033042 데이터 0.032766 친환경 0.032202 공급망 0.032052 dtype: float64