pizzaplanet

[참관후기] 제9회 BOAZ BIGDATA CONFERENCE(1) 본문

Participation

[참관후기] 제9회 BOAZ BIGDATA CONFERENCE(1)

scio 2019. 1. 27. 02:21



 2019년 1월 19일 토요일 1시에 진행된 BOAZ BIGDATA CONFERENCE. 

BOAZ는 국내 최초 빅데이터 연합동아리라고 한다. 온오프믹스에서 우연히 발견했고 흥미로운 주제가 있어 참가하게 되었다. 이번 컨퍼런스는 10기들의 프로젝트 발표이며 현재 12기까지 뽑은 듯하다.





나는 혼자 왔고, 컨퍼런스의 주최가 대학생 연합동아리다 보니 나 빼고 다 친했다. 나만 친구 없어.

서론은 빠르게 줄이고 후기를 써보자.

제목을 클릭하면 해당 발표 유툽으로 이동합니다.


트위터 트렌드 분석을 통한 신제품 개발 - 새로운 맛을 찾아서



우선 소셜미디어의 데이터 분석을 통해 새우깡의 새로운 맛을 찾으려 했다.

선례로 롯데제과에서 LCIA(Lotte Confectionery Intelligence Advisor)을 통해 꼬깔콘 버팔로윙 맛을 출시했고 실제 매출액증가로 이어졌다.

분석 방법은 크롤링-전처리-감성분석으로 나뉜다.


크롤링

API를 쓰지 않고 BeautifulSoup를 이용하여 크롤링 하여 '혼술', '새우깡', '술안주' 세 단어와 연관성 있는 약 6만개의 Text를 확보.

API를 쓰지 않은 이유는 "리트윗을 방지해서 API 크롤링시 악이 되는 중복테스트의 단점을 보완하였습니다."라고 하신다.


전처리

Konlpy를 통해 전처리 - 대소문자통일 - 불용어 제거 - 무의미한 단어 제거 - 명사만 추출 - 단어별 빈도표 생성 - 두 글자 이상 단어만 추출 - 음식 관련 단어만 추출.

결과 -> '치즈', '오징어', '양파' 가 제일 빈도수 많이 나옴.


감성분석

SOMETREND라는 사이트에서 각 단어(치즈, 오징어, 양파)에 대해 사전조사를 진행.

본격적으로 감성분석을 위해 감성단어에 점수가 매겨져 있는 군산대에서 개발한 감성사전을 기반으로 점수를 매김.

그 후 새우깡이 있는 텍스트 추출하여 다시 점수 매김. 군산대 감성어사전은 Bi-LSTM을 이용해 감성어 분류.


기대효과

- 분석방법 비교적 간단

- SOMETREND라는 플랫폼과 연동 가능


한계점

- 사전의 단어 수가 한정적

- 정확성이 떨어진다. 점수의 범위가 -2, -1, 0, 1, 2로 극단적으로 범주가 나뉘어있기 때문.


내 생각

트윗 API를 써보지 않아서 모르겠지만, API 쓰면서도 리트윗은 거를 수 있지 않을까..? 는 해보지 않았으므로 패스.


너의 기분 이모지? - 트위터 데이터를 활용한 이모지 추천 서비스 -


두 개의 추천 모델을 만듦 

1. 감정기반 이모지 추천

2. 단어기반 이모지 추천


주제 선정 배경

기존 이모지 서비스 시스템 문제점

[카카오톡] 가장 최신에 쓴 것 보여줌 -> 원하는 이모지 페이지 찾는 데 힘이 든다.

이점에 착안하여 프로젝트 진행.


데이터 수집

이모지 데이터 관련은 www.emojitracker.com와 이모지 공식사이트. 2개의 사이트 참고하여 수집하였다.

트윗 데이터 관련은 Twitter Scraper 이용하여 10년 이후 모든 트윗 크롤링(약 1103만개)


전처리

3단계를 통해 전처리를 진행하였고, 마지막 단계에 많은 공이 든 듯하다.


1. 연예인, 광고글 제거(수작업으로 Username, Keyword에 기반을 두어 필터링)


2. 네이버 맞춤법 검사기


3. 미등록단어, 오탈자 수정한다. 이때 미등록 단어에 대해서는 Soynlp를 통해 Wordlist를 뽑아 Konlpy에 등록하여 오탈자 수정했다. 이를 통해 데이터 질과 형태소 분석 성능 향상을 도모.


Konlpy: 기존 품사가 적혀있는 데이터를 학습시켜 문장을 단어들로 분해. 그러나 미등록 단어, 은어, 처리되지 않은 오탈자가 있어 올바른 단어 인식에 한계 존재


Soynlp: 훈련데이터를 직접 학습을 시키며 데이터의 통계적 데이터 패턴을 찾아 단어를 인식한다. Cohesion Score, Right Branching Entropy의 곱으로 이 글자들의 조합을 단어 인식 여부 기능 제공.

- Cohesion Score: 주어진 글자가 함께 자주 나타나는가?

- Right Branching Entropy: 해당 단어의 우측에 다른 단어가 자주 등장하는가?


데이터 불균형 문제 직면하였으나 업샘플링과 다운샘플링을 통해 이모지 개수 통일.


모델 구축

1. FastText 


  

페이스북이 개발한 워드임베딩 방법이고 텍스트 분류 기능까지 제공을 해주어 이를 활용.

단어 안의 Subword까지 고려하여 임베딩을 해주는 장점이 있다. 오탈자나 노이즈 데이터에서 강한 모델로 알고 있다.

이를 베이스라인 모델로 설정.


2. Bilstm with Attention


 

 모델에 관해 설명하자면 인풋데이터 '돈', '벌기', '참', '힘들다',를 길이 4인 셀에서 받음. 첫 LSTM레이어에서 단어 순서대로 인풋 데이터와 앞단 데이터를 보존하며 학습을 진행한다. 이때 방향이 서로 양방향인 LSTM이 두 개가 있고 통합되어 나오는 결괏값의 합을 최종 아웃풋으로 두어 성능을 향상한다. 여기서 어텐션을 한번 더 추가한다. 인풋 단어에 어텐션을 주어 가중치를 부여하고 이를 활용하여 단어 클래스 분류를 더 잘해주게 함


Accuracy 비교


20, 30개 Label 중 Top1과 Top5의 Accuracy로 나누어 표로 표시. 이모지를 풍부하게 만드는 모델이 더 의미있다라고 생각하여 Label 30 & Att Bilstm & Top5 Accuracy 모델 사용.


Softmax


합 1.0 ~ 0.8

- 이모지와 대응되는 정확한 토큰 존재

- ex) "여러분들 독감 조심해요~" --> 마스크 이모지 / "으악 누구야 언니 화나게 한 사람" --> 화난 이모지

- FastText와 Att Bilstm 둘 다 accuracy 비슷


합 0.8 ~ 0.4



단어기반 이모지 추천

1. 크롤링: emojitracker에서 감정 이모지를 제외한 사물이모지 198개를 크롤링.

2. 추출: Soynlp의 Word Extraction 활용하여 Wordlist 추출

3. 사전 구축:  각 이모지에 쓰이는 은어, 관용어, 유사어 사전 구축

ex) 🍕 '피자', '핏짜', '피맥', '피짜'


한계점 및 보완점

데이터 중복 라벨링을 고려하지 않음

데이터 클렌징의 한계

개인의 발화 & 이모지 사용 특성을 고려하지 못함


타인의 질문

Q?: 언론사에서는 요즘 필터링 할 때 욕이 아니라 성평등 같은 문제에 대해 더 집중하고 있다. 이쪽으로 응용해봐도 좋을 듯하다.


Q: 문장 길이에 따른 어큐러시 차이는?

A: 작업을 진행해보지 못함


나의 질문

Q: 이모지를 풍부하게 만드는 모델이 더 의미 있다고 하셨기에 Label 30의 Case를 택하셨다. 하지만 사실상 텍스트를 분석하여 추천해주는 이모지의 개수는 5개이다. 그렇다면 Accuracy가 더 13.9% 더 높은 Label 20 Case를 왜 안 쓰지 않으신건지?

A: 아....(하시며 말씀을 흐리셨던 것 같은데. 일주일이 지난 시점에서 쓰는 글이라 명쾌한 답을 듣지 못했다는 사실만 기억에 남아있다.)


Q: 최근에 카카오톡 형태소분석기 khaiii가 발표되었고 좋은 평이 많은 것으로 알고 있다. 혹시 Konlpy를 쓴 이유가 있나?

A: 프로젝트가 많이 진행된 후 khaiii가 발표가 되었다. khaiii를 적용하여 테스트해보고 싶었으나 시간상 여건이 되지 않았다.


내 생각

사실 이 날 Bilstm with Attention 모델을 처음 알았고 30분간의 쉬는 시간을 이 모델을 조사하는 데에 다 써버렸다. Bi-LSTM Hegemony 라는 말을 찾기도 했다. 다음에 NLP를 하게 된다면 베이스 모델로 잡고 하면 좋을 듯하다.




Comments