KR20160125393A - 인센티브 기반 앱 실행 기법 - Google Patents

인센티브 기반 앱 실행 기법 Download PDF

Info

Publication number
KR20160125393A
KR20160125393A KR1020167023163A KR20167023163A KR20160125393A KR 20160125393 A KR20160125393 A KR 20160125393A KR 1020167023163 A KR1020167023163 A KR 1020167023163A KR 20167023163 A KR20167023163 A KR 20167023163A KR 20160125393 A KR20160125393 A KR 20160125393A
Authority
KR
South Korea
Prior art keywords
apps
app
computing device
subset
personal
Prior art date
Application number
KR1020167023163A
Other languages
English (en)
Other versions
KR102267270B1 (ko
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
Priority claimed from US14/187,567 external-priority patent/US9473944B2/en
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20160125393A publication Critical patent/KR20160125393A/ko
Application granted granted Critical
Publication of KR102267270B1 publication Critical patent/KR102267270B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

모바일 컴퓨팅 장치 상에서 백그라운드 프로세스로서 실행되며 연관된 사용자에게 개인 어시스턴스를 제공하기 위한 개인용 데몬의 시스템 및 방법이 제공된다. 또한 스케줄링 관리자가 모바일 컴퓨팅 장치 상에서 실행된다. 상기 개인용 데몬은 연관된 사용자를 대리하여 하나 이상의 개인 어시스턴스 액션을 실행한다. 스케줄링 관리자는 개인용 데몬을 보조하며 이벤트에 응답한다. 더 구체적으로, 이벤트 수신에 응답하여, 스케줄링 관리자가 수신된 이벤트에 응답하는 앱 세트를 결정하고 상기 앱 세트로부터 모바일 컴퓨팅 장치 상에서 실행될 적어도 제1 앱 서브세트를 식별한다. 상기 스케줄링 관리자는 제1 앱 서브세트의 실행된 앱의 유용성에 대한 피드백 정보를 수신하고 상기 제1 앱 서브세트의 각각의 앱의 연관된 점수를 업데이트한다.

Description

인센티브 기반 앱 실행 기법{INCENTIVE-BASED APP EXECUTION}
점점 더 많은 사람들이 컴퓨터가 자신들을 이해하고 특정한 요구 사항과 상황에 맞춰진 개인화된 어시스턴스(personalized assistance)를 제공할 수 있게 하는 데 관심을 표하고 있다. 물론, 개인의 특정 요구 사항과 상황에 맞춰진 개인화된 어시스턴스를 제공하기 위해, 어시스팅 프로세스는 개인의 많은 측면, 즉, 그의 개인 정보를 주지해야 한다. 실제로, 프로세스가 개인의 더 많은 측면을 알수록, 프로세스는 개인에 대한 정보를 더 잘 개인화한다.
개인이 소유하는 가장 흔한 컴퓨팅 장치가 모바일 컴퓨팅 장치, 가령, 스마트폰, 태블릿 컴퓨팅 장치, 또는 이른바 "패블릿(Phablet)" - 스마트폰과 태블릿 컴퓨팅 장치의 하이브리드인 컴퓨팅 장치의 카테고리 - 이다. 일반적으로 말하면, 모바일 컴퓨팅 장치는 더 적은 처리 능력을 갖고 제한된 전력 자원으로 동작한다. 개인이 종종 많은 서비스 및 애플리케이션이 한 번에 데스크톱 컴퓨터 상에서 실행되게 할 수 있다고 믿을 수 있지만, 모바일 컴퓨팅 장치에서 이는 실현 가능하지 않다. 따라서 모바일 컴퓨팅 장치 상에서 실행 중인 서비스 및 앱(app)이, 특히, 개인화된 어시스턴스를 제공하는 상황에서, 관리되어야 한다.
본 개요는, 이하 상세한 설명에서 기재될 개념 중 선택된 것을 간략하게 소개하기 위해 제공된다. 본 개요는 청구되는 청구 대상의 핵심 특징 또는 본질적 특징을 나타내는 것이 아니며 청구되는 청구 대상의 범위를 제한하는데 사용되는 것도 아니다.
개시되는 청구 대상의 일 측면에 따르면, 모바일 컴퓨팅 장치 상에서 백그라운드 프로세스로서 실행되며 연관된 사용자에게 개인 어시스턴트를 제공하기 위한 개인용 데몬의 시스템 및 방법이 제공된다. 또한 모바일 컴퓨팅 장치 상에서는 스케줄링 관리자가 실행된다. 상기 개인용 데몬은 연관된 사용자를 대리하여 하나 이상의 개인 어시스턴스 액션을 실행한다. 스케줄링 관리자는 개인용 데몬을 보조하며 이벤트에 응답한다. 더 구체적으로, 이벤트 수신에 응답하여, 스케줄링 관리자가 수신된 이벤트에 응답하는 앱 세트를 결정하고 상기 앱 세트로부터 모바일 컴퓨팅 장치 상에서 실행될 적어도 제1 앱 서브세트를 식별한다. 상기 스케줄링 관리자는 제1 앱 서브세트의 실행된 앱의 유용성(usefulness)에 대한 피드백 정보를 수신하고 상기 제1 앱 서브세트의 각각의 앱의 연관된 점수를 업데이트한다.
개시되는 청구 대상의 추가 형태에서, 모바일 컴퓨팅 장치가 제공되며, 상기 모바일 컴퓨팅 장치는 상기 장치와 연관된 사용자에게 개인 어시스턴스를 제공하도록 구성된다. 상기 컴퓨팅 장치는 프로세서 및 메모리를 포함하고, 여기서 프로세서는 추가 구성요소와 함께 연관된 사용자에게 개인 어시스턴트를 제공하기 위한 인스트럭션을 실행한다. 이들 추가 구성요소는 개인용 데몬 및 스케줄링 관리자를 포함한다. 상기 개인용 데몬은 모바일 컴퓨팅 장치의 백그라운드에서 동작하고 연관된 사용자를 대리하여 하나 이상의 개인 어시스턴스 액션을 실행한다. 이 스케줄링 관리자는 이벤트의 통지를 수신하면, 상기 이벤트에 응답하여 앱의 세트를 결정하도록 구성된다. 또한, 스케줄링 관리자는 모바일 컴퓨팅 장치 상에서 결정된 앱 세트 중에서 제1 앱 서브세트를 식별 및 실행시킨다. 상기 제1 앱 서브세트는 앱 세트의 각각의 앱과 연관된 점수에 따라 결정/식별되며, 이 때, 제1 앱 서브세트는 지정 임계치를 충족하거나 초과하는 연관된 점수를 갖는 앱을 포함한다. 제1 앱 서브세트의 앱을 실행하는 것에 더해서, 상기 스케줄링 관리자는 모바일 컴퓨팅 장치 상의 실행된 앱의 유용성에 대한 피드백 정보를 획득한다. 이 피드백을 기초로, 상기 제1 앱 서브세트의 각각의 앱과 연관된 점수는 추가 참조되도록 업데이트된다.
개시되는 청구 대상의 지금까지의 형태 및 많은 이점이, 다음의 도면과 함께 다음의 기재를 참조할 때 쉽게 이해될 것이다.
도 1은 개인 어시스턴스/개인화를 복수의 가입자에게 제공하는 제3자 일체형 시스템에게 일반적인, (개인 정보로 액세스 크기의 증가에 비례해서) 증가되는 개인화의 함수로서 개인 정보 보안의 관계를 나타내는 예시적 그래프이다.
도 2는 개인용 데몬이 적절하게 구성된 컴퓨팅 장치가 동작할 수 있는 예시적 네트워크 환경을 나타내는 도면이다.
도 3은 동일 사용자와 연관된 복수의 컴퓨팅 장치를 포함하는 예시적 네트워크 환경을 나타내는 도면이다.
도 4는 개인용 데몬에 의해 개인 어시스턴스를 제공하도록 적절하게 구성된 예시적 컴퓨팅 장치를 나타내는 블록도이다.
도 5는 개시되는 청구 대상의 한 형태에 따르는 개인용 데몬의 예시적 처리 단계를 나타내는 블록도이다.
도 6은 개인용 데몬에 의해 개인 어시스턴스를 제공하기 위한 흐름도이다.
도 7은 연관된 사용자의 추가 개인 정보를 학습 및 이에 적응하기 위해 사용자 활동의 분석을 실시하기 위한 예시적 루틴을 나타내는 흐름도이다.
도 8은 개시되는 청구 대상의 한 형태에 따라 구성된 스케줄링 관리자의 예시적 구성요소를 나타내는 블록도이다.
도 9는 컴퓨팅 장치 상에서 앱을 실행하는 단순화된 패턴을 나타내는 도표이다.
도 10은 연관된 사용자를 대리하여 앱을 실행시키기 위한 예시적 루틴의 흐름도이다.
명료성을 위해, 본 명세서의 용어 "예시적"은 무언가의 실례 또는 예시로서 기능한다고 해석되어야 하고, 이러한 무언가의 이상적 및/또는 바람직한 실례로 해석되어서는 안 된다. 용어 "개인 정보"는 연관된 사용자의 정보, 데이터, 메타데이터, 선호, 행동뿐 아니라 사용자와 대화하기 위한 규칙에 대응한다. 일반적으로 말하면, 개인 정보는 연관된 사용자의 일부 형태를 나타내는 상기 사용자에 대한 정보이다. 개인 정보는 데이터, 예를 들어 (비제한적 예를 들면) 성별, 나이, 학력, 인구통계 데이터, 거주상태, 국적 등을 포함할 수 있다. 개인 정보는 또한 선호 및 관심, 전문분야, 능력 등을 포함할 수 있다. 또한 개인 정보는 개인 어시스턴스를 제공하는 데 연관된 사용자와 대화하기 위한 규칙(가령, 연관된 사용자에 의해 성립된 규칙뿐 아니라 이하에서 기재될 바와 같이 분석을 통해 학습 및/또는 추론된 규칙)을 포함할 수 있다.
용어 이벤트(event)는, 이하에서 기재되는 On{event} 프레임워크에 의해 수신 및 활성화될 때, 하드웨어 센서, 소프트웨어 인스트럭션, 원격 장치, 검출된 상태, 등으로부터 기인하는 실행 서비스(가령, On{event} 프레임워크)에 의해 수집된 것을 가리킨다.
개인화된 어시스턴스를 제공하는 한 가지 솔루션은, 전 세계에서 수집된 많은 양의 데이터를 수집, 저장, 조합(collate), 분석 및 조작하는 많은 컴퓨터 및/또는 프로세서를 배치함으로써, 많은 가입자에게 개인화된 어시스턴스를 제공할 수 있는 온라인 서비스를 형성하는 것일 수 있다. 이 일체형 모델(monolithic model)에서, 개인화된 어시스턴스 및/또는 추천을 수신하기를 원하는 가입자가 개인 정보의 다양한 아이템을 온라인 서비스로 제공하고, 일반적으로 온라인 서비스가 자신의 생활의 다양한 형태를 모니터하여 자신에 대한 추가 개인 정보를 학습할 수 있게 한다. 가입자가 행할 수 있는 거의 모든 활동(특히, 자신의 컴퓨터에 관한 활동)이 캡처 및 분석되어 추가 개인 정보를 식별할 수 있는데, 이들 활동의 비제한적 예를 들면, 온라인 행동, 구매, 선호, 소속(affiliation), 은행 정보 등이 있다. 그 후 온라인 서비스는 다양한 프로세스를 배포하여, 온라인 서비스가 수집하고 유지하는 가입자에 대한 축적된 개인 정보를 기초로, 개인화된 어시스턴스를 제공할 수 있다.
물론, 대량 일체형 온라인 서비스(monolithic online service)를 앞서 기재된 바와 같이 실행하는 것의 비용이 높다. 이러한 대형 온라인 서비스를 동작 가능하게 유지하기 위해, 온라인 서비스는 수입원(revenue stream)을 가져야 한다. 그러나 일반적으로 말하면, 가입자/개인은 무료 개인화된 어시스턴스를 원한다. 가입자에게 개인화 서비스에 대한 요금을 직접 청구하기보다는, 온라인 서비스가 가입자의 개인 정보를 수익화(monetize)하는 것에 의존한다. 이 수익화에 대한 일반적인 구절이 "광고-자금형(ad-funded)" 또는 "벤더-자금형(vendor-funded)"이다. 온라인 서비스는 (온라인 서비스가 자신의 가입자에 대해 수신하고 학습한 개인 정보에 의해 결정되는) 다양한 특성, 관심, 인구통계적 정보, 및 속성을 갖는 개인들을 식별하고, 광고주를 대신하여 광고를 이들 개인에게 배치함으로써 식별된 정보를 수익화함으로써, 자신의 가입자의 개인 정보를 수익화한다. 물론, 자신의 가입자와 관련된 광고를 판매하는 것이 (앞서 기재된) 일체형 온라인 서비스가 자신의 가입자의 개인 정보를 수익화할 수 있는 유일한 방식이다. 대안적으로, 온라인 서비스가 단순히 연락처 리스트 및/또는 정보만 판매할 수 있다.
종종 가입자는 빈번하게 표시되는 광고를 용인할 수 있는 만큼만 개인화된 어시스턴스를 받는 것을 좋아한다. 덧붙여, 가입자는 자신들의 개인 정보 중 얼마나 많은 부분을 온라인 서비스가 소유하고 수익화하며/제3자(가령, 광고주, 벤더, 기관 등)에게 노출시키는지에 대해 대부분 모르고 있고 이에 대해 매우 불편해 할 것이다. 물론, 온라인 서비스는 자신의 가입자에게 어떠한 해도 없을 것이라고 말함으로써 가입자들을 달랠 수 있지만, 온라인 서비스는 갈등을 겪는다: 온라인 서비스는 자신의 가입자의 개인 정보를 제3자에게 제공함으로써 (광고에 의한 것이든, 연락처 리스트를 판매하는 것이든 간에) 수익을 발생시킨다. 또한, 제3자에게 제공되는 개인 정보가 구체적일수록, 온라인 서비스에게 수익적 보답이 커진다. 불행히도, 노출되는 개인 정보가 구체적일수록, 노출된 개인 정보의 사람에게 남용 위험 및 가능성이 커진다.
물론 개인 정보를 알려진 제3자에게 노출하는 위험을 고려하지 않아도, 많은 가입자에 대한 상당한 개인 정보를 단순히 저장함으로써, 온라인 서비스는 신원 도용에 대한 유혹적인 타깃을 만든다. 따라서 개인화된 어시스턴스의 레벨이 개인에 대해 알려진 개인 정보의 양과 직접적으로 상관될 수 있지만, (개인 정보의 노출 위험 또는 오용에 의해 제기되는) 이 개인의 개인 보안이 또한 온라인 서비스가 소유하는 상기 개인에 대한 개인 정보의 양에 따라 달라진다. 도 1에 도시된 바와 같이, 이상적인 것은 높은 개인 보안(즉, 개인 정보의 보안)과 높은 개인화일 것이지만, 실제로 일체형 온라인 서비스에서, 개인화 레벨이 증가할수록 (개인 정보와 관련된) 개인 보안의 레벨이 감소한다.
일체형 온라인 서비스와 달리 개시되는 청구 대상의 일 측면에 따르면, 개인 소유의 컴퓨팅 장치 상에서 동작하는 개인용 데몬(personal daemon)이 제공된다. "데몬"은 컴퓨팅 장치 상에서 실행되는 실행 프로세스 또는 스레드(thread)로 정의되며, 컴퓨터 사용자의 직접 제어 하에서 실행되는 것이 아니라 컴퓨팅 장치의 백그라운드에서 실행된다. 그러나 데몬이 컴퓨팅 장치의 백그라운드에서 실행되더라도, 컴퓨터 사용자는 데몬과 대화할 수 있고, 대화를 통해 데몬의 활동을 지시할 수 있다. "개인용 데몬"은 개인화된 어시스턴스를 제공할 때 컴퓨터 사용자의 개인 정보를 획득, 추론, 유지, 및 적용하기 위한 액세스 권한을 갖는 데몬이다. 개인용 데몬은 연관된 사용자의 활동의 다양한 측면을 모니터하여 사용자에 대한 추가 개인 정보(이용 가능할 경우)뿐 아니라 사용자를 대리하여 행동할, 즉, 개인화된 어시스턴스를 사용자에게 제공하기 위한 추론 및 학습 규칙을 식별, 추론, 및/또는 학습할 수 있다. 나아가, 개인용 데몬은 사용자와의 다이얼로그(dialog) 및 그 밖의 다른 대화(interaction), 가령, 사용자에 대한 이전에 얻어진 추론을 확인하는 것, 사용자 선호 및 그 밖의 다른 개인 정보를 요청하는 것 등을 통해, 사용자에 대한 개인 정보, 특히 사용자를 대리하여 행동하기 위한 추론된 정보 및/또는 규칙을 학습 및/또는 확인할 수 있다.
"개인 어시스턴스(personal assistance)"라는 용어는, 개인용 데몬이 연관된 사용자에게 개인 어시스턴스를 제공하는 상황에서, 사용자를 대리하여 하나 이상의 동작을 수행하는 것으로 해석되어야 한다. 일반적으로, 반드시 그런 것은 아니지만, 개인 어시스턴스는 사용자의 현재 상황의 측면과 관련된 하나 이상의 이벤트에 의해 트리거된다. 비제한적 예로서, 개인 어시스턴스의 하나 이상의 동작은, 사용자에게 사용자가 특정 동작을 수행할 것을 추천하기, 사용자를 대리하여 데이터 획득 및/또는 서비스, 사용자 활동의 분석으로부터 추론된 개인 정보를 사용자에게 확인받기, 사용자를 대리하여 개인용 데몬이 행동을 취할 권한을 사용자에게 확인받기, 하나 이상의 이벤트에 대한 통지를 사용자에게 제공하기, 현재 사용자 활동의 대안을 제공하기, 장소 추천하기, 컴퓨팅 장치 상에서 사용자를 대리하여 동작을 실행하기, 대안 및/또는 관련 활동 또는 아이템 추천하기 등을 포함한다. 이하에서 더 상세히 설명될 바와 같이, 개인용 데몬은 규칙, 사용자의 개인 정보, 및/또는 사용자의 현재 상황을 기초로 사용자에게 개인 어시스턴스를 제공한다.
가입자의 개인 정보를 수집하고 수익화하는 일체형 온라인 서비스 옵션과 달리, 개시되는 청구 대상의 형태에 따르면, 개인용 데몬은, 사용자에 의해 명시적으로 명시된 경우를 제외하면, 연관된 사용자의 개인 정보를 그 밖의 다른 제3자 개체와 공유하지 않는다. 제3자 개체는 연관된 사용자를 갖지 않거나 및/또는 연관된 사용자에만 대응하지 않는 임의의 개체에 해당한다.
개시되는 청구 대상의 다양한 실시예에 따르면, 개인용 데몬은 사용자의 이익만을 위해 사용자의 컴퓨팅 장치 상에서 동작한다. 바람직하게, 개인용 데몬은 자신의 동작을 뒷받침하기 위해 또는 외부의 제3자 개체의 그 밖의 다른 목적으로 사용자의 개인 정보를 수익화할 필요성과 충돌하지 않는다. 따라서 개인용 데몬은 사용자에 의한 친밀한 신뢰의 위치를 즐기고 사용자의 컴퓨터 기반 연장으로 관찰될 수 있다. 실제로, 연관된 사용자는 관계를 "우리(we)" 관계, 즉, 나와 내 개인용 데몬의 관계로 지칭할 수 있다. 이러한 높은 신뢰 레벨의 결과로서, 사용자는 개인용 데몬에게 연관된 사용자 및 모바일 장치의 사용과 관련된 모든 정보, 가령, 개인 및/또는 비밀 정보로의 더 큰 액세스 권한을 제공하는 데 더 호의적이다. 예를 들어(비제한적 예시로서), 개인용 데몬이 연관된 사용자의 개인 정보를 타자와 공유하지 않기 때문에, 사용자는 개인용 데몬으로 하여금 사용자의 전자메일을 읽기/스캔하는 것, 소셜 네트워크 상에서의 사용자의 대화를 액세스 및 모니터링하는 것, 사용자의 온라인 구매 내역을 추적하는 것, 사용자의 비밀번호를 유지하는 것, 모바일 장치 상에서 모든 파일 및 데이터 스트림을 분석하는 것 등을 기꺼이 허용할 수 있다. 연관된 사용자에게 이러한 높은 수준의 신뢰감을 일으키고, 더 높은 정도의 개인 정보로의 액세스를 획득함으로써, 개인용 데몬은 사용자에게 제공될 수 있는 개인화된 어시스턴스의 레벨을 향상시킨다. 이하에서 더 상세히 제공되겠지만, 개인 정보에 대한 향상된 액세스 레벨을 기초로, 연관된 사용자의 선호 및 선택을 추론하며, 특정 환경에서의 행동의 규칙을 학습하고, 또한 이들 추론을 검증하는 풍부화 사이클(enrichment cycle)을 통해, 개인용 데몬은 연관된 사용자의 개성(personality)을 반영하고 무료 개인 어시스턴스를 제공하는 연관된 사용자의 연장이 된다. 실제로, 개인용 데몬은 "성장"하는 동안, 더 친숙해지고, 연관된 사용자에 대해 더 상세히 이해하고 파악하며, 개인 어시스턴스를 더 잘 제공할 수 있다.
도 2로 돌아와서, 도 2는 개시되는 청구 대상의 한 형태에 따라 적합하게 구성된 컴퓨팅 장치가 개인용 데몬과 함께 동작할 수 있는 예시적 네트워크 환경(200)을 나타내는 블록도이다. 더 구체적으로, 네트워크 환경(200)은 개인용 데몬(204)을 호스팅하는 데 적절하게 구성한 사용자의 컴퓨팅 장치(202)를 포함한다. 개인용 데몬(204)은 컴퓨팅 장치(202) 상에서 개인/사용자(201)를 대리하여 실행되어 사용자에게 개인 어시스턴스를 제공할 수 있다. 자명한 바와 같이, 개인용 데몬(204)과 함께 구성될 수 있는 적합한 컴퓨팅 장치의 비제한적 예를 들면, 태블릿 컴퓨팅 장치, 가령, 태블릿 컴퓨팅 장치(202), 스마트폰 장치(도시되지 않음), 이른바 "패블릿" 컴퓨팅 장치(즉, 일반적인 태블릿 컴퓨팅 장치와 스마트폰 장치의 기능을 가로지르는 컴퓨팅 장치), 랩톱 컴퓨터, 데스크톱 컴퓨터, 웨어러블 컴퓨팅 장치, PDA 등이 있다.
네트워크 환경(200)이 또한 사용자의 컴퓨팅 장치(202)가 네트워크 액세스 가능형 장치 및/또는 네트워크에 연결된 온라인 서비스, (비제한적 예를 들면) 하나 이상의 다른 사용자 컴퓨팅 장치, 가령, 사용자(211)와 연관된 컴퓨팅 장치(212), 소셜 네트워킹 사이트, 가령, 소셜 네트워킹 사이트(218), 온라인 네트워크 서비스, 가령, 검색 엔진(216), 쇼핑 및/또는 상업 사이트, 가령, 쇼핑 사이트(214) 등과 (구성요소, 애플리케이션, 앱 등에 의해) 통신 및 이를 액세스할 수 있도록 하는 네트워크(210)를 포함한다.
개시되는 청구 대상의 한 형태에 따르면, 개인용 데몬(204)은 "클라우드의 경계" 상에서 동작하도록 구성되는데, 즉, 개인용 데몬은 네트워크(210)로의 연결성 여부와 무관하게, 사용자의 컴퓨팅 장치(202) 상에서 동작한다. (컴퓨팅 장치(202)의 네트워크로의 연결을 통해) 네트워크(210)로의 연결성이 이용 가능할 때, 컴퓨팅 장치 상에서 실행 중인 개인용 데몬(204)은 사용자(201)에게 개인 어시스턴스를 제공하는 데 사용되기 위한 데이터 및 서비스를 액세스할 수 있다.
많은 사용자가 둘 이상의 컴퓨팅 장치를 갖는다는 것을 용이하게 이해할 것이다. 실제로, 사용자가, 예를 들어, 스마트 폰, 태블릿 컴퓨팅 장치, 랩톱 컴퓨터, 및/또는 데스크톱 컴퓨터를 갖는 것이 일반적이다. 따라서 개시되는 청구 대상의 한 형태에 따라, 컴퓨팅 장치, 가령, 컴퓨팅 장치(204) 상에서 동작하는 개인용 데몬이 연관된 컴퓨터 사용자(201)에 대한 개인 정보를 "형제" 개인용 데몬, 즉, 또 다른 컴퓨팅 장치 상에서 동작 중인 동일 사용자와 연관된 개인용 데몬과 공유하도록 구성될 수 있다. 다시 말하면, 개인용 데몬은 자기 자신의 연장이기 때문에, 제1 컴퓨팅 장치 상에의 개인용 데몬의 하나의 구현에 의해 유지되는 개인 정보가 또 다른 장치 상의 개인용 데몬(형제 개인용 데몬)의 또 다른 구현과 모든 개인 정보를 공유할 수 있다. 또한, 이하에서 언급될 바와 같이, 형제 개인용 데몬은 연관된 사용자에게 개인 어시스턴스를 제공하는 데 협업하도록 구성될 수 있다.
도 3은 동일한 사용자(301)와 연관된 복수의 컴퓨팅 장치(302 및 306)를 포함하는 예시적 네트워크 환경(300)을 나타내는 도면이다. 도시된 바와 같이 각각의 컴퓨팅 장치(302 및 306)는 개인용 데몬(304A 및 304B)을 갖도록 구성된다. 이들 개인용 데몬(304A 및 304B)은 동일한 사용자(301)와 연관되기 때문에, 형제 개인용 데몬이다. 형제 개인용 데몬으로서, 이들은 (사용자(301) 권한에 따라) 연관된 사용자의 개인 정보를 서로 공유하거나, 캐싱된 데이터를 공유하거나, 및/또는 사용자 행동 분석을 배포하여 개인 정보 등을 식별할 수 있다. 데이터, 정보 및 활동의 공유는 분배 방식으로, 즉, 컴퓨팅 장치 상의 데이터 중 일부를 제1 형제 개인용 데몬에게 호스팅하고, 모니터링된 사용자 이벤트의 처리를 대응하는 분석 등을 실시할 수 최상의 능력을 갖는 형제 개인용 데몬에게 분담시킴으로써 이뤄지는 공유를 포함할 수 있다. 형제 개인용 데몬들 간 상호통신이 필요 시에(즉, 적시(just-in-time)에), 스케줄링된 간격을 두고, 사용자로부터 명시적 인스트럭션이 있을 때 등에, 발생할 수 있다. 물론, 처리 능력, 대역폭, 파워 레벨, 데이터 액세스 등의 고려사항이 작업을 형제 개인용 데몬들 간에 분배하는 데 고려될 수 있지만, 이들 고려사항은 유일한 개인용 데몬이 사용자의 활동의 분석을 수행하고, 사용자의 개인 정보에 대한 추론을 생성하며, 다양한 이벤트 및 링크에 응답하기 위한 규칙을 결정하는 데 사용될 수 있다. 실제로, 개인용 데몬(204)은 사용자의 컴퓨팅 장치에 최소한의 영향을 미치도록 구성(또는 자가 구성)될 수 있다.
도 4를 참조하면, 도 4는 개인용 데몬에 의해 개인 어시스턴스를 제공하도록 적절하게 구성된 예시적 컴퓨팅 장치(400)를 나타내는 블록도이다. 예시적 컴퓨팅 장치(400)는 시스템 버스(410)에 의해 상호 연결된 프로세서(402)(또는 처리 유닛) 및 메모리(404)를 포함한다. 자명한 바와 같이, 메모리(404)는 일반적으로(항상은 아님) 휘발성 메모리(406)와 비휘발성 메모리(408)를 모두 포함한다. 휘발성 메모리(406)는 메모리에 전력이 공급되는 한 정보를 유지 또는 저장한다. 이와 달리 비휘발성 메모리(408)는 전력 공급이 없을 때라도 정보를 저장(또는 유지)할 수 있다. 일반적으로 말하면, RAM 및 CPU 캐시 메모리가 휘발성 메모리(406)의 예시이며, 반면에 ROM, 솔리드-스테이트 메모리 장치, 메모리 저장 장치, 및/또는 메모리 카드가 비휘발성 메모리(408)의 예시이다.
프로세서(402)는 다양한 기능, 특히, 연관된 사용자에게 개인 어시스턴스를 제공하는 개인용 데몬(204)을 실행하는 것과 관련된 다양한 기능을 수행하는 데 메모리(404)로부터 검색된 인스트럭션을 실행한다. 프로세서(402)는 임의의 다양한 상용화된 프로세서, 가령, 싱글-프로세서, 멀티-프로세서, 싱글-코어 유닛, 멀티-코어 유닛을 포함할 수 있다. 덧붙여, 당업자라면 개시되는 청구 대상의 신규한 형태가 그 밖의 다른 컴퓨터 시스템 구성, 비제한적 예를 들면, 개인 디지털 어시스턴스, 웨어러블 컴퓨팅 장치, 스마트폰 장치, 태블릿 컴퓨팅 장치, 패블릿 컴퓨팅 장치, 랩톱 컴퓨터, 데스크톱 컴퓨터 등과 함께 실시될 수 있음을 알 것이다.
시스템(410)은 모바일 장치의 다양한 구성요소가 상호통신하기 위한 인터페이스를 제공한다. 시스템 버스(410)는 다양한 구성요소(가령, 내부 구성요소와 외부 구성요소 모두)를 상호연결할 수 있는 다양한 유형의 버스 구조 중 임의의 것일 수 있다. 컴퓨팅 장치(400)는 컴퓨팅 장치(400)를 다른 네트워크 액세스 가능 컴퓨터, 온라인 서비스 및/또는 네트워크 개체뿐 아니라 컴퓨터 네트워크(210) 상의 그 밖의 다른 장치와 상호연결하기 위한 네트워크 통신 구성요소(412)를 더 포함한다. 상기 네트워크 통신 구성요소(412)는 유선 연결, 무선 연결, 또는 둘 모두를 통해 네트워크(108)를 통해 다양한 컴퓨터 및 장치와 통신하도록 구성될 수 있다.
컴퓨팅 장치(400)는 또한 실행 가능 앱/애플리케이션(416)을 포함한다. 당업자라면 알다시피, 애플리케이션은 컴퓨팅 장치, 가령, 컴퓨팅 장치(400) 상에서 하나 이상의 작업을 (프로세서 상에서의 실행을 통해) 실행하는 실행 인스트럭션의 모음에 대응한다. 애플리케이션은, 반드시 그런 것은 아니지만, 일반적으로 컴퓨팅 장치의 사용자의 지시에 따라 실행된다. 애플리케이션은 (애플리케이션의 구성에 의해 지정되는) 다양한 작업을 수행하는 데 컴퓨팅 장치 상에서 이용 가능한 기능(feature)을 조합한다. 용어 "앱"은 애플리케이션의 줄임말로서 사용되지만, 또는 앱이 하나 이상의 작업을 수행하기 위한 실행 인스트럭션의 모음에 유사하게 대응한다. 그러나 애플리케이션과 달리, 앱은, 반드시 그런 것은 아니지만, 일반적으로 종종 좁은 주제/기능에 집중된 제한된 작업 세트와 관련된다. 일반적으로 앱의 범위가 애플리케이션의 범위보다 더 제한적이기 때문에, 앱은 일반적으로 시스템 자원과 관련된 더 작은 풋프린트만 요구하고 종종 제한된 자원의 컴퓨팅 장치에 의해 실행되기에 더 적합하다. 앱/애플리케이션(418)이 일반적으로 메모리(404)에 저장되지만, 단지 설명 목적으로, 메모리(404)와 분리되어 지칭된다.
예시적 컴퓨팅 장치(400)는 센서(418)를 더 포함한다. 일반적으로, 센서는 컴퓨팅 장치(400)에 대한 특정 이벤트를 감지하는 다양한 하드웨어 장치에 대응한다. 센서(418)는 비제한적 예를 들어, 가속도계, 햅틱 센서, 용량성 센서, 오디오 센서, 광 센서, 타이머, 온도 센서, 전력 센서(AC 또는 DC 센서, 전압 센서 등), 무선 신호 센서, 지리 측위 센서(geo-location sensor), 자기 센서, 고도계, 고도 센서(barometric sensor) 등을 포함할 수 있다. 센서는 통신 정보, 가령, 인터넷 라우팅 데이터, HTTP 요청/응답 검사, MAC 주소, 셀룰러/무선 삼각측량 등을 기초로 할 수 있다. 당업자에게, 적절하게 구성된 컴퓨팅 장치(400)는 하드웨어 센서(418)의 다양한 조합일 수 있음이 자명할 것이다. 또한 이들 하드웨어 센서뿐 아니라 소프트웨어 센서(이하에서 기재될 바와 같이)는, On{Event} 프레임워크를 통해 사용자 상황을 모니터링하는 데 사용된다.
예시적 컴퓨팅 장치(400)는 개인용 데몬 구성요소(420) 및 On{Event} 프레임워크(440)를 더 포함한다. 개인용 데몬(420)은 실행될 때 사용자에게 개인 어시스턴스를 제공하는 개인용 데몬(204)인 실행 구성요소이다. 도 4에 도시된 바와 같이, 개인용 데몬(420)은 다양한 기능을 수행하는 서브구성요소/모듈, 가령, 사용자의 현재 상황을 기초로 연관된 사용자에게 개인 어시스턴스를 제공하는 개인 어시스턴스 모듈(422)을 포함한다. 사용자 감지 모듈(424)은 On{Event} 프레임워크(440)와 인터페이싱하여 사용자의 현재 상황의 측면을 추적/감지할 수 있다. 데이터 분석 모듈(426)은 사용자 관련 정보를 분석하여 사용자에 대한 추론을 만들고 확인할 수 있는데, 예컨대, 사용자의 추가 개인 정보를 추론할 수 있다. 사용자 인터페이스 모듈(428)은 사용자가 컴퓨팅 장치(400) 상에서 개인용 데몬(204)과 대화할 수 있도록 하는 인터페이스를 제공한다. 개인용 데몬 구성요소(420)는 사용자에 대한 개인 정보뿐 아니라 그 밖의 다른 사용자 관련 정보를 개인용 데몬 데이터 저장소(430)에 유지한다.
On{event} 프레임워크(440)와 관련하여, 상기 On{event} 프레임워크("프레임워크")는 확장형 이벤트/액션 프레임워크, 즉, 하나 이상의 센서(가령, 센서(418)뿐 아니라 그 밖의 다른 애플리케이션, 앱, 서비스, 원격 신호 등의 이벤트)와 관련하여 발생하는 이벤트를 검출하고, 이에 응답하여 컴퓨팅 장치(400) 상에서 검출된 이벤트와 연관된 동작을 실행하는 프레임워크이다. 센서, 가령, 소프트웨어 센서가 추가될 수 있고, 가입자가 감지된 이벤트를 구독할 수 있다는 점에서 확장형이다.
개시되는 청구 대상의 한 형태에 따르면, 센서는 프레임워크(440)에 등록된다. 디폴트로, 또는 초기화 프로세스의 일부로서, 센서(418) 중 일부 또는 전부가 프레임워크(440)에 등록될 수 있다. 또한, 앱 및/또는 애플리케이션(가령, 앱/애플리케이션(416)이 소프트웨어 센서로서 프레임워크(440)에 등록될 수 있으며, 이때, 소프트웨어 센서는 자신이 시그널링할 이벤트(또는 이벤트들) 및 시그널링된 이벤트와 연관될 수 있는 데이터를 식별한다. 소프트웨어 센서는 퍼블리셔 인터페이스(448)를 통해 프레임워크(440)에 등록된다. 센서, 가령, 센서(418) 및 소프트웨어 센서는 센서 입력 인터페이스(442)를 통해 감지된 이벤트를 시그널링한다. 나타나는 바와 같이, 감지된 이벤트를 수신하면, On{event} 데이터 저장소(450)에서 성립될 때 규칙 실행자(rules executor)(444)가 컴퓨팅 장치(400) 상에서, 감지된 이벤트와 연관된 하나 이상의 액션을 실행한다. 앱 및 애플리케이션은 구독 인터페이스(446)를 통해 프레임워크(440)에서의 감지된/시그널링된 이벤트에 구독자로서 등록될 수 있다. 감지된 이벤트를 구독할 때, 앱 또는 애플리케이션뿐 아니라 컴퓨팅 장치(400) 상에서 실행되는 개인용 데몬(204)이 구독 앱, 애플리케이션, 또는 데몬이 통지 받기를 원하는 이벤트를 가리킨다.
On{event} 프레임워크(440)와 관련하여, 당업자라면 프레임워크를 구현하는 다양한 대안이 존재할 수 있음을 알 것이며, 하나의 실시예에서 프레임워크(440)는 Node.js 개발사의 Node.js 기법에 따라 구축된 백그라운드 서비스로서 구현된다. Node.js 기법은 확장 가능하고 강건해서 하드웨어 센서, 가령, 센서(418)뿐 아니라 소프트웨어 센서와 인터페이싱할 수 있다. 마찬가지로, 개인용 데몬 구성요소(420)는 Node.js 기법에 따라 구현될 수 있다. 앱 및 애플리케이션, 가령, 앱/애플리케이션(416)은 JavaScript® 코드에 의해 Node.js 프로세스와 인터페이싱한다. On{event} 프레임워크(440)와 개인용 데몬 구성요소(420) 모두 Node.js가 아닌 다른 기법을 이용해 구현될 수 있지만, Node.js가 호스트 컴퓨팅 장치, 가령, 컴퓨팅 장치(400) 상의 비교적 작은 풋프린트라는 이점을 갖고, 다양한 운영 체제 플랫폼 상에서 개발되기 위한 구성을 가지며, JavaScript® 프로그래밍 언어가 광범위한 지원이라는 이점을 갖기 때문에, 사용되는 것이 바람직할 수 있다.
예시적 컴퓨팅 장치(400)는, 스케줄링 관리자(460)를 더 포함한다. 이하에서 더 상세히 기재될 바와 같이, 스케줄링 관리자(460)는 앱 및 애플리케이션(416)뿐 아니라 컴퓨팅 장치(400)에게 가용하지만 또 다른 외부 장치 또는 서비스에 의해 분담될 수 있는 그 밖의 다른 서비스를 조화시킨다. 다양한 실시예에 따르면, 스케줄링 관리자(460)는 대양한 센서(418)로부터의 검출된 이벤트에 응답할 때, 그리고 개인용 데몬(420)이 연관된 사용자에게 개인화된 어시스턴스를 제공할 때 필요할 수 있는 상황 정보/인자, 서비스 및 데이터를 제공할 때, On{event} 프레임워크(420)와 함께 동작하거나, On{event} 프레임워크(420)의 일부로서 구현된다. 그 밖의 다른 대안적 실시예에서, 스케줄링 관리자(460)가 개인용 데몬(420)의 구성요소로서, 또는 개인용 데몬과 협업하여 독립적으로 구현될 수 있다.
예시적 컴퓨팅 장치(400)의 다양한 구성요소와 관련하여, 당업자라면 이들 구성요소가 컴퓨팅 장치의 메모리에 저장된 실형 소프트웨어 모듈로서, 하드웨어 모듈(가령, SoC(System On a Chip)로서, 또는 이 둘의 조합으로서 구현될 수 있음을 알 것이다. 덧붙여, 다양한 구성요소 각각은 하나 이상의 컴퓨터 시스템과 함께 동작하는 독립적인 협업적 프로세스 또는 장치로서 구현될 수 있다. 물론, 예시적 컴퓨팅 장치(400)와 관련하여 앞서 기재된 다양한 구성요소가 다양한 기재된 기능을 수행하기 위한 논리적 구성요소로서 간주되어야 한다. 당업자라면, 논리적 구성요소 및/또는 서브시스템이 실제 이산 구성요소에 직접, 1대1 방식으로 대응하거나 대응하지 않을 수 있음을 알 것이다. 실제 실시예에서, 각각의 컴퓨터 시스템의 다양한 구성요소가 함께 조합되거나 복수의 실제 구성요소에 걸쳐 분해되거나 및/또는 컴퓨터 네트워크 상에서 협업 프로세스로서 구현될 수 있다.
예시적 컴퓨팅 장치(400)에 대해, 개인용 데몬이 컴퓨팅 장치의 구성요소를 통해 연관된 사용자와 대화하도록 구성되지만, 일반적으로 말하면, 개인용 데몬은 컴퓨팅 장치의 임의의 특정 구성에 독립적이다. 실제로, 개인용 데몬은 임의의 적합한 컴퓨팅 장치 상에서 구현될 수 있으며, 디스플레이 구성요소 상의 디스플레이된 메시지, 텍스트 메시지, 오디오 및/또는 음성 통신, 햅틱 신호, 및 이들의 조합을 통해 통신할 수 있다.
하나의 컴퓨팅 장치 상에서 구현되거나 형제 개인용 데몬을 통해 복수의 컴퓨팅 장치에 걸쳐 구현되는 것에 추가로, 개인용 데몬은 연관된 사용자에게 개인 어시스턴스를 제공하거나 사용자 활동의 분석을 수행하여 사용자에 대한 추가 개인 정보를 학습 및/또는 추론할 때 다른 서비스 및/또는 프로세스와 공동 컴퓨팅 방식으로 협업적으로 동작하기 위해 공개 마스크(public mask)로서 더 구성될 수 있다. 그러나 개인용 데몬은 연관된 사용자의 승인에 따라 이러한 구성(공동 컴퓨팅)으로 동작하며, 연관된 사용자의 규칙에 따라 개인 정보를 공통 프로세스/서비스와 공유하는 데 제한적이다. 개시되는 청구 대상의 한 형태에 따르면, 연관된 사용자의 명시적 규칙에 따라, 개인 정보를 다른 제3자 개체(가령, 프로세스 및/또는 서비스)와 공유하는 것에 추가로, 개인용 데몬은 이들 다른 개체에게 공개되는 개인 정보가 무엇인지를 추적하도록 구성될 수 있다. 다른 개체에게로의 개인 정보의 공개를 추적할 때, 개인용 데몬은 연관된 사용자에게 공개된 것을 알려서, 사용자가 공개될 수 있는 개인 정보의 양에 대한 제한을 식별하도록 할 수 있다. 실제로 연관된 사용자는 개인용 데몬이 하나의 개체 또는 개체 세트에 의해 요청될 수 있는 임의의 추가 개인 정보를 모호화한 후 공개될 수 있는 개인 정보의 한계를 성립할 수 있다.
이제 도 5를 참조하면, 도 5는 사용자 관련 활동에 대한 개인용 데몬, 가령, 개인용 데몬(204)의 예시적 처리 단계를 나타내는 블록도(500)이다. 이들 처리 단계는 개인용 데몬에 대한 풍부화 사이클, 즉, 연관된 사용자에 대한 정보를 학습/추론하고, 그 후 정보에 연관된 사용자의 이익을 적용하는 프로세스를 나타낸다. 설명을 시작하기 위해, 개인용 데몬이 구독된 이벤트(501)의 통지를 수신한다고 가정할 수 있다. 비제한적 예를 들면, 이벤트는 사용자의 컴퓨팅 장치가 착신 전화 콜을 수신함을 가리키거나 연관된 사용자가 위치를 변경했음(컴퓨팅 장치 상의 측위 센서에 의해 감지됨)을 나타낼 수 있다.
구독된 이벤트(501)의 통지를 수신하고 이벤트와 연관된 정보에 따르면, 원(502)에 표시된 바와 같이, 개인용 데몬은 이벤트와 관련해 연관된 사용자에게 개인 어시스턴스를 제공할지 여부를 결정한다. 이 결정은, 연관된 사용자의 현재 상황에 대한 정보, 가령, 사용자의 개인 정보뿐 아니라 이벤트와 상황의 특정 조합에 대해 이미 성립된 규칙을 기초로 한다. 예를 들어, 연관된 사용자가 현재 직장에 있고 개인용 데몬 데이터 저장소(432)의 규칙 및 개인 정보에 따라 사용자의 스마트-폰/컴퓨팅 장치의 지리적 위치에 관해 수신된 이벤트에 따라 개인용 데몬이 이를 안다고 가정할 수 있다. 덧붙여, (개인용 데몬이 추론, 사용자로부터의 명시적 지시, 또는 이 둘의 조합을 통해 학습했음을 규정하는) 규칙으로서, 사용자는 일반적으로 직장에 있는 동안 자신의 스마트-폰으로 전화를 받지 않는다. 그러나 연관된 사용자가 점심시간 동안의 전화 또는 특정 개인(가령, 배우자)으로부터의 전화를 받을 것이라고 개인용 데몬에 의해 (다시 말하면 추론, 명시적 지시 또는 이 둘 모두에 의해) 또 다른 규칙이 성립된다. 따라서 원(502)에서, 구독된 이벤트(502)가 착신 전화 콜에 대한 것일 때, 개인용 데몬은 사용자에 대한 규칙 및 사용자의 현재 상황에 따라 이벤트를 수신하고 개인 어시스턴스를 사용자에게 제공한다. 따라서 이벤트와 연관된 정보가 착신 전화 콜이 지인으로부터 온 것이라고 나타내는 경우, 내부 규칙에 따라 개인용 데몬(204)은 착신 전화 콜을 응답 서비스(answering service)로 즉시 전환할 수 있다. 다른 방안으로, 이벤트(501)와 연관된 정보가 착신된 전화 콜이 배우자로부터 온 것이라고 나타내는 경우, 개인용 데몬(204)은 착신 콜이 사용자의 스마트 폰에서 울리게 함으로써, 연관된 사용자에게 개인 어시스턴스를 제공할 수 있다.
개인 어시스턴스를 즉시 제공하는 것에 더해서, 원(504)에 표시되는 바와 같이 개인용 데몬(204)의 또 다른 부분은 사용자 정보 데이터 저장소(503)에 수신된 이벤트(501)에 대한 정보/데이터를 레코딩한다. 개시되는 청구 대상의 한 형태에 따르면, 개인용 데몬(204)은 사용자 및 사용자 활동과 연관된 이벤트, 상황, 데이터를 레코딩 및 로그기록한다. 그 후 원(506)에 표시된 바와 같이, 이 정보는 사용자에 대한 추가 개인 정보에 관해 학습 및 추론을 할 때, 그리고 또한 다양한 이벤트 및 상황에 대해 사용자에게 개인 어시스턴스를 제공하기 위한 규칙을 학습할 때, 사용자 정보의 분석에서 차후 사용된다. 이 학습 활동은 도 7의 루틴(700)에 대해 이하에서 설명된다. 물론, 이벤트 정보는 사용자 정보 데이터 저장소(503)에 저장된 유일한 데이터는 아니다. 개인용 데몬(204)은, 이의 신뢰받는 위치 때문에, 다른 앱, 애플리케이션, 온라인 활동 등과 관련된 사용자 활동을 모니터하여 추가 개인 정보를 획득할 수 있다. 제출된 검색 질의, 브라우징 히스토리, 소셜 네트워크 사이트 대화, 검색된 뉴스 기사 등이 사용자 정보 데이터 저장소에 레코딩되어, (원(506)에 표시된 바와 같이) 분석 활동이 페르소나(persona) 데몬이 연관된 사용자에 대해 유지하는 개인 정보를 정제 및 증강할 수 있다. 사용자 정보 데이터 저장소(503)가 개인용 데몬 데이터 저장소(432)로부터 분리된 개체로 도시되어 있지만, 이는 예시적인 것으로, 개시되는 청구 대상에 대한 한정으로 해석되어서는 안 된다. 다양한 실시예에 따르면, 사용자 정보 데이터 저장소(503)는 개인용 데몬 데이터 저장소(432)의 일부이다.
원(506)으로 표시되는 분석 활동에서, 개인용 데몬(204)은 연관된 사용자에 대해 사용자 정보 데이터 저장소(503)에서 발견되는 바와 같은 정보뿐 아니라 개인용 데몬 데이터 저장소(432)에서 연관된 사용자에 대해 알려진 개인 정보의 관점에서, 분석한다. 분석 활동은 신경 네트워크, 머신 학습 모델, 패턴 인지 등을 이용해, 연관된 사용자에 대한 정보를 추론할 수 있다. 분석 활동은 다양한 추론을 얻는 것과 반드시 동기화될 필요는 없는 확인 다이얼로그(confirmation dialog)를 통해, 연관된 사용자에 의해 자신의 추론을 더 검증할 수 있다. 추론은 정적 개인 정보(가령, 연관된 사용자의 직장, 소셜 네트워킹 사이트의 사용자의 사용자명/비밀번호 등) 또는 동적 개인 정보(가령, 특정 이벤트에 응답하기 위한 규칙 등)을 포함할 수 있다. 분석의 결과를 기초로, 연관된 사용자에 대한 개인 정보가 개인용 데몬 데이터 저장소(432)에서 정제 및/또는 증강된다. 확인 다이얼로그에 대해, 이 "다이얼로그"가 종종 "다이얼로그" 또는 "다이얼로그 컨트롤"이라고 지칭되는 사용자-인터페이스 컨트롤을 포함할 수 있지만, 실제로, 다이얼로그는 인간-개인 어시스턴스 대화의 임의의 여러 형태를 취할 수 있으며, 비제한적 예로서, 음성 인스트럭션, 및/또는 확인, 햅틱 피드백, 제스처 등이 있다.
원(506)에 표시된 바와 같이 분석 활동이 종종 연관된 사용자와의 확인 다이얼로그를 포함할 것이라는 것을 이해할 것이다. 일반적으로, 추론은 일부 신뢰 수준과 연관된다. 분석 활동이 준 확실성의 신뢰도를 갖는 추론을 발생시키는 경우를 제외하고, 개인용 데몬은 종종 확인형 다이얼로그로 사용자와 대화할 필요가 있을 것이며, 이때, 개인 정보의 추론이 사용자에게 확인 또는 거절을 위해 표시된다. 연관된 사용자가 일하는 위치를 결정하는 예시와 관련하여, 제1 추론에서, 개인용 데몬이 다이얼로그, 가령, "이 곳이 당신의 직장 위치입니까?"로 연관된 사용자의 주의를 끌 수 있다. 연관된 사용자는 추론을 확인 또는 거절할 수 있다. 예를 들어, 연관된 사용자는 추론된 위치가 직장이 아니고 연관된 사용자의 학교 위치일 수 있음을 가리킬 수 있다. 확인 다이얼로그 및 추론된 개인 정보 및 규칙의 명시적 리뷰를 통해, 사용자는 자신의 개인 정보에 대한 완벽한 제어를 경험한다.
사용자에 대한 추가 개인 정보의 학습/추론의 일부 또는 이의 결과로서, 그리고 연관된 사용자에게 개인 어시스턴스를 제공하는 것의 일부로서(원(502)), 개인용 데몬은 사전전 조치(proactive step)를 취하는데, 가령, 사용자와 관련될 수 있는 데이터를 다운로딩한다. 예를 들어, 연관된 사용자의 직장 위치를 학습하는 것의 일부로서 그리고 사용자가 특정 요리를 좋아한다는 사용자에 대한 개인 정보를 기초로, 개인용 데몬은 미래에 참조되도록 사용자의 직장 주위의 레스토랑 정보를 사전적으로 다운로딩할 수 있다. 연관된 사용자의 직장 및 통근 습관에 대한 개인 정보를 기초로, 개인용 데몬은 규칙을 타이머 이벤트와 연관시켜 통근을 위한 교통 상황을 체크하고, 열악한 통근 상태가 존재할 때 사용자에게 추천안을 제공할 수 있다.
개인용 데몬(204)이 일체형 온라인 서비스에 비해 갖는 특별한 이점은 개인용 데몬이 연관된 사용자에 관한 데이터만 유지할 필요가 있다는 것이다. 연관된 사용자와 관련된 지도, 레스토랑, 이벤트 일정표 등뿐 아니라 레코딩 사용자 관련 정보, 가령, 검색 질의, 브라우징 히스토리, 소셜 네트워킹 프로파일 등이 많은 사용자에게 서비스될 모든 정보를 캡처하고 저장하는 것보다 상당히 적은 저장 용량을 필요로 한다. 실제로, 사용자와 관련성이 있을 수 있는 정보의 양이 상당하지만, 현재 컴퓨팅 장치의 용량을 고려하면, 이러한 정보를 컴퓨팅 장치에 유지하는 것이 관리할 만하다. 또한, 개인용 데몬이 "클라우드의 경계"에 위치하기 때문에, 정보가 현재 이용 가능하거나, 임시 정보이거나, 호스트 컴퓨팅 장치의 용량을 넘어서지 않는 한, 개인용 데몬(204)은 이러한 정보를 온라인으로 액세스할 수 있다. 예를 들어, 연관된 사용자의 통근과 관련된 교통 정보를 획득하는 앞서 언급된 예시에서, 개인용 데몬은 사용자 정보 데이터 저장소(503)에서 정보를 불러오고 저장하는 것 대신 외부 소스로부터 교통 정보를 액세스하도록 구성될 수 있다.
앞서 개시된 바와 같이, 개인용 데몬(204)은 사용자에 의해 명시적으로 개시된 경우를 제외하고, 연관된 사용자에 대한 개인 정보를 다른 개체와 공유하지 않는다. 예를 들어, 사용자는 비밀번호를 제공함으로써 사이트로의 액세스가 획득되는 소셜 네트워킹 사이트에 가입할 수 있다. 또한, 개인용 데몬은 특정 사용자에 의해 소셜 네트워킹 사이트 상에 콘텐츠가 포스팅될 때마다 연관된 사용자에게 통지를 제공하기 위한 규칙을 성립할 수 있다. 개인용 데몬(204)이 타이머 규칙을 연관시켜 이러한 포스트에 대해 소셜 네트워킹을 주기적으로 체크하여 정보를 액세스할 수 있지만, 개인용 데몬은 액세스를 획득하기 위해 사용자의 비밀번호 및 계정 정보를 사이트에 제공할 필요가 있을 것이다. 물론 이 활동은 사용자의 개인 정보를 누설하는 것이다. 그러나 개인용 데몬에 의해 성립된 규칙을 기반으로 그리고 연관된 사용자에 의한 명시적 또는 추론된 인가에 따라, 개인용 데몬은 사용자에게 개인 어시스턴스를 제공할 때 개인 정보를 누설할 권한을 가질 수 있다. 물론, 개인용 데몬(204)이 사용자에게 개인 어시스턴스를 제공할 때 자신의 효율을 개선함으로써, 개발된 패턴 및 신뢰 레벨을 기초로 신뢰도가 높을 때 개인용 데몬이 사용자를 대리하여 액션을 수행할 수 있다.
물론, 상기의 예시에서, 네트워킹 사이트가 사용자에 대한 특정 개인 정보, 가령, 사용자 선호, 인구통계 정보, 지리적 정보 등을 캡처할 수 있다. 덧붙여, 네트워킹 사이트가 또한 벤더-자금형이어서, 사이트를 액세스할 때 광고가 사용자에게 표시될 수 있다. 그렇다면, 이는 개인용 데몬(204)이 연관된 사용자에 대한 개인 정보를 공유하지 않지만, 연관된 사용자는 개인 정보의 공개를 통해 벤더-자금형일 수 있는 사이트, 가령, 일체형 온라인 사이트를 액세스 및 이 사이트와 대화하는 것에 제한 받지 않는다.
도 6은 사용자 관련 이벤트에 응답하여 연관된 사용자에게 개인 어시스턴스를 제공할 때 개인용 데몬(204)에 의해 구현되는 예시적 루틴(600)을 나타내는 흐름도이다. 블록(602)에서 시작하며, 여기서 개인용 데몬(204)은 구독된 이벤트(501)의 통지를 수신한다. 앞서 제안한 바와 같이, 구독된 이벤트는 하드웨어 및 소프트웨어 센서 모두에 의해 감지되는 복수의 이벤트에 대응할 수 있다. 블록(604)에서, 개인용 데몬은 개인용 데몬 데이터 저장소(432)에 수신된 이벤트에 대응하는 개인 어시스턴스 규칙에 대해 문의한다. 결정 블록(606)에서, 수신된 이벤트와 관련된 어떠한 규칙이 존재하는지 여부에 대한 결정이 이뤄진다. 수신된 이벤트(501)와 연관된 어떠한 규칙도 없는 경우, 루틴(600)이 종료된다. 이와 달리, 수신된 이벤트(501)와 연관된 규칙이 존재하는 경우, 루틴(600)은 블록(608)으로 진행된다.
블록(608)에서, 개인용 데몬이 수신된 이벤트와 관련하여 취해지는 개인 어시스턴스 동작을 식별한다. 결정 블록(610)에서, 어떠한 액션도 취해지지 않는 경우, 루틴(600)이 종료된다. 그러나 취해질 액션이 있는 경우, 블록(612)에서, 액션이 현재 제약사항에 따라 구성된다. 전반적으로, 현재 제약사항에 따라 액션을 구성하는 것은 연관된 사용자의 현재 상황에 따라 액션의 실행을 적응시키는 것을 포함한다. 액션을 적응시키는 것에 대한 개인화 규칙은 개인용 데몬 데이터 저장소(432)로부터의 현재 상황에 대해 결정될 수 있다. 예를 들어, 수신된 이벤트가 연관된 사용자의 일반적인 퇴근 루트에서의 교통 혼잡에 대한 것인 경우, 액션은 사용자에게 교통 혼잡을 통지하고 대안을 제시하는 것일 수 있다. 또한, 사용자의 현재 상황이 현재 회의에 참가 중이고 회의 동안은 긴급하지 않은 사항은 통지 받지 않아야 하는 것일 수 있다. 따라서 현재 제약사항에 따라 액션을 구성하는 것은 회의가 끝난 이후에 제안되는 대안 루트를 전달하는 것을 의미한다. 블록(614)에서, 블록(612)으로부터의 다양한 제약사항이 존재하는 경우 이에 따라, 구성된 액션이 실행된다. 그 후 루틴(600)은 종료한다.
앞서 제안한 바와 같이, 개인용 데몬의 신뢰되는 속성의 이점 중 하나는, 연관된 사용자의 개인 정보로의 액세스를 이용해 분석 활동(도 5의 원(506))을 통해 추가 개인 정보, 가령, 데이터와 행동 규칙 모두를 학습하여, 더 완전하게 사용자의 연장이 될 수 있다는 것이다. 도 7은 사용자 활동의 분석을 실시하여 연관된 사용자의 추가 개인 정보를 학습 및 이에 적응되기 위한 예시적 루틴(700)을 보여주는 흐름도이다. 블록(702)에서 시작하여, 사용자의 액션이 분석된다. 이 분석은 연관된 사용자의 현재 및 과거 정보 및 액션, 현재 성립된 규칙, 및 (개인용 데몬 데이터 저장소(430)에 개인용 데몬이 유지하고 있는) 사용자의 개인 정보를 기초로 이뤄진다.
블록(704)에서, 블록(702)의 분석 활동에 따라 하나 이상의 추론이 생성된다. 이 추론은 연관된 사용자의 추가 및/또는 정제된 개인 정보 및 사용자에게 개인 어시스턴스를 제공하기 위한 추가 및/또는 정제된 규칙을 생성한다. 본 명세서에 있어서, 연관된 사용자에 대한 추론을 생성한다는 것은, 사용자에 대한 정보, 개인 어시스턴스를 사용자에게 제공하기 위한 규칙 등을 추론하는 것에 대응한다. 앞서 개시된 바와 같이, 사용자에 대한 현재 및 과거의 다양한 이벤트 및 연관된 상황 및 이벤트에 대한 사용자의 대화 및 행동, 사용자의 개인 정보뿐 아니라, 사용자에게 개인 어시스턴스를 제공하기 위해 이전에 추론된 규칙을 기초로 추론이 이뤄진다. 당업자라면, 추론이 사용되어 특정 상황 또는 액션을 식별하거나, 후보 상태들에 걸친 확률 분포를 생성할 수 있음을 알 것이다. 추론은 확률적일 수 있으며, 즉, 추론은 데이터 및 이벤트의 고려를 기초로 특정 관심 상태에 대한 발생의 확률 즉 가능성(likelihood)과 연관될 수 있다. 추론 기법이 사용되어 더 높은 레벨의 이벤트, 가령, 레코딩된 이벤트의 세트 및/또는 알려진 또는 가정된 데이터로부터 개인 어시스턴스를 제공하기 위한 규칙을 생성할 수 있다. 따라서 추론에 의해, 관측된 이벤트 및/또는 저장된 이벤트 데이터의 세트로부터 새 정보 또는 액션/규칙이 구성될 수 있다. 바람직하게는, 추론은 시간상 근접 범위에서 반드시 상관되는 것은 아닌 이벤트들 및 데이터들 및/또는 하나 이상의 소스로부터 온 이벤트 및 데이터로부터 생성될 수 있다.
생성된 추론이 확률 추론으로서 결정된 것으로 가정하면, 결정 블록(706)에서, 생성된 추론이 충분히 "강력"하여, 연관된 사용자에 의해 확인받을 필요가 없는지 여부에 대한 결정이 이뤄진다. 하나의 예시적 실시예(비제한적 예시)에서, 동일한(또는 실질적으로 유사한) 이벤트, 상황, 및 데이터를 가정할 때 발생 가능성이 지정 임계 값, 가령, 95%로 추정된 발생 가능성을 초과하는 경우 충분히 강력하다. 대안적 실시예에서, 사용자에게 개인 어시스턴스를 제공하기 위해 분석 활동에서 생성된 사용자의 개인 정보 또는 규칙에 대한 모든 추론이 이행되기 전에 사용자에 의해 확인된다. 또 다른 대안예에서, 추론된 개인 정보 및 규칙의 이행 및 사용이, 확률적인 가능성이 지정 임계치, 가령, 75% 추정 발생 가능성을 초과할 때, 추가 확인에 따라 조건부로 발생할 수 있다.
하나 이상의 생성된 추론이 충분히 강력하지 않은 경우, 즉 모든 추론이 확인되어야 하는 경우, 블록(708)에서, 추론이 사용자에 의해 확인된다. 추론을 확인하는 것은 일반적으로 추론된 개인 데이터 및/또는 개인 어시스턴스를 제공하기 위한 규칙을 확인하기 위한 사용자 대화를 포함한다. 생성된 추론을 확인할 때, 추론을 위한 근거, 즉, 추론 도출의 기초가 된 이벤트, 개인 정보 및 상황이 사용자에게 제시될 수 있다. 모든 개인 정보(가령, 데이터와 개인 어시스턴스를 제공하기 위한 규칙 모두)가 개인용 데몬에 의해 유지될 것이기 때문에, 연관된 사용자가 이 데이터에 대한 완전한 제어를 가져서, 그는 이러한 개인 정보의 임의의 부분 및 전체 부분을 삭제, 수정, 확인할 수 있다. 이는 추론된 규칙이 사용자에 대한 개인 정보를 또 다른 서비스 또는 개체에게 공개하는 것과 관련될 수 있기 때문에 중요하며, 이 경우, 연관된 사용자가 이러한 데이터에 대한 제어(가령, 데이터의 전파 중단, 특정 상황에서의 공개 허락 등)를 발휘할 수 있는 것이 중요하다.
추론을 확인하는 것은 개인용 데몬과 연관된 사용자 간 (사용자 모바일 장치 상에서의) 다이얼로그를 포함할 수 있으며, 여기서, 개인용 데몬은 미확인 추론을 반복하여, 각각의 미확인 추론(아마도, 추론 발생의 근거와 함께)을 반복적으로 제사하고 사용자로부터 피드백, 가령, 수락, 수정, 결정 보류, 또는 거절을 요청한다. 이 다이얼로그 방식의 대안예로서, 또는 이 반복적 다이얼로그 방식에 더해서, 사용자에게 개인 어시스턴스를 제공할 때 미확인 추론이 사용될 수 있는 상태에서, 현재 이슈에서 미확인 추론과 특히 관련된 다이얼로그(즉, 모바일 장치 상에서 사용자에게 표시되는 것, 가령, 디스플레이 스크린 상에 정보 디스플레이, 오디오 표시, 사용자에게 임의의 방식으로 시그널링 하는 것 등)가 사용자에게 표시될 수 있다. 예를 들어, 개인용 데몬이 연관된 사용자가 자신의 집으로 퇴근할 준비 중임을 인지한다고 가정하면, 개인용 데몬으로부터 사용자에, 데몬이 사용자의 일반적인 퇴근 루트의 교통 상태를 체크함을 보이는 통지가 생성될 수 있다.
블록(710)에서, 생성된 추론을 확인한 후 또는 생성된 추론이 사용자가 확인할 필요가 없을 정도로 충분히 강력한 경우, 연관된 사용자의 개인 정보, 가령, 개인 어시스턴스를 제공하기 위한 데이터와 규칙 모두, 업데이트된다. 그 후 루틴(700)은 종료된다.
당업자라면, 사용자 활동 및 데이터의 분석, 사용자에 대한 추론의 생성 및 추론의 확인의 프로세스를 통해, 개인용 데몬이 지속적으로 스스로 적응시켜 더 개선된 개인 어시스턴스를 제공할 수 있다는 것을 용이하게 이해할 것이다. 이들 단계(분석, 추론, 확인, 그리고 물론 개인 어시스턴스를 통한 정보의 적용)를 지속적으로 적용함으로써, 개인용 데몬을, 연관된 사용자의 선호 및 습관을 반영하는 자기 자신의 연장이 될 때 반복적으로 정교하게 할 것이다.
루틴(600 및 700)뿐 아니라 이하에서 기재될 루틴(1000) 및 그 밖의 다른 프로세스에 대해, 이들 루틴/프로세스가 이산 단계로서 표현되지만, 이들 단계의 속성은 논리적으로 간주되어야 하고 특정 구현예의 임의의 실제 및/또는 이산 단계에 대응할 수도 있지만 대응하지 않을 수도 있다. 이들 단계가 다양한 루틴으로 표현되는 순서가 상기 단계들이 수행될 수 있는 유일한 순서로서 해석되어서는 안 된다. 덧붙여, 이들 루틴이 개시되는 청구 대상의 다양한 신규한 특징을 포함하지만, 그 밖의 다른 단계(나열되지 않음)가 루틴의 실행에서 수행되지 않을 수 있다. 또한, 당업자라면, 이들 루틴의 논리적 단계들이 서로 조합되거나 복수의 단계를 포함할 수 있음을 알 것이다. 루틴(600, 700, 및 1000)의 단계들은 병렬로 또는 직렬로 수행될 수 있다. 종종, 그러나 비배타적으로, 다양한 루틴의 기능이 도 4와 관련하여 기재된 바와 같은 컴퓨팅 장치 상에서 실행되는 소프트웨어(가령, 애플리케이션, 시스템 서비스, 라이브러리 등)로 구현된다. 다양한 실시예에서, 다양한 루틴 중 일부 또는 전부가 하드웨어 모듈, 비제한적 예를 들면, 컴퓨터 시스템 상의 시스템 온 칩, 특수 설계된 프로세서 및/또는 논리 회로 등으로 구현될 수 있다.
이들 루틴/프로세스는 루틴, 기능, 루핑 구조(looping structure), 선택문(selector), 가령, if-then 및 if-then-else 문, 배정, 수리 연산 등을 포함하는 실행 코드로 구현된다. 각각의 루틴의 정확한 구현이 다양한 구현 구성 및 결정, 가령, 프로그래밍 언어, 컴파일러, 타깃 프로세서, 동작 환경 및 링크를 기초로 한다. 당업자라면 이들 루틴에서 식별된 논리적 단계가 임의의 개수의 방식으로 구현될 수 있고, 따라서 앞서 제공된 논리적 기술이 유사한 결과를 달성하기 위해 충분히 가능함을 쉽게 알 것이다.
개시된 청구 대상의 많은 신규한 측면들이 애플리케이션(컴퓨터 프로그램이라고도 함), 앱(소규모, 일반적으로 단일 또는 좁은 목적의 애플리케이션), 및/또는 방법으로 구현되는 루틴으로 표현되지만, 이들 형태는 또한 컴퓨터 판독 가능 저장 매체라고도 하는 컴퓨터 판독 가능 매체에 의해 저장된 컴퓨터 실행 인스트럭션으로 구현될 수 있다. 당업자라면, 컴퓨터 판독 가능 매체가 차후에 불러와서 실행되기 위한 컴퓨터 실행 가능 인스트럭션을 호스팅할 수 있다는 것을 이해할 것이다. 컴퓨터 판독 가능 저장 장치 상에 저장된 컴퓨터 실행 가능 인스트럭션이 실행될 때, 다양한 단계, 방법 및/또는 기능, 가령, 다양한 루틴과 관련하여 앞서 기재된 이들 단계, 방법, 및 루틴을 수행한다. 컴퓨터 판독 가능 매체의 비제한적 예시로는, 광학 저장 매체, 가령, 블루레이 디스크, 디지털 비디오 디스크(DVD), 컴팩트 디스크(CD), 광 디스크 카트리지 등; 자기 저장 매체, 가령, 하드 디스크 드라이브, 플로피 디스크, 자기 테이프 등; 메모리 저장 장치, 가령, 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM), 메모리 카드, 썸 드라이브(thumb drive) 등; 클라우드 저장장치(즉, 온라인 저장 서비스) 등을 들 수 있다. 그러나 본 개시의 목적에서, 컴퓨터 판독 가능 매체는 반송파 및 전파된 신호는 명시적으로 포함하지 않는다.
개시된 청구 대상의 일 측면에 따르면, 대안적 솔루션을 통한 개인용 데몬의 사용을 통해 많은 기술적 이점이 실현된다. 이들 기술적 이점의 비제한적 예를 들면, 개인용 데몬이 "클라우드의 경계" 상에 위치하고 실행됨으로써, 원격 서비스와의 통신 시간이 제거되기 때문에, 개인 어시스턴스를 제공하는 데 걸리는 대기시간(latency)이 개선되며; 따라서 로컬 실행이 네트워크를 통한 대역폭 사용을 최소화하고; 개인용 데몬의 요소(가령, 개인 정보 결정 및 분석에 의한 추론)가 비-피크 처리 시간(non-peak processing time) 동안, 즉, 컴퓨팅 장치에 대한 사용자의 수요가 낮을 때 실행될 수 있고; 컴퓨팅 장치가 네트워크 연결성을 갖지 않을 때에도 개인 어시스턴스를 활성화할 수 있으며; 필요성의 예측을 기초로 네트워크 연결성의 시점에서 캐싱이 완료될 수 있는 정보의 선점적 캐싱을 이용할 수 있고; 개인용 데몬이 연관된 사용자 소유의 컴퓨팅 장치의 경계 내에서 동작하기 때문에 구현 비용이 낮고; 명시적 규칙이 없는 한 개인 정보가 타인과 공유되지 않기 때문에 상당히 개선된 데이터 보안을 제공하며; 제3자 감시 없이 개인 데이터 및 개인 어시스턴스의 사전(proactive) 증강을 제공할 수 있다는 점이 있다.
연관된 사용자에게 개인화된 어시스턴스를 제공하는 데 사용될 수 있는 가능한 앱, 애플리케이션, 및 서비스 모두의 경우, 개인용 데몬(204)이 일반적으로 제한적인 컴퓨팅 자원(가령, 처리 대역폭, 가용 전력, 편재 처리 부하, 자원의 가용성 등)을 갖는 모바일 컴퓨팅 장치, 가령, 컴퓨팅 장치(202) 상에서 구현될 때, 연관된 사용자에 대한 관련 데이터 또는 기능을 제공할 가능성이 가장 높은 이들 서비스(또는 앱 또는 애플리케이션)가 실행되어야 한다. 물론, 관련 데이터 또는 기능을 제공할 가능성이 가장 높은 모바일 컴퓨팅 장치 상의 서비스 또는 앱 또는 애플리케이션이 고정 세트가 아니다 - 렌더링된 서비스, 데이터, 및 기능성의 중요도가 현재 상황에 따라 달라질 수 있다. 예를 들어, 사용자의 출퇴근 시간 대 동안 그리고 사용자가 출퇴근을 하는 날에는, 연관된 사용자의 일반적인 출근 또는 퇴근 루트 상의 고속도로 혼잡도를 결정하는 서비스가 중요하다. 이들 서비스는 연관된 사용자가 출퇴근을 하지 않는 시간대 또는 연관된 사용자가 직장에 가지 않는 날에는 그다지 유용하지 않다. 그러나 연관된 사용자가 일반적으로 출퇴근을 하지 않는 날 또는 시간대에도, 개인용 데몬(204)은 연관된 사용자가 실제로 출근 중이라고 결정할 때, 고속도로 혼잡도를 결정하는 서비스를 실행하는 것이 자신이 개인화된 어시스턴스를 연관된 사용자에게 제공하는 데 유용할 것이다.
개시되는 청구 대상의 일 측면에 따라, 스케줄링 관리자(460)가 로컬 장치(가령, 모바일 컴퓨팅 장치(202) 및 형제 컴퓨팅 장치를 포함하는 원격 장치 모두 상에서, 앱, 애플리케이션, 및 서비스의 실행을 조화시킬 때(또는 더 적절히 말하자면, 서비스를 획득할 때) 사용된다. 스케줄링 관리자(460)는 현재 상황을 고려하여 유용한 데이터를 제공하도록 결정된 이들 앱(일반적으로 앱, 애플리케이션, 및/또는 서비스에 대해 사용됨)에게 향상된 점수로 보답하고, 현재 상황을 고려하여 유용한 데이터를 제공하지 않는다고 결정된 앱에게 하락된 점수로 페널티를 부과한다. 전반적으로 설명하면, 스케줄링 관리자(406)를 이용해, 낮은(하락된) 점수와 연관된 이들 앱과 동일하거나 유사한 상황 상태의 세트를 고려할 때 더 높은(향상된) 점수와 연관된 앱이 더 자주 실행된다.
앱이 유용한 데이터(또는 서비스 또는 기능)을 제공하는지 여부에 대한 결정은, 일반적으로 피드백 및 상황으로 분류될 수 있는 다양한 기준에 따라 행해진다. 피드백의 요소의 비제한적 예를 들면, 앱의 명시적 사용자 실행 및 사용자 실행의 빈도; 앱과 사용자의 대화의 유형 및 양; 개인용 데몬(204)에 의한 애플리케이션의 실행 및 실행의 빈도; 개인용 데몬에 의한 명시적 평가 피드백 등이 있다. 상황(context)은 아이템, 가령, 시간대, 요일, 날짜, 휴일 및 휴가 시즌, 지리적 위치, 현재 날씨 상태, 연관된 사용자가 회의에 현재 참석 중인지 여부, 연관된 사용자가 전화 회의 중인지 여부, 연관된 사용자가 운전 중이라고 결정됐는지 여부, 사용자 감정을 감지하도록 구성된 웨어러블 장치 등을 포함한다. 또한 상황은 상황 기준의 리스트 이상을 기초로 할 수 있다. 상황 아이템은 추론을 기초로 할 수 있다: 가령, 다른 이벤트와의 하나 이상의 앱의 동시 실행이 현재 "리스팅"되지 않은 상황 기준의 강력한 지시일 수 있다. 물론, 개인용 데몬(204)이 이들 추론을 식별하기 때문에, 상황 기준의 알려진 세트로의 추가가 증강될 수 있다. 스케줄링 관리자(460) 내에 있는(이와 같이 동작하는) 기계 학습 엔진에 의해 이들 기준은 평가된다. 실행된 앱(또는 서비스)를 식별하는 정보, 피드백 신호(둘 이상의 피드백 소스가 획득될 수 있음), 및 상황 정보가 머신 학습 엔진으로 제공되며 앱과 연관된 점수가 적절히 업데이트된다. 정보, 가령, 피드백 및 상황 정보가 미래에 참조되도록 실행되는 앱에 대한 정보와 함께 저장된다. 당업자라면, 신경 네트워크라고도 지칭되는 머신 학습 기법, 알고리즘, 및 시스템이 공지되어 있음을 알 것이다.
도 8을 참조하면, 도 8은 개시되는 청구 대상의 한 형태에 따라 구성된 스케줄링 관리자(460)의 예시적 구성요소를 나타내는 블록도이다. 개시된 바와 같이, 예시적 스케줄링 관리자(460)는 앱/서비스 실행자(804)를 포함한다. 상기 앱/서비스 실행자(804)는 컴퓨팅 장치(202)와 연관된 현재 상황을 획득, 예컨대, 타이머(802)로부터의 현재 날짜, 시간대, 일자, 및 요일을 획득할 수 있고 스케줄링 관리자(460)에 의해 관리되는 앱/서비스 데이터 저장소(808)에 저장된 앱, 애플리케이션 및 서비스로부터 실행될 초기 앱 세트를 결정할 수 있다. 앱/서비스 실행자(804)가 점수에 의해 주어지는 현재 상황 정보에 따라 앱(및 서비스)에게 명령한다. 추가로 앱/서비스 실행자(804)는 컴퓨팅 장치(202)의 현재 능력, (비제한적) 예를 들며, 장치의 처리 부하, 장치의 처리 능력, 컴퓨팅 장치의 전력 공급의 현재 용량, 네트워크 연결성의 가용성 및 대역폭, 앱을 실행하도록 요구되는 데이터/자원의 가용성 등에 대한 정보를 획득한다. 이 정보를 기초로, 앱/서비스 실행자는 초기 세트 중 제1 앱 서브세트를 식별하고 상기 제1 앱 서브세트 중 연관된 사용자에게 이로운 앱을 실행한다. 개시되는 청구 대상의 한 형태에 따르면, 이 제1 앱 서브세트의 앱의 개수는 0일 수 있으며, 이는 어떠한 액션도 현시점에서 이뤄지지 않음을 가리킨다. 개시되는 청구 대상의 추가 형태에 따르면, 현재 상황을 고려한 앱과 연관된 점수가 지정 임계치를 충족 또는 초과하는 경우 앱이 제1 앱 서브세트에 포함된다.
선택사항으로서, 컴퓨팅 장치(202) 상에서 실행될 제1 앱 서브세트를 식별하는 것에 추가로, 앱/서비스 실행자(804)는 초기 세트 중에서 다른 장치, 가령, 형제 컴퓨팅 장치, 가령, 형제 컴퓨팅 장치(206)에 의해 실행될 수 있고 로컬 컴퓨팅 장치(202)의 연관된 사용자(201)에게 이로울 제2 앱 서브세트를 식별할 수 있다. 이들은, 또한 연관된 사용자(201)를 대리하여 실행된다.
물론, 스케줄링 관리자(460)의 앱/서비스 실행자(804)는 제1 앱 서브세트 및 제2 앱 서브세트에 추가로, 다양한 다른 작업(가령, 앱, 서비스, 및/또는 로컬 컴퓨팅 장치 상에서 실행되는 다양한 데몬에 의해 제안되는 작업 - 서비스 처리라고도 지칭됨)으로 처리 자원을 추가로 할당할 수 있다. 실제로, 앱/서비스 실행자(804)는 이러한 처리 수요가 통상적인 앱 실행 수요를 벗어나는 경우에 특히 서비스 처리를 위해 예산 또는 시간을 할당할 수 있다. 예를 들어, 대량 데이터 세트의 분석 또는 마이닝이 상당한 처리를 필요로 하지만 백그라운드 서비스로서 수행되고 시간의 흐름에 따라 완료될 수 있다. 물론, 앱/서비스 실행자(804)가 서비스 처리를 위한 예산 산정에서 현재 처리 부하 및 수요를 고려할 수 있다.
앱을 실행시키는 것에 더해서, 앱/서비스 실행자(804)는 앞서 기재된 피드백을 모니터 및/또는 수신할 수 있다. 피드백의 비제한적 예를 들면, 앱의 명시적 사용자 실행 및 사용자 실행의 빈도; 앱과 사용자의 대화 유형 및 양; 개인용 데몬(204)에 의한 애플리케이션의 실행 및 실행 빈도; 개인용 데몬에 의한 명시적 평가 피드백 등이 있다. 상황은 아이템, 가령, 시간대, 요일, 일자, 지리적 위치, 연관된 사용자가 현재 회의에 참석 중인지 여부, 연관된 사용자가 전화 회의 중인지 여부, 연관된 사용자가 운전할 것이라고 결정됐는지 여부 등이 있다. 물론 앱의 실행의 피드백 및 상황(가령, 애플리케이션이 로컬하게 또는 원격으로 실행되었는지 여부)이 학습 엔진(806)으로 제공되며, 여기서 현재 상황을 고려한 실행된 앱과 연관된 점수가 적절하게 업데이트된다.
주어진 상황을 고려하여 앱의 점수를 업데이트함으로써, 스케줄링 관리자는 유용한 데이터, 기능 및/또는 서비스를 제공하는 앱에게 보답하고, 앱이 제공한 데이터, 기능 및/또는 서비스가 덜 유용할 때 앱에 패널티를 부과하며, 이 정보를 활용해 로컬 컴퓨팅 장치(202) 상에서의 앱의 실행을 효과적으로 관리할 수 있다. 일반적으로, 패턴이 앱의 실행에 관련하여 전개될 것이다. 도 9는 컴퓨팅 장치, 가령, 컴퓨팅 장치(202) 상에서 앱을 실행하는 단순화된 패턴(900)을 나타내는 도표이다. 설명 목적으로, 단순화된 패턴이 순환형이며 8개의 주기, P1-P8로 분할된다. 앱, 가령, 앱(App1-App22)이 다양한 주기 동안 실행된다. 단순화된 패턴(900)의 다양한 시간 주기에서 나타나는 앱들 중, 앱이 로컬하게 실행되는지 또는 원격으로 실행되는지에 대한 지시자가 나타난다. 설명 목적으로, 원격으로 실행되는 앱은 이중 외곽선으로 표시되어 있으며, 가령, 시간 주기 P1의 App2 또는 시간 주기 P2의 App5가 있다. 단순화된 패턴에서 나타날 수 있는 바와 같이. (스케줄링 관리자(460)에 의해 결정될 때) 앱이 로컬하게 실행되는 시간이 존재할 수 있고, 동일한 앱이 원격으로 실행되는 시간이 존재할 수 있다. 예를 들어, 시간 주기 P1 동안, 앱 App3은 로컬하게 실행되고(단일 경계선으로 표시됨), 반면에 동일한 앱이 시간 주기 P4 동안 원격으로 실행된다.
앞서 설명되고 도 9에 도시되는 바와 같이, 시간 주기에 따라 그리고 컴퓨팅 장치의 현재 상황에 따라 상이한 개수의 앱이 실행된다(또는 실행되지 않는다). 예를 들어, 시간 주기 P6-P8이 밤시간대와 상관된다고 가정하면, 연관된 사용자를 대리하여 실행될 앱의 개수가 사용자가 깨어 있는 시간대보다 상당히 낮다.
도 10을 참조하면, 도 10은 스케줄링 관리자(460)와 관련하여 앞서 기재된 바의, 사용자를 대리하여 앱을 실행하기 위한 예시적 루틴(1000)의 흐름도를 도시한다. 블록(1002)에서 시작하여, 스케줄링 관리자(460)는 이벤트의 통지를 수신하다. 상기 이벤트는 특정 시간(가령, 시간대, 요일, 또는 일자) 또는 컴퓨팅 장치 상의 하나 이상의 센서(418)로부터의 특정 이벤트에 대응할 수 있다. 블록(1004)에서, 검출된 이벤트와 연관되거나 이에 응답할 수 있는 앱 또는 현재 상황을 고려할 때 실행될 수 있는 앱에 대한 결정이 이뤄져서, 도 8과 관련하여 앞서 언급된 바와 같이 최초 앱 세트가 도출될 수 있다. 블록(1006)에서, 반복 루프가 시작되어 초기 앱 세트의 각각의 앱에 대해 반복될 수 있다. 이 반복의 일부로서, 블록(1008)에서, 현재 반복되는 앱에 대한 (현재 상황 및 이벤트를 고려한) 점수가 결정된다. 현재 반복되는 앱의 점수를 결정한 후, 루틴(1000)은 (블록(1006)으로 복귀하여) 반복하여 초기 앱 세트의 또 다른 앱에 대해 반복되거나, 점수를 부여할 앱이 더는 없는 경우 블록(1010)으로 진행된다.
블록(1010)에서, 제1 앱 서브세트가 결정된다. 앞서 언급된 바와 같이 이 제1 앱 세트는, 로컬 컴퓨팅 장치(202)의 현재 능력 관점에서 가장 높은 점수를 갖고 지정 임계치를 충족 또는 초과하는 앱에 따라 결정된다. 블록(1012)에서, 제1 서브세트의 앱이 실행된다.
앞서 개시된 바와 같이, 모든 앱이 반드시 로컬 컴퓨팅 장치(202) 상에서 실행되어야 하는 것은 아니며 원격 컴퓨팅 장치(가령, 형제 컴퓨팅 장치) 상에서 실행될 수 있다. 따라서 블록(1014)에서, 제2 앱 서브세트가 실행되도록 선택적으로 식별된다. 제1 앱 서브세트와 같이, 이들은 지정 임계치 - 아마도 원격 장치 상에서 실행되는 앱에 특정적이며, 제1 앱 서브세트의 앱이 충족되어야 할 것과 상이한 임계치 - 를 충족 또는 초과하는 앱이다. 블록(1016)에서, 제2 앱 서브세트의 앱이 원격 컴퓨팅 장치 상에서 실행된다. 더 구체적으로, 스케줄링 관리자가 원격 장치 상에서 앱을 직접적으로 실행할 수 있거나 실행할 수 없기 때문에, 제2 앱 서브세트의 앱이 원격 컴퓨팅 장치 상에서 실행되게 된다.
블록(1018)에서, 스케줄링 관리자(460)가 실행된 앱의 성공 또는 유용성에 대한 피드백을 획득한다. 다시 말하면, 스케줄링 관리자(460)가 실행된 앱에게 이들이 현재 상황을 고려할 때 유용한 데이트를 제공했는지(성공) 또는 이들이 현재 상황을 고려할 때 유용한 데이터를 제공하지 않았는지(성공 아님)에 대해 하락된 점수로 피드백한다. 이 피드백 정보는 학습 엔진(806)으로 제공되며 블록(1020)에서 현재 실행 상황을 고려할 때 (적절하게) 앱과 연관된 점수가 업데이트된다. 그 후 루틴(1000)이 블록(1022)으로 진행되며, 여기서 루틴은 다음 이벤트에 대해 대기하고 앞서 기재된 단계를 반복한다.
상황 인자의 특정 세트에 대해 유용한 정보, 데이터, 또는 기능을 제공하는 이들 앱, 애플리케이션 및/또는 서비스에게 보답하는 반복적 프로세스가 모든 이용 가능한 앱, 애플리케이션 및/또는 서비스의 서브세트를 다른 것들에 비해 선호하기 시작할 것이라는 것을 이해할 것이다. 그러나 더 낮은 점수와 연관된 앱 또는 전혀 점수가 없는 앱이 실제로 특정 시간에서 연관된 사용자에게 가치가 클 수 있다. 스케줄링 관리자(460)가 실행되도록 앱을 스케줄링하는 전체 성능을 개선하려 지속적으로 시도함을 보장하기 위해, 다양한 수단이 구현될 수 있다. 물론, 제1 수단은 연관된 사용자가 특정 앱의 실행을 명시적으로 야기할 수 있다는 것이다. 명시적 사용자 실행에 대한 피드백이 앱의 연관된 점수가 주어진 상황 인자의 세트에 대한 지정 임계치를 충족할 수 있는 레벨까지 상승할 수 있게 하는 데 충분할 수 있다.
스케줄링 관리자(460)가 앱을 스케줄링하는 전체 성능을 개선하려 지속적으로 시도함을 보장하기 위한 제2 수단은, 컴퓨팅 장치의 처리 부하가 지정 임계치를 충족하는 또 다른 앱과 함께 실행될 수 있기에 충분할 때 로컬 장치 상에서의 실행에 대한 지정 임계치를 충족하지 않는 응답 앱(트리거링 이벤트에 응답하는 것으로 식별되는 앱)을 포함하는 것이다.
또 다른 수단은 앱의 연관된 점수의 함수로서 지연될 시간 길이를 연관시키는 것이다. 여기서, (연관된 점수가 지정 임계치 미만인) 앱이 스케줄링 관리자(460)에 의해 실행되는 것으로 간주될 수 있기 전 연관된 시간 길이만큼 지연될 것이다. 또한 유사한 수단이 원격 실행을 위한 앱과 함께 구현될 수 있다. 따라서 블록(1010 및 1014)의 결정이 앞서의 기재로부터 수정되어 연관된 지정 임계치를 충족하지 않는 다른 앱을 포함할 수 있다.
개시되는 청구 대상의 다양한 신규한 형태가 기재되었지만, 이들 형태는 예시에 불과하고 한정으로 해석되지 않는다. 다양한 형태에 대한 변형 및 수정이 개시되는 청구 대상의 범위 내에서 이뤄질 수 있다.

Claims (10)

  1. 연관된 사용자에게 개인 어시스턴스를 제공하도록 구성된 모바일 컴퓨팅 장치로서, 상기 모바일 컴퓨팅 장치는 프로세서 및 메모리를 포함하고, 상기 프로세서는 상기 모바일 컴퓨팅 장치 상에서 인스트럭션을 실행해서 상기 개인 어시스턴스를 상기 연관된 사용자에게 추가 구성요소와 함께 제공하며, 상기 추가 구성요소는,
    실행 가능 구성요소인 개인용 데몬 - 상기 개인용 데몬은 상기 모바일 컴퓨팅 장치의 백그라운드에서 동작 및 실행되며, 수신된 이벤트의 통지에 응답하여 상기 개인용 데몬이 유지하고 있는 개인 정보에 따라서, 상기 연관된 사용자를 대리하여 개인 어시스턴스 액션을 실행하도록 구성되고, 상기 개인용 데몬은 또한 상기 연관된 사용자가 성립한 규칙의 조건 하에서가 아니면, 상기 연관된 사용자의 개인 정보를 상기 연관된 사용자가 아닌 다른 개체와 공유하지 않도록 구성됨 - 과,
    상기 모바일 컴퓨팅 장치 상의 실행 가능 구성요소이며, 가장 유용하다고 결정된 실행 가능 앱만 실행되도록 상기 모바일 컴퓨팅 장치 상에서의 앱의 실행을 관리하는 스케줄링 관리자를 포함하고,
    상기 스케줄링 관리자는,
    상기 모바일 컴퓨팅 장치 상의 이벤트의 통지를 수신하고,
    상기 이벤트에 응답하는 실행 가능 앱 세트를 결정하며,
    상기 결정된 실행 가능 앱 세트 중에서, 상기 실행 가능 앱 세트의 각각의 앱과 연관된 점수에 따라서, 지정 임계치를 충족 또는 초과하는 연관된 점수를 가진 앱을 포함하는 제1 앱 서브세트를 결정하고,
    상기 모바일 컴퓨팅 장치 상에서 상기 제1 앱 서브세트의 앱을 실행하며,
    상기 제1 앱 서브세트의 앱의 실행의 유용성(usefulness)에 대한 피드백 정보를 획득하고,
    상기 획득한 제1 앱 서브세트의 앱의 실행의 유용성에 대한 피드백 정보를 기초로 상기 제1 앱 서브세트의 각각의 앱의 연관된 점수를 업데이트하도록
    구성되는
    모바일 컴퓨팅 장치.
  2. 제1항에 있어서,
    상기 스케줄링 관리자는
    상기 실행 가능 앱 세트의 각각의 앱과 연관된 점수에 따라 결정된 실행 가능 앱 세트 중에서, 제2 지정 임계치를 충족 또는 초과하는 연관된 점수를 갖는 앱을 포함하는 제2 앱 서브세트를 결정하고,
    상기 제2 앱 서브세트의 앱을 하나 이상의 원격 컴퓨팅 장치 상에서 실행하며,
    상기 실행되는 제2 앱 서브세트의 앱의 유용성에 대한 피드백 정보를 획득하고,
    상기 제2 앱 서브세트의 앱의 실행의 유용성에 대한 획득된 피드백 정보를 기초로 상기 제2 앱 서브세트의 각각의 앱의 연관된 점수를 업데이트하도록
    더 구성되는
    모바일 컴퓨팅 장치.
  3. 제2항에 있어서,
    상기 실행 가능 앱 세트의 각각의 앱과 연관된 점수에 따라 상기 실행 가능 제1 앱 서브세트를 결정하는 것은, 주어진 현재 상황 인자(contextual factor)의 세트에 대해 앱 세트의 각각의 앱과 연관된 점수에 따라 제1 앱 서브세트를 결정하는 것을 포함하는
    모바일 컴퓨팅 장치.
  4. 제3항에 있어서,
    상기 앱 세트의 각각의 앱과 연관된 점수에 따라 상기 제2 앱 서브세트를 결정하는 것은, 현재 상황 인자의 세트에 대해 앱 세트의 각각의 앱과 연관된 점수에 따라 제2 앱 서브세트를 결정하는 것을 포함하는
    모바일 컴퓨팅 장치.
  5. 제4항에 있어서,
    상기 모바일 컴퓨팅 장치의 실행 가능 구성요소인 머신 학습 엔진을 더 포함하며,
    상기 머신 학습 엔진은,
    상기 실행되는 제1 앱 서브세트의 앱의 유용성에 대한 상기 피드백 정보를 획득하고,
    상기 획득된 피드백에 따라 그리고 주어진 현재 상황 인자의 세트에 대해 상기 실행 가능 제1 앱 서브세트의 각각의 앱의 연관된 점수의 점수를 업데이트하도록
    구성되는
    모바일 컴퓨팅 장치.
  6. 제5항에 있어서,
    상기 머신 학습 엔진은
    상기 실행되는 제2 앱 서브세트의 앱의 유용성에 대한 상기 피드백 정보를 획득하고,
    상기 획득된 피드백 및 상기 현재 상황 인자의 세트에 따라 상기 제2 앱 서브세트의 각각의 앱의 연관된 점수의 점수를 업데이트하도록 더 구성되는
    모바일 컴퓨팅 장치.
  7. 연관된 사용자에게 개인 어시스턴스를 제공하기 위한 모바일 컴퓨팅 장치로 구현되는 방법으로서, 상기 방법은, 모바일 컴퓨팅 장치 상에서 구현되는,
    상기 모바일 컴퓨팅 장치의 백그라운드에서, 상기 연관된 사용자를 대리하여 하나 이상의 개인 어시스턴스 액션을 실행하는 개인용 데몬을 실행하는 단계와,
    상기 모바일 컴퓨팅 장치 상에서 스케줄링 관리자를 실행하는 단계 - 상기 스케줄링 관리자는 상기 개인용 데몬을 지원해서 하나 이상의 이벤트에 응답하고, 상기 스케줄링 관리자는 이벤트의 수신에 응답하여, 가장 유용하다고 결정된 앱만 실행되도록 상기 모바일 컴퓨팅 장치 상에서의 앱의 실행을 관리하는 단계
    를 포함하고,
    상기 스케줄링 관리자는,
    상기 수신된 이벤트에 응답하는 앱 세트를 결정하고,
    상기 결정된 앱 세트의 각각의 앱과 연관된 점수에 따라 상기 결정된 앱 세트 중에서, 지정 임계치를 충족하거나 초과하는 연관된 점수를 갖는 앱을 포함하는 제1 앱 서브세트를 결정하며,
    상기 제1 앱 서브세트의 앱을 상기 모바일 컴퓨팅 장치 상에서 실행하고,
    상기 실행되는 제1 앱 서브세트의 앱의 유용성에 대한 피드백 정보를 획득하며,
    상기 제1 앱 서브세트의 각각의 앱의 연관된 점수를 업데이트하도록
    구성되는
    모바일 컴퓨팅 장치로 구현되는 방법.
  8. 제7항에 있어서,
    상기 스케줄링 관리자는
    상기 결정된 앱 세트의 각각의 앱과 연관된 점수에 따라 상기 결정된 앱 세트 중에서, 제2 지정 임계치를 충족하거나 초과하는 연관된 점수를 갖는 앱을 포함하는 제2 앱 서브세트를 결정하고,
    상기 제2 앱 서브세트의 앱을 하나 이상의 원격 컴퓨팅 장치 상에서 실행하며,
    상기 실행되는 제2 앱 서브세트의 앱의 유용성에 대한 피드백 정보를 획득하고,
    상기 제2 앱 서브세트의 각각의 앱의 연관된 점수를 업데이트하도록 더 구성되는
    모바일 컴퓨팅 장치로 구현되는 방법.
  9. 제8항에 있어서,
    상기 앱 세트의 각각의 앱과 연관된 점수에 따라 제1 앱 서브세트를 결정하는 것은, 현재 상황 인자의 세트에 대해 상기 앱 세트의 각각의 앱과 연관된 점수에 따라 제1 앱 서브세트를 결정하는 것을 포함하고,
    상기 앱 세트의 각각의 앱과 연관된 점수에 따라 제2 앱 서브세트를 결정하는 것은, 현재 상황 인자의 세트에 대해 상기 앱 세트의 각각의 앱과 연관된 점수에 따라 제2 앱 서브세트를 결정하는 것을 포함하는
    모바일 컴퓨팅 장치로 구현되는 방법.
  10. 적어도 프로세서 및 메모리를 갖는 모바일 컴퓨팅 장치 상에서 실행될 때 청구항 제7항 내지 제9항 중 어느 한 항에 따르는 방법을 수행하는 컴퓨터 실행 가능 인스트럭션을 포함하는 컴퓨터 판독 가능 매체.
KR1020167023163A 2014-02-24 2015-02-20 인센티브 기반 앱 실행 기법 KR102267270B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/187,567 US9473944B2 (en) 2014-02-24 2014-02-24 Local personal daemon
US14/187,567 2014-02-24
US14/265,882 US9218497B2 (en) 2014-02-24 2014-04-30 Incentive-based app execution
US14/265,882 2014-04-30
PCT/US2015/016728 WO2015127155A1 (en) 2014-02-24 2015-02-20 Incentive-based app execution

Publications (2)

Publication Number Publication Date
KR20160125393A true KR20160125393A (ko) 2016-10-31
KR102267270B1 KR102267270B1 (ko) 2021-06-18

Family

ID=52633646

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167023163A KR102267270B1 (ko) 2014-02-24 2015-02-20 인센티브 기반 앱 실행 기법

Country Status (5)

Country Link
US (2) US9218497B2 (ko)
EP (1) EP3111356B1 (ko)
KR (1) KR102267270B1 (ko)
CN (2) CN110569665B (ko)
WO (1) WO2015127155A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9218497B2 (en) * 2014-02-24 2015-12-22 Microsoft Technology Licensing, Llc Incentive-based app execution
US9836315B1 (en) * 2014-06-25 2017-12-05 Amazon Technologies, Inc. De-referenced package execution
US9509857B2 (en) * 2014-12-10 2016-11-29 Google Inc. Mobile device push notification using mobile application usage history
CN106157079A (zh) 2015-04-13 2016-11-23 阿里巴巴集团控股有限公司 订单数据的交互方法及服务器
CN106161374A (zh) * 2015-04-13 2016-11-23 阿里巴巴集团控股有限公司 订单数据的交互方法及服务器
CN106161807A (zh) 2015-04-13 2016-11-23 阿里巴巴集团控股有限公司 通信方法及服务器
US10666751B1 (en) 2016-12-28 2020-05-26 Wells Fargo Bank, N.A. Notification system and method
WO2018176215A1 (en) * 2017-03-28 2018-10-04 Oracle International Corporation Systems and methods for intelligently providing supporting information using machine-learning
US10798180B1 (en) 2017-04-11 2020-10-06 Wells Fargo Bank, N.A. Systems and methods for optimizing information collaboration
US10848578B1 (en) 2017-04-11 2020-11-24 Wells Fargo Bank, N.A. Systems and methods for content delivery
US11604661B2 (en) * 2018-06-03 2023-03-14 Apple Inc. Determining relevant information based on third party information and user interactions
US11170102B1 (en) 2019-02-13 2021-11-09 Wells Fargo Bank, N.A. Mitigation control of inadvertent processing of sensitive data
US10871950B2 (en) 2019-05-16 2020-12-22 Microsoft Technology Licensing, Llc Persistent annotation of syntax graphs for code optimization
US20220188167A1 (en) * 2020-12-14 2022-06-16 Dell Products, Lp System and method to adapt memory usage of containerized workspaces
CN115016631B (zh) * 2021-11-22 2023-07-18 荣耀终端有限公司 进程调度方法和终端设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005521948A (ja) * 2002-03-28 2005-07-21 オー2マイクロ,アイエヌシー. パーソナルデジタルアシスタントが組み込まれたパーソナルコンピュータ
KR20060056070A (ko) * 2004-11-19 2006-05-24 에스케이 텔레콤주식회사 휴대 단말기에서 운용되는 애플리케이션 플랫폼과 휴대단말기 운영 체제 간의 인터페이스 방법 및 장치
KR20130124799A (ko) * 2012-05-07 2013-11-15 고일권 스마트 단말에서의 진화형 가상 비서 서비스 시스템

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021403A (en) 1996-07-19 2000-02-01 Microsoft Corporation Intelligent user assistance facility
US6141754A (en) * 1997-11-28 2000-10-31 International Business Machines Corporation Integrated method and system for controlling information access and distribution
US6230313B1 (en) 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
WO2001045005A1 (en) 1999-12-14 2001-06-21 Yodlee.Com, Inc. Method and apparatus for providing intelligent recommendations to users regarding online activities based on knowledge of data from a user's multiple web-services
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
US20020107905A1 (en) * 2001-02-05 2002-08-08 Roe Colleen A. Scalable agent service system
US7929951B2 (en) * 2001-12-20 2011-04-19 Stevens Lawrence A Systems and methods for storage of user information and for verifying user identity
WO2004102417A1 (en) 2003-05-16 2004-11-25 Docomo Communications Laboratories Europe Gmbh Personalized service selection
US20050097087A1 (en) 2003-11-03 2005-05-05 Punaganti Venkata Murali K. System and method for providing a unified framework for service discovery
KR100576935B1 (ko) 2003-12-22 2006-05-10 한국전자통신연구원 온톨로지 기반의 애드혹 서비스 검색 시스템 및 방법
US20060253592A1 (en) * 2004-01-26 2006-11-09 Matsushita Electric Industrial Co., Ltd. Terminal device, method, and system capable of automatic execution of process in accordance with event
JP2007537512A (ja) * 2004-04-30 2007-12-20 マイクロソフト コーポレーション エンドユーザルールロジックを定義し、実行するルールフレームワーク
US7664081B2 (en) 2004-12-22 2010-02-16 Nokia Corporation Wireless gateway for enabling wireless devices to discover and interact with various short-range services/devices
US8677377B2 (en) * 2005-09-08 2014-03-18 Apple Inc. Method and apparatus for building an intelligent automated assistant
US20070083378A1 (en) 2005-10-11 2007-04-12 Microsoft Corporation Secure application programming interface
US8131718B2 (en) 2005-12-13 2012-03-06 Muse Green Investments LLC Intelligent data retrieval system
US7613426B2 (en) 2005-12-20 2009-11-03 Microsoft Corporation Proximity service discovery in wireless networks
EP1835417A1 (en) 2006-03-13 2007-09-19 Alcatel Lucent Web service with associated lexical tree
US7636779B2 (en) * 2006-04-28 2009-12-22 Yahoo! Inc. Contextual mobile local search based on social network vitality information
US20070264991A1 (en) 2006-05-15 2007-11-15 Microsoft Corporation Services near me: discovering and connecting to available wireless services utilizing proximity discovery
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
GB0623927D0 (en) * 2006-11-30 2007-01-10 Ibm Event - based activation and deactivation of subscription matching
JP2010515338A (ja) 2006-12-28 2010-05-06 テレフオンアクチーボラゲット エル エム エリクソン(パブル) サービス発見のための方法と装置
US8560400B1 (en) 2006-12-28 2013-10-15 Sprint Communications Company L.P. Context-based service delivery
US20080313639A1 (en) * 2007-06-13 2008-12-18 Krishna Kumar Policy based scheduling of software applications
AU2008286676A1 (en) * 2007-08-16 2009-02-19 Indaran Proprietary Limited Method and apparatus for presenting content
US20090063686A1 (en) 2007-08-30 2009-03-05 Schmidt Brian K Automated service discovery and dynamic connection management
EP2043009A1 (en) 2007-09-28 2009-04-01 Alcatel Lucent Method for building semantic referential gathering semantic service descriptions
US8493888B2 (en) 2007-11-08 2013-07-23 Nokia Corporation Connectivity architecture for service discovery
US7987163B2 (en) 2008-02-12 2011-07-26 Bae Systems Information And Electronic Systems Integration Inc. Apparatus and method for dynamic web service discovery
US8549657B2 (en) * 2008-05-12 2013-10-01 Microsoft Corporation Owner privacy in a shared mobile device
US20100009703A1 (en) 2008-07-14 2010-01-14 Wuiper, Inc. System and method for real world interface to online social networks
US8572691B2 (en) 2008-07-17 2013-10-29 International Business Machines Corporation Selecting a web service from a service registry based on audit and compliance qualities
US8649776B2 (en) 2009-01-13 2014-02-11 At&T Intellectual Property I, L.P. Systems and methods to provide personal information assistance
US20100235838A1 (en) * 2009-03-12 2010-09-16 Jerry Ibrahim Method, computer program product, and apparatus for enabling task aggregation in an enterprise environment
US10326848B2 (en) * 2009-04-17 2019-06-18 Empirix Inc. Method for modeling user behavior in IP networks
US20100281427A1 (en) 2009-04-30 2010-11-04 Riddhiman Ghosh Selecting one of plural user profile personae based on context
US20120042002A1 (en) * 2009-06-03 2012-02-16 Tony Paul Smith System and method for context driven centralized help
US8612435B2 (en) 2009-07-16 2013-12-17 Yahoo! Inc. Activity based users' interests modeling for determining content relevance
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US8340651B1 (en) 2010-03-26 2012-12-25 Sprint Communications Company L.P. Reconciling contact information between users
US8316038B2 (en) 2010-06-02 2012-11-20 Hewlett-Packard Development Company, L.P. Collecting and analyzing user activities on mobile computing devices
US8386929B2 (en) 2010-06-22 2013-02-26 Microsoft Corporation Personal assistant for task utilization
WO2012000553A1 (en) 2010-07-01 2012-01-05 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for service sharing
US9122744B2 (en) 2010-10-11 2015-09-01 Next It Corporation System and method for providing distributed intelligent assistance
US20120096435A1 (en) * 2010-10-18 2012-04-19 Microsoft Corporation Capability-based application recommendation
US8478306B2 (en) 2010-11-10 2013-07-02 Google Inc. Self-aware profile switching on a mobile computing device
CN103403685B (zh) * 2010-12-30 2015-05-13 艾新顿公司 在线隐私管理
US10631246B2 (en) 2011-02-14 2020-04-21 Microsoft Technology Licensing, Llc Task switching on mobile devices
US20120316956A1 (en) 2011-06-07 2012-12-13 Microsoft Corporation Client-Server Joint Personalization for Private Mobile Advertising
US8417233B2 (en) 2011-06-13 2013-04-09 Mercury Mobile, Llc Automated notation techniques implemented via mobile devices and/or computer networks
US20120323794A1 (en) * 2011-06-15 2012-12-20 Microsoft Corporation Monetization strategies in privacy-conscious personalization
US9026814B2 (en) 2011-06-17 2015-05-05 Microsoft Technology Licensing, Llc Power and load management based on contextual information
US8838072B2 (en) 2011-08-11 2014-09-16 Samsung Electronics Co., Ltd. Apparatus and method for mobile personal assistant
US9063775B2 (en) * 2011-09-01 2015-06-23 Microsoft Technology Licensing, Llc Event aggregation for background work execution
US9164576B2 (en) * 2011-09-13 2015-10-20 Apple Inc. Conformance protocol for heterogeneous abstractions for defining user interface behaviors
US20130080184A1 (en) 2011-09-23 2013-03-28 Alliance Health Networks, Inc. Managing healthcare information for members of a social network
US20130159377A1 (en) 2011-12-15 2013-06-20 AsystMe, LLC Proactive automated personal assistant
CN102547554B (zh) * 2011-12-28 2015-03-04 华中科技大学 基于移动用户行为的移动业务推荐方法
US9189252B2 (en) * 2011-12-30 2015-11-17 Microsoft Technology Licensing, Llc Context-based device action prediction
US20130218687A1 (en) * 2012-02-17 2013-08-22 Graphdive, Inc. Methods, systems and devices for determining a user interest and/or characteristic by employing a personalization engine
US8718726B2 (en) 2012-03-16 2014-05-06 Apple Inc. Methods and apparatus for reducing call drop rate
CN103365853A (zh) * 2012-03-28 2013-10-23 浩鑫股份有限公司 移动装置的适性化使用行为记录及回馈方法
US20140033204A1 (en) * 2012-07-26 2014-01-30 Qnx Software Systems Limited Background Services Launcher For Dynamic Service Provisioning
US20140040171A1 (en) 2012-07-31 2014-02-06 Triapodi Ltd Content-based demographic estimation of users of mobile devices and usage thereof
US9495537B2 (en) * 2012-08-15 2016-11-15 Qualcomm Incorporated Adaptive observation of behavioral features on a mobile device
US9576574B2 (en) * 2012-09-10 2017-02-21 Apple Inc. Context-sensitive handling of interruptions by intelligent digital assistant
US20140108307A1 (en) 2012-10-12 2014-04-17 Wipro Limited Methods and systems for providing personalized and context-aware suggestions
CA2890073A1 (en) 2012-11-01 2014-05-08 Wyngspan, Inc. Systems and methods of establishing and measuring trust relationships in a community of online users
CN103049163B (zh) * 2012-12-28 2016-12-28 华为技术有限公司 用户界面智能显示控制方法和装置
US9354790B2 (en) 2013-01-14 2016-05-31 International Business Machines Corporation Dynamically selecting and ordering facets and facet values in a user interface based on user preference
US20140272894A1 (en) * 2013-03-13 2014-09-18 Edulock, Inc. System and method for multi-layered education based locking of electronic computing devices
US11061973B2 (en) 2013-06-14 2021-07-13 Microsoft Technology Licensing, Llc Incorporating user usage of consumable content into recommendations
CN103488473B (zh) * 2013-08-27 2017-11-14 上海斐讯数据通信技术有限公司 一种对移动终端应用程序的管理系统及管理方法
US9218497B2 (en) * 2014-02-24 2015-12-22 Microsoft Technology Licensing, Llc Incentive-based app execution

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005521948A (ja) * 2002-03-28 2005-07-21 オー2マイクロ,アイエヌシー. パーソナルデジタルアシスタントが組み込まれたパーソナルコンピュータ
KR20060056070A (ko) * 2004-11-19 2006-05-24 에스케이 텔레콤주식회사 휴대 단말기에서 운용되는 애플리케이션 플랫폼과 휴대단말기 운영 체제 간의 인터페이스 방법 및 장치
KR20130124799A (ko) * 2012-05-07 2013-11-15 고일권 스마트 단말에서의 진화형 가상 비서 서비스 시스템

Also Published As

Publication number Publication date
KR102267270B1 (ko) 2021-06-18
CN110569665B (zh) 2024-01-02
CN106062760B (zh) 2019-09-27
WO2015127155A1 (en) 2015-08-27
US20150242645A1 (en) 2015-08-27
CN106062760A (zh) 2016-10-26
EP3111356A1 (en) 2017-01-04
EP3111356B1 (en) 2024-07-17
CN110569665A (zh) 2019-12-13
US20160147567A1 (en) 2016-05-26
US9760401B2 (en) 2017-09-12
US9218497B2 (en) 2015-12-22

Similar Documents

Publication Publication Date Title
KR102267270B1 (ko) 인센티브 기반 앱 실행 기법
KR102271786B1 (ko) 개인 데몬의 훈련 가속화
AU2019201885B2 (en) Client-side integration framework of services
CN111615712B (zh) 多日历协调
US9842228B2 (en) Local personal daemon
Sarker Mobile data science: Towards understanding data-driven intelligent mobile applications
US20150373144A1 (en) Personal Daemon Interaction through Escalating Disclosure

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant