파이썬 빅데이터 분석 Day 17

2023. 11. 2. 18:11·데이터분석실습/데이터 과학 기반의 파이썬 빅데이터 분석

17. 데이터 분석하기 코로나 뉴스 토픽분석(22.08.03)

[토픽 분석 + LDA 토픽 모델]

목표: 뉴스에서 코로나 관련 토픽을 분석하고 결과 시각화

1. 데이터 수집

이전에 사용한 네이버에서 크롤링한 코로나 뉴스에서 명사만을 추출한 단어 상태의 리스트를 준비

저번시간에 "코로나navernews.csv" 파일을 사용하면 된다.

2.데이터 준비 및 탐색

train데이터부터 데이터 전처리를 해볼 것이다.

data=pd.read_csv("../data/Corona/코로나_naver_news.csv",encoding='euc-kr')
description=data['description']
description_noun_tk=[]

for d in description:
	description_noun_tk.append(okt.nouns(d))

description_noun_tk2=[]

for d in description_noun_tk:
	item=[i for i in d if len(i) >1]
	description_noun_tk2.append(item)
description_noun_tk

3. 분석 모델 구축

토픽분석을 하기위해 파이썬의 gensim패키지에서 제공하는 LDA토픽 모델을 사용.

import gensim
import gensim.corpora as corpora

dictionary=corpora.Dictionary(description_noun_tk2)
corpus=[dictionary.doc2bow(word) for word in description_noun_tk2]
corpus

[03행]: descriptionnountk2에 포함된 단어에 대한 사전을 생성

[04행]: 단어사전의 단어에 대해 bow를 구하여 단어뭉치를 생성

[05행]: 단어뭉치를 출력하여 (wordid,wordcount)의 BoW구성을 확인

k=4
lda_model=gensim.models.ldamulticore.LdaMulticore(corpus,iterations=12,num_topics=k,id2word=dictionary,passes=1,workers=10)

[01행]: 사용자가 직접 토픽의 수를 정해준다,

[02행]: 토픽의 모델을 4로하는 lda객체를 생성

4. 결과 확인 및 시각화

lda_model.print_topics(num_topics=k,num_words=15)

[01행]: num_words=15로 설정해서 토픽을 구성하는 주요단어 15개와 각각의 토픽에 대한 영향력 비율과 출력

| 토픽 번호 | 주요. 단어(15개) | |

| --- | --- | --- |

| 0 | '0.072"코로나" + 0.010"위해" + 0.010"신종" + 0.010"바이러스" + 0.008"감염증" + 0.006"확산" + 0.006"지역" + 0.006"의료" + 0.005"사태" + 0.004"이번" + 0.004"진자" + 0.004"방역" + 0.004"시대" + 0.004"온라인" + 0.004*"기업"' | 지역 확산 사태 |

| 1 | '0.064"코로나" + 0.013"바이러스" + 0.011"신종" + 0.010"감염증" + 0.007"확산" + 0.007"위해" + 0.006"사태" + 0.005"이번" + 0.004"지역" + 0.004"방역" + 0.004"극복" + 0.004"진행" + 0.003"지난" + 0.003"최근" + 0.003*"감염"' | 지역 확산 사태 |

| 2 | '0.050"코로나" + 0.009"위해" + 0.007"바이러스" + 0.007"감염증" + 0.006"이번" + 0.006"지역" + 0.005"확산" + 0.005"신종" + 0.004"방역" + 0.004"어려움" + 0.004"진자" + 0.004"통해" + 0.004"사회" + 0.004"대응" + 0.004*"예방"' | 코로나 예방 |

| 3 | 0.058"코로나" + 0.011"신종" + 0.011"바이러스" + 0.011"감염증" + 0.008"위해" + 0.006"의료" + 0.004"서울" + 0.004"장기" + 0.004"시대" + 0.004"방역" + 0.003"어려움" + 0.003"확산" + 0.003"지역" + 0.003"진행" + 0.003*"지난" | 지역 확산 사태 |

하지만 따로 이렇게 결과를 표현해주지는 않기때문에 표로 정리해야 한 눈에 알아볼 수 있다.

os.environ["PYTHONIOENCODING"]="utf-8"
import pyLDAvis.gensim_models

lda_vis=pyLDAvis.gensim_models.prepare(lda_model,corpus,dictionary)
pyLDAvis.display(lda_vis)

pyLDAvis를 통해서 시각화를 진행한다. 왼쪽에는 토픽 간 거리 지도가 표시되고, 오른쪽에는 관련성 높은 단어 30개가 보인다.

.

728x90

'데이터분석실습 > 데이터 과학 기반의 파이썬 빅데이터 분석' 카테고리의 다른 글

파이썬 빅데이터 분석 Day 16  (0) 2023.10.26
파이썬 빅데이터 분석 Day 15  (1) 2023.10.26
파이썬 빅데이터 분석 Day 14  (0) 2023.10.26
파이썬 빅데이터 분석 Day 13  (0) 2023.10.26
파이썬 빅데이터 분석 Day 12  (1) 2023.10.26
'데이터분석실습/데이터 과학 기반의 파이썬 빅데이터 분석' 카테고리의 다른 글
  • 파이썬 빅데이터 분석 Day 16
  • 파이썬 빅데이터 분석 Day 15
  • 파이썬 빅데이터 분석 Day 14
  • 파이썬 빅데이터 분석 Day 13
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (471)
      • 알쓸신잡 (79)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    나동빈
    이것이취업을위한코딩테스트다
    BFS
    파이썬
    dp
    그리디
    이분탐색
    이코테
    DFS
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3

HOME

HOME

상단으로

티스토리툴바