Python

네이버 영화 평점 리뷰 수집 및 WordCloud 만들기

마사미 2022. 8. 17. 12:25

*본 글은 크롤링 관련 kmooc 수업, 외부 수업을 듣고 이를 활용하여 실습한 내용을 정리한 것

*따라서 코드에 대한 자세한 설명이 어려울 수 있음
*오타가 있을 수 있음


 

먼저, 크롤링 하고자 하는 url을 파이썬에 입력

 

url = 'https://movie.naver.com/movie/bi/mi/pointWriteFormList.naver?code=217719&type=after&isActualPointWriteExecute=false&isMileageSubscriptionAlready=false&isMileageSubscriptionReject=false&page={}'

 

- 실제 웹페이지 url은 빨간색 글씨 부분이 'page=1' 이런식으로 뜰텐데, 여러 페이지를 크롤링 할 것이기 때문에 'page={}'으로 바꿔서 파이썬에 입력할 것

 

이후 평점과 한줄평을 scores, reviews 라는 리스트로 만드는 작업을 진행

- res=requests.get(url.format(page)) : 각 페이지에 접속한다는 뜻

- 필자가 range를 (1, 100) -> 즉 1page부터 99page까지 돌린다고 작성했으므로 1쪽부터 99쪽까지 접속한다는 의미이다

- lxml.html.fromstring(res.text) : html을 처리한다는 의미

 

이후 리스트로 만든 평점과 한줄평을 dataframe화 하고 이를 csv로 만든다

- 한줄평이 깨져서 나온다

 

깨지는 한줄평이 제대로 나오게 하기 위해 정규화를 실시한다

- csv로 만든 데이터파일을 다시 읽는(read) 과정에서 r'[^ A-Za-z0-9가-힣+]' 를 사용하여 정규화를 진행하니 제대로 나온다

 

이제 수집된 한줄평들을 활용하여 WordCloud를 만들어보자

먼저 csv 파일로 되어있는 평점과 한줄평 data에서 한줄평만 빼온다

- review_start 란 이름으로 저장된 평점과 한줄평 csv 파일에서 한줄평(review)만 불러와 이를 title이라 정의했다

 

konlpy의 0kt를 이용하여 wordcloud에 제외할 불용어(stopword)를 제거해주고 한줄평 내 단어를 명사 단위로 끊어본다

그리고 '동기'라고 뜨는 단어들은 '동기조'와 같은 것으로, '후루' 라고 뜬 단어들은 '후루야'와 같은 것으로 설정하였다

(간혹, 띄어쓰기 때문에 '후루''야' 로 분리되는 경우가 있어 이를 방지하기 위해 '후루'='후루야'가 되도록 설정하였다)

- 다양한 단어들이 나오고 있다. 이 중에서 다만, 더, 오히려 같은 단어들은 불용어로 빼도 좋을 것 같다

 

gensim을 활용해 복합명사를 확인한다

- 이전에는 '성우' '연기' 가 따로 제시되었는데 5번 이상 '성우 연기' 로 붙여나와서 복합명사가 되었다

 

워드클라우드를 위해 리스트 형태로 되어있던 데이터를 word 형태로 만든다

 

그리고 word 형태로 만든 데이터를 활용하여 wordcloud를 만든다

- 이미지 캡쳐하다 짤려서.. 짤린부분 코드는 아래와 같다

wordcloud = WordCloud(font_path='c:/Windows/Fonts/malgun.ttf', relative_scaling = 0.2, background_color='white',).generate_from_frequencies(tmp_data)

 

wordcloud 결과는 이쪽에서 확인

https://blog.naver.com/kmj672000/222850619165