'Twitter_Text_Analysis' 프로젝트는 SNS 데이터를 활용한 연관 분석 프로젝트입니다.
해당 프로젝트를 만들게 된 계기는 데이터 간에 가지는 관계를 파악하기 위해서입니다. 연관 분석을 통해, 어떠한 데이터끼리 자주 묶여서 쓰이는 지 확인 할 수 있습니다. 예를 들어, 아래와 같은 마트 구매 기록이 있다고 가정하자.
마트 방문일 | 구매 항목 |
---|---|
1일 | 기저귀, 맥주, 우유 |
5일 | 기저귀, 우유 , 빵, 버터, 맥주 |
10일 | 맥주, 빵, 과자, 기저귀 |
15일 | 맥주, 라면 , 기저귀, 우유 |
20일 | 빵, 버터, 콜라, 과자, 우유 |
해당 표를 통해 알 수 있는 점은, [맥주, 기저귀], [빵, 버터], 등의 상품들이 서로 연관 되어 있는 것을 확인 할 수 있습니다. 이와 같은 데이터를 활용하여서 마트, 슈퍼, 등은 해당 제품들을 가까이 진열해놓게 되면, 고객들이 해당 제품들을 구매하므로써 이윤을 추구 할 있다.
- 크롤링 모듈
- 트위터 크롤러
- 페이스북 크롤러(추가 예정...)
- 데이터 전처리 과정
- 한글을 제외한 나머지 단어 제거
- 불용어 제거
- 명사 추출
- 워드클라우드 이미지
- 연관 분석 결과
설치해야하는 패키지는 requirements.yml에 명시되어 있습니다.
- Anaconda3 -> conda environment
- matplotlib
- apyori
- konlpy
- networkx
- pytagcloud
- tweepy
- Java required
- ubuntu 환경에서는 java를 아래의 명령어를 통해 간편하게 설치 할 수 있습니다.
USER@LOCALHOST:*/SNS_Relation_Analysis$ sudo apt-get install openjdk-9-jre USER@LOCALHOST:*/SNS_Relation_Analysis$ sudo apt-get install openjdk-9-jdk
- Google Cloud Platform 과 같이 headless한 서버를 사용하는 경우 아래의 명령어를 입력하면 됩니다.
USER@LOCALHOST:*/SNS_Relation_Analysis$ sudo apt-get install openjdk-9-jre-headless USER@LOCALHOST:*/SNS_Relation_Analysis$ sudo apt-get install openjdk-9-jdk-headless
-
requirement.yml을 이용해서 conda 가상환경을 설정합니다.
user@localhost:*/SNS_Relation_Analysis$ conda env create -f requirements.yml user@localhost:*/SNS_Relation_Analysis$ conda activate DataAnalysis
-
pytagcloud(워드클라우드 관련 패키지)에서 한글을 출력하기 위해 한글을 지원하는 나눔고딕을 사용한다. 이를 위해, font 설정을 진행해야 한다.
- 우선 해당 패키지의 fonts 폴더 경로를 알아야합니다.
- 정상적으로 Anaconda3을 설치하셨다면 '~/anaconda3/envs/DataAnalysis/lib/python3.7/site-packages/pytagcloud/fonts/' 경로에 fonts 설정 파일이 존재해야합니다.
- 그 후, Fonts/Nanumgothic.ttf 파일을 fonts 폴더에 복사해줍니다.
- 이렇게 해도 동작하지 않는 경우에 대해서는, 아래 의 text config정보를 pytagcloud 패키지의 fonts.json에 추가해주도록 합니다.
{ "name": "NanumGothic", "ttf": "NanumGothic.ttf", "web": "http://fonts.googleapis.com/css?family=Nanum+Gothic" }
- 우선 해당 패키지의 fonts 폴더 경로를 알아야합니다.
-
트위터 데이터를 얻기 위해서는 Crawler 폴더 내의 server_config.json에 자신의 API key를 등록해야 한다.
- 해당 부분은 https://developer.twitter.com/en/apps 에서 트위터 개발자 회원 가입을 진행하면 됩니다.
- Crawler/server_config.json
{ "CONSUMER_KEY":"{YOUR_KEY}", "CONSUMER_SECRET":"{YOUR_KEY}", "ACCESS_TOKEN_KEY":"{YOUR_KEY}", "ACCESS_TOKEN_SECRET":"{YOUR_KEY}" }
-
data_synchrnozier.py을 통해 트위터 크롤링을 진행한다.
-
아래와 같이 twitter crawling을 진행합니다.
-
keyword와 page 정보를 같이 전달하는 겨우
(DataAnalysis)user@localhost:*/SNS_Relation_Analysis$ python ./data_synchronizer.py -k <keyword>
-
keyword 정보만 전달하는 경우, 이때, page는 50으로 기본 설정되어있다.
(DataAnalysis)user@localhost:*/SNS_Relation_Analysis$ python ./data_synchronizer.py -k <keyword> -p <page>
-
그런 다음, 해당 파이썬 파일을 실행해줍니다.
-
-
마지막으로, relation_analyzer.py을 실행하면, Results 폴더 연관분석 결과가 추출됩니다.