KR20170137150A - 액션 기반 앱 추천 엔진 - Google Patents

액션 기반 앱 추천 엔진 Download PDF

Info

Publication number
KR20170137150A
KR20170137150A KR1020177032436A KR20177032436A KR20170137150A KR 20170137150 A KR20170137150 A KR 20170137150A KR 1020177032436 A KR1020177032436 A KR 1020177032436A KR 20177032436 A KR20177032436 A KR 20177032436A KR 20170137150 A KR20170137150 A KR 20170137150A
Authority
KR
South Korea
Prior art keywords
application
actions
applications
user
data store
Prior art date
Application number
KR1020177032436A
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 퀵시, 인크.
Publication of KR20170137150A publication Critical patent/KR20170137150A/ko

Links

Images

Classifications

    • G06F17/3053
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/29Geographical information databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9537Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
    • G06F17/30241
    • G06F17/30554
    • G06F17/30867
    • G06F17/3087
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0251Targeted advertisements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0631Item recommendations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Development Economics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Computational Linguistics (AREA)
  • Remote Sensing (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Primary Health Care (AREA)
  • Tourism & Hospitality (AREA)
  • Stored Programmes (AREA)
  • Human Computer Interaction (AREA)

Abstract

시스템은 각각 모바일 기기의 한 어플리케이션에 대응하며 그 어플리케이션의 사용을 통해 모바일 기기 사용자가 얻을 수 있는 액션을 식별하는 메타데이터를 포함하는 레코드들을 저장하도록 구성된 제1 데이터 스토어를 포함한다. 식별된 액션은 온톨로지로부터 선택된다. 쿼리 모듈은 사용자 기기에 설치된 어플리케이션의 집합을 나타내는 데이터를 포함하는 어플리케이션 추천 요청을 처리한다. 집합 처리 모듈은 사용자 기기 어플리케이션들에 연계된 가능한 액션들의 집합을 식별하고, 가능한 액션들과 서로 배타적인 불가능한 액션들의 집합을 선별한다. 집합 생성 모듈은 어플리케이션의 고려 집합을 결정하는데, 여기서 각 어플리케이션은 불가능한 액션들의 적어도 하나를 구현한다. 집합 처리 모듈은 선택된 부분집합 내의 각 어플리케이션을 식별하는 어플리케이션 추천 응답으로 요청에 응답한다.

Description

액션 기반 앱 추천 엔진
본 발명은 일반적으로 추천 시스템에 관한 것으로, 특히 연산 장치의 어플리케이션의 자동 추천 시스템에 관한 것이다.
여기 제공된 배경 설명은 일반적으로 본 발명의 맥락을 나타내기 위한 것이다. 현재 명의의 발명자의 작업은 이 배경 부분에 기재된 범위와 출원의 시기에 종래기술로 평가되지 않았을 설명의 국면(aspect)들과 함께 명시적으로 또는 묵시적으로 본 발명에 대한 종래기술임을 인정하는 것은 아니다.
최근, 스마트폰과 태블릿 등 인터넷 연결 기기의 사용이 비약적으로 성장되었다. 이러한 기기들에 사용 가능한 어플리케이션(application; 앱, 어플)의 수와 다양성도 마찬가지로 엄청난 규모로 성장하였다. 현재로서, 어떤 주어진 인터넷 연결 기기 상에서 많고 다양한 기능들이 수행될 수 있고, 많고 다양한 데이터 세트(set)들이 분석될 수 있다. 예를 들어 Google, Inc.의 Google PLAY 플랫폼, Apple Inc.의 APP STORE 플랫폼, Amazon.com, Inc.의 Amazon APPSTORE 플랫폼, Microsoft Corp.의 WINDOWS PHONE STORE 플랫폼과 WINDOWS STORE 플랫폼, 그리고 GetJar, Inc.의 GETJAR 플랫폼 등의 앱 스토어(app store)(여기서는 디지털 배급 플랫폼(digital distribution platform)을 지칭한다)들이 함께 수백만 개의 어플들을 제공한다.
이와 같이 입수 가능한 어플들의 광범위한 무리들에서 인터넷 연결 기기의 사용자들은 관심 있는 액션(action)을 수행하거나 및/또는 사용자에게 관심 있는 데이터를 제공할 수 있는 어플의 입수 가능성(availability)을 알지 못한다. 심지어 어플 개발자들도 앱 개발자가 특화되지 않은 어플 시장의 분야에서는 사용자가 가치 있다고 발견할 수 있는 모든 어플들의 최신 상태를 따라잡을(keep up to date) 수 없다.
(본 발명) 시스템은 레코드(record)들을 저장하는 제1 데이터 스토어(data store)를 포함한다. 레코드들의 각각은 모바일 기기의 한 어플에 대응하며, 그 어플의 사용을 통해 모바일 기기 사용자가 얻을 수 있는 액션을 식별하는 메타데이터(metadata)를 포함한다. 식별된 액션은 온톨로지(ontology)로부터 선택된다. 시스템은 사용자 기기에 해당하는 어플 추천 요청(application recommendation request)을 처리하는 쿼리 모듈(query module)을 포함한다. 어플 추천 요청은 사용자 기기에 설치된 어플의 집합(set)을 나타내는(indicate) 데이터를 포함한다. 시스템은 제1 데이터 스토어를 사용하여 사용자 기기에 설치된 어플의 집합과 관련하여 사용 가능한 액션들의 집합을 식별하도록 구성된 집합 생성 모듈(set generation module)을 포함한다. 집합 생성 모듈은 사용 불가능한(unavailable) 액션들의 집합을 선별(select)하도록 구성된다. 사용 불가능한 액션들의 집합은 사용 가능한 액션들의 집합과 서로 배타적이다. 집합 생성 모듈은 제1 데이터 스토어로부터 어플들의 고려 집합(consideration set)을 결정하도록 구성된다. 고려 집합의 각 어플은 사용 불가능한 액션들의 집합의 적어도 하나를 구현한다. 시스템은 어플들의 고려 집합으로부터 어플의 선택된(chosen) 부분집합(subset)을 선별(select)하는 집합 처리 모듈을 포함한다. 시스템은 어플 추천 요청에 어플 추천 응답(application recommendation response)으로 반응하도록 구성된 결과 생성 모듈을 포함한다. 어플 추천 응답은 선택된 부분집합 내의 각 어플에 대한 식별 데이터를 포함한다.
다른 특징들에서, 제1 데이터 스토어는 레코드들의 각각에 대해 어플로부터의 억세스 메커니즘(access mechanism)의 데이터를 포함한다. 어플 추천 응답은 선택된 부분집합 내의 각 어플에 대한 억세스 메커니즘을 포함한다. 다른 특징들에서, 레코드들의 각각에 대한 억세스 메커니즘의 데이터는 디지털 배급 플랫폼 내의 어플에 대한 링크(link)를 포함한다. 다른 특징들에서, 집합 처리 모듈은 고려 집합 내의 어플들에 대한 점수(score)를 결정하고, 최고 점수들을 가지는 어플들의 고려 집합으로부터 소정(predetermined) 수의 어플들을 선택된 부분집합으로 선별하도록 구성된다. 다른 특징들에서, 어플에 대한 점수는 어플에 대한 리뷰(review)와 어플에 대한 다운로드(download) 통계에 기반한다.
다른 특징들에서, 어플에 대한 점수는 그 어플의 사용을 통해 사용자 기기에 사용 가능한 액션들의 전체 수에 반비례한다(inversely related). 다른 특징들에서, 어플에 대한 점수는 사용 가능한 액션들의 집합 내에 없으며 그 어플의 사용을 통해 사용자 기기에 사용 가능한 액션들의 수에 정비례한다(directly related). 다른 특징들에서, 집합 처리 모듈은 선택된 부분집합으로부터 사용자 기기에 설치된 어플들의 집합을 제외하도록 구성된다. 다른 특징들에서, 집합 처리 모듈은 선택된 부분집합으로부터 사용자 기기에서 삭제(uninstal)된 어플들의 집합을 제외하도록 구성된다. 다른 특징들에서, 사용 가능한 액션들의 집합은 사용자 기기에 설치된 어플들의 집합 전체의 사용을 통해 사용자 기기에 사용 가능한 온톨로지 내의 모든 액션들을 포괄한다.
다른 특징들에서, 사용자 기기에 설치된 어플들의 집합은 사용자 기기에 설치된 모든 어플들을 포괄한다. 다른 특징들에서, 어플 추천 요청은 제1 데이터 스토어 내의 레코드들에 해당하지 않는 온톨로지의 첫 번째 액션에 반응하여 촉발되고(triggered), 새로운 레코드가 제1 데이터 스토어에 추가되어 첫 번째 액션에 대응한다. 다른 특징들에서, 제1 데이터 스토어는 레코드들의 각각에 대해 레코드의 지리적 관련성(geographical relevance)에 관한 데이터를 포함한다. 어플 추천 요청은 사용자 기기가 제1 지리적 영역에서 제2 지리적 영역으로 이동함에 반응하여 촉발된다.
다른 특징들에서, 시스템은 어플이 사용자 기기에서 삭제된 첫 번째 레코드에 해당할 때 추가적 액션을 추가하도록 업데이트될 레코드들의 첫 번째 레코드에 대한 메타데이터에 반응하여 어플 추천 요청을 생성하도록 구성된 감시 모듈(monitor module)을 포함한다. 다른 특징들에서, 시스템은 (i) 어플이 사용자 기기에서 삭제된 첫 번째 레코드에 해당하는 동시에 (ii) 추가적 액션이 사용 가능한 액션들의 집합 외부에 있을 때, 추가적 액션을 추가하도록 업데이트될 레코드들의 첫 번째 레코드에 대한 메타데이터에 반응하여 어플 추천 요청을 생성하도록 구성된 감시 모듈을 포함한다.
다른 특징들에서, 사용자 기기에 설치된 어플들의 집합으로부터의 어플에 해당하는 제1 데이터 스토어의 제1 레코드에 대해, 어플 추천 요청이 추가적 액션에 추가되도록 업데이트될 메타데이터에 반응하여 촉발된다. 다른 특징들에서, 제1 데이터 스토어의 제1 레코드는 제1 어플의 복수의 버전(version)들에 대응한다. 시스템은 (i) 신규 버전에 대한 메타데이터가 제1 어플의 이전 버전에 포함되지 않은 온톨로지로부터의 액션을 포함하는 동시에 (ii) 제1 어플의 이전 버전들 중의 하나가 사용자 기기에 설치되어 있을 때 제1 레코드에 추가되는 제1 어플의 신규 버전에 반응하여 사용자 기기에 대한 어플 추천 요청을 생성하도록 구성된 감시 모듈을 포함한다.
다른 특징들에서, 감시 모듈은 사용자 기기가 제1 어플의 신규 버전을 소정의 기간(period of time)보다 길게 설치에 실패할 때까지 어플 추천 요청을 지연시킨다. 다른 특징들에서, 제1 데이터 스토어의 제1 레코드는 제1 어플의 제1 버전에 대응하고 시스템이 감시 모듈을 포함한다. 감시 모듈은 (i) 제2 버전에 대한 메타데이터가 제1 어플의 제1 버전에 포함되지 않은 온톨로지로부터의 액션을 포함하는 동시에 (ii) 제1 어플의 제1 버전이 사용자 기기에 설치되어 있을 때, 제1 데이터 스토어에 제2 레코드로 추가되는 제1 어플의 제2 버전에 반응하여 사용자 기기에 대한 어플 추천 요청을 생성하도록 구성된다.
다른 특징들에서, 온톨로지는 액션들의 각각이 리프 노드(leaf node)인 계층 트리(hierarchical tree)로 분류(group)된다. 집합 생성 모듈은 사용 가능한 액션들의 집합 내의 복수의 액션들에 연결된 부모 노드(parent node)를 식별하여 식별된 부모 노드들의 나머지 액션들을 사용 불가능한 액션들의 집합으로 선별하도록 구성된다. 다른 특징들에서, 온톨로지는 액션들의 각각이 리프 노드인 계층 트리로 분류된다. 집합 처리 모듈은 고려 집합의 어플의 각각에 점수를 할당하여 사용 가능한 액션들의 집합 내의 복수의 액션들에 연결된 부모 노드들을 식별함으로써 식별된 부모 노드들의 나머지 액션들을 구현하는 어플들의 점수를 증가시켜 고려 집합으로부터 최고의 점수를 가지는 어플들의 선택된 부분집합으로 선별하도록 구성된다.
다른 특징들에서, 시스템은 레코드들을 저장하도록 구성된 제2 데이터 스토어를 포함한다. 레코드들의 각각은 사용자 기기에 대응하여 사용자 기기로부터 삭제된 어플들을 식별하는 데이터를 저장한다. 다른 특징들에서, 시스템은 사용자 레코드들을 저장하도록 구성된 제2 데이터 스토어를 포함한다. 사용자 레코드들의 각각은 (i) 사용자 기기에 대응하고 (ii) 해당 사용자 기기의 사용자에 의해 원하지 않는 것으로 식별된 어플들을 식별하는 데이터를 저장한다. 집합 처리 모듈은 제2 데이터 스토어에 따른 부분집합으로부터의 이 어플들을 제외(exclude)하도록 구성된다.
다른 특징들에서, 시스템은 사용자 레코드들을 저장하도록 구성된 제2 데이터 스토어를 포함한다. 사용자 레코드들의 각각은 (i) 사용자 기기에 대응하고 (ii) 해당 사용자 기기의 사용자에 의해 원하지 않는 것으로 식별된 어플들을 식별하는 데이터를 저장한다. 집합 생성 모듈은 제2 데이터 스토어에 따른 사용 불가능한 액션들의 집합으로부터의 이 어플들을 제거(remove)하도록 구성된다. 다른 특징들에서, 집합 생성 모듈은 사용 가능한 액션들의 집합으로부터의 액션들과 같은(duplicate) 제1 어플들을 어플들의 고려 집합에 선별적으로 포함하도록 구성된다.
다른 특징들에서, 제1 어플은 온톨로지의 제1 액션을 사용자 기기에서 사용 가능하게 한다. 집합 생성 모듈은 제1 액션의 빈번한 사용(high usage)을 나타내는 사용자 기기의 사용 데이터에 반응하여 제1 어플을 어플들의 고려 집합에 포함하도록 구성된다. 다른 특징들에서, 집합 생성 모듈은 소정의 임계값을 초과하는 제1 액션의 사용에 반응하여 제1 액션의 사용이 빈번하다고 판단하도록 구성된다. 소정의 임계값은 사용 가능한 액션들의 집합의 평균 사용에 기반한다. 다른 특징들에서, 어플 추천 요청은 사용자 기기로부터 직접 수신된다. 다른 특징들에서, 어플 추천 요청은 검색 플랫폼(search platform)이 사용자 기기로부터 어플 검색 요청을 수신하는 것에 반응하여 검색 플랫폼으로부터 수신된다.
다른 특징들에서, 어플 추천 요청은 추천들이 어플 검색 요청의 범위(scope)를 목표로 해야 한다는 것을 나타내는 데이터를 포함한다. 다른 특징들에서, 어플 추천 응답은 어플 검색 요청의 범위에 독립적이다, 다른 특징들에서, 레코드들의 각각은 대응 어플을 기술하는 추가적 메타데이터를 포함한다. 추가적 메타데이터는 해당 어플의 장르(genre)를 포함한다. 다른 특징들에서, 추가적 메타데이터는 (i) 해당 어플에 대한 사용자 제공 리뷰 데이터와 (ii) 해당 어플에 대한 다운로드 통계를 포함한다.
(본 발명) 방법은 제1 데이터 스토어에 레코드들을 저장하는 단계를 포함한다. 레코드들의 각각은 모바일 기기의 한 어플에 대응하며, 그 어플의 사용을 통해 모바일 기기 사용자가 얻을 수 있는 액션을 식별하는 메타데이터를 포함한다. 식별된 액션은 온톨로지로부터 선택된다. 방법은 사용자 기기에 해당하는 어플 추천 요청을 처리하는 단계를 포함한다. 어플 추천 요청은 사용자 기기에 설치된 어플의 집합을 나타내는 데이터를 포함한다. 방법은 제1 데이터 스토어를 사용하여 사용자 기기에 설치된 어플의 집합과 관련하여 사용 가능한 액션들의 집합을 식별하는 단계를 포함한다. 방법은 사용 불가능한 액션들의 집합을 선별하는 단계를 포함한다. 사용 불가능한 액션들의 집합은 사용 가능한 액션들의 집합과 서로 배타적이다. 방법은 제1 데이터 스토어로부터 어플들의 고려 집합을 결정하는 단계를 포함한다. 고려 집합의 각 어플은 사용 불가능한 액션들의 집합의 적어도 하나를 구현한다. 방법은 어플들의 고려 집합으로부터 어플의 선택된 부분집합을 선별하는 단계를 포함한다. 방법은 어플 추천 요청에 어플 추천 응답으로 반응하는 단계를 포함한다. 어플 추천 응답은 선택된 부분집합 내의 각 어플에 대한 식별 데이터를 포함한다.
다른 특징들에서, 레코드들의 각각에 대해 어플로부터의 억세스 메커니즘의 데이터가 제1 데이터 스토어에 저장된다. 어플 추천 응답은 선택된 부분집합 내의 각 어플에 대한 억세스 메커니즘을 포함한다. 다른 특징들에서, 레코드들의 각각에 대한 억세스 메커니즘의 데이터는 디지털 배급 플랫폼 내의 어플에 대한 링크를 포함한다. 다른 특징들에서, 방법은 고려 집합 내의 어플들에 대한 점수를 결정하고, 최고 점수들을 가지는 어플들의 고려 집합으로부터 소정 수의 어플들을 선택된 부분집합으로 선별하는 단계를 포함한다. 다른 특징들에서, 어플에 대한 점수는 어플에 대한 리뷰와 어플에 대한 다운로드 통계에 기반한다.
다른 특징들에서, 어플에 대한 점수는 그 어플의 사용을 통해 사용자 기기에 사용 가능한 액션들의 전체 수에 반비례한다. 다른 특징들에서, 어플에 대한 점수는 사용 가능한 액션들의 집합 내에 없으며 그 어플의 사용을 통해 사용자 기기에 사용 가능한 액션들의 수에 정비례한다. 다른 특징들에서, 방법은 선택된 부분집합으로부터 사용자 기기에 설치된 어플들의 집합을 제외하는 단계를 포함한다. 다른 특징들에서, 방법은 선택된 부분집합으로부터 사용자 기기에서 삭제된 어플들의 집합을 제외하는 단계를 포함한다.
다른 특징들에서, 사용 가능한 액션들의 집합은 사용자 기기에 설치된 어플들의 집합 전체의 사용을 통해 사용자 기기에 사용 가능한 온톨로지 내의 모든 액션들을 포괄한다. 다른 특징들에서, 사용자 기기에 설치된 어플들의 집합은 사용자 기기에 설치된 모든 어플들을 포괄한다. 다른 특징들에서, 어플 추천 요청은 제1 데이터 스토어 내의 레코드들에 해당하지 않는 온톨로지의 첫 번째 액션에 반응하여 촉발되고, 새로운 레코드가 제1 데이터 스토어에 추가되어 첫 번째 액션에 대응한다. 다른 특징들에서, 제1 데이터 스토어는 레코드들의 각각에 대해 레코드의 지리적 관련성에 관한 데이터를 포함한다. 어플 추천 요청은 사용자 기기가 제1 지리적 영역에서 제2 지리적 영역으로 이동함에 반응하여 촉발된다.
다른 특징들에서, 방법은 어플이 사용자 기기에서 삭제된 첫 번째 레코드에 해당할 때 추가적 액션을 추가하도록 업데이트될 레코드들의 첫 번째 레코드에 대한 메타데이터에 반응하여 어플 추천 요청을 생성하는 단계를 포함한다. 다른 특징들에서, 시스템은 (i) 어플이 사용자 기기에서 삭제된 첫 번째 레코드에 해당하는 동시에 (ii) 추가적 액션이 사용 가능한 액션들의 집합 외부에 있을 때, 추가적 액션을 추가하도록 업데이트될 레코드들의 첫 번째 레코드에 대한 메타데이터에 반응하여 어플 추천 요청을 생성하는 단계를 포함한다.
다른 특징들에서, 사용자 기기에 설치된 어플들의 집합으로부터의 어플에 해당하는 제1 데이터 스토어의 제1 레코드에 대해, 어플 추천 요청이 추가적 액션에 추가되도록 업데이트될 메타데이터에 반응하여 촉발된다. 다른 특징들에서, 제1 데이터 스토어의 제1 레코드는 제1 어플의 복수의 버전들에 대응한다. 방법은 (i) 신규 버전에 대한 메타데이터가 제1 어플의 이전 버전에 포함되지 않은 온톨로지로부터의 액션을 포함하는 동시에 (ii) 제1 어플의 이전 버전들 중의 하나가 사용자 기기에 설치되어 있을 때 제1 레코드에 추가되는 제1 어플의 신규 버전에 반응하여 사용자 기기에 대한 어플 추천 요청을 생성하는 단계를 포함한다.
다른 특징들에서, 방법은 사용자 기기가 제1 어플의 신규 버전을 소정의 기간보다 길게 설치에 실패할 때까지 어플 추천 요청을 지연시키는 단계를 포함한다. 다른 특징들에서, 제1 데이터 스토어의 제1 레코드는 제1 어플의 제1 버전에 대응한다. 방법은 (i) 제2 버전에 대한 메타데이터가 제1 어플의 제1 버전에 포함되지 않은 온톨로지로부터의 액션을 포함하는 동시에 (ii) 제1 어플의 제1 버전이 사용자 기기에 설치되어 있을 때, 제1 데이터 스토어에 제2 레코드로 추가되는 제1 어플의 제2 버전에 반응하여 사용자 기기에 대한 어플 추천 요청을 생성하는 단계를 포함한다.
다른 특징들에서, 온톨로지는 액션들의 각각이 리프 노드인 계층 트리로 분류된다. 방법은 사용 가능한 액션들의 집합 내의 복수의 액션들에 연결된 부모 노드를 식별하여 식별된 부모 노드들의 나머지 액션들을 사용 불가능한 액션들의 집합으로 선별하는 단계를 포함한다. 다른 특징들에서, 온톨로지는 액션들의 각각이 리프 노드인 계층 트리로 분류된다. 방법은 고려 집합의 어플의 각각에 점수를 할당하여 사용 가능한 액션들의 집합 내의 복수의 액션들에 연결된 부모 노드들을 식별함으로써 식별된 부모 노드들의 나머지 액션들을 구현하는 어플들의 점수를 증가시켜 고려 집합으로부터 최고의 점수를 가지는 어플들의 선택된 부분집합으로 선별하는 단계를 포함한다. 다른 특징들에서, 방법은 제2 데이터 스토어에 레코드들을 저장하는 단계를 포함한다. 레코드들의 각각은 사용자 기기에 대응하여 사용자 기기로부터 삭제된 어플들을 식별하는 데이터를 저장한다.
다른 특징들에서, 방법은 제2 데이터 스토어에 사용자 레코드들을 저장하는 단계를 포함한다. 사용자 레코드들의 각각은 (i) 사용자 기기에 대응하고 (ii) 해당 사용자 기기의 사용자에 의해 원하지 않는 것으로 식별된 어플들을 식별하는 데이터를 저장한다. 방법은 제2 데이터 스토어에 따른 부분집합으로부터의 이 어플들을 제외하는 단계를 포함한다. 다른 특징들에서, 방법은 제2 데이터 스토어에 사용자 레코드들을 저장하는 단계를 포함한다. 사용자 레코드들의 각각은 (i) 사용자 기기에 대응하고 (ii) 해당 사용자 기기의 사용자에 의해 원하지 않는 것으로 식별된 어플들을 식별하는 데이터를 저장한다. 방법은 제2 데이터 스토어에 따른 사용 불가능한 액션들의 집합으로부터의 이 어플들을 제거하는 단계를 포함한다. 다른 특징들에서, 방법은 사용 가능한 액션들의 집합으로부터의 액션들과 같은(duplicate) 제1 어플들을 어플들의 고려 집합에 선별적으로 포함하는 단계를 포함한다.
다른 특징들에서, 제1 어플은 온톨로지의 제1 액션을 사용자 기기에서 사용 가능하게 한다. 방법은 제1 액션의 빈번한 사용을 나타내는 사용자 기기의 사용 데이터에 반응하여 제1 어플을 어플들의 고려 집합에 포함하는 단계를 포함한다. 다른 특징들에서, 방법은 소정의 임계값을 초과하는 제1 액션의 사용에 반응하여 제1 액션의 사용이 빈번하다고 판단하는 단계를 포함한다. 소정의 임계값은 사용 가능한 액션들의 집합의 평균 사용에 기반한다. 다른 특징들에서, 어플 추천 요청은 사용자 기기로부터 직접 수신된다. 다른 특징들에서, 어플 추천 요청은 검색 플랫폼이 사용자 기기로부터 어플 검색 요청을 수신하는 것에 반응하여 검색 플랫폼으로부터 수신된다.
다른 특징들에서, 어플 추천 요청은 추천들이 어플 검색 요청의 범위를 목표로 해야 한다는 것을 나타내는 데이터를 포함한다. 다른 특징들에서, 어플 추천 응답은 어플 검색 요청의 범위에 독립적이다, 다른 특징들에서, 레코드들의 각각은 대응 어플을 기술하는 추가적 메타데이터를 포함한다. 추가적 메타데이터는 해당 어플의 장르를 포함한다. 다른 특징들에서, 추가적 메타데이터는 (i) 해당 어플에 대한 사용자 제공 리뷰 데이터와 (ii) 해당 어플에 대한 다운로드 통계를 포함한다.
다른 특징들에서, 전술한 방법들은 컴퓨터 판독 가능한(computer-readable) 비일시적(non-transitory) 매체에 저장되는 프로세서가 실행 가능한(processor-executable) 명령(instruction)들로 구현된다.
본 발명을 응용 가능한 추가적인 영역들은 상세한 설명, 청구항들, 그리고 도면들로 명확해질 것이다. 상세한 설명과 특정한 예들은 단지 예시의 목적이며 본 발명의 범위를 제한하고자 하는 것이 아니다.
본 발명은 상세한 설명과 첨부된 도면들로 더욱 완전히 이해될 수 있을 것이다.
도 1a 및 도 1b는 본 발명의 원리에 따라 추천된 앱(app)을 디스플레이(display)하는 그래픽 유저 인터페이스(graphical user interface)의 예를 보이는 도면들이다.
도 2는 액션 온톨로지의 예의 작은 부분집합을 보이는 도면이다.
도 3은 본 발명 원리가 어플 생태계에 사용되는 방법을 보이는 고수준 기능 블록도이다.
도 4a는 추천 요청의 내용의 예를 보이는 도면이다.
도 4b는 추천 응답의 내용의 예를 보이는 도면이다.
도 5는 추천 시스템을 구현하는 한 예를 보이는 고수준 기능 블록도이다.
도 6은 추천 시스템을 구현하는 다른 예를 보이는 고수준 기능 블록도이다.
도 7a는 추천 레코드의 포맷의 한 예를 보이는 도면이다.
도 7b는 추천 레코드의 포맷의 다른 예를 보이는 도면이다.
도 7c는 도 7a의 포맷에 따른 추천 레코드의 한 예를 보이는 도면이다.
도 8은 추천 시스템의 고수준 작동을 보이는 흐름도이다.
도 9a는 추천 반응의 준비와 전송 작동의 한 예를 보이는 흐름도이다.
도 9b는 추천 반응의 준비와 전송 작동의 다른 예를 보이는 흐름도이다.
도 10은 추천 시스템이 어플 검색 시스템과 상호 작동(interoperate)될 수 있는 방법의 한 예를 보이는 고수준 기능 블록도이다.
도 11은 검색 시스템 구현의 한 예를 보이는 기능 블록도이다.
도 12a는 어플 레코드 포맷의 한 예를 보이는 도면이다.
도 12b는 도 12a의 포맷에 따른 어플 포맷 레코드의 한 예를 보이는 도면이다.
도 13은 검색 시스템과 추천 시스템 간의 상호 작동의 한 예의 흐름도이다.
도면들에서, 참조번호들은 유사 및/또는 동일한 부재들을 식별하기 위해 재사용되었다.
종래의 추천 시스템은 단순히 어떤 장르(genre)에서의 전체적 인기(popularity)에 기반하거나 사회망(social network)에 따른 하나 또는 두 분리도(degree of separation) 내의 사용자 등 다른 사용자들로부터의 데이터에 기반하여 앱(app)들을 추천했다. 이에 반해, 본 발명은 사용자 기기에 현재 설치된 앱에 의해 수행될 수 있는 액션을 식별하여, 추가적 액션을 수행할 수 있거나 및/또는 기존의 액션들의 작동을 개선할 수 있는 앱들을 추천한다.
어플들은 사용자가 다양하게 다른 액션들을 수행할 수 있게 해준다. 예를 들어, 식당 예약 어플은 사용자가 하나 이상의 식당에 예약할 수 있게 해준다. 다른 예에서, 인터넷 미디어 플레이어 어플은 사용자가 디지털 미디어(예를 들어, 노래나 영화)를 인터넷으로부터 스트리밍할 수 있게 해준다. 흔히 단일한 어플이 사용자에게 하나 이상의 액션의 수행을 허용한다. 예를 들어, 식당 예약 어플은 또한 예약의 수행에 부가하여 사용자가 식당에 대한 영업 정보(예를 들어, 영업시간)를 검색(retrieve)하고 그 식당의 리뷰를 읽도록 해준다. 다른 예로, 인터넷 미디어 플레이어 어플은 또한 스트리밍할 새로운 음악을 사용자가 검색 및 발견할 수 있게 해준다.
본 발명에 따른 추천 시스템은 정의된(defined) 액션 온톨로지(action ontology)에 기반할 수 있다. (그 예가 도 2에 도시된) 온톨로지는 액션들의 계층 트리(hierarchical tree)를 정의할 수 있다. 앱에 의해 제공되는 기능(functionality)은 액션 온톨로지로부터 하나 이상의 액션을 선별(select)하는 것으로써 기술(describe)될 수 있다. 예를 들어, “provide restaurant review(식당 리뷰 제공)”라는 액션은 식당들에 대한 리뷰를 포함하는 어플에 할당(assign)된다. 이 식당 리뷰 액션은 다른 식당 관련 액션(예를 들어, making reservation(예약 수행) 및 getting directions(길찾기))들과 함께 액션 온톨로지 내에 분류(group)된다. 액션 온톨로지의 다른 예에서는, 리뷰 지향(review-oriented) 액션들이 함께 분류될 수 있다. 예를 들어, 식당 리뷰 액션과 의료서비스 제공자 리뷰(medical provider review) 액션이 함께 분류될 수 있다.
다른 앱에 대해, 어플이 사용자에게 목적지(destination)로 안내주행(navigate)하도록 해주므로 “navigate(안내주행)” 액션이 어플에 할당될 수 있다. 액션 온톨로지는 추천 시스템의 설계에 따라 어느 특정한 영역에서 다소간 세분화(granular)될 수 있다. 예를 들어, “navigate”는 단일한 액션이거나 “navigate by car(차량 안내주행),” “navigate by walking(도보 안내주행),” “navigate by bicycle(자전거 안내주행),” 그리고 “navigate by public transport(대중교통 안내주행)”를 포함하는 액션들의 그룹으로 기술될 수 있다.
추가적인 예들로, 액션들은 (차량 서비스나 택시를 호출(ordering)하는 등) 어떤 위치로의 교통수단의 파악, 식당으로부터의 음식의 주문(ordering), 음식 사진 보기(viewing), 식당 메뉴 보기, 영업점(business) 검색, 영업점 리뷰 읽기, 음식 레시피(recipe) 참조, 문자(text) 통신 교환, 주가(stock) 확인, 날씨 확인, 경기 결과 확인, 음악 틀기, 영화 틀기, 라디오 듣기, 비디오 녹화, 그리고 상품과 서비스들의 할인 식별 등을 포함할 수 있다.
추천 시스템 개발자(또는 다른 기관이나 개인)는 어플을 리뷰 및/또는 사용하고 어플에 액션들을 수동으로 할당할 수 있다. 개발자는 하나 이상의 리뷰어(reviewer)와 계약하여 디지털 배급 플랫폼 내의 일부 또는 전부의 어플들에 대한 액션들을 식별하도록 할 수 있다.
비용의 통제를 위해, 다양한 구현에 있어 액션은 어떤 임계적 평가기준을 충족하는 어플들에만 수동으로 할당된다. 예를 들어, 어플의 액션 내용은 어플의 전체 다운로드가 임계 횟수를 넘거나 또는 다운로드 비율(예를 들어, 월별 다운로드)이 다른 임계값을 넘으면 리뷰될 수 있다. 앱 개발자가 이들 평가기준을 충족하는 앱을 이미 가지고 있을 때, 이 개발자로부터의 다른 앱 역시 리뷰어에 의해 분석될 수 있다.
기계 학습 알고리즘(machine learning algorithm)이 앱들과 그 앱이 수행할 수 있는 추론적(infer) 액션들을 분석할 수 있다. 예를 들어, 각각 명칭들에 특정된 다양한 상태들을 포함하는 앱을 기계 학습 알고리즘이 식당 명칭으로 인식하면 식당 앱이 될 수 있다. 기계 학습 알고리즘은 앱의 사용자 인터페이스 요소(element)들을 더 분석하여 각 식당에 대해 어떤 액션을 취할 수 있는지 판단할 수 있다.
기계 학습 알고리즘은 액션들의 예비적인 집합(preliminary set)을 식별하는 데 사용될 수 있는데, 이는 그 다음 인간 리뷰어에 의해 검증(verify)된다. 또한 사회망 피드백(social feedback)이 기계 학습 알고리즘의 추론(inference)을 교정하는 데 사용될 수 있다. 예를 들어, 사용자 피드백은 앱이 수행되어야 할 어떤 액션을 제공하는지 여부를 평할(solicit) 수 있다. 시간이 지나면, 사용자 피드백은 그 앱을 사용하여 액션이 실제 수행되는지 여부의 정확한 표시(indication)를 제공할 수 있다. 사용자 피드백이 액션이 수행될 수 없다고 압도적으로 제시되면, 기계 학습 알고리즘은 그 앱의 식별된 액션들의 목록에서 그 액션을 제거할 수 있다.
사용자 기기에 설치된 어플에 따른 액션들에 기반하여, 추천 시스템은 사용자에게 추가적 앱의 추천을 할 수 있다. 예를 들어, 추천 시스템은 사용자 기기에 이미 설치된 앱들로부터는 사용 불가능한 액션을 제공하는 어플을 사용자에게 추천할 수 있다.
추천 시스템은 또한 사용자의 기기에 설치된 하나 이상의 앱들에 의해 이미 제공되고 있지만 다른 앱에 의해 더 잘 수행될 수 있는 액션들을 식별할 수 있다. 추천 시스템은 또는 이전에는 추천 시스템이 알지 못했던 새로이 사용 가능한 액션들을 제공하는 어플들도 추천할 수 있다. 예를 들어, 앱이 이전에는 알려지지 않았던 액션을 제공하여 액션 온톨로지에 새로운 액션이 추가될 때, 추천 시스템은 앱들이 이전에는 수행하지 않던 액션을 제공하므로 이 앱을 추천할 수 있다.
추천 시스템은 또한 추가적인 기능에 억세스(access)하도록 사용자에게 앱의 업데이트(update)를 권장(encourage)하거나 새로운 버전의 그 앱이 추가적 기능을 제공하기 때문에 이전에 삭제했던 앱을 재설치하도록 사용자에게 추천할 수 있다. 어떤 경우에는 기능의 부족이 앱의 삭제를 야기할 수 있는데, 그 기능의 도입이 그 앱을 새로이 사용자에게 적합하게 할 수 있다.
도 1a에서, 간단한 사용자 인터페이스는 스마트폰(104)등의 사용자 기기에 추천 앱 디스플레이(recommended apps display; 100)를 보여준다. 추천 앱 디스플레이(100)는 추천을 제시(offering)하는 독립된(stand-alone) 앱의 일부가 될 수도 있다. 다른 구현예들에서는, 추천 앱 디스플레이(100)가 다른 앱의 일부(feature)로 디스플레이될 수도 있다.
다양한 구현예들에서, 시스템 수준 또는 시작메뉴 수준(launcher-level)의 소프트웨어 프로그램이 다양한 시간들에 추천 앱 디스플레이(100)를 디스플레이할 수 있다. 예를 들어, 추천 앱 디스플레이(100)는 추천 시스템으로부터의 푸시 알림(push notification)에 반응하여 디스플레이될 수 있다. 또한 앱 리스팅(app listing) 등 운영체제(operating system) 인터페이스의 다양한 위치들에 추가적 앱들을 찾기 위해 선택(select)될 아이콘, 버튼 또는 텍스트(text) 링크(link)들이 자리할 수 있다. 해당 문자는 예를 들어 “Find more apps(앱 더 검색)?”, ”Get more apps(앱 더 설치)?“, ”Recommended apps(추천 앱)?“ 등이다. 사용자 인터페이스 요소들의 선택이 추천 앱 디스플레이(100)를 보이도록 이어질 수 있다. 일부 운영체제와 추천 시스템의 일부 특성 집합에서는 루트 수준(root level)의 억세스도 사용될 수 있다.
추천이 이와 달리 또는 이에 부가하여, 이메일, 문자 메시지, TWITTER 문자전송 플랫폼 메시지 등의 대역 외 통신(out-of-band communication)을 통해 사용자에게 제공될 수도 있다. 기기 기반 알림(device-based notification)(예를 들어, 알림 표시줄(notification bar), 알림함(notification tray), 상태 표시줄(status bar) 등)들 또는 (때때로 토스트(toast)로 지칭되는) 일시적 팝업 메시지가 추천 앱들의 입수 가능성 또는 특정 앱들의 추천을 표시(indicate)할 수 있다.
(실제로는 앱에 대응하는 아이콘들인) 앱들은 카테고리(category)에 따라 폴더(folder)들로 조직될 수 있다. 예를 들어, 한 폴더는 음악 듣기에 관련되는 한편 다른 폴더는 교통(transportation)에 관련될 수 있다. 관련 추천 앱들이 폴더의 카테고리에 따라 디스플레이될 수 있다. 예를 들어, 추천 교통 앱들은 사용자가 교통 폴더를 볼 때 디스플레이될 수 있다. 폴더 내의 추천 앱들의 입수 가능성이 플러스(+) 부호 등의 텍스트 또는 아이콘으로 표시될 수 있다. 이 표시를 선택하면 추천 앱들의 목록을 띄울(bring up) 수 있다.
또한, 추천 앱들의 입수 가능성은 설치된 앱들의 전체 목록이 (예를 들어, 시작메뉴(launcher) 프로그램 또는 운영 시스템 등애 의해) 디스플레이되는 곳마다 텍스트나 아이콘으로 표시될 수 있다. 또한 전체 앱 목록이나 홈 화면(home screen) 또는 폴더 내의 다른 이치들에 추천 앱의 아이콘들이 보여질 수 있다. 앱이 추천되었지만 실제 설치되지 않은 사실은, 예를 들어 아이콘을 고스팅(ghosting)(투명도를 증가시키거나 및/또는 회색 톤(greyscale)으로의 변환 등)함으로써 그래픽 표시될 수 있다.
추천 앱들은 또한 GOOGLE PLAY 배급 플랫폼으로 억세스하는(accessing) 어플 등 디지털 배급 플랫폼 내의 앱으로 보여질 수 있다. 예를 들어, 기기 특정(device-specific) 추천을 가진 탭(tab)이 추가될 수 있다. 이와는 달리, 디지털 배급 플랫폼 내의 검색과 브라우징(browsing)이 추천 앱이 보여지도록 유발하고, 추천들이 사용자가 브라우징 및 검색하고 있는 배급 플랫폼의 영역으로 맞춤(tailor)되도록 할 수 있다.
개별적으로 설치된 어떤 앱에도 추천 앱들이 식별될 수 있다. 추천 앱들은 설치된 앱보다 더 많거나 다른 액션들을 수행할 수 있거나 아마도 액션들 중의 하나를 더 잘 수행할 수 있다. 설치된 앱에 대한 추천 앱들의 입수 가능성 역시 설치된 앱 내 또는 시작메뉴나 홈 화면에서 앱에 억세스하기 위해 사용되는 아이콘 또는 위젯(widget)에 시각적 큐(visual cue)로 표시될 수 있다. 예를 들어, 추천 앱을 표시하기 위해 아이콘의 일부 상에 보석(jewel) 등의 작은 그래픽(graphic)이 중첩될 수 있다. 추천 앱들로의 억세스는 아이콘 상을 눌러 유지(holding)하거나 보석을 터치(touch)함으로써 달성될 수 있다.
추천 앱 디스플레이(100)의 제1 부분에 “driving directions(운전 길찾기)”로 불리는 액션을 위한 앱이 디스플레이된다. 예를 들어, 추천 앱들은 112-1, 112-2 및 112-3에 디스플레이된다. 추천 앱(112)들은 아이콘과 함께 대응 텍스트로 표시될 수 있다. 추천 앱 디스플레이(1000의 제2 부분(116)은 설치된 앱에서 이미 사용 가능할 “movie review(영화 리뷰)”로 불리는 액션에 대한 대체적 어플을 써볼 것을 제안한다. 120-1 및 120-2에 예시적 영화 리뷰 앱들이 보여진다. 추천 앱 디스플레이(100)의 제3 부분(124)은 “restaurant review(식당 리뷰)”로 불리는 액션에 대한 추천 앱(128-1)을 포함한다.
화살표 132로 표시된 바와 같이, 상하 스크롤링(vertical scrolling)이 사용자에게 식당 리뷰의 추가적 추천 앱들 등의 추가적 앱들을 볼 수 있게 허용할 수 있다. 각 액션은 “X"(134) 등의 사용자 인터페이스 요소들에 연계되어 사용자가 그 액션에 관련하여 수신된 추천들에 관심이 없음을 표시할 수 있다. 또한, ”X"(136) 등의 사용자 인터페이스 요소들이 사용자가 특정한 앱에 관심이 없음을 표시할 수 있다. 손은 140에 그래픽하게 묘사되어 있다(도면을 더 가리지 않도록 평균적인 사람 손에 비해 축소되어 있다). 손(140)의 위치는 (손가락의 두드림(tap) 등에 의해) “Movies by Flixster” 어플에는 사용자가 관심이 없음을 나타내는 사용자 인터페이스 요소(136)의 선택을 보인다.
도 1b에서, 추천 앱 디스플레이(150)가 스마트폰(154) 등의 사용자 기기 내에 보여진다. “driving directions”에 대한 추천 앱들이 제1 부분(158)에 보여진다. 각 앱은 텍스트와 함께 아이콘을 포함할 수 있다. 텍스트는 어플의 제목, 어플의 리뷰들, 어플의 설명 등을 포함할 수 있다.
교차하는 화살표(162)들로 표시된 바와 같이, 수평 및 수직 스크롤링은 추가적인 액션들을 보여지게 하는 한편 주어진(given) 액션에 대해 추가적인 추천 앱들을 보여지게 해줄 수 있다. 예를 들어, 축소된 손(166)은 좌측으로 밀어진(swipe) 추천 앱 디스플레이(150)의 제2 부분(170)을 표시한다. 결과적으로 최좌단 앱(IMDb Movies & TV)이 부분적으로 가려지는(obscure) 반면 최우단의 앱(Fandango)은 이제 완전히 보인다. 여기서도, 사용자 인터페이스 요소들은 사용자가 특정한 액션 또는 특정한 앱에 관심 없음을 표시하도록 할 수 있다.
(예를 들어, X 사용자 인터페이스 요소가 아닌 앱의 어떤 부분을 클릭하거나 두드림(tapping)으로써) 도 1a 또는 도 1b의 앱들 중의 하나를 선택하면 앱에 대한 추가 정보로 이어지든가 또는 그 앱으로의 억세스 메커니즘에 바로 이어진다. 예를 들어, 억세스 메커니즘은 디지털 배급 플랫폼 내의 그 앱에 대한 직접 링크가 될 수 있다.
도 2에서, 예시적 액션 온톨로지(ontology)는 루트 노드(root node; 204)와 예(sample)로서 비디오(video; 208-1)와 식당(restaurants; 208-2)의 두 분기 노드(branch node)들을 가진다. 식당 분기 노드(208-2)는 리프 노드(leaf node)인 안내주행(navigation; 212-1), 리뷰(reviews; 212-2), 영업정보(business info; 212-3), 그리고 예약(reservations; 212-4)들에 대한 부모 노드(parent node)이다.
비디오 분기 노드(208-1)는 비디오 구매(buy video) 분기 노드(216-1)와 비디오 대여(rent video) 분기 노드(216-2)에 대한 부모 노드가 될 수 있다. 도 2에 도시된 바와 같이, 액션 온톨로지의 리프 노드들은 다른 깊이(루트 노드(204)로부터의 징검다리(hop)의 수)를 가질 수 있다. 예를 들어, 비디오 분기 노드(208-1)는 티켓 구매(buy tickets; 220-1) 및 상영시간(showtime; 220-2)에 대한 부모 노드가 될 수 있다. 한편, 비디오 구매 분기 노드(216-1)는 다운로드(download) 액션(224-1)과 스트리밍(stream) 액션(224-2)의 부모 노드가 될 수 있다. 마찬가지로 대여 분기 노드(216-2)는 각각 다운로드와 스트리밍에 대한 리프 노드(228-1 및 228-2)를 포함할 수 있다.
전술한 바와 같이, 액션 온톨로지는 다양한 방법으로 정의(define)될 수 있다. 단지 예로서, 다운로드 노드(224-1 및 228-1)들은 구매 다운로드와 대여 다운로드 리프 노드들 대신 함께 “Download" 분기 노드로 통합될 수 있다. 마찬가지로 스트리밍 노드(224-2 및 228-2)도 리프 노드로서의 구매 스트리밍과 대여 스트리밍 대신 공통의 분기 노드가 될 수 있다.
또한 세분화(granularity)의 수준은 추천 시스템의 필요들에 따라 변경될 수 있다. 예를 들어, 추천 시스템이 216-2에서의 비디오 대여에 대해 다운로드와 스트리밍의 차이를 둘 필요가 없다면, 이에 따라 대여 노드(216-2)를 리프 노드로 하고 노드 228-1 및 228-2를 제거한다. 예를 들어, 이는 대여 비디오의 다운로드를 사용자에게 허용하는 모든 앱이 스트리밍도 허용할 때 이뤄진다. 이 통합은 사용자에게 대여의 수행을 허용하는 앱들의 수가 너무 적어 구분이 불필요할 때도 이뤄진다.
앱이 수행할 수 있는 각 액션은 앱의 하나 이상의 상태에서 억세스할 수 있다. 상태는 홈 화면 또는 특정 식당의 식당 평가에 전용된 화면을 지칭할 수 있다. 앱의 상태들은 URL(Uniform Resource Locator)들에 연계될 수 있다. 앱의 URL은 어떤 패턴들을 따를 수 있는데, 각 패턴은 다른 액션들에 해당한다. 그러므로 다른 URL 패턴들의 수가 앱으로 지원되는 다른 액션들의 수의 하한(lower limit)을 표시하고, URL 패턴들의 집합(collection)은 지원되는 액션들의 집합으로 해석(translate)될 수 있다.
도 3에는 전체적 시스템의 고수준(high-level) 개관(overview)이 도시되어 있다. 사용자 기기(304)는 인터넷 등의 네트워크(network; 312)를 통해 디지털 배급 플랫폼(308)에 연결된다. 사용자 기기(304)는 디지털 배급 플랫폼으로부터 어플(도 3에는 “어플 A"로 지칭됨)을 수신한다, 사용자 기기(304)에 의해 실행될 때 어플 A는 추천 어플 버튼 등의 사용자 인터페이스 요소(316)를 나타낼 수 있다.
사용자 인터페이스 요소(316)가 작동되면 추천 요청이 추천 시스템(320)에 전송된다. 추천 시스템(320)은 추천 응답(recommendation response)으로 사용자 기기에 응답한다. 추천 응답은 도 1a 또는 1b에 도시된 바와 같은 디스플레이로 이어질 수 있다.
데이터 소스(data source; 324)들이 추천 시스템(320)에 사용될 소스 데이터(source data)를 제공할 수 있다. 데이터 소스(324)들은 어플 개발자의 웹사이트와 개발자에 의해 제공된 데이터 피드(data feed) 등 어플 개발자로부터의 데이터를 포함할 수 있다. 데이터 소스(324)들은 디지털 배급 플랫폼(308) 등의 디지털 배급 플랫폼들을 포함할 수 있다. 데이터 소스(324)들은 또한 블로그(blog)들, 어플 리뷰 웹사이트들, 그리고 사회망 사이트(social networking site)들 등의 다른 웹사이트들도 포함할 수 있다. 데이터 소스(324)들은 영화, 텔레비전 프로그램, 음악, 식당, 위치 등에 관련된 데이터의 온라인 데이터베이스를 포함할 수 있다.
데이터 소스(324)들의 각각은 독립된 데이터 구조들을 가져 다른 속도로 업데이트될 수 있다. 그러므로 추천 시스템(320)은 데이터 소스(324)의 데이터 구조로부터 다른 속도로 업데이트된다. 또한 데이터 소스(324)들에 걸쳐 데이터의 신뢰성과 정확도가 다를 수 있어서 데이터 소스(324)들 중의 어느 것이 데이터를 제공하는가에 따라 가중치(weight)를 달리하는 데 사용될 수 있다.
도 4a에는 예시적 추천 요청(404)이 도시되어 있다. 추천 요청(404)은 추천 시스템(320)의 공개 키(public key)로 암호화(encrypt)될 수 있다. 이는 공개 키를 가지지 않은 자는 할 수 없지만 추천 시스템이 추천 요청(404)을 해독(decrypt)할 수 있게 해준다.
추천 요청(404)은 설치된 앱(404-1)들의 목록을 포함할 수 있다. 설치된 앱(404-1)들은 모든 설치된 어플들의 완전한 목록을 포함하거나 설치된 어플들을 근사하는(approximating) 축약된 표현(reduced representation)을 포함할 수 있다. 단지 예로서, 블룸 필터(Bloom filter) 표현이 사용될 수 있다. 블룸 필터는 앱들의 기정의(predefined) 집합으로부터의 앱이 가능하기로 기기 내에 설치되어 있는지 확실히 설치되어있지 않은지 여부를 규정(specify)한다. 달리 말해, 압축(compression)을 달성하기 위해 블룸 필터의 출력은 어떤 앱이 존재하는지 확실히 기술하지 않으며; 블룸 필터 출력은 어떤 앱이 존재하지 않는지의 여부만을 확실히 기술한다.
사용 데이터(usage data; 404-2)는 설치된 앱의 사용을 표시한다. 예를 들어, 사용자 기기 상의 거동 모니터(behavior monitor)는 독립(standalone) 어플이거나 운영체제, 검색 어플, 웹 브라우저 및/또는 다른 원시(native) 어플들 내에 포함될 수 있다. 거동 모니터는 사용자 기기를 감시(monitor)하여 사용 데이터를 수집한다. 예를 들어 거동 모니터는 백그라운드 프로세스(background process)로 실행될 수 있다.
예를 들어, 거동 모니터는 앱이 작동(invoke)될 때마다 다른 앱으로 전환하기 전에 사용자가 얼마나 오래 그 앱과 시간을 보내는지 기록할 수 있다. 거동 모니터는 또한 사용자가 시간을 보내는 앱의 상태들을 판단할 수 있다. 각 어플의 상태는 어떤 액션에 대응한다. 그러므로 거동 모니터는 사용자가 어떤 앱을 사용할 때 사용자가 관심을 가지는 액션들을 구별할 수 있을 것이다.
거동 모니터는 사용 데이터를 저장하여 이를 추천 요청(404)의 일부로 제공할 수 있다. 단지 예로서, 사용 데이터(404-2)의 일부로 제공되는 통계 데이터는 (월별의 횟수 등) 어플이 사용되는 빈도와 사용자 기기 상의 전체에 비교해 사용자가 그 어플에 시간을 보내는 시간의 비율을 포함할 수 있다. 그러므로 이 사용 데이터(404-2)는 액션과 어플이 사용자에게 가장 관심을 끄는지 식별하는 데 사용될 수 있다.
추천 요청(404)은 기기 정보(device info; 404-3)를 포함할 수 있는데, 이는 그 기기의 운영체제와 운영체제 버전 수, 기기의 지리위치(geolocation) 데이터, 추천 요청(404)을 생성한 앱의 신원(identity), 그 앱의 앱 개발자의 신원, 기기의 화면 해상도, 기기의 방향(세로(portrait) 또는 가로(landscape)), (가속도계(accelerometer)의 위치와 심박 센서(heart rate sensor)의 존재 여부 등) 센서 능력 등을 포함할 수 있다. 기기 정보(404-3)는 사용자 기기의 화면 해상도 또는 운영체제 버전에 맞지 않거나 부적절한 앱이 추천되는 것을 방지하는 데 사용될 수 있다.
도 4b에서, 예시적 추천 응답(420)은 앱 목록(424-1)을 포함한다. 예를 들어, 앱 목록(424-1)은 문자열(string)들의 행렬(array)을 포함할 수 있는데, 각 문자열은 앱 명칭을 저장한다. 행렬은 가장 적절한 것으로부터 가장 적절하지 않은 것의 순서가 될 수 있다. 앱 목록(424-1)에 제공되는 앱들의 수는 사용자 기기의 해상도에 따라 선택될 수 있다. 예를 들어, 더 큰 화면 및/또는 고해상도는 더 많은 수의 앱들을 수신할 수 있다.
화상 영역(424-2)은 앱 목록(424-1) 내의 앱들의 각각의 인코딩된(encoded) 화상을 포함할 수 있다. 이 화상은 앱 명칭 다음에 디스플레이되어 앱들을 시각적으로 식별시킨다. 앱 억세스 메커니즘(424-3)은 설치를 위해 앱들을 다운로드할 디지털 배급 플랫폼에 대한 링크들을 포함할 수 있다. 많은 구현예들에서, 추천 앱들은 웹 기반으로 사용자 기기 상의 브라우저 내에서 작동할 수 있다. 이러한 앱들에 대한 억세스 메커니즘은 브라우저에 의해 열릴 URL을 포함할 수 있다.
추가적 메타데이터(metadata)(424-4)는 각 앱에 대한 별점(star rating), 리뷰 텍스트와 계량치(metrics)(예를 들어, 리뷰 수), 그리고 각 앱에 의해 가능해지는 액션들의 목록을 포함할 수 있다. 액션들의 목록은 각 앱에 의해 가능해지는 모든 액션들을 포함하거나 사용자 기기에 이미 설치된 앱들에 의해 제공되지 않으면서 각 앱에 의해 가능해지는 액션들만의 목록이 될 수 있다. 다른 구현예들에서는, 액션 목록이 각 앱이 가장 적합한 액션들의 목록이 될 수 있다.
도 5에서, 추천 시스템(500)의 예시적 구현예의 블록도는 추천 요청을 수신하여 추천 요청으로부터의 데이터를 집합 생성 모듈(set generation module; 508)로 제공하는 쿼리 모듈(query module; 504)을 포함한다. 집합 생성 모듈(508)은 추천 데이터 스토어(recommendation data store; 512)로부터 추천 레코드의 고려 집합(consideration set)을 식별한다. 추천 데이터 스토어(512)는 도 7a 내지 도 7c에 기재된 것 등의 레코드들을 포함한다.
레코드 생성 모듈(516)은 그 앱들에 의해 가능해진 액션들로 태깅(tagging)된 앱들을 포함하는 레코드들을 산출한다. 레코드 생성 모듈(516)은 액션들을 앱들에 수동으로 할당하여 추천 데이터 스토어(572) 내에 레코드들을 생성할 수 있게 할 수 있다. 또한, 레코드 생성 모듈(516)은 전술한 기계 학습 알고리즘을 구현하여 해당 액션들을 가지는 앱들을 자동으로 태깅할 수 있다. 레코드 생성 모듈(516)은 또한 추천 시스템(500)의 개발자가 규정된 액션 온톨로지를 업데이트할 수 있게 할 수 있다.
앱들의 고려 집합은 집합 처리 모듈(set processing module; 520)에 의해 처리된다. 집합 처리 모듈(520)은 고려 집합의 각 레코드에 점수를 매길(score) 수 있는데, 이 점수는 추천 요청의 요소들에 기반한다. 최고 점수의 검색 결과들은 해당 점수들과 함께 결과 생성 모듈(524)에 제공된다.
채점(scoring)은 또한 순위 매김(ranking)으로도 지칭되며 필터링(점수를 0 등의 최소값으로 설정해도 달성될 수 있는 앱들을 고려 집합에서 제외)을 포함할 수 있다. 채점은 (다운로드 수, 평균 평점, 지난달의 다운로드 수 등) 앱의 인기(popularity)와, 앱의 현재 버전이 얼마나 최근인가, 그리고 (얼마나 자주 앱이 업데이트되는가, 그리고 각 새 버전마다 평균 사용자 리뷰가 증가하는가 또는 감소하는가의 여부 등에 기반하는) 앱의 품질 점수에 기반할 수 있다.
채점은 또한 고려 집합 내의 앱들이 제공하는 액션들이 얼마나 사용자 기기 상에서 이미 수행 가능한 액션들에 필적하는가에 기반할 수도 있다. 예를 들어, 액션 온톨로지 내의 동일한 부모 노드 하의 복수의 리프 노드들이 이미 사용자 기기 상에서 수행 가능할 때, 집합 처리 모듈(520)은 같은 부모 노드 하의 나머지 액션들을 제공하는 앱들에 더 높은 점수를 할당할 수 있다. 도 2를 예로 사용하여, 사용자 기기에 설치된 앱들이 액션 212-2(식당 리뷰)와 212-3(영업정보)을 허용한다면, 부모 노드 208-1(식당) 하의 다른 액션들이 더 높은 점수에 기여할 수 있다. 즉 식당 길찾기(212-1) 및/또는 식당 예약(212-4)을 허용하는 앱들이 더 높은 점수를 받을 수 있다.
집합 처리 모듈(520)은 추천 요청에 표시된 대로 사용자 기기 상에 이미 설치된 앱들을 걸러낼(filter out) 수 있다. 또한 집합 처리 모듈(520)은 추천 요청에 규정된 대로의 운영체제 버전 또는 해상도 등이 맞지 않는 앱들도 걸러낼 수 있다. 또한 집합 처리 모듈(520)은 사용자 기기의 지리위치에 대한 지리적 관련성에 기반하여 앱들을 걸러 내거나 순위를 변경할 수 있다.
결과 생성 모듈(524)은 최고 점수 결과들을 포함하는 추천 응답을 준비하는데, 각 결과에 연계된 데이터는 텍스트, 아이콘, 그리고 하나 이상의 억세스 메커니즘을 포함할 수 있다. 결과 생성 모듈(524)은 준비된 추천 응답을 추천 요청의 전송자에게 전송한다.
도 6에서, 추천 시스템(550)의 다른 예시적 구현예는 사용자 데이터 스토어(user data store; 558) 내에 레코드를 생성하는 감시 모듈(monitor module; 554)을 포함한다. 감시 모듈(554)은 사용자 기기 내의 앱과 액션들의 사용 데이터를 포함하는 사용자 기기로부터의 피드백을 사용자 데이터 스토어(558)에 기록할 수 있다. 감시 모듈(554)은 어느 어플이 사용자 기기에 설치되었는지 사용자 데이터 스토어(558) 내에서 추적(track)할 수 있고 이에 따라 언제 그 어플이 사용자 기기로부터 삭제되었는지 판단할 수 있다.
집합 생성 모듈(562), 집합 처리 모듈(566), 그리고 결과 생성 모듈(570)은 도 5의 집합 생성 모듈(508), 집합 처리 모듈(520), 그리고 결과 생성 모듈(524)과 유사하게 기능할 수 있다. 집합 생성 모듈(562)은 사용자가 어떤 액션들 및/또는 앱들에 덜 관심이 있다고 표시했는지 여부를 감안할 수 있다. 이 앱들은 고려 집합으로부터 걸러낼 수 있고; 또한 사용자가 관심이 없는 액션들만을 수행하는 앱들도 고려 집합에서 걸러낼 수 있다.
집합 처리 모듈(566)은 사용자가 거부(deprecate)한 어떤 액션들을 수행하지 않는 결과들에 더 높은 점수를 할당할 수 있다. 집합 처리 모듈(566)은 또한 사용 데이터가 사용자가 그 액션들을 더 빈번하게 수행했음을 표시하는 앱들의 점수를 올릴 수 있다. 결과 생성 모듈(570)은 사용자가 어떤 앱 또는 액션에 관심이 부족함을 이전에 표시했는지 여부에 따라 결과를 달리 명령(order)할 수 있다.
예를 들어, 사용자가 한 액션에 무관심을 표시한 첫 경우에 결과 생성 모듈(570)은 그 액션을 가진 추천 앱에 어떤 정도의 투명도를 적용할 수 있다. 사용자로부터의 무관심의 두 번째 표시 이후에는 그 액션에 해당하는 추천 결과들은 모두 제거될 수 있다. 사용자의 무관심의 한 번의 표시는 일반적으로 그 액션에 대한 완전하고 영구적인 무관심으로 해석되지 않을 수 있다. 그 대신, 사용자가 단순히 그 시점에서 무관심을 표시했거나 무관심에 관련된 사용자 인터페이스 요소를 부주의하게 작동시켰을 수 있다. 그러므로 결과 생성 모듈(570)은 사용자에 대한 가치 있는 추천을 표현할 가능성을 봉쇄하지 않고 사용자의 이전의 선택이 확인되었음을 시각적으로 표시한다.
도 7a에서, 추천 레코드(600)의 예시적 포맷(format)은 어플 명칭(604-1), 어플 식별자(identifier; ID)(604-2), 액션 목록(604-3), 그리고 어플 속성(attributes)(604-4)을 포함한다. 추천 레코드(600)는 일반적으로 특정 어플에 대해 추천 데이터 스토어(512)에 저장될 수 있는 데이터들을 나타낸다. 추천 데이터 스토어(512)는 도 7a에 규정된 구조를 가지는 수천 또는 수백만 개의 레코드들을 포함할 수 있다.
어플 ID(604-2)는 추천 데이터 스토어(512) 내의 어플을 고유하게 식별한다. 다양한 구현예들에서, 어플 ID(604-2)는 그 어플의 모든 버전(version)에 걸쳐 그리고 모든 판(edition)에 걸쳐 동일할 수 있다. 여기서 판은 (Apple Inc.의 IOS 운영체제와 Google Inc.의 ANDROID 운영체제 등) 다른 운영 체제들을 위한 앱의 버전들과 함께 그 어플의 웹 기반 판을 지칭한다.
어플 ID는 추천 시스템 자체에 의해 할당될 수 있고, 예를 들어 디지털 배급 플랫폼에 의해 할당된 어떤 ID와 독립적일 수 있다. 액션 목록(604-3)은 그 어플에 의해 수행될 수 있는 액션 온톨로지로부터의 액션들을 표시한다. 다양한 구현예들에서, 어플의 각 버전과 각 판에 대해 별도의 추천 레코드가 존재할 수 있다. 이에 따라 액션 목록(604-3)은 앱의 특정한 판과 버전에 특정될 수 있다.
어플 속성(604-4)은 어플 ID(604-2)로 규정된 앱에 연계된 어떤 형식의 데이터를 포함할 수 있다. 예를 들어, 어플 속성(604-4)은 어플의 개발자의 성명, 어플의 퍼블리셔(publisher), 어플의 (장르(genre)로도 알려진) 카테고리, (개발자로부터 받을 수 있는) 어플의 텍스트 설명, 어플의 버전 수, 어플의 운영체제 요건들, 그리고 어플의 가격을 포함할 수 있다.
어플 속성(604-4)은 또한 어플에 대한 보안(security) 및 프라이버시(privacy) 데이터, 어플의 배터리 사용, 그리고 어플의 밴드폭(bandwidth) 사용도 포함할 수 있다. 어플 속성(604-4)은 또한 다운로드의 전체 수, 월별 다운로드, 수치적 평가의 전체 수, 그리고 앱의 최신 버전에 대한 리뷰 등도 포함할 수 있다. 어플 속성(604-4)은 또한 아이콘들과 스크린샷(screen shot) 등 어플에 관련된 디지털 매체도 포함할 수 있다.
어플 속성(604-4)은 앱의 지리적 관련성(geographical relevance)을 포함할 수 있다. 예를 들어, 지리적 관련성은 그 앱이 가장 관련 있는 지리적 영역을 규정한다. 어플 속성(604-4)은 관련성의 단계적 시스템(tiered system)을 규정할 수 있는데, 앱이 가장 관련성이 높은 한 지리적 영역과, 앱이 약간 덜 관련되는 두 번째 지리적 영역과, 앱이 약간 관련이 있는 세 번째 지리적 영역 등이다. 앱은 이 영역들 외부에서 거의 또는 전혀 관련이 없을 수 있다.
지리적 영역은 GPS 좌표, 우편번호(ZIP code), 이동전화 기지국(cell phone tower) 커버리지 영역(coverage area), Wi-Fi 접속점(access point) 커버리지 영역 등 다양한 방식으로 규정될 수 있다. 단지 예로서, 지리적 영역은 중심점과 반경 또는 다각형을 형성하는 변(edge)으로 규정될 수도 있다. 다양한 구현예들에서, 지리적 영역은 둘 이상의 불연속된(discontiguous) 지역(region)들을 포함할 수 있다.
도 7b에서, 어플 레코드(620)의 다른 예시적 포맷은 어플 명칭(624-1)과, 어플 ID(624-2)와, 액션 목록들의 행렬(624-3)과, 그리고 어플 속성(624-4)을 포함한다. 추천 레코드(620)가 복수 버전들의 앱(또한 복수 판들의 앱도 포괄할 수 있다)에 적용될 때, 행렬(624-3)은 각 버전의 앱에 대한 별동의 액션 목록들을 포함할 수 있다. 행렬의 데이터 구조가 규정되지만 더 저장이 효율적인 다른 데이터 구조 역시 사용될 수 있다.
도 7c에서, “Yelp"라는 명칭의 앱(644-1)에 대한 예시적 추천 레코드는 3FF8D407라는 가상의 ID(644-2)를 가진다. 액션 목록(644-3)은 Yelp 어플이 식당 리뷰(rest_reviews), 식당 길찾기(rest_navigation), 식당 영업정보(rest_businfo), 그리고 식당 예약(rest_reservs)이라는 명칭의 액션 온톨로지로부터의 액션들을 수행할 수 있음을 나타낸다. 이 예에서는 액션들이 사람이 판독 가능한 약자들을 사용하여 디스플레이되었지만, 실제 추천 레코드는 앱에 적용되는 액션 온톨로지의 노드들을 더 간결하게 기술할 수 있는 16진수(hexadecimal) 또는 비트(bit) 필드(fi디d) 표현을 포함할 것이다. 어플 속성의 예들은 644-4에 디스플레이되어 있는데, 개발자, 리뷰, 평점, 장르, 다운로드 수, 지리적 관련성, 기기 정보, 그리고 앱의 억세스 메커니즘을 포함한다.
도 8에서, 흐름도는 본 발명에 따른 추천 시스템의 다양한 측면들을 포괄한다. 제어는 704에서 시작되는데, 추천 요청이 수신되면 제어는 708로 진행되고; 그렇지 않으면 712로 진행된다. 708에서, 제어는 추천 요청에 반응하여 추천 응답을 준비 및 전송한다. 이는 도 9a 또는 9b에 따라 수행될 수 있다. 다음 제어는 712에서 속행된다.
712에서, 제어는 새로운 액션이 추천 데이터 스토어에 추가되었는지 여부를 판단한다. 그렇다면 제어는 716으로 진행되고; 그렇지 않다면 720으로 진행된다. 716에서, 이전에 수행 가능하지 않던 새로운 액션이 이제 수행 가능하다. 이는 액션 온톨로지의 리프 노드가 이전에는 어떤 어플에도 매핑(mapping)되지 않았음을 의미할 수 있다, 다른 상황들에서, 액션이 특히 이 어플의 새로운 기능을 위해 액션 온톨로지에 추가되었을 수 있다.
716에서, 제어는 가입된(subscribed) 사용자 기기가 새로운 액션들에 대해 업데이트되었는지 식별한다. 사용자 기기는 추천 시스템에 억세스하면 자동으로 가입될 수 있다. 사용자 기기의 사용자는 단순히 관심이 없는 어떤 추천들로부터 탈퇴(unsubscribe)하거나 추천 시스템 업데이트들로부터 완전히 탈퇴할 수 있다. 724에서, 제어는 업데이트들에 가입한 사용자 기기에 알림을 푸시(push notification)한다. 이 푸시 알림들은 앱 또는 사용자 기기의 백그라운드 프로세스를 경유하거나 이메일이나 TWITTER 메시지 플랫폼 메시지 등의 다른 배급 메커니즘(distribution mechanism)들을 사용할 수 있다. 다음 제어는 720에서 속행된다.
720에서, 제어는 사용자 기기가 새로운 지리적 영역에 진입했는지 여부를 판단한다. 그렇다면 제어는 728로 진행하고; 그렇지 않으면 732로 진행한다. 728에서, 제어는 설치된 어플들로부터 사용자 기기에 수행 가능한 액션들을 식별하고 736에서 속행된다. 736에서, 제어는 새로운 지리적 영역에 더 큰 관련성을 통해 수행될 수 있는 하나 이상의 액션들을 제공하는 앱들을 식별한다. 740에서, 제어는 더 큰 관련성을 가지는 앱들을 기반으로 사용자 기기에 알림들을 푸시한다. 다음 제어는 732에서 속행된다.
732에서, 제어는 이전에 사용자 기기에서 삭제된 어플이 새로이 추가된 기능을 가지는지 여부를 판단한다. 그렇다면 제어는 744로 진행하고; 그렇지 않다면 748로 진행한다. 744에서 제어는 사용자 기기들이 업데이트에 가입되었는지 판단하고, 752에서 제어는 이 사용자 기기들에 알림들을 푸시한다. 전술한 바와 같이, 알림들은 여러 가지 형태를 취할 수 있다. 알림들이 푸시되고 나면 제어는 748로 진행된다.
748에서, 설치된 앱의 새로운 버전이 새로운 기능을 가진다면 제어는 756으로 진행하고; 그렇지 않으면 704로 진행된다. 756에서, 제어는 새로운 액션의 주체(subject)인 설치된 앱이 적어도 소정의 기간 동안 사용자 기기 상에 업데이트 되지 않았는지 여부를 판단한다. 앱이 이 기간 동안 업데이트되지 않았다면 제어는 760으로 진행하고; 그렇지 않다면 제어는 704로 복귀된다. 760에서, 제어는 새로운 기능을 수신하려면 앱을 업데이트하도록 사용자에게 권장하는 앱 업데이트의 알림을 사용자 기기에 푸시한다. 다음 제어는 704로 복귀한다.
도 9a에는 도 8에 필요할, 추천 응답의 준비 및 전송 작동의 예가 도시되어 있다. 제어는 804에서 시작되는데, 사용자 기기에 설치된 앱들로부터 수행 가능한 액션들의 집합이 식별된다. 808에서, 제어는 가능한 액션들과 서로 배타적인 불가능한 액션들의 집합을 선별(select)한다. 일부 구현예들에서, 불가능한 액션들은 설치된 앱들에서 수행 불가능한 모든 다른 액션들이 될 수 있다.
812에서, 제어는 각각 적어도 하나의 불가능한 액션들을 제공하는 앱들의 고려 집합을 판단한다. 816에서, 고려 집합 내의 각 앱에 점수(score)가 매겨진다(assign). 820에서, 제어는 고려 집합 내에서 최고 점수의 앱들을 선별한다. 824에서, 제어는 선별된 앱들에 기반하여 응답을 준비하고, 앱들의 신원, 메타데이터(예를 들어, 설명, 평점, 그리고 아이콘), 그리고 선별된 각 앱의 억세스 메커니즘(예를 들어, 다운로드 링크)을 포함한다. 828에서, 제어는 응답을 전송하고 제어가 종료된다.
도 9b에는, 사용자 데이터에 기반하여 추천 응답을 준비 및 전송하는 대체적인 제어가 표현되어 있다. 제어는 904에서 시작되는데, 제어는 추천 요청에 의해 규정된 설치된 앱들에 기반하여 사용자 레코드를 업데이트한다. 908에서, 제어는 이전에 설치되었던 앱이 지금 빠졌는지(missing) 여부를 판단한다. 그렇다면 제어는 912로 진행하고; 그렇지 않다면 제어는 916으로 진행한다. 912에서, 제어는 이전에 설치되었던 앱들이 지금 사용자 기기에서 삭제되었다고 기록(note)한다. 제어는 916에서 속행된다.
916에서, 제어는 도 9a의 804와 유사하게 설치된 앱들로부터 수행 가능한 액션들의 집합을 식별한다. 920에서, 제어는 도 9a의 808과 유사하게 불가능한 액션들의 집합을 선별한다. 924에서, 제어는 도 9a의 812와 유사하게 하나 이상의 불가능한 액션들을 제공하는 앱들의 고려 집합를 판단한다. 도 9a 및 도 9b의 812 및 924 모두에서 제어는 고려 집합로부터 기기에 이미 설치된 앱들을 각각 제거할 수 있다.
928에서, 제어는 앱들이 삭제되었을 때 고려 집합으로부터 이 앱들을 선택적으로 제거한다. 다양한 구현예들에서, 제거된 이후 추가적 특징들로 보충된 제거된 앱에 반응하는 앱의 제거는 생략할 수 있다.
932에서, 제어는 고려 집합 내의 각 앱에 점수를 매긴다. 앱의 채점은 특정한 액션들에 대한 사용 데이터 등의 사용자 데이터에 기반할 수 있다. 예를 들어, 사용자에게 의해 빈번하게 사용되는 액션을 제공하는 앱은 증가된 점수를 가질 수 있다. 936에서, 제어는 고려 집합에서 최고 점수의 앱들을 선별한다. 940에서, 제어는 선별된 앱들의 정보와 함께 응답을 준비한다. 944에서 제어는 준비된 추천 응답을 전송하고 제어가 종료된다.
도 10에서, 추천 시스템(320)은 검색 시스템(1000)에 통합되어 있다. “앱 B" 등의 어플은 디지털 배급 플랫폼(308)로부터 사용자 기기(304)로 다운로드된다. 앱 B는 검색 시스템(1000)으로부터 앱들을 검색할 사용자 인터페이스 요소(1002)를 가진다. 단지 예로서, 텍스트박스(textbox)(도시 안 됨)가 어플 B의 사용자가 텍스트 쿼리(textual query)에 진입할 수 있게 해주며, 사용자 인터페이스 요소(1002)는 텍스트 쿼리를 쿼리 래퍼(query wrapper) 내에 실어 검색 시스템(1000)으로 전송한다.
도 10에 도시된 바와 같이, 검색 시스템(1000)은 다음 추천 시스템(320)에 추천 요청을 전송하고 추천 응답을 회신 받는다. 검색 시스템(1000)은 데이터 소스(324)와 유사하거나 동일한 데이터 소스로부터 이식된(populated) 데이터 스토어를 포함할 수 있다.
도 11에서, 어플 검색 모듈(700)의 예시적 구현예는 쿼리 래퍼를 수신하는 쿼리 분석 모듈(1004)을 포함한다. 쿼리 분석 모듈은 쿼리 래퍼로부터 텍스트 쿼리를 분석한다. 예를 들어, 쿼리 분석 모듈(1004)은 쿼리 텍스트를 토큰화(tokenize)하고, 쿼리 텍스트를 필터링하며, 어간 추출(word stemming) 및 유의어화(synonymization)를 수행하고, 단어 제거를 중단한다. 쿼리 분석 모듈(1004)은 또한 쿼리 래퍼 내에 저장된 추가적 데이터도 분석한다. 쿼리 토큰(query token)이 쿼리 분석 모듈(1004)에 의해 집합 생성 모듈(1008)에 제공된다.
쿼리 분석 모듈(1004)은 또한 추천 시스템(500)에 추천 요청을 전송한다. 집합 생성 모듈(1008)은 쿼리 토큰들에 기반하여 어플 레코드들의 고려 집합을 식별한다. 어플 데이터 스토어(1010)의 레코드들의 내용 일부 또는 전부가 역색인(inverted index)들로 색인될 수 있다. 일부 구현예들에서, 집합 생성 모듈(1008)은 역색인에서 레코드들을 식별하는 데 Apache Software Foundation에 의한 APACHE LUCENE 소프트웨어 라이브러리를 사용한다.
집합 생성 모듈(1008)은 역색인을 검색하여 하나 이상의 쿼리 토큰을 포함하는 레코드들을 식별한다. 집합 생성 모듈(1008)이 부합하는 레코드들을 식별하므로, 집합 생성 모듈(1008)은 고려 집합 내의 각 식별된 레코드들의 고유 ID를 포함할 수 있다. 또한 일부 구현예들에서, 집합 생성 모듈(1008)은 검색 쿼리에 대한 레코드의 초기 점수를 결정할 수 있다. 초기 점수는 레코드의 내용이 얼마나 쿼리 토큰에 부합하는가를 나타낼 수 있다. 예를 들어, 초기 점수는 각 쿼리 조건들의 조건 빈도-역문서 빈도(term frequency-inverse document frequency: TF-IDF) 값들의 함수가 될 수 있다.
집합 처리 모듈(1012)은 집합 생성 모듈(1008)로부터 고유 ID들을 수신하고, 또한 추천 시스템(500)으로부터 추천 앱들의 ID들도 수신한다. 달리 말해, 추천 앱들은 단순히 고려 집합의 일부로 포함될 수 있다. 다른 구현예들에서, 추천 앱들은 추천 앱들의 상대적 점수들에 무관하게 추천 앱들의 어떤 수가 검색 결과에 포함되는 등의 특수한 상태를 가질 수 있다.
추천 시스템(500)에 전송된 추천 요청은 추천 앱들의 집합을 변경할 수 있는, 어떤 종류의 앱들이 검색되었는지를 나타낼 수 있다. 이와는 달리, 추천 요청은 단순히 사용자 기기 상에 설치된 앱들의 목록만을 식별하고, 그 다음 사용자에 의해 요청된 앱 검색과 독립적으로 추천 응답이 생성될 수도 있다. 그러면 사용자가 다른 영역 내를 검색하고 있었더라도 가치 있는 추천이 이뤄질 수 있다.
집합 처리 모듈(1012)은 일부 또는 전부의 ID들에 대해 결과적 점수를 결정한다. 결과적 점수는 주어진 쿼리 토큰과 문맥 인자(context parameter)들에 대한 앱의 관련성을 나타내는데, 점수가 높을수록 인식된 관련성이 더 높음을 나타낸다. 에를 들어, 쿼리 래퍼 내의 다른 아이템들이 문맥 인자로 작용할 수 있다. 지리위치 데이터는 사용자 기기의 위치에 적절하지 못한 앱들의 점수를 제한(또는 단순히 전체 제거)할 수 있다. 쿼리 래퍼 내의 블랙리스트는 집합 처리 모듈(1012)이 블랙리스트의 평가기준에 부합되는 앱들을 고려 집합에서 제거하거나 그 점수를 0으로 설정하도록 할 수 있다.
집합 처리 모듈(1012)은 레코드 채점 특성들, 쿼리 채점 특성들, 그리고 레코드-쿼리 채점 특성들에 기반하여 결과 점수를 생성할 수 있다. 예시적인 레코드 채점 특성들은 검색 중에 그 레코드가 얼마나 빈번히 호출(retrieve)되었는가 그리고 사용자에 의해 선택된 레코드에 기반하여 얼마나 자주 링크가 생성되었는가 등, 레코드에 관련된 측정치들에 기반할 수 있다. 쿼리 채점 특성은 검색 쿼리 내의 단어 수, 검색 쿼리의 인기(popularity), 그리고 검색 쿼리 내에서의 단어들의 기대 빈도(expected frequency)를 비제한적으로 포함할 수 있다. 레코드-평가 채점 특성은 검색 쿼리의 조건들이 대응 ID가 나타내는 레코드의 조건에 얼마나 잘 부합되는가를 나타내는 인자들을 포함할 수 있다.
집합 처리 모듈(1012)은 하나 이상의 채점 특성을 수신하도록 구성된 (지도 학습 모델(supervised learning model) 등) 하나 이상의 기계 학습 모델(machine learned model)을 포함할 수 있다. 하나 이상의 기계 학습 모델은 기능 ID 채점 특성들, 레코드 채점 특성들, 쿼리 채점 특성들, 그리고 레코드-쿼리 채점 특성들의 적어도 하나에 기반하여 결과 점수를 생성한다.
예를 들어, 집합 처리 모듈(1012)은 검색 쿼리를 각 ID와 짝을 지어(pair) 각 {쿼리, ID} 짝의 특성 벡터(vector of features; feature vector)를 연산할 수 있다. 특성 벡터는 하나 이상의 레코드 채점 특성들, 하나 이상의 쿼리 채점 특성들, 그리고 하나 이상의 레코드-쿼리 채점 특성들을 포함할 수 있다. 일부 구현예들에서, 집합 처리 모듈(1012)은 특성 벡터 내의 채점 특성들을 정규화한다(normalize). 집합 처리 모듈(1012)은 관련 없는 특성들을 널값(null value) 또는 0으로 설정할 수 있다.
집합 처리 모듈(1012)은 다음 어플 ID중의 하나에 대한 특성 벡터를 기계 학습 회귀(regression) 모델로 입력하여 그 ID에 대한 결과적 점수를 산출한다. 일부 예들에서, 기계 학습 회귀 모델은 의사결정 트리(예를 들어, 그래디언트 부스팅된(gradient-boosted) 의사결정 트리(decision tree))들의 집합을 포함할 수 있다. 이에 부가하여 또는 이를 대신하여, 기계 학습 회귀 모델은 로지스틱 확률 공식(logistic probability formula)을 포함할 수 있다. 일부 구현예들에서, 기계 학습 과업(task)은 준 지도(semi-supervised) 학습 과업으로 짜여질(frame) 수 있는데, 훈련 데이터의 소수(minority)는 인간 관장(human-curated) 점수들로 라벨이 붙고, 데이터의 나머지들은 인간 라벨이 없이 사용된다.
기계 학습 모델은 ID의 결과적 점수를 출력한다. 집합 처리 모듈(1012)은 집합 처리 모듈(1012)이 수신한 ID들의 각각의 결과 점수들을 산출할 수 있다. 집합 처리 모듈(1012)은 결과적 점수들을 각 ID들에 연계시켜 가장 관련 있다고 채점된 ID들을 출력한다.
결과 생성 모듈(1016)은 해당 앱들의 텍스트 및 그래픽(pictorial) 표시들과 함께 다운로드 링크 등의 억세스 메커니즘을 조합하여, 가장 관련 있다고 채점된 ID들로부터 검색 응답을 구축(build)한다. 다양한 구현예들에서, 결과 생성 모듈(1016)은 소정 수의 추천 앱들이 검색 결과에 포함되도록 선별할 수 있다. 이 추천 앱들은 검색에서 얻어진(search-derived) 앱들에 반대로 추천된 앱들로 식별된다.
도 12a에서, 어플 레코드(1100)의 예시적 포맷은 어플 명칭(1104-1)과, 어플 식별자(ID)(1104-2), 그리고 어플 속성들(1104-3)을 포함한다. 어플 레코드(1100)는 일반적으로 특정 어플에 대해 어플 데이터 스토어(1010)에 저장될 수 있는 데이터를 나타낸다. 어플 데이터 스토어(1010)는 어플 레코드(1100)에 의해 규정된 구조를 가지는 수천 또는 수백만 개의 레코드들을 포함할 수 있다. 어플 ID(1104-2)는 어플 데이터 스토어(1010) 내의 어플을 고유하게 식별한다. 어플 ID(1104-2)는 검색 시스템(1000)에 의해 할당될 수 있고 이에 따라 예를 들어 디지털 배급 플랫폼에 의해 할당된 어떤 ID와 독립적일 수 있다.
어플 ID(1104-2)의 단일한 값이 복수의 어플 판들을 포괄할 수 있다. 전술한 바와 같이 “판(edition)"이라는 용어는 단일한 앱의 복수의 버전들과 또한 다른 운영체제들에 대해 배포된 앱의 버전들에 적용될 수 있다. 단지 예로서, (도 12b에 도시된) Angry Birds는 ANDROID 및 IOS 운영체제 플랫폼에서 작동 가능하고, 각 플랫폼마다 버그 수정들이 배포되고 운영 시스템의 새로운 버전들을 이용하거나 이에 적합하도록 업데이트됨에 따라 일련의 버전들을 가질 수 있다.
도 12b에서, 예시적 어플 레코드(1120)는 “Angry Birds”라는 명칭(1124-1)과, 0x3FF8D407라고 16진수로 표현된 고유 ID(1124-2)를 포함한다. Angry Birds 앱의 속성들(1124-3)은 Angry Birds의 개발자의 명칭(Rovio Entertainment Ltd.)과, Angry Birds의 텍스트 리뷰들과, Angry Birds에 대한 장르(예를 들어 “Game”, 또는 하위 장르 ”Physics-Based Games“), 평점(예를 들어, 별점), 다운로드 수(가장 최근의 판으로 한정되거나 모든 판들에 대한 것일 수 있다), 억세스 메커니즘(이미 설치되어 있을 때는 Angry Birds를 여는 방법, 아직 설치되어 있지 않을 때는 Angry Birds를 설치하는 방법), 그리고 기기 정보(예를 들어, 운영체제, 하드웨어의 최소 요건들과 최적 작동을 위한 해상도 등)를 포함할 수 있다.
도 13에는 검색 시스템과 추천 시스템의 상호작용이 도시되어 있다. 제어는 1204에서 시작되는데, 검색 쿼리가 수신되면 제어가 1208로 진행되고; 그렇지 않으면 제어는 1204에 남아 있게 된다. 1208에서, 제어는 검색 쿼리의 처리를 시작하여 추천 시스템에 추천 요청을 전송한다. 1212에서 제어는 추천 시스템으로부터 응답을 수신하고, 1216에서 제어는 추천 응답으로부터의 추천 앱들을 검색 고려 집합에 포함시킨다.
1220에서, 제어는 검색 고려 집합 내의 앱들에 대해 검색 시스템 점수를 결정한다. 1224에서, 제어는 검색 결과에 포함시키도록 소정 수의 최고 배점의 추천 앱들을 선별한다. 1228에서, 제어는 검색 쿼리에 응답한다. 다음 제어는 1204로 복귀한다.
이상의 설명은 실제로는 단순히 예시적이며 본 발명과 그 응용 또는 그 사용을 어떤 방식으로든 한정하려 의도한 것이 아니다. 본 발명의 광범위한 교시 내용은 다양한 형태로 구현될 수 있다. 그러므로 본 발명이 특정한 예들을 포함하고 있더라도, 도면들과 명세서, 그리고 다음 청구항들을 보면 다른 변형들이 명백해질 것이므로 본 발명의 진정한 범위는 이 예들에 한정되어서는 안 될 것이다. 이 명세서에 사용된 바와 같이, A, B 및 C의 적어도 하나는 비배타적인 논리합(logical OR)을 사용하여 논리 (A OR B OR C)를 의미하는 것으로 해석되어야 하며, A의 적어도 하나, B의 적어도 하나, 그리고 C의 적어도 하나를 의미하는 것으로 해석되어서는 안 된다. 방법 내의 하나 이상의 단계들은 본 발명의 원리를 바꾸지 않고도 다른 순서(또는 동시에) 실행될 수 있음을 이해해야 할 것이다.
본 명세서에서, 아래 정의를 포함하여 '모듈' 또는 '컨트롤러'라는 용어는 '회로'라는 용어로 대체될 수 있다. '모듈'이라는 용어는 다음을 지칭하거나 그 일부이거나 포함하는데: 주문형 반도체(Application Specific Integrated Circuit; ASIC); 디지털, 아날로그, 또는 혼합 아날로그/디지털 이산회로(discrete circuit); 디지털, 아날로그, 또는 혼합 아날로그/디지털 집적회로(integrated circuit); 조합 논리회로(combinational logic circuit); 현장 프로그램 가능 게이트 어레이(field programmable gate array; FPGA); 코드(code)를 실행하는 (공용, 전용, 또는 그룹) 프로세서 회로(processor circuit); 프로세서 회로가 실행할 코드를 저장하는 (공용, 전용, 또는 그룹) 메모리 회로; 기재된 기능을 제공하는 다른 적절한 하드웨어 부품들; 또는 시스템 온 칩(system-on-chip) 내 등의 이상의 일부 또는 전부의 조합.
모듈은 하나 이상의 인터페이스 회로를 포함할 수 있다. 일부 예들에서, 인터페이스 회로는 근거리 통신망(local area network; LAN), 인터넷, 광역 통신망(wide area network; WAN) 또는 그 조합 등에 연결되는 유선 또는 무선 인터페이스들을 포함할 수 있다. 본 발명의 어떤 소정의 모듈의 기능은 인터페이스 회로들을 통해 연결된 복수의 모듈들에 배급(distribute)될 수 있다. 예를 들어, 복수의 모듈들이 부하 균형(load balancing)을 허용한다. 또 다른 예에서, (원격(remote) 또는 클라우드(cloud)로도 알려진) 서버 모듈은 일부 기능을 클라이언트(client) 모듈 대신 달성할 수 있다.
이상에 사용된 코드라는 용어는 소프트웨어, 펌웨어, 및/또는 마이크로코드를 포함할 수 있고, 프로그램, 루틴, 함수, 계층(class), 데이터 구조, 및/또는 객체(object)들을 지칭할 수 있다. 공용 프로세서 회로는 복수의 모듈들로부터의 코드의 일부 또는 전부를 실행하는 단일한 프로세서 회로를 포괄한다. 그룹 프로세서라는 용어는 추가적 프로세서 회로들과 조합되어 하나 이상의 모듈로부터의 코드의 일부 또는 전부를 실행하는 프로세서 회로를 포괄한다. 복수의 프로세서 회로들에 대한 참조는 분리된 다이(die)들 상의 복수의 프로세서 회로들과, 단일한 다이 상의 복수의 프로세서 회로들과, 단일한 프로세서 회로의 복수의 코어(core)들과, 단일한 프로세서 회로의 복수의 스레드(thread)들, 또는 이들의 조합을 포괄한다. 공용 메모리 회로라는 용어는 복수의 모듈들로부터의 코드들의 일부 또는 전부를 저장하는 단일한 메모리 회로를 포괄한다. 그룹 메모리 회로라는 용어는 추가적 메모리들과 조합되어 하나 이상의 모듈들로부터의 코드의 일부 또는 전부를 저장하는 메모리 회로를 포괄한다.
메모리 회로라는 용어는 컴퓨터 판독 가능한 매체(computer-readable medium)라는 용어의 하위집합이다. 여기서 사용된 컴퓨터 판독 가능한 매체라는 용어는 매체를 통해 전파되는 일시적(transitory) 전기 또는 전자기 신호(예를 들어, 반송파(carrier wave))들을 포괄하지 않으며; 그러므로 컴퓨터 판독 가능한 매체라는 용어는 유형(tangible)이고 비일시적(non-transitory)인 것으로 간주된다. 비일시적, 유형의 컴퓨터 판독 가능한 매체의 비제한적인 예들은(플래시 메모리 회로, 삭제 및 프로그램 가능한 판독 전용 메모리 회로, 또는 마스크 판독 전용 메모리 회로 등의) 비휘발성(non-volatile) 메모리 회로와, 휘발성(volatile) 메모리 회로(예를 들어, 정적(static) 랜덤 억세스(random access) 메모리 회로 또는 동적(dynamic) 랜덤 억세스 메모리 회로)와, 자기 저장 매체(예를 들어, 아날로그 또는 디지털 자기 테이프 또는 하드 디스크 드라이브), 그리고 광학 저장 매체(예를 들어, CD, DVD, 또는 Blu-ray Disc) 등이다.
본 명세서에 기재된 장치와 방법들은 범용 컴퓨터로 컴퓨터 프로그램으로 구현된 하나 이상의 특정된 기능들을 수행하도록 구성한 특별한 목적의 컴퓨터로 부분적으로 또는 완전히 구현될 수 있다. 전술한 기능 블록들과 흐름도 요소들은 소프트웨어 사양으로 작용할 수 있는데, 이는 숙련된 기술자나 프로그래머에 의해 컴퓨터 프로그램으로 변환될 수 있다.
컴퓨터 프로그램은 적어도 하나의 비일시적, 유형의 컴퓨터 판독 가능한 매체에 저장된, 프로세서로 실행 가능한(processor-executable) 명령(instruction)들을 포함한다. 컴퓨터 프로그램은 또한 저장된 데이터를 포함하거나 이에 의존한다. 컴퓨터 프로그램은 특수 목적 컴퓨터의 하드웨어와 상호작용하는 기본 입출력 시스템(basic input/output system; BIOS)과, 특수 목적 컴퓨터의 특정한 기기와 상호작용하는 기기 드라이버와, 하나 이상의 운영체제와, 사용자 어플과, 배경 서비스(background service)와, 배경 어플 등을 포괄할 수 있다.
컴퓨터 프로그램은: (i) HTML(hypertext markup language) 또는 XML(extensible markup language) 등 분석(parse)될 수 있는 기술적 텍스트(descriptive text), (ii) 어셈블리 코드(assembly code), (iii) 컴파일러(compiler)에 의해 소스 코드(source code)에서 생성되는 오브젝트 코드(object code), (iv) 인터프리터(interpreter)로 실행될 수 있는 소스 코드, (v) 적시(just-in-time) 컴파일러로 컴파일 및 실행될 수 있는 소스 코드를 포함할 수 있다. 단지 예로서, 소스 코드는 C, C++, C#, Objective-C, Haskell, Go, SQL, R, Lisp, Java®, Fortran, Perl, Pascal, Curl, OCaml, Javascript®, HTML5, Ada, ASP(active server pages), PHP, Scala, Eiffel, Smalltalk, Erlang, Ruby, Flash®, Visual Basic®, Lua, 그리고 Python®을 포함하는 언어(language)로부터의 신택스(syntax)를 사용하여 기록될 수 있다.
청구항들에 기재된 어느 요소도, 그 요소가 “means for"의 문구를 사용하여, 또는 방법 청구항의 경우 ”operation for“ 또는 ”step for“의 문구를 사용하여 명시적으로 기재되지 않은 한, 미국특허법 35 U.S.C. §112(f)의 의미 내에서 수단 더하기 기능(means-plus-function) 요소가 되도록 의도한 것이 아니다.

Claims (35)

  1. 복수의 레코드들을 저장하도록 구성되는 제1 데이터 스토어로서, 상기 복수의 레코드들의 각각이:
    모바일 기기의 어플리케이션에 대응하고, 그리고
    상기 어플리케이션의 사용에 의해 모바일 기기 사용자에게 가능한 액션들을 식별하는 메타데이터를 포함하며, 식별된 상기 액션들이 온톨로지에서 선택되는 제1 데이터 스토어;
    사용자 기기에 해당하는 어플리케이션 추천 요청을 처리하며, 어플리케이션 추천 요청이 상기 사용자 기기에 설치된 어플리케이션들의 집합을 나타내는 데이터를 포함하는 쿼리 모듈;
    집합 생성 모듈로서,
    상기 제1 데이터 스토어를 사용하여 상기 사용자 기기에 설치된 어플리케이션들의 집합에 연계된 가능한 액션들의 집합을 식별하며,
    불가능한 액션들의 집합을 선택하는데, 상기 불가능한 액션들의 집합은 상기 가능한 액션들의 집합과 서로 배타적이며, 그리고
    상기 제1 데이터 스토어로부터 어플리케이션들의 고려 집합을 결정하는데, 상기 고려 집합의 각 어플리케이션은 상기 불가능한 액션들의 집합의 적어도 하나를 구현하도록 구성되는 집합 생성 모듈;
    어플리케이션들의 상기 고려 집합으로부터 선택된 어플리케이션들의 부분집합을 선별하도록 구성되는 집합 처리 모듈; 및
    상기 어플리케이션 추천 요청에 어플리케이션 추천 응답으로 응답하도록 구성되고, 상기 어플리케이션 추천 응답이 상기 선택된 부분집합 내의 각 어플리케이션에 대한 식별 데이터를 포함하는 결과 생성 모듈을 포함하는 시스템.
  2. 제 1항에 있어서,
    상기 제1 데이터 스토어가 상기 복수의 레코드들의 각각에 대해 상기 어플리케이션의 억세스 메커니즘에 대한 데이터를 포함하며; 그리고
    상기 어플리케이션 추천 응답이 상기 선택된 부분집합 내의 각 어플리케이션에 대한 상기 억세스 메커니즘을 포함하는 시스템.
  3. 제 2항에 있어서,
    상기 복수의 레코드들의 각각에 대한 상기 어플리케이션의 상기 억세스 메커니즘에 대한 상기 데이터가 디지털 배급 플랫폼 내의 어플리케이션에 대한 링크인 시스템.
  4. 제 1항에 있어서,
    상기 집합 처리 모듈이:
    상기 고려 집합 내의 어플리케이션들의 각각에 대해 점수를 결정하고; 그리고
    어플리케이션들의 상기 고려 집합으로부터 최고 점수를 가지는 소정 수의 어플리케이션들을 선택된 부분집합으로 선별하도록 구성되는 시스템.
  5. 제 4항에 있어서,
    어플리케이션에 대한 상기 점수가 상기 어플리케이션에 대한 리뷰들과 상기 어플리케이션의 다운로드 통계에 기반하는 시스템.
  6. 제 4항에 있어서,
    어플리케이션에 대한 상기 점수가 상기 어플리케이션의 사용을 통해 상기 사용자 기기에 가능한 액션들의 전체 수에 반비례하는 시스템.
  7. 제 4항에 있어서,
    어플리케이션에 대한 상기 점수가 상기 가능한 액션들의 집합 내에 없으며 상기 어플리케이션의 사용을 통해 상기 사용자 기기에 가능한 액션들의 전체 수에 정비례하는 시스템.
  8. 제 1항에 있어서,
    상기 집합 처리 모듈이 상기 선택된 부분집합으로부터 상기 사용자 기기에 설치된 어플리케이션들의 집합을 제외하도록 구성되는 시스템.
  9. 제 1항에 있어서,
    상기 집합 처리 모듈이 상기 선택된 부분집합으로부터 상기 사용자 기기에서 삭제된 어플리케이션의 집합을 제외하도록 구성되는 시스템.
  10. 제 1항에 있어서,
    상기 가능한 액션들의 집합이 상기 사용자 기기에 설치된 모든 어플리케이션들의 사용을 통해 상기 사용자 기기에 가능한 상기 온톨로지 내의 모든 액션들을 포괄하는 시스템.
  11. 제 1항에 있어서,
    상기 사용자 기기에 설치된 어플리케이션들의 집합이 상기 사용자 기기에 설치된 모든 어플리케이션들을 포괄하는 시스템.
  12. 제 1항에 있어서,
    상기 어플리케이션 추천 요청이 상기 제1 데이터 스토어에 없는 레코드에 해당하는 상기 온톨로지의 제1 액션에 반응하여 촉발되고, 새로운 레코드가 상기 제1 데이터 스토어에 추가되어 상기 제1 액션에 대응하는 시스템.
  13. 제 1항에 있어서,
    상기 제1 데이터 스토어가 상기 복수의 레코드들의 각각에 대해 상기 레코드의 지리적 관련성에 관한 데이터를 포함하고; 그리고
    상기 어플리케이션 추천 요청이 상기 사용자 기기의 제1 지리적 영역에서 제2 지리적 영역으로의 이동에 반응하여 촉발되는 시스템.
  14. 제 1항에 있어서,
    제1 레코드에 해당하는 어플리케이션이 상기 사용자 기기에서 삭제되었을 때 추가적 액션을 추가하도록 업데이트되는 상기 복수의 레코드들의 상기 제1 레코드의 상기 메타데이터에 반응하여 상기 어플리케이션 추천 요청을 생성하도록 구성되는 감시 모듈을 더 구비하는 시스템.
  15. 제 1항에 있어서,
    (i) 제1 레코드에 해당하는 어플리케이션이 상기 사용자 기기에서 삭제되고 (ii) 추가적 액션이 가능한 액션들의 집합이 외부에 있을 때, 상기 추가적 액션을 추가하도록 업데이트되는 상기 복수의 레코드들의 상기 제1 레코드의 상기 메타데이터에 반응하여 상기 어플리케이션 추천 요청을 생성하도록 구성되는 감시 모듈을 더 구비하는 시스템.
  16. 제 1항에 있어서,
    상기 제1 데이터 스토어의 제1 레코드가 상기 사용자 기기에 설치된 어플리케이션들의 집합으로부터의 상기 어플리케이션에 대응하고, 상기 어플리케이션 추천 요청이 추가적 액션을 추가하도록 업데이트 되는 상기 메타데이터에 반응하여 촉발되는 시스템.
  17. 제 1항에 있어서,
    상기 제1 데이터 스토어의 제1 레코드가 제1 어플리케이션의 복수의 버전들에 대응하고; 그리고
    상기 시스템이, (i) 새 버전의 상기 메타데이터가 상기 제1 어플리케이션의 이전 버전들에 포함되지 않은 상기 온톨로지의 액션을 포함하고 (ii) 상기 제1 어플리케이션의 이전 버전들 중의 하나가 상기 사용자 기기 상에 설치되어 있을 때, 상기 제1 어플리케이션의 새 버전의 상기 제1 레코드에의 추가에 반응하여 상기 어플리케이션 추천 요청을 생성하도록 구성되는 감시 모듈을 더 구비하는 시스템.
  18. 제 17항에 있어서,
    상기 감시 모듈이, 상기 사용자 기기가 소정 기간보다 더 긴 기간 동안 상기 새 버전의 상기 제1 어플리케이션을 설치하는 것을 실패할 때까지 상기 어플리케이션 추천 요청을 지연하는 시스템.
  19. 제 1항에 있어서,
    상기 제1 데이터 스토어의 제1 레코드가 제1 어플리케이션의 제1 버전에 해당하고; 그리고
    상기 시스템이, (i) 제2 버전의 메타데이터가 상기 제1 어플리케이션의 상기 제1 버전에 포함되지 않았던 온톨로지로부터의 액션을 포함하고 (ii) 상기 제1 어플리케이션의 상기 제1 버전이 상기 사용자 기기에 설치되어 있을 때, 상기 제1 어플리케이션의 상기 제2 버전이 상기 제1 데이터 스토어에 제2 레코드로 추가됨에 반응하여 상기 사용자 기기에 대한 상기 어플리케이션 추천 요청을 생성하도록 구성된 감시 모듈을 포함하는 시스템.
  20. 제 1항에 있어서,
    상기 온톨로지가 각 상기 액션이 리프 노드(leaf node)인 계통 트리로 분류되고; 그리고
    상기 집합 생성 모듈이
    상기 가능한 액션들의 집합 내의 복수의 액션들에 연결되는 부모 노드들을 식별하고; 그리고
    식별된 상기 부모 노드들의 나머지 액션들을 상기 불가능한 액션들의 집합으로 선별하도록 구성되는 시스템.
  21. 제 1항에 있어서,
    상기 온톨로지가 각 상기 액션이 리프 노드인 계통 트리로 분류되고; 그리고
    상기 집합 처리 모듈이
    어플리케이션들의 상기 고려 집합의 각각에 점수를 할당하고;
    상기 가능한 액션들의 집합 내의 복수의 액션들에 연결되는 부모 노드들을 식별하고;
    식별된 상기 부모 노드들의 나머지 액션들을 구현하는 어플리케이션들의 상기 점수를 증가시키고; 그리고
    상기 고려 집합으로부터 최고 점수를 가지는 어플리케이션들을 상기 선택된 부분집합으로 선별하도록 구성되는 시스템.
  22. 제 1항에 있어서,
    복수의 레코드들을 저장하도록 구성된 제2 데이터 스토어를 더 구비하고, 상기 복수의 레코드들 각각이:
    사용자 기기에 대응하고; 그리고
    상기 사용자 기기에서 삭제된 어플리케이션들을 식별하는 데이터를 저장하는 시스템.
  23. 제 1항에 있어서,
    복수의 사용자 레코드들을 저장하도록 구성된 제2 데이터 스토어를 더 구비하고:
    상기 복수의 사용자 레코드들 각각이 (i) 사용자 기기에 대응하고, 그리고 (ii) 해당 사용자 기기의 사용자에 의해 원하지 않는 것으로 식별된 어플리케이션들을 식별하는 데이터를 저장하고; 그리고
    상기 집합 처리 모듈이 상기 제2 데이터 스토어에 따라 상기 선택된 부분집합에서 어플리케이션들을 제외하도록 구성되는 시스템.
  24. 제 1항에 있어서,
    복수의 사용자 레코드들을 저장하도록 구성된 제2 데이터 스토어를 더 구비하고:
    상기 복수의 사용자 레코드들 각각이 (i) 사용자 기기에 대응하고, 그리고 (ii) 해당 사용자 기기의 사용자에 의해 원하지 않는 것으로 식별된 어플리케이션들을 식별하는 데이터를 저장하고; 그리고
    상기 집합 생성 모듈이 상기 제2 데이터 스토어에 따라 상기 불가능한 액션들의 집합으로부터 액션들을 제거하도록 구성되는 시스템.
  25. 제 1항에 있어서,
    상기 집합 생성 모듈이 상기 가능한 액션들의 집합으로부터의 액션들을 같이 하는(duplicate) 제1 어플리케이션을 어플리케이션들의 상기 고려 집합에 선별적으로 포함시키도록 구성되는 시스템.
  26. 제 25항에 있어서,
    상기 제1 어플리케이션이 상기 온톨로지의 제1 액션을 상기 사용자 기기에서 수행 가능하게 하고; 그리고
    상기 집합 생성 모듈이 상기 제1 액션의 빈번한 사용을 나타내는 상기 사용자 기기의 사용 데이터에 반응하여 상기 제1 어플리케이션을 어플리케이션들의 상기 고려 집합에 포함하도록 구성되는 시스템.
  27. 제 26항에 있어서,
    상기 집합 생성 모듈이, 상기 제1 액션의 사용이 소정의 임계값을 초과하는데 반응하여 상기 제1 액션의 사용이 빈번하다고 판단하도록 구성되고; 그리고
    상기 소정의 임계값이 상기 가능한 액션들의 집합의 평균 사용에 기반하는 시스템.
  28. 제 1항에 있어서,
    상기 어플리케이션 추천 요청이 상기 사용자 기기로부터 직접 수신되는 시스템.
  29. 제 1항에 있어서,
    상기 어플리케이션 추천 요청이, 상기 사용자 기기로부터 어플리케이션 검색 요청을 수신하는 검색 플랫폼에 반응하여 상기 검색 플랫폼으로부터 수신되는 시스템.
  30. 제 29항에 있어서,
    상기 어플리케이션 추천 요청이 추천들이 상기 어플리케이션 검색 요청의 범위를 목표로 해야 함을 나타내는 데이터를 포함하는 시스템.
  31. 제 29항에 있어서,
    상기 어플리케이션 추천 응답이 상기 어플리케이션 검색 요청의 범위와 독립적인 시스템.
  32. 제 1항에 있어서,
    상기 복수의 레코드들의 각각아 해당 어플리케이션을 기술하는 추가적 메타데이터를 포함하고; 그리고
    상기 추가적 메타데이터가 해당 어플리케이션의 장르를 포함하는 시스템.
  33. 제 32항에 있어서,
    추가적 메타데이터가 (i) 해당 어플리케이션에 대한 사용자 제공 리뷰 데이터와, 그리고 (ii) 해당 어플리케이션의 다운로드 통계를 포함하는 시스템.
  34. 복수의 레코드들을 제1 데이터 스토어에 저장하는 단계로서, 상기 복수의 레코드들 각각이:
    모바일 기기의 어플리케이션에 대응하고, 그리고
    상기 어플리케이션의 사용에 의해 모바일 기기 사용자에게 가능한 액션들을 식별하는 메타데이터를 포함하며, 식별된 상기 액션들이 온톨로지에서 선택되는 저장하는 단계;
    사용자 기기에 해당하는 어플리케이션 추천 요청을 처리하는 단계로서, 상기 어플리케이션 추천 요청이 상기 사용자 기기에 설치된 어플리케이션들의 집합을 나타내는 데이터를 포함하는 처리하는 단계;
    상기 제1 데이터 스토어를 사용하여 상기 사용자 기기에 설치된 어플리케이션들의 집합에 연계된 가능한 액션들의 집합을 식별하는 단계;
    불가능한 액션들의 집합을 선택하는 단계로, 상기 불가능한 액션들의 집합은 상기 가능한 액션들의 집합과 서로 배타적인 상기 선택하는 단계;
    상기 제1 데이터 스토어로부터 어플리케이션들의 고려 집합을 결정하는 단계로서, 상기 고려 집합의 각 어플리케이션은 상기 불가능한 액션들의 집합의 적어도 하나를 구현하는 결정하는 단계;
    어플리케이션들의 상기 고려 집합으로부터 선택된 어플리케이션들의 부분집합을 선별하는 단계; 및
    상기 어플리케이션 추천 요청에 어플리케이션 추천 응답으로 응답하는 단계로서, 상기 어플리케이션 추천 응답이 상기 선택된 부분집합 내의 각 어플리케이션에 대한 식별 데이터를 포함하는 상기 응답하는 단계를 포함하는 방법.
  35. 비일시적 컴퓨터 판독 가능한 매체에 저장되는 프로세서로 실행 가능한 명령들로서, 상기 명령들이:
    복수의 레코드들을 제1 데이터 스토어에 저장하는 단계로서, 상기 복수의 레코드들 각각이:
    모바일 기기의 어플리케이션에 대응하고, 그리고
    상기 어플리케이션의 사용에 의해 모바일 기기 사용자에게 가능한 액션들을 식별하는 메타데이터를 포함하며, 식별된 상기 액션들이 온톨로지에서 선택되는 저장하는 단계;
    사용자 기기에 해당하는 어플리케이션 추천 요청을 처리하는 단계로서, 상기 어플리케이션 추천 요청이 상기 사용자 기기에 설치된 어플리케이션들의 집합을 나타내는 데이터를 포함하는 처리하는 단계;
    상기 제1 데이터 스토어를 사용하여 상기 사용자 기기에 설치된 어플리케이션들의 집합에 연계된 가능한 액션들의 집합을 식별하는 단계;
    불가능한 액션들의 집합을 선택하는 단계로서, 상기 불가능한 액션들의 집합은 상기 가능한 액션들의 집합과 서로 배타적인 선택하는 단계;
    상기 제1 데이터 스토어로부터 어플리케이션들의 고려 집합을 결정하는 단계로서, 상기 고려 집합의 각 어플리케이션은 상기 불가능한 액션들의 집합의 적어도 하나를 구현하는 결정하는 단계;
    어플리케이션들의 상기 고려 집합으로부터 선택된 어플리케이션들의 부분집합을 선별하는 단계; 및
    상기 어플리케이션 추천 요청에 어플리케이션 추천 응답으로 응답하는 단계로서, 상기 어플리케이션 추천 응답이 상기 선택된 부분집합 내의 각 어플리케이션에 대한 식별 데이터를 포함하는 응답하는 단계를 포함하는 명령들.
KR1020177032436A 2015-04-13 2016-04-13 액션 기반 앱 추천 엔진 KR20170137150A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/684,823 US20160299977A1 (en) 2015-04-13 2015-04-13 Action-Based App Recommendation Engine
US14/684,823 2015-04-13
PCT/IB2016/052109 WO2016166683A1 (en) 2015-04-13 2016-04-13 Action-based app recommendation engine

Publications (1)

Publication Number Publication Date
KR20170137150A true KR20170137150A (ko) 2017-12-12

Family

ID=57111784

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177032436A KR20170137150A (ko) 2015-04-13 2016-04-13 액션 기반 앱 추천 엔진

Country Status (8)

Country Link
US (1) US20160299977A1 (ko)
EP (1) EP3283982A4 (ko)
JP (1) JP2018516401A (ko)
KR (1) KR20170137150A (ko)
CN (1) CN107787503A (ko)
AU (1) AU2016248004A1 (ko)
SG (1) SG11201708428QA (ko)
WO (1) WO2016166683A1 (ko)

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10706373B2 (en) 2011-06-03 2020-07-07 Apple Inc. Performing actions associated with task items that represent tasks to perform
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
CN103425704B (zh) * 2012-05-24 2017-07-21 阿里巴巴集团控股有限公司 应用界面提供方法及装置
KR20150104615A (ko) 2013-02-07 2015-09-15 애플 인크. 디지털 어시스턴트를 위한 음성 트리거
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
CN105453026A (zh) 2013-08-06 2016-03-30 苹果公司 基于来自远程设备的活动自动激活智能响应
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
TWI566107B (zh) 2014-05-30 2017-01-11 蘋果公司 用於處理多部分語音命令之方法、非暫時性電腦可讀儲存媒體及電子裝置
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
US9864803B2 (en) * 2015-07-22 2018-01-09 TCL Research America Inc. Method and system for multimodal clue based personalized app function recommendation
DE112016002120T5 (de) * 2015-09-02 2018-03-22 Google LLC (n.d.Ges.d. Staates Delaware) Entwicklungs- und Vetriebsplattform für Software
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10740384B2 (en) 2015-09-08 2020-08-11 Apple Inc. Intelligent automated assistant for media search and playback
US10331312B2 (en) 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US20170085677A1 (en) * 2015-09-18 2017-03-23 Quixey, Inc. Recommending Applications
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
US10319023B2 (en) * 2016-06-29 2019-06-11 Go Daddy Operating Company, LLC Universal purchase path that may be optimized for conversion or revenue
US10070193B2 (en) 2016-08-26 2018-09-04 Apple Inc. Universal browse and watch list
US10904727B2 (en) * 2016-12-13 2021-01-26 Universal Electronics Inc. Apparatus, system and method for promoting apps to smart devices
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK201770429A1 (en) 2017-05-12 2018-12-14 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770411A1 (en) 2017-05-15 2018-12-20 Apple Inc. MULTI-MODAL INTERFACES
US20180336275A1 (en) 2017-05-16 2018-11-22 Apple Inc. Intelligent automated assistant for media exploration
US20180336892A1 (en) 2017-05-16 2018-11-22 Apple Inc. Detecting a trigger of a digital assistant
US10817579B2 (en) 2017-05-16 2020-10-27 Apple Inc. Determining relevant information based on user interactions
US20190034548A1 (en) * 2017-07-26 2019-01-31 International Business Machines Corporation Selecting a browser to launch a uniform resource locator (url)
CN107809485A (zh) * 2017-10-31 2018-03-16 广州云移信息科技有限公司 一种信息推荐方法及终端
MY191530A (en) * 2017-11-20 2022-06-29 Emerico Sdn Bhd A system for operating an electronic platform
US11410075B2 (en) * 2018-01-15 2022-08-09 Microsoft Technology Licensing, Llc Contextually-aware recommendations for assisting users with task completion
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
DK179822B1 (da) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
TWI685230B (zh) * 2018-09-11 2020-02-11 立新 陳 具備行動加值服務之智能網路交換機系統
US11531978B2 (en) * 2018-09-14 2022-12-20 Khizar Ahmad Khan Platform for managing mobile applications
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
EP3857354A4 (en) * 2018-09-28 2021-11-24 Element AI Inc. CONTEXT-BASED RECOMMENDATIONS FOR DESIGN OF AUTOMATION OF ROBOTIZED PROCESSES
US10867338B2 (en) 2019-01-22 2020-12-15 Capital One Services, Llc Offering automobile recommendations from generic features learned from natural language inputs
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
US11681718B2 (en) * 2019-03-29 2023-06-20 Apple Inc. Scoping a system-wide search to a user-specified application
US10489474B1 (en) 2019-04-30 2019-11-26 Capital One Services, Llc Techniques to leverage machine learning for search engine optimization
US10565639B1 (en) 2019-05-02 2020-02-18 Capital One Services, Llc Techniques to facilitate online commerce by leveraging user activity
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. USER ACTIVITY SHORTCUT SUGGESTIONS
DK201970510A1 (en) 2019-05-31 2021-02-11 Apple Inc Voice identification in digital assistant systems
US11227599B2 (en) 2019-06-01 2022-01-18 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
CN110245108A (zh) * 2019-07-15 2019-09-17 北京一流科技有限公司 执行体创建系统和执行体创建方法
US11232110B2 (en) 2019-08-23 2022-01-25 Capital One Services, Llc Natural language keyword tag extraction
US11281674B2 (en) 2019-08-26 2022-03-22 Acxiom Llc Grouping data in a heap using tags
WO2021056255A1 (en) 2019-09-25 2021-04-01 Apple Inc. Text detection using global geometry estimators
US10796355B1 (en) * 2019-12-27 2020-10-06 Capital One Services, Llc Personalized car recommendations based on customer web traffic
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11043220B1 (en) 2020-05-11 2021-06-22 Apple Inc. Digital assistant hardware abstraction
US11755276B2 (en) 2020-05-12 2023-09-12 Apple Inc. Reducing description length based on confidence
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
WO2022052038A1 (en) * 2020-09-11 2022-03-17 Citrix Systems, Inc. Systems and methods for application access

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8751517B2 (en) * 2009-08-18 2014-06-10 Nec Corporation Information processing apparatus, information processing system, information processing method, and computer readable non-transitory medium
US20120096435A1 (en) * 2010-10-18 2012-04-19 Microsoft Corporation Capability-based application recommendation
US20120143791A1 (en) * 2010-12-02 2012-06-07 Nokia Corporation Method and apparatus for causing an application recommendation to issue
WO2012154838A2 (en) * 2011-05-09 2012-11-15 Google Inc. Generating application recommendations based on user installed applications
EP2710466A1 (en) * 2011-05-09 2014-03-26 Google, Inc. Identifying applications of interest based on application metadata
US9058612B2 (en) * 2011-05-27 2015-06-16 AVG Netherlands B.V. Systems and methods for recommending software applications
EP2605206A1 (en) * 2011-12-16 2013-06-19 France Télécom Method and system to recommend applications from an application market place to an electronic device
KR101895536B1 (ko) * 2011-12-29 2018-10-25 삼성전자주식회사 어플리케이션 사용에 따른 어플리케이션 추천 서버 및 단말, 그리고 어플리케이션 추천 방법
US9510141B2 (en) * 2012-06-04 2016-11-29 Apple Inc. App recommendation using crowd-sourced localized app usage data
US20150220734A1 (en) * 2012-10-19 2015-08-06 Mcafee, Inc. Mobile application management
KR20140073258A (ko) * 2012-12-06 2014-06-16 삼성전자주식회사 어플리케이션 정보 제공 방법 및 휴대 단말
US9489430B2 (en) * 2013-05-14 2016-11-08 Google Inc. System and method for identifying applicable third-party applications to associate with a file
JP2015032254A (ja) * 2013-08-06 2015-02-16 ソニー株式会社 情報処理装置、情報処理方法、及び、プログラム
US20150100268A1 (en) * 2013-10-03 2015-04-09 Jigabot, Llc Tracking system apparatus
US10275505B2 (en) * 2014-06-24 2019-04-30 Adobe Inc. In-application conversion of file versions using cloud services

Also Published As

Publication number Publication date
WO2016166683A1 (en) 2016-10-20
JP2018516401A (ja) 2018-06-21
AU2016248004A1 (en) 2017-11-16
EP3283982A4 (en) 2019-04-03
CN107787503A (zh) 2018-03-09
SG11201708428QA (en) 2017-11-29
EP3283982A1 (en) 2018-02-21
US20160299977A1 (en) 2016-10-13

Similar Documents

Publication Publication Date Title
KR20170137150A (ko) 액션 기반 앱 추천 엔진
US11055369B2 (en) Automatic crawling of applications
US9798531B2 (en) Dependency-aware transformation of multi-function applications for on-demand execution
US9626158B1 (en) Dynamic availability-based integration of external functionality
US10157230B2 (en) Generating search results based on clustered application states
US20170242666A1 (en) Development System and Method for Providing External Functionality
US9952848B2 (en) Dependency-aware transformation of multi-function applications for on-demand execution
US10366127B2 (en) Device-specific search results
US10332184B2 (en) Personalized application recommendations
US9852448B2 (en) Identifying gaps in search results
US9946794B2 (en) Accessing special purpose search systems
US20170193059A1 (en) Searching For Applications Based On Application Usage
US20160147765A1 (en) Techniques for Using Similarity to Enhance Relevance in Search Results
US20160188684A1 (en) Consolidating Search Results
JP2016527615A (ja) アプリケーション情報の検索方法及びその装置
US20170185686A1 (en) App Onboarding System for Developer-Defined Creation of Search Engine Results
US20160188721A1 (en) Accessing Multi-State Search Results
US10157210B2 (en) Searching and accessing software application functionality using application connections
US20170192978A1 (en) Searching For Applications Based On Application Usage
US10146879B2 (en) Generating software application search results using application connection keywords
US20170169022A1 (en) Generating Software Application Search Results Using Application Connections
Naser et al. Palestine Sports

Legal Events

Date Code Title Description
N231 Notification of change of applicant