CONTENTS
1. What to Do?
2. CNN을 활용한 여행지별 지역 컨텍스트 추출
3. LSTM을 활용한 신규 지역 컨텍스트 어휘 발굴
4. POI Latent Vector를 이용한 Context 표현 랭킹
5. 개선 결과
6. What’s Next?
여행지를 선택하는 데는 테마가 있다
http://blog.naver.com/s1h25s/220203903449 http://blog.daum.net/suareu/4http://cfs15.tistory.com/image/20/tistory/2008/10/28/15/24/4906b0162c9a2
http://www.hkn24.com/news/articleView.html?idxno=18902
가족과함께휴양 친구들끼리놀기좋은곳 저렴하게놀만한곳
해외 학자들이 정의한 Local Context
Context relevance assessment and exploitation in mobile recommender systems (2012)
우리가 정의한 지역 컨텍스트
힐링 일출 태교여행찾는 목적
애인 부모님 아이동행자
POI Side Context
현위치
시간
GPS 위치
아침 점심 저녁 새벽
계절 봄 여름 가을 겨울
날씨 맑음 흐림 비 눈
요일 주중 주말
기념일 어린이날 크리스마스 새해
User Situation Context
이국적 신비로운 재밌는분위기
둘레길 전망대 카약토픽(즐길거리)
Our Problem
…
…
…
분석 대상 : UGC Goal : 여행지별 테마
아이와함께가족과함께
나들이촬영지체험
동행자
찾는목적
고구려대장간마을
http://blog.naver.com/5200l/220734006006
기존 방식
…
…
…
분석 대상 : UGC Goal : 여행지별 테마기존방식
Text Mining
테마별 키워드 사전 및 패턴 이용
동료들과
친구들이랑친구 모임
친구와
친구와함께
아이와함께가족과함께
나들이촬영지체험
동행자
찾는목적
고구려대장간마을
http://blog.naver.com/5200l/220734006006
Parsing, Feature Representation
Why Deep Learning?
→ 학습할 수 있는 데이터가 정말 많다.→ 학습데이터가 많으면 딥러닝은 좋은 성능을 보장한다.
분석해야 할 리뷰는 정말 많다.
그래서 만들어야 할 사전과 패턴도 정말 많다.
→ 알아서 학습셋의 Latent feature를 찾아주는게딥러닝을 활용하는 이유
ConA 지역 컨텍스트 분석 모델
Local DB
전주한옥마을
Context-aware Analysis Model
S1: 아이들과 당일치기로 전주를 다녀왔어요S2: 아이들 교육에도 최적의 장소S3: 비오는날 운치있는 전주여행
S4: 운치있고 여유로운 곳이었어요S5: 야간에 산책하면서 다니는 재미S6: 날씨 즐기며 천천히 걸어다니는 것도
UGC
전주한옥마을
S1: 아이들과S2: 아이들S3: 운치있는
S4: 운치있고S5: 산책S6: 걸어다니는
1. 문장 입력 2. 문맥 이해 3. 컨텍스트 추출
아이들과아이들애들하고
운치있는운치있고운치돋는
산책걸어다니는걷기좋은
동행자
분위기
Topic
S1:아이들과(aideulgwa)
Temporal ConvNet
S1:
TextRepresentation
아이들과
당일치기로
전주를
Bidirectional LSTM동행자
X
Xword
embedding
CNN Overview
http://stats.stackexchange.com/questions/180850/how-are-filters-and-activation-maps-connected-in-convolutional-neural-networks
http://okky.kr/article/321087
Why CNN?
www.kdnuggets.com
Computer VisionSemantic parsing (Yih et al., 2014)QA Task에서 질문 원본문장과 질의 패턴을 CNN Latent Vector로변환하여 비교
Search query retrieval (Shen et al., 2014)IR Task에서 질의와 웹문서를 CNN Vector로 변환
Sentence modeling (Kalchbrenner et al., 2014)CNN을 통해 영화 리뷰와 트위터에서 긍/부정 문장 분류
이미지 인식으로 시작했지만, NLP Task에도 잘 먹힌다
Temporal ConvNet
• using temporal convolutional networks(LeCun et al., 1998)• without the knowledge of words, phrases, sentences and any other
syntactic or semantic structures• apply to various large-scale datasets: including ontology classification,
sentiment analysis and text categorization.• work for both English and Chinese (and 한글...)
An apply deep learning to text understanding from character level inputs all the way up to abstract text concepts.
Language Independent!!
Temporal ConvNet : Model Design
아이
들
과
a b c d e f g h i j k l m n o p q r s t u v w x y z
아이들과(aideulgwa)
INPUT Size : 69
Temporal ConvNet : Model Design
net = nn.Sequential()net:add(backend.TemporalConvolution(inputSize, 256, 7)) -- 1D Convolution, 256 Output size. 7 convolution kernel widthnet:add(nn.Threshold()) -- Activation Function : ReLu, Sigmoid, TanH…net:add(nn.TemporalMaxPooling(3,3)) -- 3 regions by step size 3 stepsnet:add(backend.TemporalConvolution(256, 256, 7)) -- 256 Input size, 256 hidden size. 7 convolution kernel widthnet:add(nn.Threshold()) net:add(nn.TemporalMaxPooling(3,3))……. net:add(nn.Reshape(4096))net:add(nn.Linear(4096, 1024))net:add(nn.Threshold())net:add(nn.Dropout(0.5))net:add(nn.Linear(1024, 1024))net:add(nn.Threshold())net:add(nn.Dropout(0.5))net:add(nn.Linear(1024, outputSize))net:add(backend.LogSoftMax()) -- converts the output to a log-probability. Useful fornet:cuda() classification problems
FrameWork :
Tutorial on Convolutions(Collobert, 2002)
5287
256
69
522
1
2
3~6
Layer
Fully-Connected
a i deu l
Module Design
TemporalConvNet
BuildingTraining
Data
기존 방법론을
학습데이터 구축에 활용
대량의 학습데이터로
모델을 학습하여
여행지별 컨텍스트를 추출한다
딥러닝 모델 학습을 위해 다량의 학습데이터가 필요하다
학습 데이터 구성(1)
Seed로 사용할 사전 구축은 필요하다800여 개의 컨텍스트 후보 키워드 생성 → Word2Vec으로 확장
컨텍스트 어휘와 유사한후보 키워드를 생성
블로그 컬렉션으로Word2Vec 학습
워드 임베딩
제주도 겨울에 아이랑 가볼만한 곳
아이랑
제주도
겨울에
가볼만한
곳
'아이랑' 후보 유사도아이들하고 0.8542
애기랑 0.8086
아가들이랑 0.7694
어른들이랑 0.7578
애들하고 0.7515
애들이랑 0.7314
조카들이랑 0.7277
조카랑 0.7195
엄마아빠랑 0.7166
부모님하고 0.7152
학습 데이터 구성(2)
기존 방법론을 학습데이터 구성에 활용
S1 : 지난 주말, 정말 오랜만에 친구들과한옥마을을 갔어요.S2 : 날씨가 따뜻해서 걷기도 좋을거 같아제가 한옥마을로 모이자고 꼬셨죠. ㅎㅎㅎ…S9 : 아이들도 매우 신나게 돌아다니더라구요
전주한옥마을 UGC에서 추출한 문장
컨텍스트 동의어
아이와 함께아이들과
아이들도
친구와 함께친구끼리
친구들과
업체 컨텍스트
전주한옥마을
혼자 갈만한
친구와 함께
커플끼리
아이와 함께
S1 - 친구와 함께 : 지난 주말, 정말오랜만에 친구들과 한옥마을을 갔어요S2 - 날씨가 따뜻해서 걷기도 좋을거 같아제가 한옥마을로 모이자고 꼬셨죠. ㅎS9 - 아이와 함께 : 아이들도 매우 신나게돌아다니더라구요
컨텍스트 정답 문장
여행지별 UGC 문장
형태소 분석TF 기반 Candidate Context를 탐색
확장사전 및 패턴 기반으로
컨텍스트별 문장을 인식
𝑆𝑐𝑜𝑟𝑒 𝑡, 𝑃𝑙𝑎𝑐𝑒 =𝑓𝑟𝑒𝑞𝑡,𝑃𝑙𝑎𝑐𝑒
max 𝑓𝑟𝑒𝑞𝑡′,𝑃𝑙𝑎𝑐𝑒 ∶ 𝑡′ ∈ 𝑃𝑙𝑎𝑐𝑒
학습 데이터 구성(3)Character quantization(표음 기반 알파벳 치환)
S1 - 친구와 함께 : 지난 주말, 정말 오랜만에 친구들과한옥마을을 갔어요S9 - 아이와 함께 : 아이들도 매우 신나게돌아다니더라구요
컨텍스트 태그된 문장
S1 – “1”,”jinan jumar, jeongmar oraenmane chingudeulgwahanokmaeureur gasseoyo”S9 – “8”,”aideuldo maeu sinnage doradanideoraguyo”
컨텍스트 태그된 문장
…
…
…
…
gogulyeo daejanggan maeuleun aideulgwa sajin jjiggiedo joheun gos ineyo ~ ^^
http://blog.naver.com/5200l/220734006006
컨텍스트 유형별 데이터셋
동행자 컨텍스트 목적 컨텍스트 분위기 컨텍스트Class Total Train Test
이국적인분위기 25,715 10,000 5,000
모던한분위기 9,641 8,000 1,641
고풍스러운분위기 4,510 4,000 510
로맨틱한분위기 5,058 4,000 1,058
편안한분위기 38,306 10,000 5,000
이색적인분위기 20,818 10,000 5,000
프라이빗한분위기 7,161 5,000 2,161
깔끔한분위기 20,569 10,000 5,000
웅장한분위기 7,702 5,000 2,702
소박한분위기 17,760 10,000 5,000
아기자기한분위기 100,843 10,000 5,000
친절한분위기 35,530 10,000 5,000
세련된분위기 18,720 10,000 5,000
조용한 53,149 10,000 5,000
여유로운분위기 27,525 10,000 5,000
럭셔리한분위기 64,727 10,000 5,000
신비로운분위기 6,215 5,000 1,215
Class Total Train Test
친구와 함께 110,500 10,000 5,000
여자들끼리 13,184 10,000 3,184
어른과 함께 26,785 10,000 5,000
애완동물동반 11,609 10,000 1,609
가족과 함께 173,731 10,000 5,000
아기와 함께 31,638 10,000 5,000
부모님과 함께 23,518 10,000 5,000
아이와 함께 69,228 10,000 5,000
Class Total Train Test
푸짐한메뉴 57,148 10,000 5,000
저렴한 58,874 10,000 5,000
요즘뜨는 12,894 10,000 2,894
나들이 53,678 10,000 5,000
해장메뉴 17,665 10,000 5,000
신선한재료 96,777 10,000 5,000
실내 59,968 10,000 5,000
소개팅 18,513 10,000 5,000
회식장소 112,378 10,000 5,000
오래된맛집 25,690 10,000 5,000
힐링 54,524 10,000 5,000
등산 70,434 10,000 5,000
상견례 21,943 10,000 5,000
문화재 36,559 10,000 5,000
모델 학습
컨텍스트 유형별로 모델 생성
동행자컨텍스트
학습 데이터
동행자 컨텍스트분류 모델
분위기 컨텍스트분류 모델
• 친구와 함께• 아이와 함께• 부모님과 함께• …
• 운치 있는 분위기• 활기찬 분위기• 이국적인 분위기• …
분위기컨텍스트
학습 데이터
하나의 Big Model로 학습했더니 성능이 떨어짐
모델 학습 : Overfitting을 피하자!
Dropout (0.5)
+캠릿브지
그레이엄 롤린슨(Graham Rawlinson)
영어 기준 처음과 끝 2글자를 남기고 섞어도 이해가 가능함
→ 처음과 끝을 남기고 0.5 의 확률로 가운데 알파벳을 뒤섞어 입력
대학의 연결구과
더 많은 Training Data Feature 개수 줄이기 Regularization
Feature 개수 줄이기
더 많은 Training Data
CNN 지역 컨텍스트 추출 결과
모델 실험 결과 (여행지 + 맛집)‘가족과 함께’ 컨텍스트가 추출된 문장들
5인가족이 배불리 먹었다~★
가족과 여행을 다녀왔는데요.
가족, 연인, 친구 각자 자신들만의 추억을 담고 있다.
가족은 다들 들떠 있었는데 ㅋㅋㅋ
‘가족과 함께’ 컨텍스트가 추출되지 않은 문장들
가족들이 알면 난리가 날듯...
나중에 울 가족여행 여기로 와볼까..ㅎㅎ ㅋㅋ
친구들과 연인들과 가족들과 함께해도 참 좋은곳이네요~~
혼자 먹기에는 너무 큰 사이즈라 :) 동생들과 함께 냠냠.
‘TV방영’ 컨텍스트가 추출된 문장
백종원의 3대천왕에 방송된 유명한
맛집이다.
Model Test
동행자 모델 97.67%
목적 모델 96.65%
분위기 모델 92.35%
Why LSTM?
Sequential Tagging에 가장 최적화된 모델
신규 컨텍스트 키워드 발굴에 활용 가능
특정 컨텍스트 카테고리로 태깅된 새로운 키워드를 발굴 → 사전 강화 효과
문장의 특정 위치에 있는 단어가 어떤 컨텍스트 종류인지를 태깅
학습 데이터 구성
- B : Target 시작 어휘
- I : Target 포함 어휘(이어짐)
- O : Target 어휘 아님 (공백 포함)
- U : No Information
여행지별 UGC 문장 형태소 분석 → BIO 태깅 → Word Embedding
Bidirectional LSTM : Model Design
model = nn.Sequential()
model:add(nn.Sequencer(nn.Linear(inputSize, hiddenSize))) -- Input : Word2Vec Embedding 차원, 256 Hidden Size
model:add(nn.BiSequencer(nn.LSTM(hiddenSize, hiddenSize, seqLength))) - seqLength : 문장의 길이(형태소 단위)
model:add(nn.BiSequencer(nn.LSTM(hiddenSize * 2, hiddenSize, seqLength)))
model:add(nn.BiSequencer(nn.LSTM(hiddenSize * 2, hiddenSize, seqLength)))
model:add(nn.Sequencer(nn.Dropout(0.5)))
model:add(nn.Sequencer(nn.Linear(hiddenSize * 2, outputSize)))
model:add(nn.Sequencer(nn.LogSoftMax()))
FrameWork :
추출 결과
제주도 밤 에 가볼만한 곳 새연교
X 시간 ─ X X X
조금 은 여유 있게 한 걸음
X X 분위기 ─ X X
미라클 아이즈 콘서트 에 딸 과 함께 다녀오다
X X X X 동행자 ─ X X
경주 벚꽃 구경 의 필수 코스
X Topic ─ X X X
많은 스키다시 와 바다 가 보이는 횟집
X X X 목적 ─ ─ X
불맛 이 살아있는 담백한 물짜장
맛 X X 맛 X
오늘 점심 은 헤리 언냐 랑 강남 교자
X X X X 동행자 ─ X X
- 신규 컨텍스트 발굴 예제
컨텍스트 어휘 Tagging 실험 결과
- Target : Topic,분위기,동행자,목적,시간,기능
- Precision : 95.74% (Close Test)
지금까지의 흐름 : Remind!
Local DB
전주한옥마을
Context-aware Analysis Model
S1: 아이들과 당일치기로 전주를 다녀왔어요S2: 아이들 교육에도 최적의 장소S3: 비오는날 운치있는 전주여행
S4: 운치있고 여유로운 곳이었어요S5: 야간에 산책하면서 다니는 재미S6: 날씨 즐기며 천천히 걸어다니는 것도
UGC
전주한옥마을
S1: 아이들과S2: 아이들S3: 운치있는
S4: 운치있고S5: 산책S6: 걸어다니는
1. 문장 입력 2. 문맥 이해 3. 컨텍스트 추출
아이들과아이들애들하고
운치있는운치있고운치돋는
산책걸어다니는걷기좋은
동행자
분위기
Topic
S1:아이들과(aideulgwa)
Temporal ConvNet
S1:
TextRepresentation
아이들과
당일치기로
전주를
Bidirectional LSTM동행자
X
Xword
embedding
Problem in this Task
- 컨텍스트 랭킹 : 추출에 사용된 컨텍스트 표현 중 여행지 A에 더 적합한 컨텍스트 표현은?
장소별 더 생생하고 적절한 컨텍스트 표현을 찾는 문제
로맨틱한분위기
러블리한
낭만이 있는
몽환적인
Context 표현 Ranking Module Design
여행지 문장LatentVectors
(Test Data)
LatentVectors
from TrainingData
Average of Latent Vectors
for each Context
POI 별Context 통계 추출
Ranking by Context Frequency and Expected Value
컨텍스트빈도
실제빈도빈도기대값
Test Data Classification
컨텍스트별 평균 Latent Vector 계산
Ranking
1024차원의 CNN Latent Vector 활용
컨텍스트별Latent
Vector와거리 비교
Ranking Logic
0
0.2
0.4
0.6
0.8
1
Expected
Value
Actual
Value
기타
벽화마을
만두
문꼬치
초코파이
성당
전주한옥마을 (주제)
Ranking by Context Frequency and Expected Value
컨텍스트빈도
실제빈도빈도기대값
Ranking
Lesson
- 대규모의 학습데이터 획득이 쉽지 않다.
- 대량의 학습데이터 획득을 위해 기존 Text Mining 방법론을 활용해도 효과적
딥러닝은 학습데이터 획득/구축이 절대적
- 단, 데이터 전처리가 충분히 이루어진다는 전제
- 문제의 정의에 따라 딥러닝은 The Best Solution이 될 수 있다.
딥러닝은 충분히 현재의 해답이 될 수 있다
What’s Next
- ‘목적’ ‘동행자’ ‘분위기’ ‘토픽’ 이외의 지역 컨텍스트 추출 및 확장 적용 실험
컨텍스트 지역검색 확장 실험
Semi-Supervised Deep Learning 연구 및 적용
- 성능에 가장 큰 영향을 미치는 학습데이터 구성의 문제 해결
- Unlabeled data + 딥러닝
Recommended