본문 바로가기

텍스트 분석/Topic Modeling

텍스트 분석 - 네이버 카페(비건 디저트) : 토픽모델링 (페르소나 설정, corpora, models)

반응형

 

토픽모델링은 텍스트 데이터에서 사용된 주제어들의 동시 사용 패턴을 바탕으로,

해당 텍스트들을 대표하는 특정 주제나 이슈, 주제 그룹들을 자동으로 추출하는 분석 기법이다.


이때 토픽은 함께 등장할 확률이 높고 유사한 의미를 가지는 단어들의 집합이라고 할 수 있다.

이 방식은 텍스트 데이터 내 단어들의 빈도를 통계적으로 분석하여

전체 데이터를 관통하는 잠재적 주제, 즉 토픽들을 자동으로 추출하는 분류를 하기 때문에 쟁점,

즉 프레임 분석 시 유용하다.

출처 : https://blog.naver.com/bflysoft_biz/222012782382

 

 

 

 

텍스트 분석 - 네이버 카페(비건 디저트) : 전처리, 형태소 분석(Komoran)

데이터 불러오기 여기서 필요한 것은 content와 reply뿐이다. content content를 문자열로 다 바꾸고 인덱스와 함께 리스트로 저장한다. 여기서 길이가 4 이상이어야 하는데 그 이유는 누락값은 NaN인데 �

steadiness-193.tistory.com

위에서 만들어낸 mas 엑셀 파일을 이용한다.

 

 

 

 

 

 

 

텍스트 분석 - 네이버 카페(비건 디저트) : 상위빈도단어 시각화, wordcloud

https://steadiness-193.tistory.com/144 텍스트 분석 - 네이버 카페(비건 디저트) : 전처리, 형태소 분석(Komoran) 데이터 불러오기 여기서 필요한 것은 content와 reply뿐이다. content content를 문자열로 다..

steadiness-193.tistory.com

전처리와 STOP_WORDS와 CHANGE_WORDS_SET에 대한 내용은 위 포스팅 참조

 

 

 

 

데이터 불러오기

 

 

 

mas 엑셀파일을 data_mas 변수에 담았다.

 

 

 

 

 

 

 

1. mas_total 제작

 

mas_noun 컬럼의 모든 단어들을 필터링 해서

 

mas_total에 넣어두는 것이다.

 

 

 

 

set으로 중복을 제거하면

 

 

 

 

전체 단어 개수는 27,788개가 나온다.

 

 

 

 

 

 

 

2. word_list 제작

 

mas_total과 Counter를 이용해

 

100번 초과로 나온 단어만 걸러낸 리스트

 

 

우선 mas_total의 모든 단어의 개수를 센 뒤

 

 

 

 

 

 

빈도가 101번 이상인 단어들만 모아서

 

word_list에 넣어둔다.

 

빈도가 101번 이상인 단어의 총 개수는 652개이다.

 

 

 

 

 

 

 

 

 

3. mas_double_list 만들기

 

STOP_WORDS에 해당하지 않고

 

word_list에는 해당하며

 

CHANGE_WORDS_SET을 거친

 

리스트를 담은 이중리스트

 

 

 

 

 

이제 원하는 mas_double_list가 만들어졌으니 

 

Topic 별로 분류해보자

 

 

 

 

 

 

토픽 모델링

 

 

문서 내 단어를 아이디로 변환하고

 

문서별로 벡터로 전환한다. (단어 아이디, 단어 빈도수)

 

 

 

 

 

 

 

 

토픽별 주요 단어는

 

 

 

위 처럼 나온다.

 

 

5번 토픽을 보면 비건 디저트 중에서도 식빵, 스콘이 나왔고

 

건강과 버터, 우유, 재료를 고려하는 집단이며 인스타그램도 눈여겨 볼 만 하다.

 

 

 

 

 

 

 

 

토픽별 15개의 단어로 설정하고 출력한 결과이다.

 

 

 

 

 

 

 

시각화

 

import pyLDAvis

import pyLDAvis.gensim as gensimvis

prepared_data = gensimvis.prepare(model, corpus, dictionary)

pyLDAvis.display(prepared_data)

 

 

 

현재 4번 토픽을 클릭한 상태

 

 

 

[토픽의 비중 정도]

N% of tokens

 

우측 상단에 4번 토픽의 비중 정도를 볼 수 있는데

 

전체에서 11.6%를 차지한다.

 

 

 

[오른쪽의 단어 리스트]

 

해당 토픽과 가장 연관성이 높은 순서로 단어들을 배치하고 

 

특정한 단어의 문서 내 나타난 전체 빈도 중에 해당 토픽에 속하는 비율을 보여준다.

 

 

 

 

[원의 크기]

 

해당 토픽이 전체 글에서 차지하는 비중

 

토픽 9보다 토픽 1이 상대적으로 더 높은 비중을 보인다고 볼 수 있다.

 

 

 

 

[토픽 간 원의 위치]

 

토픽 간 확률 분포의 유사성에 따라 다차원 척도로 정해진 것

 

예를 들어 토픽 간 확률 분포가 비슷하면 

 

해당 토픽들이 서로 유사하다는 것을 의미하며,

 

이에 따라 서로 근접히 위치하게 된다.

 

아래 그림의 2,3번 토픽과 5,6,8번 토픽이 그러한 것이다.

 

 

위 내용 출처 : https://blog.naver.com/bflysoft_biz/222012782382

 

 

 

 

 

1번 토픽

 

 

 

 

지금 선택된 1번 토픽을 보면

 

15.1%로 토픽의 비중은 제일 높다.

 

1번 토픽의 페르소나는 서울 카페, 레스토랑에 자주가고

 

와인, 메뉴, 음식, 사진 등의 가치를 높게 평가한다고 볼 수 있다.

 

 

 

 

 

 

10번 토픽

 

 

 

4.6%로 토픽의 비중이 제일 낮다.

 

다른 토픽들과의 거리가 상대적으로 제일 멀어, 타 토픽과 유사도가 제일 낮다.

 

비건 디저트의 원데이 클래스의 가격, 수강료를 문의하거나

 

후기 등을 중요시하는 집단이라고 볼 수 있다.

 

 

 

 

 

 

 

3번 토픽

 

 

 

 

토픽 2와 유사한 군집으로 분류되며

 

주로 비건 디저트 종류(스콘, 식빵, 머핀, 타르트 등)와

 

재료(버터, 우유, 단호박, 초코, 흑임자)에 관심이 많고

 

밀가루나 글루텐 등 건강을 생각하며 이를 인스타그램에 인증하는 집단이라고 볼 수 있다.

 

 

 

반응형