KR102605100B1 - 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치 - Google Patents

콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR102605100B1
KR102605100B1 KR1020230046976A KR20230046976A KR102605100B1 KR 102605100 B1 KR102605100 B1 KR 102605100B1 KR 1020230046976 A KR1020230046976 A KR 1020230046976A KR 20230046976 A KR20230046976 A KR 20230046976A KR 102605100 B1 KR102605100 B1 KR 102605100B1
Authority
KR
South Korea
Prior art keywords
content
vector
search
language model
content item
Prior art date
Application number
KR1020230046976A
Other languages
English (en)
Inventor
김동환
김용환
주찬형
Original Assignee
주식회사 티빙
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 티빙 filed Critical 주식회사 티빙
Priority to KR1020230046976A priority Critical patent/KR102605100B1/ko
Application granted granted Critical
Publication of KR102605100B1 publication Critical patent/KR102605100B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/78Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/7867Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using information manually generated, e.g. tags, keywords, comments, title and artist information, manually generated time, location and usage information, user ratings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3347Query execution using vector based model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/73Querying
    • G06F16/732Query formulation
    • G06F16/7343Query language or query format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/73Querying
    • G06F16/738Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/74Browsing; Visualisation therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/117Tagging; Marking up; Designating a block; Setting of attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0455Auto-encoder networks; Encoder-decoder networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

본 개시는 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 것으로, 콘텐츠 스트리밍 시스템에서 서버의 동작 방법은, 검색어를 획득하는 단계, 콘텐츠 아이템들의 메타 데이터에 포함되는 해시태그 정보를 기반으로 학습된 언어모델을 이용하여, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계, 상기 검색어에 대응되는 제1 벡터와 제1 콘텐츠 아이템의 제2 벡터를 기반으로 상기 검색어와 상기 제1 콘텐츠 아이템 간의 유사도를 결정하는 단계, 및 상기 유사도에 기반하여 선택된 상기 제1 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 제공하는 단계를 포함할 수 있다.

Description

콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치{METHOD AND APPARATUS FOR SEARCHING CONTENTS IN CONTENTS STREAMING SYSTEM}
본 개시는 콘텐츠 스트리밍 시스템에 관한 것으로, 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치에 관한 것이다.
다양한 기술의 발전 및 소비의 트랜드 변화에 따라, 콘텐츠 공급 및 소비 방식에 큰 변화가 발생하였다. 디지털 기술, 컴퓨터 기술, 인터넷/통신 기술 등의 발전은 콘텐츠의 종류 및 생산 주체에 대한 경계를 허물어지게 하였으며, 이는 콘텐츠에 대한 생산 및 소비 패턴의 큰 변화를 야기하였다. 일반인들도 콘텐츠를 창작 및 배포하는 것을 가능케 하는 플랫폼들이 생겨났다. 또한, 다양한 콘텐츠로의 접근 용이성이 확보되었고, 소비 방식에 다양한 옵션들이 제공되기 시작하였다.
이러한 콘텐츠 산업의 많은 변화들의 가운데, OTT(over the top) 서비스가 존재한다. OTT 서비스는 인터넷 및 모바일 통신 기반의 미디어 플랫폼으로서, 기존의 방송 서비스를 넘어서 별도의 셋탑 박스와 같은 장비 없이도 다양한 콘텐츠들을 소비자들에게 제공한다. OTT 서비스의 개념은 최초 영화, 텔레비전 프로그램 등을 VOD(video on demand) 방식으로 제공하는 것으로 시작하였으나, 현재 OTT 서비스 제공자의 자체 제작 콘텐츠를 제공하는 것은 물론, 모바일 플랫폼까지도 그 영역을 확대하는 등 여전히 확장 중에 있는 서비스이다.
본 개시는 콘텐츠 스트리밍 시스템에서 콘텐츠를 효과적으로 검색하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠 스트리밍 시스템에서 검색어와 콘텐츠의 유사도를 기반으로 콘텐츠를 검색하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠 스트리밍 시스템에서 언어모델을 이용하여 검색어와 콘텐츠의 유사도를 결정하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠의 해시태그를 기반으로 언어모델을 학습하기 위한 방법 및 장치를 제공하기 위한 것이다.
본 개시는 해시태그를 기반으로 학습된 언어모델을 이용하여 검색어의 벡터를 결정하기 위한 방법 및 장치를 제공하기 위한 것이다.
본 개시는 콘텐츠의 내용을 설명하는 텍스트 메타 데이터를 기반으로 콘텐츠의 벡터를 결정하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 검색어의 벡터와 콘텐츠의 벡터 간의 유사도에 기반하여 콘텐츠 검색 목록을 생성 및 제공하기 위한 방법 및 장치를 제공할 수 있다.
본 개시에서 이루고자 하는 기술적 목적들은 이상에서 언급한 사항들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 이하 설명할 본 개시의 실시예들로부터 본 개시의 기술 구성이 적용되는 기술분야에서 통상의 지식을 가진 자에 의해 고려될 수 있다.
본 개시의 일 예에 따른, 콘텐츠 스트리밍 시스템에서 서버의 동작 방법은, 검색어를 획득하는 단계, 콘텐츠 아이템들의 메타 데이터에 포함되는 해시태그 정보를 기반으로 학습된 언어모델을 이용하여, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계, 상기 검색어에 대응되는 제1 벡터와 제1 콘텐츠 아이템의 제2 벡터를 기반으로 상기 검색어와 상기 제1 콘텐츠 아이템 간의 유사도를 결정하는 단계, 및 상기 유사도에 기반하여 선택된 상기 제1 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 제공하는 단계를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 언어모델은, MLM(masked language model)에 기반하여 상기 콘텐츠의 해시태그를 예측하는 훈련을 통해 학습될 수 있다.
본 개시의 일 예에 따르면, 상기 제1 콘텐츠 아이템의 제2 벡터는, 상기 제1 콘텐츠 아이템의 제1 메타 데이터에 포함되는 정보를 포함하는 시퀀스형 텍스트 데이터를 상기 언어모델에 입력하여 획득될 수 있다.
본 개시의 일 예에 따르면, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계는, 상기 검색어를 토큰 단위로 구분하는 단계, 상기 토큰 단위로 구분된 검색어에 적어도 하나의 구분자를 삽입하여 변환된 검색어를 획득하는 단계, 및 상기 변환된 검색어를 상기 언어모델에 입력하여 상기 제1 벡터를 획득하는 단계를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 변환된 검색어는, 상기 토큰 단위로 구분된 검색어의 앞 및 뒤에 지정된 구분자를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 변환된 검색어는, 장르를 나타내는 스페셜 토큰, 및 마스킹된 토큰을 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 방법은 상기 콘텐츠 아이템들의 내용을 설명하는 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환하는 단계, 상기 시퀀스형 텍스트 데이터의 해시태그 영역에 위치한 해시태그 토큰을 마스킹(making)하는 단계, 및 상기 마스킹된 해시태그 토큰을 예측하도록 상기 언어모델에 대한 훈련을 수행하는 단계를 더 포함하며, 상기 텍스트 메타 데이터는, 제목, 시놉시스, 복합 장르, 감독, 배우, 또는 해시태그 정보 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 텍스트 메타 데이터를 상기 시퀀스형 텍스트 데이터로 변환하는 단계는, 상기 텍스트 메타 데이터를 복수의 토큰들로 구분하는 단계, 및 상기 토큰들 사이에 적어도 하나의 구분자를 삽입함으로써 상기 시퀀스형 텍스트 데이터를 생성하는 단계를 포함하며, 상기 적어도 하나의 구분자는, 서로 다른 종류의 피처들을 구분하기 위한 분리 토큰 및 특정 피처를 나타내기 위해 특정 피처의 앞 및 뒤에 삽입되는 스페셜 토큰 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 스페셜 토큰은, 장르를 나타내는 제1 스페셜 토큰, 감독을 나타내는 제2 스페셜 토큰, 배우를 나타내는 제3 스페셜 토큰, 및 해시태그를 나타내는 제4 스페셜 토큰 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 해시태그 토큰을 마스킹하는 단계는, 상기 해시태그 영역에 위치한 복수의 해시태그 토큰들 중에서 '#'으로 시작되지 아니하는 해시태그 토큰을 선택하는 단계, 및 상기 선택된 해시태그 토큰을 마스킹하는 단계를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 훈련은, 예측 모델을 이용하여 수행되며, 상기 예측 모델은, 마스킹된 해시태그 토큰을 포함하는 시퀀스형 텍스트 데이터를 입력으로 취하고, 상기 시퀀스형 텍스트 데이터에 대응되는 벡터 값들을 출력하는 상기 언어모델, 및 상기 언어모델에서 출력되는 적어도 하나의 벡터 값에 대응되는 적어도 하나의 입력 토큰을 예측하도록 구성된 MLM(masked language model) 헤드 레이어를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 검색어와 상기 제1 콘텐츠 아이템 간의 유사도를 결정하는 단계는, 코사인 유사도 알고리즘을 이용하여 상기 제1 벡터 및 상기 제2 벡터 간의 유사도를 계산하는 단계를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 제1 벡터 및 상기 제2 벡터 각각은, 상기 학습된 언어모델의 마지막 은닉층의 출력 벡터 값들에 대한 평균 풀링(average pooling)을 수행함으로써 획득할 수 있다.
본 개시의 일 예에 따르면, 상기 제1 벡터 및 상기 제2 벡터 각각은, 상기 학습된 언어모델의 마지막 은닉층의 출력 벡터 값들 중 지정된 피처(feature)의 위치에 해당하는 벡터 값에 가중치를 부여함으로써 결정될 수 있다.
본 개시의 일 예에 따르면, 상기 검색어에 대응되는 제1 벡터와 복수의 콘텐츠 아이템들 각각의 벡터를 기반으로, 상기 검색어와 상기 복수의 콘텐츠 아이템들 간의 유사도를 결정하는 단계를 더 포함하며, 상기 콘텐츠 목록을 제공하는 단계는, 상기 제1 콘텐츠 아이템 및 상기 복수의 콘텐츠 아이템들 중 상기 검색어와의 유사도에 대한 내림차순으로 상기 제1 콘텐츠 아이템을 포함하는 둘 이상의 콘텐츠 아이템을 선택하는 단계, 및 상기 선택된 둘 이상의 콘텐츠 아이템의 정보를 포함하는 상기 콘텐츠 목록을 제공하는 단계를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 검색어에 대응하는 제1 벡터를 결정하기 이전에, 상기 검색어를 기반으로 텍스트 검색을 수행하는 단계를 더 포함하며, 상기 텍스트 검색을 통해 획득된 결과가 지정된 조건을 만족하지 않는 경우, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계를 수행할 수 있다.
본 개시의 일 예에 따르면, 상기 지정된 조건은, 적어도 하나의 콘텐츠 아이템이 검색되는지 여부, 또는 검색된 콘텐츠 아이템의 개수 중 적어도 하나에 대한 조건일 수 있다.
본 개시의 일 예에 따른, 콘텐츠 스트리밍 시스템에서 서버는 적어도 하나의 클라이언트 장치와 신호를 송수신하는 통신부, 및 상기 통신부와 전기적으로 연결된 프로세서를 포함하며, 상기 프로세서는, 검색어를 획득하고, 콘텐츠 아이템들의 메타 데이터에 포함되는 해시태그 정보를 기반으로 학습된 언어모델을 이용하여, 상기 검색어에 대응하는 제1 벡터를 결정하고, 상기 검색어에 대응되는 제1 벡터와 제1 콘텐츠 아이템의 제2 벡터를 기반으로 상기 검색어와 상기 제1 콘텐츠 아이템 간의 유사도를 결정하고, 상기 유사도에 기반하여 선택된 상기 제1 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 제공하도록 제어할 수 있다.
본 개시의 일 예에 따르면, 상기 언어모델은, MLM(masked language model)에 기반하여 상기 콘텐츠의 해시태그를 예측하는 훈련을 통해 학습될 수 있다.
본 개시의 일 예에 따르면, 상기 제1 콘텐츠 아이템의 제2 벡터는, 상기 제1 콘텐츠 아이템의 제1 메타 데이터에 포함되는 정보를 포함하는 시퀀스형 텍스트 데이터를 상기 언어모델에 입력하여 획득될 수 있다.
본 개시의 일 실시예에 따른 기록 매체에 저장된 프로그램은, 프로세서에 의해 동작되면 전술한 방법들 중 어느 하나를 실행할 수 있다.
본 개시에 대하여 위에서 간략하게 요약된 특징들은 후술하는 본 개시의 상세한 설명의 예시적인 양상일 뿐이며, 본 개시의 범위를 제한하는 것은 아니다.
본 개시에 따르면, 검색어와 유사한 콘텐츠들을 검색할 수 있다.
본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 개시의 일 실시예에 따른 콘텐츠 스트리밍 시스템을 도시한다.
도 2는 본 개시의 일 실시예에 따른 클라이언트 장치의 구조를 도시한다.
도 3는 본 개시의 일 실시예에 따른 서버의 구조를 도시한다.
도 4는 본 개시의 일 실시예에 따른 콘텐츠 스트리밍 서비스의 개념을 도시한다.
도 5는 벡터들의 상대적 관계의 예를 도시한다.
도 6은 본 개시의 일 실시예에 따라 콘텐츠를 검색하는 서버의 구조의 예를 도시한다.
도 7은 본 개시의 일 실시예에 따라 콘텐츠의 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환하는 예를 도시한다.
도 8a는 본 개시의 일 실시예에 따른 언어모델의 학습 예를 도시한다.
도 8b는 본 개시의 일 실시예에 따른 예측모델의 구조의 예를 도시한다.
도 9는 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 검색어와 콘텐츠 간의 유사도를 계산하는 예를 도시한다.
도 10은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠를 검색하는 절차의 예를 도시한다.
도 11은 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다.
도 12는 본 개시의 일 실시예에 따라 해시태그 예측을 이용하는 언어모델의 학습의 예를 도시한다.
도 13은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 검색어와 콘텐츠의 유사도를 결정하는 절차의 예를 도시한다.
도 14는 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠를 검색하는 절차의 구체적인 예를 도시한다.
도 15는 본 개시의 일 실시예에 따른 검색 시나리오의 예를 도시한다.
도 16은 본 개시의 일 실시예에 따른 파이썬 모듈을 기반으로 검색을 수행하는 예를 도시한다.
도 17은 본 개시의 일 실시예에 따른 엘라스틱 검색 엔진을 기반으로 검색을 수행하는 예를 도시한다.
도 18a는 본 개시의 실시예에 적용 가능한 트랜스포머의 구조의 예를 도시한다.
도 18b는 본 개시의 실시예에 적용 가능한 트랜스포머의 인코더 및 디코더 블록들의 상세 구조의 예를 도시한다.
도 19는 본 개시의 실시예에 적용 가능한 BERT 모델의 구조의 예를 도시한다.
이하에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.
본 발명의 실시예를 설명함에 있어서 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다. 그리고, 도면에서 본 발명에 대한 설명과 관계없는 부분은 생략하였으며, 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도면에 표시되고 아래에 설명되는 기능 블록들은 가능한 구현의 예들일 뿐이다. 다른 구현들에서는 상세한 설명의 사상 및 범위를 벗어나지 않는 범위에서 다른 기능 블록들이 사용될 수 있다. 또한, 본 발명의 하나 이상의 기능 블록이 개별 블록들로 표시되지만, 본 발명의 기능 블록들 중 하나 이상은 동일 기능을 실행하는 다양한 하드웨어 및 소프트웨어 구성들의 조합일 수 있다.
또한, 어떤 구성요소들을 포함한다는 표현은 "개방형"의 표현으로서 해당 구성요소들이 존재하는 것을 단순히 지칭할 뿐이며, 추가적인 구성요소들을 배제하는 것으로 이해되어서는 안 된다. 나아가 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어"있다고 언급될 때에는, 그 다른 구성요소에 직접적으로 연결 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
또한, 문맥상 명백하게 다르게 표현되지 아니하는 한, 객체에 대한 단수의 표현은 복수의 표현으로 이해될 수 있다. 본 개시에서, "A 또는 B" 또는 "A 및/또는 B 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함하는 것으로 이해될 수 있다. "제1", "제2", "제3" 등의 표현들은 해당 객체를, 순서 또는 중요도에 무관하게 수식할 수 있으며, 하나의 객체를 동종의 다른 객체와 구분하기 위해 사용될 뿐이다.
또한, 본 개시에서, "~하도록 구성된(configured to)"은, 상황에 따라, 하드웨어적 또는 소프트웨어적으로 "~에 적합한", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는", "~하도록 설계된" 중 어느 하나의 표현과 기술적으로 동등한 의미를 가지는 것으로 이해될 수 있고, 상호 대체될 수 있다.
본 개시는 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 것으로, 구체적으로 콘텐츠의 텍스트 형태의 메타 데이터를 기반으로 학습된 언어모델을 이용하여 콘텐츠를 검색하는 기술에 대해 설명한다. 특히, 본 개시는 해시태그를 기반으로 언어모델을 학습시키고, 학습된 언어모델을 이용하여 검색어와 콘텐츠 간의 유사도를 결정하는 다양한 실시예들을 제시한다.
도 1은 본 개시의 일 실시예에 따른 콘텐츠 스트리밍 시스템을 도시한다. 도 1은 콘텐츠 스트리밍, 콘텐츠 관련 정보 제공 등 콘텐츠에 관련된 서비스를 제공하기 위한 시스템 및 그 시스템에 속하는 엔티티(entity)들을 예시한다. 이하 본 개시에서, 콘텐츠에 관련된 다양한 서비스들은 '콘텐츠 서비스' 또는 이와 동등한 기술적 의미를 가지는 다른 용어로 지칭될 수 있다.
도 1을 참고하면, 콘텐츠 스트리밍 시스템은 클라이언트(client) 장치(110) 및 서버(120)를 포함할 수 있다. 여기서, 클라이언트 장치(110)는 3개의 클라이언트 장치들(110-1 내지 110-3)의 집합으로 예시되었으나, 콘텐츠 스트리밍 시스템은 2개 이하 또는 4개 이상의 클라이언트 장치들을 포함할 수 있다. 또한, 서버(120)는 1개로 예시되었으나, 콘텐츠 스트리밍 시스템은 다양한 기능들을 분담하며 상호 작용하는 복수의 서버들을 포함할 수 있다.
클라이언트 장치(110)는 콘텐츠를 수신 및 표시한다. 클라이언트 장치(110)는 네트워크를 통해 서버(120)에 접속한 후, 서버(120)로부터 스트리밍되는 콘텐츠를 수신할 수 있다. 즉, 클라이언트 장치(110)는 서버(120)에 의해 제공되는 콘텐츠 서비스를 이용하기 위해 설계된 클라이언트 소프트웨어 또는 어플리케이션이 설치된 하드웨어이며, 설치된 소프트웨어 또는 어플리케이션을 통해 서버(120)와 상호작용할 수 있다. 클라이언트 장치(110)는 다양한 형태의 장치들로 구현될 수 있다. 예를 들어, 클라이언트 장치(110)는 이동 가능한 휴대용 장치, 이동 가능하지만 사용 중에는 고정되는 것이 일반적인 장치, 특정 위치에 고정적으로 설치되는 장치 중 하나일 수 있다.
구체적으로, 클라이언트 장치(110)는 스마트폰(110-1), 데스크탑 컴퓨터(110-2), 태블릿 PC, 랩탑 PC, 넷북 컴퓨터, 워크스테이션, 서버, PDA(personal data assistant), PMP(portable multimedia player), 카메라, 또는 웨어러블 장치 중 적어도 하나의 형태로 구현될 수 있다. 여기서, 웨어러블 장치는 액세서리형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, HMD(head-mounted-device)), 의복형, 신체 부착형(예: 스킨 패드 또는 문신), 생체 이식형 회로 중 적어도 하나의 형태로 구현될 수 있다. 또한, 클라이언트 장치(110)는 가전 제품으로서, 예를 들어, 텔레비전(110-3), DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기 중 적어도 하나의 형태로 구현될 수 있다.
서버(120)는 콘텐츠 서비스를 제공하기 위한 다양한 기능들을 수행한다. 다시 말해, 서버(120)는 다양한 기능들을 이용하여 클라이언트 장치(110)에게 콘텐츠 스트리밍 및 다양한 콘텐츠에 관련된 서비스들을 제공할 수 있다. 구체적으로, 서버(120)는 콘텐츠를 스트리밍 가능하도록 데이터화하고, 네트워크를 통해 클라이언트 장치(110)로 송신할 수 있다. 이를 위해, 서버(120)는 콘텐츠의 인코딩, 데이터에 대한 세그먼테이션(segmentation), 전송 스케줄링, 스트리밍 송신 중 적어도 하나의 기능을 수행할 수 있다. 부가적으로, 콘텐츠 이용의 편의를 위하여, 서버(120)는 콘텐츠 가이드 제공, 사용자의 계정 관리, 사용자의 선호도 분석, 선호도에 기반한 콘텐츠 추천 중 적어도 하나의 기능을 더 수행할 수 있다. 전술한 다양한 기능들 중 복수의 기능들이 제공될 수 있으며, 이를 위해, 서버(120)는 복수의 서버들로 구현될 수 있다.
클라이언트 장치(110) 및 서버(120)는 네트워크를 통해 정보를 교환하며, 교환되는 정보에 기반하여 클라이언트 장치(110)에게 콘텐츠 서비스가 제공될 수 있다. 이때, 네트워크는 단일 네트워크 또는 다양한 종류의 네트워크들의 조합일 수 있다. 네트워크는 구간에 따라 서로 다른 종류의 네트워크들이 연결된 형태로 이해될 수 있다. 예를 들어, 네트워크들은 무선 네트워크 및 유선 네트워크 중 적어도 하나를 포함할 수 있다. 구체적으로, 네트워크들은 6G(6th generation), 5G(5th generation), LTE(Long Term Evolution), LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiMAX(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 중 적어도 하나에 기반한 셀룰러 네트워크를 포함할 수 있다. 또한, 네트워크들은 무선 랜(wireless local area network), 블루투스(bluetooth), 지그비(Zigbee), NFC(near field communication), UWB(ultra wideband) 중 적어도 하나에 기반한 근거리 네트워크를 포함할 수 있다. 또한, 네트워크들은 인터넷, 이더넷(ethernet) 등의 유선 네트워크를 포함할 수 있다.
도 2는 본 개시의 일 실시예에 따른 클라이언트 장치의 구조를 도시한다. 도 2는 클라이언트 장치(예: 도 1의 클라이언트 장치(110))의 블록 구조를 예시한다.
도 2를 참고하면, 클라이언트 장치는 디스플레이(202), 입력부(204), 통신부(206), 센싱부(208), 오디오 입출력부(210), 카메라 모듈(212), 메모리(214), 전원부(216), 외부 연결 단자(218), 및 프로세서(220)를 포함한다. 단, 장치의 종류에 따라, 도 2에 예시된 구성요소들 중 적어도 하나는 생략될 수 있다.
디스플레이(202)는 시각적으로 인식 가능한 영상, 그래픽 등의 정보를 출력한다. 이를 위해, 디스플레이(202)는 패널 및 패널을 제어하는 회로를 포함할 수 있다. 예를 들어, 패널은 LCD(liquid crystal display), LED(Light Emitting Diode), LPD(light emitting polymer display), OLED(Organic Light Emitting Diode), AMOLED(Active Matrix Organic Light Emitting Diode), FLED(Flexible LED) 중 적어도 하나를 포함할 수 있다.
입력부(204)는 사용자에 의해 발생하는 입력을 수신한다. 입력부(204)는 다양한 형태의 입력 감지 수단을 포함할 수 있다. 예를 들어, 입력부(204)는 물리 버튼, 키패드, 터치 패드 중 적어도 하나를 포함할 수 있다. 또는, 입력부(204)는 터치 패널을 포함할 수 있다. 입력부(204)가 터치 패널을 포함하는 경우, 입력부(204) 및 디스플레이(202)는 하나의 모듈로서 구현될 수 있다.
통신부(206)는 클라이언트 장치가 다른 장치와 네트워크를 형성하고, 네트워크를 통해 데이터를 송신 또는 수신하기 위한 인터페이스를 제공한다. 이를 위해, 통신부(206)는 물리적으로 신호를 처리하기 위한 회로(예: 인코더/디코더, 변조기/복조기, RF(radio frequency) 프론트 엔드 등), 통신 규격에 따라 데이터를 처리하는 프로토콜 스택(예: 모뎀) 등을 포함할 수 있다. 다양한 실시예들에 따라, 통신부(206)는 서로 다른 복수의 통신 규격을 지원하기 위해 복수의 모듈들을 포함할 수 있다.
센싱부(208)는 클라이언트 장치의 상태 또는 주변 환경에 대한 데이터를 포함하는 센싱 데이터를 수집한다. 예를 들어, 센싱부(208)는 클라이언트 장치의 작동 상태, 자세에 관련된 물리적 값 또는 값의 변화를 측정하고, 측정된 결과를 나타내는 전기적 신호를 생성할 수 있다. 또한, 센싱부(208)는 클라이언트 장치의 주변 환경에 대한 물리적 값 또는 값의 변화를 측정하고, 측정된 결과를 나타내는 전기적 신호를 생성할 수 있다. 이를 위해, 센싱부(208)는 적어도 하나의 센서 및 적어도 하나의 센서를 제어하기 위한 회로를 포함할 수 있다. 구체적으로, 센싱부(208)는 자이로 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러(color) 센서, 생체 센서, 기압 센서, 온도 센서, 습도 센서, 조도 센서, 또는 UV(ultra violet) 센서, 후각(e-nose) 센서, 제스처 센서, EMG(electromyography) 센서, EEG(electroencephalogram) 센서, ECG(electrocardiogram) 센서, IR(infrared) 센서, 홍채 센서, 지문 센서 중 적어도 하나를 포함할 수 있다.
오디오 입출력부(210)는 오디오 데이터에 기반하여 생성된 전기 신호에 따라 소리를 출력하고, 외부의 소리를 감지한다. 즉, 오디오 입출력부(210)는 소리 및 전기 신호를 상호 변환할 수 있다. 이를 위해, 오디오 입출력부(210)는 스피커, 마이크, 이들을 제어하기 위한 회로 중 적어도 하나를 포함할 수 있다.
카메라 모듈(212)은 영상(image) 및 비디오(video)를 생성하기 위한 데이터를 수집한다. 이를 위해, 카메라 모듈(212)은 렌즈, 렌즈 구동 회로, 이미지 센서, 플래쉬(flash), 이미지 처리 회로 중 적어도 하나를 포함할 수 있다. 카메라 모듈(212)은 렌즈를 통해 빛을 수집하고, 이미지 센서를 이용하여 빛의 컬러 값, 휘도 값을 표현하는 데이터를 생성할 수 있다.
메모리(214)는 클라이언트 장치가 동작하기 위해 필요한 운영체제, 프로그램, 어플리케이션, 명령어, 설정 정보 등을 저장한다. 메모리(214)는 데이터를 일시적 또는 비일시적으로 저장할 수 있다. 메모리(214)는 휘발성 메모리, 비휘발성 메모리 또는 휘발성 메모리와 비휘발성 메모리의 조합으로 구성될 수 있다.
전원부(216)는 클라이언트 장치의 구성요소들의 동작을 위해 필요한 전력을 공급한다. 이를 위해, 전원부(216)는 전원을 각 구성요소에서 요구하는 크기의 전력으로 변환하는 컨버터(convertor) 회로를 포함할 수 있다. 전원부(216)는 외부 전원에 의존하거나 또는 배터리를 포함할 수 있다. 배터리를 포함하는 경우, 전원부(216)는 충전을 위한 회로를 더 포함할 수 있다. 충전을 위한 회로는 유선 충전 또는 무선 충전을 지원할 수 있다.
외부 연결 단자(218)는 클라이언트 장치를 다른 장치와 연결하기 위한 물리적 연결 수단이다. 예를 들어, 외부 연결 단자(218)는 USB(universal serial bus)단자, 오디오 단자, HDMI(high definition multimedia interface) 단자, RS-232(recommended standard-232) 단자, 적외선 단자, 광 단자, 전원 단자 등 다양한 규격의 단자들 중 적어도 하나를 포함할 수 있다.
프로세서(220)는 클라이언트 장치의 전반적인 동작을 제어한다. 프로세서(220)는 다른 구성요소들의 동작을 제어하고, 다른 구성요소들을 이용하여 다양한 기능들을 수행할 수 있다. 예를 들어, 프로세서(220)는 통신부(206)를 통해 서버에게 콘텐츠 데이터를 요청하고, 콘텐츠 데이터를 수신할 수 있다. 또한, 프로세서(220)는 수신된 콘텐츠 데이터를 디코딩함으로써 콘텐츠를 복원할 수 있다. 또한, 프로세서(220)는 디스플레이(202) 및 오디오 입출력부(210)를 통해 서버로부터 수신된 콘텐츠를 출력할 수 있다. 또한, 프로세서(220)는 입력부(204), 통신부(206), 센싱부(208), 오디오 입출력부(210), 카메라 모듈(212), 전원부(216), 외부 연결 단자(218) 중 적어도 하나에 의해 입력 또는 감지되는 정보에 기반하여 콘텐츠의 재생에 관련된 상태를 제어할 수 있다. 이를 위해, 프로세서(220)는 적어도 하나의 프로세서, 적어도 하나의 마이크로 프로세서, 적어도 하나의 DSP(digital signal processor) 중 적어도 하나를 포함할 수 있다. 특히, 프로세서(220)는 클라이언트 장치가 이하 후술되는 다양한 실시예들에 따라 동작하도록 다른 구성요소들을 제어하고, 필요한 연산을 수행할 수 있다.
도 2를 참고하여 설명한 클라이언트 장치의 구조에서, 구성요소들은 프로세서(220)에 모두 연결된 것으로 예시되었다. 도 2에 도시되지 아니하였으나, 구성요소들 중 적어도 일부는 버스(bus)를 통해 연결될 수 있다. 이 경우, 프로세서(220)의 제어에 따라, 일부 구성요소들 간 직접적인 데이터 교환이 이루어질 수 있다.
도 3은 본 개시의 일 실시예에 따른 서버의 구조를 도시한다. 도 3은 서버(예: 도 1의 서버(120))의 블록 구조를 예시한다.
도 3을 참고하면, 서버는 통신부(302), 메모리(304), 프로세서(308)를 포함한다. 단, 다양한 실시예들에 따라, 도 3에 예시된 구성요소들 중 적어도 하나는 생략될 수 있다. 또한, 다양한 실시예들에 따라 도 3에 예시된 구성요소들 이외에 적어도 하나의 구성요소가 더 포함될 수도 있다.
통신부(302)는 서버와 다른 장치의 통신을 위한 인터페이스를 제공한다. 이를 위해, 통신부(302)는 통신을 위해 물리적 신호를 생성 및 해석하는 회로를 포함할 수 있다. 통신부(302)에 의해 제공되는 인터페이스는 유선 통신 또는 무선 통신을 지원할 수 있다.
메모리(304)는 다양한 정보, 명령 및/또는 정보를 저장하며, 스토리지(306)에 저장된 컴퓨터 프로그램, 명령어 등을 로드(load)할 수 있다. 메모리(304)는 서버의 연산을 위해 일시적으로 데이터 및 명령어 등을 저장하며, RAM(random access memory)를 포함할 수 있다. 또는 메모리(304)는 다양한 저장 매체를 포함할 수 있다.
스토리지(306)는 서버의 동작을 위한 운영 체제, 서버의 기능 수행을 위한 프로그램, 서버의 동작을 위한 설정 정보 등을 비일시적으로 저장할 수 있다. 예를 들어, 스토리지(306)는 ROM(read only memory), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, SSD(solid state drive), 또는 본 개시가 속하는 기술 분야에서 널리 알려져 있는 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체 중 적어도 하나를 포함할 수 있다.
프로세서(308)는 서버의 전반적인 동작을 제어한다. 프로세서(308)는 다른 구성요소들의 동작을 제어하고, 다른 구성요소들을 이용하여 다양한 기능들을 수행할 수 있다. 프로세서(308)는 CPU(central processing unit), MPU(micro processer unit), MCU(micro controller unit) 또는 본 개시가 속하는 기술 분야에서 널리 알려져 있는 형태의 프로세서 중 적어도 하나를 포함할 수 있다. 특히, 프로세서(220)는 서버가 이하 후술되는 다양한 실시예들에 따라 동작하도록 다른 구성요소들을 제어하고, 필요한 연산을 수행할 수 있다.
도 3을 참고하여 설명한 서버의 구조에서, 구성요소들은 프로세서(308)에 모두 연결된 것으로 예시되었다. 도 3에 도시되지 아니하였으나, 구성요소들 중 적어도 일부는 버스(bus)를 통해 연결될 수 있다. 이 경우, 프로세서(308)의 제어에 따라, 일부 구성요소들 간 직접적인 데이터 교환이 이루어질 수 있다.
도 4는 본 개시에 일 실시예에 따른 콘텐츠 스트리밍 서비스의 개념을 도시한다. 도 4는 콘텐츠 스트리밍에 관련된 일부 기능들을 도식화한 것으로, 다양한 실시 예들에 따른 콘텐츠 스트리밍 서비스는 도 4에 예시된 기능들 이외에도 다양한 기능들을 더 가질 수 있다.
도 4를 참고하면, 클라이언트(410) 및 서버(420) 간 제어 데이터 및 콘텐츠 데이터가 송신 및 수신될 수 있다. 구체적으로, 클라이언트(410)에서 서버(420)로의 제어 데이터 송신, 서버(420)에서 클라이언트(410)로의 제어 데이터 송신, 서버(420)에서 클라이언트(410)로의 콘텐츠 데이터 송신이 수행될 수 있다.
서버(420)는 사용자 정보(422a), 콘텐츠 정보(422b), 콘텐츠 DB(database)(422c)를 저장한다. 사용자 정보(422a)는 사용자들의 계정 정보, 사용자들의 서비스 이용 이력에 대한 정보, 사용자들의 선호도에 대한 정보 등을 포함할 수 있다. 콘텐츠 정보(422b)는 서비스 가능한 콘텐츠에 대한 목록, 콘텐츠의 가이드 정보, 콘텐츠의 메타 정보, 콘텐츠의 소비 이력에 대한 정보 등을 포함할 수 있다. 콘텐츠 DB(422c)는 데이터화된 상태로 저장된 콘텐츠를 포함할 수 있다. 이 외, 서버(420)는 서비스를 제공하기 위해 필요한 다른 정보를 더 저장할 수 있다.
클라이언트(410)에서 서버(420)로의 제어 데이터는 사용자 로그인(log-in)에 대한 정보, 사용자의 콘텐츠 선택에 대한 정보, 사용자의 콘텐츠 제어에 대한 정보 등을 포함할 수 있다. 이를 위해, 클라이언트(410)는 사용자 입력 처리 동작(401)을 통해 사용자 입력으로부터 제어 데이터를 생성 및 송신할 수 있다. 클라이언트(410)로부터의 제어 데이터는 제어/관리 동작(403)을 통해 처리되고, 콘텐츠의 제공을 위해 사용된다. 예를 들어, 제어/관리 동작(403)에 의해 클라이언트(401)로부터의 제어 데이터에 기반하여 제어 데이터 및/또는 콘텐츠가 선택될 수 있다. 또한, 제어/관리 동작(403)에 의해 사용자의 소비 이력 및 행위를 분석함으로써 선호도를 판단하고, 판단된 선호도에 따라 추천할 콘텐츠가 선택될 수 있다.
콘텐츠가 사용자에게 제공되는 절차를 도 4를 참고하여 살펴보면 다음과 같다. 먼저, 클라이언트(410)는 사용자 입력 처리 동작(401)을 통해 사용자에 의해 입력되는 로그인 정보(예: 아이디 및 패스워드)를 포함하는 제어 데이터를 생성하고, 제어 데이터를 송신한다. 서버(420)는 클라이언트(410)로부터의 제어 데이터에 포함되는 로그인 정보를 사용자 정보(422a)에서 검색함으로써 유효한 사용자인지 여부를 판단하고, 사용자의 권한에 따라 허용되는 콘텐츠 및 서비스의 범위를 결정할 수 있다. 다만, 로그인을 필요로 하지 아니하거나, 또는 로그인 없이 제공 가능한 제한적인 서비스가 지원되는 경우, 로그인 정보의 송신 및 처리는 생략될 수 있다.
이어, 서버(410)는 제어/관리 동작(403)을 통해 콘텐츠 정보(422b)로부터 콘텐츠 가이드 정보를 추출하고, 콘텐츠 가이드 정보를 포함하는 제어 데이터를 클라이언트(410)에게 송신한다. 클라이언트(410)는 제어 데이터에 포함되는 콘텐츠 가이드 정보를 출력하고, 사용자의 선택을 확인한다. 사용자의 선택은 사용자 입력 처리 동작(401)을 통해 제어 데이터로서 서버(410)로 송신된다. 사용자의 선택에 대한 정보는 제어/관리 동작(403)에 의해 처리되고, 스트리밍될 콘텐츠의 선택에 사용된다. 서버(420)는 콘텐츠 DB(422)에서 선택된 콘텐츠를 검색하고, 검색된 콘텐츠를 인코딩 동작(407)을 통해 콘텐츠에 대한 압축 및 세그먼테이션을 수행한 후, 콘텐츠 데이터를 송신한다. 콘텐츠 데이터는 인코딩 동작(407)을 통해 미리 압축되어 저장될 수 있다. 여기서 인코딩 동작(407)은 원본 콘텐츠 영상을 압축하는 동작뿐 아니라, 압축을 통해 생성된 콘텐츠 데이터를 디코딩후, 다시 압축하는 동작을 포함할 수 있다. 이때 압축은 콘텐츠 영상의 해상도, 비트레이트 및 초당 프레임 수를 기초로 수행될 수 있다. 미리 압축되어 저장되는 경우, 압축 동작은 생략되고, 서버(420)는 콘텐츠 데이터에 대한 세그먼테이션을 수행할 수 있다. 콘텐츠 데이터는 디코딩 동작(409)을 통해 복원되고, 재생 동작(411)을 통해 사용자에게 제공될 수 있다. 이때, 압축을 위해, 다양한 비디오 코덱들 및 다양한 오디오 코덱들 중 적어도 하나가 사용될 수 있다. 예를 들어, 다양한 비디오 코덱들은 MPEG-2(Moving Picture Experts Group-2), H.264 AVC(Advanced Video Coding), H.265 HEVC(High Efficiency Video Coding), H.266 VVC(Versatile Video Coding), VP8(Video Processor 8), VP9(Video Processor 9), AV1(AOMedia Video 1), DivX, Xvid, VC-1, Theora, Daala 중 적어도 하나를 포함할 수 있다.
오디오 코덱들은 MP3(MPEG 1 Audio Layer 3), AC3(Dolby Digital AC-3), E-AC3(Enhanced AC-3), AAC(Advanced Audio Coding, MPEG 2 Audio), FLAC(Free Lossless Audio Codec), HE-AAC(High Efficiency Advanced Audio Coding), OGG Vorbis 및 OPUS 등을 포함할 수 있다.
영상의 다양한 해상도, 비트레이트 및 초당 프레임 수에 따라 콘텐츠 영상이 압축되어 복수의 콘텐츠 데이터가 미리 생성될 수 있다. 클라이언트(410)는 쓰루풋(또는 대역폭)을 측정하고, 측정된 쓰루풋(또는 대역폭)을 기초로 비트레이트를 결정할 수 있다.
클라이언트(410)는 복수의 콘텐츠 데이터에 관한 정보를 서버(410)로부터 수신할 수 있다. 수신된 정보는 복수의 콘텐츠 데이터에 대한 비트레이트, 해상도 및 초당 프레임 수 및 위치를 나타내는 정보를 포함할 수 있다.
클라이언트(410)는 비트레이트를 기초로 복수의 콘텐츠 데이터 중 적어도 하나의 콘텐츠 데이터를 결정하고, 클라이언트(410)의 캐이퍼빌리티 정보를 기초로 적어도 하나의 콘텐츠 데이터 중 재생할 수 있는 해상도 및 초당 프레임 수에 대응하는 재생 콘텐츠 데이터 및 그 위치를 결정할 수 있다. 이때, 캐이퍼빌리티 정보는 클라이언트의 최대 지원 해상도 및 최대 지원 프레임 수를 포함할 수 있으나, 이에 제한되지 않는다.
클라이언트(410)는 재생 콘텐츠 데이터의 위치를 기초로 서버(420)로 콘텐츠 요청을 전송할 수 있다. 서버(420)는 수신한 콘텐츠 요청을 기초로, 콘텐츠 요청에 대응하는 콘텐츠 데이터를 클라이언트(410)로 전송할 수 있다.
다른 실시예에 의하면, 클라이언트(410)는 영상의 해상도 및 초당 프레임 수 중 적어도 하나에 관한 사용자 입력을 수신하고, 사용자 입력에 따라 재생 콘텐츠 데이터 및 그 위치를 결정하고, 서버(420)로 콘텐츠 요청을 전송할 수 있다.
본 개시는 콘텐츠 스트리밍 시스템에서 콘텐츠 자체의 내용을 설명하는 텍스트 형태의 메타 데이터(이하 '텍스트 메타 데이터')를 기반으로 학습된 언어모델을 이용하여 콘텐츠를 검색하는 기술에 관한 것이다. 특히, 본 개시는 콘텐츠의 텍스트 메타 데이터를 기반으로 학습된 언어모델을 이용하여 검색어와 콘텐츠 간의 유사도를 결정하고, 검색어와 콘텐츠 간의 유사도를 기반으로 콘텐츠 검색 목록을 생성하기 위한 방법 및 장치에 관한 것이다. 여기서, 텍스트 메타 데이터는, 제목, 시놉시스, 복합 장르, 감독, 배우, 또는 해시태그 중 적어도 하나를 포함할 수 있다. 언어모델은 자연어를 처리하는 콘텐츠 기반 필터링(content based filtering, CBF) 모델일 수 있다. 예를 들어, 언어모델은 콘텐츠의 텍스트 메타 데이터를 컴퓨터가 이해할 수 있도록 수치화, 즉, 임베딩하기 위한 자연어 처리 모델로서, 트랜스포머(transformer) 기반 모델일 수 있다. 예를 들어, 트랜스포머 기반 모델은 BERT(bidirectional encoder representations from transformers), ELECTRA(efficiently learning an encoder that classifies token replacements accurately), RoBERTa(robustly optimized BERT approach), BART(bidirectional auto-regressive transformer), GPT3(generative pre-trained transformer), sDeBERTa(decoding-enhanced BERT with disentangled attention), KLUE(korean language understanding evaluation)-RoBERTa-large 모델을 포함할 수 있으나, 이에 제한되지 아니한다.
언어모델을 이용하여 콘텐츠를 검색하는 구체적인 방법을 설명하기에 앞서, 본 개시는 CBF 모델의 이해를 돕기 위해 자연어 처리의 기본 개념과 RoBERTa 모델에 대해 설명한다.
CBF 모델에 기반하여 검색어와 콘텐츠의 유사도를 판단하기 위해서, 자연어, 즉, 비정형 데이터로 구성된 콘텐츠의 텍스트 메타 데이터를 컴퓨터가 이해할 수 있는 데이터로 수치화할 필요가 있다. 이때, 자연어인 비정형 데이터를 컴퓨터가 이해할 수 있는 데이터로 수치화, 즉, 벡터화하는 기술을 임베딩(embedding)이라 지칭된다. 자연어인 비정형 데이터는 임베딩을 통해 벡터로 표현될 수 있으며, 해당 벡터들은 도 5에 도시된 바와 같이, 벡터 공간에 매핑될 수 있다. 이때, 벡터들 간의 거리 및/또는 방향은 벡터들 간의 상대적인 관계정보로 해석될 수 있다. 도 5는 벡터들의 상대적 관계의 예를 도시한다. 예를 들어, 도 5에서 왕(king)을 나타내는 벡터(501)를 v1, 여왕(queen)을 나타내는 벡터(502)를 v2, 남자(man)을 나타내는 벡터(503)를 v3, 여자(woman)를 나타내는 벡터(504)를 v4라고 지칭하면, 왕과 여왕, 및 남자와 여자는 성별과 관련된 의미가 유사하므로, 거리(v1, v2)와 거리(v3, v4)가 유사하고, 방향(v1, v2)와 방향(v3, v4)가 유사할 수 있다. 반면, 도 5에 도시되지 아니하였으나, 컴퓨터를 나타내는 벡터를 v5라 지칭하면, 거리(v1, v5)는 거리(v1, v2)보다 멀고, 방향(v1, v5)와 방향(v1, v2)는 상이할 것이다. 이와 같은 방식으로, 벡터들 간의 상대적인 유사도가 결정될 수 있다. 도 5의 예의 경우, 벡터의 길이인 임베딩 사이즈는 3차원으로 설정되었으나, 실제 CBF 모델에서의 임베딩 사이즈는 보다 높은 다차원으로 설정될 수 있다. 벡터가 다차원의 임베딩 사이즈를 가지는 경우, 벡터에 보다 복잡한 의미를 담을 수 있기 때문이다.
콘텐츠를 벡터로 표현하는 CBF 모델에서, 벡터가 콘텐츠의 의미정보를 정확하게 나타낼 수 있도록 하는 것이 중요하다. 이는 벡터가 콘텐츠의 의미정보를 정확하게 표현해야만, 검색어와 콘텐츠 간의 유사성이 정확하게 판단될 수 있기 때문이다. 따라서, 본 개시의 실시예들에 따르면, 콘텐츠를 정확한 의미정보를 가지는 벡터로 표현하기 위해, 시스템은 CBF 모델의 언어모델을 학습시킴으로써, 언어모델을 미세 조정(fine tuning)할 것이다. 구체적으로, 본 개시의 다양한 실시예들에서, 언어모델은 각 콘텐츠의 제목, 시놉시스 등과 같은 메타 정보를 포함하는 입력 텍스트 시퀀스를 정확한 의미정보를 갖는 벡터로 변환하도록 학습될 수 있다.
언어모델은 입력 텍스트를 벡터화하는 능력을 가진 모델로, 단어 수준 임베딩 모델과 문장 또는 문서 수준의 임베딩 모델로 구분될 수 있다. 단어 수준의 임베딩 모델은 형태가 같은 단어에 같은 벡터를 할당하는 모델이며, 예를 들어, 워드투벡터(word2vec) 모델이 있다. 문장 수준의 임베딩 모델은, 문맥 정보를 고려하여 각각의 단어를 구별하는 모델이며, 예를 들어, BERT 모델이 있다.
단어 수준의 임베딩 모델과 문장 수준의 임베딩 모델의 차이를 살펴보기 위해, "겨울 밤에 내리는 눈은 아름답다"라는 입력 텍스트 시퀀스를 가정한다. 단어 수준의 임베딩 모델의 경우, 입력 텍스트 시퀀스의 "눈"과 사람의 신체 부위인 "눈"은 같은 벡터로 표현된다. 반면, 문장 수준의 임베딩 모델의 경우, 입력 텍스트 시퀀스 전체의 문맥 정보를 활용하여, 입력 텍스트 시퀀스의 "눈"은 사람 신체 부위인 "눈"과 다른 벡터로 표현될 수 있다. 이와 같이, 단어 수준의 임베딩 모델보다 문장 수준의 임베딩이 입력 텍스트 시퀀스를 더 올바른 의미 정보를 담은 벡터로 표현할 수 있다. 따라서, 일 실시예에 따라, 문장 수준의 임베딩 모델들 중 하나인 RoBERTa가 이용될 수 있다.
RoBERTa 모델은 BERT 모델에서 발전된 모델이다. BERT 모델은 RoBERTa 모델의 전신으로서, 비지도학습을 통해 대규모의 텍스트 데이터를 사전 학습한 언어모델이다. BERT 모델은 트랜스포머 구조의 인코더 블록을 여러 계층으로 쌓아올린 구조를 가지며, MLM(masked language model) 방식 및 NSP(next sentence prediction) 방식으로 사전 학습된다. 트랜스포머의 구조 및 BERT 모델의 구조에 대한 구체적인 설명은 도 18a, 도 18b, 및 도 19를 참조하여 후술하기로 한다.
MLM 방식은 랜덤으로 마스킹된 단어를 예측하는 방식이고, NSP 방식은 두 개의 문장들이 문맥적으로 연달아 등장 가능한 문장인지 예측하는 방식이다. BERT 모델은 양방향으로 텍스트를 학습하는 구조를 가짐으로써, 단방향 구조의 모델에 비해 더 좋은 의미표상 정보를 얻을 수 있는 이점을 가진다.
RoBERTa는 BERT 모델의 성능을 강화시키기 위해 학습 데이터를 추가하고 하이퍼(hyper) 파라미터 및 훈련 기법을 조정한 후 학습된 모델이다. RoBERTa 모델은 NSP 방식을 제외한 MLM 방식만으로 학습될 수 있다. RoBERTa 모델은 BERT 모델에 비해 더 큰 학습 데이터 및 더 긴 시퀀스로 더 오랜 학습을 겪고, 동적 마스킹을 적용하여 보다 정교한 의미표상 정보를 얻도록 개선되었다. 즉, RoBERTa는 BERT를 포함한 이전 모델들의 GLUE(general language understanding evaluation) 벤치마크 성능보다 우수한 성능을 가지도록 개선되었다.
따라서, 본 개시의 실시예들에 따른 시스템은 콘텐츠 검색을 위해 한국어 말뭉치 기준으로 사전 학습된 자연어처리 모델인 RoBERTa 모델을 이용할 수 있다. 그러나, 이하 설명되는 실시예들에서의 언어모델이 RoBERTa 모델로 반드시 한정되는 것은 아니며, RoBERTa 이외의 다른 언어모델을 이용하는 경우에도 적용될 수 있다.
도 6은 본 개시의 일 실시예에 따라 콘텐츠를 검색하는 서버의 구조의 예를 도시한다. 도 6에 도시된 서버(예: 도 1의 서버(120))의 적어도 일부 구성요소는 도 3의 프로세서(308)에 포함되는 구성요소로 이해될 수 있다. 이하에서 도 6의 적어도 일부 구성요소에 대한 설명은 도 7 내지 도 9를 참고하여 설명할 것이다.
도 6을 참고하면, 서버(120)는 콘텐츠 저장부(610), 모델 학습부(620), 검색어 획득부(630), 유사도 결정부(640), 및 콘텐츠 결정부(650)를 포함할 수 있다.
콘텐츠 저장부(610)는 클라이언트들에게 제공 가능한 콘텐츠 아이템들을 저장한다. 콘텐츠 아이템들은 스트리밍 서비스될 수 있는 영화 콘텐츠, 드라마 콘텐츠, 프로그램 콘텐츠를 포함하며, 하나의 콘텐츠 아이템은 하나의 영화, 하나의 드라마 또는 하나의 프로그램에 대응한다. 예를 들어, 제1 콘텐츠 아이템 및 제2 콘텐츠 아이템은 서로 다른 영화들에 대응할 수 있다. 다만, 다른 실시예에 따라, 콘텐츠 저장부(610)는 서버(120)의 외부에 존재할 수 있고, 이 경우, 서버(120)는 외부의 콘텐츠 저장부(610)에 접속하고, 콘텐츠 아이템들을 검색 및 획득할 수 있다.
일 실시예에 따르면, 콘텐츠 저장부(610)는 콘텐츠 벡터 DB(612)를 포함할 수 있다. 콘텐츠 벡터 DB(612)는 콘텐츠 저장부(610)에 저장된 콘텐츠 아이템들 각각의 벡터 값을 저장한다. 콘텐츠 아이템들 각각의 벡터 값은 모델 학습부(620)에 의해 학습된 언어모델을 이용하여 획득될 수 있다. 콘텐츠 벡터 DB(612)는 언어모델이 업데이트될 시, 업데이트된 언어모델에 의해 갱신될 수 있다. 예를 들어, 언어모델은 콘텐츠 저장부(610)에 새로운 콘텐츠 아이템이 저장되거나, 기 저장된 콘텐츠 아이템이 삭제되는 경우에 재학습됨으로써 업데이트될 수 있다. 즉, 콘텐츠 벡터 DB(612)는 언어모델이 재학습되어 업데이트 되는 경우, 업데이트된 언어모델을 이용하여 콘텐츠 아이템들 각각의 벡터 값을 획득 및 저장할 수 있다. 이때, 이전에 저장된 콘텐츠 아이템들 각각의 벡터 값은 삭제될 수 있다.
일 실시예에 따르면, 콘텐츠 벡터 DB(612)는 주기적으로 또는 지정된 이벤트 발생 시 자동적으로 갱신될 수도 있고, 사업자 및/또는 관리자의 제어에 의해 갱신될 수 있다. 예를 들어, 콘텐츠 저장부(610)에 새로운 콘텐츠 아이템이 저장될 시, 콘텐츠 벡터 DB(612)는 새로운 콘텐츠 아이템의 벡터 값을 추가 저장하도록 갱신될 수 있다. 다른 예로, 콘텐츠 저장부(610)에 기 저장된 콘텐츠 아이템이 삭제될 시, 콘텐츠 벡터 DB(612)는 삭제된 콘텐츠 아이템의 벡터 값이 삭제되도록 갱신될 수 있다.
모델 학습부(620)는 콘텐츠 아이템의 내용을 설명하는 텍스트 메타 데이터를 기반으로 언어모델에 대한 학습을 수행한다. 텍스트 메타 데이터는 콘텐츠 아이템의 내용을 설명하는 텍스트 피처(feature)를 의미한다. 텍스트 메타 데이터는, 콘텐츠 아이템의 제목, 시놉시스, 복합 장르, 감독, 배우, 해시태그 정보 중 적어도 하나를 포함할 수 있다. 여기서, 복합 장르는, 대분류 장르, 및 소분류 장르 중 적어도 하나를 포함할 수 있다. 예를 들어, 대분류 장르인 '액션/SF'의 소분류 장르는, '액션', '판타지', 'SF', '어드벤처', '전쟁', '무협' 등으로 구분될 수 있다. 해시태그 정보는, 콘텐츠 아이템의 주제, 감정, 또는 목적 중 적어도 하나를 나타내는 태그 정보를 의미한다.
일 실시예에 따르면, 모델 학습부(620)는 언어모델의 학습을 위해 콘텐츠 아이템의 텍스트 메타 데이터를 획득하고, 획득된 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환한다. 시퀀스형 텍스트 데이터는, 텍스트 데이터들이 연속적으로 이어져 있는 문자열 형태의 데이터를 의미한다. 모델 학습부(620)가 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환하는 것은, 콘텐츠 아이템의 메타 데이터와 같이 정형 데이터로 구분되어 있는 텍스트 데이터가 언어모델에 직접적으로 입력될 수 없기 때문이다. 따라서, 모델 학습부(620)는 콘텐츠 아이템의 텍스트 메타 데이터를 토큰 단위로 구분한 후, 적어도 하나의 구분자를 삽입함으로서, 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환할 수 있다. 여기서, 토큰은 고유의 임베딩 값으로 대체되는 언어모델의 입력 단위를 의미하며, 삽입되는 적어도 하나의 구분자 역시 토큰으로 취급될 수 있다. 적어도 하나의 구분자는, 서로 다른 종류의 피처들을 구분하기 위한 분리 토큰(예: [SEP]), 및 특정 피처를 나타내는 스페셜 토큰들 중 적어도 하나를 포함할 수 있다. 스페셜 토큰들은, 예를 들어, 장르를 나타내는 스페셜 토큰인 [GENRE] 및 [/GENRE], 감독을 나타내는 스페셜 토큰인 [DIR] 및 [/DIR], 배우를 나타내는 스페셜 토큰인 [ATR] 및 [/ATR], 및 해시태그를 나타내는 스페셜 토큰인 [TAG] 및 [/TAG] 중 적어도 하나의 스페셜 토큰을 포함할 수 있다. 나열된 스페셜 토큰들은 이해를 돕기 위한 예들일 뿐이며, 본 개시의 실시예들은 이에 한정되지 않는다. 각 스페셜 토큰은 해당 피처에 대응되는 텍스트의 앞뒤로 삽입될 수 있다. 본 개시에서 스페셜 토큰을 사용하는 것은, 콘텐츠 아이템의 텍스트 메타 데이터에 다양한 종류의 피처들이 포함되어 있기 때문이다. 즉, 언어모델이 입력 시퀀스에 포함된 분리 토큰들 및/또는 분리 토큰들의 순서만으로, 다양한 종류의 피처들을 인식하는 것은 어려울 수 있기 때문이다. 스페셜 토큰은 언어모델의 어휘사전에 추가될 수 있다.
일 실시예에 따르면, 모델 학습부(620)는 콘텐츠 아이템의 식별 코드, 제목, 장르, 감독, 배우, 해시태그, 및 시놉시스를 포함하는 텍스트 메타 데이터를 이하 표 1과 같이 구분자들을 포함하는 시퀀스형 텍스트 데이터로 변환할 수 있다.
제목[SEP]시놉시스[GENRE]장르1 장르2[/GENRE][DIR]감독[/DIR][ATR]배우1 배우2[/ATR][TAG]태그1 태그2[/TAG]
구체적인 예로, 모델 학습부(620)는 도 7에 도시된 바와 같이 시퀀스형 텍스트 데이터를 생성할 수 있다. 도 7은 본 개시의 일 실시예에 따라 콘텐츠의 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환하는 예를 도시한다. 도 7을 참고하면, 모델 학습부(620)는 콘텐츠 아이템의 텍스트 메타 데이터(710)에 분리 토큰 및 스페셜 토큰들을 추가함으로써, 시퀀스형 텍스트 데이터(720)로 변환할 수 있다. 이때, 해당 콘텐츠 아이템의 감독 및/또는 배우가 복수명인 경우, 모델 학습부(620)는 시퀀스형 텍스트 데이터에 포함되는 감독들 및/또는 배우들의 수를 제한할 수 있다. 예를 들어, 감독 및/또는 배우의 수는 최대 5명 이하로 제한될 수 있으나, 이에 제한되지 아니한다. 모델 학습부(620)는 언어모델에 기반하여 마스킹된 토큰을 예측 또는 추론하도록 구성된 예측모델에 시퀀스형 텍스트 데이터를 입력할 수 있다. 모델 학습부(620)는 시퀀스형 텍스트 데이터 내 해시태그 정보를 기반으로 예측모델에 대한 훈련을 수행함으로써, 언어모델에 대한 학습을 수행할 수 있다. 예를 들어, 모델 학습부(620)는 도 8a 및 도 8b에 도시된 바와 같이 언어모델에 대한 학습을 수행할 수 있다.
도 8a는 본 개시의 일 실시예에 따른 언어모델의 학습 예를 도시하고, 도 8b는 본 개시의 일 실시예에 따른 예측모델의 구조의 예를 도시한다. 도 8a를 참고하면, 모델 학습부(620)는 시퀀스형 텍스트 데이터에 포함된 토큰들 중 해시태그에 대응되는 하나의 토큰(예: '태그2')을 마스킹하고, 마스킹된 토큰의 값을 레이블로 정의할 수 있다. 예를 들어 모델 학습부(620)는 마스킹된 토큰(801)을 포함하는 텍스트 데이터(810)를 해시태그 예측모델(820)에 입력하고, 출력 값 및 레이블을 이용하여 손실(loss) 값을 결정하고, 손실 값에 기반하여 역전파를 수행함으로써 해시태그 예측모델(820)에 대한 훈련 및/또는 학습을 수행할 수 있다. 이에 따라, 해시태그 예측모델(820)은 마스킹된 토큰(801)의 값을 예측(830) 및/또는 추론하도록 훈련 및/또는 학습될 수 있다. 이때, 해시태그 예측모델(820)은 마스킹되지 아니한 다른 토큰들로부터 문맥 정보를 획득하고, 획득된 문맥 정보에 기반하여 마스킹된 토큰, 즉, 해시태그에 대응되는 토큰을 추론하도록 훈련 또는 학습될 수 있다. 예를 들어, 해시태그 예측모델(820)은 제목, 시놉시스 등과 같이 마스킹되지 않은 토큰들로부터 획득되는 문맥 정보를 기반으로 학습할 수 있다. 이와 같이, 언어모델 기반의 예측모델의 학습 태스크에 대한 입력 및 타겟은 하기 표 2와 같이 나타낼 수 있다.
예측 입력 타겟
해시태그 예측 타이틀[SEP]시놉시스[GENRE]장르1 장르2[/GENRE][DIR]감독[/DIR][ATR]배우1 배우2[/ATR][TAG]태그1 [MASK][/TAG] [MASK]=태그2
표 2는 해시태그 영역에 위치한 복수의 토큰들 중 '태그2'의 토큰이 마스킹 처리되어 예측모델에 입력되면, 예측모델이 '태그2'의 토큰을 추론하도록 학습됨을 나타낸다.여기서, 해시태그 영역에 복수의 토큰들이 존재함에도 불구하고 하나의 토큰만 마스킹 처리한 것은, 두 개 이상의 토큰들을 마스킹하는 경우에 언어모델이 입력에 포함된 마스킹 토큰들과 타겟 토큰들의 위치 관계를 파악하는 것이 용이하지 않기 때문이다. 따라서, 본 개시의 실시예에 따른 모델 학습부(620)는 해시태그 영역에서 하나의 토큰을 마스킹 및 추론한 후, 해시태그 영역에서 다른 토큰을 마스킹 및 추론하는 방식으로 동작할 수 있다.
일 실시예에 따르면, 모델 학습부(620)는 해시태그 영역에 위치한 토큰들 중에서 '#'으로 시작하지 않는 토큰을 마스킹할 수 있다. 해시태그 영역은 해시태그를 나타내는 스페셜 토큰 [TAG] 및 [/TAG]에 기반하여 결정될 수 있다. '#'으로 시작하지 아니하는 토큰을 마스킹하는 것은, RoBERTa 모델의 BPE(Byte Pair Encoding) 토크나이저 특성상 “#”으로 시작하는 토큰은 앞에 위치한 토큰에 의존적이거나 문법적인 의미의 토큰이기 때문이다. 즉, 상대적으로 체언 및 용언과 같이 핵심의미를 포함하는 토큰은 '#'으로 시작하지 않기 때문에, 모델 학습부(620)는 해시태그 영역에 위치한 토큰들 중에서 '#'으로 시작하지 않는 토큰을 마스킹할 수 있다. 예를 들어, BPE 토크나이저는 텍스트 문장을 토큰 단위로 구분할 때, “XX님은 흥미로운 OTT 분야인 티빙에 재직 중이다”에서 “XX + #님 + #은 + 흥미 + #로운 + OTT + 분야 + #인 + 티빙 + #에 + 재직 + 중 + #이다 + .”와 같이 나눌 수 있다. 위의 예시와 같이, 토크나이저는 의존적인 토큰에 '#'을 붙임으로써 앞의 토큰에 의존적인 토큰임을 나타낼 수 있다.
의존적인 토큰을 나타내는 방식은 해당 토큰에 '#'을 붙이는 방식으로 제한되지 않는다. 예를 들어, 다른 토크나이저의 경우, 의존적인 토큰에 '##', 또는 '_'를 붙일 수 있고, 그 외 다양한 방식으로 해당 토큰이 의존적인 토큰임을 나타낼 수 있다. 따라서, 일 실시예에 따르면, 의존적인 토큰의 형태는 특정 형태로 제한되지 아니하며, 모델 학습부(620)는, 의존적인 토큰이 아닌 토큰을 마스킹할 수 있다. 일 실시예에 따르면, 예측 모델은 도 8b에 도시된 바와 같이, 복수의 입력 토큰들(예: [W1, W2, W3, W4, W5]) 중 적어도 하나의 해시태그 토큰을 마스킹하는 마스킹 블록(821), 마스킹된 토큰을 포함하는 복수의 입력 토큰들(예: [W1, W2, W3, [MASK], W5])에 대응되는 벡터 값들(예: [O1, O2, O3, O4, O5])을 출력하는 언어모델 (822), 언어모델에서 출력된 벡터 값들로부터 마스킹된 토큰의 벡터 값을 추론하는 분류 계층(823), 벡터 값들을 토큰들로 변환하는 임베딩-단어(embedding to vocabulary) 계층(824)를 포함할 수 있다. 여기서, 언어모델(822)은 RoBERTa 모델을 포함할 수 있다. 또한, 분류 계층(823)은 완전 연결 계층(fully connected layer), GELU(gaussian error linear unit), 및 놈(norm)을 포함할 수 있으며, MLM 헤드 레이어로 지칭될 수 있다. 분류 계층(823)은 복수의 입력 벡터 값들(예: [O1, O2, O3, O4, O5])에 대응되는 예측 토큰들(예: [W'1, W'1, \'3, W'4, W'5])을 출력할 수 있다. 예측 모델은 마스킹되지 않은 토큰들(예: [W1, W1, \3, W5])로부터의 문맥정보를 기반으로, 마스킹되지 않은 토큰들과 중복되지 않으면서, 내용에 적합한 마스킹된 토큰(예: W4), 즉, 타겟을 예측 및/또는 추론해내도록 훈련될 수 있다.
상술한 설명에서, 모델 학습부(620)는 해시태그 정보를 기반으로 MLM을 수행하였으나, 해시태그 정보 이외의 다른 정보를 기반으로 MLM을 수행할 수도 있다. 예를 들어, 모델 학습부(620)는 사용자의 콘텐츠 취향이 반영될 수 있는 다른 정보를 기반으로 MLM을 수행할 수도 있다. 하기 표 3은 사용자의 선호 콘텐츠에 대한 표현 예시이다.
좋아하는 영화 표현 예시 기준 구분
액션 영화 좋아한다 장르(액션)
일본 영화 좋아한다 해시태그(#일본배경)
홍길동 감독 영화 좋아한다 감독(홍길동)
감동적인 영화 보고 싶다 해시태그(#감동적인)
김길동 배우 영화는 믿고 본다 배우(김길동)
표 3은 사용자의 선호 콘텐츠가, 콘텐츠의 장르, 해시태그, 감독, 또는 배우 정보에 반영될 수 있음을 나타낸다. 표 3에 나타낸 바와 같이, 감독, 또는 배우 정보는 사용자의 콘텐츠 취향을 반영하는 정보이다. 그러나, 감독 또는 배우 정보에 해당하는 대상 정보들은 매우 많고, 콘텐츠들이 동일한 감독 정보 또는 동일한 배우 정보를 가지는 경우가 드물기 때문에, 감독 또는 배우 정보에 대한 일반화된 의미표상을 학습하는 것은 어렵다. 반면, 해시태그 또는 장르 정보는 사용자의 콘텐츠 취향을 반영하면서도, 다른 피처들(예: 감독, 배우)에 비해 상대적으로 그 대상 정보가 많지 않고, 콘텐츠들이 동일한 장르 및/또는 해시태그를 갖는 경우가 많다. 또한, 장르 정보는 정해진 카테고리 내에서 개별 데이터마다 등장하며, 해시태그 정보에 해당되는 주요 명사들은 사전 학습 단계에서 많이 학습되어 있는 상태이다. 따라서, 장르 또는 해시태그 정보에 대한 일반화된 의미표상을 학습하는 것은 용이하다 할 수 있다. 따라서, 본 개시의 모델 학습부(620)는 해시태그 정보 이외에 장르 정보를 기반으로 예측 모델을 훈련시킬 수 있다. 즉, 모델 학습부(620)는 장르 정보를 기반으로 언어모델에 대한 학습을 수행할 수도 있다.검색어 획득부(630)는 클라이언트 장치(110)로부터 콘텐츠 검색을 위한 검색어를 획득한다. 예를 들어, 검색어 획득부(630)는 클라이언트 장치(110)와의 유/무선 통신을 통해 텍스트 형태의 검색어를 획득할 수 있다. 일 실시예에 따르면, 검색어 획득부(630)는 클라이언트 장치(110)로부터 음성 데이터 형태의 검색어를 획득할 수 있다. 이 경우, 검색어 획득부(630)는 음성 데이터를 텍스트 데이터로 변환할 수 있다.
유사도 결정부(640)는 모델 학습부(620)에서 학습된 언어모델을 이용하여 검색어와 콘텐츠 아이템 간의 유사도를 결정한다. 이를 위해, 유사도 결정부(640)는 검색어 획득부(640)로부터 검색어를 획득하고, 학습된 언어모델을 이용하여 검색어의 벡터를 결정할 수 있다. 여기서, 검색어는 자연어, 즉, 비정형 데이터로 구성될 수 있다. 예를 들어, 검색어는 적어도 하나의 키워드를 포함하는 단어, 어절, 또는 문장 형태의 자연어일 수 있다. 유사도 결정부(640)는 검색어를 지정된 입력 형식에 적합하게 변환하고, 변환된 검색어를 언어모델에 입력할 수 있다. 예를 들어, 유사도 결정부(640)는 검색어를 이하 표 4에 나타낸 입력1, 입력2, 또는 입력3과 같이 변환할 수 있다.
입력1: [CLS]토큰 단위로 구분된 검색어[SEP]
입력2: [CLS]토큰 단위로 구분된 검색어 [SEP] 토큰 단위로 구분된 검색어 [GENRE][MASK][/GENRE][SEP]
입력3: [CLS]토큰 단위로 구분된 검색어 [SEP] 토큰 단위로 구분된 검색어 [TAG][MASK][/TAG][SEP]
표 4에서, [CLS] 및 [SEP]은 해당 검색어의 시작 위치 및 마지막 위치를 나타내기 위해 삽입되는 스페셜 토큰들로써, 입력1, 입력2, 및 입력3에 공통으로 포함된다. 여기서, 시작 위치 및 마지막 위치 각각에 [CLS] 및 [SEP]이 삽입되는 것은, 언어모델의 학습 시에 범용적으로 이용되는 입력 형식, 즉, 표준 입력 형식을 따르기 위함이다. 즉, 입력1은 시작 위치에 [CLS]가 포함되고 마지막 위치에 [SEP]이 포함되는 표준 입력 형식일 수 있다. 또한, 입력2 및/또는 입력3은 본 개시의 실시예에 따라 언어모델의 학습을 위해 이용된 표 2의 입력 형식을 따르기 위한 의도된 표준 입력 형식일 수 있다. 여기서, 입력2 및/또는 입력3의 검색어와 검색어 사이에 [SEP]이 삽입된 것은, 표 2의 타이틀과 시놉시스 사이의 [SEP]을 통한 언어모델의 학습이 검색어의 벡터를 결정하는 과정에도 반영되도록 하기 위함이다. 또한, 입력2가 <속성1>[SEP]<속성2>[GENRE][MASK][/GENRE] 형태를 가지는 것은, 검색어의 벡터 결정 시에 <속성 1> 및 <속성 2>를 이용하여 장르 관점에서 [MASK]를 예측하도록 하기 위함이다. 특히, [GENRE][MASK][/GENRE]를 추가하여 장르 관점에서 마스킹된 토큰을 예측하는 것은, 장르 스페셜 토큰의 위치에 가중치를 적용하기 위함이다. 즉, 입력2가 [GENRE][MASK][/GENRE]를 포함함으로써, 언어모델은 입력2의 <속성 1> 및 <속성 2>에 해당하는 검색어들을 기반으로 마스킹된 장르 토큰을 추론하고, 마지막 은닉층의 벡터 값들을 이용하여 검색어의 벡터를 출력할 수 있다. 이때, 추론된 장르 토큰의 위치에 가중치가 적용될 수 있으나, 본 개시는 이에 제한되지 않는다. 또한, 입력3이 <속성1>[SEP]<속성2>[TAG][MASK][/TAG] 형태를 가지는 것은, 검색어의 벡터 결정 시에 <속성 1> 및 <속성 2>를 이용하여 해시태그 관점에서 [MASK]를 예측하도록 하기 위함이다. 특히, [TAG][MASK][/TAG]를 추가하는 것은 언어모델의 학습 시에 이용된 입력 형식을 따르도록 함으로써, 언어모델에서 기 학습된 정보가 [MASK] 위치에 반영되도록 하기 위함이다. 유사도 결정부(640)는 검색어를 지정된 입력 형식에 적합하게 변환하고, 변환된 검색어를 학습된 언어모델에 입력할 수 있다. 예를 들어, 검색어가 “긴장감 넘치는 영화”인 경우, 유사도 결정부(640)는 검색어를 입력1과 같이 [CLS]/긴장감/넘치/는/영화/[SEP]로 변환하거나, 입력2과 같이 [CLS]/긴장감/넘치/는/영화/[SEP]/긴장감/넘치/는/영화/[GENRE][MASK][/GENRE][SEP]으로 변환하거나, 또는 입력3과 같이 [CLS]/긴장감/넘치/는/영화/[SEP]/긴장감/넘치/는/영화/[TAG][MASK][/TAG][SEP]으로 변환할 수 있다.
유사도 결정부(640)는 변환된 검색어를 학습된 언어모델에 입력함으로써, 검색어의 벡터를 획득할 수 있다. 상술한 입력1, 입력2, 또는 입력3은 검색어에 대한 지정된 입력 형식의 예시들일 뿐, 본 개시의 실시예들은 이에 한정되지 않는다. 즉, 검색어에 대한 지정된 입력 형식은 설계자에 의해 다양하게 설정될 수 있다. 예를 들어, 검색어에 대한 지정된 입력 형식은 "[CLS] 토큰 단위로 구분된 검색어 [GENRE] [MASK] [/GENRE][SEP]"로 설정될 수 있다. 즉, 검색어에 대한 지정된 입력 형식은 표 2의 <타이틀>[SEP]<시놉시스>에 맞춰 검색어가 반복되지 않고 한 번만 포함되더라도, 학습된 언어모델에서 검색어에 해당하는 토큰들을 통해 마스크를 예측하도록 할 수 있는 입력 구조를 가질 수 있다.
유사도 결정부(640)는 콘텐츠 저장부(610)에 저장된 콘텐츠 아이템 별로, 텍스트 메타 데이터를 획득하고, 획득된 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환할 수 있다. 유사도 결정부(640)는 학습된 언어모델을 이용하여 콘텐츠 아이템 별로 획득된 시퀀스형 텍스트 데이터로부터 콘텐츠 아이템 별 벡터를 획득할 수 있다. 일 실시예에 따르면, 유사도 결정부(640)는 주기적으로, 또는 지정된 이벤트 발생 시, 학습된 언어모델을 통해 적어도 하나의 콘텐츠 아이템별 벡터를 획득하고, 획득된 콘텐츠 아이템별 벡터를 콘텐츠 벡터 DB(612)에 저장할 수 있다. 지정된 이벤트는 콘텐츠 저장부(610)에 새로운 콘텐츠 아이템이 추가 저장되는 이벤트, 및/또는 사업자 및/또는 관리자의 콘텐츠 아이템별 벡터 획득 요청 이벤트를 포함할 수 있다.
유사도 결정부(640)는 검색어의 벡터 및 콘텐츠 아이템별 벡터를 기반으로 검색어와 콘텐츠 아이템 간의 유사도를 결정할 수 있다. 여기서, 콘텐츠 저장부(610)에 저장된 콘텐츠 아이템의 벡터는 콘텐츠 벡터 DB(612)로부터 획득되거나, 학습된 언어모델을 이용하여 실시간으로 획득될 수도 있다.
예를 들어, 유사도 결정부(640)는, 도 9에 도시된 바와 같이, 유사도를 결정할 수 있다. 도 9는 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 검색어와 콘텐츠 간의 유사도를 계산하는 예를 도시한다. 도 9를 참고하면, 유사도 결정부(640)는 RoBERTa 모델(920-1)을 이용하여 시맨틱 검색어1의 입력1, 입력2, 또는 입력3의 검색어(902a) 로부터 시맨틱 검색어1의 벡터(904a)를 획득하고, RoBERTa 모델(920-2)를 이용하여 콘텐츠 1의 시퀀스형 텍스트 데이터인 <콘텐츠1 Data>(902b)로부터 콘텐츠1의 벡터(904b)를 획득할 수 있다. 여기서, 2개의 RoBERTa 모델들(920-1, 920-2)이 사용되는 것으로 표현되었으나, 이는 각 시맨틱 검색어1 및 콘텐츠1 각각에 대해 하나의 벡터가 획득됨을 강조하기 위한 것이고, 유사도 결정부(640)는 하나의 RoBERTa 모델들을 반복적으로 사용하거나 또는 병렬 처리할 수 있다. 유사도 결정부(640)는 벡터들의 유사도를 계산하는 유사도 계산 블록(940)을 이용하여 시맨틱 검색어1의 벡터(904a) 및 콘텐츠1의 벡터(904b)의 유사도를 계산할 수 있다. 예를 들어, 유사도 계산 블록(940)은 코사인(cosine) 유사도 알고리즘에 기반하여 유사도를 계산할 수 있다. 시맨틱 검색어1의 벡터(904a) 및 콘텐츠1의 벡터(904b)의 유사도는 검색어 및 콘텐츠1의 유사도(906)로 해석될 수 있다.
일 실시예에 따르면, 유사도 결정부(640)는 모델 학습부(620)에서 마스킹된 토큰을 추론 시에 사용되는 모델에서 MLM 헤드 레이어를 제외하고, 언어모델의 마지막 은닉층의 임베딩 값들을 이용하여 해당 콘텐츠의 시퀀스형 텍스트 데이터에 대한 벡터 값을 결정할 수 있다. 다시 말해, 유사도를 결정하기 위해 사용되는 모델 및 미세 조정을 위해 사용되는 모델은 서로 다른 구조를 가질 수 있다. 즉, 미세 조정을 위한 학습 단계에서의 모델은 마스킹된 토큰을 예측하기 위한 MLM 헤드 레이어를 포함하나, 유사도를 결정하는 단계에서의 모델은 MLM 헤드 레이어를 포함하지 아니하고, 유사도 계산 블록을 더 포함할 수 있다.
유사도 결정부(640)는 다양한 실시예들에 따라 검색어의 벡터 및 콘텐츠 아이템의 벡터, 즉, 유사도 계산에 이용될 입력 텍스트 벡터들을 획득할 수 있다. 입력 텍스트 벡터를 결정하기 위한 실시예들은 다음과 같다.
일 실시예에 따라, 풀러 출력(pooler output)을 이용하는 방식이 적용될 수 있다. 구체적으로, 풀러 출력을 이용하는 경우, 언어모델의 [CLS] 토큰의 마지막 은닉층 출력 벡터가 입력 텍스트 벡터로서 사용된다.
일 실시예에 따라, 마지막 은닉 상태(last hidden states) 값들의 평균을 이용하는 방식이 적용될 수 있다. 마지막 은닉 상태 값들의 평균을 이용하는 경우, 언어모델의 모든 단어의 마지막 은닉층 출력 벡터에 대해 평균 풀링(average pooling)을 통해 얻어진 벡터가 입력 텍스트 벡터로 사용된다.
일 실시예에 따라, 마지막 은닉 상태 값들의 최대값을 이용하는 방식이 적용될 수 있다. 마지막 은닉 상태 값들의 최대값을 이용하는 경우, 언어모델의 모든 단어의 마지막 은닉층 출력 벡터에 대해 맥스 풀링(max pooling)을 통해 얻어진 벡터가 입력 텍스트 벡터로 사용된다.
전술한 다양한 실시예들 중, 유사도 결정부(640)는 마지막 은닉 상태 값들의 평균을 이용하는 방식에 따라 유사도 계산을 위한 입력 텍스트 벡터를 획득할 수 있다.
추가적으로, 유사도 결정부(640)는 언어모델의 마지막 은닉 상태 값들 중 특정 피처의 위치에 가중치를 부여할 수 있다. 가중치를 부여하는 실시예들은 다음과 같다.
일 실시예에 따라, 해시태그 값들에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 해시태그 영역을 나타내는 스페셜 토큰인 [TAG]와 [/TAG] 사이에 위치한 토큰들에 대응되는 벡터 값들에 2배의 가중치가 부여될 수 있다.
일 실시예에 따라, 장르 값들에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 장르 영역을 나타내는 스페셜 토큰인 [GENRE]와 [/GENRE] 사이에 위치한 토큰들에 대응되는 벡터 값들에 2배의 가중치가 부여될 수 있다. 예를 들어, 토큰들에 대응되는 벡터값들에 대한 평균 풀링 이후에 장르 위치에 있는 벡터들에 대해서만 다시 평균을 낸 후, 해당 평균을 평균 풀링 결과에 가산할 수 있다. 그러나, 본 개시의 실시예들은 이에 제한되지 않는다. 예를 들어, 평균 풀링 시에 각 피처의 위치별로 가중치를 적용하고, 가중치가 적용된 평균을 산출할 수 있다.
일 실시예에 따라, 타이틀 및 시놉시스 값들에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 [SEP]의 앞뒤에 위치한 토큰들에 대응되는 벡터 값들에 2배의 가중치가 부여될 수 있다.
일 실시예에 따라, 장르 및 해시태그 값들에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 [TAG]와 [/TAG] 사이에 위치한 토큰들 및 [GENRE]와 [/GENRE] 사이에 위치한 토큰들에 대응되는 벡터 값들에 2배의 가중치가 부여될 수 있다.
전술한 다양한 실시예들 중, 유사도 결정부(640)는 마지막 은닉층의 벡터 값들 중 장르의 위치에 대응되는 벡터 값들에 가중치를 부여할 수 있다. 유사도 결정부(640)는 가중치를 부여한 후, 마지막 은닉층의 벡터 값들의 평균을 결정함으로써 유사도 계산을 위한 입력 텍스트 벡터를 획득할 수 있다.
콘텐츠 결정부(650)는 유사도 결정부(640)에서 결정된 검색어와 콘텐츠 아이템들 간의 유사도를 기반으로 검색어와 유사한 콘텐츠 아이템들을 결정하고, 결정된 콘텐츠 아이템들을 포함하는 콘텐츠 검색 목록을 생성할 수 있다. 콘텐츠 결정부(650)는 검색어에 대한 각 콘텐츠 아이템의 유사도를 확인하고, 유사도에 기반하여 콘텐츠 검색 목록을 생성할 수 있다. 예를 들어, 콘텐츠 결정부(650)는 서버(120)에 저장된 콘텐츠 아이템들 중 검색어와의 유사도에 대한 내림차순으로 지정된 개수의 콘텐츠 아이템들을 선택하고, 선택된 콘텐츠 아이템들을 포함하는 콘텐츠 검색 목록을 생성할 수 있다. 즉, 콘텐츠 검색 목록에 포함되는 콘텐츠 아이템들은 유사도에 따라 나열될 수 있다.
상술한 설명에서, 모델 학습부(620)는 콘텐츠들의 텍스트 메타 데이터의 빈출 단어들을 기본 언어모델의 어휘사전에 추가하고, 빈출 단어들이 추가된 어휘사전을 이용하여 학습할 수 있다. 빈출 단어가 어휘사전에 추가될 경우, 언어모델에서 빈출단어는 분절되지 않고 단일 토큰으로 인식될 수 있다. 예를 들어, 대분류 장르를 나타내는 빈출 단어들이 어휘사전에 추가될 수 있다. 대분류 장르를 나타내는 빈출 단어들이 어휘사전에 추가될 경우, 대분류 장르를 나타내는 빈출 단어가 언어모델에서 단일 토큰으로 인식됨으로써, 언어모델이 인식 가능한 시퀀스 길이가 늘어나서 성능이 더 높게 나타날 수 있다.
상술한 설명에서 해시태그 정보를 기반으로 MLM을 수행한 것은, 실험 결과 해시태그 정보에 MLM을 적용한 경우의 성능이 가장 높게 나타났기 때문이다. 즉, 콘텐츠의 텍스트 메타 데이터 내 다른 정보에 대해서도 MLM을 수행할 수 있으나, 해시태그 정보를 기반으로 MLM을 수행하는 경우보다 성능이 낮아질 수 있다.
전술한 실시예들에서, 모델 학습부(620)는 서버(120)에 포함되는 것으로 설명되었다. 즉, 학습된 언어모델을 사용하는 서버(120)가 언어모델에 대한 학습을 수행할 수 있다. 하지만, 다른 실시예에 따라, 언어모델에 대한 학습은 서버(120)가 아닌 다른 엔티티에 의해 수행될 수 있다. 이 경우, 모델 학습부(620)는 서버(120)에 포함되지 아니할 수 있고, 서버(120)는 제3의 장치로부터 학습된 언어모델에 대한 정보를 수신하고, 학습된 언어모델을 구축한 후, 학습된 언어모델을 이용하여 검색어와 콘텐츠 아이템 간 유사도를 결정할 수 있다.
상술한 설명에서, 검색어는 클라이언트 장치(110)에서 서버(120)로 제공된다. 따라서, 서버(120)에서 클라이언트 장치(110)로부터 어떤 검색어가 입력될 지 사전에 예측하는 것은 용이하지 않다. 따라서, 서버(120)는 클라이언트 장치(110)로부터 특정 검색어에 대응되는 콘텐츠 검색이 요청될 경우, 실시간으로 검색어에 대한 벡터를 계산해야 할 것이다. 그러나, 콘텐츠 아이템들은 서버(120)에 미리 저장된 것이므로, 콘텐츠 아이템들에 대한 벡터는 콘텐츠 검색이 요청 시점과 관련없이, 획득될 수 있다. 즉, 서버(120)는 서버(120)에 새로운 콘텐츠 아이템들이 추가 저장될 때마다, 미리 학습된 언어모델을 이용하여 새로운 콘텐츠 아이템들에 대한 벡터 값들을 계산하고, 계산된 콘텐츠 아이템별 벡터 값을 콘텐츠 벡터 DB(612)에 저장할 수 있다. 서버(120)는 콘텐츠 검색이 요청될 시, 콘텐츠 벡터 DB(612)에 저장된 콘텐츠 아이템별 벡터 값을 이용함으로써, 콘텐츠 검색 목록 생성에 소요되는 시간을 단축시킬 수 있다.
일 실시예에 따르면, 콘텐츠 아이템별 벡터 값은 학습된 언어모델이 저장된 위치에 저장될 수 있다. 이를 통해, 서버(120)에서 콘텐츠 검색을 위한 검색어와 콘텐츠 간의 유사도 결정 시, 동일 위치 또는 동일 경로에 있는 콘텐츠 아이템별 벡터 값을 이용할 수 있다.
도 10은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠를 검색하는 절차의 예를 도시한다. 도 10의 동작 주체는 도 1의 서버(120)일 수 있다.
도 10을 참고하면, S1001 단계에서, 서버는 검색어를 획득한다. 서버는 클라이언트 장치로부터 텍스트 데이터 형태의 검색어를 획득할 수 있다. 일 실시예에 따르면, 서버는 클라이언트 장치로부터 검색어를 포함하는 콘텐츠 검색 요청 메시지를 수신하고, 콘텐츠 검색 요청 메시지로부터 검색어를 추출할 수 있다. 검색어는 자연어인 비정형 텍스트 데이터를 포함할 수 있다. 예를 들어, 서버는 “긴장감 넘치는 영화”와 같이, 비정형 텍스트 데이터로 구성된 검색어를 획득할 수 있다.
S1003 단계에서, 서버는 학습된 언어모델을 이용하여 검색어와 콘텐츠 아이템 간의 유사도를 결정한다. 서버는 학습된 언어모델을 이용하여 검색어 및 콘텐츠 아이템별 벡터 값을 획득할 수 있다. 이때, 콘텐츠 아이템별 벡터 값은 학습된 언어모델을 이용하여 실시간으로 획득된 것일 수도 있으며, 학습된 언어모델을 이용하여 검색어가 획득되기 이전에 미리 획득 및 저장된 것일 수 있다. 서버는 검색어의 벡터와 콘텐츠 아이템별 벡터 값을 기반으로 검색어와 콘텐츠 아이템들 간의 유사도를 결정할 수 있다. 예를 들어, 서버는 표 4의 입력1, 입력2, 또는 입력3의 형식으로 변환된 검색어를 학습된 언어모델에 입력함으로써 검색어의 벡터를 획득하고, 제1 콘텐츠 아이템의 시퀀스형 텍스트 데이터를 학습된 언어모델에 입력함으로써 제1 콘텐츠의 벡터를 획득할 수 있다. 서버는 유사도 알고리즘(예: 코사인 유사도 알고리즘)을 이용하여 두 벡터들의 유사도를 계산할 수 있다. 서버는 계산된 유사도를 검색어 및 제1 콘텐츠 아이템 간의 유사도로 결정할 수 있다. 이를 통해, 서버는 검색어 및 콘텐츠 아이템들 각각 간의 유사도를 계산할 수 있다.
S1005 단계에서, 서버는 검색어와 유사한 적어도 하나의 콘텐츠 아이템을 포함하는 콘텐츠 검색 목록을 제공할 수 있다. 즉, 서버는 검색어와 콘텐츠들 간의 유사도를 기반으로 검색어에 유사한 적어도 하나의 콘텐츠 아이템을 결정하고, 결정된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 생성할 수 있다. 예를 들어, 서버는 보유한 콘텐츠 아이템들 중 검색어와의 유사도의 내림차순으로 지정된 개수의 콘텐츠 아이템들 또는 임계치 이상의 유사도를 가지는 콘텐츠 아이템들을 선택할 수 있다. 예를 들어, 서버는 다른 기준에 따라 지정된 후보 콘텐츠 아이템들 중 검색어와의 유사도의 내림차순으로 지정된 개수의 콘텐츠 아이템들 또는 임계치 이상의 유사도를 가지는 콘텐츠 아이템들을 선택할 수 있다. 그리고, 서버는 선택된 콘텐츠 아이템들에 대한 정보를 포함하는 콘텐츠 검색 목록을 생성하고, 생성된 콘텐츠 검색 목록을 클라이언트 장치로 제공할 수 있다. 다시 말해, 서버는 콘텐츠 검색 목록을 클라이언트 장치에게 송신할 수 있다. 이때, 구체적인 콘텐츠 검색 목록의 형식은 콘텐츠 검색 결과를 제공하는 환경, 서비스 등에 따라 달라질 수 있다.
도 11은 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다. 이하 도 11의 적어도 일부 동작들은 순차적으로 수행될 수도 있고, 병렬적으로 수행될 수도 있다. 예를 들어, 도 11의 일부 동작들은 적어도 일시적으로 동일한 시점에 수행될 수 있다. 이하에서 도 11의 적어도 일부 동작은 도 12를 참고하여 설명할 것이다.
도 11을 참고하면, S1101 단계에서, 서버는 콘텐츠에 대한 텍스트 메타 데이터를 획득한다. 예를 들어, 도 12에 도시된 바와 같이, 서버는 콘텐츠의 제목, 장르, 감독, 배우, 해시태그, 및 시놉시스를 포함하는 텍스트 메타 데이터(1210)를 획득할 수 있다.
S1103 단계에서, 서버는 텍스트 메타 데이터에 대한 토크나이징을 수행한다. 예를 들어, 서버는 바이트 페어 인코딩(byte pair encoding, BPE) 알고리즘 또는 형태소 분석기를 활용하여 텍스트 메타 데이터를 토큰 단위로 구분할 수 있다. 바이트 페어 인코딩 알고리즘은, 대상 데이터에서 가장 많이 등장한 문자열을 병합해서 데이터를 압축하는 정보 압축 알고리즘으로, 어휘 구축 단계와 토큰화 단계로 이루어질 수 있다. 구체적으로, 바이트 페어 인코딩 알고리즘은 데이터에서 자주 등장하는 문자열을 병합하고, 병합된 문자열을 어휘 집합에 추가하여 어휘 집합을 구축한 후, 대상 데이터 내 각 어절에 어휘 집합의 서브워드가 포함되어 있을 때, 해당 서브워드를 어절에서 분리하는 알고리즘이다. 형태소 분석기는, 대상 데이터를 최소 의미 단위인 형태소로 분절하는 기법이다.
S1105 단계에서, 서버는 시퀀스형 텍스트 데이터를 획득한다. 예를 들어, 토큰 단위로 구분된 데이터에 적어도 하나의 구분자를 추가하여 시퀀스형 텍스트 데이터를 획득할 수 있다. 예를 들어, 시퀀스형 텍스트 데이터는 도 12와 같이 결정될 수 있다. 도 12는 본 개시의 일 실시예에 따른 언어모델을 이용하는 언어모델의 학습의 예를 도시한다. 예를 들어, 도 12를 참고하면, 서버는 메타 데이터(1210)를 토큰들로 구분하고, 토큰들에 적어도 하나의 분리 토큰 및 적어도 스페셜 토큰(예: 장르 토큰, 감독 토큰, 배우 토큰, 해시태그 토큰 등)을 삽입함으로써 시퀀스형 텍스트 데이터(1220)를 획득할 수 있다.
S1107 단계에서, 서버는 해시태그를 마스킹한다. 서버는 해시태그 영역에 위치한 복수의 토큰들 중 임의의 하나의 토큰을 마스킹할 수 있다. 이때, 해시태그 영역은, 해시태그를 나타내는 스페셜 토큰인 [TAG] 및 [/TAG]를 기반으로 식별될 수 있다. 예를 들어, 도 12를 참고하면, 서버는 시퀀스형 텍스트 데이터(1320)에서 [TAG], 및 [/TAG] 사이에 "감동" 토큰과 "따듯" 토큰이 존재함을 인식하고, 이들 중 "따뜻" 토큰을 [MASK](1231)로 대체하거나, "감동" 토큰을 [MASK](1232)로 대체할 수 있다. 일 실시예에 따라, 서버는 해시태그 영역에 위치한 복수의 토큰들 중에서 "#"으로 시작하지 않는 토큰을 마스킹할 수 있다. “#”으로 시작하지 아니하는 토큰을 마스킹하는 것은, 체언 및 용언과 같이 핵심의미를 포함하는 토큰은 “#”으로 시작하지 않기 때문이다.
S1109 단계에서, 서버는 언어모델 기반의 예측모델을 이용하여 마스킹된 해시태그를 추론하는 학습을 수행한다. 예를 들어, 서버는 도 12에 도시된 바와 같이, "따뜻" 토큰이 마스킹된 경우, 예측모델(1240)을 이용하여 마스킹된 해시태그인 "따뜻"을 추론하도록 학습될 수 있고, "감동" 토큰이 마스킹된 경우, 예측모델(1240)을 이용하여 마스킹된 해시태그인 "감동"을 추론하도록 학습될 수 있다. 이때, 예측모델(1240)은 마스킹된 해시태그를 추론해내도록 손실(loss) 값을 역전파하여 학습될 수 있다. 이를 통해, 제목, 및 시놉시스의 토큰의 벡터들이 마스킹된 해시태그의 의미정보를 반영할 수 있도록, 예측모델(1240)에서 각 토큰의 벡터를 도출하는 언어모델의 파라미터들이 업데이트될 수 있다.
서버는 복수의 콘텐츠 아이템들에 대하여 상술한 S1105 단계 및 S1107 단계를 반복적으로 수행할 수 있다. 또한, 서버는 해시태그 영역 내 복수의 토큰들에 대해 S1105 단계 및 S1107 단계를 반복적으로 수행할 수 있다. 이와 같이, 복수의 해시태그 정보들에 대한 랜덤 마스킹 훈련 방식을 반복하는 경우, 복수의 해시태그들의 의미정보가 시퀀스형 텍스트 데이터 내 다른 토큰들의 벡터에 반영되도록 언어모델의 파라미터들이 업데이트될 수 있다. 따라서, 언어모델은 도 11에 도시된 바와 같은 마스킹된 토큰을 추론하는 태스크에 의해 더욱 정교한 의미표상을 제공하도록 학습될 수 있으며, 이에 따라 콘텐츠 간의 유사관계를 더욱 잘 식별할 수 있게 된다.
또한, 상술한 바와 같이 학습된 언어모델은, 시퀀스형 텍스트 데이터 내에 해시태그가 부족하거나 없는 경우에도, 시퀀스형 텍스트 데이터 내 다른 종류의 피처들(예: 제목, 시놉시스)로부터 해시태그 피처의 정보가 함축된 벡터를 반환할 수 있다.
도 13은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 검색어와 콘텐츠 간의 유사도를 결정하는 절차의 예를 도시한다. 도 13의 동작들은 도 10의 동작 S1003의 일예로서, 검색어와 하나의 콘텐츠 아이템 간의 유사도를 판단하는 절차로 이해될 수 있다. 이하 도 13의 적어도 일부 동작들은 순차적으로 수행될 수도 있고, 병렬적으로 수행될 수도 있다. 예를 들어, 도 13의 일부 동작들은 적어도 일시적으로 동일한 시점에 수행될 수 있다.
도 13을 참고하면, S1301 단계에서, 서버는 검색어의 벡터를 결정한다. 여기서, 검색어의 벡터는 해시태그를 추론하도록 미리 학습된 언어모델에 기반하여 결정될 수 있다. 예를 들어, 서버는 클라이언트 장치로부터 검색어를 획득하고, 획득된 검색어에 대한 토크나이징을 수행한 후, 적어도 하나의 구분자를 삽입함으로써 표 4의 입력1, 입력2, 또는 입력3의 형식을 따르는 변환된 검색어를 획득할 수 있다. 그리고, 서버는 학습된 언어모델을 이용하여 변환된 검색어에 대응하는 벡터를 획득할 수 있다. 구체적으로, 서버는 변환된 검색어를 학습된 언어모델에 입력하고, 언어모델의 출력 데이터를 획득함으로써, 벡터, 즉, 임베딩 값을 결정할 수 있다. 학습된 언어모델은 도 11에서 설명한 바와 같이 학습된 언어모델일 수 있다. 다만, 유사도 계산을 위해 언어모델에서 토큰(예: 해시태그)을 추론할 때에 이용되는 헤드 레이어를 제외하고, 언어모델 자체의 마지막 은닉계층 임베딩 값을 콘텐츠의 텍스트 메타 데이터에 대한 임베딩 값으로 사용할 수 있다. 이때, 일 실시예에 따라, 서버는 풀러 출력을 이용하는 방식, 마지막 은닉 상태 값들의 평균을 이용하는 방식, 또는 마지막 은닉 상태 값들의 최대값을 이용하는 방식 중 어느 하나를 이용하여, 유사도 계산을 위한 검색어의 벡터를 결정할 수 있다. 또한, 일 실시예에 따라, 서버는 유사도 계산을 위한 검색어의 벡터 결정 시, 마지막 은닉 상태 값들 중 특정 피처의 위치에 해당하는 값에 가중치를 부여할 수 있다.
S1303 단계에서, 서버는 콘텐츠 아이템의 벡터를 결정한다. 여기서, 콘텐츠 아이템의 벡터는 텍스트 메타 데이터를 이용하여 결정되는 시퀀스형 텍스트 데이터에 기반하여 결정될 수 있다. 예를 들어, 서버는 콘텐츠 아이템의 텍스트 메타 데이터를 획득하고, 획득된 텍스트 메타 데이터에 대한 토크나이징을 수행한 후, 적어도 하나의 구분자를 삽입함으로써 시퀀스형 텍스트 데이터를 획득할 수 있다. 그리고, 서버는 학습된 언어모델을 이용하여 콘텐츠 아이템의 시퀀스형 텍스트 데이터에 대응하는 벡터를 획득할 수 있다. 구체적으로, 서버는 시퀀스형 텍스트 데이터를 학습된 언어모델에 입력하고, 언어모델의 출력 데이터를 획득함으로써, 벡터, 즉, 임베딩 값을 결정할 수 있다. 학습된 언어모델은 도 12에서 설명한 바와 같이 학습된 언어모델일 수 있다. 다만, 유사도 계산을 위해 언어모델에서 토큰(예: 해시태그)을 추론할 때에 이용되는 헤드 레이어를 제외하고, 언어모델 자체의 마지막 은닉계층 임베딩 값을 콘텐츠의 텍스트 메타 데이터에 대한 임베딩 값으로 사용할 수 있다. 이때, 일 실시예에 따라, 서버는 풀러 출력을 이용하는 방식, 마지막 은닉 상태 값들의 평균을 이용하는 방식, 또는 마지막 은닉 상태 값들의 최대값을 이용하는 방식 중 어느 하나를 이용하여, 유사도 계산을 위한 콘텐츠의 벡터를 결정할 수 있다. 또한, 일 실시예에 따라, 서버는 유사도 계산을 위한 콘텐츠의 벡터 결정 시, 마지막 은닉 상태 값들 중 특정 피처의 위치에 해당하는 값에 가중치를 부여할 수 있다.
S1305 단계에서, 서버는 검색어와 콘텐츠 아이템 간의 유사도를 계산할 수 있다. 예를 들어, 서버는 코사인 유사도 알고리즘에 기반하여 검색어 및 콘텐츠 아이템 간의 유사도를 결정할 수 있다. 예를 들어, 서버는 검색어의 벡터 및 콘텐츠 아이템의 벡터의 유사도를 계산하고, 계산된 유사도를 검색어 및 콘텐츠 아이템의 유사도로 결정할 수 있다.
도 14는 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠를 검색하는 절차의 다른 예를 도시한다. 이하 도 14의 적어도 일부 동작들은 순차적으로 수행될 수도 있고, 병렬적으로 수행될 수도 있다. 예를 들어, 도 14의 일부 동작들은 적어도 일시적으로 동일한 시점에 수행될 수 있다. 이하에서 도 14의 적어도 일부 동작은 도 15를 참고하여 설명할 것이다. 도 15는 본 개시의 일 실시예에 따른 검색 시나리오의 예를 도시한다.
도 14를 참고하면, S1401 단계에서, 서버는 검색 이벤트를 감지한다. 검색 이벤트는 클라이언트 장치로부터 콘텐츠 검색 요청을 수신함으로써 감지될 수 있다. 예를 들어, 서버는 클라이언트 장치로부터 텍스트 데이터 형태의 검색어를 포함하는 콘텐츠 검색 요청 메시지를 수신함으로써, 검색 이벤트를 감지할 수 있다.
S1403 단계에서, 서버는 텍스트 검색을 수행한다. 다시 말해, 서버는 검색 엔진을 이용하여 텍스트 형태의 검색어에 대응되는 콘텐츠 아이템을 검색할 수 있다. 예를 들어, 서버의 프로세서(1510)는 도 15에 도시된 바와 같이, 텍스트 검색을 위해 검색 엔진(1520)으로 텍스트 형태의 검색어를 전송함으로써, 검색 엔진(1510)에 검색어에 대응되는 콘텐츠 아이템들의 검색을 요청하고, 검색 엔진(1510)으로부터 검색 결과를 수신할 수 있다. 검색 엔진(1510)은 단어 기반의 역색인(inverted index) 방식으로 콘텐츠 아이템들을 저장 및 관리함으로써, 텍스트 형태의 검색어에 포함된 단어들에 대응되는 콘텐츠 아이템들을 검색할 수 있다. 검색 엔진(1510)은 검색어에 포함된 단어들에 대응되는 콘텐츠 아이템이 존재하는 경우, 해당 콘텐츠 아이템의 정보를 포함하는 검색 결과를 프로세서(1510)로 제공할 수 있다. 검색 엔진(1510)은 검색어에 포함된 단어들에 대응되는 콘텐츠 아이템이 존재하지 않는 경우, 검색된 콘텐츠 아이템이 없음을 프로세서(1510)에 통지할 수 있다. 일 실시예에 따르면, 검색 엔진(1510)은 엘리스틱서치(elasticsearch) 기반의 분산형 검색 및 분석 엔진일 수 있다. 그러나, 본 발명의 실시예들에 따른 검색 엔진은 엘라스틱서치 기반의 엔진으로 제한되지 않는다.
S1405 단계에서, 서버는 텍스트 검색에 대한 검색 결과가 존재하는지 여부를 결정한다. 예를 들어, 서버는 도 15에 도시된 바와 같이 검색 엔진(1520)으로부터 획득된 텍스트 결과에 적어도 하나의 콘텐츠 아이템의 정보가 포함되어 있는지 여부를 결정할 수 있다.
텍스트 검색에 대한 검색 결과가 존재하는 경우, 서버는 S1413 단계에서, 검색 결과를 기반으로 검색 목록을 생성 및 제공한다. 다시 말해, 서버는 검색 결과에 포함된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 생성하고, 생성된 콘텐츠 검색 목록을 클라이언트 장치로 제공할 수 있다. 예를 들어, 서버는 텍스트 검색을 통해 검색된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 클라이언트 장치에게 전송할 수 있다.
텍스트 검색에 대한 검색 결과가 존재하지 않는 경우, 서버는 S1407 단계에서, 학습된 언어모델을 이용하여 검색어의 벡터를 결정할 수 있다. 예를 들어, 서버의 프로세서(1510)는 도 15에 도시된 바와 같이, 텍스트 검색에 대한 검색 결과가 존재하지 않는 경우, 벡터 기반의 검색 수행을 결정할 수 있다. 서버의 프로세서(1510)는 벡터 검색 엔진(1530)으로 검색어를 전송함으로써, 벡터 기반의 콘텐츠 검색을 요청할 수 있다. 이에 따라, 벡터 검색 엔진(1530)은 언어모델(1532)을 이용하여 검색어의 벡터를 결정할 수 있다. 예를 들어, 벡터 검색 엔진(1530)은 검색어를 토큰 단위로 구분한 후, 적어도 하나의 구분자를 삽입함으로써, 표 4의 입력1, 입력2, 또는 입력3과 같은 변환된 검색어를 획득할 수 있다. 그리고, 벡터 검색 엔진(1530)은 변환된 검색어를 언어모델(1532)에 입력함으로써, 검색어의 벡터를 획득할 수 있다. 여기서, 언어모델(1532)은 도 11에서 설명한 바와 같이 학습된 언어모델일 수 있다. 다만, 유사도 계산을 위해 언어모델에서 토큰(예: 해시태그)을 추론할 때에 이용되는 헤드 레이어를 제외하고, 언어모델 자체의 마지막 은닉계층 임베딩 값을 콘텐츠의 텍스트 메타 데이터에 대한 임베딩 값으로 사용할 수 있다. 이때, 일 실시예에 따라, 서버는 풀러 출력을 이용하는 방식, 마지막 은닉 상태 값들의 평균을 이용하는 방식, 또는 마지막 은닉 상태 값들의 최대값을 이용하는 방식 중 어느 하나를 이용하여, 유사도 계산을 위한 검색어의 벡터를 결정할 수 있다. 또한, 일 실시예에 따라, 서버는 유사도 계산을 위한 검색어의 벡터 결정 시, 마지막 은닉 상태 값들 중 특정 피처의 위치에 해당하는 값에 가중치를 부여할 수 있다.
S1409 단계에서, 서버는 콘텐츠 아이템별 벡터와의 유사도를 결정한다. 즉, 서버는 콘텐츠 아이템별 벡터를 획득하고, 검색어의 벡터와 콘텐츠 아이템별 벡터 간의 유사도를 결정할 수 있다. 일 실시예에 따르면, 벡터 검색 엔진(1530)은 도 15에 도시된 바와 같은 언어모델(1532)을 이용하여 콘텐츠 아이템별 벡터를 획득할 수 있다. 예를 들어, 벡터 검색 엔진(1530)은 검색 엔진(1520) 또는 검색 엔진(1520)에 연동된 DB로부터 지정된 제1 조건을 만족하는 콘텐츠 아이템들을 획득하고, 언어모델(1532)을 이용하여 콘텐츠 아이템들의 벡터를 결정할 수 있다. 여기서, 지정된 제1 조건은, 저장 시기, 저장 위치, 및/또는 분류 중 적어도 하나에 관련된 조건을 포함할 수 있다. 예를 들어, 지정된 제1 조건을 만족하는 콘텐츠 아이템들은, 서버에 저장된 모든 콘텐츠 아이템들, 지정된 기간 내에 서버에 추가 저장된 신규 콘텐츠 아이템들, 지정된 분류에 해당하는 콘텐츠 아이템들, 또는 지정된 위치에 저장된 콘텐츠 아이템들일 수 있다. 벡터 검색 엔진(1530)은 콘텐츠 아이템별로 텍스트 메타 데이터를 획득하고, 획득된 텍스트 메타 데이터에 대한 토크나이징을 수행한 후, 적어도 하나의 구분자를 삽입함으로써 콘텐츠 아이템별 시퀀스형 텍스트 데이터를 획득할 수 있다. 그리고, 벡터 검색 엔진(1530)은 학습된 언어모델(152)을 이용하여 콘텐츠 아이템별 시퀀스형 텍스트 데이터에 대응하는 벡터를 획득할 수 있다. 일 실시예에 따라, 벡터 검색 엔진(1530)은 풀러 출력을 이용하는 방식, 마지막 은닉 상태 값들의 평균을 이용하는 방식, 또는 마지막 은닉 상태 값들의 최대값을 이용하는 방식 중 어느 하나를 이용하여, 유사도 계산을 위한 콘텐츠의 벡터를 결정할 수 있다. 또한, 일 실시예에 따라, 벡터 검색 엔진(1530)은 유사도 계산을 위한 콘텐츠의 벡터 결정 시, 마지막 은닉 상태 값들 중 특정 피처의 위치에 해당하는 값에 가중치를 부여할 수 있다.
일 실시예에 따르면, 벡터 검색 엔진(1530)은 벡터 검색 엔진(1530) 내 저장소, 벡터 검색 엔진(1530)에 연동된 DB, 검색 엔진(1520), 또는 검색 엔진(1520)에 연동된 DB로부터 기 저장된 콘텐츠 아이템들의 벡터를 획득할 수 있다. 벡터 검색 엔진(1530)은 유사도 계산 알고리즘을 이용하여 검색어의 벡터와 콘텐츠 아이템별 벡터 간의 유사도를 결정할 수 있다. 여기서, 검색어의 벡터와 콘텐츠 아이템별 벡터 간의 유사도는 검색어와 콘텐츠 아이템 간의 유사도로 결정될 수 있다.
S1411에서, 서버는 유사도에 기반하여 검색 목록을 생성 및 제공할 수 있다. 즉, 서버는 검색어와 콘텐츠 아이템 간의 유사도를 기반으로, 검색어에 유사한 적어도 하나의 콘텐츠 아이템을 결정하고, 결정된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 생성할 수 있다. 예를 들어, 도 15에 도시된 바와 같이, 벡터 검색 엔진(1530)은 지정된 제1 조건을 만족하는 콘텐츠 아이템들 중 검색어와의 유사도의 내림차순으로 지정된 개수의 콘텐츠 아이템들 또는 임계치 이상의 유사도를 가지는 콘텐츠 아이템들을 선택할 수 있다. 그리고, 벡터 검색 엔진(1530)은 선택된 콘텐츠 아이템들의 정보를 포함하는 벡터 기반의 검색 결과를 프로세서(1510)로 제공할 수 있다. 프로세서(1530)는 벡터 기반의 검색 결과에 포함된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 생성하고, 생성된 콘텐츠 검색 목록을 클라이언트 장치에게 송신할 수 있다. 이때, 구체적인 콘텐츠 검색 목록의 형식은 콘텐츠 검색 결과를 제공하는 환경, 서비스 등에 따라 달라질 수 있다.
상술한 도 14 및 도 15에서, 서버는 검색어에 대한 텍스트 검색을 수행하고, 텍스트 검색 결과가 존재하지 아니한 경우, 즉, 텍스트 검색을 수행하였으나 적어도 하나의 콘텐츠 아이템이 검색되지 아니한 경우에 벡터 기반의 검색을 수행하였다. 그러나, 서버는 검색어에 대한 텍스트 검색 결과가 지정된 검색 품질을 만족하지 아니하는 경우에도 벡터 기반의 검색을 수행할 수 있을 것이다. 지정된 검색 품질은 검색되는 콘텐츠 아이템의 개수에 대한 조건, 검색되는 콘텐츠 아이템의 텍스트 매칭 스코어에 대한 조건, 또는 검색되는 콘텐츠 아이템에 대한 사용자 검색 횟수 별 실제 클릭 비율에 대한 조건을 포함할 수 있다. 예를 들어, 서버는 검색어에 대한 텍스트 검색 결과로 지정된 개수 이하의 콘텐츠 아이템이 검색된 경우에도 벡터 기반의 검색을 수행할 수 있을 것이다. 예를 들어, 서버는 검색어에 대한 텍스트 검색을 통해 획득된 콘텐츠 아이템의 개수가 지정된 개수보다 작거나 같은 경우, 언어모델을 이용한 벡터 기반의 검색을 수행하여 적어도 하나의 콘텐츠 아이템을 추가 검색할 수 있다. 다른 예로, 서버는 텍스트 검색에 의해 검색된 콘텐츠 아이템의 텍스트 매칭 스코어가 지정된 스코어 이하인 경우, 벡터 기반의 검색을 수행하여 적어도 하나의 콘텐츠 아이템을 추가 검색할 수 있다. 텍스트 매칭 스코어는 검색어와 검색된 콘텐츠 아이템 간의 유사성을 나타내는 스코어를 의미하며, TF-IDF(Term Frequency-Inverse Document Frequency) 또는 BM25(Best Matching 25)를 기반으로 계산될 수 있다. 또 다른 예로, 서버는 검색되는 콘텐츠 아이템에 대한 사용자의 검색 횟수 별 실제 클릭 비율이 지정된 값 이하인 경우, 벡터 기반의 검색을 수행할 수 있다. 사용자의 검색 횟수 별 실제 클릭 비율은, 사용자의 검색 이력 및/또는 검색 결과에 대한 사용자 피드백 이력에 기반하여 계산될 수 있다. 예를 들어, 사용자의 검색 횟수 별 실제 클릭 비율은, 검색된 콘텐츠 아이템에 대한 정보가 이전에 동일 검색어 또는 유사하거나 다른 검색어에 대한 결과로서 클라이언트 장치에게 제공된 후, 사용자가 해당 콘텐츠 아이템을 클릭(또는 선택)하였는지 여부를 나타내는 클라이언트 장치로부터의 피드백 이력을 기반으로 계산될 수 있다. 이때, 서버는 텍스트 검색을 통해 획득된 콘텐츠 아이템의 정보 및 벡터 기반의 검색을 통해 추가 획득된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 생성할 수 있다.
일 실시예에 따르면, 서버는 검색어의 텍스트 검색에 대한 검색 결과가 존재하지 않는 경우, 해당 검색어를 NR(No result) 검색어로 저장할 수 있다. 또한, 서버는 클라이언트 장치에게 검색어에 대한 콘텐츠 검색 목록을 전송한 후, 콘텐츠 검색 목록 내 적어도 하나의 콘텐츠 아이템이 사용자에 의해 클릭(또는 선택)되었는지 여부를 클라이언트 장치로부터 피드백 받을 수 있다. 콘텐츠 검색 목록 내 적어도 하나의 콘텐츠 아이템이 클릭되지 아니한 경우, 서버는 해당 콘텐츠 검색 목록에 대응되는 검색어를 NR 검색어로 저장할 수 있다. NR 검색어는 사용자별, 및/또는 클라이언트 장치별로 저장될 수 있다.
일 실시예에 따르면, 서버는 NR 검색어가 저장된 상태에서 신규 콘텐츠 아이템이 감지될 시, NR 검색어와 신규 콘텐츠 아이템 간의 유사도를 계산할 수 있다. NR 검색어와 콘텐츠 아이템 간의 유사도는, 학습된 언어모델을 이용하여 획득되는 NR 검색어의 벡터 및 신규 콘텐츠 아이템의 벡터를 기반으로 계산될 수 있다. 서버는 계산된 유사도가 지정된 임계값 이상인 경우, 신규 콘텐츠 아이템을 추천하는 추천 알림 메시지를 해당 NR 검색어의 사용자에 대응되는 클라이언트 장치에게 전송할 수 있다. 이때, 추천 알림 메시지는 푸시 메시지 형태로 제공될 수 있다. 예를 들어, 서버는 신규 콘텐츠 아이템을 NR 검색어의 추천 콘텐츠 아이템으로 결정하고, 클라이언트 장치에게 이전에 사용자가 검색한 검색어에 관련된 신규 콘텐츠 아이템이 존재함을 알리는 푸시 메시지를 전송할 수 있다.
일 실시예에 따르면, 서버는 NR 검색어에 대한 지정된 삭제 조건이 만족되는 경우, NR 검색어를 서버에서 삭제할 수 있다. 예를 들어, 서버는 제1 NR 검색어에 관련된 추천 알림 메시지를 클라이언트 장치에게 전송한 후, 클라이언트 장치로부터 제1 NR 검색어에 관련된 추천 알림 메시지 내 신규 콘텐츠 아이템이 사용자에 의해 클릭 또는 선택되었음을 나타내는 피드백 메시지를 수신한 경우, 제1 NR 검색어를 서버에서 삭제할 수 있다. 다른 예를 들어, 서버는 제2 NR 검색어에 관련된 추천 알림 메시지가 클라이언트 장치에게 전송되는 동작이 지정된 횟수만큼 수행되면, 제2 NR 검색어를 서버에서 삭제할 수 있다. 또 다른 예를 들어, 서버는 제3 NR 검색어에 관련된 추천 알림 메시지가 전송되었는지 여부에 관련없이, 제3 NR 검색어의 저장 기간이 지정된 기간을 초과한 경우, 제3 NR 검색어를 서버에서 삭제할 수 있다.
본 개시의 다양한 실시예들에 따르면, 서버는 파이썬 모듈 및/또는 엘리스틱서치 모듈을 이용하여 검색어와 콘텐츠의 유사도를 계산할 수 있다. 예를 들어, 검색어와 콘텐츠의 유사도는 도 16에 도시된 바와 같이 파이썬 모듈에서 계산되거나, 도 17에 도시된 바와 같이 엘리스틱서치 모듈에서 계산될 수 있다.
도 16은 본 개시의 일 실시예에 따른 파이썬 모듈을 기반으로 검색을 수행하는 예를 도시한다. 도 16을 참고하면, 검색 클라이언트(1610)는 REST(Representational State Transfer) API(Application Programming Interface)(1620)를 통해 시맨틱 검색어, 또는 시맨틱 검색어를 포함하는 쿼리를 언어모델(1630)에게 전송한다. 예를 들어, 시맨틱 검색어는 “긴장감 넘치는 영화”와 같이, 적어도 하나의 키워드를 포함하는 자연어일 수 있다. 시맨틱 검색어는 실시간으로 처리되어야 하므로, REST API(1620)를 거쳐 파이썬 모듈의 언어모델(1630)로 제공될 수 있다. REST API(1620)는 REST 아키텍처 스타일의 제약 조건을 준수하고 RESTful 웹 서비스와 상호 작용할 수 있도록 하는 애플리케이션 프로그래밍 인터페이스를 의미한다.
언어모델(1630)은 REST API(1620)를 통해 수신된 시맨틱 검색어의 벡터를 계산하고, 시맨틱 검색어의 벡터와 콘텐츠 벡터 간의 유사도를 계산한다. 언어모델(1630)은 자연어를 처리하는 CBF 모델로, 예를 들어, RoBERTa일 수 있다. 언어모델(1630)은 콘텐츠의 텍스트 메타 데이터를 기반으로 학습될 수 있다. 일 실시예에 따르면, 언어모델(1630)은 학습에 이용된 콘텐츠 아이템들의 벡터 값들을 DB(1640)에 저장할 수 있다. 일 실시예에 따르면, 언어모델(1630)은 지정된 이벤트 발생 시 콘텐츠 아이템들의 벡터 값들을 계산하고, 계산된 콘텐츠 아이템들의 벡터 값들을 DB(1640)에 저장할 수 있다. 언어모델(1630)은 시맨틱 검색어의 벡터와 콘텐츠 벡터 간의 유사도 계산 시, DB(1640)에 저장된 콘텐츠 아이템별 벡터 값들을 이용할 수 있다.
언어모델(1630)은 시맨틱 검색어와 콘텐츠 아이템들 간의 유사도에 기초하여 적어도 하나의 콘텐츠 아이템들을 선택하고, 선택된 콘텐츠 아이템들의 정보를 포함하는 콘텐츠 검색 목록을 REST API(1620)를 통해 검색 클라이언트(1610)에게 제공할 수 있다. 여기서, 콘텐츠 아이템들의 정보는, 콘텐츠 아이템 식별 정보, 또는 검색어와의 유사도 정보 중 적어도 하나를 포함할 수 있다.
일 실시예에 따르면, 파이썬 모듈은 시맨틱 검색어와 콘텐츠 아이템들 간의 유사도에 기초하여 적어도 하나의 콘텐츠 아이템들을 선택한 후, 적어도 하나의 선택된 콘텐츠 아이템에 대한 필터링을 수행하는 후처리 로직을 수행할 수 있다. 예를 들어, 파이썬 모듈은 적어도 하나의 선택된 콘텐츠 아이템 중 비인기 콘텐츠 아이템 또는 사용자 비선호 콘텐츠 아이템을 필터링함으로써, 비인기 콘텐츠 아이템 또는 사용자 비선호 콘텐츠 아이템이 제외된 콘텐츠 검색 목록을 생성할 수 있다.
도 16에서 설명한 바와 같이, 파이썬 모듈에서 검색어와 콘텐츠의 유사도를 계산하는 방식은, 파이썬 모듈이 벡터 기반 검색을 위한 모든 동작을 수행하므로, 관리가 용이한 장점을 가진다.
도 17은 본 개시의 일 실시예에 따른 엘라스틱 검색 엔진을 기반으로 검색을 수행하는 예를 도시한다. 도 17을 참고하면, 검색 클라이언트(1710)는 시맨틱 검색어, 또는 시맨틱 검색어를 포함하는 쿼리를 엘라스틱서치(1720)에게 전송한다. 예를 들어, 시맨틱 검색어는 “긴장감 넘치는 영화”일 수 있다. 엘라스틱서치(1720)는 REST API(1730)를 통해 시맨틱 검색어, 또는 시맨틱 검색어를 포함하는 쿼리를 파이썬 모듈의 언어모델(1740)에게 전송한다.
언어모델(1740)은 REST API(1730)를 통해 수신된 시맨틱 검색어의 벡터를 계산하고, 시맨틱 검색어의 벡터를 REST API(1730)를 통해 엘라스틱서치(1720)에게 전송한다. 언어모델(1740)은 자연어를 처리하는 CBF 모델로, 예를 들어, RoBERTa일 수 있다. 언어모델(1740)은 콘텐츠의 텍스트 메타 데이터를 기반으로 학습될 수 있다.
엘라스틱서치(1720)는 시맨틱 검색어의 벡터와 콘텐츠 벡터 간의 유사도를 계산한다. 엘라스틱서치(1720)는 DB(1750)에 기 저장된 콘텐츠 아이템별 벡터 값들을 획득하고, 획득된 콘텐츠 아이템별 벡터 값들을 이용하여 시맨틱 검색어의 벡터와 콘텐츠 벡터 간의 유사도를 계산할 수 있다. 예를 들어, 엘라스틱서치(1720)는 REST API(1730)를 통해 언어모델(1730)로부터 시맨틱 검색어에 대한 벡터 값을 획득하기 이전에 언어모델(1740)과 싱크(sync)가 맞는 콘텐츠 아이템별 벡터를 DB(1750)로부터 획득해야 한다. 엘라스틱서치(1720)는 REST API(1730)를 통해 획득되는 시맨틱 검색어의 벡터와 미리 획득한 콘텐츠 아이템별 벡터들 간의 유사도를 계산할 수 있다. DB(1750)는 언어모델(1630)로부터 콘텐츠 아이템들의 벡터 값들을 획득하여 저장할 수 있다.
엘라스틱서치(1720)는 시맨틱 검색어와 콘텐츠 아이템들 간의 유사도에 기초하여 적어도 하나의 콘텐츠 아이템들을 선택하고, 선택된 콘텐츠 아이템들의 정보를 포함하는 콘텐츠 검색 목록을 검색 클라이언트(1610)에게 제공할 수 있다. 여기서, 콘텐츠 아이템들의 정보는, 콘텐츠 아이템 식별 정보, 또는 검색어와의 유사도 정보 중 적어도 하나를 포함할 수 있다. 일 실시예에 따르면, 엘라스틱서치(1720)는 시맨틱 검색어와 콘텐츠 아이템들 간의 유사도에 기초하여 적어도 하나의 콘텐츠 아이템들을 선택한 후, 적어도 하나의 선택된 콘텐츠 아이템에 대한 필터링을 수행하는 후처리 로직을 수행할 수 있다. 예를 들어, 엘라스틱서치(1720)는 적어도 하나의 선택된 콘텐츠 아이템 중 비인기 콘텐츠 아이템 또는 사용자 비선호 콘텐츠 아이템을 필터링함으로써, 비인기 콘텐츠 아이템 또는 사용자 비선호 콘텐츠 아이템이 제외된 콘텐츠 검색 목록을 생성할 수 있다. 다른 예로, 엘라스틱서치(1720)는 보유 중인 다양한 콘텐츠 아이템별 피처를 활용하여 적어도 하나의 선택된 콘텐츠 아이템에 대한 필터링을 수행할 수 있다.
도 17에서 설명한 바와 같이, 엘라스틱서치(1720)에서 검색어의 벡터와 콘텐츠의 유사도를 계산하는 방식은, 높은 서비스 성능(예: 레이턴시(latency), 또는 쓰루풋(throughput))을 얻을 수 있는 장점을 가진다.
도 16 내지 도 17의 엘리스틱서치는 검색 엔진 모듈의 일 예에 불과하며, 본 개시의 실시예들은 이에 제한되지 않는다. 예를 들어, 엘리스틱서치 대신 역색인 구조에서 벡터 검색에 필요한 기능(예: 코사인 유사도 검색 기능 등)을 지원하는 다양한 검색 엔진 모듈(예: Lucene, Solr 등)이 이용될 수 있음은 당업자에게 자명할 것이다. 또한, 도 16 내지 도 17의 REST API는 API의 일 예에 불과하며, 본 개시의 실시예들은 이에 제한되지 않는다. 예를 들어, REST API 대신 SOAP(Simple Object Access Protocol) API와 같은 다른 API가 이용될 수 있음은 당업자에게 자명할 것이다.
상술한 설명에서, 검색어의 벡터는 서버에서 언어모델을 통해 실시간으로 획득하였다. 그러나, 다양한 실시예들에 따라 검색어의 벡터는 언어모델을 통해 미리 계산된 후 서버에 저장될 수 있다. 예를 들어, 서버는 지정된 제2 조건을 만족하는 검색어들의 벡터 값들을 DB에 저장할 수 있다. 지정된 제2 조건은, 검색 요청 횟수, 및/또는 검색 빈도에 대한 조건을 포함할 수 있다. 예를 들어, 서버는 제1 검색어에 대한 검색 요청 횟수가 지정된 횟수 이상 발생된 경우, 제1 검색어의 벡터 값을 DB에 저장할 수 있다. 다른 예로, 서버는 제2 검색어에 대한 검색 요청 횟수가 지정된 기간 내에 지정된 횟수 이상 발생된 경우, 제2 검색어의 벡터 값을 DB에 저장할 수 있다. 이 경우, 서버는 DB에 저장된 검색어의 벡터를 이용하여 콘텐츠 검색 목록을 생성할 수 있다.
도 18a는 본 개시의 실시예에 적용 가능한 트랜스포머의 구조의 예를 도시하고, 도 18b는 본 개시의 실시예에 적용 가능한 트랜스포머의 인코더 및 디코더 블록들의 상세 구조의 예를 도시한다.
도 18a 및 도 18b를 참고하면, 트랜스포머(1800)는 N개의 인코더 블록들(1810-1 내지 1810-N), 및 N개의 디코더 블록들(1820-1 내지 1820-N)을 포함할 수 있다. N개의 인코더 블록들(1810-1 내지 1810-N) 각각은 셀프 어탠션(self-attention) 블록(1811) 및 피드 포워드(feed forward) 블록(또는 뉴럴 네트워크)(1813)을 포함할 수 있다. N개의 디코더 블록들(1820-1 내지 1820-N) 각각은 셀프-어탠션 블록(1821), 인코더-디코더 어탠션 블록(1823), 및 피드 포워드 블록(1825)을 포함할 수 있다.
트랜스포머(1800)의 입력은 토큰화되어 임베딩되고, 포지셔널 인코딩(positional encoding) 벡터와 더해진 후, N개의 인코더 블록들(1810-1 내지 1810-N) 중 가장 하단에 위치한 제1 인코더 블록(1810-1)에 입력될 수 있다. N개의 인코더 블록들(1810-1 내지 1810-N) 각각의 셀프-어탠션 블록(1811)은 입력되는 여러 단어들 중 집중할 단어를 결정할 수 있다. 셀프-어탠션 블록(1811)은 입력되는 임베딩 벡터에 세 개의 학습 가능한 행렬들을 각각 곱하여, 쿼리 벡터, 키 벡터, 및 밸류 벡터를 생성할 수 있다. 셀프-어탠션 블록(1811)은 복수의 어탠션 헤드를 가지고, 복수의 쿼리 벡터, 키 벡터, 및 밸류 벡터를 이용하여 각 목적에 맞게 각 벡터들을 각각 다른 표현 공간으로 나타내는 멀티-헤드(multi-headed) 어탠션 블록일 수 있다. 셀프- 어탠션 블록(1811)의 출력은 피드 포워드 블록(1813)의 신경망을 통과하여 다음 인코더 블록(예: 제2 인코더 블록(1810-2))으로 입력될 수 있다.
N개의 인코더 블록들(1810-1 내지 1810-N) 중 가장 상단에 위치한 제N 인코더 블록(1810-N)의 출력은 어탠션 벡터들인 키 벡터와 밸류 벡터일 수 있으며, 이들은 N개의 디코더 블록들(1820-1 내지 1820-N) 각각의 인코더-디코더 어탠션 블록(1823)으로 입력될 수 있다.
트랜스포머(1800)의 이전 출력은 N개의 디코더 블록들(1820-1 내지 1820-N) 중 가장 하단에 위치한 제1 디코더 블록(1820-1)의 입력으로 이용될 수 있다. 예를 들어, 트랜스포머(1800)의 이전의 출력은 토큰화되어 임베딩되고, 포지셔널 인코딩 벡터와 더해진 후에 제1 디코더 블록(1820-1)에 입력될 수 있다.
N개의 디코더 블록들(1820-1 내지 1820-N) 각각의 셀프-어탠션 블록(1821)은 N개의 인코더 블록들(1810-1 내지 1810-N) 각각의 셀프-어탠션 블록(1811)과 유사하다. 그러나, N개의 디코더 블록들(1820-1 내지 1820-N) 각각의 셀프-어탠션 블록(1821)은 출력 시퀀스 내에서 현재 위치의 이전 위치들에 대해서만 어탠션할 수 있도록 마스킹을 수행한다는 점에서 N개의 인코더 블록들(1810-1 내지 1810-N) 각각의 셀프-어탠션 블록(1811)과 차이를 가진다.
N개의 디코더 블록들(1820-1 내지 1820-N) 각각의 인코더-디코더 어탠션 블록(1823)은 셀프-어탠션 블록(1821)에서 출력되는 쿼리 벡터와 제N 인코더 블록(1810-N)으로부터 출력되는 키 벡터 및 밸류 벡터를 입력으로 하여 출력을 생성할 수 있다.
N개의 디코더 블록들(1820-1 내지 1820-N) 중 가장 상단에 위치한 제N 디코더 블록(1820-N)의 출력 벡터는, 선형 계층(linear layer)(1830) 및 소프트맥스 계층(softmax layer)(1840)에 입력될 수 있다. 선형 계층(1830) 및 소프트맥스 계층(1840)은 제N 디코더 블록(1820-N)의 출력 벡터를 하나의 단어로 변경할 수 있다. 선형 계층(1830)은 완전 연결된(fully-connected) 신경망으로 구성되며, 제N 디코더 블록(1820-N)의 출력 벡터를 더 큰 사이즈의 벡터인 로짓(logits) 벡터로 투영시킬 수 있다. 투영된 로짓 벡터의 각 셀은 대응되는 각 단어에 대한 점수를 가질 수 있다. 소프트맥스 계층(1840)은 각 셀의 점수들을 확률로 변환할 수 있다. 각 셀의 변환된 확률 값들은 모두 양수 값을 가지며, 각 확률 값들의 합은 1이 될 수 있다. 이때, 가장 높은 확률 값을 가지는 셀에 해당하는 단어가 해당 소프트맥스 계층(1840)의 최종 결과물로서 출력될 수 있다. 소프트맥스 계층(1840)의 출력은 다시 임베딩되어 포지셔널 인코딩 벡터와 더해진 후, 가장 하단에 위치한 제1 디코더 블록(1820-1)으로 입력될 수 있다.
N개의 인코더 블록들(1810-1 내지 1810-N) 및 N개의 디코더 블록들(1820-1 내지 1820-N) 각각에 포함되는 서브 블록들은 잔차 연결(residual connection) 방식으로 연결될 수 있으며, 각 서브 블록들 사이에는 계층 정규화(layer-normalization)(또는 Add & normalize) 블록이 포함될 수 있다. 계층 정규화 블록은, 셀프 어탠션 블록(1811, 1821)의 입력과 출력을 합하여 한 계층에서 과도하게 데이터가 변경되는 것을 방지할 수 있다.
트랜스포머(1800)는 문장 내 단어들의 관계를 추적하여 문장의 맥락과 의미를 학습하는 신경망으로, 라벨링된 데이터 세트 없이 요소들 사이의 패턴을 수학적으로 찾아낼 수 있다. 따라서, 트랜스포머(1800)는 데이터 세트를 생성하는 과정이 필요 없고, 병렬 프로세싱에 적합하기 때문에 빠른 속도를 가질 수 있다.
RNN(Recurrent Neural Network)은 단어의 위치에 따라 단어를 순차적으로 입력받아 처리하는 특성으로 인해 각 단어의 위치 정보(position information)를 가질 수 있어 자연어 처리 분야에서 많이 활용되었다. 그러나, RNN은 병렬 처리가 어렵고, 장기 의존성(long-term dependency)을 갖는 문제점이 있다. 반면, 트랜스포머는 RNN 대신 어탠션 메커니즘을 이용하여 입/출력 간 디팬던시를 포착할 수 있다. 또한, 트랜스포머는 학습 시 인코더 블록에서 각 단어의 위치(position)에 어탠션(attention)을 적용, 즉, 쿼리(query)와 가장 밀접한 연관성을 가지는 값(value)을 강조하고, 디코더 블록에서 마스킹(masking) 기법을 이용하므로, 병렬 처리가 가능하다.
트랜스포머의 인코더/디코더 입/출력의 크기, 인코더/디코더의 개수, 어탠션 헤드의 개수, 및/또는 피드 포워드 신경망의 은닉층의 크기 등은 하이퍼 파라미터로 사용자에 의해 변경될 수 있다.
BERT 모델은 상술한 바와 같은 트랜스포머 기반의 언어 모델로, 트랜스포머의 일부 구성요소를 치환, 또는 삭제하여 사용할 수 있다. 도 19는 본 개시의 실시예에 적용 가능한 BERT 모델의 구조의 예를 도시한다. 예를 들어, BERT 모델(1900)은 도 19에 도시된 바와 같이, 트랜스포머에서 디코더 블록들(1820-1 내지 1820-N)을 제외하고, 인코더 블록들(1810-1 내지 1810-N)을 이용하는 모델일 수 있다.
BERT 모델에서, 입력 문장의 시작 위치에는 [CLS] 토큰이 위치할 수 있고, 문장의 끝 위치에는 문장의 구분을 위한 [SEP] 토큰이 이용될 수 있다. BERT 연산을 거친 후의 출력 임베딩은 문장의 문맥이 모두 고려된 임베딩이 될 수 있다. 예를 들어, [CLS]는 BERT 입력 시에 임베딩 층을 지난 단순한 임베딩 벡터지만, BERT 모델을 통과하면 문장 내 모든 단어 벡터들이 고려된 문맥 정보를 가진 벡터가 될 수 있다.
BERT 모델 등의 트랜스포머 기반 모델을 이용한 자연어 처리는 2단계로 진행될 수 있다. 2단계는, 거대 인코더가 입력 문장들을 임베딩하여 언어를 모델링하는 사전 훈련(Pre-training)하는 단계, 및 사전 훈련에 의해 학습된 모델을 미세 조정(fine-tuning)하여 여러 자연어 처리 과제(Task)를 수행하는 단계를 포함할 수 있다.
BERT 모델은 사전 학습(pre-trained) 모델로서, 특정 과제(task)를 수행하기 전에 사전 훈련 임베딩을 실시하므로 기존의 임베딩 기술보다 과제의 성능을 더욱 향상시킬 수 있는 모델로 관심받고 있다. BERT 모델을 적용한 모델링 과정을 살펴보면, 사전 학습(pre-trained)은 비지도 학습(unsupervised learning) 방식으로 진행되고 대량의 코퍼스(말뭉치)를 인코더가 임베딩하고, 이를 트렌스퍼(transfer)하여 미세 조정(fine-tuning)을 통해 목적에 맞는 학습을 수행함으로써 과제를 수행할 수 있다. BERT 모델의 다른 특징은 양방향 모델을 적용하여 문장의 앞과 뒤의 문맥을 고려하는 것으로, 이전보다 더 높은 정확도를 나타낼 수 있다는 점이다.
상술한 바와 같이, 본 개시의 실시예에 따라 학습된 언어모델은, 해시태그 정보 뿐만 아니라 다른 종류의 피처의 의미정보 및/또는 문맥정보를 복합적으로 고려하여 콘텐츠의 벡터를 획득하고, 이를 기반으로 검색어와 콘텐츠 간의 유사도를 계산한다. 따라서, 본 개시의 실시예에 따라 언어모델에 기반하여 콘텐츠 간의 유사도를 판단하는 방식은 단순히 유사한 해시태그를 필터링하는 것과는 상이하다 할 수 있다.
본 발명의 예시적인 방법들은 설명의 명확성을 위해서 동작의 시리즈로 표현되어 있지만, 이는 단계가 수행되는 순서를 제한하기 위한 것은 아니며, 필요한 경우에는 각각의 단계가 동시에 또는 상이한 순서로 수행될 수도 있다. 본 발명에 따른 방법을 구현하기 위해서, 예시하는 단계에 추가적으로 다른 단계를 포함하거나, 일부의 단계를 제외하고 나머지 단계를 포함하거나, 또는 일부의 단계를 제외하고 추가적인 다른 단계를 포함할 수도 있다.
본 발명의 다양한 실시예는 모든 가능한 조합을 나열한 것이 아니고 본 발명의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다.
또한, 본 발명의 다양한 실시예는 하드웨어, 펌웨어(firmware), 소프트웨어, 또는 그들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 범용 프로세서(general processor), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
본 발명의 범위는 다양한 실시예의 방법에 따른 동작이 장치 또는 컴퓨터 상에서 실행되도록 하는 소프트웨어 또는 머신-실행가능한 명령들(예를 들어, 운영체제, 애플리케이션, 펌웨어(firmware), 프로그램 등), 및 이러한 소프트웨어 또는 명령 등이 저장되어 장치 또는 컴퓨터 상에서 실행 가능한 비-일시적 컴퓨터-판독가능 매체(non-transitory computer-readable medium)를 포함한다.

Claims (15)

  1. 콘텐츠 스트리밍 시스템에서 서버의 동작 방법에 있어서,
    검색어를 획득하는 단계;
    콘텐츠 아이템들의 메타 데이터에 포함되는 해시태그 정보를 기반으로 학습된 언어모델을 이용하여, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계;
    상기 검색어에 대응되는 제1 벡터와 제1 콘텐츠 아이템의 제2 벡터를 기반으로 상기 검색어와 상기 제1 콘텐츠 아이템 간의 유사도를 결정하는 단계; 및
    상기 유사도에 기반하여 선택된 상기 제1 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 제공하는 단계를 포함하며,
    상기 제1 콘텐츠 아이템의 상기 제2 벡터는 상기 해시태그 정보를 기반으로 학습된 언어모델을 통해 획득되는 방법.
  2. 청구항 1에 있어서,
    상기 언어모델은, MLM(masked language model)에 기반하여 상기 콘텐츠의 해시태그를 예측하는 훈련을 통해 학습되는 방법.
  3. 청구항 1에 있어서,
    상기 제1 콘텐츠 아이템의 제2 벡터는, 상기 제1 콘텐츠 아이템의 제1 메타 데이터에 포함되는 정보를 포함하는 시퀀스형 텍스트 데이터를 상기 언어모델에 입력하여 획득되는 방법.
  4. 청구항 1에 있어서,
    상기 검색어에 대응하는 제1 벡터를 결정하는 단계는,
    상기 검색어를 토큰 단위로 구분하는 단계;
    상기 토큰 단위로 구분된 검색어에 적어도 하나의 구분자를 삽입하여 변환된 검색어를 획득하는 단계; 및
    상기 변환된 검색어를 상기 언어모델에 입력하여 상기 제1 벡터를 획득하는 단계를 포함하는 방법.

  5. 청구항 4에 있어서,
    상기 변환된 검색어는, 장르를 나타내는 스페셜 토큰, 및 마스킹된 토큰을 포함하는 방법.
  6. 청구항 1에 있어서,
    상기 콘텐츠 아이템들의 내용을 설명하는 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환하는 단계;
    상기 시퀀스형 텍스트 데이터의 해시태그 영역에 위치한 해시태그 토큰을 마스킹(making)하는 단계; 및
    상기 마스킹된 해시태그 토큰을 예측하도록 상기 언어모델에 대한 훈련을 수행하는 단계를 더 포함하며,
    상기 텍스트 메타 데이터는, 제목, 시놉시스, 복합 장르, 감독, 배우, 또는 해시태그 정보 중 적어도 하나를 포함하는 방법.
  7. 청구항 6에 있어서,
    상기 텍스트 메타 데이터를 상기 시퀀스형 텍스트 데이터로 변환하는 단계는,
    상기 텍스트 메타 데이터를 복수의 토큰들로 구분하는 단계; 및
    상기 토큰들 사이에 적어도 하나의 구분자를 삽입함으로써 상기 시퀀스형 텍스트 데이터를 생성하는 단계를 포함하며,
    상기 적어도 하나의 구분자는, 서로 다른 종류의 피처들을 구분하기 위한 분리 토큰 및 특정 피처를 나타내기 위해 특정 피처의 앞 및 뒤에 삽입되는 스페셜 토큰 중 적어도 하나를 포함하는 방법.
  8. 청구항 6에 있어서,
    상기 해시태그 토큰을 마스킹하는 단계는,
    상기 해시태그 영역에 위치한 복수의 해시태그 토큰들 중에서 '#'으로 시작되지 아니하는 해시태그 토큰을 선택하는 단계; 및
    상기 선택된 해시태그 토큰을 마스킹하는 단계를 포함하는 방법.
  9. 청구항 6에 있어서,
    상기 훈련은, 예측 모델을 이용하여 수행되며,
    상기 예측 모델은, 마스킹된 해시태그 토큰을 포함하는 시퀀스형 텍스트 데이터를 입력으로 취하고, 상기 시퀀스형 텍스트 데이터에 대응되는 벡터 값들을 출력하는 상기 언어모델, 및 상기 언어모델에서 출력되는 적어도 하나의 벡터 값에 대응되는 적어도 하나의 입력 토큰을 예측하도록 구성된 MLM(masked language model) 헤드 레이어를 포함하는 방법.

  10. 청구항 1에 있어서,
    상기 제1 벡터 및 상기 제2 벡터 각각은, 상기 학습된 언어모델의 마지막 은닉층의 출력 벡터 값들 중 지정된 피처(feature)의 위치에 해당하는 벡터 값에 가중치를 부여함으로써 결정되는 방법.
  11. 청구항 1에 있어서,
    상기 검색어에 대응되는 제1 벡터와 복수의 콘텐츠 아이템들 각각의 벡터를 기반으로, 상기 검색어와 상기 복수의 콘텐츠 아이템들 간의 유사도를 결정하는 단계를 더 포함하며,
    상기 콘텐츠 검색 목록을 제공하는 단계는,
    상기 제1 콘텐츠 아이템 및 상기 복수의 콘텐츠 아이템들 중 상기 검색어와의 유사도에 대한 내림차순으로 상기 제1 콘텐츠 아이템을 포함하는 둘 이상의 콘텐츠 아이템을 선택하는 단계; 및
    상기 선택된 둘 이상의 콘텐츠 아이템의 정보를 포함하는 상기 콘텐츠 검색 목록을 제공하는 단계를 포함하는 방법.
  12. 청구항 1에 있어서,
    상기 검색어에 대응하는 제1 벡터를 결정하기 이전에, 상기 검색어를 기반으로 텍스트 검색을 수행하는 단계를 더 포함하며,
    상기 텍스트 검색을 통해 획득된 결과가 지정된 조건을 만족하지 않는 경우, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계를 수행하는 방법.
  13. 청구항 12에 있어서,
    상기 지정된 조건은, 적어도 하나의 콘텐츠 아이템이 검색되는지 여부, 또는 검색된 콘텐츠 아이템의 개수 중 적어도 하나에 대한 조건인 방법.
  14. 콘텐츠 스트리밍 시스템에서 서버에 있어서,
    적어도 하나의 클라이언트 장치와 신호를 송수신하는 통신부; 및
    상기 통신부와 전기적으로 연결된 프로세서를 포함하며,
    상기 프로세서는,
    검색어를 획득하고,
    콘텐츠 아이템들의 메타 데이터에 포함되는 해시태그 정보를 기반으로 학습된 언어모델을 이용하여, 상기 검색어에 대응하는 제1 벡터를 결정하고,
    상기 검색어에 대응되는 제1 벡터와 제1 콘텐츠 아이템의 제2 벡터를 기반으로 상기 검색어와 상기 제1 콘텐츠 아이템 간의 유사도를 결정하고,
    상기 유사도에 기반하여 선택된 상기 제1 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 제공하도록 제어하며,
    상기 제1 콘텐츠 아이템의 상기 제2 벡터는 상기 해시태그 정보를 기반으로 학습된 언어모델을 통해 획득되는 서버.
  15. 프로세서에 의해 동작되면 제1항 내지 제13항 중의 어느 한 항에 따른 방법을 실행하기 위해 기록 매체에 저장된 프로그램.
KR1020230046976A 2023-04-10 2023-04-10 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치 KR102605100B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230046976A KR102605100B1 (ko) 2023-04-10 2023-04-10 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230046976A KR102605100B1 (ko) 2023-04-10 2023-04-10 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치

Publications (1)

Publication Number Publication Date
KR102605100B1 true KR102605100B1 (ko) 2023-11-23

Family

ID=88974410

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230046976A KR102605100B1 (ko) 2023-04-10 2023-04-10 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102605100B1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200092465A (ko) * 2019-01-07 2020-08-04 삼성전자주식회사 추천 컨텐츠 리스트 제공 방법 및 그에 따른 전자 장치
KR20200144417A (ko) * 2019-06-18 2020-12-29 빅펄 주식회사 멀티모달 콘텐츠 분석 시스템 및 그 방법
KR20210121387A (ko) * 2020-03-30 2021-10-08 주식회사 메디치소프트 콘텐츠에서 키워드를 추출하고, 추출된 키워드를 이용하여 콘텐츠를 추천하는 방법, 장치 및 프로그램
KR20220039075A (ko) * 2020-09-21 2022-03-29 삼성전자주식회사 전자 장치, 컨텐츠 검색 시스템 및 검색 방법
KR20220140226A (ko) * 2021-04-09 2022-10-18 주식회사 닐슨 콘텐츠 결정 방법, 장치 및 컴퓨터 프로그램
KR20230022588A (ko) * 2021-08-09 2023-02-16 라인플러스 주식회사 영상 콘텐츠 시청을 지원하는 방법 및 장치

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200092465A (ko) * 2019-01-07 2020-08-04 삼성전자주식회사 추천 컨텐츠 리스트 제공 방법 및 그에 따른 전자 장치
KR20200144417A (ko) * 2019-06-18 2020-12-29 빅펄 주식회사 멀티모달 콘텐츠 분석 시스템 및 그 방법
KR20210121387A (ko) * 2020-03-30 2021-10-08 주식회사 메디치소프트 콘텐츠에서 키워드를 추출하고, 추출된 키워드를 이용하여 콘텐츠를 추천하는 방법, 장치 및 프로그램
KR20220039075A (ko) * 2020-09-21 2022-03-29 삼성전자주식회사 전자 장치, 컨텐츠 검색 시스템 및 검색 방법
KR20220140226A (ko) * 2021-04-09 2022-10-18 주식회사 닐슨 콘텐츠 결정 방법, 장치 및 컴퓨터 프로그램
KR20230022588A (ko) * 2021-08-09 2023-02-16 라인플러스 주식회사 영상 콘텐츠 시청을 지원하는 방법 및 장치

Similar Documents

Publication Publication Date Title
US20200074321A1 (en) Methods and systems for using machine-learning extracts and semantic graphs to create structured data to drive search, recommendation, and discovery
US10504039B2 (en) Short message classification for video delivery service and normalization
EP3371765A1 (en) End-to-end deep collaborative filtering
Liu et al. Hierarchical & multimodal video captioning: Discovering and transferring multimodal knowledge for vision to language
CN111819625A (zh) 用于语言模型个性化的系统和方法
CN113157965B (zh) 音频可视化模型训练及音频可视化方法、装置及设备
Zhang et al. Combining cross-modal knowledge transfer and semi-supervised learning for speech emotion recognition
CN112989212B (zh) 媒体内容推荐方法、装置和设备及计算机存储介质
Li et al. A deep reinforcement learning framework for Identifying funny scenes in movies
Papalampidi et al. Movie summarization via sparse graph construction
CN109598586A (zh) 一种基于注意力模型的推荐方法
Mehta et al. Movie recommendation systems using sentiment analysis and cosine similarity
Feng et al. Temporal multimodal graph transformer with global-local alignment for video-text retrieval
Zeng et al. Robust multimodal sentiment analysis via tag encoding of uncertain missing modalities
Xie et al. A Knowledge Augmented and Multimodal-Based Framework for Video Summarization
KR102605100B1 (ko) 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치
KR102615164B1 (ko) 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치
KR102615165B1 (ko) 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치
US11868857B2 (en) Video augmentation apparatus and a method for its use
KR102486806B1 (ko) 인공지능에 기반하여 시놉시스 텍스트를 분석하고 시청률을 예측하는 서버
US11810598B2 (en) Apparatus and method for automated video record generation
Cheng et al. Context-aware based visual-audio feature fusion for emotion recognition
Kondylidis et al. Category aware explainable conversational recommendation
CN112153424B (zh) 内容推送方法、装置、电子设备和存储介质
Lubos et al. An overview of video recommender systems: state-of-the-art and research issues

Legal Events

Date Code Title Description
GRNT Written decision to grant