SlideShare uma empresa Scribd logo
1 de 39
개인화 뉴스 큐레이션 서비스
News4U
Software Maestro 7th
목 차
1. 프로젝트 소개
2. 데이터 수집 및 전처리
3. 클러스터링 방법론 A
5. 클러스터링 방법론 B
6. 개인화 추천 알고리즘
7. 프로젝트 시연
프로젝트 소개
NLP 기반의 Intelligent Agent?
핵심 기술에 집중 자연어 처리 기술 스터디
로그 기반의 개인화 추천머신러닝을 활용한 시스템
News4U
평소에 N사 뉴스를 즐겨보는 편이다.
하지만, 중복되거나 관심 없는 뉴스가 많아 보기 힘들다.
내 관심사에 맞는 기사만 추천해줄 수는 없을까?
잡다한 뉴스가 아니라 한 주의 이슈를 알려줬으면 좋을 텐데…
“쓰면 쓸 수록 똑똑해지는 개인화 뉴스 큐레이션”
News4U
“쓰면 쓸 수록 똑똑해지는 개인화 뉴스 큐레이션”
데이터 수집 데이터 전처리 데이터 모델링 개인화 추천
News4U
자연어처리
머신러닝 개인화 추천
비정형 텍스트 처리
형태소 분석, 개체명 인식
워드 임베딩
주간 이슈 클러스터링
거리, 유사도 계산
로그 수집 시스템
이슈 랭킹 알고리즘
컨텐츠 기반 추천 알고리즘
System Architecture
데이터 수집 및 전처리
Data Collecting, Preprocessing
News4U Crawler
언론사 별 크롤링 결과 주 단위 뉴스 데이터 분포
1시간마다 4개 언론사로부터 뉴스 데이터를 수집
전체 기사 약 15만 건, 주 단위 약 2500 건
금~일, 데이터 감소
JTBC 뉴스룸 최순실
태블릿 파일 공개
전처리 과정
1. Mecab을 통한 형태소 분석
2. 한자를 한글로 변환 (hanja)
3. 개체명 사전을 이용하여 오분석 처리
4. 복합명사 추출
5. 뉴스 기사 태그 제거
Mecab 형태소 분석기
Mecab 형태소 분석기에는 개체명에 대한 지원이 부족
세종코퍼스 데이터로부터 고유명사 사전을 구축하여 오분석 처리
복합명사 형성 규칙
1. 조사가 생략된 명사/인접한 명사(예:형태소 분석)
2. 관형격 조사 결합 명사/피수식 명사(예:최고의 시스템)
3. 목적격, 주격조사 결합 명사/서술형 명사(예:정보를 검색)
복합명사 추출
의미 없는 기사들이 클러스터링 되는 문제 (오늘의 경기, 오늘의 운세…)
특정 태그에 의해 클러스터링 되는 문제 (경향포토, 카드뉴스, 궂긴소식…)
뉴스 기사 태그 제거
카테고리를 정제하여
불필요한 영역의 기사 제거
전체 데이터에 대한 태그를 분석 후,
빈도 수가 높은 태그를 최대한 제거
뉴스 기사 태그 제거
5가지 카테고리를 대상으로 선정
(정치, 경제, 사회, 스포츠, 과학)
클러스터링 방법론 A
K-Means Clustering
TF-IDF
Term Frequency – Inverse Document Frequency
역문서 빈도 : 단어가 문서 집합 내에서 얼마나 자주 등장하는지
전체 문서에서 단어가 포함된 문서가 적다면 값은 ↑, 흔한 단어를 걸러 낼 수 있다
K-Means Clustering
중심점에 따라 클러스터가 민감하게 변하는 문제
이슈는 매일 변하는데, K의 개수를 어떻게 설정해야 할까?
K-Means Algorithm
“주어진 데이터를 K개의 클러스터로 묶는 알고리즘,
각 클러스터와 거리 차이의 분산을 최소화하는 방식으로 동작”
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)
내부평가 (Internal Evaluation) 방식을 통해 K를 결정
K-Means Clustering
K의 개수를 결정 최적의 클러스터를 결정
K-Means Clustering
클러스터링 방법론 B
Doc2Vec을 사용한 Similarity Clustering
Doc2Vec
문서를 백터로 표현하는 방법
The bag of words representation
• TF-IDF, Count Vector 등등
• 단어의 빈도수를 백터로 표현
• 단어의 순서와 의미를 나타내지 못함
Continuous Word Embedding
• Word2Vec, Doc2Vec 등등
• 문맥을 이용하여 단어를 백터로 표현
• 비슷한 단어들이 비슷한 백터로 표현됨
1. 한국의 수도 서울
2. 일본의 수도 도쿄
3. 도쿄는 일본의 수도
4. 도쿄는 일본의 중심지
5. 서울은 한국의 수도
6. 서울은 한국의 중심지
6개의 문장으로 백터 표현
Distributed Representations of Sentences and Documents
Doc2Vec
+
Doc2Vec Clustering
클러스터링 알고리즘 자체 개발
• 뉴스의 특성상 클러스터의 개수가 매일 다름
• 하지만 K-Means, Agglomerative 등 클러스터링 알고리즘은
대부분 클러스터의 개수(k)를 고정
• 클러스터의 개수보다 유사도를 더 중요시하여 의미적으로 유의미한 클러스터만 사용
• KTH 파란 뉴스 클러스터링 상용 서비스 개발 경험 노하우 듣고 직접 구현해 보기로 결정
1년 3개월 뉴스데이터 + 세종 말뭉치를 이용하여 Doc2Vec 학습
Doc2Vec Clustering
코사인 유사도 사용
θ
MST에서 유사도가 설정된 Threshold이상이면 뉴스를 묶음
Doc2Vec Clustering
• Threshold와 반복 횟수를 조절하여 튜닝
• 유사도가 높고 클러스터의 개수도
적절한 것을 선택
두 가지 방법론 비교
K-Means Clustering Doc2Vec Similarity Clustering
TF-IDF Vectorizer Word2Vec Vector
K의 개수가 고정 O K의 개수가 고정 X
Euclidean Distance Cosine Similarity
개인화 추천 알고리즘
Recommendation Algorithm
추천 방식의 비교
Collaborative Filtering
• 내가 본 아이템이 비슷한 다른 사람이
봤던 아이템 추천
• Cold Start Problem이 나타남
• 최신성이 중요한 뉴스에 부적합
Content-based filtering
• 내가 봤던 아이템과 비슷한 속성의
아이템 추천
• 아이템 질을 추천에 반영하기 힘듦
• 로그가 적어도 시작할 수 있다.
• 각 클러스터마다 이슈 점수를 매긴다.
• 사용자 로그에서 각 클러스터의 비율을 이슈 점수에 보정
• 보정된 점수를 토대로 상위 클러스터를 보여준다.
개인화 추천 알고리즘
현재 가장 이슈가 되는 클러스터를 찾기 위한 알고리즘
이슈 랭킹 알고리즘
• 사회적으로 관심도가 높은 뉴스를 선정하기 위한 알고리즘
• 클러스터링 된 뉴스를 이용하여 이슈 선정
• Portion – 전체 뉴스에서 차지하는 비율 (높은 관심도 반영)
• Cohesion – 응집도, 유사도 (클러스터링이 잘된 것 반영)
• TimeDelta – 현재 시간과의 차이 (최신 이슈를 반영)
사용한 수치
𝑤0 × 𝑝𝑜𝑟𝑡𝑖𝑜𝑛 + 𝑤1 × cohesion +
𝑤2
𝑡𝑖𝑚𝑒_𝑑𝑒𝑙𝑡𝑎
이슈 랭킹 알고리즘
𝑤0 × 𝑝𝑜𝑟𝑡𝑖𝑜𝑛 𝑟𝑎𝑛𝑘 + 𝑤1 × 𝑐ohesion 𝑟𝑎𝑛𝑘 + 𝑤2 × 𝑡𝑖𝑚𝑒_𝑑𝑒𝑙𝑡𝑎 𝑟𝑎𝑛𝑘
수치의 랭킹을 반영
수치들을 그대로 반영하면 각각의 중요도를 조절하기가 어려움
가중치
이슈 랭킹 알고리즘
• Implicit data를 중심으로 분석
• 본 뉴스 ID, 뉴스를 본 시각, 페이지 뷰 시간
• 유저 로그를 분석해서 유저가 선호하는 클러스터를 알 수 있다.
• 유저가 본 뉴스 중 각 클러스터가 차지하는 비율 계산 (LCR)
사용자 로그 분석
Log Cluster Ratio
• 비슷한 클러스터끼리 LCR값을 서로 더한다. (LCR을 보정)
• 뉴스 카테고리는 사람이 분류한 것이라 머신러닝의 한계를 보완한다.
• 카테고리 분포가 비슷한 클러스터는 비슷하다고 가정
사회 정치 스포츠
2 1 10
사회 정치 스포츠
4 4 8
0.916
클러스터A : 로그의 35% 차지 (lCR=0.35)
클러스터B
클러스터B의 lCR을
상수 * 0.916 * 0.35만큼 가산
사용자 로그 분석
• 각 카테고리의 LCR 값과 이슈 점수를 조합해서 이슈 점수 계산
• Rank가 낮을수록 점수가 높아지도록 조정
• 유저 로그가 많이 쌓일수록 LCR의 영향력이 커지도록 조정
• 난수를 집어넣어 추천되는 뉴스가 다양할 수 있도록 조정
사용자 로그 분석
개인화 적용 전/후 비교
감사합니다

Mais conteúdo relacionado

Mais procurados

[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System Kwangseob Kim
 
Conversational AI with Transformer Models
Conversational AI with Transformer ModelsConversational AI with Transformer Models
Conversational AI with Transformer ModelsDatabricks
 
Recommender systems: Content-based and collaborative filtering
Recommender systems: Content-based and collaborative filteringRecommender systems: Content-based and collaborative filtering
Recommender systems: Content-based and collaborative filteringViet-Trung TRAN
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.jsHeeJung Hwang
 
Recommendation system
Recommendation systemRecommendation system
Recommendation systemAkshat Thakar
 
[한국 IBM 권오윤] H2O.ai DriverlessAI 소개자료
[한국 IBM 권오윤] H2O.ai DriverlessAI 소개자료[한국 IBM 권오윤] H2O.ai DriverlessAI 소개자료
[한국 IBM 권오윤] H2O.ai DriverlessAI 소개자료오윤 권
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용Susang Kim
 
Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Taekyung Han
 
Recommendation system
Recommendation system Recommendation system
Recommendation system Vikrant Arya
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들Chris Ohk
 
Recommendation Systems Basics
Recommendation Systems BasicsRecommendation Systems Basics
Recommendation Systems BasicsJarin Tasnim Khan
 
프로젝트에서 Sw아키텍트의 역할 20140717
프로젝트에서 Sw아키텍트의 역할 20140717프로젝트에서 Sw아키텍트의 역할 20140717
프로젝트에서 Sw아키텍트의 역할 20140717Young On Kim
 
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...AWSKRUG - AWS한국사용자모임
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화BOAZ Bigdata
 
Natural Language Processing (NLP) - Introduction
Natural Language Processing (NLP) - IntroductionNatural Language Processing (NLP) - Introduction
Natural Language Processing (NLP) - IntroductionAritra Mukherjee
 
Recommender Systems in E-Commerce
Recommender Systems in E-CommerceRecommender Systems in E-Commerce
Recommender Systems in E-CommerceRoger Chen
 
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?Juhong Park
 

Mais procurados (20)

[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System
 
Conversational AI with Transformer Models
Conversational AI with Transformer ModelsConversational AI with Transformer Models
Conversational AI with Transformer Models
 
Recommender systems: Content-based and collaborative filtering
Recommender systems: Content-based and collaborative filteringRecommender systems: Content-based and collaborative filtering
Recommender systems: Content-based and collaborative filtering
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
 
Recommender Systems
Recommender SystemsRecommender Systems
Recommender Systems
 
Recommendation system
Recommendation systemRecommendation system
Recommendation system
 
[한국 IBM 권오윤] H2O.ai DriverlessAI 소개자료
[한국 IBM 권오윤] H2O.ai DriverlessAI 소개자료[한국 IBM 권오윤] H2O.ai DriverlessAI 소개자료
[한국 IBM 권오윤] H2O.ai DriverlessAI 소개자료
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
 
Recommender Systems
Recommender SystemsRecommender Systems
Recommender Systems
 
Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차
 
Recommendation system
Recommendation system Recommendation system
Recommendation system
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
 
Recommendation Systems Basics
Recommendation Systems BasicsRecommendation Systems Basics
Recommendation Systems Basics
 
프로젝트에서 Sw아키텍트의 역할 20140717
프로젝트에서 Sw아키텍트의 역할 20140717프로젝트에서 Sw아키텍트의 역할 20140717
프로젝트에서 Sw아키텍트의 역할 20140717
 
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
 
Natural Language Processing (NLP) - Introduction
Natural Language Processing (NLP) - IntroductionNatural Language Processing (NLP) - Introduction
Natural Language Processing (NLP) - Introduction
 
Recommender Systems in E-Commerce
Recommender Systems in E-CommerceRecommender Systems in E-Commerce
Recommender Systems in E-Commerce
 
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
 
Text Classification
Text ClassificationText Classification
Text Classification
 

Destaque

딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강
딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강
딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강Minji Kang
 
Kth daisy 추천솔루션_20130509_v1.0_이호철
Kth daisy 추천솔루션_20130509_v1.0_이호철Kth daisy 추천솔루션_20130509_v1.0_이호철
Kth daisy 추천솔루션_20130509_v1.0_이호철HoChul Lee
 
Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스
Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스
Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스Minkyu Cho
 
20141223 머하웃(mahout) 협업필터링_추천시스템구현
20141223 머하웃(mahout) 협업필터링_추천시스템구현20141223 머하웃(mahout) 협업필터링_추천시스템구현
20141223 머하웃(mahout) 협업필터링_추천시스템구현Tae Young Lee
 
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017Carol Smith
 

Destaque (7)

딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강
딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강
딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강
 
ITS 소개서(160317)
ITS 소개서(160317)ITS 소개서(160317)
ITS 소개서(160317)
 
Kth daisy 추천솔루션_20130509_v1.0_이호철
Kth daisy 추천솔루션_20130509_v1.0_이호철Kth daisy 추천솔루션_20130509_v1.0_이호철
Kth daisy 추천솔루션_20130509_v1.0_이호철
 
16-1학기 ITS 10기 오리엔테이션
16-1학기 ITS 10기 오리엔테이션16-1학기 ITS 10기 오리엔테이션
16-1학기 ITS 10기 오리엔테이션
 
Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스
Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스
Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스
 
20141223 머하웃(mahout) 협업필터링_추천시스템구현
20141223 머하웃(mahout) 협업필터링_추천시스템구현20141223 머하웃(mahout) 협업필터링_추천시스템구현
20141223 머하웃(mahout) 협업필터링_추천시스템구현
 
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
 

Semelhante a News clustering and Recommendation system using Word Embedding

빅데이터 기술을 활용한 뉴스 큐레이션 서비스 - 온병원
빅데이터 기술을 활용한 뉴스 큐레이션 서비스 - 온병원빅데이터 기술을 활용한 뉴스 큐레이션 서비스 - 온병원
빅데이터 기술을 활용한 뉴스 큐레이션 서비스 - 온병원datasciencekorea
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipelineJongho Woo
 
2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence 2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence Jong MIn Yu
 
온라인 커뮤니티 상의 게시글에 대해
 Louvain method와 클러스터링 기법을 적용한
 내부 커뮤니티 성향 탐지 기법

온라인 커뮤니티 상의 게시글에 대해
 Louvain method와 클러스터링 기법을 적용한
 내부 커뮤니티 성향 탐지 기법
온라인 커뮤니티 상의 게시글에 대해
 Louvain method와 클러스터링 기법을 적용한
 내부 커뮤니티 성향 탐지 기법

온라인 커뮤니티 상의 게시글에 대해
 Louvain method와 클러스터링 기법을 적용한
 내부 커뮤니티 성향 탐지 기법
Sun-young Kim
 
5일차.map reduce 활용
5일차.map reduce 활용5일차.map reduce 활용
5일차.map reduce 활용주영 송
 
딥러닝을 활용한 뉴스 메타 태깅
딥러닝을 활용한 뉴스 메타 태깅딥러닝을 활용한 뉴스 메타 태깅
딥러닝을 활용한 뉴스 메타 태깅if kakao
 
K means 알고리즘을 이용한 영화배우 클러스터링
K means 알고리즘을 이용한 영화배우 클러스터링K means 알고리즘을 이용한 영화배우 클러스터링
K means 알고리즘을 이용한 영화배우 클러스터링Edward Yoon
 
추천 시스템 개요 (1)-draft
추천 시스템 개요 (1)-draft추천 시스템 개요 (1)-draft
추천 시스템 개요 (1)-drafthyunsung lee
 
[Swift] Data Structure Introduction
[Swift] Data Structure Introduction[Swift] Data Structure Introduction
[Swift] Data Structure IntroductionBill Kim
 
사이버컴과 네트워크분석 13주차 1
사이버컴과 네트워크분석 13주차 1사이버컴과 네트워크분석 13주차 1
사이버컴과 네트워크분석 13주차 1Han Woo PARK
 
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼yonseilibrary
 
Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Taekyung Han
 
데이터분석의 길 5: “고수는 큰자료를 두려워하지 않는다” (클릭확률예측 상편)
데이터분석의 길 5:  “고수는 큰자료를 두려워하지 않는다” (클릭확률예측 상편)데이터분석의 길 5:  “고수는 큰자료를 두려워하지 않는다” (클릭확률예측 상편)
데이터분석의 길 5: “고수는 큰자료를 두려워하지 않는다” (클릭확률예측 상편)Jaimie Kwon (권재명)
 
Korean manual for nodexl fb, flickr, twitter, youtube, wiki
Korean manual for nodexl fb, flickr, twitter, youtube, wikiKorean manual for nodexl fb, flickr, twitter, youtube, wiki
Korean manual for nodexl fb, flickr, twitter, youtube, wikiHan Woo PARK
 
2017 주요 기술 흐름 및 개요
2017 주요 기술 흐름 및 개요2017 주요 기술 흐름 및 개요
2017 주요 기술 흐름 및 개요Hosung Lee
 
Rumor detection on social media
Rumor detection on social mediaRumor detection on social media
Rumor detection on social mediasegwangkim
 
머신러닝의 개념과 실습
머신러닝의 개념과 실습머신러닝의 개념과 실습
머신러닝의 개념과 실습Byoung-Hee Kim
 
텍스톰을 이용한 SNA 분석 -전채남
텍스톰을 이용한 SNA 분석 -전채남텍스톰을 이용한 SNA 분석 -전채남
텍스톰을 이용한 SNA 분석 -전채남datasciencekorea
 

Semelhante a News clustering and Recommendation system using Word Embedding (20)

Mahout
MahoutMahout
Mahout
 
빅데이터 기술을 활용한 뉴스 큐레이션 서비스 - 온병원
빅데이터 기술을 활용한 뉴스 큐레이션 서비스 - 온병원빅데이터 기술을 활용한 뉴스 큐레이션 서비스 - 온병원
빅데이터 기술을 활용한 뉴스 큐레이션 서비스 - 온병원
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence 2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence
 
온라인 커뮤니티 상의 게시글에 대해
 Louvain method와 클러스터링 기법을 적용한
 내부 커뮤니티 성향 탐지 기법

온라인 커뮤니티 상의 게시글에 대해
 Louvain method와 클러스터링 기법을 적용한
 내부 커뮤니티 성향 탐지 기법
온라인 커뮤니티 상의 게시글에 대해
 Louvain method와 클러스터링 기법을 적용한
 내부 커뮤니티 성향 탐지 기법

온라인 커뮤니티 상의 게시글에 대해
 Louvain method와 클러스터링 기법을 적용한
 내부 커뮤니티 성향 탐지 기법

 
5일차.map reduce 활용
5일차.map reduce 활용5일차.map reduce 활용
5일차.map reduce 활용
 
딥러닝을 활용한 뉴스 메타 태깅
딥러닝을 활용한 뉴스 메타 태깅딥러닝을 활용한 뉴스 메타 태깅
딥러닝을 활용한 뉴스 메타 태깅
 
K means 알고리즘을 이용한 영화배우 클러스터링
K means 알고리즘을 이용한 영화배우 클러스터링K means 알고리즘을 이용한 영화배우 클러스터링
K means 알고리즘을 이용한 영화배우 클러스터링
 
추천 시스템 개요 (1)-draft
추천 시스템 개요 (1)-draft추천 시스템 개요 (1)-draft
추천 시스템 개요 (1)-draft
 
[Swift] Data Structure Introduction
[Swift] Data Structure Introduction[Swift] Data Structure Introduction
[Swift] Data Structure Introduction
 
사이버컴과 네트워크분석 13주차 1
사이버컴과 네트워크분석 13주차 1사이버컴과 네트워크분석 13주차 1
사이버컴과 네트워크분석 13주차 1
 
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼
 
Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차
 
데이터분석의 길 5: “고수는 큰자료를 두려워하지 않는다” (클릭확률예측 상편)
데이터분석의 길 5:  “고수는 큰자료를 두려워하지 않는다” (클릭확률예측 상편)데이터분석의 길 5:  “고수는 큰자료를 두려워하지 않는다” (클릭확률예측 상편)
데이터분석의 길 5: “고수는 큰자료를 두려워하지 않는다” (클릭확률예측 상편)
 
빅데이터
빅데이터빅데이터
빅데이터
 
Korean manual for nodexl fb, flickr, twitter, youtube, wiki
Korean manual for nodexl fb, flickr, twitter, youtube, wikiKorean manual for nodexl fb, flickr, twitter, youtube, wiki
Korean manual for nodexl fb, flickr, twitter, youtube, wiki
 
2017 주요 기술 흐름 및 개요
2017 주요 기술 흐름 및 개요2017 주요 기술 흐름 및 개요
2017 주요 기술 흐름 및 개요
 
Rumor detection on social media
Rumor detection on social mediaRumor detection on social media
Rumor detection on social media
 
머신러닝의 개념과 실습
머신러닝의 개념과 실습머신러닝의 개념과 실습
머신러닝의 개념과 실습
 
텍스톰을 이용한 SNA 분석 -전채남
텍스톰을 이용한 SNA 분석 -전채남텍스톰을 이용한 SNA 분석 -전채남
텍스톰을 이용한 SNA 분석 -전채남
 

Mais de Junyoung Park

Quantitive Algorithm Trading
Quantitive Algorithm TradingQuantitive Algorithm Trading
Quantitive Algorithm TradingJunyoung Park
 
Common Design for Distributed Machine Learning
Common Design for Distributed Machine LearningCommon Design for Distributed Machine Learning
Common Design for Distributed Machine LearningJunyoung Park
 
Kaggle KKBox Churn Prediction
Kaggle KKBox Churn PredictionKaggle KKBox Churn Prediction
Kaggle KKBox Churn PredictionJunyoung Park
 
Cloudera & Zookeeper
Cloudera & ZookeeperCloudera & Zookeeper
Cloudera & ZookeeperJunyoung Park
 
한국어 자연어처리 101
한국어 자연어처리 101한국어 자연어처리 101
한국어 자연어처리 101Junyoung Park
 
Continuous Integration with Gitlab
Continuous Integration with GitlabContinuous Integration with Gitlab
Continuous Integration with GitlabJunyoung Park
 
Python Testing for Flask
Python Testing for FlaskPython Testing for Flask
Python Testing for FlaskJunyoung Park
 
Clustering, k means algorithm
Clustering, k means algorithmClustering, k means algorithm
Clustering, k means algorithmJunyoung Park
 
About Neural Network
About Neural NetworkAbout Neural Network
About Neural NetworkJunyoung Park
 

Mais de Junyoung Park (14)

Quantitive Algorithm Trading
Quantitive Algorithm TradingQuantitive Algorithm Trading
Quantitive Algorithm Trading
 
K-Means Clustering
K-Means ClusteringK-Means Clustering
K-Means Clustering
 
Common Design for Distributed Machine Learning
Common Design for Distributed Machine LearningCommon Design for Distributed Machine Learning
Common Design for Distributed Machine Learning
 
AWS EMR + Spark ML
AWS EMR + Spark MLAWS EMR + Spark ML
AWS EMR + Spark ML
 
Kaggle KKBox Churn Prediction
Kaggle KKBox Churn PredictionKaggle KKBox Churn Prediction
Kaggle KKBox Churn Prediction
 
Spark config
Spark configSpark config
Spark config
 
Cloudera & Zookeeper
Cloudera & ZookeeperCloudera & Zookeeper
Cloudera & Zookeeper
 
한국어 자연어처리 101
한국어 자연어처리 101한국어 자연어처리 101
한국어 자연어처리 101
 
Continuous Integration with Gitlab
Continuous Integration with GitlabContinuous Integration with Gitlab
Continuous Integration with Gitlab
 
Docker Intro
Docker IntroDocker Intro
Docker Intro
 
Python Testing for Flask
Python Testing for FlaskPython Testing for Flask
Python Testing for Flask
 
Clustering, k means algorithm
Clustering, k means algorithmClustering, k means algorithm
Clustering, k means algorithm
 
About Neural Network
About Neural NetworkAbout Neural Network
About Neural Network
 
About SVM
About SVMAbout SVM
About SVM
 

News clustering and Recommendation system using Word Embedding

  • 1. 개인화 뉴스 큐레이션 서비스 News4U Software Maestro 7th
  • 2. 목 차 1. 프로젝트 소개 2. 데이터 수집 및 전처리 3. 클러스터링 방법론 A 5. 클러스터링 방법론 B 6. 개인화 추천 알고리즘 7. 프로젝트 시연
  • 4. NLP 기반의 Intelligent Agent? 핵심 기술에 집중 자연어 처리 기술 스터디 로그 기반의 개인화 추천머신러닝을 활용한 시스템
  • 5. News4U 평소에 N사 뉴스를 즐겨보는 편이다. 하지만, 중복되거나 관심 없는 뉴스가 많아 보기 힘들다. 내 관심사에 맞는 기사만 추천해줄 수는 없을까? 잡다한 뉴스가 아니라 한 주의 이슈를 알려줬으면 좋을 텐데… “쓰면 쓸 수록 똑똑해지는 개인화 뉴스 큐레이션”
  • 6. News4U “쓰면 쓸 수록 똑똑해지는 개인화 뉴스 큐레이션” 데이터 수집 데이터 전처리 데이터 모델링 개인화 추천
  • 7. News4U 자연어처리 머신러닝 개인화 추천 비정형 텍스트 처리 형태소 분석, 개체명 인식 워드 임베딩 주간 이슈 클러스터링 거리, 유사도 계산 로그 수집 시스템 이슈 랭킹 알고리즘 컨텐츠 기반 추천 알고리즘
  • 9. 데이터 수집 및 전처리 Data Collecting, Preprocessing
  • 10. News4U Crawler 언론사 별 크롤링 결과 주 단위 뉴스 데이터 분포 1시간마다 4개 언론사로부터 뉴스 데이터를 수집 전체 기사 약 15만 건, 주 단위 약 2500 건 금~일, 데이터 감소 JTBC 뉴스룸 최순실 태블릿 파일 공개
  • 11. 전처리 과정 1. Mecab을 통한 형태소 분석 2. 한자를 한글로 변환 (hanja) 3. 개체명 사전을 이용하여 오분석 처리 4. 복합명사 추출 5. 뉴스 기사 태그 제거
  • 12. Mecab 형태소 분석기 Mecab 형태소 분석기에는 개체명에 대한 지원이 부족 세종코퍼스 데이터로부터 고유명사 사전을 구축하여 오분석 처리
  • 13. 복합명사 형성 규칙 1. 조사가 생략된 명사/인접한 명사(예:형태소 분석) 2. 관형격 조사 결합 명사/피수식 명사(예:최고의 시스템) 3. 목적격, 주격조사 결합 명사/서술형 명사(예:정보를 검색) 복합명사 추출
  • 14. 의미 없는 기사들이 클러스터링 되는 문제 (오늘의 경기, 오늘의 운세…) 특정 태그에 의해 클러스터링 되는 문제 (경향포토, 카드뉴스, 궂긴소식…) 뉴스 기사 태그 제거
  • 15. 카테고리를 정제하여 불필요한 영역의 기사 제거 전체 데이터에 대한 태그를 분석 후, 빈도 수가 높은 태그를 최대한 제거 뉴스 기사 태그 제거 5가지 카테고리를 대상으로 선정 (정치, 경제, 사회, 스포츠, 과학)
  • 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)
  • 20. 내부평가 (Internal Evaluation) 방식을 통해 K를 결정 K-Means Clustering
  • 21. K의 개수를 결정 최적의 클러스터를 결정 K-Means Clustering
  • 22. 클러스터링 방법론 B Doc2Vec을 사용한 Similarity Clustering
  • 23. Doc2Vec 문서를 백터로 표현하는 방법 The bag of words representation • TF-IDF, Count Vector 등등 • 단어의 빈도수를 백터로 표현 • 단어의 순서와 의미를 나타내지 못함 Continuous Word Embedding • Word2Vec, Doc2Vec 등등 • 문맥을 이용하여 단어를 백터로 표현 • 비슷한 단어들이 비슷한 백터로 표현됨 1. 한국의 수도 서울 2. 일본의 수도 도쿄 3. 도쿄는 일본의 수도 4. 도쿄는 일본의 중심지 5. 서울은 한국의 수도 6. 서울은 한국의 중심지 6개의 문장으로 백터 표현
  • 24. Distributed Representations of Sentences and Documents Doc2Vec +
  • 25. Doc2Vec Clustering 클러스터링 알고리즘 자체 개발 • 뉴스의 특성상 클러스터의 개수가 매일 다름 • 하지만 K-Means, Agglomerative 등 클러스터링 알고리즘은 대부분 클러스터의 개수(k)를 고정 • 클러스터의 개수보다 유사도를 더 중요시하여 의미적으로 유의미한 클러스터만 사용 • KTH 파란 뉴스 클러스터링 상용 서비스 개발 경험 노하우 듣고 직접 구현해 보기로 결정
  • 26. 1년 3개월 뉴스데이터 + 세종 말뭉치를 이용하여 Doc2Vec 학습 Doc2Vec Clustering 코사인 유사도 사용 θ MST에서 유사도가 설정된 Threshold이상이면 뉴스를 묶음
  • 27. Doc2Vec Clustering • 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 – 현재 시간과의 차이 (최신 이슈를 반영) 사용한 수치
  • 33. 𝑤0 × 𝑝𝑜𝑟𝑡𝑖𝑜𝑛 + 𝑤1 × cohesion + 𝑤2 𝑡𝑖𝑚𝑒_𝑑𝑒𝑙𝑡𝑎 이슈 랭킹 알고리즘 𝑤0 × 𝑝𝑜𝑟𝑡𝑖𝑜𝑛 𝑟𝑎𝑛𝑘 + 𝑤1 × 𝑐ohesion 𝑟𝑎𝑛𝑘 + 𝑤2 × 𝑡𝑖𝑚𝑒_𝑑𝑒𝑙𝑡𝑎 𝑟𝑎𝑛𝑘 수치의 랭킹을 반영 수치들을 그대로 반영하면 각각의 중요도를 조절하기가 어려움 가중치
  • 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의 영향력이 커지도록 조정 • 난수를 집어넣어 추천되는 뉴스가 다양할 수 있도록 조정 사용자 로그 분석