[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR102615165B1 - 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치 - Google Patents

콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR102615165B1
KR102615165B1 KR1020230025139A KR20230025139A KR102615165B1 KR 102615165 B1 KR102615165 B1 KR 102615165B1 KR 1020230025139 A KR1020230025139 A KR 1020230025139A KR 20230025139 A KR20230025139 A KR 20230025139A KR 102615165 B1 KR102615165 B1 KR 102615165B1
Authority
KR
South Korea
Prior art keywords
content
genre
vector
content item
text data
Prior art date
Application number
KR1020230025139A
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 KR1020230025139A priority Critical patent/KR102615165B1/ko
Priority to PCT/KR2023/019146 priority patent/WO2024172254A1/ko
Application granted granted Critical
Publication of KR102615165B1 publication Critical patent/KR102615165B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/466Learning process for intelligent management, e.g. learning user preferences for recommending movies
    • H04N21/4668Learning process for intelligent management, e.g. learning user preferences for recommending movies for recommending content, e.g. movies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/247Thesauruses; Synonyms
    • 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/044Recurrent networks, e.g. Hopfield networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/466Learning process for intelligent management, e.g. learning user preferences for recommending movies
    • H04N21/4662Learning process for intelligent management, e.g. learning user preferences for recommending movies characterized by learning algorithms
    • H04N21/4666Learning process for intelligent management, e.g. learning user preferences for recommending movies characterized by learning algorithms using neural networks, e.g. processing the feedback provided by the user

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Artificial Intelligence (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

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

Description

콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치{METHOD AND APPARATUS FOR PROVIDING SIMILAR CONTENTS IN CONTENTS STREAMING SYSTEM}
본 개시는 콘텐츠 스트리밍 시스템에 관한 것으로, 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치에 관한 것이다.
다양한 기술의 발전 및 소비의 트랜드 변화에 따라, 콘텐츠 공급 및 소비 방식에 큰 변화가 발생하였다. 디지털 기술, 컴퓨터 기술, 인터넷/통신 기술 등의 발전은 콘텐츠의 종류 및 생산 주체에 대한 경계를 허물어지게 하였으며, 이는 콘텐츠에 대한 생산 및 소비 패턴의 큰 변화를 야기하였다. 일반인들도 콘텐츠를 창작 및 배포하는 것을 가능케 하는 플랫폼들이 생겨났다. 또한, 다양한 콘텐츠로의 접근 용이성이 확보되었고, 소비 방식에 다양한 옵션들이 제공되기 시작하였다.
이러한 콘텐츠 산업의 많은 변화들의 가운데, OTT(over the top) 서비스가 존재한다. OTT 서비스는 인터넷 및 모바일 통신 기반의 미디어 플랫폼으로서, 기존의 방송 서비스를 넘어서 별도의 셋탑 박스와 같은 장비 없이도 다양한 콘텐츠들을 소비자들에게 제공한다. OTT 서비스의 개념은 최초 영화, 텔레비전 프로그램 등을 VOD(video on demand) 방식으로 제공하는 것으로 시작하였으나, 현재 OTT 서비스 제공자의 자체 제작 콘텐츠를 제공하는 것은 물론, 모바일 플랫폼까지도 그 영역을 확대하는 등 여전히 확장 중에 있는 서비스이다.
본 개시는 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 효과적으로 제공하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠 스트리밍 시스템에서 특정 콘텐츠와 유사한 콘텐츠를 추천하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠 스트리밍 시스템에서 언어모델을 이용하여 유사 콘텐츠를 결정하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠 스트리밍 시스템에서 콘텐츠의 내용을 설명하는 텍스트 메타 데이터를 기반으로 콘텐츠를 추천하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠의 장르 정보를 기반으로 언어모델을 학습하기 위한 방법 및 장치를 제공하기 위한 것이다.
본 개시는 장르 정보를 이용하여 학습된 언어모델을 이용하여 콘텐츠들 간의 유사도를 결정하기 위한 방법 및 장치를 제공하기 위한 것이다.
본 개시에서 이루고자 하는 기술적 목적들은 이상에서 언급한 사항들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 이하 설명할 본 개시의 실시예들로부터 본 개시의 기술 구성이 적용되는 기술분야에서 통상의 지식을 가진 자에 의해 고려될 수 있다.
본 개시의 일 예에 따른, 콘텐츠 스트리밍 시스템에서 서버의 동작 방법은, 제1 콘텐츠 아이템의 제1 메타 데이터에 포함되는 정보를 포함하는 제1 시퀀스형 텍스트 데이터를 획득하는 단계, 제2 콘텐츠 아이템의 제2 메타 데이터에 포함되는 정보를 포함하는 제2 시퀀스형 텍스트 데이터를 획득하는 단계, 콘텐츠 아이템들의 메타 데이터에 포함되는 장르 정보를 기반으로 학습된 언어모델을 이용하여, 상기 제1 시퀀스형 텍스트 데이터에 대응하는 제1 벡터 및 상기 제2 시퀀스형 텍스트 데이터에 대응하는 제2 벡터를 결정하는 단계, 상기 제1 벡터 및 상기 제2 벡터를 이용하여 상기 제1 콘텐츠 아이템 및 상기 제2 콘텐츠 아이템 간 유사도를 결정하는 단계, 및 상기 유사도에 기반하여 선택된 상기 제2 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템을 포함하는 콘텐츠 목록을 제공하는 단계를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 언어모델은, 텍스트 분류(text classification) 태스크에 기반하여 상기 콘텐츠가 속한 적어도 하나의 장르를 예측하는 훈련을 통해 학습될 수 있다.
본 개시의 일 예에 따르면, 상기 방법은, 상기 콘텐츠 아이템들의 내용을 설명하는 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환하는 단계, 상기 시퀀스형 텍스트 데이터에서 적어도 하나의 장르 토큰을 제거하여 입력으로 설정하는 단계, 상기 적어도 하나의 장르 토큰을 기반으로 레이블을 설정하는 단계; 및 상기 입력 및 상기 레이블을 기반으로, 상기 콘텐츠 아이템들 각각이 속한 적어도 하나의 장르를 예측하도록 상기 언어모델에 대한 훈련을 수행하는 단계를 더 포함하며, 상기 텍스트 메타 데이터는, 제목, 시놉시스, 장르, 감독, 배우, 또는 해시태그 정보 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 텍스트 메타 데이터를 상기 시퀀스형 텍스트 데이터로 변환하는 단계는, 상기 텍스트 메타 데이터를 복수의 토큰들로 구분하는 단계, 및 상기 토큰들 사이에 적어도 하나의 구분자를 삽입함으로써 상기 시퀀스형 텍스트 데이터를 생성하는 단계를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 적어도 하나의 구분자는, 서로 다른 종류의 피처들을 구분하기 위한 분리 토큰 및 특정 피처를 나타내기 위해 특정 피처의 앞 및 뒤에 삽입되는 스페셜 토큰 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 스페셜 토큰은, 장르를 나타내는 제1 스페셜 토큰, 감독을 나타내는 제2 스페셜 토큰, 배우를 나타내는 제3 스페셜 토큰, 및 해시태그를 나타내는 제4 스페셜 토큰 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 시퀀스형 텍스트 데이터에 복수개의 장르 토큰들이 존재하는 경우, 상기 레이블은, 상기 복수 개의 장르 토큰들에 대응되는 멀티 레이블로 설정될 수 있다. 본 개시의 일 예에 따르면, 상기 훈련은, 예측 모델을 이용하여 수행되며, 상기 예측 모델은, 상기 적어도 하나의 장르 토큰이 제거된 입력 시퀀스형 텍스트 데이터를 입력으로 취하고, 상기 입력 시퀀스형 텍스트 데이터에 대응되는 벡터 값들을 출력하는 상기 언어모델, 및 상기 언어모델에서 출력되는 벡터 값들에 대응되는 복수의 입력 토큰들을 예측하도록 구성된 텍스트 분류 헤드 레이어를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 제1 콘텐츠 아이템 및 상기 제2 콘텐츠 아이템 간 유사도를 결정하는 단계는, 코사인 유사도 알고리즘을 이용하여 상기 제1 벡터 및 상기 제2 벡터 간의 유사도를 계산하는 단계를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 제1 벡터 및 상기 제2 벡터 각각은, 상기 학습된 언어모델의 마지막 은닉층의 출력 벡터 값들에 대한 평균 풀링을 수행함으로써 획득할 수 있다.
본 개시의 일 예에 따르면, 상기 제1 벡터 및 상기 제2 벡터 각각은, 상기 학습된 언어모델의 마지막 은닉층의 출력 벡터 값들 중 지정된 피처(feature)의 위치에 해당하는 벡터 값에 가중치를 부여함으로써 결정될 수 있다.
본 개시의 일 예에 따르면, 상기 언어모델은, 트랜스포머 기반의 모델을 포함할 수 있다.
본 개시의 일 예에 다르면, 상기 방법은, 제3 콘텐츠 아이템의 제3 메타 데이터에 포함되는 정보를 포함하는 제3 시퀀스형 텍스트 데이터를 획득하는 단계, 상기 학습된 언어모델을 이용하여, 상기 제3 시퀀스형 텍스트 데이터에 대응하는 제3 벡터를 결정하는 단계, 상기 제1 벡터 및 상기 제3 벡터를 이용하여 상기 제1 콘텐츠 아이템 및 상기 제3 콘텐츠 아이템 간 유사도를 결정하는 단계를 더 포함하며, 상기 콘텐츠 목록을 제공하는 단계는, 상기 제1 콘텐츠 아이템 및 상기 제2 콘텐츠 아이템 간 유사도, 및 상기 제1 콘텐츠 아이템 및 상기 제3 콘텐츠 아이템 간의 유사도를 기반으로, 상기 제2 콘텐츠 아이템과 상기 제3 콘텐츠 아이템 중 상기 제2 콘텐츠 아이템을 선택하는 단계를 포함할 수 있다.
본 개시의 일 예에 따른, 콘텐츠 스트리밍 시스템에서 서버에 있어서, 적어도 하나의 클라이언트 장치와 신호를 송수신하는 통신부, 및 상기 통신부와 전기적으로 연결된 프로세서를 포함하며, 상기 프로세서는, 제1 콘텐츠 아이템의 제1 메타 데이터에 포함되는 정보를 포함하는 제1 시퀀스형 텍스트 데이터를 획득하고, 제2 콘텐츠 아이템의 제2 메타 데이터에 포함되는 정보를 포함하는 제2 시퀀스형 텍스트 데이터를 획득하고, 콘텐츠 아이템들의 메타 데이터에 포함되는 장르 정보를 기반으로 학습된 언어모델을 이용하여, 상기 제1 시퀀스형 텍스트 데이터에 대응하는 제1 벡터 및 상기 제2 시퀀스형 텍스트 데이터에 대응하는 제2 벡터를 결정하고, 상기 제1 벡터 및 상기 제2 벡터를 이용하여 상기 제1 콘텐츠 아이템 및 상기 제2 콘텐츠 아이템 간 유사도를 결정하고, 상기 유사도에 기반하여 선택된 상기 제2 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템을 포함하는 콘텐츠 목록을 제공하도록 제어할 수 있다.
본 개시의 일 예에 따르면, 상기 언어모델은, 텍스트 분류(text classification model) 태스크에 기반하여 상기 콘텐츠가 속한 적어도 하나의 장르를 예측하는 훈련을 통해 학습될 수 있다.
본 개시의 일 예에 따르면, 상기 프로세서는, 상기 콘텐츠의 내용을 설명하는 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환하고, 상기 시퀀스형 텍스트 데이터에서 적어도 하나의 장르 토큰을 제거하여 입력으로 설정하고, 상기 적어도 하나의 장르 토큰을 기반으로 레이블을 설정하고, 상기 입력 및 상기 레이블을 기반으로, 상기 콘텐츠 아이템들 각각이 속한 적어도 하나의 장르를 예측하도록 상기 언어모델에 대한 훈련을 수행하도록 제어하며, 상기 텍스트 메타 데이터는, 제목, 시놉시스, 장르, 감독, 배우, 또는 해시태그 정보 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 프로세서는, 상기 텍스트 메타 데이터를 토큰 단위로 구분하고, 구분된 토큰들 사이에 적어도 하나의 구분자를 삽입함으로써 상기 텍스트 메타 데이터를 상기 시퀀스형 텍스트 데이터로 변환하도록 제어하며, 상기 적어도 하나의 구분자는, 서로 다른 종류의 피처들을 구분하기 위한 분리 토큰, 및 특정 피처를 나타내기 위해 특정 피처의 앞 및 뒤에 삽입되는 스페셜 토큰 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 훈련은, 예측 모델을 이용하여 수행되며, 상기 예측 모델은, 상기 적어도 하나의 장르 토큰이 제거된 입력 시퀀스형 텍스트 데이터를 입력으로 취하고, 상기 입력 시퀀스형 텍스트 데이터에 대응되는 벡터 값들을 출력하는 상기 언어모델, 및 상기 언어모델에서 출력되는 벡터 값들에 대응되는 복수의 입력 토큰들을 예측하도록 구성된 텍스트 분류 헤드 레이어를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 프로세서는, 상기 콘텐츠들 각각에 대한 벡터 값 획득 시, 상기 학습된 언어모델의 마지막 은닉층의 출력 벡터 값들 중 지정된 피처의 위치에 해당하는 출력 벡터 값에 가중치를 부여하고, 상기 가중치가 적용된 벡터 값 및 그 외 마지막 은닉층의 출력 벡터 값들에 대한 평균 풀링을 수행하도록 제어할 수 있다.
본 개시의 일 실시예에 다른 기록 매체에 저장된 프로그램은, 프로세서에 의해 동작되면 전술한 방법들 중 어느 하나를 실행할 수 있다.
본 개시에 대하여 위에서 간략하게 요약된 특징들은 후술하는 본 개시의 상세한 설명의 예시적인 양상일 뿐이며, 본 개시의 범위를 제한하는 것은 아니다.
본 개시에 따르면, 기준 콘텐츠와 유사한 콘텐츠들을 추천할 수 있다.
본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 개시의 일 실시예에 따른 콘텐츠 스트리밍 시스템을 도시한다.
도 2는 본 개시의 일 실시예에 따른 클라이언트 장치의 구조를 도시한다.
도 3는 본 개시의 일 실시예에 따른 서버의 구조를 도시한다.
도 4는 본 개시의 일 실시예에 따른 콘텐츠 스트리밍 서비스의 개념을 도시한다.
도 5는 벡터들의 상대적 관계의 예를 도시한다.
도 6은 본 개시의 일 실시예에 따라 콘텐츠를 추천하는 서버의 구조의 예를 도시한다.
도 7은 본 개시의 일 실시예에 따라 콘텐츠의 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환하는 예를 도시한다.
도 8a는 본 개시의 일 실시예에 따른 언어모델의 학습 예를 도시한다.
도 8b는 본 개시의 일 실시예에 따른 예측모델의 입/출력 구조의 예를 도시한다.
도 8c는 본 개시에 적용 가능한 멀티 클래스 예측 모델 및 멀티 레이블 예측 모델의 개념을 도시한다.
도 9a는 본 개시의 일 실시예에 따른 콘텐츠별 예측 값과 유사도 관계에 대한 일 예를 도시한다.
도 9b는 본 개시의 일 실시예에 따른 콘텐츠별 예측 값과 유사도 관계에 대한 다른 예를 도시한다.
도 10은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠들 간의 유사도를 계산하는 예를 도시한다.
도 11은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠를 추천하는 절차의 예를 도시한다.
도 12는 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다.
도 13은 본 개시의 일 실시예에 따라 장르 예측을 이용하는 언어모델의 학습의 예를 도시한다.
도 14는 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠의 유사도를 결정하는 절차의 예를 도시한다.
도 15a는 본 개시의 실시예에 적용 가능한 트랜스포머의 구조의 예를 도시한다.
도 15b는 본 개시의 실시예에 적용 가능한 트랜스포머의 인코더 및 디코더 블록들의 상세 구조의 예를 도시한다.
도 16은 본 개시의 실시예에 적용 가능한 BERT 모델의 구조의 예를 도시한다.
도 17은 본 개시의 일 실시예에 따른 테스트 셋의 예를 도시한다.
도 18은 본 개시의 일 실시예에 따라 결정된 유사한 콘텐츠의 활용 예를 도시한다.
이하에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.
본 발명의 실시예를 설명함에 있어서 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다. 그리고, 도면에서 본 발명에 대한 설명과 관계없는 부분은 생략하였으며, 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도면에 표시되고 아래에 설명되는 기능 블록들은 가능한 구현의 예들일 뿐이다. 다른 구현들에서는 상세한 설명의 사상 및 범위를 벗어나지 않는 범위에서 다른 기능 블록들이 사용될 수 있다. 또한, 본 발명의 하나 이상의 기능 블록이 개별 블록들로 표시되지만, 본 발명의 기능 블록들 중 하나 이상은 동일 기능을 실행하는 다양한 하드웨어 및 소프트웨어 구성들의 조합일 수 있다.
또한, 어떤 구성요소들을 포함한다는 표현은 "개방형"의 표현으로서 해당 구성요소들이 존재하는 것을 단순히 지칭할 뿐이며, 추가적인 구성요소들을 배제하는 것으로 이해되어서는 안 된다. 나아가 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어"있다고 언급될 때에는, 그 다른 구성요소에 직접적으로 연결 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
또한, 문맥상 명백하게 다르게 표현되지 아니하는 한, 객체에 대한 단수의 표현은 복수의 표현으로 이해될 수 있다. 본 개시에서, "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) 모델을 이용하는 방법론이다. 협업 필터링 모델을 이용하는 방법론은 사용자와 콘텐츠 간 상호 작용 데이터를 기반으로 콘텐츠를 추천한다. 반면, CBF 모델을 이용하는 방법론은 사용자의 선호 콘텐츠와 유사한 콘텐츠를 추천한다. 사용자의 선호 콘텐츠는 사용자가 시청하거나, 소비하거나, 구매하거나, 및/또는 선택한 콘텐츠를 포함할 수 있다. CBF 모델을 이용하는 방법론은 콘텐츠 자체의 특성을 기반으로 추천 콘텐츠를 결정하므로, 사용자와 콘텐츠 간의 상호 작용 데이터가 없더라도, 콘텐츠 추천이 가능하다는 장점을 가진다. 즉, CBF 모델을 이용할 경우, 평가 또는 구매 이력이 없는 신규 사용자나 콘텐츠에 대한 추천이 어려운 콜드 스타트(cold start)의 문제 해소에 도움이 될 수 있다. 이에 따라, 현재 CBF 모델에 기초한 다양한 콘텐츠 추천 기법들이 제공되고 있다. 예를 들어, 영화와 평점 정보 메타 데이터를 이용하는 순환 신경망 기반의 모델을 통해 콘텐츠를 추천하는 기법, 사용자의 영화 평점과 영화 장르 행렬을 내적하여 얻은 행렬을 기반으로 콘텐츠를 추천하는 기법, 또는 콘텐츠의 이미지, 오디오, 태그, 장르 등의 메타 데이터를 기반으로 최근접 이웃 모델을 활용하여 콘텐츠를 추천하는 기법 등이 사용될 수 있다. 그러나, 이와 같은 기존의 CBF 모델 기반의 기법들은, 대부분 콘텐츠의 특징을 지시하는 메타 데이터를 활용할 뿐, 콘텐츠 자체의 내용을 설명하는 텍스트 메타 데이터를 활용하지 아니한다.
따라서, 이하 본 개시는, CBF 모델을 이용하는 방법론을 기반으로, 콘텐츠 자체의 내용을 설명하는 텍스트 메타 데이터를 활용하여 콘텐츠를 추천하는 다양한 실시예들을 설명할 것이다. 예를 들어, 콘텐츠의 자체의 내용을 설명하는 텍스트 메타 데이터는, 제목, 시놉시스, 복합 장르, 감독, 배우, 또는 해시태그 중 적어도 하나를 포함할 수 있다. 또한, 본 개시의 실시예들에서, 콘텐츠 추천을 위해 언어모델이 이용될 수 있으며, 언어모델은 텍스트 메타 데이터를 기반으로 학습될 수 있다. 언어모델은 콘텐츠의 텍스트 메타 데이터를 컴퓨터가 이해할 수 있도록 수치화, 즉, 임베딩하기 위한 자연어 처리 모델로 트랜스포머(transformer) 기반 모델일 수 있다. 예를 들어, 트랜스포머 기반 모델은 BERT, ELECTRA, RoBERTa, BART, GPT3, DeBERTa, KLUE-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 모델의 구조에 대한 구체적인 설명은 도 15a, 도 15b, 및 도 16을 참조하여 후술하기로 한다.
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 내지 도 10을 참고하여 설명할 것이다.
도 6을 참고하면, 서버(120)는 콘텐츠 저장부(610), 모델 학습부(620), 유사도 결정부(630) 및 콘텐츠 결정부(640)를 포함할 수 있다.
콘텐츠 저장부(610)는 클라이언트들에게 제공 가능한 콘텐츠 아이템들을 저장한다. 콘텐츠 아이템들은 스트리밍 서비스될 수 있는 영화 콘텐츠, 드라마 콘텐츠, 프로그램 콘텐츠를 포함하며, 하나의 콘텐츠 아이템은 하나의 영화, 하나의 드라마 또는 하나의 프로그램에 대응한다. 예를 들어, 제1 콘텐츠 아이템 및 제2 콘텐츠 아이템은 서로 다른 영화들에 대응할 수 있다. 다만, 다른 실시예에 따라, 콘텐츠 저장부(610)는 서버(120)의 외부에 존재할 수 있고, 이 경우, 서버(120)는 외부의 콘텐츠 저장부(610)에 접속하고, 콘텐츠 아이템들을 검색 및 획득할 수 있다.
모델 학습부(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)는 시퀀스형 텍스트 데이터에서 장르 관련 토큰들을 제거함으로써, 장르 관련 토큰들을 포함하지 아니하는 입력 시퀀스형 텍스트 데이터를 생성할 수 있다. 장르 관련 토큰들은, 장르를 나타내는 스페셜 토큰인 [GENRE] 및 [/GENRE], 및 장르 정보에 대응되는 토큰(이하 '장르 토큰')을 포함할 수 있다. 장르 토큰은 장르를 나타내는 스페셜 토큰인 [GENRE] 및 [/GENRE] 사이의 장르 영역에 위치하고, 장르를 표현하는 적어도 하나의 토큰을 포함할 수 있다. 예를 들어, '공포/스릴러'라는 장르를 표현하는 장르 토큰은, '공포', '/', 및 ''스릴러' 라는 3개의 토큰을 포함할 수 있고, '드라마'라는 장르를 표현하는 장르 토큰은, '드라마'라는 1개의 토큰을 포함할 수 있다.
모델 학습부(620)는 언어모델에 기반하여 콘텐츠 아이템들에 대한 장르를 예측 또는 추론하도록 구성된 예측모델에 입력 시퀀스형 텍스트 데이터를 입력할 수 있다. 모델 학습부(620)는 시퀀스형 텍스트 데이터 내 장르 정보를 기반으로 예측모델에 대한 훈련을 수행함으로써, 언어모델에 대한 학습을 수행할 수 있다. 예측모델은 텍스트 분류(text classification) 태스크(task)를 수행하여, 입력 시퀀스형 텍스트 데이터를 갖는 콘텐츠 아이템이 속한 장르를 예측할 수 있다. 텍스트 분류 태스크는 예측모델에 입력되는 텍스트가 어떤 클래스에 속하는지 구분하는 작업을 의미한다. 예를 들어, 모델 학습부(620)는 도 8a에 도시된 바와 같이 언어모델에 대한 학습을 수행할 수 있다.
도 8a는 본 개시의 일 실시예에 따른 언어모델의 학습 예를 도시하고, 도 8b는 본 개시의 일 실시예에 따른 예측모델의 구조의 예를 도시한다. 도 8a를 참고하면, 모델 학습부(620)는 콘텐츠1의 입력 시퀀스형 텍스트 데이터인 <콘텐츠1 Data>(810)를 예측모델(820)에 입력할 수 있다. 이때, 예측모델(820)에 입력되는 <콘텐츠 1 Data>(810)는, 장르 관련 토큰들을 포함하지 아니한다. 모델 학습부(620)는 콘텐츠 1의 입력 시퀀스형 텍스트 데이터로부터 적어도 하나의 장르를 표현하는 적어도 하나의 토큰을 획득하고, 획득된 적어도 하나의 토큰을 기반으로 클래스 레이블(class label)을 설정할 수 있다. 여기서, 하나의 장르는 하나 이상의 토큰들에 의해 표현될 수 있다. 예컨대, “공포/스릴러”라는 장르는, “공포”, “/”, 및 “스릴러”라는 3개의 토큰들에 의해 표현될 수 있고, “드라마”라는 장르는, “드라마”라는 하나의 토큰에 의해 표현될 수 있다. 따라서, 모델 학습부(620)는 입력 시퀀스형 텍스트 데이터로부터 하나의 장르를 표현하는 하나 이상의 토큰이 획득된 경우, 획득된 하나 이상의 토큰을 기반으로 하나의 장르를 예측하도록 클래스 레이블을 설정할 수 있다. 또한, 모델 학습부(620)는 시퀀스형 텍스트 데이터로부터 복수의 장르들을 표현하는 복수의 토큰들이 획득된 경우, 획득된 복수의 토큰들을 기반으로 복수의 장르들을 예측하도록 클래스 레이블을 설정할 수 있다. 모델 학습부(620)는 예측될 장르의 수에 따라 멀티 클래스 분류 모델, 또는 멀티 레이블 분류 모델을 이용할 수 있으며, 이에 대해서는 도 8c에서 후술하기로 한다.
모델 학습부(620)는 장르 관련 토큰이 포함되지 아니한 <콘텐츠1 Data>(810)를 예측 모델(820)에 입력하고, 예측모델(820)의 출력 값 및 미리 설정된 클래스 레이블을 이용하여 손실(loss) 값(예: 크로스 엔트로피)을 결정하고, 손실 값에 기반하여 역전파를 수행함으로써 예측 모델(820)에 대한 훈련 및/또는 학습을 수행할 수 있다. 이에 따라, 예측모델(820)은 <콘텐츠1 Data>(810)로부터 클래스 레이블로 설정된 적어도 하나의 장르를 예측(830) 및/또는 추론하도록 훈련 및/또는 학습될 수 있다.
구체적으로, 예측 모델(820)은 도 8b에 도시된 바와 같이, 입력 토큰들(예: [CLS, Tok1, Tok2, …, TokN]에 대응되는 벡터 값들(예: [C, T1, T2, …TN])을 출력하는 언어모델(821), 및 언어모델(821)에서 출력된 적어도 하나의 벡터 값을 기반으로 클래스 레이블의 확률 값을 출력하는 분류 계층(classification layer)(827)을 포함할 수 있다. 여기서, 언어모델(821)는 RoBERTa 모델을 포함할 수 있다. 또한, 분류 계층(827)은 텍스트 분류 계층, 및/또는 텍스트 분류 헤드 레이어로 지칭될 수 있다.
모델 학습부(620)는 도 8b에 도시된 바와 같이, <콘텐츠1의 데이터>(810)를 예측 모델(820)에 입력함으로써, 예측 모델(820)로부터 콘텐츠1에 대한 장르 예측 결과를 획득할 수 있다. 이때, 입력 시퀀스형 텍스트 데이터인 <콘텐츠1의 데이터>(810)는 복수의 토큰들 Tok1, Tok2, …, TokN(810-1, 810-2, …, 810-N)을 포함할 수 있다. 모델 학습부(620)는 <콘텐츠1의 데이터>(810)의 시작 위치에 시작 토큰인 [CLS](811)을 추가하여 언어모델(821)에 입력할 수 있다. 언어 모델(821)은 시작 토큰인 [CLS](811)에 대응되는 마지막 은닉 벡터 C(823), 및 복수의 토큰들 Tok1, Tok2, …, TokN(810-1, 810-2, …, 810-N)에 대응되는 마지막 은닉 벡터들 T1, T2, …TN(825-1, 825-2, …, 825-N)을 출력할 수 있다. 마지막 은닉 벡터 C(823)는 <콘텐츠1의 데이터>(810)에 포함된 복수의 토큰들 Tok1, Tok2, …, TokN(810-1, 810-2, …, 810-N) 전체의 문맥 정보가 반영된 출력 벡터일 수 있다. 마지막 은닉 벡터 C(823)는 분류 계층 (827)에 입력되고, 분류 계층(827)은 마지막 은닉 벡터 C(823)를 기반으로 클래스 레이블의 확률 값을 출력할 수 있다. 모델 학습부(620)는 출력된 클래스 레이블의 확률 값에 기초하여 콘텐츠 1이 속한 클래스, 즉, 장르를 예측할 수 있다. 일실시예에 따르면, 분류 계층(827)은 마지막 은닉 벡터 C(823)만을 입력으로 이용할 수도 있고, 마지막 은닉 벡터 C(823)와 다른 마지막 은닉 벡터들 T1, T2, …TN(825-1, 825-2, …, 825-N)을 함께 입력으로 이용할 수 있다. 예를 들어, 분류 계층(827)은 언어 모델(821)에서 출력되는 마지막 은닉 벡터들 T1, T2, …TN(825-1, 825-2, …, 825-N)의 평균 풀링을 입력받고, 이를 기반으로 클래스 레이블의 확률 값을 출력할 수 있다.
전술한 바와 같이, 예측모델(820)은 <콘텐츠1 Data>(810)에 포함된 모든 토큰들로부터 문맥 정보를 획득하고, 획득된 문맥 정보에 기반하여 장르를 추론하도록 훈련 또는 학습될 수 있다. 예를 들어, 예측모델(820)은 제목, 시놉시스, 해시태그 등과 같은 토큰들로부터 획득되는 문맥 정보를 기반으로 학습할 수 있다. 이와 같이, 언어모델 기반의 예측모델의 학습 태스크에 대한 입력 및 타겟은 하기 표 2와 같이 나타낼 수 있다.
예측 입력 타겟
장르 예측 타이틀[SEP]시놉시스[DIR]감독[/DIR][ATR]배우1 배우2[/ATR][TAG]태그1 태그2[/TAG] 장르1, 장르2
표 2는 입력 시퀀스형 텍스트 데이터가 예측모델에 입력되면, 예측모델이 '장르1', 및 '장르2'의 토큰을 추론하도록 학습됨을 나타낸다. 여기서, 타겟은 클래스 레이블을 의미하여, 타겟이 '장르1', 및 '장르2'로 복수개인 것은, 해당 콘텐츠 아이템이 하나의 장르가 아닌 여러 개의 장르에 속할 수 있기 때문이다. 예를 들어, 특정 콘텐츠 아이템은 대분류 장르 중 '액션/SF' 장르에 속하면서, 소분류 장르 중 '판타지' 장르에 속할 수 있다.일반적으로, 콘텐츠 아이템들에 대한 장르는 대분류 장르, 및/또는 소분류 장르로 구분될 수 있다. 대분류 장르는, 드라마, 로맨스/멜로, 코미디, 액션/SF, 공포/스릴러 등을 포함할 수 있다. 소분류 장르는, 드라마, 액션, 스릴러, 로맨스, 코미디, 호러, 판타지, SF, 범죄, 사극, 전쟁, 무협 등을 포함할 수 있다. 나열된 장르들은 이해를 돕기 위한 예시일 뿐, 본 개시의 실시예들은 이에 한정되지 아니한다.
전술한 바와 같이, 콘텐츠 아이템들에 대한 장르는 다양하게 구분될 수 있으며, 하나의 콘텐츠 아이템은 하나 이상의 장르에 속할 수 있다. 따라서, 본 개시의 실시예에 따른 예측모델은 콘텐츠 아이템이 속한 하나의 장르만을 추론하도록 학습되거나, 콘텐츠 아이템이 속한 하나 이상의 장르를 추론하도록 학습될 수 있다. 예를 들어, 예측 모델(820)은 도 8c에 도시된 바와 같은 지도 학습 알고리즘 기반의 멀티 클래스 분류 모델, 또는 멀티 레이블 분류 모델을 포함함으로써, 콘텐츠 아이템이 속한 하나 또는 그 이상의 장르를 추론하도록 학습될 수 있다.
도 8c는 본 개시에 적용 가능한 멀티 클래스 분류 모델 및 멀티 레이블 분류 모델의 개념을 도시한다. 도 8c에서, C는 클래스들의 수를 의미할 수 있다. 즉, 도 8c는 3개의 클래스들(801, 803, 805)이 존재하는 경우를 가정한다.
멀티 클래스 분류 모델(840)은, 멀티 클래스들 중에서 입력 샘플이 속한 하나의 클래스를 추론하기 위한 모델이다. 따라서, 멀티 클래스 분류 모델(840)의 레이블, 즉, 타겟 벡터 t는, 1개의 포지티브 클래스(positive class)와 C-1개의 네거티브 클래스(negative class)를 갖는 원-핫 벡터(one-hot vector)로 설정될 수 있다. 예를 들어, 멀티 클래스 분류 모델(840)의 제1 입력 샘플(841)에 대한 레이블은 [001]로 설정되고, 제2 입력 샘플(843)에 대한 레이블은 [100]으로 설정되고, 제3 입력 샘플(843)에 대한 레이블은 [010]으로 설정될 수 있다. 여기서, 레이블은 입력 샘플에 대해 기대되는 출력 벡터 값으로, 입력 샘플이 실제 속한 클래스를 기반으로 설정될 수 있다. 예를 들어, 레이블이 [100]으로 설정되는 것은 해당 입력 샘플이 실제 제1 클래스(801)에 속하되, 제2 클래스(803) 및 제3 클래스(805)에 속하지 아니함을 의미하고, 레이블이 [010]으로 설정되는 것은 해당 입력 샘플이 실제 제2 클래스(803)에 속하되, 제1 클래스(801) 및 제3 클래스(805)에 속하지 아니함을 의미할 수 있다. 또한, 레이블이 [001]로 설정되는 것은 해당 입력 샘플이 실제 제3 클래스(805)에 속하되, 제1 클래스(801) 및 제2 클래스(803)에 속하지 아니함을 의미할 수 있다.
멀티 레이블 분류 모델(850)은, 멀티 클래스들 중에서 입력 샘플이 속한 여러 클래스들을 추론하기 위한 모델이다. 멀티 레이블 분류 모델의 레이블, 즉, 타겟 벡터 t는, 복수 개의 포지티브 클래스(positive class)를 갖는 벡터로 설정될 수 있다. 예를 들어, 멀티 레이블 분류 모델의 제4 입력 샘플(851)에 대한 레이블은 [101]로 설정되고, 제5 입력 샘플(853)에 대한 레이블은 [010]으로 설정되고, 제3 입력 샘플(855)에 대한 레이블은 [111]로 설정될 수 있다. 여기서, 레이블은 입력 샘플에 대해 기대되는 출력 벡터 값으로, 입력 샘플이 실제 속한 하나 이상의 클래스를 기반으로 설정될 수 있다. 예를 들어, 레이블이 [101]로 설정되는 것은 해당 입력 샘플이 실제 제1 클래스(801) 및 제3 클래스(805)에 속함을 의미하고, 레이블이 [010]으로 설정되는 것은 해당 입력 샘플이 실제 제2 클래스(803)에 속함을 의미하고, 레이블이 [111]으로 설정되는 것은 해당 입력 샘플이 실제 제1 클래스(801), 제2 클래스(803) 및 제3 클래스(805)에 속함을 의미할 수 있다.
모델 학습부(620)는 도 8c에 도시된 바와 같은 멀티 클래스 분류 모델(840), 또는 멀티 레이블 분류 모델(850)을 기반으로 구성된 예측 모델(820)을 통해 콘텐츠 아이템들 각각이 속한 하나 이상의 장르를 추론하도록 학습될 수 있다.
상술한 구조에서, 예측모델이 타겟을 정확하게 추론할수록 언어모델의 의미표상이 더욱 정교해지고, 이에 따라, 콘텐츠 아이템들 간의 유사도를 더욱 정확하게 계산할 수 있게 된다. 예를 들어, 도 9a 및 도 9b와 같이, 장르를 예측하는 훈련 또는 학습을 수행할 경우, 장르 측면에서 예측 값이 동일한 콘텐츠 아이템들은 유사하게 임베딩될 수 있다. 도 9a는 본 개시의 일 실시예에 따른 콘텐츠별 예측 값과 유사도 관계에 대한 일 예를 도시한다. 도 9a는 콘텐츠1과 콘텐츠2의 예측 장르는 '장르 1'이고, 콘텐츠3의 예측 장르는 '장르 2'인 경우를 나타낸다. 도 9a를 참고하면, 동일한 예측 장르를 가지는 콘텐츠1 및 콘텐츠2 간 유사도(906a)가, 서로 다른 예측 장르들을 가지는 콘텐츠2 및 콘텐츠3 간 유사도(906b)보다 클 수 있다. 도 9b는 본 개시의 일 실시예에 따른 콘텐츠별 예측 값과 유사도 관계에 대한 다른 예를 도시한다. 도 9b는 콘텐츠1과 콘텐츠2의 예측 장르들은 '장르 1', 및 '장르 2'이고, 콘텐츠3의 예측 장르들은 '장르 2', 및 '장르 4'인 경우를 나타낸다. 도 9b를 참고하면, 콘텐츠1의 예측 장르들은 콘텐츠2의 예측 장르들과 동일하다. 반면, 콘텐츠3의 예측 장르들은 콘텐츠2의 예측 장르들과 일부는 동일하고 일부는 상이하다. 따라서, 동일한 예측 장르들을 가지는 콘텐츠 1 및 콘텐츠 2간의 유사도(916a)는 일부 다른 예측 장르를 갖는 콘텐츠 2 및 콘텐츠 3의 유사도(916b)보다 클 수 있다. 상술한 설명에서, 모델 학습부(620)는 장르를 예측하는 방식으로 언어모델에 대한 학습을 수행하였으나, 장르 이외의 다른 정보를 예측하는 방식으로 언어모델에 대한 학습을 수행할 수도 있다. 예를 들어, 모델 학습부(620)는 사용자의 콘텐츠 취향이 반영될 수 있는 다른 정보를 예측하도록 언어모델에 대한 학습을 수행할 수도 있다. 하기 표 3은 사용자의 선호 콘텐츠에 대한 표현 예시이다.
좋아하는 영화 표현 예시 기준 구분
액션 영화 좋아한다 장르(액션)
일본 영화 좋아한다 해시태그(#일본배경)
홍길동 감독 영화 좋아한다 감독(홍길동)
감동적인 영화 보고 싶다 해시태그(#감동적인)
김길동 배우 영화는 믿고 본다 배우(김길동)
표 3은 사용자의 선호 콘텐츠가, 콘텐츠의 장르, 해시태그, 감독, 또는 배우 정보에 반영될 수 있음을 나타낸다. 표 3에 나타낸 바와 같이, 감독, 또는 배우 정보는 사용자의 콘텐츠 취향을 반영하는 정보이다. 그러나, 감독 또는 배우 정보에 해당하는 대상 정보들은 매우 많고, 콘텐츠들이 동일한 감독 정보 또는 동일한 배우 정보를 가지는 경우가 드물기 때문에, 감독 또는 배우 정보에 대한 일반화된 의미표상을 학습하는 것은 어렵다. 반면, 해시태그 또는 장르 정보는 사용자의 콘텐츠 취향을 반영하면서도, 다른 피처들(예: 감독, 배우)에 비해 상대적으로 그 대상 정보가 많지 않고, 콘텐츠들이 동일한 장르 및/또는 해시태그를 갖는 경우가 많다. 또한, 장르 정보는 정해진 카테고리 내에서 개별 데이터마다 등장하며, 해시태그 정보에 해당되는 주요 명사들은 사전 학습 단계에서 많이 학습되어 있는 상태이다. 따라서, 장르 또는 해시태그 정보에 대한 일반화된 의미표상을 학습하는 것은 용이하다 할 수 있다. 따라서, 본 개시의 모델 학습부(620)는 장르 정보 이외에 해시태그 정보를 기반으로 예측 모델을 훈련시킬 수 있다. 즉, 모델 학습부(620)는 해시태그 정보를 기반으로 언어모델에 대한 학습을 수행할 수도 있다.유사도 결정부(630)는 모델 학습부(620)에서 학습된 언어모델을 이용하여 콘텐츠 아이템들 간 유사도를 결정할 수 있다. 유사도 결정부(630)는, 콘텐츠 아이템 별로, 텍스트 메타 데이터를 획득하고, 획득된 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환할 수 있다. 유사도 결정부(630)는 시퀀스형 텍스트 데이터에서 장르 관련 토큰들을 제거하여, 장르 관련 토큰들을 포함하지 아니하는 입력 시퀀스형 텍스트 데이터를 생성할 수 있다. 유사도 결정부(630)는 학습된 언어모델을 이용하여 콘텐츠 아이템 별로 획득된 입력 시퀀스형 텍스트 데이터로부터 콘텐츠 아이템 별 벡터 값을 획득할 수 있다. 그리고, 유사도 결정부(630)는 콘텐츠 아이템 별 벡터 값들을 비교함으로써, 콘텐츠 아이템들 간 유사도를 결정할 수 있다.
예를 들어, 유사도 결정부(630)는, 도 10에 도시된 바와 같이, 유사도를 결정할 수 있다. 도 10은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠들 간의 유사도를 계산하는 예를 도시한다. 도 10을 참고하면, 유사도 결정부(630)는 RoBERTa 모델(1020-1)을 이용하여 콘텐츠1의 입력 시퀀스형 텍스트 데이터인 <콘텐츠1 Data>(1002a)로부터 콘텐츠1의 벡터(1004a)를 획득하고, RoBERTa 모델(1020-2)을 이용하여 콘텐츠 2의 입력 시퀀스형 텍스트 데이터인 <콘텐츠2 Data>(1002b)로부터 콘텐츠2의 벡터(1004b)를 획득할 수 있다. 여기서, 2개의 RoBERTa 모델들(1020-1, 1020-2)이 사용되는 것으로 표현되었으나, 이는 각 콘텐츠 데이터 당 하나의 벡터가 획득됨을 강조하기 위한 것이고, 유사도 결정부(630)는 하나의 RoBERTa 모델들을 반복적으로 사용하거나 또는 병렬 처리할 수 있다. 유사도 결정부(630)는 벡터들의 유사도를 계산하는 유사도 계산 블록(1040)을 이용하여 콘텐츠1의 벡터(1004a) 및 콘텐츠2의 벡터(1004b)의 유사도를 계산할 수 있다. 예를 들어, 유사도 계산 블록(1040)은 코사인(cosine) 유사도 알고리즘에 기반하여 유사도를 계산할 수 있다. 콘텐츠1의 벡터(1004a) 및 콘텐츠2의 벡터(1004b)의 유사도는 콘텐츠1 및 콘텐츠2의 유사도(1006)로 해석될 수 있다.
일 실시예에 따르면, 유사도 결정부(630)는 모델 학습부(620)에서 장르 추론 시에 사용되는 모델에서 텍스트 분류 헤드 레이어를 제외하고, 언어모델의 마지막 은닉층의 임베딩 값들을 이용하여 해당 콘텐츠의 입력 시퀀스형 텍스트 데이터에 대한 벡터 값을 결정할 수 있다. 다시 말해, 유사도를 결정하기 위해 사용되는 모델 및 미세 조정을 위해 사용되는 모델은 서로 다른 구조를 가질 수 있다. 즉, 미세 조정을 위한 학습 단계에서의 모델은 장르를 예측하기 위한 헤드 레이어를 포함하나, 유사도를 결정하는 단계에서의 모델은 헤드 레이어를 포함하지 아니하고, 유사도 계산 블록을 더 포함할 수 있다.
유사도 결정부(630)는 다양한 실시예들에 따라 각 콘텐츠 아이템의 벡터, 즉, 유사도 계산에 이용될 입력 텍스트 벡터를 획득할 수 있다. 입력 텍스트 벡터를 결정하기 위한 실시예들은 다음과 같다.
일 실시예에 따라, 풀러 출력(pooler output)을 이용하는 방식이 적용될 수 있다. 구체적으로, 풀러 출력을 이용하는 경우, 언어모델의 [CLS] 토큰의 마지막 은닉층 출력 벡터가 입력 텍스트 벡터로서 사용된다.
일 실시예에 따라, 마지막 은닉 상태(last hidden states) 값들의 평균을 이용하는 방식이 적용될 수 있다. 마지막 은닉 상태 값들의 평균을 이용하는 경우, 언어모델의 모든 단어의 마지막 은닉층 출력 벡터에 대해 평균 풀링(average pooling)을 통해 얻어진 벡터가 입력 텍스트 벡터로 사용된다.
일 실시예에 따라, 마지막 은닉 상태 값들의 최대값을 이용하는 방식이 적용될 수 있다. 마지막 은닉 상태 값들의 최대값을 이용하는 경우, 언어모델의 모든 단어의 마지막 은닉층 출력 벡터에 대해 맥스 풀링(max pooling)을 통해 얻어진 벡터가 입력 텍스트 벡터로 사용된다.
전술한 다양한 실시예들 중, 유사도 결정부(630)는 마지막 은닉 상태 값들의 평균을 이용하는 방식에 따라 유사도 계산을 위한 입력 텍스트 벡터를 획득할 수 있다. 이는 후술되는 유사도 테스트 셋 분류 기준으로, 상술한 방식들에 대한 실험 결과, 마지막 은닉 상태 값들의 평균을 이용하는 방식의 성능이 가장 높은 것으로 확인되었기 때문이다. 구체적으로, 마지막 은닉 상태의 최대값을 이용하는 방식에 따르는 경우 및 풀러 출력을 이용하는 방식에 따르는 경우를, 마지막 은닉 상태 값들의 평균을 이용하는 방식과 비교한 결과, 제1종 정확도 및 제2종 정확도가 모두 하락하였다. 여기서, 제1종 정확도는 기준 콘텐츠 아이템과 유사한 콘텐츠 아이템 간의 유사도가 기준 콘텐츠 아이템 및 덜 유사한 콘텐츠 아이템 간의 유사도보다 높으면 올바르게 판단한 것으로 판정함으로써 계산되는 정확도를 의미하고, 제2종 정확도2는 기준 콘텐츠 아이템 및 유사한 콘텐츠 아이템 간의 유사도가 기준 콘텐츠 아이템 및 상이한 콘텐츠 아이템 간의 유사도보다 높으면 올바르게 판단한 것으로 판정함으로써 계산되는 정확도를 의미한다.
추가적으로, 유사도 결정부(630)는 언어모델의 마지막 은닉 상태 값들 중 특정 피처의 위치에 가중치를 부여할 수 있다. 가중치를 부여하는 실시예들은 다음과 같다. 이하 설명에서는 이해를 돕기 위한 예시로 2의 가중치(예: 2배)를 적용하는 경우를 가정하여 설명하나, 가중치가 2로 한정되는 것은 아니다. 예를 들어, 가중치는 k일 수 있으며, k는 1보다 큰 실수일 수 있다.
일 실시예에 따라, 해시태그 값들에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 해시태그 영역을 나타내는 스페셜 토큰인 [TAG]와 [/TAG] 사이에 위치한 토큰들에 대응되는 벡터 값들에 2의 가중치가 부여될 수 있다.
일 실시예에 따라, 감독 값에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 감독 영역을 나타내는 스페셜 토큰인 [DIR]와 [/DIR] 사이에 위치한 토큰들에 대응되는 벡터 값들에 2의 가중치가 부여될 수 있다.
일 실시예에 따라, 타이틀 및 시놉시스 값들에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 [SEP]의 앞뒤에 위치한 토큰들에 대응되는 벡터 값들에 2의 가중치가 부여될 수 있다.
일 실시예에 따라, 해시태그 값과 다른 하나의 피처 값(예: 감독 값, 타이틀 값, 또는 시놉시스 값)에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 [TAG]와 [/TAG] 사이에 위치한 토큰들, 및 [DIR]와 [/DIR] 사이에 위치한 토큰, [SEP]의 앞에 위치한 토큰, 또는 [SEP]의 뒤에 위치한 토큰 중 어느 하나의 토큰에 대응되는 벡터 값들에 2의 가중치가 부여될 수 있다.
전술한 다양한 실시예들과 같이, 유사도 결정부(630)는 마지막 은닉층의 벡터 값들 중 특정 피처의 위치에 대응되는 벡터 값들에 가중치를 부여할 수 있다. 유사도 결정부(630)는 가중치를 부여한 후, 마지막 은닉층의 벡터 값들의 평균을 결정함으로써 유사도 계산을 위한 입력 텍스트 벡터를 획득할 수 있다.
콘텐츠 결정부(640)는 유사도 결정부(630)에서 결정된 콘텐츠 아이템들 간의 유사도를 기반으로, 기준 콘텐츠 아이템과 유사한 콘텐츠 아이템들을 결정할 수 있다. 콘텐츠 결정부(640)는 기준 콘텐츠 아이템에 대한 각 콘텐츠 아이템의 유사도를 확인하고, 유사도에 기반하여 콘텐츠 아이템 목록을 생성할 수 있다. 예를 들어, 콘텐츠 결정부(640)는 서버(120)에 저장된 콘텐츠 아이템들 중 기준 콘텐츠 아이템과의 유사도에 대한 내림차순으로 지정된 개수의 콘텐츠 아이템들을 선택하고, 선택된 콘텐츠 아이템들을 포함하는 콘텐츠 목록을 생성할 수 있다. 즉, 콘텐츠 목록에 포함되는 콘텐츠 아이템들은 유사도에 따라 나열될 수 있다.
상술한 설명에서, 모델 학습부(620)는 콘텐츠들의 텍스트 메타 데이터의 빈출 단어들을 기본 언어모델의 어휘사전에 추가하여 학습할 수 있다. 빈출 단어가 어휘사전에 추가될 경우, 언어모델에서 빈출단어는 분절되지 않고 단일 토큰으로 인식될 수 있다. 예를 들어, 대분류 장르를 나타내는 빈출 단어들이 어휘사전에 추가될 수 있다. 대분류 장르를 나타내는 빈출 단어들이 어휘사전에 추가될 경우, 대분류 장르를 나타내는 빈출 단어가 언어모델에서 단일 토큰으로 인식됨으로써, 언어모델이 인식 가능한 시퀀스 길이가 늘어나서 성능이 더 높게 나타날 수 있다.
전술한 실시예들에서, 모델 학습부(620)는 서버(120)에 포함되는 것으로 설명되었다. 즉, 학습된 언어모델을 사용하는 서버(120)가 언어모델에 대한 학습을 수행할 수 있다. 하지만, 다른 실시예에 따라, 언어모델에 대한 학습은 서버(120)가 아닌 다른 엔티티에 의해 수행될 수 있다. 이 경우, 모델 학습부(620)는 서버(120)에 포함되지 아니할 수 있고, 서버(120)는 제3의 장치로부터 학습된 언어모델에 대한 정보를 수신하고, 학습된 언어모델을 구축한 후, 학습된 언어모델을 이용하여 콘텐츠 아이템들 간 유사도를 결정할 수 있다.
도 11은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠를 추천하는 절차의 예를 도시한다. 도 11의 동작 주체는 도 1의 서버(120)일 수 있다.
도 11을 참고하면, S1101 단계에서, 서버는 콘텐츠 아이템의 시퀀스형 텍스트 데이터를 획득한다. 서버는 콘텐츠 아이템 별로 텍스트 메타 데이터를 획득하고, 획득된 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환할 수 있다. 즉, 서버는 콘텐츠 아이템의 메타 데이터에 포함되는 피처들을 구분자들과 함께 연결(concatenate)함으로써 시퀀스형 텍스트 데이터를 획득할 수 있다. 예를 들어, 구분자들은 분리 토큰, 스페셜 토큰(예: 장르 토큰, 감독 토큰, 배우 토큰, 해시태그 토큰) 중 적어도 하나를 포함할 수 있다. 일 실시예에 따르면, 서버는 콘텐츠 아이템의 시퀀스형 텍스트 데이터에서 장르 관련 토큰들을 제거함으로써, 장르 관련 토큰들을 포함하지 아니하는 입력 시퀀스형 텍스트 데이터를 획득할 수 있다.
S1103 단계에서, 서버는 학습된 언어모델을 이용하여 콘텐츠 아이템들 간 유사도를 결정한다. 서버는 학습된 언어모델을 이용하여 콘텐츠 아이템 별로 획득된 입력 시퀀스형 텍스트 데이터로부터 콘텐츠 아이템 별 벡터 값을 획득할 수 있다. 서버는 콘텐츠 아이템 별 벡터 값을 기반으로 콘텐츠 아이템들의 유사도를 결정할 수 있다. 예를 들어, 서버는 학습된 언어모델에 제1 콘텐츠 아이템의 입력 시퀀스형 텍스트 데이터를 입력함으로써 제1 콘텐츠의 벡터를 획득하고, 학습된 언어모델에 제2 콘텐츠 아이템의 입력 시퀀스형 텍스트 데이터를 입력함으로써 제2 콘텐츠의 벡터를 획득할 수 있다. 서버는 유사도 알고리즘(예: 코사인 유사도 알고리즘)을 이용하여 두 벡터들의 유사도를 계산할 수 있다. 서버는 계산된 유사도를 제1 콘텐츠 아이템 및 제2 콘텐츠 아이템 간의 유사도로 결정할 수 있다. 이를 통해, 서버는 기준 콘텐츠 아이템 및 다른 콘텐츠 아이템들 각각 간의 유사도를 계산할 수 있다.
S1105 단계에서, 서버는 적어도 하나의 유사한 콘텐츠 아이템을 제공한다. 서버는 S1103 단계에서 결정된 유사도를 기반으로 기준 콘텐츠 아이템에 유사한 적어도 하나의 콘텐츠 아이템을 결정할 수 있다. 즉, 서버는 콘텐츠들 간의 유사도를 기반으로 기준 콘텐츠 아이템에 유사한 적어도 하나의 콘텐츠 아이템을 제공할 수 있다. 예를 들어, 서버는 보유한 콘텐츠 아이템들 중 기준 콘텐츠 아이템과의 유사도의 내림차순으로 지정된 개수의 콘텐츠 아이템들 또는 임계치 이상의 유사도를 가지는 콘텐츠 아이템들을 선택할 수 있다. 예를 들어, 서버는 다른 기준에 따라 지정된 후보 콘텐츠 아이템들 중 콘텐츠 아이템과의 유사도의 내림차순으로 지정된 개수의 콘텐츠 아이템들 또는 임계치 이상의 유사도를 가지는 콘텐츠 아이템들을 선택할 수 있다. 그리고, 서버는 선택된 콘텐츠 아이템들에 대한 정보를 포함하는 콘텐츠 목록을 생성하고, 생성된 콘텐츠 목록을 클라이언트 장치로 제공할 수 있다. 다시 말해, 서버는 콘텐츠 목록을 클라이언트 장치에게 송신할 수 있다. 이때, 구체적인 콘텐츠 목록의 형식은 유사한 콘텐츠를 제공하는 환경, 서비스 등에 따라 달라질 수 있다.
일 실시예에 따르면, 서버는 보유 중인 모든 콘텐츠 아이템들 간의 유사도를 미리 계산하여 저장할 수 있다. 서버는 지정된 이벤트 발생 시, 기준 콘텐츠 아이템을 결정하고, 기준 콘텐츠 아이템과 다른 콘텐츠 아이템들 간의 미리 계산된 유사도를 기반으로 콘텐츠 목록을 생성 및 제공할 수 있다. 예를 들어, 지정된 이벤트는 클라이언트 장치의 콘텐츠 목록 요청 이벤트, 또는 클라이언트 장치의 추천 콘텐츠 요청 이벤트 중 적어도 하나를 포함할 수 있다. 나열된 이벤트들은 이해를 돕기 위한 예시일 뿐, 지정된 이벤트는 이에 제한되지 아니한다. 여기서, 기준 콘텐츠 아이템은 클라이언트 장치 및/또는 사용자의 소비 이력에 따른 선호 콘텐츠를 기반으로 결정될 수 있다. 콘텐츠 목록은 보유 중인 콘텐츠 아이템들 중 기준 콘텐츠 아이템과 유사도가 상대적으로 높은 일부 콘텐츠 아이템들을 포함할 수 있다.
도 12는 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다. 이하 도 12의 적어도 일부 동작들은 순차적으로 수행될 수도 있고, 병렬적으로 수행될 수도 있다. 예를 들어, 도 12의 일부 동작들은 적어도 일시적으로 동일한 시점에 수행될 수 있다. 이하에서 도 12의 적어도 일부 동작은 도 13을 참고하여 설명할 것이다.
도 12를 참고하면, S1201 단계에서, 서버는 콘텐츠에 대한 텍스트 메타 데이터를 획득한다. 예를 들어, 도 13에 도시된 바와 같이, 서버는 콘텐츠의 제목, 장르, 감독, 배우, 해시태그, 및 시놉시스를 포함하는 텍스트 메타 데이터(1310)를 획득할 수 있다.
S1203 단계에서, 서버는 텍스트 메타 데이터에 대한 토크나이징을 수행한다. 예를 들어, 서버는 바이트 페어 인코딩(byte pair encoding, BPE) 알고리즘 또는 형태소 분석기를 활용하여 텍스트 메타 데이터를 토큰 단위로 구분할 수 있다. 바이트 페어 인코딩 알고리즘은, 대상 데이터에서 가장 많이 등장한 문자열을 병합해서 데이터를 압축하는 정보 압축 알고리즘으로, 어휘 구축 단계와 토큰화 단계로 이루어질 수 있다. 구체적으로, 바이트 페어 인코딩 알고리즘은 데이터에서 자주 등장하는 문자열을 병합하고, 병합된 문자열을 어휘 집합에 추가하여 어휘 집합을 구축한 후, 대상 데이터 내 각 어절에 어휘 집합의 서브워드가 포함되어 있을 때, 해당 서브워드를 어절에서 분리하는 알고리즘이다. 형태소 분석기는, 대상 데이터를 최소 의미 단위인 형태소로 분절하는 기법이다.
S1205 단계에서, 서버는 시퀀스형 텍스트 데이터를 획득한다. 예를 들어, 토큰 단위로 구분된 데이터에 적어도 하나의 구분자를 추가하여 시퀀스형 텍스트 데이터를 획득할 수 있다. 예를 들어, 시퀀스형 텍스트 데이터는 도 13과 같이 결정될 수 있다. 도 13은 본 개시의 일 실시예에 따른 언어모델을 이용하는 언어모델의 학습의 예를 도시한다. 예를 들어, 도 13을 참고하면, 서버는 메타 데이터(1310)를 토큰들로 구분하고, 토큰들에 적어도 하나의 분리 토큰 및 적어도 스페셜 토큰(예: 장르 토큰, 감독 토큰, 배우 토큰, 해시태그 토큰 등)을 삽입함으로써 시퀀스형 텍스트 데이터(1320)를 획득할 수 있다.
S1207 단계에서, 서버는 예측 모델의 입력 및 타겟을 설정한다. 서버는 시퀀스형 텍스트 데이터에서 장르 관련 토큰들을 제거하여 입력 시퀀스형 텍스트 데이터를 획득하고, 장르 정보 토큰을 기반으로 타겟 레이블을 설정할 수 있다. 예를 들어, 도 13을 참고하면, 서버는 시퀀스형 텍스트 데이터(1320)에서 [GENRE] 및 [/GENRE] 사이에 "드라마" 토큰과 "음악" 토큰이 존재함을 인식하고, 이들이 제거된 입력 시퀀스형 텍스트 데이터(1330)를 예측 모델의 입력으로 설정할 수 있다. 또한, 서버는 시퀀스형 텍스트 데이터(1320)에서 [GENRE] 및 [/GENRE] 사이에 위치한 "드라마" 토큰과 "음악" 토큰을 기반으로 타겟 레이블을 설정할 수 있다.
S1209 단계에서, 서버는 언어모델 기반의 예측모델을 이용하여 입력 시퀀스형 텍스트 데이터에 대한 장르를 추론하는 학습을 수행한다. 예를 들어, 서버는 도 13에 도시된 바와 같이, 입력 시퀀스형 텍스트 데이터(1330)에 대한 장르가 “드라마”, 및 “음악”으로 추론되도록 예측모델(1340)에 대한 학습을 수행할 수 있다. 이때, 예측모델(1340)은 타겟으로 설정된 장르를 추론해내도록 손실(loss) 값을 역전파하여 학습될 수 있다. 이를 통해, 제목, 시놉시스, 및 해시태그의 토큰의 벡터들이 장르 토큰의 의미정보를 반영할 수 있도록, 예측모델(1340)에서 각 토큰의 벡터를 도출하는 언어모델의 파라미터들이 업데이트될 수 있다.
상술한 바와 같이 학습된 언어모델은, 시퀀스형 텍스트 데이터 내에 장르 정보가 없는 경우에도, 시퀀스형 텍스트 데이터 내 다른 종류의 피처들(예: 제목, 시놉시스)로부터 장르 피처의 정보가 함축된 벡터를 반환할 수 있다.
도 14는 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠의 유사도를 결정하는 절차의 예를 도시한다. 도 14의 동작들은 도 11의 동작 S1103의 일예로서, 2개의 콘텐츠 아이템들 간 유사도를 판단하는 절차로 이해될 수 있다. 이하 도 14의 적어도 일부 동작들은 순차적으로 수행될 수도 있고, 병렬적으로 수행될 수도 있다. 예를 들어, 도 14의 일부 동작들은 적어도 일시적으로 동일한 시점에 수행될 수 있다.
도 14를 참고하면, S1401 단계에서, 서버는 기준 콘텐츠 아이템의 벡터를 결정한다. 여기서, 벡터는 텍스트 메타 데이터를 이용하여 결정되는 입력 시퀀스형 텍스트 데이터에 기반하여 결정될 수 있다. 예를 들어, 서버는 기준 콘텐츠 아이템의 텍스트 메타 데이터를 획득하고, 획득된 텍스트 메타 데이터에 대한 토크나이징을 수행한 후, 적어도 하나의 구분자를 삽입하고 장르 관련 토큰들을 제거함으로써, 입력 시퀀스형 텍스트 데이터를 획득할 수 있다. 그리고, 서버는 학습된 언어모델을 이용하여 기준 콘텐츠 아이템의 입력 시퀀스형 텍스트 데이터에 대응하는 벡터를 획득할 수 있다. 구체적으로, 서버는 입력 시퀀스형 텍스트 데이터를 학습된 언어모델에 입력하고, 언어모델의 출력 데이터를 획득함으로써, 벡터, 즉, 임베딩 값을 결정할 수 있다. 학습된 언어모델은 도 12에서 설명한 바와 같이 학습된 언어모델일 수 있다. 다만, 유사도 계산을 위해 언어모델에서 클래스(예: 장르)를 추론할 때에 이용되는 헤드 레이어를 제외하고, 언어모델 자체의 마지막 은닉계층 임베딩 값을 콘텐츠의 텍스트 메타 데이터에 대한 임베딩 값으로 사용할 수 있다.
S1401 단계에서, 서버는 기준 콘텐츠 아이템의 벡터를 결정한다. 여기서, 벡터는 텍스트 메타 데이터를 이용하여 결정되는 입력 시퀀스형 텍스트 데이터에 기반하여 결정될 수 있다. 예를 들어, 서버는 기준 콘텐츠 아이템의 텍스트 메타 데이터를 획득하고, 획득된 텍스트 메타 데이터에 대한 토크나이징을 수행한 후, 적어도 하나의 구분자를 삽입하고 장르 관련 토큰들을 제거함으로써, 입력 시퀀스형 텍스트 데이터를 획득할 수 있다. 그리고, 서버는 학습된 언어모델을 이용하여 기준 콘텐츠 아이템의 입력 시퀀스형 텍스트 데이터에 대응하는 벡터를 획득할 수 있다. 구체적으로, 서버는 입력 시퀀스형 텍스트 데이터를 학습된 언어모델에 입력하고, 언어모델의 출력 데이터를 획득함으로써, 벡터, 즉, 임베딩 값을 결정할 수 있다. 학습된 언어모델은 도 12에서 설명한 바와 같이 학습된 언어모델일 수 있다. 다만, 유사도 계산을 위해 언어모델에서 클래스(예: 장르)를 추론할 때에 이용되는 헤드 레이어를 제외하고, 언어모델 자체의 마지막 은닉계층 임베딩 값을 콘텐츠의 텍스트 메타 데이터에 대한 임베딩 값으로 사용할 수 있다. 이때, 일 실시예에 따라, 서버는 풀러 출력을 이용하는 방식, 마지막 은닉 상태 값들의 평균을 이용하는 방식, 또는 마지막 은닉 상태 값들의 최대값을 이용하는 방식 중 어느 하나를 이용하여, 유사도 계산을 위한 콘텐츠의 벡터를 결정할 수 있다. 또한, 일 실시예에 따라, 서버는 유사도 계산을 위한 콘텐츠의 벡터 결정 시, 마지막 은닉 상태 값들 중 특정 피처의 위치에 해당하는 값에 가중치를 부여할 수 있다.
S1403 단계에서, 서버는 비교 대상 콘텐츠 아이템의 벡터를 결정한다. 여기서, 벡터는 텍스트 메타 데이터를 이용하여 결정되는 입력 시퀀스형 텍스트 데이터에 기반하여 결정될 수 있다. 예를 들어, 서버는 비교 대상 콘텐츠 아이템의 텍스트 메타 데이터를 획득하고, 획득된 텍스트 메타 데이터에 대한 토크나이징을 수행한 후, 적어도 하나의 구분자를 삽입하고 장르 관련 토큰들을 제거함으로써 입력 시퀀스형 텍스트 데이터를 획득할 수 있다. 그리고, 서버는 학습된 언어모델을 이용하여 비교 대상 콘텐츠 아이템의 입력 시퀀스형 텍스트 데이터에 대응하는 벡터를 획득할 수 있다. 구체적으로, 서버는 입력 시퀀스형 텍스트 데이터를 학습된 언어모델에 입력하고, 언어모델의 출력 데이터를 획득함으로써, 벡터, 즉, 임베딩 값을 결정할 수 있다. 학습된 언어모델은 도 12에서 설명한 바와 같이 학습된 언어모델일 수 있다. 다만, 유사도 계산을 위해 언어모델에서 클래스(예: 장르)을 추론할 때에 이용되는 헤드 레이어를 제외하고, 언어모델 자체의 마지막 은닉계층 임베딩 값을 콘텐츠의 텍스트 메타 데이터에 대한 임베딩 값으로 사용할 수 있다. 이때, 일 실시예에 따라, 서버는 풀러 출력을 이용하는 방식, 마지막 은닉 상태 값들의 평균을 이용하는 방식, 또는 마지막 은닉 상태 값들의 최대값을 이용하는 방식 중 어느 하나를 이용하여, 유사도 계산을 위한 콘텐츠의 벡터를 결정할 수 있다. 또한, 일 실시예에 따라, 서버는 유사도 계산을 위한 콘텐츠의 벡터 결정 시, 마지막 은닉 상태 값들 중 특정 피처의 위치에 해당하는 값에 가중치를 부여할 수 있다.
S1405 단계에서, 서버는 콘텐츠 아이템들 간의 유사도를 계산할 수 있다. 예를 들어, 서버는 코사인 유사도 알고리즘에 기반하여 기준 콘텐츠 아이템 및 비교 대상 콘텐츠 아이템 간의 유사도를 결정할 수 있다. 예를 들어, 서버는 기준 콘텐츠 아이템의 벡터 및 비교 대상 콘텐츠 아이템의 벡터의 유사도를 계산하고, 계산된 유사도를 기준 콘텐츠 아이템 및 비교 대상 콘텐츠 아이템의 유사도로 결정할 수 있다.
상술한 설명에서, 콘텐츠 아이템들 간 유사도 결정을 위한 콘텐츠 아이템 별 벡터 값을 획득하기 위해, 학습된 언어모델의 입력으로 장르 관련 토큰이 제거된 입력 시퀀스형 텍스트 데이터를 이용하였다. 그러나, 본 개시의 실시예들은 이에 한정되니 않는다. 예를 들어, 본 개시의 실시예에 따른 서버 또는 서버의 유사도 결정부(630)는 장르 관련 토큰을 포함하는 시퀀스형 텍스트 데이터를 학습된 언어모델의 입력으로 이용할 수도 있다. 예컨대, 서버 또는 서버의 유사도 결정부(630)는 표 1에 나타낸 바와 같은 장르 관련 토큰을 포함하는 시퀀스형 텍스트 데이터를 학습된 언어모델에 입력함으로써, 콘텐츠 아이템별 벡터 값을 획득한 후, 콘텐츠 아이템들 간의 유사도를 결정할 수도 있다.
도 15a는 본 개시의 실시예에 적용 가능한 트랜스포머의 구조의 예를 도시하고, 도 15b는 본 개시의 실시예에 적용 가능한 트랜스포머의 인코더 및 디코더 블록들의 상세 구조의 예를 도시한다.
도 15a 및 도 15b를 참고하면, 트랜스포머(1500)는 N개의 인코더 블록들(1510-1 내지 1510-N), 및 N개의 디코더 블록들(1520-1 내지 1520-N)을 포함할 수 있다. N개의 인코더 블록들(1510-1 내지 1510-N) 각각은 셀프 어탠션(self-attention) 블록(1511) 및 피드 포워드(feed forward) 블록(또는 뉴럴 네트워크)(1513)을 포함할 수 있다. N개의 디코더 블록들(1520-1 내지 1520-N) 각각은 셀프-어탠션 블록(1521), 인코더-디코더 어탠션 블록(1523), 및 피드 포워드 블록(1525)을 포함할 수 있다.
트랜스포머(1500)의 입력은 토큰화되어 임베딩되고, 포지셔널 인코딩(positional encoding) 벡터와 더해진 후, N개의 인코더 블록들(1510-1 내지 1510-N) 중 가장 하단에 위치한 제1 인코더 블록(1510-1)에 입력될 수 있다. N개의 인코더 블록들(1510-1 내지 1510-N) 각각의 셀프-어탠션 블록(1511)은 입력되는 여러 단어들 중 집중할 단어를 결정할 수 있다. 셀프-어탠션 블록(1511)은 입력되는 임베딩 벡터에 세 개의 학습 가능한 행렬들을 각각 곱하여, 쿼리 벡터, 키 벡터, 및 밸류 벡터를 생성할 수 있다. 셀프-어탠션 블록(1511)은 복수의 어탠션 헤드를 가지고, 복수의 쿼리 벡터, 키 벡터, 및 밸류 벡터를 이용하여 각 목적에 맞게 각 벡터들을 각각 다른 표현 공간으로 나타내는 멀티-헤드(multi-headed) 어탠션 블록일 수 있다. 셀프-어탠션 블록(1511)의 출력은 피드 포워드 블록(1513)의 신경망을 통과하여 다음 인코더 블록(예: 제2 인코더 블록(1510-2))으로 입력될 수 있다.
N개의 인코더 블록들(1510-1 내지 1510-N) 중 가장 상단에 위치한 제N 인코더 블록(1510-N)의 출력은 어탠션 벡터들인 키 벡터와 밸류 벡터일 수 있으며, 이들은 N개의 디코더 블록들(1520-1 내지 1520-N) 각각의 인코더-디코더 어탠션 블록(1523)으로 입력될 수 있다.
트랜스포머(1500)의 이전 출력은 N개의 디코더 블록들(1520-1 내지 1520-N) 중 가장 하단에 위치한 제1 디코더 블록(1520-1)의 입력으로 이용될 수 있다. 예를 들어, 트랜스포머(1500)의 이전의 출력은 토큰화되어 임베딩되고, 포지셔널 인코딩 벡터와 더해진 후에 제1 디코더 블록(1520-1)에 입력될 수 있다.
N개의 디코더 블록들(1520-1 내지 1520-N) 각각의 셀프-어탠션 블록(1521)은 N개의 인코더 블록들(1510-1 내지 1510-N) 각각의 셀프-어탠션 블록(1511)과 유사하다. 그러나, N개의 디코더 블록들(1520-1 내지 1520-N) 각각의 셀프-어탠션 블록(1521)은 출력 시퀀스 내에서 현재 위치의 이전 위치들에 대해서만 어탠션할 수 있도록 마스킹을 수행한다는 점에서 N개의 인코더 블록들(1510-1 내지 1510-N) 각각의 셀프-어탠션 블록(1511)과 차이를 가진다.
N개의 디코더 블록들(1520-1 내지 1520-N) 각각의 인코더-디코더 어탠션 블록(1523)은 셀프-어탠션 블록(1521)에서 출력되는 쿼리 벡터와 제N 인코더 블록(1510-N)으로부터 출력되는 키 벡터 및 밸류 벡터를 입력으로 하여 출력을 생성할 수 있다.
N개의 디코더 블록들(1520-1 내지 1520-N) 중 가장 상단에 위치한 제N 디코더 블록(1520-N)의 출력 벡터는, 선형 계층(linear layer)(1530) 및 소프트맥스 계층(softmax layer)(1540)에 입력될 수 있다. 선형 계층(1530) 및 소프트맥스 계층(1540)은 제N 디코더 블록(1520-N)의 출력 벡터를 하나의 단어로 변경할 수 있다. 선형 계층(1530)은 완전 연결된(fully-connected) 신경망으로 구성되며, 제N 디코더 블록(1520-N)의 출력 벡터를 더 큰 사이즈의 벡터인 로짓(logits) 벡터로 투영시킬 수 있다. 투영된 로짓 벡터의 각 셀은 대응되는 각 단어에 대한 점수를 가질 수 있다. 소프트맥스 계층(1540)은 각 셀의 점수들을 확률로 변환할 수 있다. 각 셀의 변환된 확률 값들은 모두 양수 값을 가지며, 각 확률 값들의 합은 1이 될 수 있다. 이때, 가장 높은 확률 값을 가지는 셀에 해당하는 단어가 해당 소프트맥스 계층(1540)의 최종 결과물로서 출력될 수 있다. 소프트맥스 계층(1540)의 출력은 다시 임베딩되어 포지셔널 인코딩 벡터와 더해진 후, 가장 하단에 위치한 제1 디코더 블록(1520-1)으로 입력될 수 있다.
N개의 인코더 블록들(1510-1 내지 1510-N) 및 N개의 디코더 블록들(1520-1 내지 1520-N) 각각에 포함되는 서브 블록들은 잔차 연결(residual connection) 방식으로 연결될 수 있으며, 각 서브 블록들 사이에는 계층 정규화(layer-normalization)(또는 Add & normalize) 블록이 포함될 수 있다. 계층 정규화 블록은, 셀프 어탠션 블록(1511, 1521)의 입력과 출력을 합하여 한 계층에서 과도하게 데이터가 변경되는 것을 방지할 수 있다.
트랜스포머(1500)는 문장 내 단어들의 관계를 추적하여 문장의 맥락과 의미를 학습하는 신경망으로, 라벨링된 데이터 세트 없이 요소들 사이의 패턴을 수학적으로 찾아낼 수 있다. 따라서, 트랜스포머(1500)는 데이터 세트를 생성하는 과정이 필요 없고, 병렬 프로세싱에 적합하기 때문에 빠른 속도를 가질 수 있다.
RNN(Recurrent Neural Network)은 단어의 위치에 따라 단어를 순차적으로 입력받아 처리하는 특성으로 인해 각 단어의 위치 정보(position information)를 가질 수 있어 자연어 처리 분야에서 많이 활용되었다. 그러나, RNN은 병렬 처리가 어렵고, 장기 의존성(long-term dependency)을 갖는 문제점이 있다. 반면, 트랜스포머는 RNN 대신 어탠션 메커니즘을 이용하여 입/출력 간 디팬던시를 포착할 수 있다. 또한, 트랜스포머는 학습 시 인코더 블록에서 각 단어의 위치(position)에 어탠션(attention)을 적용, 즉, 쿼리(query)와 가장 밀접한 연관성을 가지는 값(value)을 강조하고, 디코더 블록에서 마스킹(masking) 기법을 이용하므로, 병렬 처리가 가능하다.
트랜스포머의 인코더/디코더 입/출력의 크기, 인코더/디코더의 개수, 어탠션 헤드의 개수, 및/또는 피드 포워드 신경망의 은닉층의 크기 등은 하이퍼 파라미터로 사용자에 의해 변경될 수 있다.
BERT 모델은 상술한 바와 같은 트랜스포머 기반의 언어 모델로, 트랜스포머의 일부 구성요소를 치환, 또는 삭제하여 사용할 수 있다. 도 16은 본 개시의 실시예에 적용 가능한 BERT 모델의 구조의 예를 도시한다. 예를 들어, BERT 모델은 도 16에 도시된 바와 같이, 트랜스포머에서 디코더 블록들(1520-1 내지 1520-N)을 제외하고, 인코더 블록들(1510-1 내지 1510-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 모델의 다른 특징은 양방향 모델을 적용하여 문장의 앞과 뒤의 문맥을 고려하는 것으로, 이전보다 더 높은 정확도를 나타낼 수 있다는 점이다.
상술한 바와 같이, 본 개시의 실시예에 따라 학습된 언어모델은, 여러 종류의 피처의 의미정보 및/또는 문맥정보를 복합적으로 고려하여 콘텐츠의 벡터를 획득하고, 이를 기반으로 콘텐츠들 간의 유사도를 계산한다. 따라서, 본 개시의 실시예에 따라 언어모델에 기반하여 콘텐츠 간의 유사도를 판단하는 방식은 단순히 유사한 장르를 필터링하는 것과는 상이하다 할 수 있다.
본 개시에서 유사도는 절대적인 개념이 아니라 상대적인 개념이므로, 언어모델의 성능 검증을 위한 테스트 셋은 상대적인 개념을 잘 반영해야 할 것이다. 절대적인 개념이 아니라는 것의 의미는, 두 콘텐츠의 비교만으로는 두 콘텐츠가 유사한지 여부를 결정할 수 없다는 의미다. 따라서, 본 개시에서는 유사도에 상대적인 개념을 반영하기 위해, 3개 콘텐츠를 이용한 3자 비교를 통해 콘텐츠의 유사도를 분류하는 방식을 설계하였다. 예를 들어, 3개의 콘텐츠들 중에서 기준 콘텐츠와 더 유사한 콘텐츠의 유사도가 기준 콘텐츠와 덜 유사한 콘텐츠의 유사도보다 높을 때, 유사도가 정확하게 결정되었다고 판단하는 것이다. 본 개시에서는 유사도의 상대적인 개념을 보완하면서, 테스트 셋의 정확도를 향상시키기 위해, 3명 이상의 다중 검수자가 동일하게 판단한 객관적인 케이스들만을 테스트 셋으로 활용하였다. 이는, 콘텐츠의 유사도를 판단함에 있어, 특정 피처에 가중치를 두는 검수자의 주관이 반영될 수 있으므로, 이를 최대한 배제하기 위함이다. 본 개시의 실시예에서는, 유사도 비교 기준을 쉬운 기준과 어려운 기준으로 구축하였다. 이는, 모델에 따라 어려운 기준의 성능 향상과 쉬운 기준의 성능 향상이 반드시 비례하지 않을 수 있기 때문에, 다방면으로 고려하기 위함이다.
구체적으로, 아래와 같은 유사도 테스트 셋에 대한 기준을 기반으로, 도 17에 도시된 바와 같은 테스트 셋이 설계되었다. 도 17은 본 개시의 일 실시예에 따른 테스트 셋의 예를 도시한다.
1. 유사도 테스트 셋 기준
a. 유사한 콘텐츠: 장르 및 해시태그가 기준 콘텐츠의 장르 및 해시태그와 공통점 있는 콘텐츠를 유사한 콘텐츠로 판단한다.
b. 덜 유사한 콘텐츠: 장르가 기준 콘텐츠의 장르와 공통점이 있으나, 해시태그는 기준 콘텐츠의 해시태그와 공통점이 없는 콘텐츠를 덜 유사한 콘텐츠로 판단한다.
c. 상이한 콘텐츠: 장르 및 해시태그가 기준 콘텐츠의 장르 및 해시태그와 공통점이 없는 콘텐츠를 상이한 콘텐츠로 판단한다.
상술한 바와 같은 장르 및 해시태그 이외에 제목 및 시놉시스의 내용을 기본적으로 고려하여 콘텐츠의 유사도를 판단하였다.
2. 유사도 테스트 셋 분류
a. 분류 정확도1: 기준 콘텐츠와 유사한 콘텐츠 간의 유사도가 기준 콘텐츠와 덜 유사한 콘텐츠 간의 유사도보다 높은 경우, 유사도가 정확하게 결정되었다고 판단한다.
b. 분류 정확도2: 기준 콘텐츠와 유사한 콘텐츠 간의 유사도가 기준 콘텐츠와 상이한 콘텐츠 간의 유사도보다 높으면, 유사도가 정확하게 결정되었다고 판단한다.
본 개시의 실시예에서는 예측모델의 일반화 성능을 파악하기 위해, 데이터 분할의 비율을 조율하고 여러 차례의 테스트 셋 성능을 획득 및 분석하였다. 예측모델의 학습 시, 훈련 셋, 검증 셋, 테스트 셋에 대한 훈련 주기(예: 약 1주일) 내에 예측모델에 입력될 신규 콘텐츠 개수를 기반으로 테스트 셋의 규모를 설정하였다.
실제 시스템마다 다르겠지만 훈련 주기 내에 예측모델에 입력될 신규 콘텐츠 개수가 100여건으로 예상되는 상황이라고 가정한다. 이와 같은 가정 하에 테스트 셋, 및 검증 셋으로 각각 100건을 할당하고, 나머지 데이터를 모두 훈련 셋으로 할당하였다. 상술한 바와 같이 데이터들을 랜덤으로 분할하여, 테스트 셋 성능을 분석하는 과정을 여러 차례 반복하였다. 이는, 한 번의 성능 분석보다는 다양한 테스트 셋들을 이용한 여러 차례의 성능 분석 시, 보다 정교한 일반화 성능을 파악할 수 있기 때문이다. 하기 표 4는 세 차례의 랜덤 샘플링으로 훈련 셋, 검증 셋, 테스트 셋을 분할하여 각각의 장르 학습 성능을 비교한 결과를 나타낸다.
모델 종류 테스트 셋 정확도1 테스트 셋 정확도 2
기본 언어모델 78.16% 88.51%
대분류 장르 예측모델 83.50% 96.12%
소분류 장르 예측모델 83.50% 96.12%
표 4를 참고하면, 예측모델은 유사도 테스트 셋 정확도1 및 정확도2의 기준에서 각각 83.50%와 96.12%의 성능을 보였다. 장르 예측을 통해 학습되기 전의 기본 언어모델 성능인 78.16%와 88.51%에 비해 각각 대략 5%, 8% 향상되었다. 이를 통해, 예측모델의 학습 방법이 콘텐츠 텍스트 메타 데이터를 기반으로 유사 콘텐츠를 구별하는 능력을 유의미하게 향상시킴을 알 수 있다.상술한 바와 같은, 본 개시의 실시예들에 따라 학습된 언어모델을 이용한 유사한 콘텐츠 결정 기술은 다양하게 활용될 수 있다. 예를 들어, 기준 콘텐츠 아이템이 특정된 경우, 도 18과 같은 유사한 콘텐츠 목록이 제공될 수 있다. 도 18은 본 개시의 일 실시예에 따라 결정된 유사한 콘텐츠의 활용 예를 도시한다. 도 18을 참고하면, 기준 콘텐츠 아이템(1802)이 지정되면, 기준 콘텐츠 아이템(1802)에 유사한 복수의 콘텐츠 아이템들(1804a, 1804b, 1804c, 1804d)이 결정되고, 기준 콘텐츠 아이템(1802) 및 유사한 복수의 콘텐츠 아이템들(17804a, 1804b, 1804c, 1804d)을 포함하는 목록이 제공될 수 있다. 제공된 목록은 클라이언트 장치에 표시될 수 있다. 이때, 유사한 복수의 콘텐츠 아이템들(1804a, 1804b, 1804c, 1804d)은 기준 콘텐츠 아이템(1802)과의 유사도의 내림차순으로 정렬될 수 있다. 즉, 기준 콘텐츠 아이템(1802)에 가장 가까이 표시된 제1 유사 콘텐츠 아이템(1804a)가 다른 콘텐츠 아이템들(1804b, 1804c, 1804d)보다 큰 유사도를 가질 수 있다. 예를 들어, 기준 콘텐츠 아이템(1802)은 최근에 사용자가 시청한 콘텐츠 아이템이거나, 사용자가 지정한 콘텐츠 아이템일 수 있다.
본 발명의 예시적인 방법들은 설명의 명확성을 위해서 동작의 시리즈로 표현되어 있지만, 이는 단계가 수행되는 순서를 제한하기 위한 것은 아니며, 필요한 경우에는 각각의 단계가 동시에 또는 상이한 순서로 수행될 수도 있다. 본 발명에 따른 방법을 구현하기 위해서, 예시하는 단계에 추가적으로 다른 단계를 포함하거나, 일부의 단계를 제외하고 나머지 단계를 포함하거나, 또는 일부의 단계를 제외하고 추가적인 다른 단계를 포함할 수도 있다.
본 발명의 다양한 실시예는 모든 가능한 조합을 나열한 것이 아니고 본 발명의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다.
또한, 본 발명의 다양한 실시예는 하드웨어, 펌웨어(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 콘텐츠 아이템의 제2 메타 데이터에 포함되는 정보를 포함하는 제2 시퀀스형 텍스트 데이터를 획득하는 단계;
    콘텐츠 아이템들의 메타 데이터에 포함되는 장르 정보를 기반으로 학습된 언어모델을 이용하여, 상기 제1 시퀀스형 텍스트 데이터에 대응하는 제1 벡터 및 상기 제2 시퀀스형 텍스트 데이터에 대응하는 제2 벡터를 결정하는 단계;
    상기 제1 벡터 및 상기 제2 벡터를 이용하여 상기 제1 콘텐츠 아이템 및 상기 제2 콘텐츠 아이템 간 유사도를 결정하는 단계; 및
    상기 유사도에 기반하여 선택된 상기 제2 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템을 포함하는 콘텐츠 목록을 제공하는 단계를 포함하며,
    상기 언어모델은 상기 콘텐츠 아이템들의 시퀀스형 텍스트 데이터에 기반하여 설정되는 입력 및 레이블을 기반으로 상기 콘텐츠 아이템들 각각이 속한 적어도 하나의 장르를 예측하는 훈련을 통해 학습되며,
    상기 입력은, 상기 시퀀스형 텍스트 데이터에 포함된 복수의 토큰들 중에서 장르 영역을 지시하는 스페셜 토큰들 및 상기 스페셜 토큰들 사이에 위치된 적어도 하나의 장르 토큰 중 적어도 하나가 제거됨으로써 설정되고,
    상기 레이블은 상기 제거된 적어도 하나의 장르 토큰에 기반하여 설정되는 방법.
  2. 청구항 1에 있어서,
    상기 언어모델은, 텍스트 분류(text classification) 태스크에 기반하여 상기 콘텐츠 아이템들이 속한 적어도 하나의 장르를 예측하는 훈련을 통해 학습되는 방법.
  3. 청구항 1에 있어서,
    상기 콘텐츠 아이템들의 내용을 설명하는 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환하는 단계;
    상기 시퀀스형 텍스트 데이터에 포함된 복수의 토큰들 중에서 장르 영역을 지시하는 스페셜 토큰들 및 상기 스페셜 토큰들 사이에 위치된 적어도 하나의 장르 토큰을 제거하여 입력으로 설정하는 단계;
    상기 적어도 하나의 장르 토큰을 기반으로 레이블을 설정하는 단계; 및
    상기 입력 및 상기 레이블을 기반으로, 상기 콘텐츠 아이템들 각각이 속한 적어도 하나의 장르를 예측하도록 상기 언어모델에 대한 훈련을 수행하는 단계를 더 포함하며,
    상기 텍스트 메타 데이터는, 제목, 시놉시스, 장르, 감독, 배우, 또는 해시태그 정보 중 적어도 하나를 포함하는 방법.
  4. 청구항 3에 있어서,
    상기 텍스트 메타 데이터를 상기 시퀀스형 텍스트 데이터로 변환하는 단계는,
    상기 텍스트 메타 데이터를 복수의 토큰들로 구분하는 단계; 및
    상기 토큰들 사이에 적어도 하나의 구분자를 삽입함으로써 상기 시퀀스형 텍스트 데이터를 생성하는 단계를 포함하며,
    상기 적어도 하나의 구분자는 상기 장르 영역을 지시하는 스페셜 토큰들을 포함하는 방법.
  5. 청구항 4에 있어서,
    상기 적어도 하나의 구분자는, 서로 다른 종류의 피처들을 구분하기 위한 분리 토큰 및 상기 장르 이외에 다른 종류의 피처의 영역을 지시하는 다른 스페셜 토큰들 중 적어도 하나를 더 포함하는 방법.
  6. 청구항 5에 있어서,
    상기 다른 스페셜 토큰은, 감독 영역을 나타내는 제1 스페셜 토큰, 배우 영역을 나타내는 제2 스페셜 토큰, 및 해시태그 영역을 나타내는 제3 스페셜 토큰 중 적어도 하나를 포함하는 방법.
  7. 청구항 3에 있어서,
    상기 장르 영역을 지시하는 스페셜 토큰들 사이에 복수개의 장르 토큰들이 존재하는 경우, 상기 레이블은, 상기 복수 개의 장르 토큰들에 대응되는 멀티 레이블로 설정되는, 방법.
  8. 청구항 3에 있어서,
    상기 훈련은, 예측 모델을 이용하여 수행되며,
    상기 예측 모델은, 상기 적어도 하나의 장르 토큰이 제거된 입력 시퀀스형 텍스트 데이터를 입력으로 취하고, 상기 입력 시퀀스형 텍스트 데이터에 대응되는 벡터 값들을 출력하는 상기 언어모델, 및 상기 언어모델에서 출력되는 적어도 하나의 벡터 값에 대응되는 적어도 하나의 입력 토큰을 예측하도록 구성된 텍스트 분류 헤드 레이어를 포함하는 방법.
  9. 청구항 1에 있어서,
    상기 제1 콘텐츠 아이템 및 상기 제2 콘텐츠 아이템 간 유사도를 결정하는 단계는,
    코사인 유사도 알고리즘을 이용하여 상기 제1 벡터 및 상기 제2 벡터 간의 유사도를 계산하는 단계를 포함하는 방법.
  10. 청구항 9에 있어서,
    상기 제1 벡터 및 상기 제2 벡터 각각은, 상기 학습된 언어모델의 마지막 은닉층의 출력 벡터 값들에 대한 평균 풀링(average pooling)을 수행함으로써 획득하는 방법.
  11. 청구항 10에 있어서,
    상기 제1 벡터 및 상기 제2 벡터 각각은, 상기 학습된 언어모델의 마지막 은닉층의 출력 벡터 값들 중 지정된 피처(feature)의 위치에 해당하는 벡터 값에 가중치를 부여함으로써 결정되는 방법.
  12. 청구항 1에 있어서,
    상기 언어모델은, 트랜스포머 기반의 모델을 포함하는 방법.
  13. 청구항 1에 있어서,
    제3 콘텐츠 아이템의 제3 메타 데이터에 포함되는 정보를 포함하는 제3 시퀀스형 텍스트 데이터를 획득하는 단계;
    상기 학습된 언어모델을 이용하여, 상기 제3 시퀀스형 텍스트 데이터에 대응하는 제3 벡터를 결정하는 단계;
    상기 제1 벡터 및 상기 제3 벡터를 이용하여 상기 제1 콘텐츠 아이템 및 상기 제3 콘텐츠 아이템 간 유사도를 결정하는 단계를 더 포함하며,
    상기 콘텐츠 목록을 제공하는 단계는,
    상기 제1 콘텐츠 아이템 및 상기 제2 콘텐츠 아이템 간 유사도, 및 상기 제1 콘텐츠 아이템 및 상기 제3 콘텐츠 아이템 간의 유사도를 기반으로, 상기 제2 콘텐츠 아이템과 상기 제3 콘텐츠 아이템 중 상기 제2 콘텐츠 아이템을 선택하는 단계를 포함하는, 방법.
  14. 콘텐츠 스트리밍 시스템에서 서버에 있어서,
    적어도 하나의 클라이언트 장치와 신호를 송수신하는 통신부; 및
    상기 통신부와 전기적으로 연결된 프로세서를 포함하며,
    상기 프로세서는,
    제1 콘텐츠 아이템의 제1 메타 데이터에 포함되는 정보를 포함하는 제1 시퀀스형 텍스트 데이터를 획득하고,
    제2 콘텐츠 아이템의 제2 메타 데이터에 포함되는 정보를 포함하는 제2 시퀀스형 텍스트 데이터를 획득하고,
    콘텐츠 아이템들의 메타 데이터에 포함되는 장르 정보를 기반으로 학습된 언어모델을 이용하여, 상기 제1 시퀀스형 텍스트 데이터에 대응하는 제1 벡터 및 상기 제2 시퀀스형 텍스트 데이터에 대응하는 제2 벡터를 결정하고,
    상기 제1 벡터 및 상기 제2 벡터를 이용하여 상기 제1 콘텐츠 아이템 및 상기 제2 콘텐츠 아이템 간 유사도를 결정하고,
    상기 유사도에 기반하여 선택된 상기 제2 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템을 포함하는 콘텐츠 목록을 제공하도록 제어하며,
    상기 언어모델은 상기 콘텐츠 아이템들의 시퀀스형 텍스트 데이터에 기반하여 설정되는 입력 및 레이블을 기반으로 상기 콘텐츠 아이템들 각각이 속한 적어도 하나의 장르를 예측하는 훈련을 통해 학습되고,
    상기 입력은 상기 시퀀스형 텍스트 데이터에 포함된 복수의 토큰들 중에서 장르 영역을 지시하는 스페셜 토큰들 및 상기 스페셜 토큰들 사이에 위치된 적어도 하나의 장르 토큰 중 적어도 하나가 제거됨으로써 설정되고,
    상기 레이블은 상기 제거된 적어도 하나의 장르 토큰에 기반하여 설정되는 서버.
  15. 프로세서에 의해 동작되면 제1항 내지 제13항 중의 어느 한 항에 따른 방법을 실행하기 위해 기록 매체에 저장된 프로그램.
KR1020230025139A 2023-02-15 2023-02-24 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치 KR102615165B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020230025139A KR102615165B1 (ko) 2023-02-24 2023-02-24 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치
PCT/KR2023/019146 WO2024172254A1 (ko) 2023-02-15 2023-11-24 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230025139A KR102615165B1 (ko) 2023-02-24 2023-02-24 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치

Publications (1)

Publication Number Publication Date
KR102615165B1 true KR102615165B1 (ko) 2023-12-15

Family

ID=89124854

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230025139A KR102615165B1 (ko) 2023-02-15 2023-02-24 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102615165B1 (ko)

Citations (4)

* 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 빅펄 주식회사 멀티모달 콘텐츠 분석 시스템 및 그 방법
KR20220021360A (ko) * 2020-08-13 2022-02-22 네이버 주식회사 문서-레벨 자연어 처리 모델들을 훈련시키는 방법 및 시스템
KR20220140226A (ko) * 2021-04-09 2022-10-18 주식회사 닐슨 콘텐츠 결정 방법, 장치 및 컴퓨터 프로그램

Patent Citations (4)

* 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 빅펄 주식회사 멀티모달 콘텐츠 분석 시스템 및 그 방법
KR20220021360A (ko) * 2020-08-13 2022-02-22 네이버 주식회사 문서-레벨 자연어 처리 모델들을 훈련시키는 방법 및 시스템
KR20220140226A (ko) * 2021-04-09 2022-10-18 주식회사 닐슨 콘텐츠 결정 방법, 장치 및 컴퓨터 프로그램

Similar Documents

Publication Publication Date Title
Wu et al. Wav2clip: Learning robust audio representations from clip
Seo et al. Look before you speak: Visually contextualized utterances
CN112163122B (zh) 确定目标视频的标签的方法、装置、计算设备及存储介质
WO2020051249A1 (en) Methods and systems for using machine-learning extracts and semantic graphs to create structured data to drive search, recommendation, and discovery
WO2020135193A1 (zh) 一种基于深度神经网络的视频推荐方法、系统及存储介质
Papalampidi et al. Movie summarization via sparse graph construction
CN112989212B (zh) 媒体内容推荐方法、装置和设备及计算机存储介质
CN110225368A (zh) 一种视频定位方法、装置及电子设备
KR102486806B1 (ko) 인공지능에 기반하여 시놉시스 텍스트를 분석하고 시청률을 예측하는 서버
Lubos et al. An overview of video recommender systems: state-of-the-art and research issues
CN118093936B (zh) 视频标签处理方法、装置、计算机设备和存储介质
KR102615165B1 (ko) 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치
KR102615164B1 (ko) 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치
Kutlimuratov et al. MUSIC RECOMMENDER SYSTEM
KR102708124B1 (ko) 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치
Mehta et al. Open-domain trending hashtag recommendation for videos
KR102605100B1 (ko) 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치
KR102704034B1 (ko) 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치
Wang et al. A multimodal dialogue system for improving user satisfaction via knowledge-enriched response and image recommendation
KR102564182B1 (ko) 인공지능 모델을 활용하여 영상 데이터 기반 얼굴 표정 영상 추출 및 이를 활용한 콘텐츠 생성 방법, 장치 및 시스템
Akula et al. Forecasting the success of television series using machine learning
CN117615180A (zh) 交互数据的预测方法、装置、电子设备及存储介质
US11868857B2 (en) Video augmentation apparatus and a method for its use
US11810598B2 (en) Apparatus and method for automated video record generation
KR20240060207A (ko) 컨텐츠 스트리밍 시스템에서 장면을 분석하는 방법 및 장치

Legal Events

Date Code Title Description
GRNT Written decision to grant