Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코딩테스트
- 프로그래머스
- 데이터 분석
- Numpy
- pandas
- 머신러닝
- 실기
- 빅분기
- Kaggle
- level 2
- 빅데이터 분석 기사
- seaborn
- 튜닝
- Python
- level 1
- R
- sklearn
- 파이썬
- 알고리즘
- python3
- Oracel
- 카카오
- SQL
- 실습
- oracle
- matplotlib
- 오라클
Archives
- Today
- Total
라일락 꽃이 피는 날
텍스트 마이닝 2 본문
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 |