4. NLP 기반의 Intelligent Agent?
핵심 기술에 집중 자연어 처리 기술 스터디
로그 기반의 개인화 추천머신러닝을 활용한 시스템
5. News4U
평소에 N사 뉴스를 즐겨보는 편이다.
하지만, 중복되거나 관심 없는 뉴스가 많아 보기 힘들다.
내 관심사에 맞는 기사만 추천해줄 수는 없을까?
잡다한 뉴스가 아니라 한 주의 이슈를 알려줬으면 좋을 텐데…
“쓰면 쓸 수록 똑똑해지는 개인화 뉴스 큐레이션”
6. News4U
“쓰면 쓸 수록 똑똑해지는 개인화 뉴스 큐레이션”
데이터 수집 데이터 전처리 데이터 모델링 개인화 추천
7. News4U
자연어처리
머신러닝 개인화 추천
비정형 텍스트 처리
형태소 분석, 개체명 인식
워드 임베딩
주간 이슈 클러스터링
거리, 유사도 계산
로그 수집 시스템
이슈 랭킹 알고리즘
컨텐츠 기반 추천 알고리즘
17. TF-IDF
Term Frequency – Inverse Document Frequency
역문서 빈도 : 단어가 문서 집합 내에서 얼마나 자주 등장하는지
전체 문서에서 단어가 포함된 문서가 적다면 값은 ↑, 흔한 단어를 걸러 낼 수 있다
18. K-Means Clustering
중심점에 따라 클러스터가 민감하게 변하는 문제
이슈는 매일 변하는데, K의 개수를 어떻게 설정해야 할까?
K-Means Algorithm
“주어진 데이터를 K개의 클러스터로 묶는 알고리즘,
각 클러스터와 거리 차이의 분산을 최소화하는 방식으로 동작”
19. K-Means Clustering
K-Means++ Algorithm
1. Random initial centroid
2. Calculate distance, D(x)
3. Choose next centroid from D(x)2
“2007. k-means++: The Advantages of Careful Seeding” 논문 참조
O(n) → O(logk)
23. Doc2Vec
문서를 백터로 표현하는 방법
The bag of words representation
• TF-IDF, Count Vector 등등
• 단어의 빈도수를 백터로 표현
• 단어의 순서와 의미를 나타내지 못함
Continuous Word Embedding
• Word2Vec, Doc2Vec 등등
• 문맥을 이용하여 단어를 백터로 표현
• 비슷한 단어들이 비슷한 백터로 표현됨
1. 한국의 수도 서울
2. 일본의 수도 도쿄
3. 도쿄는 일본의 수도
4. 도쿄는 일본의 중심지
5. 서울은 한국의 수도
6. 서울은 한국의 중심지
6개의 문장으로 백터 표현
25. Doc2Vec Clustering
클러스터링 알고리즘 자체 개발
• 뉴스의 특성상 클러스터의 개수가 매일 다름
• 하지만 K-Means, Agglomerative 등 클러스터링 알고리즘은
대부분 클러스터의 개수(k)를 고정
• 클러스터의 개수보다 유사도를 더 중요시하여 의미적으로 유의미한 클러스터만 사용
• KTH 파란 뉴스 클러스터링 상용 서비스 개발 경험 노하우 듣고 직접 구현해 보기로 결정
26. 1년 3개월 뉴스데이터 + 세종 말뭉치를 이용하여 Doc2Vec 학습
Doc2Vec Clustering
코사인 유사도 사용
θ
MST에서 유사도가 설정된 Threshold이상이면 뉴스를 묶음
28. 두 가지 방법론 비교
K-Means Clustering Doc2Vec Similarity Clustering
TF-IDF Vectorizer Word2Vec Vector
K의 개수가 고정 O K의 개수가 고정 X
Euclidean Distance Cosine Similarity
30. 추천 방식의 비교
Collaborative Filtering
• 내가 본 아이템이 비슷한 다른 사람이
봤던 아이템 추천
• Cold Start Problem이 나타남
• 최신성이 중요한 뉴스에 부적합
Content-based filtering
• 내가 봤던 아이템과 비슷한 속성의
아이템 추천
• 아이템 질을 추천에 반영하기 힘듦
• 로그가 적어도 시작할 수 있다.
31. • 각 클러스터마다 이슈 점수를 매긴다.
• 사용자 로그에서 각 클러스터의 비율을 이슈 점수에 보정
• 보정된 점수를 토대로 상위 클러스터를 보여준다.
개인화 추천 알고리즘
32. 현재 가장 이슈가 되는 클러스터를 찾기 위한 알고리즘
이슈 랭킹 알고리즘
• 사회적으로 관심도가 높은 뉴스를 선정하기 위한 알고리즘
• 클러스터링 된 뉴스를 이용하여 이슈 선정
• Portion – 전체 뉴스에서 차지하는 비율 (높은 관심도 반영)
• Cohesion – 응집도, 유사도 (클러스터링이 잘된 것 반영)
• TimeDelta – 현재 시간과의 차이 (최신 이슈를 반영)
사용한 수치
35. • Implicit data를 중심으로 분석
• 본 뉴스 ID, 뉴스를 본 시각, 페이지 뷰 시간
• 유저 로그를 분석해서 유저가 선호하는 클러스터를 알 수 있다.
• 유저가 본 뉴스 중 각 클러스터가 차지하는 비율 계산 (LCR)
사용자 로그 분석
Log Cluster Ratio
36. • 비슷한 클러스터끼리 LCR값을 서로 더한다. (LCR을 보정)
• 뉴스 카테고리는 사람이 분류한 것이라 머신러닝의 한계를 보완한다.
• 카테고리 분포가 비슷한 클러스터는 비슷하다고 가정
사회 정치 스포츠
2 1 10
사회 정치 스포츠
4 4 8
0.916
클러스터A : 로그의 35% 차지 (lCR=0.35)
클러스터B
클러스터B의 lCR을
상수 * 0.916 * 0.35만큼 가산
사용자 로그 분석
37. • 각 카테고리의 LCR 값과 이슈 점수를 조합해서 이슈 점수 계산
• Rank가 낮을수록 점수가 높아지도록 조정
• 유저 로그가 많이 쌓일수록 LCR의 영향력이 커지도록 조정
• 난수를 집어넣어 추천되는 뉴스가 다양할 수 있도록 조정
사용자 로그 분석