SlideShare a Scribd company logo
1 of 47
Download to read offline
사이드 프로젝트로 알아보는
검색 서비스 개발
이주경
프로젝트를 시작 하게된 이유
프로젝트를 시작 하게된 이유
프로젝트를 시작 하게된 이유
사이드 프로젝트는 이렇게 해라
활력을 주고, 매일 똑같이 하는 작업도 다시 새롭게
바라볼 수 있는 기회를 주기 때문이다
오늘 이야기할 내용
프로젝트 설명 & 데모
데이터 수집
컬렉션 생성 및 색인
형태소 분석기 & 사전 튜닝
색인어 확장
랭킹 모델링
검색
서비스 구조
프로젝트 설명 & 데모
서비스
개발용 데모
검색 서비스 처리 과정
Collection generator Collection indexer
SearcherYoutube Data
검색 / 랭킹데이터 수집
컬렉션 생성 / 색인
Collection Index
데이터 수집
운동 & 건강 유튜브 데이터
수집
운동 & 건강 유튜브 채널 선별
건강 & 운동 재생목록 선별
140112 8281 7730
356248 121 8960 41
수집 유튜브 영상
1,437
https://python-pytube.readthedocs.io/en/latest/
수집에 사용한 Python package
컬렉션 생성 및 색인
수집한 데이터 검색이 되게 만들기!
검색에 필요한 정보들을 담고 있는 데이터 집합
노출 정보, 색인어, 랭킹에 활용하는 계산값 등
컬렉션이란?
검색대상 정보 선택
유튜브 아이디
제목
설명
채널명
자막
유튜브 제목으로 부터 색인어 추출
정말 쉽고 건강한 다이어트 식단
알려드려요
영상1
정말 / 쉽고 / 건강한 / 다이어트 / 식단 / 알려드려요
연예인 다이어트 식단 추천!!
영상2
연예인 / 다이어트 / 식단 / 추천
밥 반공기 다이어트 방법! 초간편
저탄수화물 다이어트 식단!!
영상3
밥 / 반공기 / 다이어트 / 방법 / 초간편 / 저탄수화물/
다이어트 / 식단
다이어트 식단 배달음식 주문
꿀팁 공유
영상4
다이어트 / 식단 / 배달음식 / 주문 / 꿀팁 / 공유
유튜브 색인 (Inverted index)
색인어 색인어가 등장한 영상
다이어트 영상1, 영상2, 영상3, 영상4
식단 영상1, 영상2, 영상
알려드려요 영상1
정말 영상1
쉽고 영상1
밥 영상3
…. ….
정말 쉽고 건강한 다이어트 식단
알려드려요
영상1
연예인 다이어트 식단 추천!!
영상2
밥 반공기 다이어트 방법! 초간편
저탄수화물 다이어트 식단!!
영상3
다이어트 식단 배달음식 주문
꿀팁 공유
영상4
색인 테이블
형태소 분석기 & 사전 튜닝
더 많이 검색이 되게 하기
건강한 다이어트 식단
정말 쉽고 건강한 다이어트 식단 알려드려요
정말 / 쉽고 / 건강한 / 다이어트 / 식단 / 알려드려요
건강한 / 다이어트 / 식단
“건강한 다이어트 식단” 형태소 분석
건강한 다이어트 식단
정말 쉽고 건강한 다이어트 식단 알려드려요
정말 / 쉽고 / 건강한 / 다이어트 / 식단 / 알려드려요
정말 쉽고 건강한다이어트 식단을 알려드려요
정말 / 쉽고 / 건강한다이어트 / 식단을 / 알려드려요
건강한 / 다이어트 / 식단
“건강한 다이어트 식단” 색인어가 일치하지 않는 경우
적절한 형태소 분석기를 구하자
적절한 형태소 분석기를 직접 개발하면 좋겠지만 …
ElasticSearch를 사용하고 있다면
건강한 다이어트 식단
정말 쉽고 건강한 다이어트 식단 알려드려요
정말 쉽고 건강한다이어트 식단을 알려드려요
건강 / 다이어트 / 식단
쉽 / 건강 / 다이어트 / 식단 / 알리 / 드리
쉽 / 건강 / 다이어트 / 식단 / 알리 / 드리
“건강한 다이어트 식단” Nori를 사용한 형태소 분석 결과
Standard vs Nori
그럼 다 끝난 것인가? “물”에 대해 기대하는 검색 결과
형태소 분석기는 완벽하지 않습니다
콧물이 주룩주룩 비염이 고생이신분 !
다이어트 위한 탄수화물 섭취량!
콧 / 물 / 비염 / 고생 / 신분
다이어트 / 위하 / 탄수화 / 물 / 섭취
복합명사
탄수화물
콧물
유산소운동 => 유산소 / 운동
동의어
스쿼트, squat
카르니티, carnitine
필라, 필라테스
제외어
제외어
사전을 이용한 형태소 분석기 튜닝
형태소 분석기 별로보는 키워드의 수
유튜브 제목에서 추출한 키워드의 수
적절한 형태소 분석기를 개발하고 장기간 동안 서비스에 맞게 튜닝을
하기 위해 관리도구 툴이 필요함
형태소 분석기는 색인처리 이외 서비스에도 많이 사용함. 이때 사용되는
형태소 분석기의 버전은 동일해야 함. 최신 버전의 형태소 분석기를
사용 혹은 구축할 수 있도록 인터페이스가 제공 되어야 함
변경된 형태소 분석결과를 적용하기 위해서는 재색인을 해야함
이외 고려해야 하는 점들
색인어 확장
더! 더! 많이 검색이 되게 하기
관련 내용의 색인어를 추출할 수 없는 경우
그냥 추가하면 되는게 아닌가?
TF-IDF 관련자료
유튜브 채널별로 같은 중복 내용이 존재하는 설명은 색언어 추출에 사용하지 않음
설명의 포함된 키워드들의 TF-IDF을 계산하고 이를 기준으로 최대 20개 만을 색인어로 사용
유튜브 설명에서 색인어 추출
Standard vs Nori (Dict) vs Expansion
랭킹 모델링
무엇을 보여주고 싶은가?
두 모델 모두 문서의 출현 빈도와 문서의 길이를 기반으로 점수를 계산함
BM25, Vector space + TF-IDF 모델이 적절한가?
(0.7 x 제목매칭) + (0.3 x 설명매칭) + (0.2 x 내용신뢰도) + (0.1 x 이미지점수)
유튜브 검색 랭킹 모델
탄수화물 식이섬유 당질 당류 총정리! (다이어트 필수상식)
밥 반공기 다이어트 방법! 초간편 저탄수화물 다이어트 식단!!
지방 먹으면 살빠지는 이유 [2분요약]
검색어가 제목과 설명에 존재하는가?
(0.7 x 제목매칭) + (0.3 x 설명매칭) + (0.2 x 내용신뢰도) + (0.1 x 이미지점수)
1.0
0.7
0.3
제목, 설명, 자막의 TF-IDF 벡터를 구함
제목, 설명과 자막 벡터의 코사인 유사도를 계산하고 이를 점수로 활용
0.2 x 0.396
제목, 설명과 영상의 내용은 얼마나 유사한가?
(0.7 x 제목매칭) + (0.3 x 설명매칭) + (0.2 x 내용신뢰도) + (0.1 x 이미지점수)
0.0792
품질 좋은 이미지를 가지고 있는가?
(0.7 x 제목매칭) + (0.3 x 설명매칭) + (0.2 x 내용신뢰도) + (0.1 x 이미지점수)
0.1
0.0
(0.7 x 제목매칭) + (0.3 x 설명매칭) + (0.2 x 내용신뢰도) + (0.1 x 이미지점수)
“제목매치” “설명매칭” 검색 결과 영역을 나눔
(0.7 x 제목매칭) + (0.3 x 설명매칭) + (0.2 x 내용신뢰도) + (0.1 x 이미지점수)
“내용신뢰도” “이미지점수” 각 영역에서 순위를 정함
검색
검색을 좀더 편하게 도와주기
직접 검색을 하기 보다는 Searcher 통해서 ...
Searcher Search Engine
Searcher 활용
서비스 구조
마지막 입니다 :)
ElasticSearch
Crawler Collection
Generator
Indexer
Dictionary
Dictionary
Management API
Search API
DEMO
Service
서비스 구조
감사합니다

More Related Content

What's hot

Using Graph and Transformer Embeddings for Vector Based Retrieval
Using Graph and Transformer Embeddings for Vector Based RetrievalUsing Graph and Transformer Embeddings for Vector Based Retrieval
Using Graph and Transformer Embeddings for Vector Based Retrieval
Sujit Pal
 

What's hot (20)

Introduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneIntroduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of Lucene
 
PLPgSqL- Datatypes, Language structure.pptx
PLPgSqL- Datatypes, Language structure.pptxPLPgSqL- Datatypes, Language structure.pptx
PLPgSqL- Datatypes, Language structure.pptx
 
Webinar: When to Use MongoDB
Webinar: When to Use MongoDBWebinar: When to Use MongoDB
Webinar: When to Use MongoDB
 
Understanding Data Partitioning and Replication in Apache Cassandra
Understanding Data Partitioning and Replication in Apache CassandraUnderstanding Data Partitioning and Replication in Apache Cassandra
Understanding Data Partitioning and Replication in Apache Cassandra
 
SparkSQL: A Compiler from Queries to RDDs
SparkSQL: A Compiler from Queries to RDDsSparkSQL: A Compiler from Queries to RDDs
SparkSQL: A Compiler from Queries to RDDs
 
Dimensional Fact Model @ BI Academy Launch
Dimensional Fact Model @ BI Academy LaunchDimensional Fact Model @ BI Academy Launch
Dimensional Fact Model @ BI Academy Launch
 
Apache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the CoversApache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the Covers
 
Cassandra
CassandraCassandra
Cassandra
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
Apache Calcite overview
Apache Calcite overviewApache Calcite overview
Apache Calcite overview
 
Optimizing Cypher Queries in Neo4j
Optimizing Cypher Queries in Neo4jOptimizing Cypher Queries in Neo4j
Optimizing Cypher Queries in Neo4j
 
Elasticsearch From the Bottom Up
Elasticsearch From the Bottom UpElasticsearch From the Bottom Up
Elasticsearch From the Bottom Up
 
Using Graph and Transformer Embeddings for Vector Based Retrieval
Using Graph and Transformer Embeddings for Vector Based RetrievalUsing Graph and Transformer Embeddings for Vector Based Retrieval
Using Graph and Transformer Embeddings for Vector Based Retrieval
 
PostgreSQL Performance Tables Partitioning vs. Aggregated Data Tables
PostgreSQL Performance Tables Partitioning vs. Aggregated Data TablesPostgreSQL Performance Tables Partitioning vs. Aggregated Data Tables
PostgreSQL Performance Tables Partitioning vs. Aggregated Data Tables
 
Apache Sentry for Hadoop security
Apache Sentry for Hadoop securityApache Sentry for Hadoop security
Apache Sentry for Hadoop security
 
Apache Kylin
Apache KylinApache Kylin
Apache Kylin
 
Sizing Your MongoDB Cluster
Sizing Your MongoDB ClusterSizing Your MongoDB Cluster
Sizing Your MongoDB Cluster
 
Spark SQL Deep Dive @ Melbourne Spark Meetup
Spark SQL Deep Dive @ Melbourne Spark MeetupSpark SQL Deep Dive @ Melbourne Spark Meetup
Spark SQL Deep Dive @ Melbourne Spark Meetup
 
PostgreSQL: Advanced indexing
PostgreSQL: Advanced indexingPostgreSQL: Advanced indexing
PostgreSQL: Advanced indexing
 
Delta Lake OSS: Create reliable and performant Data Lake by Quentin Ambard
Delta Lake OSS: Create reliable and performant Data Lake by Quentin AmbardDelta Lake OSS: Create reliable and performant Data Lake by Quentin Ambard
Delta Lake OSS: Create reliable and performant Data Lake by Quentin Ambard
 

Similar to 사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경

메조미디어 Tibuzz소개(201401)
메조미디어 Tibuzz소개(201401)메조미디어 Tibuzz소개(201401)
메조미디어 Tibuzz소개(201401)
Junhwa Kim
 
Fit mate_AI Data Analysis and Health Care Services for Obesity Management_김현우...
Fit mate_AI Data Analysis and Health Care Services for Obesity Management_김현우...Fit mate_AI Data Analysis and Health Care Services for Obesity Management_김현우...
Fit mate_AI Data Analysis and Health Care Services for Obesity Management_김현우...
iljun19971212
 
Do you know doenjang? (디미컨 Final)
Do you know doenjang? (디미컨 Final)Do you know doenjang? (디미컨 Final)
Do you know doenjang? (디미컨 Final)
지은 이
 
캡스톤설계1(설문분석)2013-1
캡스톤설계1(설문분석)2013-1캡스톤설계1(설문분석)2013-1
캡스톤설계1(설문분석)2013-1
Yong Heui Cho
 
검색엔진최적화 올인원 패키지 소개서_V1.0.pdf
검색엔진최적화 올인원 패키지 소개서_V1.0.pdf검색엔진최적화 올인원 패키지 소개서_V1.0.pdf
검색엔진최적화 올인원 패키지 소개서_V1.0.pdf
Jason Bum-Soo Kim
 

Similar to 사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경 (20)

[14.07.09] STAC 2014
[14.07.09] STAC 2014[14.07.09] STAC 2014
[14.07.09] STAC 2014
 
Deview2014 Live Broadcasting 추천시스템 발표 자료
Deview2014 Live Broadcasting 추천시스템 발표 자료Deview2014 Live Broadcasting 추천시스템 발표 자료
Deview2014 Live Broadcasting 추천시스템 발표 자료
 
[2B4]Live Broadcasting 추천시스템
[2B4]Live Broadcasting 추천시스템  [2B4]Live Broadcasting 추천시스템
[2B4]Live Broadcasting 추천시스템
 
Health Mashups: Presenting Statistical Patterns between Wellbeing Data and Co...
Health Mashups: Presenting Statistical Patterns between Wellbeing Data and Co...Health Mashups: Presenting Statistical Patterns between Wellbeing Data and Co...
Health Mashups: Presenting Statistical Patterns between Wellbeing Data and Co...
 
혁신가의 질문
혁신가의 질문   혁신가의 질문
혁신가의 질문
 
Edu startup elvator pitching_part1_151201
Edu startup elvator pitching_part1_151201Edu startup elvator pitching_part1_151201
Edu startup elvator pitching_part1_151201
 
IRECIPE BOT
IRECIPE BOTIRECIPE BOT
IRECIPE BOT
 
[분석]워드임베딩과 인공신경망을 이용한 개인 맞춤형 레시피 추천
[분석]워드임베딩과 인공신경망을 이용한 개인 맞춤형 레시피 추천[분석]워드임베딩과 인공신경망을 이용한 개인 맞춤형 레시피 추천
[분석]워드임베딩과 인공신경망을 이용한 개인 맞춤형 레시피 추천
 
2020.01.31 퍼블리 뉴스 큐레이터 모임
2020.01.31 퍼블리 뉴스 큐레이터 모임2020.01.31 퍼블리 뉴스 큐레이터 모임
2020.01.31 퍼블리 뉴스 큐레이터 모임
 
헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)
헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)
헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)
 
메조미디어 Tibuzz소개(201401)
메조미디어 Tibuzz소개(201401)메조미디어 Tibuzz소개(201401)
메조미디어 Tibuzz소개(201401)
 
Fit mate_AI Data Analysis and Health Care Services for Obesity Management_김현우...
Fit mate_AI Data Analysis and Health Care Services for Obesity Management_김현우...Fit mate_AI Data Analysis and Health Care Services for Obesity Management_김현우...
Fit mate_AI Data Analysis and Health Care Services for Obesity Management_김현우...
 
Do you know doenjang? (디미컨 Final)
Do you know doenjang? (디미컨 Final)Do you know doenjang? (디미컨 Final)
Do you know doenjang? (디미컨 Final)
 
recipewebsite
recipewebsiterecipewebsite
recipewebsite
 
People Analytics : Wolf-Project Proposal
People Analytics : Wolf-Project ProposalPeople Analytics : Wolf-Project Proposal
People Analytics : Wolf-Project Proposal
 
하림공모전 쌈닭팀 전략
하림공모전 쌈닭팀 전략하림공모전 쌈닭팀 전략
하림공모전 쌈닭팀 전략
 
RU5th Open Project_COACH
RU5th Open Project_COACHRU5th Open Project_COACH
RU5th Open Project_COACH
 
캡스톤설계1(설문분석)2013-1
캡스톤설계1(설문분석)2013-1캡스톤설계1(설문분석)2013-1
캡스톤설계1(설문분석)2013-1
 
검색엔진최적화 올인원 패키지 소개서_V1.0.pdf
검색엔진최적화 올인원 패키지 소개서_V1.0.pdf검색엔진최적화 올인원 패키지 소개서_V1.0.pdf
검색엔진최적화 올인원 패키지 소개서_V1.0.pdf
 
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [보야져 팀] : 기업연계프로젝트 3종세트 [마케팅시각화/서비스기획/분석시스템 구축]
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [보야져 팀] : 기업연계프로젝트 3종세트 [마케팅시각화/서비스기획/분석시스템 구축]제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [보야져 팀] : 기업연계프로젝트 3종세트 [마케팅시각화/서비스기획/분석시스템 구축]
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [보야져 팀] : 기업연계프로젝트 3종세트 [마케팅시각화/서비스기획/분석시스템 구축]
 

More from Yan So

More from Yan So (9)

트위터의 추천 시스템 파헤치기
트위터의 추천 시스템 파헤치기트위터의 추천 시스템 파헤치기
트위터의 추천 시스템 파헤치기
 
AWSKRUG 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
AWSKRUG 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들AWSKRUG 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
AWSKRUG 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
 
AWS Retail & CPG Day - Yan So
AWS Retail & CPG Day - Yan SoAWS Retail & CPG Day - Yan So
AWS Retail & CPG Day - Yan So
 
데이터가 흐르는 팀 만들기 - 정원희
데이터가 흐르는 팀 만들기 - 정원희데이터가 흐르는 팀 만들기 - 정원희
데이터가 흐르는 팀 만들기 - 정원희
 
Brightics Studio 발표자료 AWSKRUG 염성욱
Brightics Studio 발표자료 AWSKRUG 염성욱Brightics Studio 발표자료 AWSKRUG 염성욱
Brightics Studio 발표자료 AWSKRUG 염성욱
 
전혀 새로운 방법의 데이터 탐색 - 김민수 (Tableau)
전혀 새로운 방법의 데이터 탐색 - 김민수 (Tableau)전혀 새로운 방법의 데이터 탐색 - 김민수 (Tableau)
전혀 새로운 방법의 데이터 탐색 - 김민수 (Tableau)
 
[AWSKRUG] 데이터 얼마까지 알아보셨어요?
[AWSKRUG] 데이터 얼마까지 알아보셨어요?[AWSKRUG] 데이터 얼마까지 알아보셨어요?
[AWSKRUG] 데이터 얼마까지 알아보셨어요?
 
MWC Shanghai 2018 톺아보기
MWC Shanghai 2018 톺아보기MWC Shanghai 2018 톺아보기
MWC Shanghai 2018 톺아보기
 
R과 Sagemaker를 활용한 딥러닝 어플리케이션 만들기
R과 Sagemaker를 활용한 딥러닝 어플리케이션 만들기R과 Sagemaker를 활용한 딥러닝 어플리케이션 만들기
R과 Sagemaker를 활용한 딥러닝 어플리케이션 만들기
 

사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경