KR20180008480A - 애플리케이션 관련 사용자 데이터를 추출하고 공유하기 위한 시스템 및 방법 - Google Patents

애플리케이션 관련 사용자 데이터를 추출하고 공유하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20180008480A
KR20180008480A KR1020177032966A KR20177032966A KR20180008480A KR 20180008480 A KR20180008480 A KR 20180008480A KR 1020177032966 A KR1020177032966 A KR 1020177032966A KR 20177032966 A KR20177032966 A KR 20177032966A KR 20180008480 A KR20180008480 A KR 20180008480A
Authority
KR
South Korea
Prior art keywords
user
app
application
entity
data
Prior art date
Application number
KR1020177032966A
Other languages
English (en)
Other versions
KR102613774B1 (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
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20180008480A publication Critical patent/KR20180008480A/ko
Application granted granted Critical
Publication of KR102613774B1 publication Critical patent/KR102613774B1/ko

Links

Images

Classifications

    • G06F17/30421
    • 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/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2448Query languages for particular applications; for extensibility, e.g. user defined types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
    • 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/242Query formulation
    • G06F16/2428Query predicate definition using graphical user interfaces, including menus and forms
    • 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/24575Query processing with adaptation to user needs using context
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • G06F17/30398
    • G06F17/30528
    • G06F17/30598
    • 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
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)
  • Document Processing Apparatus (AREA)

Abstract

애플리케이션 관련 사용자 데이터를 추출하고 공유하기 위한 시스템 및 방법이 개시된다. 방법은 컴퓨팅 장치에서 실행되는 복수의 앱 중 적어도 하나에 대한 인앱 데이터(in-app data)를 추출하는 단계를 포함하되, 이 인앱 데이터는 적어도 하나의 앱이 실행되는 동안 사용자에 의해 소비된 콘텐츠 및/또는 콘텐츠와 연계하여 행해진 적어도 하나의 사용자 액션을 포함한다. 앱과 연관된 엔티티 템플릿을 사용하여, 인앱 데이터 내의 복수의 텍스트 스트링이 템플릿에 의해 지정된 복수의 데이터 타입 중 적어도 하나로 분류된다. 분류된 복수의 텍스트 스트링의 적어도 일부를 결합함으로써 적어도 하나의 사용자 데이터 아이템(UDI)가 생성되고, 이 적어도 하나의 UDI는 제2 앱, 컴퓨팅 장치에서 실행되는 운영 체제, 운영 체제의 서비스 및/또는 적어도 또 다른 장치에서 실행되는 서비스에 의해 액세스가능하다.

Description

애플리케이션 관련 사용자 데이터를 추출하고 공유하기 위한 시스템 및 방법
이동 장치 상에서 보내는 적어도 일부 시간은 애플리케이션(또는 "앱")을 사용하면서 보낸다. 일부 알려진 앱은 사용자가 상호작용할 수 있고 검색할 수 있는 페이지들의 집합으로서 콘텐츠를 디스플레이하는 격리된 프로그램이다. 적어도 일부 알려진 앱의 기능은 사용자에 의해 명시적으로 요청되는 콘텐츠를 디스플레이하는 것으로 제한된다.
앱과의 사용자 상호작용을 추적 및/또는 분석하는 공지된 방법 및 시스템은 수동으로 앱에 주석을 다는 것을 포함한다. 그러나, 수동으로 앱에 주석을 다는 것은 추가적인 프로그래밍 시간 및/또는 노력을 필요로 하고, 또한 시간 소모적이고, 지루하며, 및/또는 오류가 발생하기 쉽다. 또한, 사용자 상호작용을 추적 및/또는 분석하는 공지된 방법 및 시스템은, 특히 개발자 노력이 거의 없이 행해지는 경우, 막대한 계산을 수행해야 하고, 로컬로 저장되는 경우 대용량의 메모리를 필요로 하거나 원격 서버에서 실행되는 경우 네트워크 오버헤드를 야기하며 잠재적으로 사용자 프라이버시를 침해한다.
본 요약은 이하의 상세한 설명에서 더 설명되는 선택된 개념들을 간략화된 형태로 도입하기 위해 제공된다. 본 요약은 청구 대상의 핵심 특징 또는 필수적인 특징을 식별하기 위한 것이 아니며, 본 발명의 범위를 제한하는데 사용되려는 것도 아니다.
하나 이상의 양상에 따르면, 컴퓨팅 장치는 처리 장치, 및 복수의 애플리케이션(앱)을 저장하는 메모리를 포함할 수 있다. 컴퓨팅 장치는 애플리케이션 관련 사용자 데이터를 추출하고 공유하기 위한 동작들을 수행하도록 구성될 수 있다. 동작들은 컴퓨팅 장치에서 실행하는 복수의 앱 중 적어도 하나에 대한 인앱 데이터(in-app data)를 추출하는 동작을 포함하는데, 이 인앱 데이터는 적어도 하나의 앱이 실행되는 동안 사용자에 의해 소비되는 콘텐츠, 및/또는 콘텐츠와 연계하여 취해지는 적어도 하나의 사용자 액션을 포함한다. 동작들은 적어도 하나의 앱과 연관된 엔티티 템플릿을 사용하여, 이 엔티티 템플릿에 의해 지정된 복수의 데이터 타입 중 적어도 하나로 인앱 데이터 내의 복수의 텍스트 스트링을 분류하는 동작을 더 포함한다. 분류된 복수의 텍스트 스트링의 적어도 일부를 결합함으로써 적어도 하나의 사용자 데이터 항목(UDI)이 생성될 수 있고, 이 적어도 하나의 UDI는 복수의 앱 중 제2 앱, 컴퓨팅 장치 상에서 실행되는 운영 체제, 운영 체제의 서비스, 및/또는 적어도 또 다른 장치에서 실행되는 서비스 중 적어도 하나에 의해 액세스가능하다.
하나 이상의 양상에 따르면, 애플리케이션 관련 사용자 데이터를 추출하고 공유하는 방법은 컴퓨팅 장치의 운영 체제 내의 트레이서 컴포넌트를 사용하여 컴퓨팅 장치 상에서 애플리케이션이 실행되는 동안, 애플리케이션의 페이지 클래스와 연계하여 사용자 액션에 의해 트리거된 사용자 인터페이스(UI) 이벤트를 검출하는 단계를 포함하되, UI 이벤트는 페이지 클래스의 UI 트리와 연관된다. 컴퓨팅 장치의 운영 체제 내의 분석기 컴포넌트를 사용하여, 컴퓨팅 장치 상에서 실행되는 애플리케이션과 연관된 복수의 템플릿이 수신되고, 복수의 템플릿 각각은 복수의 엔티티 타입 및 액션 타입을 포함한다. UI 트리 내의 복수의 텍스트 스트링은 복수의 템플릿 중 적어도 하나와 매칭될 수 있으며 따라서 UI 트리 내의 복수의 텍스트 스트링을 적어도 복수의 엔티티 타입 중의 엔티티 타입 또는 복수의 액션 타입 중의 액션 타입으로 분류할 수 있다. UI 트리 내의 분류된 복수의 텍스트 스트링의 적어도 일부를 결합함으로써 행동 데이터 항목(behavioral data item: BDI)이 생성된다. 생성된 BDI는 클라이언트 장치 상에서 실행되는 또 다른 애플리케이션, 클라이언트 장치 상에서 실행되는 하나 이상의 서비스, 및/또는 또 다른 장치 중 적어도 하나에 제공된다.
하나 이상의 양상에 따르면, 클라이언트 장치에서 애플리케이션 관련 사용자 데이터를 추출 및 공유하기 위한 시스템이 개시되고 이 시스템은 애플리케이션의 페이지 클래스와 연계하여 사용자 액션에 의해 트리거되는 사용자 인터페이스(UI) 이벤트를 검출하도록 동작가능한 트레이서 서비스를 포함하는데, UI 이벤트는 애플리케이션이 실행되는 동안 페이지 클래스의 UI 트리와 연관된다. 시스템은 분석기 서비스를 포함할 수 있는데, 이 분석기 서비스는 UI 트리 내의 복수의 텍스트를 애플리케이션의 복수의 템플릿 중 적어도 하나와 매칭시켜, 적어도 이름, 데이터 타입 및 그룹 식별자로 UI 트리 내의 복수의 텍스트를 분류하고, 적어도 하나의 사용자 액션과 연관되고 관련 있는(예를 들어, 동일한 그룹 식별자를 갖는) UI 트리 내의 분류된 복수의 엔티티의 적어도 일부를 결합함으로써 적어도 하나의 사용자 데이터 항목(UDI)을 생성한다. 시스템은 또한 생성된 적어도 하나의 UDI를 네트워크 저장소에 저장하고 저장된 적어도 하나의 UDI에 대한 액세스를 클라이언트 장치에서 실행되는 적어도 또 다른 애플리케이션에 제공하도록 동작가능한 저장 서비스를 포함할 수 있다.
본 명세서에서 설명되는 바와 같이, 다양한 다른 특징 및 장점이 필요에 따라 기술에 통합될 수 있다.
도 1은 이동 장치상에서 구현될 수 있는 하나 이상의 애플리케이션을 포함하는 예시적인 이동 장치를 도시하는 개략도이다.
도 2는 도 1에 도시된 바와 같은 애플리케이션의 요소들 간의 관계를 나타내는 개략도이다.
도 3a는 도 1에 도시된 이동 장치와 같이 분석 서비스를 포함하는 하나 이상의 이동 장치, 및 이 하나 이상의 이동 장치에 통신가능하게 결합된 하나 이상의 서버를 포함하는 예시적인 시스템을 나타내는 개략도이다.
도 3b는 하나 이상의 실시예에 따라, 도 3a의 분석 서비스에 의해 사용될 수 있는 예시적인 템플릿을 나타내는 개략도이다.
도 4는 하나 이상의 실시예에 따라, 분석 서비스로부터 사용자 데이터 항목(UDI)을 액세스하기 위한 예시적인 API 사용을 나타내는 개략도이다.
도 5는 하나 이상의 실시예에 따라, 분석 서비스의 예시적인 구현을 나타내는 개략도이다.
도 6은 하나 이상의 실시예에 따라, 식사 관련 앱(dining related app)의 예시적인 엔티티 템플릿의 일부를 나타낸다.
도 7은 하나 이상의 실시예에 따라, 도 3a의 분석 서비스에 액세스하기 위한 예시적인 API를 갖는 제1 표, 및 도 3a의 분석 서비스를 사용하는 안드로이드 또는 윈도우 폰 환경에서 구현될 수 있는 예시적인 사용 사례를 갖는 표를 나타낸다.
도 8 내지 도 10은 하나 이상의 실시예에 따라, 애플리케이션 관련 사용자 데이터를 추출하고 공유하는 예시적인 방법을 나타내는 흐름도이다.
도 11은 일부 설명된 실시예가 구현될 수 있는 예시적인 컴퓨팅 시스템을 나타낸다.
도 12는 설명되는 실시예, 기법 및 기술이 구현될 수 있는 적절한 클라우드 지원 환경의 일반화된 예를 나타낸다.
도 13은 본 명세서에서 설명된 기술과 연계하여 사용될 수 있는 예시적인 이동 장치이다.
사용자가 앱에서 하는 것(예를 들어, 특정 타입의 레스토랑을 검색하는 것, 레스토랑에 대해 긍정적인 선호도를 표현하기 위해 "좋아요"를 선택하는 것 등)은 사용자의 관심과 선호를 반영한다. 이러한 인-앱 사용자 데이터는 행동 분석 데이터로서 사용될 수 있으며 개인화된 사용자 경험과 새로운 기능을 제공하는 열쇠가 될 수 있다. 그러나, 분석 정보를 추출하는데 필요로 할 수 있는 개발자의 많은 노력은 그의 광범위한 사용을 어렵게 하고, 또한 현대 앱의 사일로 특성(siloed nature)은 그의 활용을 제한한다.
그들의 가치에도 불구하고, 인-앱 행동 분석은 오늘날 거의 사용되지 않는다. 두 가지 중요한 이유가 있다. 첫째, 경험 있는 앱 개발자라도 정보를 추출하는 비용 및 복잡성은 높은데, 즉 개발자는 앱 내에서 사용자 활동을 캡처하기 위한 자신의 코드를 주의 깊게 작성해야 하고, 그런 다음 그 활동에 대한 의미론적으로 의미있는 정보를 추출할 필요가 있다. 후자의 경우는 사용자가 앱 내에서 어떤 콘텐츠(예를 들어, 채식주의 식당)를 소비하는지에 대한 의미론과 사용자가 콘텐츠와 상호작용하는 방식(예를 들어, 사용자가 메뉴를 보거나 테이블을 예약하는 것) 모두를 포함한다. 기존의 인-앱 분석 시스템은 이러한 목적을 위해서는 충분하지 않는데, 그 이유는 이 시스템은 행동 분석에 중요한 의미 정보를 자동으로 제공하지 못하기 때문이다. 예를 들어, 기존의 인-앱 분석 시스템은 클릭 이벤트를 기록할 수 있지만, 그것이 레스토랑과 연관된 "좋아요" 버튼 상에 있음을 보고하지 못할 수 있다.
두 번째로, 보안 및 개인 정보 보호 이유로, 앱은 오늘날 사일로에서 동작한다. (iOS 및 윈도우 폰 같은) 모바일 운영 체제는 앱이 데이터를 로컬로 공유하는 것을 허용하지 않는다. 따라서, 앱이 사용자의 인앱 동작을 캡처할 수 있는 경우에도, 정보는 다른 앱에 의해 액세스될 수 없다. 앱이 데이터를 공유할 수 있다 하더라도, 행동 데이터의 교환을 조정하는 중앙 서비스의 부재는 상호 운용성에 해를 끼칠 수 있다. 이러한 사일로 구조는 행동 분석의 활용을 제한하는데, 그 이유는 전형적인 앱은 잠깐 동안 사용자 활동의 협소한 측면만을 관찰하기 때문이다. 여러 앱으로부터 정보를 모으게 되면 사용자의 행동의 전체적이고 정확한 뷰를 제공할 수 있고, 앱 사이에서 데이터를 공유하게 되면 새로운 기능이 가능해질 수 있다. 예를 들어, (에피큐리어스(Epicurious)와 같은) 레시피 앱은 사용자가 레스토랑 앱에서 (옐프(Yelp))와 같은 일식 레스토랑을 반복적으로 검색한 정보에 기초하여 사용자에게 일본어 레시피를 제안할 수 있다. 사일로 앱 데이터로 인해 오늘날 존재하지 않는 신규 앱은 사용자가 판도라 및 넷플릭스와 같은 다양한 애플리케이션에서 소비하는 모든 디지털 미디어(예를 들어, 음악, 영화, 책 등)를 취합하거나 매쉬업(mashup)할 수 있어서, 사용자가 나중에 한 곳에서 그들을 검색할 수 있다. 정보는 개인 디지털 비서(시리, 코타나, 구글 나우)와 같은 오늘날의 모바일 운영체제의 첫 번째 파티 서비스(first party services)에 유익할 수 있다. 사용자가 디지털 개인 비서에게 레스토랑에 전화하거나 피자를 주문할 것을 요청하면, 이 비서는 레스토랑 예약 앱 또는 레시피 앱 내의 사용자의 활동을 사용하여, 어떤 타입의 또는 어떤 특정의 레스토랑에 전화할지를 자동으로 결정할 수 있다(본 명세서에서 설명한 기술들의 새로운 사용 사례에 대한 몇몇 예가 도 7의 표 2에 도시되어 있다).
본 명세서에 기재된 기법에 따라, (트레이서 컴포넌트, 분석기 컴포넌트 및 저장 컴포넌트를 포함하는) 분석 서비스가 애플리케이션 관련 사용자 데이터 (예를 들면, 행동 분석 데이터)를 추출하고 공유하는 데 사용될 수 있다. 이 분석 서비스는 예를 들어 인앱 상호작용을 분석함으로써 행동 정보를 추출하고 그 정보를 개발자 노력 없이 또한 사용자 데이터의 누수 없이 앱에 걸쳐 이용가능하도록 장치 OS의 일부로서 구현될 수 있다. 보다 구체적으로, 분석 서비스는 두 단계 알고리즘을 구현할 수 있다. 이 서비스는 이동 장치 상에서의 고비용의 엔티티 추출 태스크를, 고비용의 텍스트 마이닝 알고리즘에 의해 오프라인으로, 클라우드 내에서 또한 사용자 애그노스틱 방식으로 자동으로 계산된 엔티티 템플릿들의 간단한 매칭으로 대체한다. 또한, 앱들에 걸쳐 데이터의 유용한 공유를 가능하게 하는 분석 데이터의 추상화가 제공된다. 분석 서비스는 앱 내의 각 UI 요소의 콘텐츠를 엔티티로서 나타내는데, 이는 이름 및 이 이름이 지칭하는 것의 타입과 같은 추가의 메타데이터로 구성된다. 그러나, 앱 페이지 내에서 모든 엔티티를 추출하는 것만으로는 충분하지 않는데, 그 이유는 그들 중 부분집합만이 사용자와 관련 있을 수 있기 때문이다. 따라서, 분석 서비스는 엔티티를 사용자 동작과 결합하여 행동 데이터 항목(BDI)(사용자 데이터 항목(UDI)으로도 지칭됨)을 생성한다. 동작 및 그 밖의 다른 사용 통계(예를 들어, 사용자가 엔티티를 탭핑했는지, 사용자가 엔티티와 상호작용하는데 얼마의 시간을 소비했는지)가 그들에 대한 사용자의 관심을 추론할 수 있게 한다.
동일한 페이지 내의 엔티티들은 관련 있을 수 있는데, 예를 들어, 레스토랑 이름, 그의 주소 및 그의 전화번호는 모두 관련이 있다. 분석 서비스는 이러한 관계를 캡처하여 앱이 자동으로 태스크(예를 들어, 주어진 레스토랑에 전화를 거는 것)를 완료할 수 있게 해준다. 분석 서비스는 (권한을 가진) 앱이 (예를 들어, SOL 같은 선언형 언어를 사용하여) 프로그램적으로 질의할 수 있는 OS 보호 분석 저장소 내에 모든 앱으로부터 수신된 행동 데이터(예를 들어, BDI/UDI)를 저장한다. 분석 서비스는 또한 분석 저장소로부터 또는 다른 저장소(예를 들어, 클라우드 BDI/UDI 저장소)로부터 행동 정보(예를 들어, BDI)를 사용하기 위해 OS, OS 서비스, 및 앱을 위한 API를 제공할 수 있다.
분석 서비스에 의해 추출, 취합 및 공유된 행동/사용자 앱-관련 데이터(예를 들어, BDI/UDI)는 다음의 시나리오 중 하나 이상을 가능하게 할 수 있다. 첫 째, 새로운 OS 특징을 가능하게 할 수 있다. 사용자가 (앱 내의) 스크린 상에서 일부 텍스트를 선택하는 경우, OS는 선택된 텍스트가 전화번호인지 또는 노래인지에 따라 각각 "전화 걸기" 또는 "온라인 스토어로부터 구매"라는 옵션을 제공하는 컨텍스트 메뉴를 자동으로 디스플레이할 수 있다. 또 다른 시나리오는 태스크 완료인데, 이 경우 OS는 예를 들어 레스토랑을 예약하는 것과 같은 태스크를 완료하는데 필요한 일련의 UI 동작들을 자동으로 학습하고 접근성과 같은 서비스(accessibility-like service)를 사용하여 매크로를 재생할 수 있다.
둘째, 분석 서비스는 OS가 제공하는 첫 번째 파티 앱이 개인화된 경험을 제공하는 것을 도울 수 있다. 개인 디지털 비서(예를 들어, 코타나, 시리, 구글 나우)는 사용자가 제3자 음악 앱과 상호작용하는 방식에 기초하여 앱을 추천할 수 있다. 디지털 비서는 또한 사용자가 앱에서 레스토랑 이름을 검색하고 "코타나, 이것을 예약해줘"라고 말하는 경우 사용자가 지목하는 레스토랑을 알 수 있다.
끝으로, 분석 서비스로부터의 행동 데이터(예를 들어, BDI/UDI)는 기존의 제3자 앱 내에 신규 특징을 가능하게 할 수 있다(예를 들어, 음식 앱은 사용자가 다른 앱에서 검색하는 요리와 레스토랑에 기초하여 레시피의 순위를 매길 수 있다). 분석 서비스는 또한 예를 들어 저녁 식사 계획 또는 다가오는 여행에 대해 다양한 앱에서 수집된 모든 정보의 자동 매쉬 업을 위한 새로운 타입의 앱을 가능하게 할 수 있다.
본 명세서에 개시된 분석 서비스는 자동화된 엔티티 추출 기법을 사용하고 OS 서비스로서 구현될 수 있다. 기존 엔티티 추출 기법의 효율성-프라이버시 트레이드오프를 해결하기 위해, 분석 서비스는 앱 콘텐츠 및 사용자의 인앱 활동을 캡처하고 그들의 의미를 추론하는 분석 엔진(예를 들어, 이하에서 설명되는 트레이서 및 분석기), 및 다수의 앱으로부터의 행동 데이터를 저장하고 OS 또는 제1 및 제3 파티 앱이 그들을 프로그램적으로 액세스하기 위한 추상화를 제공하는 분석 저장소를 사용하여 장치-클라이드 혼합 접근방식을 구현할 수 있다.
도 1은 이동 장치 상에서 구현될 수 있는 하나 이상의 애플리케이션("앱")(110)을 포함하는 예시적인 이동 장치(100)를 나타내는 개략도이다. 일부 예에서, 이동 장치(100)는 앱(110)이 이동 장치(100) 상에 실행될 수 있게 하는 사용자 인터페이스(130)(예를 들어, 터치 스크린 디스플레이) 상에 각 앱(110)에 대한 아이콘(120)을 제시한다. 이동 장치(100)는 이동 장치(100)가 본 명세서에서 기술한 대로 동작하게 하는 임의의 개수의 앱(110)을 포함할 수 있다.
앱(110)은 각각이 하나 이상의 페이지에 의해 인스턴스화되는 하나 이상의 페이지 클래스(140)를 포함한다. 일부 예에서, 각 페이지는 하나 이상의 사용자 인터페이스(UI) 요소(190)를 포함한다. 예시적인 UI 요소(190)는 버튼, 텍스트 박스, 리스트 및 이미지를 포함한다. 적어도 일부 예에서, UI 요소(190)는 콘텐츠를 포함하고 및/또는 그와 연관된다(예를 들어, 텍스트 박스는 텍스트 스트링을 포함하고 및/또는 그와 연관된다). 적어도 일부 예에서, UI 요소(190)는 다른 UI 요소(190)에 내포된다. 예를 들어, "부모" UI 요소(190)(예를 들어, 리스트)는 부모 UI 요소(190) 내에 하나 이상의 "자식" UI 요소(190)(예를 들어, 텍스트 박스)를 포함하고 및/또는 담고 있다. 일부 UI 요소(190)(예를 들어, 버튼)는 상호작용가능하고 연관된 이벤트 핸들러를 갖는다. 예를 들어, 사용자는 적어도 일부 이동 장치(100) 상에 제공된 UI 요소(190) 및 뒤로 가기 버튼과 상호작용함으로써 앱(110)의 페이지들과 상호작용하고 그 페이지들 간을 탐색한다.
일부 예에서, 콘텐츠는 그의 페이지 클래스(140)에 정의된 UI 레이아웃 또는 구조에 기초하여 페이지 상에 정렬된다. 예를 들어, 동일한 페이지 클래스(140)로부터 인스턴스화된 페이지는 동일한 UI 구조를 가지지만 잠재적으로 상이한 콘텐츠를 갖는다. 이 예에서, 레스토랑 예약 앱(110)은 두 개의 페이지 클래스(140), 즉 복수의 레스토랑을 포함하는 리스트를 보여주는 하나 이상의 제1 페이지(160)와 연관된 제1 클래스("Class 1")(150)와, 레스토랑과 연관된 상세한 정보를 보여주는 하나 이상의 제2 페이지(180)와 연관된 제2 클래스("Class 2")(170)를 포함한다. 앱(110)은 앱(110)이 본 명세서에 설명된 대로 동작할 수 있게 하는 임의의 개수의 페이지 클래스(140)를 포함할 수 있다.
이 예에서, 제1 페이지(160)는 레스토랑 리스트로부터 레스토랑이 선택될 수 있게 하는 UI 요소(190)를 포함하고, 제2 페이지(180)는 정보를 볼 수 있게 하고, 레스토랑을 계약할 수 있게 하며, 메뉴를 볼 수 있게 하고, 레스토랑을 지지하거나 "좋아하게" 할 수 있게 하며, 및/또는 예약을 할 수 있게 해주는 UI 요소(190)를 포함한다. 이 예에서, 제1 페이지(160)는 예를 들어 이동 장치(100)의 현재 위치에 인접한 레스토랑 리스트를 보여주도록 인스턴스화될 수 있고, 제2 페이지(180)는 예를 들어 제1 페이지(160) 상에 표시된 리스트로부터 선택된 레스토랑과 연관된 상세한 정보를 디스플레이하도록 인스턴스화될 수 있다. 각 페이지는 임의의 횟수로 인스턴스화될 수 있어 앱(110)은 본 명세서에서 기술한 대로 동작할 수 있다.
도 2는 (도 1에 도시된) 앱(110)에 포함된 (도 1에 도시된) UI 요소들(190) 간의 관계를 나타내는 개략도이다. 사용자는 앱(110) 내의 UI 요소(190)와 상호작용하거나 그 요소를 찾아간다. 이 예에서, UI 요소(190)는 트리(200)에서 노드로서 개략적으로 정렬된다. 앱(110)은 제1 페이지(160) 또는 제2 페이지(180)와 같은 하나 이상의 페이지(210)를 포함한다. 이 예에서, 페이지(210)는 제1 테이블 또는 그리드(220) 및 제2 테이블 또는 그리드(230)를 포함한다. 예를 들어, 자식 UI 요소(190)(예를 들어, 제1 그리드(220) 또는 제2 그리드(230))는 그의 부모 UI 요소(190)(예를 들어, 페이지(210)) 내에 포함된다.
이 예에서, 제1 그리드(220)는 텍스트(250)를 포함하는 버튼(240), 및 복수의 맞춤 정렬(270)을 포함하는 리스트(260)를 포함한다. 이 예에서, 각 맞춤 정렬(270)은 제1 텍스트(280)(예를 들어, 이름) 및 제2 텍스트(290)(예를 들어, 주소)를 포함한다. 이 예에서, 제2 그리드(230)는 테이블(291), 및 텍스트(293)를 포함하는 버튼(292)을 포함한다.
적어도 일부 앱(110)은 복수의 UI 요소(190)의 반복되는 시퀀스 또는 패턴(294)을 포함한다. 이 예에서, 제각기의 제1 텍스트(280) 및 제각기의 제2 텍스트(290)를 포함하는 각각의 맞춤 정렬(270)은 패턴(294)으로 식별된다. 또한, 적어도 일부 앱(110)은 복수의 패턴(294)을 포함하는 반복되는 시퀀스 또는 패턴 윈도우(295)를 포함한다. 이 예에서, 균일한 객체들의 리스트형 구조(예를 들어, 패턴(294))는 패턴 윈도우(295)로 식별된다.
도 3a는 분석 서비스를 포함하는 도 1에 도시된 이동 장치와 같은 하나 이상의 이동 장치와 이 하나 이상의 이동 장치에 통신가능하게 연결된 하나 이상의 서버를 포함하는 예시적인 시스템(300)을 보여주는 개략도이다. 보다 구체적으로, 시스템(300)은 네트워크(330)를 통해 서로 통신가능하게 결합된 이동 장치(100), 애플리케이션 서버(310)(예를 들어, 앱을 위한 마켓플레이스) 및 템플릿 서버(320)를 포함한다. 이동 장치(100), 애플리케이션 서버(310) 및 템플릿 서버(320) 간의 통신은 임의의 프로토콜 또는 메커니즘을 사용하여 임의의 유선 또는 무선 연결을 통해 이루어질 수 있다. 이와 관련하여, 네트워크(330)는 인터넷, 무선 네트워크 및/또는 유선 네트워크 중 하나 이상을 포함할 수 있다.
이 예에서, 애플리케이션 서버(310)는 하나 이상의 앱(110)을 제공 및/또는 저장하도록 구성된다. 앱(110)은 이동 장치(100)에 기능을 제공하도록 구성된다. 예시적인 앱은 이메일 애플리케이션 프로그램, 웹 브라우저, 캘린더 애플리케이션 프로그램, 어드레스 북 애플리케이션 프로그램, 메시징 프로그램, 미디어 애플리케이션, 위치 기반 서비스, 검색 프로그램 등을 포함한다. 앱(110)은 네트워크(330)를 통해 액세스가능한 웹 서비스와 같은 대응 앱 또는 서비스와 통신할 수 있다. 예를 들어, 앱(110)은 클라우드에서 실행되는 서버측 서비스 및/또는 클라우드, 애플리케이션 서버(310), 템플릿 서버(320), 및/또는 이동 장치(110)에 의해 액세스가능한 다른 메모리 영역에 저장된 서버측 컴포넌트에 대응하는 이동 장치(100) 상의 클라이언트측 앱을 나타낼 수 있다. 이러한 예는 이동 장치(100)에 부과되는 계산 및 저장 부담을 줄여준다.
이 예에서, 템플릿 서버(320)는 하나 이상의 템플릿(328)을 제공 및/또는 저장하도록 구성된다. 적어도 일부 예에서, 하나 이상의 템플릿(328)은 템플릿 서버(320)에 의해 생성되고 애플리케이션 서버(310)에서 앱(110)과 함께 다운로드될 수 있다. 앱(110)의 구조적 특성(예를 들어, UI 구조)이 이용되어, 실행시간 동안 유효하게 유지되는 의미 정보(예를 들어, 엔티티 타입과 같은 메타데이터)로 앱(110)에 주석을 달 수 있다. 각 템플릿(328)은 UI 요소(190)와 연관된 복수의 엔티티를 포함한다. 적어도 일부 UI 요소(190)는 단일 엔티티와 연관된다. 예시적인 단일 엔티티 UI 요소(190)는 일 타입의 정보에 대한 텍스트(예를 들어, 레스토랑 이름, 주소, 전화번호)를 포함하는 텍스트 박스를 포함한다. 각각의 단일 엔티티 UI 요소(190)는 독립적으로 맞춤화가능하고 따라서 정확한 의미를 할당받을 수 있다. 일부 예에서, 각 UI 요소의 텍스트는 이름, 다양한 관련 메타데이터, 및/또는 사용 정보와 연관된다. 일부 예에서, 템플릿(328)은 실행시간에서 앱(110)과의 사용자 상호작용에 대한 컨텍스트를 제공하도록 구성되고, 따라서 앱(110)은 이동 장치(100)에 낮은 오버헤드를 부여하면서, 보다 효율적으로 또한 효과적으로 이용될 수 있다.
일부 예에서, 템플릿(328)은 앱(110)이 업데이트될 때 및/또는 업데이트된 이후 업데이트된다. 예를 들어, 앱(110)에 대한 업데이트는 이동 장치(100)에 의해 검출 및/또는 식별되고, 연관된 템플릿(328)이 앱 업데이트의 식별에 기초하여 이동 장치(100)에 의해 자동으로 요청 및/또는 다운로드된다. 또 다른 예에서, 업데이트되는 앱(110)은 템플릿 서버(320)에 의해 이동 장치(100) 상에 있는 것으로 검출 및/또는 식별되고, 업데이트되는 템플릿(328)은 업데이트되는 앱(110)의 식별에 기초하여 템플릿 서버(320)에 의해 자동으로 생성된다. 또 다른 예에서, 업데이트되는 템플릿(328)은 업데이트되는 앱(110)이 이동 장치(100)에 의해 다운로드되기 전에 업데이트되는 앱(110)과 연관되고, 업데이트되는 템플릿(328)은 업데이트되는 앱(110)과 동시에 또는 그 이후에 이동 장치(100)에 의해 다운로드된다. 이와 달리, 앱(110) 및 템플릿(328)은 시스템(300)이 본 명세서에서 기술한 대로 동작할 수 있게 임의의 컴퓨팅 장치에 의해 또는 그로부터 임의의 시간에 업데이트 및/또는 다운로드될 수 있다.
일부 예에서, 템플릿 서버(320)는 UI 자동화 컴포넌트(322), 템플릿 생성 컴포넌트(324), 및 계기(instrumenter) 컴포넌트(326)를 포함한다. UI 자동화 컴포넌트(322)는 앱(110)을 자동으로 탐색하고 사용자 애그노스틱 방식으로 및/또는 사람의 개입없이 앱(110)으로부터 하나 이상의 UI 요소(190)와의 하나 이상의 사용자 상호작용을 갭처 및/또는 기록하도록 구성된다. 템플릿 생성 컴포넌트(324)는 UI 요소(190) 및 포함된 텍스트를 추출하고, UI 요소(190)를 엔티티와 연관시키며, 연관된 엔티티와의 UI 요소(190)의 매핑을 포함하는 템플릿(328)을 생성하도록 구성된다. 계기 컴포넌트(326)는 로깅 코드(logging code)를 앱(110)에 주입하도록 구성된다. 적어도 일부 템플릿(328) 및 로깅 코드는 이동 장치(100) 상의 애플리케이션 바이너리 코드에 주입되어 앱(110)이 실행시간 동안 하나 이상의 엔티티를 추출할 수 있다. 이와 달리 또는 그에 더해, 템플릿(328) 및/또는 로깅 코드는 앱(110)이 본 명세서에서 기술한 대로 동작할 수 있게 하는 임의의 레벨에서 주입될 수 있다. 적어도 일부 예에서, 템플릿 및/도는 로깅 코드는 추가의 개발자 입력 없이 주입되어, 이동 장치(100)는 기본 앱(110)의 변경없이 본 명세서에 기술된 대로 기능을 수행하도록 구성된다.
이 예에서, 이동 장치(100)는 애플리케이션 서버(310)로부터 하나 이상의 앱(100)을 인출 및/또는 다운로드하고 및/또는 템플릿 서버(320)로부터 하나 이상의 템플릿(328)을 인출 및/또는 다운로드하며, 하나 이상의 앱(100) 및 하나 이상의 템플릿(328)을 이동 장치(100)에 로컬로 저장하도록 구성된다. 적어도 일부 예에서, 애플리케이션 서버(310)는 템플릿 서버(320)로부터 하나 이상의 템플릿(328)을 인출 및/또는 다운로드하고, 이동 장치(100)는 하나 이상의 앱(110) 및 그들의 제각기의 템플릿(328)을 애플리케이션 서버(310)로부터 인출 및/또는 다운로드한다. 일부 예에서, 이동 장치(100)는 사용자 상호작용을 기록하고 템플릿(328)을 사용하여 사용자 상호작용을 분석하도록 구성된 분석 서비스(340)와 같은 엔티티 추출 컴포넌트를 포함한다. 적어도 일부 예에서, 템플릿(328)을 사용하여 추출된 UI 요소 내에 포함된 엔티티는 이름 및 콘텐츠의 다양한 의미 정보를 나타내는 키-값 쌍의 리스트, 및 엔티티가 애플리케이션에서 나타내는 위치에 대한 구문 정보(syntactical information)를 포함한다. 예를 들어,
Figure pct00001
추출된 엔티티는 운영 체제(OS) 서비스 및 다른 앱(110)이 (허가를 받은 경우) 예를 들어 표준 구조 쿼리 언어(SQL) 쿼리를 사용하여 질의할 수 있는 엔티티 표에 저장될 수 있다. 예를 들어,
Figure pct00002
도 3a를 참조하면, 이동 장치(100)는 적절한 회로, 인터페이스, 로직 및/또는 코드를 포함할 수 있으며, 애플리케이션 공간(111), 운영 체제(112), 메모리(113), CPU(114), 입/출력(IO) 서브시스템(115), 통신 서브시스템(116), 디스플레이(117) 및 감각 서브시스템(180)을 포함할 수 있다.
하나 이상의 앱(110)이 앱(110a,...,110b)으로서 장치(100)의 앱 공간에 다운로드 및 설치될 수 있다. 각각의 앱은 제각기의 사용자 인터페이스(UI) 프레임워크(302a,...,302b)를 포함할 수 있는데, 이 UI 프레임워크는 장치(100)의 하나 이상의 다른 컴포넌트(예를 들어, 분석 서비스(340))가 알림에 가입하여 UI 이벤트(예를 들어, 앱을 사용하는 사용자가 버튼을 터치하는 것, 텍스트를 입력하는 것, 스크롤링하는 것, 페이지를 선호하는 것 등)의 발생시 그 알림을 받을 수 있게 해준다.
분석 서비스(340)는 적절한 회로, 인터페이스, 로직 및/또는 코드를 포함할 수 있고 하나 이상의 앱(110a,...,110b)과의 사용자 상호작용을 기록할 수 있고, 템플릿(328)을 사용하여 사용자 상호작용을 분석할 수 있으며, 저장소(346)에 저장될 수 있는 하나 이상의 사용자 데이터 아이템(350)을 추출하도록 동작가능하다. 분석 서비스(340)는 트레이서 컴포넌트(342), 분석기 컴포넌트(344) 및 저장 컴포넌트(346)를 포함할 수 있다. 트레이서 컴포넌트(342) 및 분석기 컴포넌트(344)는 본 명세서에서 "분석 엔진"으로 지칭된다. 트레이서(342)는 하나 이상의 이벤트(304)(예를 들어, 버튼 클릭, 좋아요 버튼 누름 등과 같은 사용자 동작) 및 하나 이상의 텍스트 스트링(307)을 갖는 UI 트리(306)를 포함할 수 있는 미가공 애플리케이션 콘텐츠(예를 들어, 인앱 데이터(348))를 캡처하도록 동작할 수 있다(UI 트리는 앱의 주어진 페이지 클래스에서 사용자에 의해 소비되는 콘텐츠(그 페이지 클래스 내의 텍스트 스트링을 포함함)를 포함할 수 있고, 예를 들어, 사용자는 주어진 레스토랑 앱 페이지 상에서 보여주는 레스토랑을 좋아할 수 있으며, 레스토랑 이름은 텍스트 스트링(307)일 것이며, 좋아요 액션은 이벤트(304)일 수 있고, 좋아요 액션이 입력된 페이지 클래스는 UI 트리(306)일 수 있다). 트레이서(342)는 하나 이상의 템플릿(328)을 사용하여, 사용자 데이터 아이템(UDI)(350)의 추가 처리 및 생성을 위해 인앱 데이터(348)를 분석기(344)에 전달한다. UDI는 행동 데이터 아이템(BDI)로 지칭될 수 있다.
하나 이상의 UDI(350)가 생성된 후, 이들은 하나 이상의 다른 애플리케이션, OS(112), OS(112)의 서비스 또는 다른 장치(예를 들어, 서버(310))에 의해 액세스될 수 있는 저장소(346)에 저장될 수 있고, 따라서 UDI 콘텐츠는 애플리케이션, 서비스 및 장치 간에 공유된다.
저장소(346)는 장치(100)에서(즉, 로컬로) 및/또는 클라우드에서(예를 들어, 도 5의 512, 310 및/또는 320과 같은 클라우드 서버)에서 구현될 수 있다. 장치(100)의 저장소(346)는 장치(100)에서의 앱(110)의 사용과 연관된 UDI(350)를 저장한다. 그러나, 저장소가 클라우드 서버에서 구현되는 경우, 저장소(346)는 장치(100)에서뿐만 아니라 (동일한 또는 다른 사용자의) 복수의 다른 장치에서의 애플리케이션 사용과 연관된 UDI를 저장할 수 있다. 이와 관련하여, 저장소(346)는 또한 UDI에 대한 액세스를 동일한 장치(100) 및/또는 (동일한 사용자 또는 상이한 사용자의) 다른 장치로부터 앱, OS, OS 서비스에 제공할 수 있다. UDI 정보에 대한 액세스는 (도 4에 도시되어 있는 바와 같이) 액세스 인가가 있을 때 API를 사용하여 제공될 수 있다. 하나 이상의 실시예에 따르면, 저장소(346)는 하나 이상의 앱(110), OS(112), OS 서비스(예를 들어, OS 서비스 또는 독립형 앱일 수 있는 디지털 개인 비서), 및/또는 사전 승인된 액세스를 가지며 하나 이상의 타입의 UDI에 가입한 하나 이상의 다른 장치로 UDI를 자동으로 제공할 수 있다.
메인 프로세서(114)는 데이터를 처리하고, 및/또는 컴퓨팅 장치(100)의 동작, 및/또는 본 명세서에서 기술된 애플리케이션 관련 데이터 기능의 추출 및 공유와 연계하여 수행되는 태스크 및/또는 애플리케이션을 제어 및/또는 관리하도록 동작할 수 있는 적절한 로직, 회로, 인터페이스 및/또는 코드를 포함할 수 있다. 이와 관련하여, 메인 프로세서(114)는 예를 들어 하나 이상의 제어 신호를 이용함으로써 컴퓨팅 장치(100)의 다양한 컴포넌트 및/또는 서브시스템의 동작을 구성 및/또는 제어하도록 동작가능할 수 있다. 메인 프로세서(114)는 예를 들어 시스템 메모리(113)에 저장될 수 있는 애플리케이션, 프로그램 및/또는 코드의 구동 및/또는 실행을 가능하게 할 수 있다. 일부 예에서, 컴퓨팅 장치(100) 상에서 구동 및/또는 실행되는 하나 이상의 애플리케이션(예를 들어, 앱(110a,...,110b)은 디스플레이(117)를 통해 렌더링될 수 있는 비디오 콘텐츠를 생성 및/또는 업데이트할 수 있다.
시스템 메모리(113)는 사용되고, 소비되고, 및/또는 처리될 수 있는 데이터, 코드 및/또는 다른 정보의 영구적인 및/또는 비영구적인 저장, 버퍼링 및/또는 페칭을 가능하게 할 수 있는 적절한 로직, 회로, 인터페이스, 및/또는 코드를 포함할 수 있다. 이와 관련하여, 시스템 메모리(113)는 예를 들어, 판독전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 플래시 메모리, 고체 상태 드라이브(SSD), 및/또는 필드 프로그램가능 게이트 어레이(FPGA)를 비롯하여, 상이한 메모리 기술을 포함할 수 있다. 시스템 메모리(113)는 예를 들어 소프트웨어 및/또는 펌웨어를 비롯하여, 파라미터 및/또는 코드를 포함할 수 있는 구성 데이터를 저장할 수 있다.
통신 서브시스템(116)은 예를 들어 하나 이상의 유선 및/또는 무선 연결 및 네트워크(330)를 통해 컴퓨팅 장치(100)로부터 데이터를 전달받고 및/또는 컴퓨팅 장치(100)로 데이터를 전달하도록 동작가능한 적절한 로직, 회로, 인터페이스, 및/또는 코드를 포함할 수 있다. 통신 서브시스템(116)은 컴퓨팅 장치(102)로 및/또는 그로부터의 신호의 송신 및/또는 수신, 및/또는 적용가능 유선 또는 무선 프로토콜에 따른 송신 또는 수신된 신호의 처리를 용이하게 하는 하나 이상의 유선 프로토콜(예를 들어, 이더넷 표준, MOCA 등) 및/또는 무선 프로토콜 또는 인터페이스(예를 들어, CDMA, WCDMA, TDMA, GSM, GPRS, UMTS, EDGE, EGPRS, OFDM, TD-SCDMA, HSDPA, LTE, WiMAX, WiFi, 블루투스, 및/또는 임의의 다른 이용가능한 무선 프로토콜/인터페이스)를 지원하도록 구성될 수 있다. 이와 관련하여, 신호 처리 동작은 필터링, 증폭, 아날로그-디지털 변환 및/또는 디지털-아날로그 변환, 기저대역 신호의 상향 변환/하향 변환, 인코딩/디코딩, 암호화/복호화, 및/또는 변조/복조를 포함할 수 있다. 본 개시의 실시예에 따르면, 통신 서브시스템(116)은 예를 들어 네트워크(330)를 통한 서버(310,320)로의 유선 및/또는 무선 연결을 제공할 수 있다. 네트워크(330)는 인터넷 및/또는 하나 이상의 유선 및/또는 무선 네트워크를 포함할 수 있다.
감각 서브시스템(180)은 컴퓨팅 장치(100), 그의 사용자(들) 및/또는 그의 환경에 관련 있을 수 있는 감각 정보를 획득 및/또는 생성하기 위한 적절한 로직, 회로, 인터페이스 및/또는 코드를 포함할 수 있다. 예를 들어, 감각 서브시스템(180)은 장소 또는 위치 센서(예를 들어, GPS 또는 다른 GNSS 기반 센서), 주변 상황(예를 들어, 온도, 습도 또는 조도) 센서, 및/또는 움직임 관련 센서(예를 들어, 가속도계, 자이로스코프, 계보기 및/또는 고도계)를 포함할 수 있다.
I/O 서브시스템(115)은 장치(100)와의 사용자 상호작용을 가능하게 하고, 사용자(들)로부터 입력을 획득하는 것을 가능하게 하며 및/또는 사용자(들)에게 출력을 제공할 수 있게 하는 적절한 로직, 회로, 인터페이스 및/또는 코드를 포함할 수 있다. I/O 서브시스템(115)은 예를 들어, 비디오, 오디오 및/또는 텍스트를 비롯하여, 다양한 타입의 입력 및/또는 출력을 지원할 수 있다. 이와 관련하여, 컴퓨팅 장치(100) 외부에 있거나 그 내부에 통합된 전용 I/O 장치 및/또는 컴포넌트는 I/O 서브시스템(115)의 동작 동안 데이터를 입력 및/또는 출력하는데 사용될 수 있다. 예시적인 I/O 장치는 하나 이상의 내장 카메라(예를 들어, 전면 및/또는 후면 카메라), 하나 이상의 디스플레이(예를 들어, 디스플레이(117)), 마우스, 키보드, 터치스크린, 음성 입력 인터페이스, 및 그 밖의 다른 입/출력 인터페이스 또는 장치를 포함할 수 있다. 비디오 출력과 관련하여, I/O 서브시스템(115)은 비디오 콘텐츠, 그래픽 및/또는 텍스트 데이터를 생성 및/또는 처리하고, 및/또는 그에 기초하여 예를 들어 디스플레이(117)를 통해 디스플레이할 비디오 프레임을 생성하도록 동작할 수 있다.
디스플레이(117)는 I/O 서브시스템(115)을 통해 핸들링 및/또는 처리될 수 있는 비디오 콘텐츠의 디스플레이를 가능하게 할 수 있는 적절한 로직, 회로, 인터페이스 및/또는 코드를 포함할 수 있다.
도 3b는 하나 이상의 실시예에 따라 도 3a의 분석 서비스에 의해 사용될 수 있는 예시적인 템플릿을 나타내는 개략도이다. 도 3b를 참조하면, 주어진 앱(예를 들어, 앱 B)의 주어진 페이지 클래스(예를 들어, 페이지 클래스 A)에 대해 예시적인 템플릿(328)이 생성될 수 있다. 템플릿(328)은 복수의 UI 요소(350,...,352)를 포함할 수 있는데, 각 UI 요소는 엔티티 타입(예를 들어, 354,...,356) 및 연관된 엔티티 그룹 식별자(예를 들어, 358,...,360)를 포함한다. UI 요소는 또한 액션 타입 정보(또는 액션 의미 정보)(362,...,364)를 포함할 수 있다. 도 6은 하나 이상의 실시예에 따라 식사 관련 앱의 예시적인 엔티티 템플릿의 일부를 보여준다.
하나 이상의 실시예에 따르면, 템플릿(328)은 엔티티 관계 정보(366)를 포함할 수 있다. 엔티티 관계(366)는 둘 이상의 엔티티(또는 UI 요소)(350,...,352) 간의 관계를 나타낼 수 있다. 그룹 식별 정보(358,...,360)는 엔티티 관계 정보(366)의 하나의 타입일 수 있다. 그러나, 엔티티 관계 정보(366)는 또한 직접/명시적 관계와 같은 다른 타입의 관계를 나타낼 수 있다. 예를 들어, 엔티티 관계 정보(366)는 엔티티 "버거킹"과 엔티티 "패스트 푸드 레스토랑" 간의 명시적인 관계를 나타낼 수 있다(즉, "버거킹"은 "패스트 푸드 레스토랑"이다).
분석 엔진(트레이서(342) 및 분석기(344))
상위 레벨에서, 분석 엔진(342 및 344을 총칭함)은 2개의 태스크, 즉 (1) (트레이서(342)에 의해) 온더 플라이로 미가공 앱 콘텐츠 및 인앱 사용자 액션을 캡처하는 태스크, 및 (2) 콘텐츠 및 액션의 의미를 (분석기(344)에 의해) 추론하는 태스크를 수행한다.
미가공 앱 콘텐츠 및 사용자 액션을 캡처하는 태스크는 앱을 설치하거나 또는 OS에 의해 제공되는 액세스 서비스를 사용함으로써 (예를 들어, 앱(110)의 UI 프레임워크(302a,...,302b)를 사용함으로써) 자동으로 수행될 수 있다. 두 경우 모두에서, 분석 서비스(340)는 장치 스크린 상에 현재 디스플레이되는 모든 UI 요소 및 (앱의) 콘텐츠(예를 들어, UI 트리(306) 및 텍스트 스트링(307)), 및 탭 및 페이지 전환과 같은 모든 사용자 액션(예를 들어, 이벤트(304))을 캡처할 수 있다.
이러한 단계에서 캡처된 콘텐츠는 의미가 부족할 수 있다. 의미를 추론하는 태스크가 더 필요하고 이는 분석기(344)에 의해 수행된다. 핵심적인 도전과제는 클라우드에게 태스크를 떠넘기지 않을 뿐만 아니라(프라이버시 및 낮은 오버헤드), 개발자에게도 태스크를 떠넘기지 않으면서(제로-개발자 노력) 엔티티 추출 분석을 수행하는 낮은 오버헤드의 장치상의 서비스(low-overhead on-device service)를 달성하는 것이다. 이러한 문제에 대한 우리의 솔루션은 모바일 앱이 콘텐츠를 디스플레이하는 방식에 대한 두 개의 핵심적인 관찰로부터 얻어진다.
배경으로서, 현재의 모바일 앱은 사용자가 상호작용 및 탐색할 수 있는 페이지 세트로서 구성된 콘텐츠를 디스플레이한다. 전형적인 앱은 적은 수의 페이지 클래스로 구성되는데, 각 페이지 클래스는 상이한 콘텐츠를 가진 다수의 페이지 인스턴스(또는 간단히, 페이지)로 인스턴스화될 수 있다(예를 들어, 레스토랑 앱에서, Nara 및 Izumi 레스토랑에 대한 세부사항이 "RestaurantDetails" 페이지 클래스의 두 개의 별개의 인스턴스 내에 표시된다). 각 페이지는 그의 페이지 클래스에 정의된 UI 레이아웃에 따라 콘텐츠를 디스플레이한다. 앱 페이지는 버튼, 텍스트 박스, 리스트 및 이미지와 같은 UI 요소들의 세트를 갖는다. 페이지 내의 요소들은 (DOM 트리와 같은) UI 트리로 구성되는데, 노드들이 UI 요소이고 자식 요소는 그의 부모 요소 내에 포함된다. 일부 UI 요소(예를 들어, 버튼)는 상호작용가능하며 연관된 이벤트 핸들러를 갖는다.
전술한 용어들을 통해, 우리는 다음을 관찰한다.
싱글톤 엔티티(singleton entities)
다수의 UI 요소는 단일 엔티티를 포함한다. 예를 들어, 페이지 내의 TextBlock이라는 제목은 종종 일 타입의 정보, 예를 들어 레스토랑의 이름을 포함한다. 사실, 개발자는 레스토랑 이름, 주소 및 전화번호와 같은 다양한 타입의 정보를 상이한 UI 요소에 넣어 이들이 보기 및 탭 액션을 위해 독립적으로 맞춤화될 수 있도록 하는 경향이 있다. 이것은 이들 UI 요소에 정확한 의미를 부여할 수 있게 해준다.
소수의 안정적인 UI 구조
앱 페이지는 적은 수의 페이지 클래스로부터 인스턴스화된다. 이것은 이 적은 수의 페이지 클래스 내의 UI 요소에 주석을 첨부함으로써 앱 내의 모든 UI 요소를 커버할 수 있게 해준다. 또한, 주석은 시간에 걸쳐 안정적이게 유지되는데, 즉 레스토랑으로 주석이 달린 UI 요소는 실행시간 동안 잠재적으로 무한 개수의 이름(이들 모두는 레스토랑일 것임)으로 인스턴스화될 수 있다. 이것은 UI 요소가 오프라인으로 한번 주석이 부여되고 이후에 실행시간 동안 반복적으로 사용될 수 있음을 암시한다. 이러한 프로세스는 개발자(및 사용자) 개입없이 수행되고, 따라서 그것은 오프라인으로 실행될 수 있어, 결과적으로 고비용일 수 있다.
전술한 관찰은 도면에 도시되어 있는 바와 같이 분석 서비스(340)의 새로운 2-스테이지 아키텍처로 안내한다.
우리가 행동 분석을 오프라인으로 또한 임의의 사용자 개입없이 추출하기를 원하는 앱이 주어진 경우, 분석 서비스(340)는 앱과 자동으로 상호작용하여 다양한 앱 페이지를 탐색하고 실행시간 동안 그 앱에 의해 디스플레이되는 모든 콘텐츠를 캡처하는 UI 자동화 시스템과 함께 앱을 자동으로 실행한다. 데이터는 사용자가 다양한 앱 페이지 상에서 소비하는 콘텐츠(예를 들어, List UI 요소의 ListItem에 포함된 텍스트) 및 사용자 액션(예를 들어 다양한 UI 요소의 탭핑)을 포함한다. 템플릿 생성 모듈(324)은 복합 엔티티 추출 기법을 사용함으로써 이들 미가공 콘텐츠를 처리하여 앱 내의 각 페이지 클래스에 대한 엔티티 템플릿을 생성한다. 페이지 템플릿은 의미 카테고리, 또는 엔티티 타입(예를 들어, 레스토랑 이름, 노래 제목, 레시피 이름 등)으로 주석이 달린 UI 요소들의 리스트이다.
온라인의 장치 상의 스테이지(onlie, on-device, stage): 실행시간에서, 트레이서(342)는 본 명세서에서 기술한 바와 같이 미가공 인앱 데이터를 캡처한다. 수집된 데이터는 UI 자동화 모듈에 의해 오프라인으로 생성된 것과 유사한 포맷을 가지지만, 본 명세서에서 캡처된 콘텐츠는 사용자에 의해 생성된 것이며, 따라서 프라이버시에 민감할 수 있다. 데이터는 아래에서 설명하는 바와 같이 캡처됨에 따라 (분석기(344)에 의해) 분석된다. 첫째, 각 앱 페이지에 대해, 엔티티 템플릿을 사용하여, 미가공 데이터 내에 등장하는 모든 텍스트는 회사 명칭, 사람 또는 위치와 같은 사전 정의된 카테고리로 분류된다. 둘째, 템플릿을 사용함으로써, 카테고리에 따라 분류된 다양한 텍스트는 그룹화될 수 있되 각 그룹은 하나의 논리적 엔티티를 나타낸다. 예를 들어, 레스토랑 이름, 그의 주소 및 전화번호는 모두 하나의 엔티티로 결합될 수 있다. 이와 관련하여, 엔티티 템플릿(328)을 사용하여, 온라인의 장치 상의 스테이지는 하나 이상의 매칭 동작을 사용한다.
앱의 엔티티 템플릿은 앱의 각 페이지 클래스마다 하나씩 있는 템플릿들의 집합이다. 각 템플릿은 본질적으로 주석이 달린 UI 트리이다. 도 6에 도시되어 있는 바와 같이, 트리 내의 각 UI 요소는 그의 리프-투-루트 경로로 표현되며 엔티티 타입(예를 들어, 레스토랑) 및 엔티티 그룹 식별자(예를 들어, 그룹 14)로 주석이 달린다. 엔티티 타입 또는 그룹 식별자의 널 값(null value)은 UI 요소의 콘텐츠가 공지된 엔티티 타입(예를 들어, 텍스트 "저작권(Copyright)")으로서 분류될 수 없음을 나타낸다. 그룹 식별자는, 주소 및 요리 타입 엔티티가 올바른 레스토랑 엔티티에 속하는 것으로 보이도록, 엔티티의 클러스터링을 허용한다. 유사하게, 사용자 액션을 포함하는 (도면에는 도시되어 있지 않은) 버튼과 같은 UI 요소는 그들의 타입 및 그룹으로 주석이 부여된다. 방금 설명한 것과 같은 엔티티 템플릿을 생성하기 위해, 분석 서비스(340)는 (1) 앱 페이지를 위한 콘텐츠를 생성할 필요가 있고 (2) 이들 페이지 내의 엔티티를 인식할 필요가 있다. 예시적인 실시예에서, 그룹 식별(및 그룹 식별자)은 광범위하게 사용될 수 있어, 둘 이상의 엔티티가 어떻게든 서로 관련이 있는 경우 이들 엔티티는 동일한 그룹 내에 배치될 수 있다. 예를 들어, "좋아요(Like)" 버튼은 레스토랑을 지칭하기 때문에 이 "좋아요" 버튼 및 레스토랑 이름은 동일한 그룹 내에 있을 수 있고, 주소가 레스토랑에 관한 것이면 주소 및 레스토랑 이름은 동일한 그룹 내에 있다.
앱 페이지용 콘텐츠의 생성
실행시간에 앱이 디스플레이하는 콘텐츠를 캡처하기 위해, 분석 서비스(340)는 앱을 자동으로 시작할 수 있는 (WP 및 안드로이드용) UI 자동화 도구를 사용하고, (버튼을 탭하고, 텍스트 박스를 채우고, 페이지를 스와이핑함으로써) 그의 UI 요소와 상호작용하며 다양한 페이지를 탐색할 수 있다. 서비스(340)는 (예를 들어, 템플릿 서버(320)에서 구현되는) 클라우드 내의 UI 자동화 도구를 실행할 수 있다. UI 자동화 도구는 앱 내의 모든 페이지를 방문하고(또는 장시간 동안 실행되고) 모든 방문한 페이지의 콘텐츠 및 UI 구조를 기록하도록 구성된다. 양호한 커버리지를 위해, UI 자동화 도구는 사용자이름/패스워드를 요구하는 앱을 위해 그 사용자이름/패스워드를 부여받고 여러 번 실행되어 콘텐츠를 기록할 수 있다.
앱 페이지 내의 엔티티의 인식
분석 서비스(340)는 UI 자동화 도구에 의해 캡처된 앱 콘텐츠(현재는 텍스트만)로부터 엔티티를 추출한다. 추출된 엔티티는 엔티티 템플릿을 생성하는데 사용된다. 일부 텍스트(웹 문서, 뉴스 기사)가 주어지면, 목표는 지명된 엔티티의 언급(예를 들어, 호텔 이름)을 식별하는 것이다. 근본적으로, 이것은 주어진 스트링이 어떤 엔티티를 지칭하는지를 결정하는 분류 프로세스이다. 그러나, 모호성으로 인해, 이름이 지칭하는 진정한 엔티티에 대한 확실성이 항상 있는 것은 아니며, 이 경우, 연관된 확률을 갖는 후보 엔티티의 리스트가 반환된다.
엔티티 추출에서의 핵심 도전과제는 명확성인데, 즉 엔티티의 이름은 종종 불명확하여 다수의 상이한 의미를 가질 수 있다. 예를 들어, 이름 "Via Tribunali"는 그 사용에 따라, 뉴욕의 레스토랑 또는 이태리의 거리 이름을 지칭할 수 있다. 이름이 지칭하는 정확한 엔티티를 식별하기 위해, 엔티티 추출 알고리즘은 이름의 "컨텍스트"(즉, 주변 텍스트)를 이용하고 그것을 소정의 지식 기반 또는 사전에 비교한다. 이 예에서, 이름 "Via Tribunali"가 다른 레스토랑 또는 음식 엔티티가 언급된 문서 내에 등장하는 경우, 그것은 높은 확률로 레스토랑으로서 분류될 수 있다. 한편, 문서가 다른 주소, 전화번호 및 지도를 포함하는 경우, 그것은 거리 이름일 확률이 가장 높다.
UI 자동화 도구는 엔티티 템플릿들(예를 들어, 328)을 조립할 수 있다. 페이지 클래스 내의 각 UI 요소에 대해, UI 자동화 도구는 연관된 확률을 갖는 가능한 엔티티 타입의 세트를 생성한다. 각 요소에 대해, 최대 확률을 갖는 엔티티 타입이 선택될 수 있다. 앞서 발견된 패턴 시퀀스를 간단히 UI 트리의 리프 노드에 적용함으로써 엔티티 그룹 식별자가 할당될 수 있다.
Appstract API 및 사용 사례
분석 서비스(340)는 API를 OS 및 앱에 제공할 수 있다. 보다 구체적으로, 분석 서비스(340)는 3개의 데이터 추상화, 즉 엔티티, 사용자 액션 및 행동 데이터 아이템(BDI)(또는 사용자 데이터 아이템, 즉 UDI)(BDI 및 UDI는 본 명세서에서 서로 교환가능하게 사용된다)을 제공할 수 있다. 엔티티는 사용자가 "어떤" 콘텐츠를 소비하는지를 캡처한다. 이들은 타입과 이름으로, 예를 들어 <레스토랑 이름, "Nara">로 구성된다. 액션은 사용자가 이러한 콘텐츠와 "어떻게" 상호작용했는지를 캡처한다. 액션은 또한 타입과 이름으로 구성되며, 가능한 타입은 "긍정", "부정" 또는 "중립"이다(이에 대해서는 나중에 자세히 설명됨). 액션의 예는 <pos action, "book-table">이다. 엔티티 및 액션은 템플릿 매칭을 통해 추출된다. 엔티티, 액션 및 상호작용 이력은 결합되어 BDI를 형성하는데, 이의 포맷은 다음과 같다.
Figure pct00003
단일 BDI는 다수의 관련 엔티티 및 다수의 액션(엔티티 그룹 식별자를 사용하여 취합됨)을 포함할 수 있다. BDI는 또한 관심 있는 다양한 암시적 표시자를 포함한다.
1) 긍정적 감정의 액션: 긍정적인 의미를 뜻하는 라벨(예를 들어, "좋아요") 또는 런처(예를 들어, 전화번호)를 갖는 버튼 또는 하이퍼링크와 같은 UI 요소에 대한 탭 이벤트; 부정적인 액션 및 중립적인 액션에 대해서도 유사함.
2) 탭 이벤트의 시간 및 빈도: 사용자가 페이지 상에서 소비하는 시간 및 사용자가 집적으로 상호작용하는 정도.
3) 시간에 걸쳐 그리고 상이한 앱에서의 동일한 엔티티의 반복(데이터베이스 카운트로서 계산됨).
BDIInfo는 엔티티가 캡처된 위치(앱, 페이지 클래스, UI 요소 좌표), 그것이 클릭되었는지 여부, 및 그것을 포함하는 페이지로 안내하는 UI 이벤트의 시퀀스(UI 트레이스)가 무엇이었는지에 대한 정보를 포함한다. 이 트레이스는 사용자 상호작용을 자동으로 재생하는데 사용될 수 있다. BDIInfo는 OS에 의해서만 사용되려 한다.
BDI는 사용자 상호작용의 간편한 표현을 제공하는데, 그 이유는 이들은 시간에 걸쳐 발생한 엔티티 및 액션을 통합할 뿐만 아니라, "관련없는" 콘텐츠는 폐기되기 때문이다. 앱과의 상호작용이 종료되면(즉, 앱이 종료되거나 소정의 시간 동안 유휴 상태로 유지되면), 상호작용 로그는 역전이(back transitions)로 인한 루프(이들은 사용자가 실수로 보았거나 관심 대상이 아닌 콘텐츠를 포함할 수 있다)를 제거하도록 처리된다. 또한, 동일한 타입의 다수의 엔티티(예를 들어, 아이템의 리스트)를 갖는 페이지 클래스에서, 사용자가 상호작용한 엔티티(예를 들어, 탭한 아이템)만이 유지된다.
분석 서비스(340)는 두 타입의 API(예를 들어, 도 7의 표 1)를 제공할 수 있다. 온라인에서, OS 및 앱은 스크린 상에 현재 디스플레이되는 콘텐츠를 요청할 수 있거나 또는 특정 사용자 액션 또는 타입의 엔티티가 발생되는 경우 통보받을 것을 요청할 수 있다(예를 들어, "좋아요"가 클릭되는 경우 페이지 콘텐츠). 이러한 API를 통해, 사용자의 현재 활동 내로 소정의 스냇샵을 획득하는 것이 가능할 수 있다. 이와 달리, SQL-식 인터페이스를 노출한다. 이하는 사용자의 요리 선호에 대해 알기 위한 쿼리의 예이다.
Figure pct00004
전술한 쿼리는 사용자가 발생 순서에 따라 그의 즐겨찾기에 추가한 요리 타입의 엔티티(즉, 레스토랑)를 반환한다.
도 7의 표 2는 분석 서비스(340)를 사용하여 구현될 수 있는 8개의 예시적인 사용 사례를 나열한다. 공간이 부족한 관계로, 이들 중 4개만이 간략히 설명된다.
Context Notifications: ("book-table" 액션에 의해 검출되는) 예약된 레스토랑 또는 사용자가 좋아하는("좋아요"를 클릭한) 노래는 "관련" 엔티티의 예이다. OS는 관심 있는 이벤트 및/또는 엔티티에 대한 필터를 통해 현재 뷰에 가입하고, 다른 앱이 소비하도록 시기 적절하게 통지를 생성한다. 예를 들어, 캘린더 앱은 레스토랑 예약을 위한 엔티티를 자동으로 생성할 수 있고, 구글 맵과 같은 맵 앱은 주소를 캐싱하고 나중에 탐색을 제공할 수 있다.
App-tasker: 액세스 서비스(예를 들어, 구글 토크백) 및 개인 디지털 비서는 태스크 완료를 위해 Appstract를 사용할 수 있다. 사용자가 "음악 재생(Play Music)"을 요청하는 경우를 생각해 본다. App-tasker는 각각의 TYPE SONG BDI와 연관된 UI 트레이스에 대해 분석 저장소에 질의하고, 1) 태스크에 대해 어떤 앱이 사용될 수 있는지, 및 2) UI 이벤트의 어떤 시퀀스를 태스크가 포함하는지를 추론한다. 이러한 부류의 태스크 템플릿을 사용하면, 서비스는 사용자를 보다 효율적으로 안내할 수 있거나 또는 심지어 태스크를 자동으로 완료할 수 있다. 예를 들어, UI 트레이스가 페이지 "MusicSelect.xaml"에서, TYPE MUSIC GENRE 엔티티를 포함하는 ListItem 0x1489A가 클릭되었음을 보고하는 경우, 트레이스를 재생할 때 서비스는 사용자의 분석 저장소에서 발견된 가장 빈번한 TYPE MUSIC GENRE 엔티티를 자동으로 클릭할 것이다(또는 알려져 있지 않은 경우 그것을 사용자에게 요청할 것이다). UI 이벤트의 시퀀스를 사용자에게 투명하게 재생하기 위해, 안드로이드 액세스 서비스와 같은 서비스가 확장될 수 있다.
RankedList 및 MusicNewsreader: RankedList는 앱 개발자가 그들의 앱 내에 개인화를 신속하게 구축할 수 있게 해주는 타입의 UI 요소이다. 이것은 간단하지만, 강력한 추상화를 제공한다. 개발자의 관점에서, 이것은 List UI 요소를 생성하는 것만큼이나 간단하다(SQL 쿼리가 없고, 랭킹 로직도 없다). 기능적인 관점에서, 이것은 강력한데, 그 이유는 상이한 카테고리의 다수의 앱으로부터 추출된 행동 분석을 사용하여 객체들의 랭킹을 가능하게 하기 때문이다. "사용자가 가장 빈번히 듣는 것"(list.orderBy(TYPE MUSIC SONG,TYPE MOST FREQUENT))으로 정의된 사용자의 "좋아하는" 음악 아티스트에 기초하여 음악 뉴스를 랭킹하는데 이 API를 사용하는 Music-NewsReader(도 4d)를 구축하였다. 이러한 API가 사용될 수 있는 방식에 대한 다른 예는 요리 선호에 기초하여 요리 책에 등급을 부여하는 쇼핑 앱 또는 음악 선호에 벨소리를 제안하는 것이다.
도 4는 하나 이상의 실시예에 따라, 분석 서비스로부터 사용자 데이터 아이템(UDI)에 액세스하는 예시적인 API 사용을 보여주는 개략도이다. 도 4를 참조하면, 분석기(344)에 의해 생성된 UDI 및/또는 저장소(346) 내에 저장된 UDI 중 하나 이상은 예를 들어 쿼리 API(404)를 사용하여 액세스될 수 있다. 예를 들어, 하나 이상의 앱(110a,...,110b)은 UDI에 대한 액세스를 요청할 수 있고, 액세스 제어 모듈(402)(분석 서비스(340)의 일부일 수 있음)은 요청 앱이 저장소(346) 및/또는 분석기(344)에 액세스하여 UDI를 획득할 수 있는 권한을 부여받았는지를 결정할 수 있다. 액세스 제어(402)는 앱, OS, OS 서비스, 및/또는 다른 장치(예를 들어, 동일한 사용자의 다른 장치) 사이에서 어떤 타입의 데이터가 공유될 수 있는지를 명시할 수 있는 정책 문서를 통해 지정될 수 있다.
도 5는 하나 이상의 실시예에 따라, 분석 서비스의 예시적인 구현을 나타내는 개략도이다. 도 5의 실시예(520)에서 알 수 있는 바와 같이, 분석 서비스(340)는 하나 이상의 기존의 애플리케이션(예를 들어, 502,...,504)의 일부로서 구현될 수 있다. 실시예(530)에서, 분석 서비스(340)는 장치(100) 상에서 독립형 앱으로서 구현될 수 있다. 실시예(540)에서, 분석 서비스(340)는 클라우드 서버(512)에서 구현될 수 있고 애플리케이션(502,..,504)은 네트워크(510)를 통해 분석 서비스(340)에 액세스할 수 있다. 분석 서비스(340)는 또한 클라우드 서버(512)에서 부분적으로 구현될 수 있고(예를 들어, 저장소(346)만이 서버(512)에 있을 수 있고), 트레이서 및 분석기는 하나 이상의 앱(502,...,504)에서 (및/또는 대응하는 장치용 운영 체제의 일부로서) 구현될 수 있다.
도 8 내지 도 10은 하나 이상의 실시예에 따라, 애플리케이션 관련 사용자 데이터를 추출 및 공유하는 예시적인 방법을 나타내는 흐름도이다. 도 3a 내지 도 8을 참조하면, 예시적인 방법(800)은 컴퓨팅 장치(100)에서 실행되는 복수의 앱(110a) 중 적어도 하나에 대한 인앱 데이터가 추출되는 810에서 시작할 수 있다. 인앱 데이터(348)는 적어도 하나의 앱이 실행되는 동안 사용자(예를 들어, 306,307)에 의해 소비된 콘텐츠, 및/또는 이 콘텐츠와 연계하여 행해진 적어도 하나의 액션(304)을 포함한다. 820에서, 적어도 하나의 앱과 연관된 엔티티 템플릿(328)은 인앱 데이터 내의 복수의 텍스트 스트링(307)을 엔티티 템플릿(328)에 의해 지정된 복수의 데이터 타입(354,...356) 중 적어도 하나로 분류하는데 사용될 수 있다. 830에서, 분류된 복수의 텍스트 스트링(307) 중 적어도 일부를 결합함으로써 (예를 들어, 분석기(344)에 의해) 적어도 하나의 사용자 데이터 아이템(UDI)(350)이 생성된다. 적어도 하나의 UDI(350)는 복수의 앱 중 제2 앱, 컴퓨팅 장치에서 실행되는 운영 체제(112), 운영 체제의 서비스(예를 들어, 디지털 개인 비서 서비스), 및/또는 적어도 또 다른 장치(예를 들어, 장치(100)의 사용자의 적어도 또 다른 장치)에서 실행되는 서비스 중 적어도 하나에 의해 액세스가능하다.
도 3a 내지 도 7 및 도 9를 참조하면, 예시적인 방법(900)은 분석기 서비스(340) 내의 트레이서(342)가 애플리케이션(예를 들어, 110)의 페이지 클래스와 연계하여 사용자 액션에 의해 트리거된 사용자 인터페이스(UI) 이벤트(예를 들어, 304)를 검출할 수 있는 902에서 시작할 수 있다. UI 이벤트는 페이지 클래스의 UI 트리(306)와 연관될 수 있다. 검출은 컴퓨팅 장치의 운영 체제(112)의 일부일 수 있는 분석 서비스(340) 내의 트레이서 컴포넌트(342)를 사용하여 수행될 수 있다. 검출은 애플리케이션(110)이 컴퓨팅 장치에서 실행되는 동안 수행될 수 있다.
904에서, 분석기 서비스(340) 내의 분석기(344)는 컴퓨팅 장치에서 실행되는 애플리케이션(110)과 연관된 복수의 템플릿을 수신할 수 있되, 복수의 템플릿 각각은 복수의 엔티티 타입(354,...,356) 및 액세 타입(362,...,364)을 포함한다.
906에서, 분석기(344)는 UI 트리 내의 복수의 텍스트 스트링을 복수의 템플릿(328) 중 적어도 하나와 매칭시켜 UI 트리 내의 복수의 텍스트 스트링을 적어도 템플릿(328)내의 복수의 엔티티 타입 중의 엔티티 타입 또는 복수의 액션 타입 중의 액션 타입으로 분류할수 있다.
908에서, 분석기(344)는 UI 트리 내의 분류된 복수의 텍스트 스트링의 적어도 일부를 결합함으로써 행동 데이터 아이템(BDI)(예를 들어, UDI(350))을 생성할 수 있다.
910에서, 분석 서비스(340)는 클라이언트 장치에서 실행되는 또 다른 애플리케이션, 클라이언트 장치에서 실행되는 하나 이상의 서비스, 및/또는 또 다른 장치 중 적어도 하나에 (예를 들어, 저장소(346)에 저장된) 생성된 BDI를 제공할 수 있다.
도 3a 내지 도 7 및 도 10을 참조하면, 예시적인 방법(1000)은 분석기 서비스(340) 내의 트레이서(342)가 애플리케이션(예를 들어, 110)의 페이지 클래스와 연계하여 사용자 액션에 의해 트리거된 사용자 인터페이스(UI) 이벤트(예를 들어, 304)를 검출할 수 있는 1002에서 시작할 수 있다. UI 이벤트는 페이지 클래스의 UI 트리(306)와 연관될 수 있다. 검출은 컴퓨팅 장치의 운영 체제(112)의 일부일 수 있는 분석 서비스(340) 내의 트레이서 컴포넌트(342)를 사용하여 수행될 수 있다. 검출은 애플리케이션(110)이 컴퓨팅 장치에서 실행되는 동안 수행될 수 있다.
1004에서, 분석기 서비스(340) 내의 분석기(344)는 UI 트리(예를 들어, 306) 내의 복수의 텍스트(예를 들어, 307)를 애플리케이션(110a,...,110b 중 하나 이상)용의 복수의 템플릿(예를 들어, 328) 중 적어도 하나와 매칭시켜, UI 트리 내의 복수의 텍스트를 적어도 이름, 데이터 타입, 및 그룹 식별(또는 엔티티 관계 정보(366)에 의해 지정된 또 다른 타입의 엔티티 관계)로 분류할 수 있다.
1006에서, 분석기 서비스(340) 내의 분석기(344)는 적어도 하나의 사용자 액션과 연관되고 동일한 그룹 식별을 갖는(또는 식별된 엔티티 관계(366)를 통해 연관된) UI 트리 내의 분류된 복수의 엔티티의 적어도 일부를 결합함으로써 적어도 하나의 사용자 데이터 아이템(예를들어, UDI(350))을 생성할 수 있다.
1008에서, 분석 서비스(340)는 네트워크 저장소(예를 들어, 하드웨어 및/또는 소프트웨어로 구현되는 장치 상의 또는 원격의 저장소일 수 있는 저장소(346))에 생성된 적어도 하나의 UDI를 저장할 수 있다.
1010에서, 분석 서비스(340)는 저장소(346) 및 저장된 적어도 하나의 UDI에 대한 액세스를 제공할 수 있다. 예를 들어, 액세스는 클라이언트 장치에서 실행되는 적어도 또 다른 장치, OS(112), OS(112)의 서비스(예를 들어, 디지털 개인 비서), 및/또는 또 다른 컴퓨팅 장치에 제공될 수 있다.
도 11은 몇몇 설명된 실시예들이 구현될 수 있는 예시적인 컴퓨팅 시스템을 나타내는 도면이다. 본 혁신들은 다양한 범용 또는 전용 컴퓨팅 시스템에서 구현될 수 있으므로, 컴퓨팅 시스템(1100)은 용도 또는 기능의 범주에 대해 어떠한 제한을 하려는 것이 아니다.
도 11을 참조하면, 컴퓨팅 시스템(1100)은 하나 이상의 처리 장치(1110, 1115) 및 메모리(1120, 1125)를 포함한다. 도 11에서, 이러한 기본 구성(1130)은 점선 내에 포함된다. 처리 장치(1110, 1115)는 컴퓨터 실행가능 명령어를 실행한다. 처리 장치는 범용 중앙 처리 장치(CPU), 애플리케이션 특정 집적 회로(ASIC: application-specific integrated circuit) 내의 프로세서 또는 임의의 다른 타입의 프로세서일 수 있다. 멀티 프로세싱 시스템에서는, 복수의 처리 장치가 컴퓨터 실행가능 명령어를 실행하여 처리 능력을 증가시킨다. 예를 들어, 도 11은 중앙 처리 장치(CPU)(1110)와 함께 그래픽 처리 장치 또는 공동-처리 장치(1115)를 보여준다. 유형의 메모리(1120, 1125)는 처리 장치(들)에 의해 액세스 가능한 휘발성 메모리(예, 레지스터, 캐시, RAM), 비휘발성 메모리(예, ROM, EEPROM, 플래시 메모리 등), 또는 이 둘의 일부 조합일 수 있다. 메모리(1120, 1125)는 본 명세서에 기술된 하나 이상의 혁신기술을 구현하는 소프트웨어(1180)를 처리 장치(들)에 의해 실행하기에 적합한 컴퓨터 실행가능 명령어의 형태로 저장한다.
컴퓨팅 시스템은 추가적인 특징을 가질 수 있다. 예를 들어, 컴퓨팅 시스템(1100)은 저장소(1140), 하나 이상의 입력 장치(1150), 하나 이상의 출력 장치(1160) 및 하나 이상의 통신 연결부(1170)를 포함한다. 버스와 같은 상호연결 메커니즘(도시되지 않음), 컨트롤러 또는 네트워크가 컴퓨팅 시스템(1100)의 컴포넌트들을 상호연결한다. 일반적으로, 운영체제 소프트웨어(도시되지 않음)는 컴퓨팅 시스템(1100)에서 실행되는 다른 소프트웨어를 위한 동작 환경을 제공하고 컴퓨팅 시스템(1100)의 컴포넌트의 활동을 조정한다.
유형의 저장소(1140)는 착탈식 또는 비착탈식일 수 있고 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD 또는 정보를 저장하는데 사용될 수 있으며 컴퓨팅 시스템(1100) 내에서 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 저장소(1140)는, 본 명세서에 기술된 하나 이상의 혁신을 구현하는 소프트웨어(1180)에 대한 명령어를 저장한다.
입력 장치(들)(1150)는 키보드, 마우스, 펜 또는 트랙볼과 같은 터치 입력 장치, 음성 입력 장치, 스캐닝 장치 또는 컴퓨팅 시스템(1100)에 입력을 제공하는 다른 장치일 수 있다. 비디오 인코딩을 위해, 입력 장치(들)(1150)는 카메라, 비디오 카드, TV 튜너 카드 또는 아날로그나 디지털 형식의 비디오 입력을 수신하는 유사한 장치, 또는 컴퓨팅 시스템(1100)으로 비디오 샘플을 판독하는 CD-ROM이나 CD-RW일 수 있다. 출력 장치(들)(1160)는 디스플레이, 프린터, 스피커, CD-라이터 또는 컴퓨팅 시스템(1100)으로부터의 출력을 제공하는 다른 장치일 수 있다.
통신 연결부(들)(1170)는 통신 매체를 통한 다른 컴퓨팅 엔티티로의 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행가능 명령어와 같은 정보, 오디오 또는 비디오 입력이나 출력, 또는 다른 데이터를 변조된 데이터 신호로 운반한다. 변조된 데이터 신호는 자신의 특성 중 하나 이상이 신호에 정보를 인코딩하는 방식으로 설정되거나 변경되는 신호이다. 예시로서(제한이 아님), 통신 매체는 전기, 광학, RF 또는 다른 반송파를 사용할 수 있다.
혁신들은 타겟 실제 또는 가상 프로세서 상의 컴퓨팅 시스템에서 실행되는 프로그램 모듈에 포함된 것들과 같은 컴퓨터 실행가능 명령어의 일반적인 맥락에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정한 태스크를 수행하거나 특정한 추상 데이터 타입을 구현하는 루틴, 프로그램, 라이브러리, 오브젝트, 클래스, 컴포넌트, 데이터 구조 등을 포함한다. 프로그램 모듈의 기능은 다양한 실시예에서 원하는 대로 프로그램 모듈들 사이에서 결합되거나 나누어질 수 있다. 프로그램 모듈을 위한 컴퓨터 실행가능 명령어는 로컬 또는 분산 컴퓨팅 시스템 내에서 실행될 수 있다.
"시스템" 및 "장치"란 용어는 본 명세서에서 교환가능하게 사용된다. 문맥상 다르게 나타내지 않는 한, 이들 용어는 컴퓨팅 시스템 또는 컴퓨팅 장치의 유형에 대한 어떠한 제한을 나타내고자 하는 것은 아니다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 장치는 로컬일 수도 있고 또는 분산될 수도 있으며, 본 명세서에 기술된 기능을 구현하는 소프트웨어를 갖는 특수목적 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
프리젠테이션을 위해, 상세한 설명은 컴퓨팅 시스템에서의 컴퓨터 작동을 기술하기 위해 "결정(determine)" 및 "사용(use)"과 같은 용어를 사용한다. 이들 용어는 컴퓨터에 의해 수행된 동작을 위한 하이 레벨 추상화(high-level abstraction)이며, 인간에 의해 수행된 동작과 혼동해서는 안 된다. 이들 용어에 대응하는 실제 컴퓨터 동작은 구현에 따라 변한다.
도 12는 설명된 실시예, 기법, 기술이 구현될 수 있는 적절한 클라우드 지원 환경(1200)의 일반화된 예를 나타낸다. 예시적인 환경(1200)에서, 다양한 타입의 서비스(예컨대, 컴퓨팅 서비스)가 클라우드(1210)에 의해 제공된다. 예를 들어, 클라우드(1210)는 컴퓨팅 장치의 컬렉션을 포함할 수 있고, 이는 중앙 집중형 또는 분산형으로 배치될 수 있으며 인터넷과 같은 네트워크를 통해 연결된 다양한 타입의 사용자 및 장치에 클라우드 기반 서비스를 제공한다. 구현 환경(1200)은 컴퓨팅 태스크를 수행하기 위해 다른 방식으로 사용될 수 있다. 예를 들어, 일부 태스크(예컨대, 사용자 입력 처리, 사용자 인터페이스 제시)는 로컬 컴퓨팅 장치(예를 들어, 연결된 장치(1230, 1240, 1250))에서 수행될 수 있는 반면에, 다른 태스크(예를 들면, 후속 프로세싱에서 사용될 데이터의 저장)는 클라우드(1210)에서 수행될 수 있다.
예시적인 환경(1200)에서, 클라우드(1210)는 연결된 장치(1230, 1240, 1250)를 위한 서비스에 다양한 스크린 기능을 제공한다. 연결된 장치(1230)는 컴퓨터 스크린(1235)(예컨대, 중형 사이즈 스크린)을 구비한 장치를 나타낸다. 예를 들어, 연결된 장치(1230)는 데스크탑 컴퓨터, 랩탑 노트북, 넷북 등과 같은 개인 컴퓨터일 수 있다. 연결된 장치(1240)는 모바일 장치 스크린(1245)(예컨대, 소형 사이즈 스크린)을 구비한 장치를 나타낸다. 예를 들어, 연결된 장치(1240)는 모바일 폰, 스마트 폰, PDA, 태블릿 컴퓨터 등일 수 있다. 연결된 장치(1250)는 대형 스크린(1255)을 가진 장치를 나타낸다. 예를 들어, 연결된 장치(1250)는 텔레비전 스크린(예컨대, 스마트 텔레비전) 또는 텔레비전에 연결된 다른 장치(예컨대, 셋톱 박스 또는 게이밍 콘솔) 등일 수 있다.
연결된 장치(1230, 1240, 및/또는 1250) 중 하나 이상은 터치 스크린 기능을 포함할 수 있다. 터치스크린은 여러 방식으로 입력을 받아들일 수 있다. 예를 들어, 용량성 터치스크린은 객체(예컨대, 핑거팁 또는 스타일러스)가 표면을 가로질러 흐르는 전기 전류를 왜곡하거나 차단하는 경우에 터치 입력을 검출한다. 다른 예로서, 터치스크린은 광학 센서를 사용하여 광학 센서로부터의 빔이 차단되는 경우에 터치 입력을 검출한다. 일부 터치스크린에 의해 입력이 검출되기 위해 스크린 표면과의 물리적 접촉이 반드시 필요한 것은 아니다. 스크린 기능이 없는 장치 또한 예시적인 환경(1200)에서 사용될 수 있다. 예를 들어, 클라우드(1210)는 디스플레이 없이 하나 이상의 컴퓨터(예컨대, 서버 컴퓨터)에 서비스를 제공할 수 있다.
애플리케이션 관련 사용자 데이터를 추출하고 공유하는 것과 관련된 서비스는 분석 서비스(1220)를 통해 클라우드(1210)에 의해 제공될 수 있다. 서비스(1220)는 본 명세서에서 설명한 바와 같이 분석 서비스(340)와 유사한 기능을 가질 수 있다.
예시적인 환경(1200)에서, 클라우드(1210)는 적어도 부분적으로 RTAAS(1220)를 사용하여 본 명세서에 기술된 기법 및 솔루션 중 하나 이상을 다양한 연결된 장치(1230, 1240, 및/또는 1250)에 제공한다.
도 13은 본 명세서에서 설명한 기술들과 연계하여 사용될 수 있는 예시적인 이동 장치이다. 도 13을 참조하면, 예시적인 이동 장치(1300)는 1302에서 일반적으로 도시된 다양한 선택적 하드웨어 및 소프트웨어 컴포넌트를 포함할 수 있다. 설명의 편의를 위해 모든 연결이 도시되지는 않았으나, 일반적으로 이동 장치(1300)의 임의의 컴포넌트(1302)는 임의의 다른 컴포넌트와 통신할 수 있다. 이동 장치는 다양한 컴퓨팅 장치(예컨대, 셀룰러 폰, 스마트폰, 핸드헬드 컴퓨터, PDA 등) 중 임의의 것일 수 있고, 셀룰러, 위성, 또는 다른 네트워크와 같은 하나 이상의 모바일 통신 네트워크(1304)와의 무선 양방향 통신을 가능하게 할 수 있다.
도시된 이동 장치(1300)는 신호 코딩, 데이터 프로세싱, 입력/출력 프로세싱, 전력 제어 및/또는 다른 기능과 같은 태스크를 수행하는 제어기 또는 프로세서(1310)(예컨대, 신호 프로세서, 마이크로프로세서, ASIC 또는 다른 제어 및 처리 로직 회로)를 포함할 수 있다. 운영 체제(1312)는 컴포넌트(1302)의 할당 및 사용을 제어할 수 있고, 하나 이상의 애플리케이션 프로그램(1314)을 지원할 수 있다. 애플리케이션 프로그램은 일반적인 이동 컴퓨팅 애플리케이션(예컨대, 이메일 애플리케이션, 캘린더, 연락처 관리자, 웹 브라우저, 메시징 애플리케이션) 또는 임의의 다른 컴퓨팅 애플리케이션을 포함할 수 있다.
도시된 이동 장치(1300)는 메모리(1320)를 포함할 수 있다. 메모리(1320)는 비착탈식 메모리(1322) 및/또는 착탈식 메모리(1324)를 포함할 수 있다. 비착탈식 메모리(1322)는 RAM, ROM, 플래시 메모리, 하드 디스크 또는 다른 잘 알려진 메모리 저장 기술을 포함할 수 있다. 착탈식 메모리(1324)는 플래시 메모리 또는 SIM 카드(이는 GSM 통신 시스템 분야에 잘 알려져 있음) 또는 "스마트 카드"와 같은 다른 잘 알려진 메모리 저장 기술을 포함할 수 있다. 메모리(1320)는 운영 체제(1312) 및 애플리케이션(1314)을 실행하기 위한 데이터 및/또는 코드를 저장하는 데 사용될 수 있다. 예시적인 데이터는 웹 페이지, 텍스트, 이미지, 사운드 파일, 비디오 데이터, 또는 하나 이상의 유선 또는 무선 네트워크를 통해 하나 이상의 네트워크 서버나 다른 장치에 대해 송신 및/또는 수신되는 기타 데이터 세트를 포함할 수 있다. 메모리(1320)는 IMSI(International Mobile Subscriber Identity)와 같은 가입자 식별자 및 IMEI(International Mobile Equipment Identity)와 같은 장치 식별자를 저장하는 데 사용될 수 있다. 이들 식별자는 사용자 및 장치를 식별하도록 네트워크 서버에게 전송될 수 있다.
이동 장치(1300)는 터치스크린(1332), 마이크로폰(1334), 카메라(1336), 물리적 키보드(1338) 및/또는 트랙볼(1340)과 같은 하나 이상의 입력 장치(1330)를 지원할 수 있고, 스피커(1352) 및 디스플레이(1354)와 같은 하나 이상의 출력 장치(1350)를 지원할 수 있다. 다른 가능한 출력 장치(도시되지 않음)는 압전 또는 다른 햅틱 출력 장치를 포함할 수 있다. 일부 장치는 하나보다 많은 입력/출력 기능을 제공할 수 있다. 예를 들어, 터치스크린(1332) 및 디스플레이(1354)는 단일한 입력/출력 장치로 결합될 수 있다.
입력 장치(1330)는 NUI(Natural User Interface)를 포함할 수 있다. NUI는 마우스, 키보드, 원격 컨트롤러 등과 같은 입력 장치에 의해 부가되는 인공적인 제약으로부터 벗어나 사용자가 "자연스러운" 방식으로 장치와 상호작용할 수 있게 하는 임의의 인터페이스 기법이다. NUI 방법의 예로는 음성 인식, 터치 및 스타일러스 인식, 스크린 상 및 스크린에 접한 곳 모두에서의 제스처 인식, 에어 제스처(air gesture), 머리 및 안구 추적, 목소리와 음성, 시각, 터치, 제스처 및 기계 지능에 의존하는 방법을 들 수 있다. NUI의 다른 예는 가속도계/자이로스코프, 얼굴 인식, 3D 디스플레이, 머리, 안구 및 시선 추적, 몰입형 증강 현실 및 가상 현실 시스템을 사용하는 모션 제스처 검출을 포함하며, 이들 모두는 보다 자연스러운 인터페이스를 제공하고 또한 전기장 감지 전극(EEG(electirc field sensing electrodes 및 관련 방법)를 사용하여 뇌 활동을 감지하는 기술을 제공한다. 따라서, 일 특정 예에서, 운영 체제(1312) 또는 애플리케이션(1314)은 음성 인식 소프트웨어를 사용자가 음성 커맨드를 통해 장치(1300)를 조작할 수 있도록 하는 음성 사용자 인터페이스의 일부로서 포함할 수 있다. 또한, 장치(1300)는 사용자의 공간 제스처를 통한 사용자 상호작용(가령, 게이밍 애플리케이션에 입력을 제공하기 위한 제스처를 검출하고 해석하는 것)을 가능하게 하는 입력 장치 및 소프트웨어를 포함할 수 있다.
무선 모뎀(1360)은 당해 분야에 잘 알려진 바와 같이, 안테나(도시되지 않음)에 연결될 수 있고, 프로세서(1310)와 외부 장치 간의 양방향 통신을 지원할 수 있다. 모뎀(1360)은 일반적으로 도시되어 있으며, 이동 통신 네트워크(1304) 및/또는 다른 무선 기반 모뎀(예컨대, 블루투스(1364) 또는 와이 파이(1362))와 통신하기 위한 셀룰러 모뎀을 포함할 수 있다. 무선 모뎀(1360)은 일반적으로 단일 셀룰러 네트워크 내에서, 셀룰러 네트워크들 사이에서 또는 이동 장치와 PSTN(public swithced telephone network) 사이에서 데이터 및 음성 통신을 위해 GSM 네트워크와 같은 하나 이상의 셀룰러 네트워크와의 통신을 위해 구성된다.
이동 장치는 적어도 하나의 입/출력 포트(1380), 전원(1382), GPS 수신기와 같은 위성 내비게이션 시스템 수신기(1384), 가속도계(1386) 및/또는 물리적 커넥터(1390)(예컨대, USB 포트, IEEE 1394(FireWire) 포트 및/또는 RS-232 포트일 수 있다)를 추가로 포함할 수 있다. 임의의 컴포넌트가 삭제될 수 있고 다른 컴포넌트가 추가될 수 있기 때문에, 도시된 컴포넌트(1302)는 필수적이거나 포괄적인 것이 아니다.
본 개시의 예시적인 실시예에서, 이동 장치(1300)는 운영 체제(1312), 애플리케이션(1314) 및/또는 장치 프로세서(1310)와는 별개(예를 들어, 독립형 애플리케이션)이거나 그의 일부로서 구현될 수 있는 분석 서비스(1316)를 더 포함할 수 있다. 분석 서비스(1316)는 본 명세서에서 기술한 분석 서비스(340)와 유사한 기능을 가질 수 있다.
본 명세서에 기술된 방법 중 일부의 동작들은 표현의 편의를 위해 특정한 순서로 기술되어 있지만, 이러한 기술 방식은 특정 순서가 후술하는 특정 언어로 요구되지 않는 한 재정렬을 포함한다. 예를 들어, 순차적으로 기술된 동작은 일부 예에서 재정렬되거나 동시에 수행될 수 있다. 또한, 간략화를 위해, 첨부한 도면은 개시된 방법이 다른 방법과 함께 사용될 수 있는 다양한 방식을 보여주지 않을 수 있다.
개시된 방법들 중 임의의 방법은 하나 이상의 컴퓨터 판독가능 저장 매체에 저장되고 컴퓨팅 장치(예컨대, 스마트폰 또는 컴퓨팅하드웨어를 포함하는 기타 이동 장치를 포함하는 임의의 상용 컴퓨팅 장치)에서 실행되는 컴퓨터 실행가능 명령어 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 컴퓨터 판독가능 저장 매체는 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 상용 매체(예컨대, DVD 또는 CD와 같은 하나 이상의 광 미디어 디스크, 휘발성 메모리 소자(예컨대, DRAM 또는 SRAM), 또는 비휘발성 메모리 소자(예컨대, 플래시 메모리 또는 하드 드라이브))이다. 예를 들어, 도 11을 참조하면, 컴퓨터 판독가능 저장 매체는 메모리(1120) 및 1125) 및 저장소(1140)를 포함한다. 예를 들어, 도 13을 참조하면, 컴퓨터 판독가능 매체는 메모리 및 저장소(1320, 1322, 1324)를 포함한다. "컴퓨터 판독가능 저장 매체"는 신호 및 반송파를 포함하지 않는다. "컴퓨터 판독가능 저장 매체"는 통신 연결(예컨대, 1170, 1360, 1362, 1364)을 포함하지 않는다.
본 개시의 예시적인 실시예에 따르면, 방법은 컴퓨팅 장치 내의 GNSS(예를 들어, GPS) 하드웨어 프로세서를 사용하여 하나 이상의 지오 펜스를 추적하는 단계를 포함할 수 있다. 이러한 추적은 적어도 하나의 GNSS(예를 들어, GPS) 신호를 사용할 수 있다. 추적 동안의 하나 이상의 지오 펜스의 상태 변화는 공유되는 상태 데이터베이스에 저장될 수 있다. 공유된 상태 데이터베이스는 컴퓨팅 장치내에서 GNSS 하드웨어 프로세서와 애플리케이션 프로세서 사이에서 공유될 수 있다. 적어도 하나의 GNSS 신호의 저하가 검출되면, GNSS 하드웨어 프로세서를 이용하여 하나 이상의 지오 펜스를 추적하는 것은 애플리케이션 프로세서를 사용하여 하나 이상의 지오 펜스를 추적하는 것으로 전환될 수 있다. 전환 이후, 하나 이상의 지오 펜스 각각의 초기 상태는 전환 이전에 공유된 상태 데이터베이스에 현재 저장된 상태를 사용하여 설정될 수 있다.
본 개시의 또 다른 예시적인 실시예에 따르면, 컴퓨팅 장치는 적어도 하나의 GNSS(예를 들어, GPS) 신호를 사용하여 하나 이상의 지오 펜스를 추적하도록 구성된 GNSS(예를 들어, GPS) 하드웨어 프로세서와, 적어도 하나의 GNSS 신호의 저하가 검출되면 하나 이상의 지오 펜스를 추적하는 것을 떠맡도록 구성된 애플리케이션 프로세서와, 추적 동안의 하나 이상의 지오 펜스의 상태 변화를 저장하도록 구성된 공유된 상태 데이터베이스를 포함할 수 있다. 공유된 상태 데이터베이스는 GNSS 하드웨어 프로세서와 애플리케이션 프로세서 사이에서 공유될 수 있다. GNSS 하드웨어 프로세서를 사용하여 하나 이상의 지오 펜스를 추적하는 것으로부터 애플리케이션 프로세서를 이용하여 하나 이상의 지오 펜스를 추적하는 것으로 전환하게 되면, 애플리케이션 프로세서는 전환 이전에 공유된 상태 데이터베이스에 현재 저장된 상태를 이용하여 하나 이상의 지오 펜스의 각각의 초기 상태를 설정하도록 동작할 수 있다. 적어도 하나의 GNSS 신호의 개선이 검출되면, 애플리케이션 프로세서를 사용하여 하나 이상의 지오 펜스를 추적하는 것은 GNSS 하드웨어 프로세서를 이용하여 하나 이상의 지온 페스를 검출하는 것으로 전환될 수 있다. 다시 전환된 이후, 하나 이상의 지오 펜스의 각각의 초기 상태는 다시 전환되기 전에 공유된 상태 데이터베이스에 현재 저장된 상태를 사용하여 설정될 수 있다.
개시된 기법들을 구현하기 위한 임의의 컴퓨터 실행가능 명령어 및 개시된 실시예의 구현 동안 생성되어 사용되는 임의의 데이터가 하나 이상의 컴퓨터 판독가능 매체에 저장될 수 있다. 컴퓨터 실행가능 명령어는, 예컨대, 웹 브라우저 또는 다른 소프트웨어 애플리케이션(예컨대, 원격 컴퓨팅 애플리케이션)을 통해 액세스되거나 다운로드되는 소프트웨어 애플리케이션 또는 전용 소프트웨어 애플리케이션의 일부일 수 있다. 그러한 소프트웨어는, 예컨대 단일 로컬 컴퓨터(예컨대, 임의의 적절한 상용 컴퓨터) 상에 또는 네트워크 환경(예컨대, 인터넷, 광역 네트워크, 로컬 에이리어 네트워크, 클라이언트-서버 네트워크(예컨대, 클라우드 컴퓨팅 네트워크), 또는 기타 그러한 네트워크)에서 하나 이상의 네트워크 컴퓨터를 사용하여 실행될 수 있다.
명확성을 위해, 소프트웨어 기반의 구현예의 소정의 선택된 특성만이 기술된다. 잘 알려진 다른 세부사항은 생략된다. 예를 들어, 개시된 기술은 임의의 특정 컴퓨터 언어 또는 프로그램으로 한정되지 않는다. 예를 들어, 개시된 기술은 C++, Java, Perl, JavaScript, Adobe Flash, 또는 기타 적절한 프로그래밍 언어로 기록된 소프트웨어에 의해 구현될 수 있다. 마찬가지로, 개시된 기술은 임의의 특정 컴퓨터 또는 하드웨어 유형으로 제한되지 않는다. 적절한 컴퓨터 및 하드웨어의 소정의 세부사항은 잘 알려져 있으므로 본 명세서에 상세히 기술될 필요는 없다.
또한, (예컨대, 컴퓨터로 하여금 개시된 방법들 중 어느 한 방법을 수행하게 하는 컴퓨터 실행가능 명령어를 포함하는) 소프트웨어 기반 실시예들 중 임의의 실시예가 적절한 통신 수단을 통해 업로드되거나, 다운로드되거나, 또는 원격으로 액세스될 수 있다. 그러한 적절한 통신 수단은, 예를 들어, 인터넷, 월드 와이드 웹, 인터라넷, 소프트웨어 애플리케이션, (광섬유 케이블을 포함하는)케이블, 자기 통신, (RF, 마이크로파, 및 적외선 통신을 포함하는)전자기 통신, 전자 통신, 또는 다른 그러한 통신 수단을 포함한다.
상술한 방법, 장치, 및 시스템은 어떠한 방법으로든 제한하는 것으로 해석되어서는 안 된다. 대신에, 본 개시는 개시된 다양한 실시예들의 모든 신규하고 비자명한 특징들 및 특성들, 각자 그리고 서로에 대한 다양한 조합 및 하위 조합에 관한 것이다. 개시된 방법, 장치, 시스템은 임의의 특정한 측면이나 특성 또는 이들의 조합에 한정되지 않고, 임의의 하나 이상의 특정 이점이 존재하거나 문제점이 해결될 것을 요구하지도 않는다.
임의의 예로부터의 기술들은 임의의 하나 이상의 다른 예에서 기술된 기술과 결합될 수 있다. 개시된 기술의 원리가 적용될 수 있는 많은 가능한 실시예를 고려하여, 예시된 실시예들은 개시된 기술의 예들일 뿐이며, 본 발명의 범위를 제한하는 것으로 취급되어서는 안 된다는 것을 이해해야 한다. 오히려, 개시된 기술의 범위는 후술하는 청구범위의 범주 및 사상에 의해 커버되는 것을 포함한다.

Claims (15)

  1. 컴퓨팅 장치로서,
    처리 장치와,
    복수의 애플리케이션(앱)을 저장하는 메모리를 포함하되,
    상기 컴퓨팅 장치는 애플리케이션 관련 사용자 데이터를 추출하고 공유하기 위한 동작들을 수행하도록 구성되고, 상기 동작들은
    상기 컴퓨팅 장치에서 실행되는 상기 복수의 앱 중 적어도 하나의 앱에 대한 인앱 데이터(in-app data)를 추출하는 동작- 상기 인앱 데이터는 상기 적어도 하나의 앱이 실행되는 동안 사용자에 의해 소비된 콘텐츠, 및/또는 상기 콘텐츠와 연계하여 행해진 적어도 하나의 사용자 액션을 포함함 -과,
    상기 적어도 하나의 앱과 연관된 엔티티 템플릿을 사용하여, 상기 인앱 데이터 내의 복수의 텍스트 스트링을 상기 엔티티 템플릿에 의해 지정된 복수의 데이터 타입 중 적어도 하나로 분류하는 동작과,
    상기 분류된 복수의 텍스트 스트링의 적어도 일부를 결합함으로써 적어도 하나의 사용자 데이터 아이템(UDI)을 생성하는 동작- 상기 적어도 하나의 UDI는 상기 복수의 앱 중 제2 앱, 상기 컴퓨팅 장치에서 실행되는 운영 체제, 상기 운영 체제의 서비스 및/또는 적어도 또 다른 장치에서 실행되는 서비스 중 적어도 하나에 의해 액세스가능함 -을 포함하는
    컴퓨팅 장치.
  2. 제1항에 있어서,
    상기 엔티티 템플릿은 상기 적어도 하나의 앱의 대응하는 복수의 페이지 클래스를 위한 복수의 템플릿을 포함하고, 상기 복수의 템플릿의 각각의 템플릿은 복수의 UI 요소를 갖는 사용자 인터페이스(UI) 트리를 포함하고, 각 UI 요소는 엔티티 타입 및 엔티티 그룹 식별자로, 또는 액션 타입으로 주석이 달리고, 상기 UDI 내의 상기 분류된 복수의 텍스트 스트링의 적어도 일부는 동일한 그룹 식별자를 가짐으로써 관련 있는
    컴퓨팅 장치.
  3. 제2항에 있어서,
    상기 액션 타입은 사용자 액션이 상기 콘텐츠에 대한 사용자 관심과 연관된 것인지 사용자 무관심과 연관된 것인지를 나타내는 액션 의미 데이터를 포함하는
    컴퓨팅 장치.
  4. 애플리케이션 관련 사용자 데이터를 추출하고 공유하기 위해 컴퓨팅 장치에 의해 적어도 부분적으로 구현되는 방법으로서,
    상기 컴퓨팅 장치의 운영 체제 내의 트레이서 컴포넌트를 사용하여,
    애플리케이션이 상기 컴퓨팅 장치에서 실행되는 동안, 상기 애플리케이션의 페이지 클래스와 연계하여 사용자 액션에 의해 트리거된 사용자 인터페이스(UI) 이벤트를 검출하는 단계- 상기 UI 이벤트는 상기 페이지 클래스의 UI 트리와 연관됨 -와,
    상기 컴퓨팅 장치의 운영 체제 내의 분석기 컴포넌트를 사용하여,
    상기 컴퓨팅 장치에서 실행되는 상기 애플리케이션과 연관된 복수의 템플릿을 수신하는 단계- 상기 복수의 템플릿 각각은 복수의 엔티티 타입 및 액션 타입을 포함함 -와,
    상기 UI 트리 내의 복수의 텍스트 스트링을 상기 복수의 템플릿 중 적어도 하나와 매칭시켜 상기 UI 트리 내의 복수의 텍스트 스트링을 적어도 상기 복수의 엔티티 타입 중의 엔티티 타입 또는 상기 복수의 액션 타입 중의 액션 타입으로 분류하는 단계와,
    상기 UI 트리 내의 상기 분류된 복수의 텍스트 스트링의 적어도 일부를 결합함으로써 행동 데이터 아이템(BDI)을 생성하는 단계와,
    클라이언트 장치에서 실행되는 또 다른 애플리케이션, 상기 클라이언트 장치에서 실행되는 하나 이상의 서비스, 및/또는 또 다른 장치 중 적어도 하나에 상기 생성된 BDI를 제공하는 단계
    를 포함하는 방법.

  5. 제4항에 있어서,
    상기 UI 이벤트는 상기 애플리케이션이 실행되는 동안 상기 복수의 텍스트 스트링을 입력하는 것을 포함하고,
    상기 UI 트리 내의 상기 분류된 복수의 텍스트는 또한 상기 적어도 하나의 사용자 액션과 연관된
    방법.
  6. 제4항에 있어서,
    상기 트레이서 컴포넌트 및 상기 분석기 컴포넌트는 상기 운영 체제의 일부, 상기 컴퓨팅 장치에서 실행되는 독립형 애플리케이션의 일부, 및 상기 컴퓨팅 장치에서 실행되는 애플리케이션의 일부 중 하나 이상으로서 구현되는
    방법.
  7. 제6항에 있어서,
    상기 애플리케이션은 디지털 개인 비서이고, 상기 방법은
    상기 디지털 개인 비서에 의해, 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 상기 분석기 컴포넌트로부터 상기 BDI를 수신하는 단계와,
    상기 디지털 개인 비서에 의해, 상기 수신된 BDI에 기초하여 응답을 생성하는 단계를 더 포함하는
    방법.
  8. 클라이언트 장치에서 애플리케이션 관련 사용자 데이터를 추출하고 공유하는 시스템으로서,
    트레이서 서비스와,
    분석기 서비스와,
    저장 서비스를 포함하되,
    상기 트레이서 서비스는
    애플리케이션의 페이지 클래스와 연계하여 사용자 액션에 의해 트리거된 사용자 인터페이스(UI) 이벤트를 검출하도록 동작하되, 상기 UI 이벤트는 상기 애플리케이션이 실행되는 동안 상기 페이지 클래스의 UI 트리와 연관되고,
    상기 분석기 서비스는
    상기 UI 트리 내의 복수의 텍스트를 상기 애플리케이션용의 복수의 템플릿 중 적어도 하나와 매칭시켜, 상기 UI 트리 내의 복수의 텍스트를 적어도 이름, 데이터 타입, 및 그룹 식별자로 분류하고,
    적어도 하나의 사용자 액션과 연관되고 동일한 그룹 식별자를 갖는 상기 UI 트리 내의 분류된 복수의 엔티티의 적어도 일부를 결합함으로써 적어도 하나의 사용자 데이터 아이템(UDI)을 생성하도록 동작하고,
    상기 저장 서비스는
    상기 생성된 적어도 하나의 UDI를 네트워크 저장소에 저장하고,
    상기 저장된 적어도 하나의 UDI에 대한 액세스를 상기 클라이언트 장치에서 실행되는 적어도 또 다른 애플케이션에 제공하도록 동작하는
    시스템.
  9. 제8항에 있어서,
    상기 네트워크 저장소는 상기 클라이언트 장치에 통신가능하게 결합된 서버 컴퓨터에 위치하며,
    상기 저장 서비스는 또한 상기 클라이언트 장치 및 적어도 또 다른 장치에서 생성된 복수의 UDI를 저장하도록 동작하며, 상기 클라이언트 장치 및 상기 적어도 또 다른 장치는 동일한 사용자와 연관된
    시스템.
  10. 제8항에 있어서,
    상기 트레이서 서비스 및 상기 분석기 서비스는 상기 클라이언트 장치에서 실행되는 상기 운영 체제의 일부로서 또는 상기 클라이언트 장치에서 실행되는 독립형 애플리케이션의 일부로서 구현되는
    시스템.
  11. 제8항에 있어서,
    상기 분석기 서비스는 또한
    상기 클라이언트 장치에 통신가능하게 결합된 네트워크 장치로부터 상기 애플리케이션과 연관된 상기 복수의 템플릿을 수신하도록 동작하고, 상기 복수의 템플릿 각각은 복수의 분류된 엔티티를 포함하고, 각각의 엔티티는 적어도 상기 이름, 상기 데이터 타입 및 상기 그룹 식별자를 포함하는
    시스템.
  12. 제8항에 있어서,
    상기 저장 서비스는
    상기 장치의 운영 체제, 상기 장치에서 실행되는 적어도 또 다른 애플리케이션, 및/또는 상기 운영 체제의 서비스로부터 상기 적어도 하나의 UDI에 대한 요청을 수신하도록 더 동작가능한
    시스템.
  13. 제12항에 있어서,
    상기 저장 서비스는
    상기 요청을 인증하고,
    상기 요청이 성공적으로 인증되면, 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 상기 적어도 하나의 UDI를 상기 운영 체제, 상기 적어도 또 다른 애플리케이션 및/또는 상기 운영 체제의 서비스에 제공하도록 더 동작가능한
    시스템.
  14. 제4항에 있어서,
    상기 템플릿 내의 각각의 엔티티 타입은 엔티티 그룹 식별자를 포함하고, 상기 방법은
    상기 그룹 식별자에 더 기초하여 상기 UI 트리 내의 상기 복수의 텍스트 스트링을 분류하는 단계와,
    동일한 그룹 식별자를 갖는 상기 분류된 복수의 텍스트 스트링의 적어도 일부를 결합함으로써 상기 BDI를 생성하는 단계를 더 포함하는
    방법.

  15. 제4항에 있어서,
    상기 BDI의 식별 번호와,
    상기 사용자 액션과 연관된 타임 스탬프와,
    상기 BDI 내의 상기 분류된 복수의 텍스트의 상기 적어도 일부에 대한 엔티티 타입과,
    상기 BDI 내의 상기 분류된 복수의 텍스트의 상기 적어도 일부에 대한 엔티티 이름과,
    상기 동일한 그룹 식별자에 기초하여 연관된 관계를 갖는 하나 이상의 다른 엔티티와,
    상기 BDI의 하나 이상의 엔티티와 연관된 가능한 사용자 액션의 식별자와,
    상기 BDI 내의 상기 복수의 엔티티와의 사용자 상호작용과 연관된 UI 탭의 수와,
    상기 사용자 상호작용이 행해진 상기 페이지 클래스에서 소비한 시간의 양 중 하나 이상을 상기 BDI에 첨부하는 단계를 더 포함하는
    방법.
KR1020177032966A 2015-05-15 2016-05-04 애플리케이션 관련 사용자 데이터를 추출하고 공유하기 위한 시스템 및 방법 KR102613774B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562162594P 2015-05-15 2015-05-15
US62/162,594 2015-05-15
US14/734,991 2015-06-09
US14/734,991 US10324926B2 (en) 2015-05-15 2015-06-09 System and method for extracting and sharing application-related user data
PCT/US2016/030614 WO2016186833A1 (en) 2015-05-15 2016-05-04 System and method for extracting and sharing application-related user data

Publications (2)

Publication Number Publication Date
KR20180008480A true KR20180008480A (ko) 2018-01-24
KR102613774B1 KR102613774B1 (ko) 2023-12-13

Family

ID=57276064

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177032966A KR102613774B1 (ko) 2015-05-15 2016-05-04 애플리케이션 관련 사용자 데이터를 추출하고 공유하기 위한 시스템 및 방법

Country Status (14)

Country Link
US (2) US10324926B2 (ko)
EP (1) EP3281103B1 (ko)
KR (1) KR102613774B1 (ko)
CN (1) CN107624180B (ko)
AU (1) AU2016265408A1 (ko)
BR (1) BR112017021986A2 (ko)
CA (1) CA2983279A1 (ko)
CL (1) CL2017002847A1 (ko)
CO (1) CO2017011544A2 (ko)
IL (1) IL254942A0 (ko)
MX (1) MX2017014355A (ko)
PH (1) PH12017550113A1 (ko)
RU (1) RU2017134532A (ko)
WO (1) WO2016186833A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210141031A (ko) 2020-05-15 2021-11-23 주식회사 티디아이 고객정보 리사이클링 플랫폼 시스템
KR20230144664A (ko) * 2019-03-13 2023-10-16 구글 엘엘씨 애플리케이션 전달 서버를 통해 전달을 위한 애플리케이션 디버깅
WO2024063301A1 (ko) * 2022-09-22 2024-03-28 삼성전자주식회사 Ui 오브젝트를 포함하는 템플릿을 획득하기 위한 전자 장치 및 그 제어 방법
WO2024101882A1 (ko) * 2022-11-08 2024-05-16 삼성전자 주식회사 화면 설정을 공유하는 전자 장치 및 이의 제어 방법

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996848B2 (en) 2014-06-12 2018-06-12 Outfit7 Limited Communication of reward data between applications
US10643239B2 (en) 2014-10-01 2020-05-05 Outfit7 Limited Monitoring an application on a processing device and generating rewards
US10413818B2 (en) * 2014-10-01 2019-09-17 Outfit7 Limited Monitoring an application on a processing device
US10503341B2 (en) * 2015-07-09 2019-12-10 International Business Machines Corporation Usability analysis for user interface based systems
US10289262B2 (en) * 2015-09-29 2019-05-14 Pegasystems Inc. Method and system for determining user interface usage
US10650081B2 (en) * 2016-08-25 2020-05-12 Adobe Inc. Television application page tracking using declarative page tracking
US10395652B2 (en) * 2016-09-20 2019-08-27 Allstate Insurance Company Personal information assistant computing system
CA3062634A1 (en) 2017-05-10 2018-11-15 Embee Mobile, Inc. System and method for the capture of mobile behavior, usage, or content exposure
JP6954023B2 (ja) * 2017-11-13 2021-10-27 トヨタ自動車株式会社 シェアリングシステム、シェアリング方法および管理サーバ
CN108363655B (zh) * 2018-02-11 2021-07-13 百度在线网络技术(北京)有限公司 用户行为特征分析方法及装置
CN108469977B (zh) * 2018-03-26 2021-05-25 张�林 一种界面数据管理方法
US10970486B2 (en) * 2018-09-18 2021-04-06 Salesforce.Com, Inc. Using unstructured input to update heterogeneous data stores
US11093715B2 (en) 2019-03-29 2021-08-17 Samsung Electronics Co., Ltd. Method and system for learning and enabling commands via user demonstration
CN109976868A (zh) * 2019-04-11 2019-07-05 北京阿尔山区块链联盟科技有限公司 DApp定制方法、装置及电子设备
CN110210455B (zh) * 2019-06-18 2022-03-01 石家庄捷弘科技有限公司 一种打印内容格式化提取方法
CN111221711A (zh) * 2019-10-12 2020-06-02 中国平安财产保险股份有限公司 用户行为数据处理方法、服务器及存储介质
CN112800303B (zh) * 2019-11-13 2023-05-05 马上消费金融股份有限公司 一种浏览器数据的存储、读取方法及相关装置
US20210312901A1 (en) * 2020-04-02 2021-10-07 Soundhound, Inc. Automatic learning of entities, words, pronunciations, and parts of speech
CN112486796B (zh) * 2020-12-30 2023-07-11 智道网联科技(北京)有限公司 一种采集车载智能终端信息的方法和装置
US11609843B2 (en) * 2021-04-14 2023-03-21 At&T Intellectual Property I, L.P. Systems and methods for validation of configurations and/or dependencies associated with software, software components, microservices, functions and the like
EP4222595A4 (en) * 2021-08-18 2024-04-10 Samsung Electronics Co., Ltd. SMART CAPTURE SYSTEMS AND METHODS TO PROVIDE INPUT AND ACTION SUGGESTIONS

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090234844A1 (en) * 2008-03-14 2009-09-17 Adrian Kaehler Systems and Methods for Extracting Application Relevant Data from Messages
KR20130099733A (ko) * 2012-02-29 2013-09-06 주식회사 팬택 데이터 공유 시스템 및 방법
KR20150051664A (ko) * 2013-11-05 2015-05-13 현대자동차주식회사 경험 정보 관리 장치 및 그 방법

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019777B2 (en) 2006-03-16 2011-09-13 Nexify, Inc. Digital content personalization method and system
US8620913B2 (en) 2008-04-07 2013-12-31 Microsoft Corporation Information management through a single application
US9378472B2 (en) 2008-12-22 2016-06-28 Adobe Systems Incorporated Systems and methods for enabling and configuring tracking of user interactions on computer applications
US20120143677A1 (en) 2010-12-03 2012-06-07 Microsoft Corporation Discoverability Using Behavioral Data
KR101164999B1 (ko) 2010-12-07 2012-07-13 주식회사에이메일 모바일 애플리케이션 분석과 대응하는 서비스정보 제공 시스템 및 그 방법
US8468164B1 (en) 2011-03-09 2013-06-18 Amazon Technologies, Inc. Personalized recommendations based on related users
US9519726B2 (en) 2011-06-16 2016-12-13 Amit Kumar Surfacing applications based on browsing activity
US20130031076A1 (en) 2011-07-28 2013-01-31 Kikin, Inc. Systems and methods for contextual searching of semantic entities
US8914496B1 (en) * 2011-09-12 2014-12-16 Amazon Technologies, Inc. Tracking user behavior relative to a network page
US8924942B1 (en) 2012-02-01 2014-12-30 Amazon Technologies, Inc. Identifying user interface improvements from observed user behavior
US8990183B2 (en) 2012-06-06 2015-03-24 Microsoft Technology Licensing, Llc Deep application crawling
US8832847B2 (en) 2012-07-10 2014-09-09 International Business Machines Corporation Coordinating data sharing among applications in mobile devices
US20140019228A1 (en) 2012-07-11 2014-01-16 Char Software, Inc. d/b/a Localytics System and Method for Performing Application-Level Analytics and Testing to Tailor Actions and Communications to a User's Experience
US9239771B2 (en) 2012-07-24 2016-01-19 Appboy, Inc. Method and system for collecting and providing application usage analytics
US9009243B2 (en) 2012-09-28 2015-04-14 Defy Media, Llc Tracking usage of and sharing data between mobile device applications
TWI478043B (zh) 2012-11-22 2015-03-21 Inst Information Industry 行動裝置應用頁面樣版之產生系統、方法及其記錄媒體
US9183110B2 (en) 2012-11-26 2015-11-10 Google Inc. Centralized dispatching of application analytics
WO2014127301A2 (en) * 2013-02-14 2014-08-21 24/7 Customer, Inc. Categorization of user interactions into predefined hierarchical categories
JP6343337B2 (ja) * 2013-03-15 2018-06-13 ニューラ ラブス コーポレイション 知識への1段階アクセスを提供する適応ユーザインターフェースを有する知的インターネットシステム
US20140358887A1 (en) 2013-05-29 2014-12-04 Microsoft Corporation Application content search management
US10003620B2 (en) 2013-06-26 2018-06-19 International Business Machines Corporation Collaborative analytics with edge devices
US9514477B2 (en) * 2013-07-10 2016-12-06 AVG Netherlands B.V. Systems and methods for providing user-specific content on an electronic device
US10120800B2 (en) * 2014-07-18 2018-11-06 Oracle International Corporation History based memory speculation for partitioned cache memories
US9703570B2 (en) * 2014-10-01 2017-07-11 Fujitsu Limited Dynamic device drivers
EP3241139B1 (en) * 2014-12-31 2020-05-20 Citrix Systems, Inc. Shared secret vault for applications with single sign on
US10028116B2 (en) 2015-02-10 2018-07-17 Microsoft Technology Licensing, Llc De-siloing applications for personalization and task completion services
KR101715759B1 (ko) 2015-09-22 2017-03-15 한국전자통신연구원 멀티코어 환경에서의 악성코드 분석 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090234844A1 (en) * 2008-03-14 2009-09-17 Adrian Kaehler Systems and Methods for Extracting Application Relevant Data from Messages
KR20130099733A (ko) * 2012-02-29 2013-09-06 주식회사 팬택 데이터 공유 시스템 및 방법
KR20150051664A (ko) * 2013-11-05 2015-05-13 현대자동차주식회사 경험 정보 관리 장치 및 그 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230144664A (ko) * 2019-03-13 2023-10-16 구글 엘엘씨 애플리케이션 전달 서버를 통해 전달을 위한 애플리케이션 디버깅
KR20210141031A (ko) 2020-05-15 2021-11-23 주식회사 티디아이 고객정보 리사이클링 플랫폼 시스템
WO2024063301A1 (ko) * 2022-09-22 2024-03-28 삼성전자주식회사 Ui 오브젝트를 포함하는 템플릿을 획득하기 위한 전자 장치 및 그 제어 방법
WO2024101882A1 (ko) * 2022-11-08 2024-05-16 삼성전자 주식회사 화면 설정을 공유하는 전자 장치 및 이의 제어 방법

Also Published As

Publication number Publication date
CN107624180B (zh) 2022-03-25
EP3281103B1 (en) 2023-06-21
CO2017011544A2 (es) 2017-11-21
RU2017134532A (ru) 2019-04-04
AU2016265408A1 (en) 2017-10-26
US10324926B2 (en) 2019-06-18
BR112017021986A2 (pt) 2018-07-10
US20160335316A1 (en) 2016-11-17
PH12017550113A1 (en) 2018-02-12
WO2016186833A1 (en) 2016-11-24
US11169991B2 (en) 2021-11-09
CA2983279A1 (en) 2016-11-24
EP3281103A1 (en) 2018-02-14
US20190294606A1 (en) 2019-09-26
KR102613774B1 (ko) 2023-12-13
IL254942A0 (en) 2017-12-31
MX2017014355A (es) 2018-03-23
CN107624180A (zh) 2018-01-23
CL2017002847A1 (es) 2018-04-13

Similar Documents

Publication Publication Date Title
US11169991B2 (en) System and method for extracting and sharing application-related user data
US11615151B2 (en) Query language for selecting object graphs from application metadata
US11880409B2 (en) Concurrent automatic adaptive storage of datasets in graph databases
CN107209905B (zh) 针对个性化和任务完成服务而对应用去主题归类
US20200301950A1 (en) Method and System for Intelligently Suggesting Tags for Documents
US10824403B2 (en) Application builder with automated data objects creation
US11334638B2 (en) Methods and systems for updating a search index
US20170289338A1 (en) Enabling stateful dynamic links in mobile applications
US10614048B2 (en) Techniques for correlating data in a repository system
US20150106723A1 (en) Tools for locating, curating, editing, and using content of an online library
US10257342B2 (en) Validating stateful dynamic links in mobile applications
WO2016044106A1 (en) Personalized contextual menu for inserting content in a current application
US10262061B2 (en) Hierarchical data classification using frequency analysis

Legal Events

Date Code Title Description
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant