KR20220131069A - 언어 모델을 이용한 사용자 프로파일 검색 시스템 및 이의 운용 방법 - Google Patents
언어 모델을 이용한 사용자 프로파일 검색 시스템 및 이의 운용 방법 Download PDFInfo
- Publication number
- KR20220131069A KR20220131069A KR1020210036157A KR20210036157A KR20220131069A KR 20220131069 A KR20220131069 A KR 20220131069A KR 1020210036157 A KR1020210036157 A KR 1020210036157A KR 20210036157 A KR20210036157 A KR 20210036157A KR 20220131069 A KR20220131069 A KR 20220131069A
- Authority
- KR
- South Korea
- Prior art keywords
- question
- user
- text
- app data
- profile
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/335—Filtering based on additional data, e.g. user or group profiles
- G06F16/337—Profile generation, learning or modification
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9032—Query formulation
- G06F16/90324—Query formulation using system suggestions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9032—Query formulation
- G06F16/90332—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Machine Translation (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
Abstract
본 개시의 일 실시예에 사용자 행동 예측 서비스 제공을 위한 시스템 내의 하나 이상의 컴퓨팅 장치에서 수행되는 방법은, 사용자 장치에 설치된 애플리케이션으로부터 인앱 데이터를 수집하는 단계; 사용자 장치에 포함된 하나 이상의 센서로부터 오프앱 데이터를 수집하는 단계; 상기 인앱 데이터 및 오프앱 데이터를 단어로 변환하는 단계; 상기 인앱 데이터 및 오프앱 데이터에 기초하여 변환된 단어들에 기초하여 제1 문장을 생성하는 단계; 언어 모델을 이용하여 상기 제1 문장 내의 단어를 예측하는 단계; 상기 예측된 단어에 기초하여 이벤트 예측 모델을 생성하는 단계; 및 상기 애플리케이션이 상기 이벤트 예측 모델을 이용하여 예측 서비스를 제공하는 단계를 포함할 수 있다. 그 밖의 다양한 실시예가 가능하다.
Description
본 개시는 언어 모델을 이용한 사용자 프로파일 검색 시스템 및 이의 운용 방법에 관한 것에 관한 것이다.
여기에서 달리 언급하지 않으면 본 섹션에서 기술되는 내용은 본 출원에서의 청구범위의 선행 기술이 아니며, 본 섹션에 기재하였다는 이유로 선행 기술로 인정되어서는 안 된다.
최근 소비자 대상 마케팅 분야에 있어서, 맞춤형 광고, 고도화된 타겟팅을 위한 기술들이 개발되고 있다. 예를 들어, 광고 플랫폼 비즈니스의 '구매전환 예측 모델'은 전자상거래(e-commerce) 광고주들을 중심으로 최적화 되어있고 이는 대부분의 전자상거래 광고주 사이트 내에서의 사용자 행동 패턴이 '정형화'(홈, 로그인, 회원가입, 상품 조회/검색, 상품 구매 등) 되어있기 때문이다. 따라서, 기존의 '구매전환 예측 모델'은 다른 업종의 광고주(ex. 교육, 보험, 대출, 자동차 등), 즉 온라인 사이트 내에서의 사용자 행동 패턴이 '비정형화' 되어있는 광고주들의 모델 예측 정확도가 낮은 상황이다. 특히, 구매 주기가 긴 광고주 사이트 또는 같은 경우 구매 주기가 길고, 소상공인 사이트 같은 경우 인앱 데이터양이 작아서 모델 학습에 사용되기 어려운 점이 있다.
또한, 빅데이터와 인공지능(AI)의 등장으로 높은 수준의 사용자 행동의 이해 및 사용자가 관심을 가질 만한 상품을 예측할 수 있지만, 현재는 사용자의 최근 검색어에 매칭되는 상품을 추천하는 방식과 같이 지정된 특징(feature) 기반으로 매칭하거나 검색하는 기술 수준에 머물러 있다. 여기에서, 지정된 특징(feature)을 기반으로 고객을 타겟하는 경우 예를 들어 피자를 먹고 싶어할 수 있는 사용자를 타겟하는 경우를 상정할 때, '피자'가 이탈리안 음식 중 하나라는 구조(structure)가 시스템적으로 등록되어 있지 않다면, '파스타'를 검색한 사용자는 타겟 사용자로 검색되지 않을 수 있다. 즉 고객을 타겟팅 하는데 높은 수준의 정확도를 가지려면 일 특징(feature)의 상하위 개념 또는 교차 개념 간의 구조가 시스템 상에서 개발되어야 하며, 이는 상품의 종류나 고객 성격에 따라 각각의 시스템을 구축하는데 큰 노력이 필요하다는 것을 의미한다.
본 개시를 통해 제공되는 유연하고 높은 수준의 정확도를 가진 사용자 프로파일 검색 시스템은 초개인화(hyper-personalization) 마케팅을 실현하고자 한다. 본 개시의 사용자 프로파일 검색 시스템이 실현하는 프로파일 검색 서비스는 마케팅 영역에 한정되지 않고, 개인 사용자에게 자신의 개성(characteristic)에 대한 정보를 제공하는 등, 더욱 풍부한 영역에서 편리하고 유용한 사용자 경험을 제공하고자 한다.
본 개시의 일 실시예에 따른 사용자 프로파일 검색 서비스를 제공하기 위한 시스템에 포함된 하나 이상의 컴퓨팅 장치에서 수행되는 방법은, 자연어로 구성된 질문을 수신하는 단계; 상기 질문을 텍스트로 번역하여 질문 텍스트를 생성하고 상기 질문 텍스트로부터 임베딩을 추출하는 단계; 사용자 프로파일을 텍스트로 번역하여 프로파일 텍스트를 생성하고, 상기 프로파일 텍스트로부터 임베딩을 추출하는 단계; 상기 추출된 임베딩을 이용한 기계 독해에 기초하여 상기 질문에 대한 응답을 생성하는 단계를 포함할 수 있다.
본 개시의 일 실시예에 있어서, 상기 방법은 상기 질문의 유형을 확인하는 단계를 더 포함하고, 상기 질문을 텍스트로 번역하는 단계는, 확인된 상기 질문의 유형이 특정 사용자 군(cluster)을 찾는 유형인 경우, 상기 질문을 개인을 대상으로 한 객관식 질문으로 변환하는 단계를 더 포함할 수 있다.
본 개시의 일 실시예에 따르면, 상기 추출된 임베딩을 이용한 기계 독해에 기초하여 상기 질문에 대한 응답을 생성하는 단계는, 확인된 상기 질문의 유형이 특정 사용자 군을 찾는 유형인 경우, 복수의 사용자 프로파일 중 각각에 대한 상기 객관식 질문의 응답을 취합하여 상기 특정 사용자 군을 찾는 유형의 질문에 대한 응답을 생성하는 단계를 더 포함할 수 있다.
본 개시의 일 실시예에 따른 방법은 사용자 장치로부터 인앱 데이터 및 오프앱 데이터를 수신하는 단계를 더 포함하고, 상기 인앱 데이터는 상기 사용자 장치에 설치된 애플리케이션으로부터 수집되고, 상기 오프앱 데이터는 상기 사용자 장치에 포함된 하나 이상의 센서로부터 수집될 수 있다.
본 개시의 일 실시예에 따르면, 상기 사용자 프로파일은 상기 인앱 데이터 및 오프앱 데이터의 분석을 통해 결정되는 사용자의 행동 정보에 기초하여 생성될 수 있다.
본 개시의 일 실시예에 따른 사용자 프로파일 검색 서비스를 제공하기 위한 하나 이상의 서버는 사용자 장치로부터 인앱 데이터, 오프앱 데이터 및 질문을 수신하는 하나 이상의 수신부; 상기 인앱 데이터 및 상기 오프앱 데이터에 기초하여 사용자 프로파일을 생성하는 하나 이상의 분석기; 상기 질문을 질문 텍스트로 번역하고, 상기 사용자 프로파일을 프로파일 텍스트로 번역하는 하나 이상의 번역기; 및 상기 질문 텍스트 및 상기 프로파일 텍스트로부터 임베딩을 추출하고 기계 독해를 수행하여 상기 질문에 대한 응답을 생성하는 기계 독해 엔진을 포함할 수 있다.
본 개시의 일 실시예에 있어서, 상기 하나 이상의 번역기는, 확인된 상기 질문의 유형이 특정 사용자 군(cluster)을 찾는 유형인 경우, 상기 질문을 개인을 대상으로 한 객관식 질문으로 변환하도록 더 구성될 수 있다.
본 개시의 일 실시예에 있어서, 상기 기계 독해 엔진은, 확인된 상기 질문의 유형이 특정 사용자 군을 찾는 유형인 경우, 복수의 사용자 프로파일 중 각각에 대한 상기 객관식 질문의 응답을 취합하여 상기 특정 사용자 군을 찾는 유형의 질문에 대한 응답을 생성하도록 더 구성될 수 있다.
본 개시의 일 실시예에 있어서, 상기 인앱 데이터는 상기 사용자 장치에 설치된 애플리케이션으로부터 수집되고, 상기 오프앱 데이터는 상기 사용자 장치에 포함된 하나 이상의 센서로부터 수집될 수 있다.
본 개시의 일 실시예에 따른 사용자 프로파일 검색 서비스를 제공하기 위한 컴퓨터 프로그램을 저장한 컴퓨터 판독 가능 기록 매체로서, 상기 컴퓨터 프로그램은 사용자 프로파일 검색 시스템에 포함된 하나 이상의 컴퓨팅 장치에서 수행 가능한 하나 이상의 명령어를 포함하며, 상기 하나 이상의 명령어는, 자연어로 구성된 질문을 수신하는 명령어; 상기 질문을 텍스트로 번역하여 질문 텍스트를 생성하고 상기 질문 텍스트로부터 임베딩을 추출하는 명령어; 사용자 프로파일을 텍스트로 번역하여 프로파일 텍스트를 생성하고, 상기 프로파일 텍스트로부터 임베딩을 추출하는 명령어; 및 상기 추출된 임베딩을 이용한 기계 독해에 기초하여 상기 질문에 대한 응답을 생성하는 명령어를 포함할 수 있다.
본 개시의 전술한 특징들 및 기타 특징들은, 첨부 도면을 참조하여 이하의 설명으로부터 충분히 분명해질 것이다. 이러한 도면들은 본 개시에 따르는 단지 몇 가지의 실시예만을 도시한 것이고, 따라서 그 범위를 제한하는 것으로 간주되어서는 안되는 것을 이해하면서, 본 개시는 첨부된 도면의 사용을 통하여, 더 구체적이고 상세하게 기술될 것이다.
도 1은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템의 블록도이다.
도 2는 본 개시의 일 실시예에 따른 사용자 행동 예측 시스템에 포함된 사용자 장치의 블록도이다.
도 3은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템에 포함된 서버의 블록도이다.
도 4a는 본 개시의 일 실시예에 따라 수집될 수 있는 오프앱 데이터의 일 예시이다.
도 4b는 본 개시의 일 실시예에 따라 생성될 수 있는 사용자 맥락 정보의 일 예시이다.
도 4c는 본 개시의 일 실시예에 따라 관리될 수 있는 사용자 프로파일의 일 예시이다.
도 5는 본 개시의 일 실시예에 다른 사용자 프로파일 검색 시스템에서 시각화된 워드 임베딩 벡터를 나타낸다.
도 6은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템이 사용자 프로파일을 구축하는 예시적인 프로세스를 도시하는 흐름도이다.
도 7은 본 개시의 일 실시예에 따른 사용자 행동 예측 시스템이 이벤트 예측 모델을 사용하는 예시적인 프로세스를 도시하는 흐름도이다.
도 8은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템에서 실행되는 예시적인 컴퓨터 프로그램 제품을 도시한다.
도 1은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템의 블록도이다.
도 2는 본 개시의 일 실시예에 따른 사용자 행동 예측 시스템에 포함된 사용자 장치의 블록도이다.
도 3은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템에 포함된 서버의 블록도이다.
도 4a는 본 개시의 일 실시예에 따라 수집될 수 있는 오프앱 데이터의 일 예시이다.
도 4b는 본 개시의 일 실시예에 따라 생성될 수 있는 사용자 맥락 정보의 일 예시이다.
도 4c는 본 개시의 일 실시예에 따라 관리될 수 있는 사용자 프로파일의 일 예시이다.
도 5는 본 개시의 일 실시예에 다른 사용자 프로파일 검색 시스템에서 시각화된 워드 임베딩 벡터를 나타낸다.
도 6은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템이 사용자 프로파일을 구축하는 예시적인 프로세스를 도시하는 흐름도이다.
도 7은 본 개시의 일 실시예에 따른 사용자 행동 예측 시스템이 이벤트 예측 모델을 사용하는 예시적인 프로세스를 도시하는 흐름도이다.
도 8은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템에서 실행되는 예시적인 컴퓨터 프로그램 제품을 도시한다.
이하, 첨부한 도면을 참조하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본원의 구현예 및 실시예를 상세히 설명한다. 그러나, 본원은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 구현예 및 실시예에 한정되지 않는다.
본 개시는 사용자 행동 예측 시스템 및 이의 운용 방법에 관한 것이다.
본 개시에서, "맥락(context)"은 일반적으로 개체(entity)(예컨대, 사람, 장소 또는 사용자와 애플리케이션 간의 상호작용에 관련되어 고려되는 오브젝트)의 상황을 특징짓는 데 이용될 수 있는 임의의 정보를 지칭한다. 이러한 점에서, "사용자 맥락"은 대상 개체가 사용자(사람)인 경우의 맥락을 의미하며, "사용자 맥락 정보"는 사용자의 상황을 특징짓는 데 이용될 수 있는 다양한 유형의 정보를 포함하는 것으로 이해될 수 있다. 예를 들어, 사용자 맥락 정보의 유형은 사용자와 연관된 장치의 컴퓨팅 맥락(예컨대, 네트워크 연결, 메모리 가용량, 프로세서 유형, CPU 컨텐션(CPU contention) 등), 사용자 맥락(예컨대, 이름, 성별, 나이 등과 같은 개인 정보, 위치, 행동, 주변 친구, 소셜 네트워크 관련 정보, 상황 등), 물리적 맥락(예컨대, 조명, 소음 수준, 교통 등), 시간적 맥락(년, 월, 일, 시각, 계절 등), 이들의 로그 데이터 또는 이력(history) 등을 포함할 수 있다.
한편, 본 개시에서, '맥락 정보'는 사용자의 상태나 정황을 나타내는 정보를 지칭할 수 있다. '프로파일'은 사용자 모델의 개별 요소로서, 사용자의 개별적인 특징을 나타내는 정보들의 집합을 지칭할 수 있다.
도 1은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템의 블록도이다.
도 1을 참조하면, 사용자 프로파일 검색 시스템(100)(이하, 시스템(100)으로 지칭)은 사용자 장치(110) 및/또는 사용자 프로파일 검색 서버(120)(이하, 서버(120)로 지칭))를 포함할 수 있다. 사용자 장치(110)는 사용자 각각의 프로파일을 구축하기 위한 데이터를 수집하는 애플리케이션 또는 프로그램이 저장될 수 있다.
사용자 장치(110)는 다양한 타입의 컴퓨팅 장치를 포함할 수 있다. 예를 들어, 사용자 장치(110)는 스마트폰(111), 데스크톱(112), 태블릿(113) 또는 웨어러블 디바이스(114)를 포함할 수 있다. 다른 예를 들어, 사용자 장치(110)는 복수의 컴퓨팅 장치 그룹(130)을 나타낼 수 있다.
사용자 장치(110)는 애플리케이션 내에서의 사용자의 행동에 관한 정보를 나타내는 In-App 데이터(131)(이하, 인앱 데이터(131)로 지칭) 및 애플리케이션 외에서의 사용자의 행동에 관한 정보를 나타내는 Off-App 데이터(132)(이하, 오프앱 데이터(132)로 지칭)를 추출할 수 있다. 인앱 데이터(131) 및 오프앱 데이터(132)는 사용자의 프로파일을 구축하는데 사용될 수 있다.
일 실시예에 따르면, 사용자 장치(110)는 인앱 데이터(131) 및 오프앱 데이터(132)를 서버(120)로 전송할 수 있다. 서버(120)는 수신한 인앱 데이터(131) 및 오프앱 데이터(132)를 이용하여 사용자의 행동을 분석하고 해당 사용자의 프로파일을 구축할 수 있다. 서버(120)가 구축한 사용자의 프로파일은 개인에 대한 초개인화(hyper-personalization)가 가능하고 복수의 사용자의 프로파일은 마케팅을 위한 특정 사용자 군(cluster)이 포함된 원천(pool resource)로서 사용될 수 있다.
도시된 바와 달리, 다른 실시예에서는 사용자 장치(110)가 인앱 데이터(131) 및 오프앱 데이터(132)를 이용하여 프로파일을 구축하고 구축된 프로파일을 서버(120)에 전송할 수 있다. 서버(120)는 프로파일을 취합하고 관리하는 역할만을 담당할 수 있다.
일 실시예에서 인앱 데이터(131) 및 오프앱 데이터(132)는 데스크톱(112), 태블릿(113) 또는 스마트폰(111) 각각에서 수집될 수 있다. 인앱 데이터(131) 및 오프앱 데이터(132)는 서버(120)에 전송될 때, 인앱 데이터(131) 및 오프앱 데이터(132)가 각각 컴퓨팅 장치 그룹(130)에 속한 어떤 장치에서 생성되었는지를 식별할 수 있는 장치 식별자(device identifier)가 함께 전송될 수 있다.
이하, 인앱 데이터(131), 오프앱 데이터(132) 및 이벤트 예측 모델(121)에 대하여 구체적으로 설명하기로 한다.
인앱 데이터(131)는 사용자가 사용자 장치(110)에서 실행되는 애플리케이션에서 실시한 행위(action) 및 애플리케이션의 상태(state)를 나타내는 데이터를 포함할 수 있다.
예를 들어, 사용자가 사용자 장치(110)에 설치된 음악재생 애플리케이션을 이용하는 상황을 상정하기로 한다. 사용자가 음악재생 애플리케이션을 실행한 시각; 재생하는 음악의 장르, 가수, 가수의 국적, 테마; 가사를 보기위한 입력과 같은 행위가 인앱 데이터(131)로 저장될 수 있다.
다른 예를 들어, 사용자가 사용자 장치(110)에 설치된 쇼핑 애플리케이션을 이용하여 물품을 구매하는 상황을 상정하기로 한다. 사용자가 쇼핑 애플리케이션을 실행한 시각, 검색어를 입력하는 행위, 입력한 검색어, 검색에 의해 표시되는 물품들의 정렬 기준(예: 최저가, 최고가, 최신 등)이 인앱 데이터(131)로 저장될 수 있다. 또한, 사용자가 물품을 검색하고, 물품을 선택하고, 결제하기까지의 행위 각각 및 행위들의 순서(sequence)가 인앱 데이터(131)로 저장될 수 있다.
또 다른 예를 들어, 사용자가 사용자 장치(110)에 지도 애플리케이션을 이용하여 음식점을 검색하는 상황을 상정하면, 사용자가 애플리케이션에 입력한 검색어; 리뷰개수, 평점, 현재 위치로부터의 거리 중 선택한 정렬 기준; 대중교통, 차량, 도보, 자전거 중 선택한 길 찾기 기준과 같은 행위 및 행위들의 시퀀스가 인앱 데이터(131)로 저장될 수 있다.
오프앱 데이터(132)는 사용자 장치(110)가 포함하는 하나 이상의 센서가 제공하는 센서 데이터를 나타내는 데이터를 포함할 수 있다. 일 실시예에서 오프앱 데이터(132)는 Out-App 데이터로도 지칭될 수 있다. 애플리케이션이 실시되고 있는 상태에서도 사용자 장치(110)의 센서가 센서 데이터를 획득할 수 있기 때문이다.
예를 들어, 오프앱 데이터(132)는 사용자(또는 사용자 장치(110))의 현재 위치; 사용자의 현재 위치에서의 현재 시간; 사용자 장치(110)의 자세(position) 및 움직임(motion); 사용자 장치(110)가 위치한 환경의 밝기, 온도 및 다른 환경 요소들; 수신되는 음성 데이터; 이용되고 있는 네트워크의 종류와 네트워크의 제공자 등을 포함할 수 있다.
또한 오프앱 데이터(132)는 특정 애플리케이션 외의 다른 애플리케이션의 인앱 데이터를 포함할 수도 있다. 예를 들어, 사용자가 웹 브라우저 애플리케이션을 통해 검색플랫폼에서 음식점을 검색하는 상황을 상정하면, 사용자가 입력한 검색어가 오프앱 데이터(132)로 사용될 수 있다.
서버(120)는 인앱 데이터(131) 및 오프앱 데이터(132)에 기초하여 사용자의 프로파일을 생성할 수 있다. 예를 들어, 사용자 장치(110)는 사용자가 바다 여행지 근처의 음식점과 관광명소를 검색하기 위하여 웹 브라우저에 입력한 검색어; 사용자 장치(110)가 수신한 결제 확인 메시지에서 바다 여행지 근처의 숙소를 예약한 정보를 오프앱 데이터(132)로서 획득할 수 있다. 시스템(100)은 이러한 오프앱 데이터(132)를 이용하여 사용자가 여행을 떠날 예정이며, 바다를 향해 떠날 것이라고 예측하는 맥락 정보를 생성하여 축적함으로써 사용자 프로파일을 구축할 수 있다. 또한, 사용자 장치(110)에 설치된 음악재생 애플리케이션에서 추출한 인앱 데이터(131)는, 사용자가 발라드 장르의 여자가수를 음악을 다수 번 재생하는 일련의 행위들을 포함할 수 있다. 시스템(100)은 이러한 인앱 데이터(131)를 이용하여 사용자가 발라드 여자 가수를 선호한다는 정보를 프로파일에 저장할 수 있다. 다른 예로서, 사용자 장치(110)에 설치된 쇼핑 애플리케이션에서 추출한 인앱 데이터(131)로서 사용자가 특정 식료품을 주기적으로 구입하는 일련의 행위에 기초하여 특정 식료품을 주기적으로 구입한다는 정보를 프로파일에 저장할 수 있다. 서버(120)는 이와 같이 사용자 장치(110)는 인앱 데이터(131) 및 오프앱 데이터(132)에 기초하여 사용자 행동을 분석하고 분석한 결과를 축적하여 사용자 개인의 프로파일을 구축할 수 있다.
이하에서는 시스템(100)에 포함된 구성 및 각 구성의 동작을 구체적으로 설명하여 시스템(100)이 제공하는 사용자 프로파일 검색 서비스를 제공하기 위한 구성 및 구체적인 구현방법을 설명하고자 한다.
도 2는 본 개시의 일 실시예에 따른 사용자 행동 예측 시스템에 포함된 사용자 장치의 블록도이다. 도 2를 참조하면, 사용자 장치(110)는 프로세서(210), 메모리(220), 입력 장치(240), 표시 장치(250), 센서 모듈(260), 카메라 모듈(270), 통신 모듈(280), 인터페이스(290)를 포함할 수 있다. 어떤 실시예에서는, 사용자 장치(110)에는, 이 구성요소 중 적어도 하나(예: 카메라 모듈(260))가 생략되거나 다른 구성 요소가 추가될 수 있다. 어떤 실시예에서는, 예를 들면, 표시 장치(250)(예: 디스플레이)에 임베디드된 센서 모듈(260)(예: 지문 센서, 홍채 센서, 또는 조도 센서)의 경우와 같이, 일부의 구성요소들이 통합되어 구현될 수 있다.
프로세서(210)는, 예를 들면, 소프트웨어(예: 프로그램(230))를 구동하여 프로세서(210)에 연결된 사용자 장치(110)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어할 수 있고, 다양한 데이터 처리 및 연산을 수행할 수 있다. 프로세서(210)는 다른 구성요소(예: 센서 모듈(260) 또는 통신 모듈(280))로부터 수신된 명령 또는 데이터를 메모리(220)에 로드하여 처리하고, 결과 데이터를 비휘발성 메모리에 저장할 수 있다. 일실시예에 따르면, 프로세서(210)는 메인 프로세서(예: 중앙 처리 장치 또는 애플리케이션 프로세서), 및 이와는 독립적으로 운영되고, 추가로 또는 대체적으로, 메인 프로세서보다 저전력을 사용하거나, 또는 지정된 기능에 특화된 보조 프로세서(예: 그래픽 처리 장치, 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 여기서, 보조 프로세서는 메인 프로세서와 별개로 또는 임베디드되어 운영될 수 있다.
이런 경우, 보조 프로세서는, 예를 들면, 메인 프로세서가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서를 대신하여, 또는 메인 프로세서가 액티브(예: 애플리케이션 수행) 상태에 있는 동안 메인 프로세서와 함께, 사용자 장치(110)의 구성요소 중 적어도 하나의 구성요소(예: 표시 장치(250), 센서 모듈(260), 또는 통신 모듈(280))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 예를 들어, 보조 프로세서는 메인 프로세서가 인액티브 상태에 있는 동안에도, 센서 모듈(260)을 이용하여 오프앱 데이터(132)를 획득하고 통신 모듈(280)을 이용하여 오프앱 데이터(132)를 서버(120)에 전송할 수 있다.
일실시예에 따르면, 보조 프로세서(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성 요소(예: 카메라 모듈(270) 또는 통신 모듈(280))의 일부 구성 요소로서 구현될 수 있다. 메모리(220)는, 사용자 장치(110)의 적어도 하나의 구성요소(예: 프로세서(210) 또는 센서모듈(260))에 의해 사용되는 다양한 데이터, 예를 들어, 소프트웨어(예: 프로그램(230)) 및 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 저장할 수 있다. 메모리(220)는, 휘발성 메모리 또는 비휘발성 메모리를 포함할 수 있다.
프로그램(230)은 메모리(220)에 저장되는 소프트웨어로서, 예를 들면, 운영 체제(231), 미들 웨어(232) 또는 애플리케이션(233)을 포함할 수 있다. 운영 체제(231)는, 예를 들면, AndroidTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 프로그램(230) 중 적어도 일부 프로그램은, 예를 들면, 제조 시에 사용자 장치(110)에 프리로드되거나, 또는 사용자의 사용 환경에서 외부 전자 장치, 또는 서버(120))로부터 다운로드 되거나 갱신될 수 있다.
운영 체제(231)는 사용자 장치(110)의 시스템 리소스 (예: 프로세스, 메모리, 또는 전원)를 제어(예: 할당 또는 회수)할 수 있다. 운영 체제(231)는, 추가로 또는 대체적으로, 사용자 장치(110)의 다른 하드웨어 디바이스, 예를 들면, 입력 장치(240), 표시 장치(250), 센서 모듈(260), 카메라 모듈(270), 통신 모듈(280), 인터페이스(290)를 구동하기 위한 하나 이상의 드라이버 프로그램들을 포함할 수 있다.
미들 웨어(232)는 애플리케이션(233)이 사용자 장치(110)의 하나 이상의 리소스들이 제공하는 기능 또는 정보를 사용할 수 있도록 다양한 기능들을 애플리케이션(233)으로 제공할 수 있다. 미들 웨어(232)는, 예를 들면, 애플리케이션 매니저, 윈도우 매니저, 멀티미디어 매니저, 리소스 매니저, 파워 매니저, 데이터베이스 매니저, 패키지 매니저, 그래픽 매니저, 통화 매니저, 또는 음성 인식 매니저 등을 포함할 수 있다.
프로그램(230)은 In-App 데이터 수집기(234) 또는 Off-App 데이터 수집기(235)를 포함할 수 있다. In-App 데이터 수집기(234), Off-App 데이터 수집기(235) 각각은 애플리케이션의 실행 중에 인앱 데이터(131)를 수집하거나 애플리케이션 실행에 관계없이 오프앱 데이터(132)를 수집하도록 구성될 수 있다. 일부 실시예에서는 In-App 데이터 수집기(234), Off-App 데이터 수집기(235)가 특정 애플리케이션에 포함되거나 별개의 애플리케이션으로 독립하여 프로그램(230) 내에 포함될 수 있다. 예를 들어, In-App 데이터 수집기(234), Off-App 데이터 수집기(235)는 특정 애플리케이션이 예측 서비스를 제공할 수 있도록 특정 애플리케이션에서의 인앱 데이터와, 특정 애플리케이션에 관한 오프앱 데이터만을 수집하도록 구성될 수 있다. 다른 예를 들면, In-App 데이터 수집기(234), Off-App 데이터 수집기(235)는 예측 서비스를 지원하는 복수의 애플리케이션에서의 인앱 데이터 및 관련된 오프앱 데이터를 모두 수집하도록 구성될 수 있다.
입력 장치(240)는, 사용자 장치(110)의 구성요소(예: 프로세서(210))에 사용될 명령 또는 데이터를 사용자 장치(110)의 외부(예: 사용자)로부터 수신하기 위한 장치로서, 예를 들면, 표시 장치(250)에 임베디드된 터치 회로를 포함할 수 있다. 어떤 실시예에서 입력 장치(240)는 외부의 마이크, 마우스, 또는 키보드; 또는 이들과 연결될 수 있는 인터페이스를 포함할 수 있다.
표시 장치(250)는 사용자 장치(110)의 사용자에게 정보를 시각적으로 제공하기 위한 장치로서, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일실시예에 따르면, 표시 장치(2500)는 입력 장치(240)로서의 터치 회로(touch circuitry) 또는 터치에 대한 압력의 세기를 측정할 수 있는 압력 센서를 포함할 수 있다.
센서 모듈(260)은 사용자 장치(110)의 내부의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 센서 모듈(260)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다. 센서 모듈(260)에 의해 획득되는 데이터는 인앱 데이터(131) 또는 오프앱 데이터(132)로써 사용될 수 있다.
카메라 모듈(270)은 정지 영상 및 동영상을 촬영할 수 있다. 일실시예에 따르면, 카메라 모듈(270)은 하나 이상의 렌즈, 이미지 센서, 이미지 시그널 프로세서, 또는 플래시를 포함할 수 있다. 카메라 모듈(270)에 의해 획득되는 데이터 또한 인앱 데이터(131) 또는 오프앱 데이터(132)로서 사용될 수 있다.
통신 모듈(280)은 사용자 장치(110)와 외부 전자 장치 또는 서버(120)간의 유선 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(280)은 프로세서(210)(예: 애플리케이션 프로세서)와 독립적으로 운영되는, 유선 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일실시예에 따르면, 통신 모듈(280)은 무선 통신 모듈(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함하고, 그 중 해당하는 통신 모듈을 이용하여 제1 네트워크(예: 블루투스, WiFi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제2 네트워크(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 상술한 여러 종류의 통신 모듈(280)은 하나의 칩으로 구현되거나 또는 각각 별도의 칩으로 구현될 수 있다.
인터페이스(290)는 외부 전자 장치와 유선 또는 무선으로 연결할 수 있는 지정된 프로토콜을 지원할 수 있다. 일 실시예에 따르면, 인터페이스(290)는 HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
일 실시예에서 사용자 장치(110)는 음향 출력 장치, 오디오 모듈, 배터리, 전력 관리 모듈, 햅틱 등을 더 포함할 수 있다.
도 3은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템에 포함된 서버의 블록도이다. 도 3을 참조하면, 서버(120)는 행동 매니저(310) 및 QnA 매니저(320)를 포함할 수 있다. 서버(120) 또는 서버(120)에 포함된 각각의 구성들은 컴퓨터 판독 가능한 명령어들을 실행하는 하나 이상의 컴퓨팅 프로세서들의 집합을 포함할 수 있다. 컴퓨팅 프로세서들은 독립적으로 동작하거나 분산 방식으로 동작할 수 있다. 컴퓨팅 프로세서들은 버스 및/또는 네트워크를 통해 연결될 수 있다. 서버(120)는 메모리에 저장된 명령어들을 실행하여 행동 매니저(310) 및 QnA 매니저(320)에서 사용자 행동을 분석하여 프로파일을 구축하고 사용자 프로파일 검색 서비스를 제공하기 위해 필요한 동작을 실행시킬 수 있다. 서버(300)는 클라우드 서버에 의해 구현될 수도 있다. 클라우드 서버는 원격 서버(컴퓨팅 장치)들의 집합일 수 있다. 클라우드 서버는 컴퓨팅 자원들(예: 프로세서, 가상 머신)을 포함할 수 있다.
행동 매니저(310)는 사용자 행동 통합 분석기(311), In-App 행동 분석기(312), Off-App 행동 분석기(313), 데이터 수신부(314) 및 사용자 프로파일 데이터베이스(315)를 포함할 수 있다.
데이터 수신부(314)는 사용자의 인앱 데이터(예: 도 1의 131) 및 오프앱 데이터(예: 도 2의 132)를 수신할 수 있다. 예를 들어, 데이터 수신부(314)는 사용자 장치(110)로부터 인앱 데이터(131) 및 오프앱 데이터(132)를 수신할 수 있다.
In-App 행동 분석기(312)(이하 인앱 행동 분석기(312)로 지칭)는 인앱 데이터(131)를 분석하여 서비스 내에서의 맥락 정보를 생성하여 프로파일에 축적할 수 있다. 설명을 위해 사용자가 음악 재생 애플리케이션을 실행하여 음악 재생 서비스를 제공받는 상황을 가정하자. 예를 들어, 사용자가 음악 재생 애플리케이션의 서비스를 제공받는 상황에서, 인앱 데이터(131)는 음악 재생 애플리케이션을 실행하여 음악 재생 서비스를 제공받는 사용자가 발라드 장르의 여자가수를 음악을 다수회 재생하는 일련의 동작을 포함할 수 있다. 인앱 행동 분석기(312)는 인앱 데이터(131)를 이용하여 사용자가 발라드 여자 가수를 선호한다는 것을 나타내는 프로파일을 생성할 수 있다. 다른 예를 들어, 인앱 행동 분석기(312)는 인앱 데이터(131)를 이용하여 사용자가 오전 시간에는 하이템포의 음악을 선호하고, 오후 늦은 시간에는 로우템포의 음악을 선호한다는 것을 나타내는 취향에 대한 정보를 프로파일에 갱신할 수 있다. 또 다른 예를 들어, 인앱 행동 분석기(312)는 인앱 데이터(131)를 이용하여 사용자가 음악을 들으면서 음악의 가사를 제공받는 서비스를 즐겨 사용한다는 것을 나타내는 행동 패턴에 대한 정보를 프로파일에 갱신할 수 있다.
Off-App 행동 분석기(313)(이하 오프앱 행동 분석기(313)로 지칭)는 오프앱 데이터(132)를 분석하여 서비스 내에서의 맥락 정보를 생성할 수 있다. 예를 들어, 오프앱 데이터(132)는 사용자가 바다 여행지 근처의 음식점과 관광명소를 검색하기 위하여 웹브라우저에 입력한 검색어; 및 사용자 장치(110)가 수신한 결제 확인 메시지에서 바다 여행지 근처의 숙소를 예약한 정보를 포함할 수 있다. Off-App 행동 분석기(313)는 이러한 오프앱 데이터(132)를 이용하여 사용자가 여행을 떠날 예정이며, 바다를 향해 떠날 것이라고 예측하는 맥락 정보를 생성할 수 있다.
오프앱 행동 분석기(313)는 사용자의 맥락 정보를 3 가지 기준, 즉 시간 정보, 위치 정보 및 활동 정보로 구분하여 사용자의 맥락을 정렬할 수 있다. 이러한 3 가지 기준은 독립적인 것이 아니라 상호 연관되어 특정 시점의 사용자 장치 사용자의 상태나 정황을 나타내는 사용자의 맥락을 나타낼 수 있다. 예를 들어, 사용자가 오전 9시부터 오후 1시까지(시간 정보) 회사에서(위치 정보) 업무(활동 정보)를 한다는 사실은 그 사용자의 해당 시간대에서의 특정 맥락을 나타낸다. 예컨대, 센서 데이터 중에서 시간 데이터는 사용자 맥락의 시간 정보를 계산하는 기준이 되고, 특정 시간 데이터에 해당하는 GPS 데이터는 사용자 맥락의 위치 정보를 계산하는 기준이 되며, 특정 시간 데이터 및 해당 GPS 데이터에서 이에 해당하는 통신 연결 데이터가 차량과 Bluetooth 연결이 수립되었음을 나타내는 경우 사용자가 차량 내에서 사용자 장치(110)를 이용 중인 맥락을 도출해 낼 수 있게 된다. 한편, 사용자 맥락 정보 중에서 시간 정보는 여러 기준으로 구분될 수 있는데, 예컨대 크게 시간대 별로 새벽(자정부터 오전 6시까지), 오전(오전 6시부터 정오까지), 오후(정오부터 오후 6시까지) 및 저녁(오후 6시부터 자정까지)로 나누거나, 혹은 매 1시간 간격으로 구분하거나, 또는 해당 애플리케이션의 제공 서비스의 속성 및/또는 기능에 따라 필요한 기준으로 구분할 수 있다. 사용자 맥락 정보 중에서 장소 정보는 사용자 장치가 자주 위치하게 되는 곳(예컨대, 집, 회사 등)과 그 위치하게 되는 빈도수가 상대적으로 낮은 곳으로 구분하거나, 혹은 GPS 데이터에 근거한 특정 위치 별로 구분할 수 있으며, 이 역시 해당 애플리케이션의 제공 서비스의 속성 및/또는 기능에 따라 필요한 기준으로 구분할 수 있다. 사용자 맥락 정보 중에서 활동 정보도 마찬가지로 큰 카테고리별(예컨대, 이동 중, 업무 중, 휴식 중 등)로 구분하거나 구체적인 활동별(예컨대, 걷는 중, 뛰는 중, 자는 중 등)로 구분할 수 있다. 활동 정보의 구체적인 예시는 이하 도 4b에서 보다 구체적으로 설명된다.
사용자 행동 통합 분석기(311)는 인앱 행동 분석기(312) 및 오프앱 행동 분석기(313)에서 생성한 맥락 정보 또는 프로파일을 통합할 수 있다. 일 실시예에서 사용자 행동 통합 분석기(311)는 인앱 데이터(131) 및 오프앱 데이터(132)를 모두 이용하여 맥락 정보 또는 프로파일을 생성할 수 있다. 도 2에서는 인앱 행동 분석기(312), 오프앱 행동 분석기(313), 및 사용자 행동 통합 분석기(311)가 분리된 구성으로 도시되고 설명하였다. 하지만, 다양한 실시예에 따라, 인앱 데이터(131)와 오프앱 데이터(132)를 이용하여 사용자의 맥락 정보 및 프로파일을 생성하기 위한 구성은 하나 또는 하나 이상의 조합으로 구성될 수도 있다.
사용자 행동 통합 분석기(311)는 통합된 사용자 행동 데이터를 사용자 프로파일 데이터베이스(315)에 저장할 수 있다. 사용자 프로파일 데이터베이스(315)는 사용자별로 행동 데이터를 구축할 수 있다. 사용자 행동 데이터는 프로파일로 지칭될 수 있다. 사용자 프로파일 데이터베이스(315)에 저장된 프로파일은 블랙보드로서 저장될 수 있다. 블랙보드는 하나 이상의 메모리 내의 데이터 구조를 지칭하며, 인앱 행동 분석기(312) 및 오프앱 행동 분석기(313)와 같이 복수의 독립적인 요소들이 공통으로 작업 가능한 공간을 제공하며, 복수의 독립적 요소들은 블랙보드를 통하여 서로 통신 가능하다. 즉, 사용자에 대한 프로파일은 블랙보드에 시계열(time-series)적으로 저장될 수 있다.
사용자 행동 통합 분석기(311)는 사용자 프로파일을 사용자 개개인 별로 구축(예: 생성, 저장 또는 갱신)할 수 있다. 일 실시예에서, 사용자 프로파일은 하나 이상의 카테고리로 분류될 수 있다. 카테고리는, 예컨대, 사용자의 기본 정보, 식사/외식, 이동, 반복적인 일상 정보, 음악, 영화 등을 포함할 수 있다. 카테고리 중 일부는 사용자의 선호도를 적어도 하나 포함할 수 있다. 사용자 프로파일은 예컨대, 집 위치, 회사 위치, 성별, 자주가는 지역, 자주가는 장소, 평균 주변 소음도, 평균 식사시간, 좋아하는 음식, 좋아하는 식당, 통근 시간, 하루 평균 걸음수, 평균 보폭, 좋아하는 음악, 좋아하는 가수, 하루평균 음악을 듣는 시간, 선호하는 볼륨, 좋아하는 영화 등과 같이 사용자의 특징을 나타낼 수 있는 다양한 개별적인 요소들에 관한 것일 수 있다.
일 실시예에서, 사용자 행동 통합 분석기(311)는 인앱 행동 분석기(312) 및 오프앱 행동 분석기(313)에 의해 생성된 사용자 맥락 정보를 이용하여, 복수의 사용자 프로파일 중 적어도 일부를 평가할 수 있다. 예를 들어, 오프앱 행동 분석기(313)에 의하여, 사용자가 "지하철로 이동하여, 출근 중"이라는 맥락이 인식된 경우, 사용자 행동 통합 분석기(311)는 사용자가 이용하는 이동 수단, 지하철 역, 통근 시간, 출근 시각 등에 관한 사용자 프로파일에 대한 정보를 계산, 누적 및 저장할 수 있다. 구체적인 사용자 모델 및 사용자 프로파일의 예시에 관해서는, 이하 도 4c에서 구체적으로 예시한다.
도 4a는 본 개시의 일 실시예에 따라 수집될 수 있는 오프앱 데이터의 일 예시이다. 도 4a에 도시된 표(410)는 모바일 장치를 위한 대표적인 2 가지 유형의 운영 체제인 Android 및 iOS에서 이용 가능한 센서 데이터의 유형을 예시하고 있다. 그러나, 센서 데이터는 도 4a에서 예시된 유형에 제한되지 않고, 그 밖의 다른 유형의 데이터가 이용될 수 있다는 점을 이해할 것이다.
도 4b는 본 개시의 일 실시예에 따라 생성될 수 있는 사용자 맥락 정보의 일 예시이다. 도 4b의 사용자 맥락 정보(420)는 사용자의 활동을 크게 6 개의 카테고리인 MOVE(이동), WORK(업무), REST(휴식), PLAY(놀이), EAT(식사 등) 및 WATCH(관람)으로 구분하였으며, 각각의 카테고리 별로 구체적인 활동 정보를 세분화하였다. 예컨대, 여기서 MOVE에 관한 사용자의 맥락 정보는 센서 데이터 중 GPS 데이터 및 가속도계 데이터 등을 이용하여 계산될 수 있다. 통상의 기술자는 사용자 맥락 정보의 카테고리가 이에 제한되지 않으며, 보다 다양한 카테고리도 포함할 수 있음을 이해할 것이다.
도 4c는 본 개시의 일 실시예에 따라 관리될 수 있는 사용자 프로파일의 일 예시이다. 도 4c의 사용자 프로파일(430)은 예컨대, 기본정보, 식사/외식, 이동, Daily Routine, 음악, 영화 등과 같은 다양한 카테고리로 구분되며, 각 카테고리는 하나 이상의 사용자 프로파일을 포함하고 있다. 도 4c에 도시된 바와 같이, 일부 사용자 프로파일은 예컨대, "집위치", "회사 위치", "성별" 등과 같이 사용자로부터 특정의 정보를 수신받거나 누적된 데이터로부터 추출함으로써 획득되는 고정된 정보일 수 있다. 일부 다른 사용자 프로파일은 예컨대, "평균 점심 식사 시간", "출근 시각", "업무 시간", "퇴근 시각", "취침 시간", "하루평균 걸음수"와 같이 누적 계산의 방식으로 계산될 수 있다. 일부 또 다른 사용자 프로파일은 예컨대, "자주가는 지역", "자주가는 장소", "선호하는 이동수단", "자주 이용하는 지하철 역", "좋아하는 가수", "좋아하는 노래" 등과 같이, 하나 이상의 데이터를 누적 계산하여 관리하고, 관리되는 하나 이상의 데이터 중 하나를 선택하는 방식으로 관리될 수 있다. 일부 또 다른 사용자 프로파일은 "최근 본 영화" 등과 같이 사용자 맥락 정보 또는 센서 정보에 의해 갱신되는 데이터일 수 있다. 사용자 프로파일은 도 4c에 나타나는 특징에 한정되지 않으며, 사용자를 특징 짓기 위하여 표현할 수 있는 다른 유형의 사용자 프로파일, 보다 세부적인 사용자 프로파일 또는 보다 포괄적인 사용자 프로파일을 포함할 수 있다는 점이 당업자에게 잘 이해될 것이다.
다시 도 3을 참조하면, 일 실시예에서 QnA 매니저(320)는 질문 번역기(321), 행동 번역기(322), QnA 결과 생성기(323)를 포함할 수 있다. QnA 결과 생성기(323)는 기계 독해 엔진(324), Pre-trained Embedding 모델(325) 및 Fine-tuned 모델(326)을 포함할 수 있다.
QnA 매니저(320)는 사용자 프로파일의 대상인 사용자 또는 사용자 프로파일에 대한 공유/접근 권한을 부여받은 공유자의 질문에 적절한 응답 결과를 생성할 수 있다. 또는 사용자 또는 공유자의 질문에 적절한 응답을 생성할 수 있다. 예를 들어, 사용자가 “내가 좋아하는 음식은 어떤 종류인가?”라는 질문에 “제일 좋아하는 음식은 이탈리안 음식입니다.”라는 응답을 생성할 수 있다. 또는 공유자가 “이탈리안 음식점을 자주가는 사람의 모수는 몇 명입니까?” 라는 질문에 “이탈리안 음식점을 일주일에 한번 이상 방문하는 사람의 모수는 전체 사용자 123,456명 중 12,345명입니다.”라는 응답을 생성할 수 있다.
마케팅 분야에서 종래의 데이터 기반의 개인화 추천 시스템은, 위와 같은 질문에 응답하기 위해서는 사용자 행동을 미리 결정된 질문에 알맞게 사용자 행동에 대한 특징(feature)을 카테고리에 따라 수집하거나, 수집된 사용자 특징을 질문에 알맞게 편집 또는 수정해야 한다. 다시 말하면, 마케팅하는 상품이나 서비스에 따라 수집하는 사용자에 대한 데이터의 특징이나 카테고리가 미리 정해져야 하므로, 특정 마케팅을 위해 구축된 시스템은 다른 마케팅에서는 사용될 수 없다. 이러한 경직성 이외에도 수집될 수 있는 데이터의 종류가 무한하여 데이터를 분류하는데 엄청난 노력이 필요할 수 있다. 상술한 질문을 예를 들면, 이탈리안 음식은 무척 다양한 메뉴가 있고 다양한 이름의 음식점이 존재하기 때문에 모든 메뉴와 음식점을 미리 규칙으로써 결정하여야 한다. 예를 들어, 일 사용자가 파스타 음식점에 방문한 행동 데이터가 수집되었다고 할 때, '파스타'가 이탈리안 음식이라는 사실이 미리 규칙으로 결정되어야 한다. 다른 예를 들어, 사용자가 '나폴리'라는 음식점을 방문한 행동 데이터가 수집되었을 대, '나폴리'라는 음식점이 이탈리안 음식점인지 여부는 미리 규칙으로 결정되어야 한다. 이러한 규칙 설정은 수동으로 설정하여야 하며, 수집하는 특징을 설정하거나 다양한 특징들 간에 규칙을 설정하기 위해서는 질문 또한 미리 설정되어야 한다는 단점이 있다.
하지만, 본 개시의 일 실시예에 따르는 QnA 결과 생성기(323)는 언어 모델(Language Model)을 사용하여 질문 또는 질문에 적합한 규칙을 미리 설정하지 않고도 유연하게 질문과 질문에 응답할 수 있는 사용자 프로파일 검색 서비스를 제공할 수 있다. 언어 모델이란 언어라는 현상을 모델링하기 위하여 단어 문장(sequence)에 확률을 할당하는 모델이다. 다시 말하면, 언어 모델은 가장 자연스러운 단어 시퀀스를 찾아내는 모델이다. 언어 모델은 통계를 이용한 방법 또는 인공 신경망을 이용한 방법에 기초하여 생성될 수 있다.
질문 번역기(321)는 사람이 평소에 사용하는 언어로서 자연어(Natural Language)를 자연어의 구성단위인 형태소, 구문 등을 분석하고 처리하는 자연어처리(NLP: Natural Language Processing) 기술이 사용될 수 있다. 질문 번역기(321)는 자연어 처리를 통해 질문에 대한 정보를 바탕으로 기계가 자연어를 이해할 수 있도록 자연어이해(NLU: Natural Language Understanding) 기술이 사용될 수 있다. 즉, 질문 번역기(321)는 자연어의 질문을 QnA 결과 생성기(323)에서 사용될 수 있는 형태의 텍스트(text)로 번역할 수 있다. 질문 번역기(321)에서 이용되는 자연어처리 및 자연어이해에는 통상의 기술자가 용이하게 이해될 수 있는 범위에서 다양한 기술이 사용될 수 있다.
일 실시예에서 질문 번역기(321)는 다양한 유형의 질문을 번역할 수 있다. 질문 번역기(321)는 예/아니오(Yes/No)로 대답할 수 있는 객관식 질문(closed-ended question), 복수의 선택이 가능한 선다형 질문(multiple choice question) 및 주관식 질문(open-ended question)를 번역할 수 있다. 또한 일 실시예에서, 질문 번역기(321)는 특정 사용자 군(cluster)을 찾는 질문은 객관식 질문으로 번역한 후 복수의 사용자에 대한 응답을 구할 수 있다. 각 질문을 번역한 텍스트를 이용한 기계 독해 결과를 통해 질문에 대한 응답을 생성하는 구체적인 방법은 추후 설명하기로 한다.
일 실시예에 있어서, 행동 번역기(322)는 행동 매니저(310)가 생성한 사용자의 맥락 정보 또는 프로파일에 저장된 정보를 텍스트(text)로 번역할 수 있다. 다시 말하면, 행동 번역기(322)는 인앱 데이터 및 오프앱 데이터에 기초하여 생성한 사용자 프로파일을 축적된 정보들을 텍스트(text)로 번역할 수 있다. 또는 행동 번역기(322)는 사용자 장치(110)로부터 수신된 인앱 데이터 및 오프앱 데이터에 기초하여 직접적으로 텍스트를 생성할 수도 있다. 행동 번역기(322)는 현재 맥락(예: 시간, 날씨), 행동(예: 방문, 음악 감상 등) 및 행동에 대한 메타데이터(metadata)(예: 카테고리, 장르 등)에 기초하여 자연스러운 텍스트를 생성할 수 있다. 예를 들어, 인앱 데이터 및 오프앱 데이터는 “6월 29일 월요일, 비가오는 날, 나폴리 이탈리안 음식점을 방문했다.”라는 텍스트로 번역될 수 있다. 또한, 행동 번역기(322)는 인앱 데이터 및 오프앱 데이터에 기초하여 생성된 사용자 프로파일에 기초하여 사용자의 개성(characteristic)에 관한 텍스트를 번역할 수 있다. 예를 들어, 사용자 프로파일에 기초하여 “한달에 3번 이상 피자집을 방문하는 사람”, “매일매일 오전 9시 이전에 출근하는 full-time worker”라는 텍스트로 번역될 수 있다.
일 실시예에서 행동 번역기(322)가 사용자에 관한 문장을 번역할 때, 질문 또는 질문 번역기(322)가 질문을 번역한 텍스트가 이용될 수 있다. 예를 들어, 질문이 '음식'에 관한 질문인 경우에 행동 번역기(322)는 엔티티로서 '음식'에 관련된 텍스트들을 번역할 수 있다.
일 실시예에 있어서, QnA 매니저(320)는 질문 번역기(321) 및 행동 번역기(322)가 질문 또는 행동 데이터를 텍스트로 번역하는데 있어, 주변 단어 기반으로 동음이의어나 다의어의 정확한 의미를 판단하는 엔진을 더 포함할 수 있다. 예를 들어, '기상'이라는 단어는 '대기 중에서 일어나는 물리적인 현상'의 의미와, '잠자리에서 일어남'의 의미를 모두 가진다. 따라서, '기상'이라는 단어가 포함된 질문으로서 '오늘 기상은? 이라는 질문에서 '기상'은 단순히 날씨를 의미할 수 있고, '오늘 기상 시간은? 이라는 질문은 '기상'이라는 단어의 주변 단어로서 '시간'이라는 단어를 더 포함하고 있으므로 '기상'은 잠자리에서 일어남을 의미할 수 있으며, 주변 단어 기반으로 의미를 판단하는 엔진을 이용하여 이를 정확하게 판단할 수 있다.
일 실시예에서, QnA 결과 생성기(323)는 질문 번역기(321) 및 행동 번역기(322)가 번역한 텍스트에 기초하여 기계 독해(MRC: Machine Reading Comprehension)를 이용함으로써 사용자의 질문에 대한 응답을 생성할 수 있다. 구체적으로 QnA 결과 생성기(323)는 질문 번역기(321) 및 행동 번역기(322)가 번역한 텍스트에 포함된 단어(word)의 의미를 밀집 벡터화(dense vector)하는 워드 임베딩(Word Embedding) 방법을 이용할 수 있다.
워드 임베딩(Word Embedding)이란 단어를 밀집 벡터(dense vector)로 표현하는 방법으로, 단어를 밀집 표현(Dense Representation)으로 변환하는 것을 의미할 수 있다. 밀집 표현은 희소 표현(Sparse Representation)의 반대되는 개념으로서, 시스템이 설정한 값으로 모든 단어의 벡터 표현의 차원으로 통일하는 것을 의미할 수 있다. 또한, 워드 임베딩은 LSA, Word2Vec, FastText, Glove를 포함하는 다양한 방식으로 구현될 수 있다. 위와 같은 워드 임베딩은 단어들을 벡터화 하기 위하여 웹 백과사전(예: 위키디피아)와 같은 방대한 양의 코퍼스(corpus, 말뭉치)를 가지고 미리 훈련된 임베딩 벡터(Pre-trained embedding vector)를 불러오는 방법을 이용할 수 있다. 또한 현재 행동데이터와 질문에 적절한 훈련 데이터를 별도로 마련하여 기존 모델의 상위 층(layer)을 해제하여 새로운 층과 함께 학습시키는 Fine-Tuning, 기존 모델을 사용하지 않고 학습하여 벡터화하는 Full-Learning의 방법을 이용할 수도 있다. 이와 같은 기계 학습은 QnA 결과 생성기(323)에 포함된 Pre-trained Embedding 모델(325) 및 Fine-tuned 모델(326)을 이용할 수 있다.
또한, 일 실시예에서 단어의 밀집 벡터화는 사용자 개인에 따라 개인화(customizing) 될 수 있다. 예를 들어, '나폴리' 라는 단어는 이탈리아 여행을 다녀온 사용자에게 '나폴리'라는 단어는 이탈리아의 지명으로서 '나폴리'의 관광장소 등 지명과 관련 있는 단어들과 인접하여 벡터화 될 수 있다. 또한, '나폴리'라는 단어는, 이탈리아 여행을 다녀온 것이 아니라 '나폴리'라는 이름의 이탈리안 레스토랑을 자주 가는 사람에게는 음식 메뉴와 관련 있는 단어들과 인접하여 벡터화 될 수 있다. 이에 기초하면, 나폴리에서 여행을 한 사용자에게 '나폴리'와 관련된 질문을 하면, 여행과 관련된 응답이 생성될 것이고, 나폴리라는 이탈리아 음식점을 자주 가는 사람에게 '나폴리'와 관련된 질문을 하면 이탈리아 음식과 관련된 응답 결과가 나올 수 있다.
다른 실시예에서, 질문 번역기(321) 및 행동 번역기(322)는 서버(120)에 포함되고, QnA 결과 생성기(323)는 사용자 장치(110)에 포함될 수 있다. 이러한 실시예에서, 사용자 장치(110)는 서버(120)에 포함된 행동 번역기(322)로부터 번역된 결과를 수신하여 저장하고, 사용자가 사용자 장치(110)를 이용하여 질문을 할 때, 이러한 질문을 서버(120)에 전송할 수 있다. 서버(120)는 사용자 장치(110)로부터 수신된 질문을 질문 번역기(321)를 이용하여 텍스트로 번역하고 번역된 질문을 사용자 장치(110)에 전송할 수 있다. 사용자 장치(110)는 수신한 번역된 질문과 미리 저장된 행동 번역기(322)의 번역 결과의 텍스트에 기초하여 기계 독해를 이용함으로써 사용자의 질문에 대한 응답을 생성할 수 있다.
또다른 실시예에서, 질문 번역기(321) 및 행동 번역기(322)는 사용자 장치(110)에 포함되고, QnA 결과 생성기(323)가 서버(120)에 포함될 수 있다. 앞선 실시예와 반대로, 사용자 장치(110)에서 인앱 데이터 및 오프앱 데이터에 기초하여 사용자 프로파일에 관한 정보를 행동 번역기(322)가 텍스트로 번역하여 저장하고, 사용자가 질문을 할 때, 질문 번역기(321)가 해당 질문을 텍스트로 번역하면, 사용자 장치(110)는 이러한 번역 결과들을 서버(120)에 전송하고 서버(120)에 포함된 QnA 결과 생성기(323)가 번역 결과들에 기초하여 기계 독해를 이용함으로써 사용자의 질문에 대한 응답을 생성할 수도 있다.
도 5는 본 개시의 일 실시예에 다른 사용자 프로파일 검색 시스템에서 시각화된 워드 임베딩 벡터를 나타낸다. 도 5를 참조하면, 단어 '파스타' 및 '피자'의 주변 단어로서 '음식' 및 '이탈리안'와 근처에 위치하는 벡터값을 가지는 것을 확인할 수 있다.
다시 도 3을 참조하면, QnA 결과 생성기(323)는 워드 임베딩이 적용된 텍스트에 기초하여 질문에 대한 응답을 제공할 수 있다. 일 실시예에서, 객관식 질문의 경우 질문에 가장 적합한 문장의 start/end position을 추출하여 정답을 응답으로써 제공할 수 있다. 선다형 질문의 경우 객관식과 같은 방식으로 추출한 정답과 가장 가까운 거리(distance)에 있는 항목을 선택하여 응답으로써 제공할 수 있다. 특정 사용자 군을 찾는 질문은 질문 번역기(321)가 변형한 일 사용자에 적합한 객관식 질문을 복수의 사용자의 프로파일에 대한 텍스트에 적용하여 이에 해당하는 사용자 군을 추출할 수 있다. 예를 들어, “피자를 자주 먹는 사람의 수는 몇 명입니까?”라는 사용자 군을 찾는 질문에 대하여 질문 번역기(321)는 “피자를 일주일에 한번 이상 먹습니까?”라는 객관식 질문의 텍스트로 번역하고 이를 각각의 사용자에 대해 질의하여 “예(Yes)”라는 응답의 사용자를 추출하여 본래의 질문인 “피자를 자주 먹는 사람의 수는 몇 명입니까?”라는 질문에 대한 응답을 생성할 수 있다.
도 6은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템이 사용자 프로파일을 구축하는 예시적인 프로세스(600)를 도시하는 흐름도이다. 예컨대, 프로세스(600)는 도 1의 시스템(100) 같은 하나 이상의 컴퓨팅 장치(예: 사용자 장치(110) 및/또는 서버(120))의 제어 하에서 수행될 수 있다. 도 6에 도시된 프로세스(600)는 블록(S601 내지 S609)에 의하여 예시된 바와 같은 하나 이상의 동작, 기능 또는 작용을 포함할 수 있다. 한편, 도 6에 예시된 개략적인 동작들은 예시로서만 제공되고, 개시된 실시예의 본질에서 벗어나지 않으면서, 동작 중 일부가 선택적일 수 있거나, 더 적은 동작으로 조합될 수 있거나, 추가적인 동작으로 확장될 수 있다. 프로세스(600)는 사용자 장치(예: 도 1의 110)가 사용되는 단계(S601)에서 시작할 수 있다.
다음으로, 프로세스(600)는 사용자 장치에서 인앱 데이터 및 오프앱 데이터를 수집하는 단계(S603)로 이어질 수 있다. 사용자 장치에서 사용중인 애플리케이션으로부터 인앱 데이터를 수집함과 동시에 오프앱 데이터를 수집할 수 있다.
다음으로 프로세스(600)는 인앱 데이터 및 오프앱 데이터에 기초하여 사용자 프로파일을 구축하는 단계로 이어질 수 있다(S605 단계). 구축된 사용자 프로파일은 다음 단계(S607)에서 기계 독해에 사용될 수 있는 텍스트로 번역될 수 있는데, 일 실시예에서 단계(S603)에서 수집된 인앱 데이터 및 오프앱 데이터로부터 곧바로 텍스트로 번역될 수도 있다.
다음으로 프로세스(600)는 번역된 텍스트를 워드 임베딩하는 단계(S609)가 선택적으로 수행될 수 있다.
도 7은 본 개시의 일 실시예에 따른 사용자 행동 예측 시스템이 이벤트 예측 모델을 사용하는 예시적인 프로세스(700)를 도시하는 흐름도이다. 예컨대, 프로세스(700)는 도 1의 시스템(100) 같은 하나 이상의 컴퓨팅 장치(예: 사용자 장치(110) 및/또는 서버(120))의 제어 하에서 수행될 수 있다. 도 7에 도시된 프로세스(700)는 블록(S701 내지 S707)에 의하여 예시된 바와 같은 하나 이상의 동작, 기능 또는 작용을 포함할 수 있다.
본 개시의 일 실시예에 따르면 프로세스(700)는 서버(예: 도 1의 120)가 사용자 프로파일 데이터에 대한 접근 권한이 있는 사용자로부터 질문을 수신하는 단계(S701)에서 시작할 수 있다. 질문의 주체로서 사용자는 자신의 특성을 파악하기 위하여 사용자 프로파일 데이터의 주체인 개인 사용자, 타겟 마케팅을 위해 복수의 사용자 프로파일 데이터를 이용할 필요가 있는 외부 사용자를 포함할 수 있다. 사용자는 각자의 사용자 장치(예: 도 1의 110)으로부터 질문을 생성하여 서버(120)에 전송할 수 있다. 외부 사용자는 사용자 프로파일 데이터의 주체인 개인 사용자로부터 해당 데이터에 접근할 권한을 부여받은 사용자 일 수 있다. 외부 사용자는 예를 들어 사용자 프로파일을 이용한 다른 서비스를 제공하기 위한 서비스 제공자 또는 타겟 마켓팅을 기획하는 마케터일 수 있다.
다음으로, 프로세스(700)는 질문의 유형에 기초하여 적합한 텍스트로 번역하는 단계(S703)로 이어질 수 있다. 다른 예를 들어, 사용자 스스로가 자신의 개성을 확인하기 위해서 “나는 무슨 음식을 좋아해?”라는 질문은 기계 독해에서 사용될 수 있도록 “당신은 무슨 음식을 좋아합니까”라는 질문으로 기계 독해를 통해 응답을 생성하기 용이하도록 질문을 변환될 수 있다. 다른 예를 들어, 특정 사용자 군(cluster)을 찾는 질문은 개인을 대상으로 한 객관식 질문으로 번역할 수 있다. “피자를 좋아하는 사람은 몇 명입니까?”라는 질문은 “당신은 피자를 좋아합니까?” 라는 개인을 대상으로 한 질문으로 변환될 수 있다.
다음으로, 프로세스(700)는 번역된 텍스트를 워드 임베딩하는 단계(S705)를 수행할 수 있다. 이 경우, 사용자 프로파일 데이터에 기초한 텍스트에 대한 워드 임베딩이 이뤄지지 않은 경우(예: 도 6의 단계(S609)가 수행되지 않은 경우)에 사용자 프로파일 데이터에 기초한 텍스트에 대한 워드 임베딩이 함께 이뤄질 수 있다.
다음으로, 프로세스(700)는 질문에 기초한 워드 임베딩 결과 및 사용자 프로파일에 기초한 워드 임베딩 결과를 이용하여 기계 독해를 수행하여 질문에 대한 응답을 생성하는 단계(S709)를 수행할 수 있다. 예를 들어, 객관식 질문의 경우 질문에 가장 적합한 문장의 start/end position을 추출하여 정답을 응답으로써 제공할 수 있다. 선다형 질문은, 객관식 질문과 같은 방식으로 추출한 정답과 가장 가까운 distance에 있는 항목을 선택하여 응답으로써 제공할 수 있다. 특정 사용자 군을 찾는 질문은 단계(S703)변환한 일 사용자를 대상으로 한 객관식 질문을 복수의 사용자의 프로파일에 대한 텍스트에 적용하여 이에 해당하는 사용자 군을 추출할 수 있다.
본 개시에 따르면 개인의 개성을 묻는 질문에 대한 응답의 제공이 가능하여 사용자가 스스로 인지하지 못하던 자신의 개성에 대해 파악이 가능하고, 유연하고 높은 수준의 정확도를 가진 초개인화 마케팅의 실현을 가져온다. 특히, 본 개시는 기존의 특징(feature) 또는 구조(structure) 기반의 시스템에서 구현되던 초개인화 마케팅을 보다 유연하고 경제적으로 구현할 수 있게 함으로써 마케팅 비용을 절감해, 마케팅 캠페인의 효율을 극대화하는 효과를 가져올 수 있다. 그 뿐만 아니라, 본 개시에 따르면 마케팅 이후의 사용자의 개성을 묻는 질문을 통하여 고객 반응을 관찰함으로써, 궁극적으로 마케팅을 넘어 고객이 원하는 상품 혹은 서비스 기획으로 이어질 수 있다. 즉 본 개시가 제공하는 사용자 프로파일 검색 시스템은 매력적인 커뮤니케이션을 통해 고객을 더욱 풍부한 영역에서 세밀하게 관찰할 수 있고, 개인의 사용자 경험 또한 다양한 영역에서 더욱 편리하고 유용한 방향으로 확장될 수 있다.
도 8은 본 개시의 일 실시예에 따른 사용자 프로파일 검색 시스템에서 실행되는 예시적인 컴퓨터 프로그램 제품(800)을 도시한다. 예시적인 컴퓨터 프로그램 제품(800)의 예시적인 실시예는 신호 포함 매체(802)를 이용하여 제공된다. 일 실시예에서, 하나 이상의 컴퓨터 프로그램 제품(800)의 신호 포함 매체(802)는 컴퓨터 판독가능 매체(806), 기록 가능 매체(808) 및/또는 통신 매체(810)를 포함할 수 있다.
신호 포함 매체(802)에 포함된 명령어(804)는 사용자 장치(110) 및 서버(120)와 같은 컴퓨팅 장치에 의해 실행될 수 있다. 명령어(804)는, 자연어로 구성된 질문을 수신하는 명령어; 상기 질문을 텍스트로 번역하여 질문 텍스트를 생성하고 상기 질문 텍스트로부터 임베딩을 추출하는 명령어; 사용자 프로파일을 텍스트로 번역하여 프로파일 텍스트를 생성하고, 상기 프로파일 텍스트로부터 임베딩을 추출하는 명령어; 및 상기 추출된 임베딩을 이용한 기계 독해에 기초하여 상기 질문에 대한 응답을 생성하는 명령어를 포함할 수 있다.
전술한 본원의 설명은 예시를 위한 것이며, 본원이 속하는 기술분야의 통상의 지식을 가진 자는 본원의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수도 있다.
이상, 본 개시에서 청구하고자 하는 대상에 대해 구체적으로 살펴보았다. 본 개시에서 청구된 대상은 앞서 기술한 특정 구현예로 그 범위가 제한되지 않는다. 예컨대, 어떤 구현예에서는 장치 또는 장치의 조합 상에서 동작 가능하게 사용되는 하드웨어의 형태일 수 있으며, 다른 구현예에서는 소프트웨어 및/또는 펌웨어의 형태로 구현될 수 있고, 또 다른 구현예에서는 신호 베어링 매체, 저장 매체와 같은 하나 이상의 물품을 포함할 수 있다. 여기서, CD-ROM, 컴퓨터 디스크, 플래시 메모리 등과 같은 저장 매체는, 예컨대 컴퓨팅 시스템, 컴퓨팅 플랫폼 또는 기타 시스템과 같은 컴퓨팅 장치에 의하여 실행될 때 앞서 설명한 구현예에 따라 해당 프로세서의 실행을 야기시킬 수 있는 명령을 저장할 수 있다. 이러한 컴퓨팅 장치는 하나 이상의 처리 유닛 또는 프로세서, 디스플레이, 키보드 및/또는 마우스와 같은 하나 이상의 입/출력 장치, 및 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, 플래시 메모리 및/또는 하드 드라이브와 같은 하나 이상의 메모리를 포함할 수 있다.
한편, 시스템을 하드웨어로 구현할 것인지 아니면 소프트웨어로 구현할 것인지는, 일반적으로 비용 대비 효율의 트레이드오프를 나타내는 설계상 선택 문제이다. 본 개시에서는 프로세스, 시스템, 기타 다른 기술들의 영향을 받을 수 있는 다양한 수단(예를 들어, 하드웨어, 소프트웨어 및/또는 펌웨어)이 있으며, 선호되는 수단은 프로세스 및/또는 시스템 및/또는 다른 기술이 사용되는 맥락(context)에 따라 변경될 것이다. 예를 들어, 구현자가 속도 및 정확성이 가장 중요하다고 결정한다면, 구현자는 주로 하드웨어 및/또는 펌웨어 수단을 선택할 수 있으며, 유연성이 가장 중요하다면, 구현자는 주로 소프트웨어 구현을 선택할 수 있으며; 또는, 다른 대안으로서, 구현자는 하드웨어, 소프트웨어 및/또는 펌웨어의 어떤 결합을 선택할 수 있다.
전술한 상세한 설명에서는 블록도, 흐름도 및/또는 기타 예시를 통해 장치 및/또는 프로세스의 다양한 실시예를 설명하였다. 그러한 블록도, 흐름도, 및/또는 기타 예시는 하나 이상의 기능 및/또는 동작을 포함하게 되며, 당업자라면 블록도, 흐름도 및/또는 기타 예시 내의 각각의 기능 및/또는 동작이 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 개별적으로 혹은 집합적으로 구현될 수 있다는 점을 이해할 수 있을 것이다. 일 실시예에서, 본 개시에 기재된 대상의 몇몇 부분은 ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), DSP(Digital Signal Processor) 또는 다른 집적의 형태를 통해 구현될 수 있다. 이와 달리, 본 개시의 실시예의 일부 양상은 하나 이상의 컴퓨터 상에 실행되는 하나 이상의 컴퓨터 프로그램(예를 들어, 하나 이상의 컴퓨터 시스템 상에 실행되는 하나 이상의 프로그램), 하나 이상의 프로세서 상에서 실행되는 하나 이상의 프로그램(예를 들어, 하나 이상의 마이크로프로세서 상에서 실행되는 하나 이상의 프로그램), 펌웨어 또는 이들의 실질적으로 임의의 조합으로써 전체적으로 또는 부분적으로 균등하게 집적 회로에서 구현될 수도 있으며, 소프트웨어 및/또는 펌웨어를 위한 코드의 작성 및/또는 회로의 설계는 본 개시에 비추어 당업자의 기술 범위 내에 속하는 것이다. 또한, 당업자라면, 본 개시의 대상의 매커니즘들이 다양한 형태의 프로그램 제품으로 분배될 수 있음을 이해할 것이며, 본 개시의 대상의 예시는 분배를 실제로 수행하는데 사용되는 신호 베어링 매체의 특정 유형과 무관하게 적용됨을 이해할 것이다.
특정 예시적 기법이 다양한 방법 및 시스템을 이용하여 여기에서 기술되고 도시되었으나, 당업자라면, 청구된 대상에서 벗어남이 없이, 다양한 기타의 수정 또는 등가물로의 치환 가능성을 이해할 수 있다. 추가로, 여기에 기술된 중심 개념으로부터 벗어남이 없이 특정 상황을 청구된 대상의 교시로 적응시키도록 많은 수정이 이루어질 수 있다. 따라서, 청구된 대상이 개시된 특정 예시로 제한되지 않으나, 그러한 청구된 대상은 또한 첨부된 청구범위 및 그 균등의 범위 내에 들어가는 모든 구현예를 포함할 수 있음이 의도된다.
본 개시 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 본 개시 전체에서, 어떤 부재가 다른 부재 "상에" 위치하고 있다고 할 때, 이는 어떤 부재가 다른 부재에 접해 있는 경우뿐 아니라 두 부재 사이에 또 다른 부재가 존재하는 경우도 포함한다. 나아가, 본 개시 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다. 본 개시에서 사용되는 정도의 용어 "약," "실질적으로" 등은 언급된 의미에 고유한 제조 및 물질 허용오차가 제시될 때 그 수치에서 또는 그 수치에 근접한 의미로 사용되고, 본원의 이해를 돕기 위해 정확하거나 절대적인 수치가 언급된 개시 내용을 비양심적인 침해자가 부당하게 이용하는 것을 방지하기 위해 사용된다.
본 개시의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위, 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본원의 범위에 포함되는 것으로 해석되어야 한다.
Claims (10)
- 사용자 프로파일 검색 서비스를 제공하기 위한 시스템에 포함된 하나 이상의 컴퓨팅 장치에서 수행되는 방법으로서,
자연어로 구성된 질문을 수신하는 단계;
상기 질문을 텍스트로 번역하여 질문 텍스트를 생성하고 상기 질문 텍스트로부터 임베딩을 추출하는 단계;
사용자 프로파일을 텍스트로 번역하여 프로파일 텍스트를 생성하고, 상기 프로파일 텍스트로부터 임베딩을 추출하는 단계;
상기 추출된 임베딩을 이용한 기계 독해에 기초하여 상기 질문에 대한 응답을 생성하는 단계를 포함하는,
사용자 프로파일 검색 서비스를 제공하기 위한 방법. - 제1항에 있어서,
상기 방법은 상기 질문의 유형을 확인하는 단계를 더 포함하고
상기 질문을 텍스트로 번역하는 단계는, 확인된 상기 질문의 유형이 특정 사용자 군(cluster)을 찾는 유형인 경우, 상기 질문을 개인을 대상으로 한 객관식 질문으로 변환하는 단계를 더 포함하는 것인,
사용자 프로파일 검색 서비스를 제공하기 위한 방법. - 제2항에 있어서,
상기 추출된 임베딩을 이용한 기계 독해에 기초하여 상기 질문에 대한 응답을 생성하는 단계는, 확인된 상기 질문의 유형이 특정 사용자 군을 찾는 유형인 경우, 복수의 사용자 프로파일 중 각각에 대한 상기 객관식 질문의 응답을 취합하여 상기 특정 사용자 군을 찾는 유형의 질문에 대한 응답을 생성하는 단계를 더 포함하는 것인,
사용자 프로파일 검색 서비스를 제공하기 위한 방법. - 제1항에 있어서,
사용자 장치로부터 인앱 데이터 및 오프앱 데이터를 수신하는 단계를 더 포함하고,
상기 인앱 데이터는 상기 사용자 장치에 설치된 애플리케이션으로부터 수집되고, 상기 오프앱 데이터는 상기 사용자 장치에 포함된 하나 이상의 센서로부터 수집되는 것인,
사용자 프로파일 검색 서비스를 제공하기 위한 방법. - 제4항에 있어서,
상기 사용자 프로파일은 상기 인앱 데이터 및 오프앱 데이터의 분석을 통해 결정되는 사용자의 행동 정보에 기초하여 생성되는 것인,
사용자 프로파일 검색 서비스를 제공하기 위한 방법. - 사용자 프로파일 검색 서비스를 제공하기 위한 하나 이상의 서버로서,
사용자 장치로부터 인앱 데이터, 오프앱 데이터 및 질문을 수신하는 하나 이상의 수신부;
상기 인앱 데이터 및 상기 오프앱 데이터에 기초하여 사용자 프로파일을 생성하는 하나 이상의 분석기;
상기 질문을 질문 텍스트로 번역하고, 상기 사용자 프로파일을 프로파일 텍스트로 번역하는 하나 이상의 번역기; 및
상기 질문 텍스트 및 상기 프로파일 텍스트로부터 임베딩을 추출하고 기계 독해를 수행하여 상기 질문에 대한 응답을 생성하는 기계 독해 엔진을 포함하는,
하나 이상의 서버. - 제6항에 있어서,
상기 하나 이상의 번역기는, 확인된 상기 질문의 유형이 특정 사용자 군(cluster)을 찾는 유형인 경우, 상기 질문을 개인을 대상으로 한 객관식 질문으로 변환하도록 더 구성되는, 하나 이상의 서버. - 제7항에 있어서,
상기 기계 독해 엔진은, 확인된 상기 질문의 유형이 특정 사용자 군을 찾는 유형인 경우, 복수의 사용자 프로파일 중 각각에 대한 상기 객관식 질문의 응답을 취합하여 상기 특정 사용자 군을 찾는 유형의 질문에 대한 응답을 생성하도록 더 구성된, 하나 이상의 서버. - 제6항에 있어서,
상기 인앱 데이터는 상기 사용자 장치에 설치된 애플리케이션으로부터 수집되고, 상기 오프앱 데이터는 상기 사용자 장치에 포함된 하나 이상의 센서로부터 수집되는 것인,
하나 이상의 서버. - 사용자 프로파일 검색 서비스를 제공하기 위한 컴퓨터 프로그램을 저장한 컴퓨터 판독 가능 기록 매체로서, 상기 컴퓨터 프로그램은 사용자 프로파일 검색 시스템에 포함된 하나 이상의 컴퓨팅 장치에서 수행 가능한 하나 이상의 명령어를 포함하며, 상기 하나 이상의 명령어는,
자연어로 구성된 질문을 수신하는 명령어;
상기 질문을 텍스트로 번역하여 질문 텍스트를 생성하고 상기 질문 텍스트로부터 임베딩을 추출하는 명령어;
사용자 프로파일을 텍스트로 번역하여 프로파일 텍스트를 생성하고, 상기 프로파일 텍스트로부터 임베딩을 추출하는 명령어; 및
상기 추출된 임베딩을 이용한 기계 독해에 기초하여 상기 질문에 대한 응답을 생성하는 명령어
를 포함하는, 사용자 프로파일 검색 서비스를 제공하기 위한 컴퓨터 프로그램을 저장한 컴퓨터 판독 가능 기록 매체.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020210036157A KR20220131069A (ko) | 2021-03-19 | 2021-03-19 | 언어 모델을 이용한 사용자 프로파일 검색 시스템 및 이의 운용 방법 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020210036157A KR20220131069A (ko) | 2021-03-19 | 2021-03-19 | 언어 모델을 이용한 사용자 프로파일 검색 시스템 및 이의 운용 방법 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| KR20220131069A true KR20220131069A (ko) | 2022-09-27 |
Family
ID=83451707
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020210036157A Pending KR20220131069A (ko) | 2021-03-19 | 2021-03-19 | 언어 모델을 이용한 사용자 프로파일 검색 시스템 및 이의 운용 방법 |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR20220131069A (ko) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102865941B1 (ko) * | 2025-07-11 | 2025-09-29 | 파라낙사다트 솔라트 | 적응형 하이브리드 처리를 이용한 개인화된 다중모드 쇼핑 보조 시스템 및 그 방법 |
| WO2026034786A1 (ko) * | 2024-08-07 | 2026-02-12 | 삼성전자주식회사 | 하이브리드 데이터 기반 고객 세그먼트를 추출하기 위한 전자 장치 및 그 제어 방법 |
-
2021
- 2021-03-19 KR KR1020210036157A patent/KR20220131069A/ko active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2026034786A1 (ko) * | 2024-08-07 | 2026-02-12 | 삼성전자주식회사 | 하이브리드 데이터 기반 고객 세그먼트를 추출하기 위한 전자 장치 및 그 제어 방법 |
| KR102865941B1 (ko) * | 2025-07-11 | 2025-09-29 | 파라낙사다트 솔라트 | 적응형 하이브리드 처리를 이용한 개인화된 다중모드 쇼핑 보조 시스템 및 그 방법 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12461762B2 (en) | Apparatus and method for detecting, analyzing, and mapping transaction events for improved context understanding in artificial intelligence systems | |
| Bradley et al. | Toward a multidisciplinary model of context to support context-aware computing | |
| US10003924B2 (en) | Method of and server for processing wireless device sensor data to generate an entity vector associated with a physical location | |
| Torres-Ruiz et al. | A recommender system to generate museum itineraries applying augmented reality and social-sensor mining techniques | |
| Ravi et al. | A collaborative location based travel recommendation system through enhanced rating prediction for the group of users | |
| Siła-Nowicka et al. | Analysis of human mobility patterns from GPS trajectories and contextual information | |
| García-Crespo et al. | SPETA: Social pervasive e-Tourism advisor | |
| De Pessemier et al. | Context-aware recommendations through context and activity recognition in a mobile environment | |
| Bin et al. | A travel route recommendation system based on smart phones and IoT environment | |
| JP5935516B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
| Alivand et al. | Spatiotemporal analysis of photo contribution patterns to Panoramio and Flickr | |
| JP5895716B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
| US20180191860A1 (en) | Context management for real-time event awareness | |
| US20200236427A1 (en) | Personalized content aggregation & delivery | |
| Otebolaku et al. | Context-aware media recommendations for smart devices | |
| KR20230138605A (ko) | 사용자에 대한 관광 큐레이션 서비스 제공 시스템 및 방법 | |
| D’Agostino et al. | A social context-aware recommender of itineraries between relevant points of interest | |
| US20170249325A1 (en) | Proactive favorite leisure interest identification for personalized experiences | |
| KR20220131069A (ko) | 언어 모델을 이용한 사용자 프로파일 검색 시스템 및 이의 운용 방법 | |
| JP6183489B2 (ja) | 情報処理システム、情報処理方法、及びプログラム | |
| Rosa et al. | A Weight‐Aware Recommendation Algorithm for Mobile Multimedia Systems | |
| Thakur et al. | Google trends to investigate the degree of global interest related to indoor location detection | |
| Thiengburanathum | An intelligent destination recommendation system for tourists. | |
| JP7747535B2 (ja) | 情報提供装置、情報提供方法および情報提供プログラム | |
| RU2658876C1 (ru) | Способ и сервер для обработки данных датчика беспроводного устройства для создания вектора объекта, связанного с физическим положением |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-3-3-R10-R13-asn-PN2301 St.27 status event code: A-3-3-R10-R11-asn-PN2301 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| R18 | Changes to party contact information recorded |
Free format text: ST27 STATUS EVENT CODE: A-3-3-R10-R18-OTH-X000 (AS PROVIDED BY THE NATIONAL OFFICE) |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-3-3-R10-R18-oth-X000 |