라일락 꽃이 피는 날

텍스트 마이닝 2 본문

데이터 분석/Python

텍스트 마이닝 2

eunki 2021. 6. 4. 19:16
728x90

1. 제목 정제하기

1) 정규표현식(re)으로 한글 데이터만 남기기

import re

# 한글데이터(가-힣)와 띄어쓰기(\s)가 아니면 빈 문자열로 치환
df_sorted['title_refined'] = df_sorted['title'].apply(lambda x: re.sub('[^가-힣\s]','',x))

 

 

2) 공백만 있는 row 삭제

df_sorted = df_sorted[df_sorted['title_refined'].apply(lambda x: re.sub('[^가-힣]','',x)) != '']

 

 

 

2. 제목 단어 추출

1) soynlp 설치

pip install soynlp

 

 

2) WordExtractor로 단어 점수 학습

from soynlp.word import WordExtractor

word_extractor = WordExtractor(min_frequency=100,
    min_cohesion_forward=0.05, 
    min_right_branching_entropy=0.0
)
word_extractor.train(df_sorted['title_refined'].values) # list of str or like
words = word_extractor.extract()

 

 

3) LTokenizer로 L-R 분리

from soynlp.tokenizer import LTokenizer

cohesion_score = {word:score.cohesion_forward for word, score in words.items()}
tokenizer = LTokenizer(scores=cohesion_score)

 

 

4) 제목 데이터 중 L만 남기기

df_sorted['tokenized'] = df_sorted['title_refined'].apply(lambda x: tokenizer.tokenize(x, remove_r=True))

 

 

 

3. 단어 빈도 수 구하기

1) 인기 영상 (50만 조회수 이상) 조회

df_top = df_sorted[df_sorted['views'] > 500000]

 

 

2) tokenized 단어 한 배열에 담기

words = []
for i in df_top['tokenized'].values:
    for k in i:
        words.append(k)

 

 

3) Counter로 words 빈도 수 파악하기

from collections import Counter

count = Counter(words)
words_dict = dict(count)
words_dict

 

 

 

4. 워드 클라우드 그리기

1) wordcloud 폰트 설정 및 생성하기

from wordcloud import WordCloud

wordcloud = WordCloud(font_path='/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf', width=500, height=500, background_color='white').generate_from_frequencies(words_dict)

plt.figure(figsize=(10,10))
plt.imshow(wordcloud)  # image show
plt.axis("off")
plt.show()

 

 

2) StopWord 설정

stopword = {'일', '대', '이', '분', '회', '온'}
for word in stopword:
    words_dict.pop(word)
728x90

'데이터 분석 > Python' 카테고리의 다른 글

[Pandas] melt  (0) 2021.06.14
[Numpy] concatenate, split  (0) 2021.06.14
Folium  (0) 2021.06.04
형태소 분석기  (0) 2021.06.03
Chi-Square (카이제곱 검정)  (0) 2021.06.03