KR20210134675A - 사용자 시연을 통하여 명령들을 학습하고 실행 가능하게 하기 위한 방법 및 시스템 - Google Patents

사용자 시연을 통하여 명령들을 학습하고 실행 가능하게 하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20210134675A
KR20210134675A KR1020217030129A KR20217030129A KR20210134675A KR 20210134675 A KR20210134675 A KR 20210134675A KR 1020217030129 A KR1020217030129 A KR 1020217030129A KR 20217030129 A KR20217030129 A KR 20217030129A KR 20210134675 A KR20210134675 A KR 20210134675A
Authority
KR
South Korea
Prior art keywords
task
information
application
user
user interface
Prior art date
Application number
KR1020217030129A
Other languages
English (en)
Inventor
홍샤 진
산딥 나마
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20210134675A publication Critical patent/KR20210134675A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/289Phrasal analysis, e.g. finite state techniques or chunking
    • 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/451Execution arrangements for user interfaces
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/18Speech classification or search using natural language modelling
    • G10L15/1815Semantic context, e.g. disambiguation of the recognition hypotheses based on word meaning
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L2015/088Word spotting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Multimedia (AREA)
  • Acoustics & Sound (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

태스크 러닝 방법은 전자 장치에서 실행되는 적어도 하나의 애플리케이션과 관련된 제1 정보를 획득하는 동작을 포함한다. 상기 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 상호작용들의 시퀀스가 기록된다. 제2 정보는 사용자 인터페이스 상호작용들의 시퀀스에서 추출된다. 이벤트 또는 동작 중 적어도 하나는 제1 정보에 기초하여 제2 정보로부터 필터링된다. 제1 정보에 포함된 각 요소에 대한 인식을 수행하여 시맨틱 온톨로지(semantic ontology)를 생성한다. 시맨틱 온톨로지 및 필터링된 제2 정보를 기반으로 사용자 인터페이스 상호작용들의 시퀀스에 대한 태스크 명령이 생성된다.

Description

사용자 시연을 통하여 명령들을 학습하고 실행 가능하게 하기 위한 방법 및 시스템
하나 또는 다수의 실시 예들은 일반적으로 전자 장치에 대한 태스크 러닝(task leaning)에 관한 것으로서, 특히 적어도 하나의 애플리케이션에 대한 태스크 명령의 생성을 위하여 사용자 시연(user demonstration)을 사용하는 가상 어시스턴트(virtual assistants) 또는 음성 어시스턴트(voice assistants)에 대한 태스크 러닝에 관한 것이다.
퍼스널 어시스턴트(Personal Assistant: PA) 및 스마트 에이전트들은 모바일 장치들, 텔레비전 장치들, 가정용 스피커들, 가전 제품들 등에 걸쳐 존재하여 다중-모드 장치 상의 기술로서 사용자 태스크를 수행한다. 모바일 장치들에서 PA와 스마트 에이전트들은 대부분 애플리케이션과 작동하여, 음성 명령, 텍스트 입력, 바로가기(shortcut) 버튼 및/또는 제스처의 사용자 요청에 응답해 특정 태스크들을 수행한다. 이러한 태스크들을 수행하기 위해, PA 또는 스마트 에이전트의 플랫폼 개발자들 또는 애플리케이션 프로그램 개발자들은 앱 개발자들에 의해 제공되는 애플리케이션 프로그래밍 인터페이스(application programming interface: API)들을 호출하여 '태스크 실행(Task Execution)'을 구현해야 한다. 예를 들어, 태스크의 수행을 위한 동작들을 구현하기 위한 특정 애플리케이션의 API 또는 인터페이스가 없는 경우, 그 사용자 요청은 수행되지 않을 수도 있다.
하나의 인기 있는 모바일 애플리케이션 플랫폼 "ANDROID®에 있어, 앱 스토어에는 2018년 1분기 기준으로 약 380만 개의 앱들이 존재한다. 이러한 앱 스토어에서, PA 및 스마트 에이전트들에서 사용될 때 태스크들을 이행하기 위해 개발자들에게 제공되는 API를 갖는 앱들은 0.5% 미만이다.
하나 또는 다수의 실시 예들은 일반적으로 적어도 하나의 애플리케이션에 대한 태스크 명령의 생성을 위한 사용자 시연을 사용하는 가상 어시스턴트를 위한 태스크 러닝에 관한 것이다.
일 실시 예에서, 태스크 러닝 방법은 전자 장치에 의해 실행되는 적어도 하나의 애플리케이션과 관련된 제1 정보를 획득하는 동작을 포함한다. 상기 적어도 하나의 애플리케이션에 대한 일련의 사용자 인터페이스 상호작용들이 기록된다. 제2 정보는 사용자 인터페이스 상호작용들의 순서에서 추출된다. 이벤트 또는 동작 중 적어도 하나는 제1 정보에 기초하여 제2 정보로부터 필터링된다. 제1 정보에 포함된 각 요소에 대한 인식을 수행하여 시맨틱 온톨로지(semantic ontology)를 생성한다. 사용자 인터페이스 상호작용들의 시퀀스에 대한 태스크 명령은 시맨틱 온톨로지 및 필터링된 제2 정보를 기반으로 생성된다.
몇몇 실시 예들에 있어서, 전자 장치는 명령들을 저장하는 메모리를 포함한다. 적어도 하나의 프로세서는, 전자 장치에 의해 실행되는 적어도 하나의 애플리케이션과 연관된 제1 정보를 획득하고; 상기 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 상호작용들의 시퀀스를 기록하고; 상기 사용자 인터페이스 상호작용들의 시퀀스로부터 제2 정보를 추출하고; 상기 제1 정보를 사용하여 제2 정보로부터 이벤트 또는 동작 중 적어도 하나를 필터링하고; 상기 제1 정보에 포함된 각 요소에 대한 인식을 수행하여 시맨틱 온톨로지를 생성하고; 상기 시맨틱 온톨로지 및 필터링된 제2 정보에 기초하여 상기 사용자 인터페이스 상호작용들의 시퀀스에 대한 태스크 명령을 생성하도록 구성되는 프로세스를 포함하는 지시들을 실행한다.
하나 또는 다수의 실시 예에 있어서, 프로세서에 의해 실행될 때 전자 장치에 의해 실행되는 적어도 하나의 애플리케이션과 연관된 제1 정보를 획득하는 동작을 포함하는 방법을 수행하는 프로그램을 포함하는 비일시적 프로세서-판독 가능한 매체가 제공된다. 상기 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 상호작용들의 시퀀스가 기록된다. 제2 정보가 사용자 인터페이스 상호작용들의 시퀀스에서 추출된다. 이벤트 또는 동작 중 적어도 하나는 제1 정보에 기초하여 제2 정보로부터 필터링된다. 제1 정보에 포함된 각 요소에 대한 인식을 수행하여 시맨틱 온톨로지를 생성한다. 상기 시맨틱 온톨로지 및 상기 필터링된 제2 정보를 기반으로 상기 사용자 인터페이스 상호작용들의 시퀀스에 대한 태스크 명령이 생성된다.
하나 또는 다수의 실시 예들의 이러한 및 다른 측면들과 이점들은, 도면과 결부하여 이루어지는, 상기한 하나 또는 다수의 실시 예들의 원리들을 예시하는 아래의 상세한 설명으로부터 명백하게 이해될 것이다.
바람직한 사용 양태뿐만 아니라 실시 예들의 본질 및 그 이점들에 대한 보다 완전한 이해를 위해서는 첨부된 도면과 결부하여 하기의 설명을 참조하여야 할 것이다.
도 1은 몇몇 실시 예들에 따른 통신 시스템의 개략도를 도시한다.
도 2는 몇몇 실시 예들에 따른, 인텔리전트 러닝 프로세싱을 개별적으로 또는 조합하여 수행할 수 있는 전자 장치 및 클라우드 또는 서버 환경을 포함하는 시스템에 대한 아키텍처의 블록도를 도시한다.
도 3은 몇몇 실시 예들에 따른, 인텔리전트 러닝 시스템(intelligent learning system: ILS) 프로세싱을 위한 상위-레벨의 블록도를 도시한다.
도 4는 몇몇 실시 예들에 따른, (간단한 단계들을 사용하는) 사용자 태스크 시연을 위한 애플리케이션의 예시적인 흐름을 도시한다.
도 5는 몇몇 실시 예들에 따른, 시스템 및 서비스로부터 원치 않는 이벤트를 필터링하는 ILS를 위한 상위-레벨의 구성 요소 흐름을 도시한다.
도 6은 몇몇 실시 예들에 따른, 아이콘, 텍스트 및 설명과 같은 데이터, 패키지, 의미론(semantics)을 기반으로 이벤트들을 필터링하고, 이벤트들 및 텍스트/이미지 시맨틱 온톨로지의 우선순위를 정함으로써, 동적 이벤트 시퀀싱을 수행하는 ILS 프로세스에 대한 상위-레벨 흐름을 도시한다.
도 7은 몇몇 실시 예들에 따른, 하나의 애플리케이션에서의 대한 ILS 태스크 러닝을 위한 예시적인 프로세스 흐름도를 도시한다.
도 8은 몇몇 실시 예들에 따른, 둘 이상의 애플리케이션에서의 ILS 태스크 러닝을 위한 다른 예시적인 프로세스 흐름도를 도시한다.
도 9a, 9b, 9c 및 9d는 몇몇 실시 예들에 따른 TWITTER® 애플리케이션 상에서의 포스팅(posting)을 학습하는 예를 도시한다.
도 10a, 10b 및 10c는 몇몇 실시 예들에 따른 EXPEDIA® 애플리케이션 상에서의 항공편 예약을 학습하는 예를 도시한다.
도 11a, 11b 및 11c는 몇몇 실시 예들에 따른 YELP® 애플리케이션 상에서 레스토랑을 찾는 예를 도시한다.
도 12a, 12b 및 12c는 몇몇 실시 예들에 따른 갤러리에서 클라우드 서비스로 여행 사진을 공유하는 것의 예를 도시한다.
도 13은 몇몇 실시 예들에 따른 태스크 러닝을 위한 프로세스의 블록도를 도시한다.
도 14는 하나 또는 다수의 실시 예들을 구현하는 컴퓨팅 시스템을 포함하는 정보 처리 시스템을 보여주는 상위-레벨의 블록도이다.
하기의 설명은 하나 또는 다수의 실시 예들의 총괄적인 원리를 설명하기 위한 목적으로 이루어지며, 본 출원에서 청구된 발명의 개념을 제한하려는 것이 아니다. 또한, 본 명세서에 설명된 특정 특징들은 다양한 가능한 조합들 및 순열들의 각각에서 다른 기술된 특징들과 조합하여 사용될 수 있다. 본 명세서에서 달리 구체적으로 정의되지 않는 한, 모든 용어는 본 명세서에서 함축된 의미들뿐만 아니라 당해 기술분야의 전문가에 의해 이해되고 및/또는 사전, 논문 등에 정의된 의미들을 포함하여 가능한 가장 넓은 범위의 해석이 주어져야 한다.
"~중의 적어도 하나"라는 용어는 뒤따르는 요소들 중 하나 또는 다수를 지칭한다는 점에 유의해야 한다. 예를 들어, "a, b, c 또는 이들의 조합 중 적어도 하나"는 개별적으로 "a", "b" 또는 "c"로; 또는 "a"와 "b"가 함께 조합되거나, "b"와 "c"가 함께 조합되거나, "a"와 "c"가 함께 조합되는 것으로; 또는 "a", "b" 및 "c"가 함께 조합되는 것으로 해석될 수 있다.
하나 또는 다수의 실시 예에서, 용어 "태스크(task)"는 목표를 완료하기 위한 하나 또는 다수의 단계들을 포함하는 사용자 태스크를 지칭할 수 있다. 일정 이벤트 추가하기, 메시지 전송, 항공편 예약, 승차 예약 등과 같은 일부 태스크들은 하나 또는 다수의 앱들과의 상호작용을 통해 달성될 수 있다. 어떤 태스크들에는 하나 또는 다수의 장치들 또는 장비들, 및 저녁을 위한 엔터테인먼트 환경 설정, 아침 루틴 예약 등과 같은, 상기 하나 또는 다수의 장치들 또는 장비들을 제어하는 하나 또는 다수의 동작들을 수반할 수 있다.
하나 또는 다수의 실시 예들은 적어도 하나의 애플리케이션에 대한 태스크 명령의 생성을 위한 사용자 시연(demonstration)을 사용하여 가상 어시스턴트를 위한 태스크 러닝을 제공한다. 몇몇 실시 예들에서, 태스크 러닝 방법은 전자 장치에 의해 실행되는 적어도 하나의 애플리케이션과 관련된 제1 정보를 획득하는 동작을 포함한다. 상기 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 상호작용들의 시퀀스가 기록된다. 제2 정보는 사용자 인터페이스 상호작용들의 시퀀스에서 추출된다. 이벤트 또는 동작 중 적어도 하나는 제1 정보에 기초하여 제2 정보로부터 필터링된다. 상기 제1 정보에 포함된 각 요소에 대한 인식을 수행하여 시맨틱 온톨로지를 생성한다. 상기 시맨틱 온톨로지 및 상기 필터링된 제2 정보를 기반으로 사용자 인터페이스 상호작용들의 시퀀스에 대한 태스크 명령이 생성된다.
도 1은 하나 또는 다수의 실시 예에 따른 통신 시스템(10)의 개략도이다. 통신 시스템(10)은 발신 통신 동작을 개시하는 통신 장치(송신 장치(12)) 및 통신 네트워크(110)를 포함할 수 있으며, 이 송신 장치(12)는 통신 네트워크(110) 내의 다른 통신 장치들과의 통신 동작들을 개시 및 수행하는 데 사용할 수 있다. 예를 들어, 통신 시스템(10)은 송신 장치(12)(수신 장치(11))로부터 통신 동작을 수신하는 통신 장치를 포함할 수 있다. 통신 시스템(10)은 다수의 송신 장치들(12) 및 수신 장치들(11)을 포함할 수 있지만, 도면을 간단히 하기 위해 그것의 각각의 하나만이 도 1에는 도시되어 있다.
통신 네트워크를 생성하도록 작동하는 임의의 적절한 회로, 장치, 시스템 또는 이들의 조합(예를 들어, 통신 타워 및 통신 서버를 포함하는 무선 통신 기반시설)은 통신 네트워크(110)를 생성하는 데 사용될 수 있다. 통신 네트워크(110)는 다음을 사용하여 통신을 제공할 수 있다. 통신 네트워크(110)는 적절한 통신 프로토콜을 사용하여 통신을 제공하는 것이 가능할 수 있다. 몇몇 실시 예들에서, 통신 네트워크(110)는, 예를 들어, 전통적인 전화선, 케이블 텔레비전, Wi-Fi(예를 들어, IEEE 802.11 프로토콜), BLUETOOTH® 고주파 시스템(예를 들어, 900MHz, 2.4GHz, 및 5.6GHz 통신 시스템), 적외선, 기타 상대적으로 지역화된 무선 통신 프로토콜, 또는 이들의 임의의 조합을 지원할 수 있다. 몇몇 실시 예들에서, 통신 네트워크(110)는 무선 및 셀룰러 전화 및 개인 이메일 장치(예를 들어, BLACKBERRY®에 의해 사용되는 프로토콜을 지원할 수 있다. 이러한 프로토콜들은, 예를 들어, GSM, GSM plus EDGE, CDMA, 쿼드밴드(quadband), 및 기타 셀룰러 프로토콜들을 포함할 수 있다. 다른 예에서, 장거리 통신 프로토콜은 VOIP, LAN, WAN 또는 기타 TCP-IP 기반 통신 프로토콜들을 사용하여 전화를 걸거나 받기 위한 Wi-Fi 및 프로토콜들을 포함할 수 있다. 상기 송신 장치(12) 및 수신 장치(11)는, 통신 네트워크(110) 내에 위치될 때, 경로(13)와 같은 양방향 통신 경로를 통해, 또는 2개의 단일방향 통신 경로들을 통해 통신할 수 있다. 송신 장치(12) 및 수신 디바이스(11) 둘 모두는 통신 동작을 개시하고 개시된 통신 동작을 수신할 수 있다.
송신 장치(12) 및 수신 장치(11)는 통신 동작을 송수신하기 위한 임의의 적절한 장치를 포함할 수 있다. 예를 들어, 상기 송신 장치(12) 및 수신 장치(11)는, 이동 전화기와 같은 음성 어시스턴트(퍼스널 어시스턴트, 가상 어시스턴트 등)를 포함하는 장치들, 텔레비전(TV) 시스템, 스마트 TV 시스템, 카메라, 캠코더, 오디오 비디오 기능을 갖춘 장치, 태블릿, 웨어러블 장치, 스마트 가전기기, 스마트 액자, 및 무선(무선 지원 액세서리 시스템의 지원 여부에 관계없이) 또는 유선(예를 들어, 전통적인 전화선을 사용하는) 경로들을 통해 통신할 수 있는 기타 장치를 포함하지만, 이들에만 한정되는 것은 아니다. 상기한 통신 동작은, 예를 들어, 음성 통신(예컨대, 전화 통화), 데이터 통신(예컨대, 데이터 및 제어 메시징, 이메일, 문자 메시지, 미디어 메시지), 비디오 통신, 또는 그들의 조합(예를 들어, 화상 회의)을 포함하는 임의의 적절한 형태의 통신을 포함할 수 있다.
도 2는 전자 장치(120)(예를 들어, 모바일 전화 장치, TV 시스템, 카메라, 캠코더, 오디오 비디오 기능을 갖춘 장치, 태블릿, 패드 장치, 웨어러블 장치, 스마트 기기, 스마트 액자, 스마트 조명 등), 클라우드 또는 서버(140), 또는 상기 전자 장치(120)와 클라우드 컴퓨팅(예를 들어, 구성 가능한 컴퓨팅 시스템 자원들 및 상위-레벨 서비스들의 공유 풀 등) 또는 서버(140)(예를 들어, 컴퓨터, 장치 또는 네트워크 리소스를 관리하는 프로그램 등)의 조합을 사용하여 적어도 하나의 애플리케이션에 대한 태스크 명령의 생성을 위한 사용자 시연을 사용하는, 가상 어시스텐트 또는 스마트 에이전트를 위한 태스크 러닝을 수행할 수 있는 시스템(100)의 블록도이다. 송신 장치(12)(도 1) 및 수신 장치(11) 양자는 상기 전자 장치(120)의 특징의 일부 또는 전부를 포함할 수 있다. 몇몇 실시 예들에 있어서, 전자 장치(120)는 디스플레이(121), 마이크로폰(122), 오디오 출력(123), 입력 메커니즘(124), 통신 회로(125), 제어 회로(126), 카메라(128), 프로세싱 및 메모리(129), 인텔리전트 러닝(예를 들어, 도 3의 ILS(300) 프로세싱을 사용하는) 프로세싱(130 및/또는 131)(전자 장치(120) 상에서, 클라우드/서버(140) 상에서, 전자 장치(120) 및 클라우드/서버(140)의 조합에서 프로세싱하고, 또한 통신 회로(125)와 통신하여 그것의 정보를 클라우드/서버(140)에 획득/제공하기 위한; 후술하는 예들을 위한 임의의 프로세싱을 포함할 수 있지만, 그에 한정되지는 않음), 및 임의의 다른 적절한 구성요소들을 포함할 수 있다. 애플리케이션들1-N(127)이 제공되고 클라우드 또는 서버(140), 통신 네트워크(110)(도 1) 등으로부터 획득될 수 있으며, 여기서 N은 1 이상의 양의 정수이다.
몇몇 실시 예들에서, 오디오 출력(123), 디스플레이(121), 입력 메커니즘(124), 통신 회로(125), 및 마이크로폰(122)에 의해 사용되는 모든 애플리케이션들은 제어 회로(126)에 의해 상호 연결되고 관리될 수 있다. 일례로서, 음악을 다른 튜닝 장치로 전송할 수 있는 휴대용 음악 재생장치는 상기 전자 장치(120)에 통합될 수도 있다.
몇몇 실시 예들에서, 오디오 출력(123)은 전자 장치(120)의 사용자에게 오디오를 제공하기 위한 임의의 적절한 오디오 컴포넌트를 포함할 수 있다. 예를 들어, 오디오 출력(123)은 전자 장치에 내장된 하나 또는 다수의 스피커들(예를 들어, 모노 또는 스테레오 스피커)를 포함할 수 있다. 몇몇 실시 예들에서, 오디오 출력(123)은 전자 장치(120)에 원격으로 연결된 오디오 컴포넌트를 포함할 수 있다. 예를 들어, 오디오 출력(123)은 헤드셋, 헤드폰, 또는 헤드셋, 헤드폰, 또는 유선(예컨대, 잭(jack)으로 전자 장치(120)에 결합되는) 또는 무선(예컨대, BLUETOOTH® 헤드폰 또는 BLUETOOTH® 헤드셋) 방식으로 통신 장치에 접속될 수 있는 이어버드(earbud)를 포함할 수 있다.
몇몇 실시 예들에 있어, 디스플레이(121)는 사용자에게 가시적인 디스플레이를 제공하기 위한 임의의 적절한 스크린 또는 프로젝션 시스템을 포함할 수 있다. 예를 들어, 디스플레이(121)는 전자 장치(120)에 통합된 스크린(예를 들어, LCD 스크린, LED 스크린, OLED 스크린 등)을 포함할 수 있다. 다른 예로서, 디스플레이(121)는 전자 장치(120)(예를 들어, 비디오 프로젝터)로부터 멀리 떨어진 표면 상에 콘텐츠의 디스플레이를 제공하기 위한 이동식 디스플레이 또는 프로젝팅 시스템을 포함할 수 있다. 디스플레이(121)는 제어 회로(126)의 지시 하에 콘텐츠(예를 들어, 통신 동작에 관한 정보 또는 이용 가능한 미디어 선택에 관한 정보)를 표시하도록 동작할 수 있다.
몇몇 실시 예들에서, 입력 메커니즘(124)은 사용자 입력 또는 명령들을 전자 장치(120)에 제공하기 위한 임의의 적절한 메커니즘 또는 사용자 인터페이스일 수 있다. 입력 메커니즘(124)은 버튼, 키패드, 다이얼, 클릭 휠, 마우스, 시각적 포인터, 리모트 컨트롤러, 하나 또는 다수의 센서들(예를 들어, 카메라 또는 시각 센서, 광 센서, 근접 센서, 터치 스크린, 제스처 인식, 음성 인식 등)과 같은 다양한 형태를 취할 수 있다. 입력 메커니즘(124)은 멀티-터치 스크린을 포함할 수도 있다.
몇몇 실시 예들에서, 통신 회로(125)는 통신 네트워크(예를 들어, 통신 네트워크(110), 도 1)에 연결하고 전자 장치(120)로부터 통신 네트워크 내의 다른 장치들로 통신 동작 및 미디어를 전송하도록 동작하는 임의의 적절한 통신 회로일 수 있다. 통신 회로(125)는, 예를 들어, Wi-Fi(예를 들어, IEEE 802.11 프로토콜), Bluetooth® 고주파 시스템(예를 들어, 900MHz, 2.4GHz, 및 5.6GHz 통신 시스템), 적외선, GSM, GSM plus EDGE, CDMA, 쿼드밴드 및 기타 셀룰러 프로토콜, VOIP, TCP-IP, 또는 기타 적절한 프로토콜과 같은 임의의 적절한 통신 프로토콜들을 이용하여 통신 네트워크와 인터페이싱하도록 동작할 수 있다.
몇몇 실시 예들에서, 통신 회로(125)는 임의의 적절한 통신 프로토콜을 사용하여 통신 네트워크를 생성하도록 동작할 수 있다. 예를 들어, 통신 회로(125)는 다른 통신 장치들에 접속하기 위해 단거리 통신 프로토콜을 사용하여 단거리 통신 네트워크를 생성할 수 있다. 예를 들어, 통신 회로(125)는 전자 장치(120)를 BLUETOOTH® 헤드셋과 접속하기 위해 BLUETOOTH® 프로토콜을 사용하여 로컬 통신 네트워크를 생성하도록 동작할 수 있다.
몇몇 실시 예들에서, 제어 회로(126)는 전자 장치(120)의 동작 및 성능을 제어하도록 동작할 수 있다. 제어 회로(126)는, 예를 들어, 프로세서, 버스(예컨대, 전자 장치(120)의 다른 컴포넌트에 명령을 전송하기 위한), 메모리, 저장장치, 또는 전자 장치(120)의 동작을 제어하기 위한 임의의 다른 적절한 구성요소를 포함한다. 몇몇 실시 예들에서, 하나 또는 다수의 프로세서들(예를 들어, 프로세싱 및 메모리(129))는 디스플레이를 구동하고 사용자 인터페이스로부터 수신된 입력들을 처리할 수 있다. 메모리 및 저장장치는, 예를 들어, 캐시(cache), 플래시 메모리, ROM 및/또는 RAM/DRAM을 포함할 수 있다. 몇몇 실시 예들에서, 메모리는 특히 펌웨어를 저장하도록 전용될 수 있다(예컨대, 운영 체계, 사용자 인터페이스 기능 및 프로세서 기능과 같은 디바이스 애플리케이션을 위한). 몇몇 실시 예들에 있어, 메모리는 전자 장치(120)가 통신 동작들을 수행하는 다른 디바이스들에 관련된 정보를 저장하도록 동작할 수 있다(예를 들어, 통신 동작들과 관련된 연락 정보를 저장하거나 사용자에 의해 선택된 상이한 미디어 유형들 및 미디어 아이템들에 관련된 정보를 저장함).
몇몇 실시 예들에서, 제어 회로(126)는 전자 장치(120) 상에 구현된 하나 또는 다수의 애플리케이션들의 동작을 수행하도록 동작할 수 있다. 임의의 적절한 수 또는 유형의 애플리케이션들이 구현될 수 있다. 하기의 논의는 상이한 애플리케이션을 열거할 것이지만, 그 애플리케이션들의 일부 또는 전부가 하나 또는 다수의 애플리케이션들로 결합될 수도 있음을 이해할 것이다. 예를 들어, 전자 장치(120)는 자동 음성 인식(ASR) 애플리케이션, OCR 애플리케이션, 대화 애플리케이션, PA(또는 스마트 에이전트) 앱, 지도 애플리케이션, 미디어 애플리케이션(예컨대, 갤러리 앱, QuickTime, 모바일 뮤직 앱, 또는 모바일 비디오 앱), 소셜 네트워킹 애플리케이션(예를 들어, FACEBOOK®, INSTAGRAM®, TWITTER® 등), 캘린더 애플리케이션(예를 들어, 이벤트 관리용 캘린더, 약속 등), 인터넷 브라우징 애플리케이션, 추천자(recommender) 애플리케이션 등을 포함하는(그러나 이들에 한정되지는 않는) 애플리케이션들 1-N(127)을 포함할 수 있다. 몇몇 실시 예들에서, 전자 장치(120)는 통신 동작을 수행하도록 동작하는 하나 또는 다수의 애플리케이션들을 포함할 수 있다. 예를 들어, 전자 장치(120)는 메시징 애플리케이션, 이메일 애플리케이션, 음성메일 애플리케이션, 인스턴트 메시징 애플리케이션(예를 들어, 채팅용), 화상회의 애플리케이션, 팩스 애플리케이션, 또는 임의의 적절한 통신 동작을 수행하기 위한 임의의 다른 적절한 애플리케이션을 포함할 수 있다.
몇몇 실시 예들에서, 전자 장치(120)는 마이크로폰(122)을 포함할 수 있다. 예를 들어, 전자 장치(120)는, 통신 동작 중 또는 통신 태스크를 설정하는 수단으로서 또는 물리적 사용자 인터페이스를 사용하는 것에 대안으로, 사용자가 음성 제어 및 애플리케이션들1-N(127)의 조종을 위한 오디오(예를 들어, 음성 오디오)를 전송하는 것을 가능하게 하는 마이크로폰(122)을 포함할 수 있다. 마이크로폰(122)은 전자 장치(120)에 통합될 수 있거나 전자 장치(120)에 원격으로 접속될 수도 있다. 예를 들어, 마이크로폰(122)은 유선 헤드폰에 통합될 수도 있고, 마이크로폰(122)은 무선 헤드셋에 통합될 수 있으며, 마이크로폰(122)은 원격 제어 장치 등에 포함될 수도 있다.
몇몇 실시 예들에서, 카메라 모듈(128)은 스틸 및 비디오 이미지를 캡처하기 위한 기능, 편집 기능, 사진/비디오 등을 전송, 공유하기 위한 통신 상호운용기능을 포함하는 하나 또는 다수의 카메라 장치를 포함한다.
몇몇 실시 예들에서, 전자 장치(120)는 통신 동작을 수행하기에 적합한 임의의 다른 컴포넌트를 포함할 수 있다. 예를 들어, 전자 장치(120)는 호스트 장치, 부수적 입력 메커니즘(예컨대, ON/OFF 스위치), 또는 임의의 다른 적절한 컴포넌트에 접속하기 위한 전원공급장치, 포트들 또는 인터페이스들을 포함할 수 있다.
도 3은 몇몇 실시 예들에 따른 ILS(300) 프로세싱을 위한 상위-레벨 블록도를 도시한다. 몇몇 실시 예들에서, ILS(300) 프로세싱을 위한 상위-레벨 블록도는 앱(또는 애플리케이션)(310), 사용자 동작(315)(예컨대, 앱(310)과의 상호작용), ILS 서비스(320), 이벤트 검증기(event validator)(340), 앱 UI 스크린 이미지 캡처 서비스(330), UI 요소 트리 시맨틱 채굴기(UI element tree semantic miner)(360), 이벤트 메타데이터 추출기(event metadata extractor)(345), 태스크 이벤트 큐(task event queue)(350), 및 태스크 큐 명령(task queue command)(371) 프로세싱, 시맨틱 온톨로지 프로세싱(semantic ontology processing)(372) 및 이벤트 프로세서/필터(373)를 포함하는 명령 프로세싱(370)을 포함한다. 몇몇 실시 예들에 있어, ILS(300) 프로세싱은 태스크 명령(380)이다.
애플리케이션들(예를 들어, 애플리케이션 1-N 127, 도 2 등)에 걸쳐 음성 명령, 제스처 등을 가능하게 하기 위해, 몇몇 실시 예들은 ILS(300) 프로세싱(태스크 러닝 시스템 프로세싱)을 사용한다. 하나 또는 다수의 실시 예에서, ILS(300) 프로세싱을 위해, 태스크는 애플리케이션(예를 들어, 애플리케이션 1-N 127, 도 2 등) 상에서 사용자에 의해 시연된다(demonstration). ILS(300) 프로세싱은, 단일 샷 또는 원-샷 프로세스로부터, 필요에 따라 다양한 입력 값 세트들을 사용하여 애플리케이션 상에서 태스크를 반복적으로 수행한다. 입력 값들은 사용자 음성 명령, 텍스트 입력, 제스처, 대화 및/또는 문맥(context) 으로부터 나올 수 있다. 몇몇 실시 예들에서, ILS(300) 프로세싱으로, 음성 명령은 애플리케이션이 음성 지원 능력을 갖지 않더라도 애플리케이션에 의해 수행될 수 있다. 시연을 통해 학습하는 것은 PA의 기능을 지원하는 특정 태스크를 구현하기 위한 개발자의 노력, 시간, 비용 및 리소스를 현저하게 줄여준다. 어떤 사용자라도 학습 곡선(learning curve)이 필요 없이 평소처럼 쉽게 모바일 애플리케이션을 사용하여 시연에 의해 태스크를 생성할 수 있다.
몇몇 실시 예들에서, ILS(300) 프로세싱은 태스크를 수행하기 위해 하나 또는 다수의 애플리케이션에서 사용자에 의해 보여지는 일련의 사용자 동작에 응답하여 태스크 명령을 생성한다. 각 사용자 제스처 또는 동작(action)은 태스크 실행 시퀀스에서 다양한 데이터, 상태(예를 들어, 특정 시간에서의 특정 조건) 및/또는 컨텍스트(context)(예를 들어, 시간, 날짜, 전자 장치/애플리케이션과의 상호작용 또는 사용, 장소, 일정 이벤트/약속, 활동 등)을 포함할 수도 있는 하나 또는 다수의 이벤트들을 생성한다. 하나 또는 다수의 실시 예에서, ILS(300) 프로세싱을 위한 모바일 애플리케이션(예를 들어, 인텔리전트 러닝 프로세싱(131), 인텔리전트 러닝 프로세싱(130), 또는 인텔리전트 러닝 프로세싱 (130 및 131의 조합 등)은 매우 동적이고, 상태 표현적이며, 컨텍스트 인식적이다. 사용자 동작(들)은 하나 또는 다수의 이벤트를 생성할 수 있을 뿐만 아니라 이벤트의 시퀀스가 장치 및/또는 신뢰할 수 있는 서비스에 의해 또한 생성될 수도 있다. 몇몇 실시 예들에서, 태스크 실행 시퀀스는 동작(들)의 의미론적 이해에 기초하여 원치 않는 이벤트를 필터링함으로써 결정된다. ILS(300) 프로세싱은 태스크를 학습하기 위하여 매우 컨텍스트 인식력이 있고, 여기서 컨텍스트는 높은 정확도로 실행될 수 있는 태스크 명령을 생성하기 위한 상태 및 이벤트 우선순위를 이해하는데 도움이 된다.
몇몇 실시 예들에서, ILS(300) 프로세싱은 애플리케이션 사용자 인터페이스(UI) 상호작용(예를 들어, 앱 UI 스크린 이미지 캡처 서비스(330)을 사용하여)에 기초하여 이벤트들(예를 들어, 사용자 동작(315)와 함께 생성된 이벤트들)를 캡처하며, 여기서 상기 ILS(300) 프로세싱은 하나 또는 다수의 UI 요소들의 자세한 정보를 획득할 수 있다. 일례로, ANDROID® 시스템의 경우, 접근가능성 서비스를 기반으로 앱 UI 스크린 이미지 캡처 서비스(330)가 구현되며, 이것은 UI 동작들의 청취자(listeners)들을 백그라운드 서비스로 활성화하고 애플리케이션과의 사용자 상호작용에 대한 응답으로 어떤 사용자 동작들이 캡처되거나 무시될 수 있는지를 구성한다. 사용자가 UI 동작을 수행하면, 앱 UI 스크린 이미지 캡쳐 서비스(330)에 콜백(callback) 방법이 생성되며, 여기서 사용자 동작들에 대한 정보가 이벤트로서 캡쳐된다. 이벤트에는 사용자 태스크 유형(예를 들어, 클릭, 길게 클릭, 선택, 스크롤 등), UI 요소, UI 요소의 유형, 위치(x, y), 텍스트, 리소스 ID 및/또는 부모 및 자식 UI 요소 등과 같은 상세 정보가 포함된다. 앱 UI 스크린 이미지 캡처 서비스(330)는 상기 애플리케이션에 의해 해당 UI 요소에 할당된 임의의 특별한 메타 데이터를 반환하여 특정 애플리케이션 패키지들, 인에이블(enable), 내보내기(exported) 및 프로세스 등과 같은 구성 요소들에 액세스한다. 각 사용자 상호작용은, 그 프로세스가 높은 시스템 우선순위를 갖는, 통지, 배터리, 통화, 메시지 등과 같은 다양한 양의 시스템/서비스와 연관될 수 있다. ILS(300) 프로세싱은 컨텍스트를 결정하기 위해 다양한 동작들 상에서 애플리케이션에 의해 생성될 수 있는, 애플리케이션 상태, 권한(permissions), 서비스들 및 이벤트들과 같은 정보를 수집할 것이다. 상기 이벤트들 중 일부는 필터링되거나(예를 들어, 이벤트 프로세서/필터(373)를 통해), 태스크 명령(380)을 생성하도록 변경된 시퀀스들을 갖는다.
몇몇 실시 예들에서, 애플리케이션 상태는 현재 애플리케이션 스크린(예를 들어, ANDROID®에서 '액티비티(activity)'라고 칭함)에 기초하여 결정되는데, 이는 생성, 재개 또는 시작과 같은 다수의 상태들로부터 로딩한다. 애플리케이션은 그 애플리케이션과의 이전 사용자 상호작용에 따라서 이전에 설명된 상태들 중의 임의의 상태에서 시작할 수 있다. 애플리케이션이 백그라운드에서 실행되고 있지 않다면, 이것은 새로운 애플리케이션 프로세스, 'create' 상태로서 호출되는데, 이것은 모든 UI 요소들과 리소스들(데이터베이스, 서비스, 수신기)이 메모리에 인스턴스화 되는, 애플리케이션의 기본(default) 상태이다. 사용자가 새로운 태스크를 시연하기 전에 애플리케이션과 상호작용한다면, 상기 애플리케이션은 백그라운드에서 실행 중으로 남아 있으며, 이것은 '액티비티 저장 인스턴스(activity saved instance)' 상태 또는 '영구적(persistent)' 상태이다. 일부 애플리케이션들(예를 들어, FACEBOOK®, TWITTER®, LINKEDIN® 등)에서, 스크린 UI 요소는 사용자 동작에 기초하여 변경된다. 예를 들어, 사용자가 UI 상에서 아래로 스크롤하면, 새로운 스토리들이 렌더링된다. 윈도의 내용이 변경되면 윈도의 상태도 또한 변경된다. 이는 사용자 동작에 의해 자주 변경되는 스크린에서의 동적 UI 요소를 식별하는 데 도움이 된다. 윈도 변경 이벤트는 사용자가 태스크를 수행했을 때 활성 스크린을 식별하는 데 도움이 된다. 윈도 내용 변경 이벤트(window content change event)는 스크린 내용이 변경되는 동안 활성 스크린을 식별하는 데 도움이 되지만 활성 스크린은 변경되지 않는다. 저장된 상태에서 애플리케이션을 로딩하는 것은 사용자가 이전에 어떤 동작들 수행했지만 애플리케이션이 닫히지 않았음을 의미한다. 애플리케이션이 여전히 메모리에 있으므로, 사용자 동작들 또는 시스템 응답들로 인한 스크린 데이터 및/또는 애플리케이션 데이터가 임시로 저장되었다. 사용자가 다음에 애플리케이션을 호출하거나 열 때, 그 애플리케이션은 기본(디폴트) 스크린 액티비티가 아닌 저장된 모든 애플리케이션 데이터와 함께 이전에 닫은 상태 스크린을 연다. 데이터는 사용자가 입력한 가시적 입력이거나 사용자 동작(예를 들어, 클릭, 선택 등)으로 초래되는 표시되지 않는 데이터일 수 있다. 애플리케이션이 저장된 상태에서 열리면, 그 애플리케이션은 윈도 스크린 상태를 처리하는 동안 애플리케이션 상태를 식별하는 데 중요한 'onActivitySaveInstanceState'라 불리는 이벤트를 트리거한다. 하나 또는 다수의 실시 예에서, ILS(300) 프로세싱은 시연을 통해 사용자의 특정 명령을 수행하기 위한 새로운 태스크를 학습하고, 실행 가능한 태스크 명령(380)을 생성하고, 컨텍스트 및 상태와 관하여 시스템/서비스에 의해 생성된 원치 않는 동작/이벤트들을 필터링하고, 상태 및 컨텍스트 예측에 의한 부분적 태스크 실행 및 동작들의 동적 시퀀싱을 제공하며, 애플리케이션의 다른 버전에서 수행될 수 있는 태스크의 버전 호환성을 제공한다. 몇몇 실시 예들에 있어, 태스크 러닝은 단일 애플리케이션에 제한되지 않으며, ILS(300) 프로세싱은 단일 태스크를 수행하기 위해 여러 애플리케이션들에 적용 가능하다.
몇몇 실시 예들에서, ILS(300) 프로세싱은 시스템(예를 들어, 시스템(100), 도 2; 시스템(1400), 도 14 등)에 의해 실행될 태스크 명령(380)의 형태로 태스크 이벤트 큐(350)를 생성하는 기능을 한다. 하나 또는 다수의 실시 예에서, 태스크 명령(380)은 시맨틱 이벤트의 시퀀스를 포함하고, 각각의 시맨틱 이벤트는 타겟 UI 요소, 입력 값들, 이벤트 시퀀스의 우선순위, 그것이 시스템 피드백 이벤트인지 여부 등을 제공하는 데이터를 포함한다. 애플리케이션으로부터 태스크 명령(380)을 구축하는 것은, 하나 또는 다수의 장치들(예를 들어, 전자 장치(120), 도 2) 및 다양한 버전의 애플리케이션들 상에서 태스크 명령(380)이 수행될 수 있도록 음성, 제스처 또는 입력 이벤트와 같은 각 사용자 동작에 대한 적절한 정보가 필요하므로, 도전을 갖게 된다.
태스크 명령(380)을 생성하기 위한 도전의 일부는 동적 상태 및 이벤트 처리이다. 웹 앱들(브라우저에서만 실행되는)과 달리, 모바일 시스템 애플리케이션들(ANDROID®, TIZEN®, IOS® 등의 모바일 OS 플랫폼에서 개발됨)은 시스템 리소스를 효율적으로 활용하기 위해 컨텍스트 실행을 갖는다. 이러한 각각의 시스템 애플리케이션은 UI 엔진, 메모리, 연결성, 그래픽 렌더링, 보안 등과 같은 몇 가지 시스템 서비스에 의해 제어되며, 이는 각 이벤트에 대한 동적 및 예측되지 않은 이벤트, 상태 및 다양한 데이터 값을 생성한다. 모바일 시스템 애플리케이션은 시스템 서비스에 의해 제어되는 전체 디바이스 컨텍스트에서 실행되어 디바이스 컨텍스트가 변경될 때 애플리케이션들 간에 리소스를 효과적으로 사용하고 공유한다. 몇몇 실시 예들에서, ILS(300) 프로세싱은 각 시스템 상태를 이해하고 태스크 러닝을 수행할 때 컨텍스트를 인식한다. 사용자 동작에 의해 생성된 모든 이벤트는 이벤트의 애플리케이션 패키지, 이벤트 유형 및/또는 여러 데이터 요소들을 기반으로 하는 동적인 이벤트 컨텍스트에 기초하여 검증된다. 이벤트들은 그것들이 태스크가 학습 중인 현재의 활성 애플리케이션 패키지에 의해 생성되는 경우 유효한 것으로 처리되고, 다른 이벤트들은 관련이 없거나 또는 백그라운드에서 실행 중인 시스템 또는 외부 애플리케이션 이벤트들로서 필터링됨으로써, 태스크 명령(380)을 생성할 것이다.
몇몇 실시 예들에서, 모바일 애플리케이션(310)의 UI는 문서 객체 모델(document object model: DOM) 트리와 유사하게 구성된다. 작은 스크린 크기(예를 들어, 모바일 장치의)로 인해 태스크가 몇 개의 UI 스크린들에 걸쳐 있을 수 있으며, 각 스크린에는 트리에서의 UI 요소들이 포함된다. UI 요소들은 버튼, TextView, EditText, ListView 등과 같은 그것들의 기능성, 가시성 및 접근성을 기준으로 분류된다. 단일 태스크를 구성하기 위해서는, 단일 또는 여러 스크린들에 포함되는 더 적거나 많은 UI 태스크들이 존재한다. 이벤트를 생성하는 사용자 동작들(315)은 태스크 명령(380)을 생성하기 위해 여러 단계에서 처리된다. 예를 들어, 이벤트들은 이벤트 검증기(340)에 의해 검증되고 패키지, 데이터 및 의미론을 기반으로 이벤트 프로세서/필터(373)에 의해 필터링된다. 이벤트들은 수행 가능한 동작들 및 피드백 이벤트들을 구축하도록 우선순위가 설정된다. 몇몇 실시 예들에서, 이러한 단계들은 이벤트 필터링을 처리하는 데에 중요하다.
몇몇 실시 예들에서, ILS(300) 프로세싱은 코딩, 컴파일링 및 디버깅과 같은 정규 개발 프로세스를 따르지 않고 실행 가능한 태스크 명령(380)을 생성한다. ILS(300) 프로세싱은 각 사용자 동작(315)에 대한 사용 가능한 데이터를 사용하여 각각의 사용자 UI 동작을 순차적으로 이해한다. ILS(300) 프로세싱은 텍스트 및/또는 아이콘 이미지와 같은 UI 요소들의 시퀀스, 및 유형, 설명, 가능한 동작들 등과 같은 UI 요소들의 데이터를 의미론적으로 분류함으로써 태스크의 시스템, 서비스 및 컨텍스트를 기반으로 사용자 동작들(315) 또는 생성된 이벤트들을 사전 처리한다. ILS(300) 프로세싱은 피드백 이벤트들과 함께 사용자 동작들과 같이 자동으로 수행 가능한 동작들의 집합인 태스크 명령(380)을 생성하며, 이것은 사용자가 다수 데이터 값을 갖는 음성 명령으로 태스크를 시작할 경우 애플리케이션(310)에서 실행되는 각 동작의 완료 상태를 보장하는 데 도움이 된다.
몇몇 실시 예들에서, ILS(300) 프로세싱은 다음과 같이 태스크를 학습한다. 사용자가 애플리케이션(310)과 상호작용하여 태스크를 시연할 것이라는 것을 이해하면, ILS 서비스(320)는 이름, 권한, 데이터 제공자, 서비스, 액티비티(UI 스크린), 애플리케이션(310)과 관련되는 하드웨어 기능 등과 같은 패키지의 데이터를 포함하는 애플리케이션 패키지 정보를 캡처함으로써 태스크 러닝을 시작한다. ANDROID® OS에서, 이러한 패키지 정보는 PackageManager().getPackageInfo)와 같은 플랫폼 API들을 사용하여 얻을 수 있다. 앱 UI 스크린 이미지 캡처 서비스(330)는 사용자가 볼 수 있는 가시적인 UI 요소의 현재의 활성 스크린을 캡처하고 이러한 UI 요소의 텍스트 및 아이콘 이미지를 추출한다. 사용자 동작들(315)은 사용자 UI 동작을 기록하고, 사용자 동작(315) 정보(예컨대, 이벤트, 상태, 텍스트, 이미지 또는 아이콘 데이터 등)를 추출하고, 또한 UI 요소 트리 시맨틱 채굴기(360)는 각 요소 데이터를 텍스트, 리소스 ID, 위치, 설명 및 부모(parent) 및 자식(child) 요소들로서 추출함으로써 각 스크린에 요소들이 배치되는 방법에 입각하여 UI 요소들의 계층적 트리를 생성한다. 이벤트 메타데이터 추출기(345)는 사용자 동작(315) 정보로부터 UI 요소 유형, UI 요소의 위치, 나타난 텍스트 또는 이미지, 숨겨진 설명, 타임 스탬프 등과 같은 메타데이터를 추출한다. 태스크 이벤트 큐(350)는 명령 프로세싱(370)을 위해 사용자 동작 이벤트 정보를 큐-인한다. 명령 프로세싱(370)은 태스크 이벤트 큐(350) 및 UI 요소 트리 시맨틱 채굴기(360)로부터 입력을 획득한다. 이벤트 프로세서/필터(373)는 시스템, 서비스 및 컨텍스트를 벗어난 이벤트들을 제거하여 태스크를 보다 정밀하고 정확하게 만든다. 시스템 이벤트에는 알림, 경고, Wi-Fi 접속 변경 등과 같은 하드웨어 상태 변경 이벤트, 및 백그라운드에서 실행 중인 다른 애플리케이션의 서비스 이벤트들이 포함된다. 비-컨텍스트(non-context) 이벤트들은 대부분 시스템 또는 기타 패키지/애플리케이션의 백그라운드 서비스에 의해 생성되는 비활성 패키지 이벤트로, 애플리케이션들에서 수행된 사용자 동작(들)의 직접적인 결과가 아니다. 예를 들어, "SMS 보내기" 태스크를 학습하는 동안, 사용자가 태스크를 시연하는 중에 SMS가 수신된다. 상기 수신된 SMS는 컨텍스트를 벗어난 이벤트로 표시된다. 시맨틱 온톨로지(372)는 텍스트, 이미지 및 UI 요소의 유형, 가능한 입력 데이터와 같은 사용자 동작에서 생성된 이벤트의 각 데이터 요소에 대한 인식을 수행하여 모든 사용자 동작들 또는 이벤트들의 시맨틱 온톨로지를 생성한다. 데이터 요소 중 일부가 의미론적 이해를 위한 적절한 정보를 갖지 않는 경우, 태스크 큐 명령 프로세싱(371)은 이러한 특정 데이터 요소에 대한 음성, 제스처 또는 텍스트 입력에 기초하여 추가적 데이터/설명을 추가한다. 이벤트 검증기(340)는 각각의 이벤트 생성 애플리케이션 패키지, 이벤트의 유형, 및 사용자 동작 또는 시스템 피드백 이벤트로부터의 데이터에 기초하여 동적인 현재의 컨텍스트 이벤트들에 기초하여, 각 사용자 동작(315)을 검증한다. ILS(300) 프로세싱이 특정 사용자 동작을 이해하지 못할 경우, 사용자에게 도움 요청 메시지를 표시한다. 일 실시 예에서, 명령 프로세싱(370)은 '프로토콜 버퍼(protocol buffers)' 형식으로 순차적인 이벤트 명령 실행 가능 태스크를 생성하며, 이것은 애플리케이션 상에서 실행될 수 있는 구조화된 데이터를 직렬화하기 위한 언어 중립적 및 플랫폼 중립적인 확장 가능한 메커니즘이다. 프로토콜 버퍼는 다수의 컴퓨터 언어들을 사용하여 바이트 코드로 인코딩 및 디코딩 될 수 있다. 이것은 하나의 장치 상에서 하나의 애플리케이션으로부터 태스크를 학습하고 다른 장치에서 그 태스크를 실행하는 데 도움이 된다. 몇몇 실시 예들에서, 태스크를 트레이닝하는 동안 사용자에 의한 음성 데이터 또는 텍스트 데이터의 입력은 필요하지 않다. 거의 모든 데이터는, 사용자가 수행한 각 사용자 동작 및 요소를 이해하고 의미론적으로 분류하기 위해, 그 태스크가 시연되었던, 소스 애플리케이션으로부터 수집된다.
도 4는 몇몇 실시 예들에 따른 사용자 태스크 시연을 위한 애플리케이션의 예시적인 흐름(400)을 도시한다. 상기 예시적인 흐름은 일련의 스크린들(410, 411, 412) 및 UI 요소 액티비티들(440, 441, 442, 443, 444, 445 및 446)을 포함한다. 상기 흐름(400)은 ILS(300) 프로세싱(도 3)를 사용하여 몇몇 실시 예들에 따라 사용자 태스크를 학습한다. 태스크 러닝은 단일 애플리케이션 또는 다수의 애플리케이션들 상에서 사용자에 의해 시연된 일련의 동작들에 기초하여 태스크 명령(380)을 생성한다. 각각의 사용자 상호작용(예를 들어, 사용자 동작들(315, 도 3))은 다양한 데이터, 상태 및 컨텍스트를 포함하는 하나 또는 다수의 이벤트를 생성하며, 이것은 태스크 실행 시퀀스를 생성하기 위해 사용자 동작을 분류하는 데 도움이 된다. UI 요소 액티비티들(440, 441, 442, 443, 444, 445 및 446)은 각 스크린(410, 411 및 412)에서 사용자 동작들로써 시연된다. 이러한 사용자 동작들의 경우, 사용자는 일부 텍스트(UI 요소 액티비티 440, 441, 443 및 445)를 입력하고 버튼(UI 요소 액티비티 442, 444 및 446)을 클릭하여 한 스크린에서 다음 스크린으로 내비게이션 한다. 백그라운드에서, ILS(300) 프로세싱은 사용자 동작들의 데이터를 캡처하고 이를 의미론적으로 처리한다. 스크린(420)은, 사용자 동작들 또는 UI 요소 액티비티들 중 일부가 의미론적으로 처리될 적절한 정보를 갖고 있지 않은 경우, 음성 및/또는 텍스트를 통해 사용자에게 입력을 프롬프트한다. 사용자가 스크린(420)과의 상호작용을 완료한 후, 사용자 동작(430, 431 및 432)에 의해 생성된 이벤트들은 ILS(300) 프로세싱에 의해 처리되어 태스크 명령(380)을 형성한다.
도 5는 몇몇 실시 예들에 따른, 이벤트 프로세서/필터(373)를 사용하여 원치 않는 시스템 및 서비스 이벤트들을 필터링하는 ILS(300) 프로세싱을 예시하는 500의 상위-레벨 구성 요소 흐름을 도시한다. 앱(310)(도 3)의 환경은 매우 동적이고 컨텍스트 인식적이었다. 사용자가 특정 동작(예를 들어, 앱(310)과의 상호작용, 입력, 음성 명령 등)을 수행하는 경우, ILS(300) 프로세싱은 사용자 동작에 해당하는 다수의 정보(예를 들어, 동작에 대한 응답, 정보에 대한 프롬프트 등)를 생성한다. 각 사용자 동작은 하나 또는 다수의 이벤트들을 생성할 수 있다. ILS(300) 프로세싱은 우선순위에 입각하여 이벤트(들)를 제거하거나 재정렬하기 위해 효과적으로 작업한다. 일부 이벤트들은 ILS 서비스(320) 프로세싱에 의한 행위를 검증하는 데 사용된다.
몇몇 실시 예들에서, 상기 흐름(500)은 추출된 이벤트 메타데이터 정보(510), 사용자 동작들(315) 및 시스템 생성 이벤트들을 포함한다. 사용자가 태스크를 시연할 때, 액티비티 윈도 상태(520), 텍스트 편집 포커스(521)(사용자가 일부 텍스트를 입력하려고 할 때) 및 저장된 상태(예를 들어, 다음 스크린으로 탐색하기 또는 버튼 클릭(523)으로 입력 데이터 제출하기와 같은)를 포함하는 정보가 획득된다. 흐름(500)에서의 ILS(300) 프로세싱에는 캡처된 필요한 데이터(예를 들어, 텍스트 및 이미지)에 대해 모든 이벤트들이 검사되고 또한 원시 이벤트 큐의 모든 이벤트들이 메모리에 저장되어 추가적인 프로세싱을 위한 임시 사본들을 생성하는 구성요소인, 이벤트 사전-프로세싱(530)을 포함한다. 임의의 정보가 누락되거나 부적절한 경우, 상기 흐름(500)은 사용자가 음성 또는 텍스트로 데이터를 입력할 수 있게 하는 특정 요소로써 사용자에게 프롬프트를 표시한다(예를 들어, 도 4의 스크린(420)에서). 상기 흐름(500)에서의 ILS(300) 프로세싱은 원치 않는 서비스들 및 시스템 이벤트를 처리하고 필터링하는 시스템 및 서비스들(540)에 대한 이벤트 필터링, 사용자 동작에 의해 생성되는 각 이벤트에 대한 시맨틱 온톨로지를 생성하는 텍스트 및 이미지(550)의 인식, 및 권한, 하드웨어 요구 사항, 기타 서비스 인터페이스 등과 같은 태스크 명령(380)(도 3 및 4)으로서 일단 형성된 이러한 태스크들을 수행하기 위해 어떤 유형의 컨텍스트가 필요한지를 확인하는 컨텍스트/상태 예측(560)을 또한 포함한다. 태스크 명령 생성기(570)는 이벤트 사전-프로세싱(530), 시스템 및 서비스에 대한 이벤트 필터링(540), 텍스트 및 이미지의 인식(550) 및 컨텍스트/상태 예측(560)으로부터의 정보를 사용자 동작들(315)과 조합하고, 일 실시예에서, 프로토콜 버퍼 형식(임의의 시스템에 실행 및 배치되어 태스크 명령(380)을 생성할 수 있는)으로 정보를 변환한다.
도 6은 몇몇 실시 예들에 따른, 패키지, 아이콘, 텍스트 및 설명과 같은 데이터, 및 의미론을 기반으로 이벤트들을 필터링하고, 이벤트들 및 텍스트/이미지 시맨틱 온톨로지의 우선순위를 설정하여 동적 이벤트 시퀀싱을 수행하는 ILS(300) 프로세스에 대한 상위-레벨의 흐름(600)을 나타낸다. 태스크를 완료하기 위해 특정 양의 필수 데이터를 갖는 애플리케이션의 하나의 버전에서 태스크가 학습되는 경우, 그 학습된 태스크는 ILS 300에 알려지지 않은 다른 버전의 애플리케이션 상에서 수행되지 않을 수 있다. ILS 300은 태스크 및 그 태스크의 리소스 ID들에 대한 의미론적 이해에서 작동한다. 예를 들어, 애플리케이션 스크린이 변경되거나 더 많은 UI 요소들이 추가되면, ILS(300)는 UI 요소들에 고유한 "리소스 ID"를 사용하여 태스크를 수행할 수 있다. UI 요소가 변경되더라도, 그 리소스 ID가 동일한 한, 태스크가 여전히 실행될 수 있다. UI 요소들의 리소스 ID가 또한 변경되면, ILS(300)는 의미론적으로 가까운 UI 요소를 학습된 요소와 일치시켜 동작을 수행한다. 예를 들어, 하나의 태스크는 "연락처", "텍스트" 데이터 요소 및 "전송하기" 동작을 갖는 메시지를 전송하도록 학습된다. 애플리케이션의 다음 버전에서는 UI 요소가 변경되어 "수신자", "메시지" 및 전송하기 동작을 나타내는 아이콘 버튼으로 표시된다. 시맨틱 온톨로지(372)를 생성하는 도메인 텍스트 분류기(domain text classifier)는 애플리케이션의 업데이트된 버전에서 "연락처"에 가장 가까운 요소를 "수신자"로, "텍스트"를 "메시지"로 검출한다. ILS(300)는 순방향 또는 역방향 버전에 대한 태스크들을 실행하는 데 도움이 되는 시맨틱 온톨로지를 사용하여 태스크 명령(380)을 생성한다.
몇몇 실시 예들에서, ILS(300) 프로세싱은 우선순위를 의미론적으로 이해함으로써 이벤트들을 생성한다. 상기 흐름(600)은 사용자(605) 동작들(315)을 획득하고 이벤트 프로세서/필터(373)(도 3)를 사용하여 시스템/서비스 이벤트(610)를 필터링한다. 이벤트 프로세서/필터(373)는 사용자 동작들에 의해 생성되는 이벤트를 식별하도록 작동한다. 이벤트 프로세서/필터(373)는 이벤트 유형(620), 이벤트 우선순위(621), 및 패키지 유형과 같은, 이벤트 정보에 기초하여 복수 레벨의 검증 및 필터링으로써 이벤트들을 처리한다. 단일 태스크를 기반으로 일부 유사한 이벤트들이 생성될 수 있다. 예를 들어 사용자가 EditText UI 컨트롤을 터치하면, 시스템은 "event_click" 및 "event_focus"와 같은 두 가지 이벤트를 생성할 것이다. 그러나 사용자 터치 동작을 다시 수행하려면, 단지 하나의 이벤트만 필요하다. 따라서, 이벤트 프로세서/필터(373)는 "event_focus"를 필터링하고 "event_click"을 유지한다. 어떤 애플리케이션들(예를 들어, TWITTER®, LINKEDIN® 및 FACEBOOK®에서는, 그 애플리케이션이 시작될 때 많은 동적 데이터 로딩이 존재할 수도 있다. 'event_scroll', 'event_select'와 같은 동적 데이터는 어떠한 사용자 동작 없이도 생성된다. 이러한 이벤트들은 애플리케이션 패키지에 의해 생성되지만 컨텍스트적으로는 관련이 없다. 따라서, 이러한 이벤트들은 필터링되고 후속 이벤트들은 태스크 큐에서 그들의 위치가 변경될 것이다. 컨텍스트 예측은 애플리케이션이 활성 상태이고 실행 중일 때 애플리케이션 프로세스의 상태이다. 애플리케이션이 실행 중일 때 그 태스크를 완료하는 데 사용되는 모든 리소스가 동일한 컨텍스트에서 실행되지는 않을 것이다. 예를 들어, 데이터베이스, 하드웨어 리소스, 액세스하는 애플리케이션 컨트롤/UI 요소들에는 그것들의 고유한 애플리케이션 컨텍스트가 있을 수 있다. 컨텍스트 예측(560)은 특정 리소스가 애플리케이션 컨텍스트 또는 시스템 컨텍스트에서 실행되는지를 확인하고, 이것은 적절한 컨텍스트를 획득하여 태스크 실행을 온전하게 유지하는 데 도움이 된다. 시맨틱 온톨로지 프로세싱(372)는 애플리케이션의 현재 활성 스크린에 제공되는 모든 요소들을 마이닝하기 위해 수행된다. 시맨틱 온톨로지 프로세싱(372)는 UI 요소의 스크린 텍스트 및 아이콘 이미지와 함께 수행할 수 있는 텍스트, 리소스 ID, 설명, 위치 및 동작들로부터 모든 요소들의 완전한 의미론적 데이터를 생성한다.
도 7은 몇몇 실시 예들에 따른 단일 애플리케이션 상의 ILS 태스크 러닝을 위한 예시적인 프로세스 흐름도(700)를 도시한다. 몇몇 실시 예들에서, ILS(300) 프로세싱(도 3)은 시연을 통해 태스크를 수행하는 방법을 학습하고, 일반 최종 사용자가, 지능형 에이전트에게 그 사용자가 원하는/선호하는 태스크를 수행하도록 가르치는 것을 가능하게 한다. 몇몇 실시 예들에서, 사용자에 의해 제공되는 음성 명령 발화(voice command utterance)(705)는 자연어 이해(natural language understanding: NLU) 엔진(710)(예를 들어, 가상 어시스턴트(PA) 등의)에 의해 처리된다. NLU 엔진(710)으로부터의 출력은 인텐트 슬롯들(715)에서 음성 명령의 인텐트(intent: 의도) 및 슬롯 정보를 제공한다. 상기 인텐트들은 어떤 특정 태스크들을 수행하기 위해 전달되는 최종 사용자의 의도이다. 상기 인텐트는 "비행기 예약", "피자 주문", "비디오 재생" 등과 같이 해당 인텐트의 태스크를 수행하는 데 사용할 수 있는 애플리케이션을 식별하는 데 도움이 된다. 각 인텐트를 수행하기 위해 전자 장치(예를 들어, 전자 장치(120, 도 2)는 이용 가능한 애플리케이션들(예를 들어, 애플리케이션 1-N(127), 도 2)로부터 특정 애플리케이션을 선택한다. 상기 슬롯은 사용자 인텐트에 대한 태스크를 수행하기 위한 변수 값들인데, 예를 들어, "1월 12일에 뉴욕행 항공편 예약"이라는 발화에서, "항공편 예약" 부분은 인텐트이고, "뉴욕" 및 "1월 12일"은 슬롯들이다.
몇몇 실시 예들에서, 사용자 (태스크 러닝) 결정(720)은 전자 장치의 이용 가능한 애플리케이션으로부터 어떤 애플리케이션이 이 태스크를 수행하기에 적합한지에 대한 정보를 제공한다. 전자 장치에 특정 애플리케이션이 설치되어 있지 않은 경우, 사용자에게 애플리케이션을 설치하라는 메시지가 프롬프트 되거나, 또는 둘 이상의 애플리케이션이 있는 경우, 그 애플리케이션(310)에 대한 태스크를 학습하기 위해 적합한 애플리케이션을 선택하라는 메시지가 사용자에게 프롬프트 된다(도 3 참조). 애플리케이션 패키지 정보, 사용 이력, 애플리케이션들의 순위 등을 기반으로 사용자에 대해 특정 애플리케이션이 선택될 수도 있다. 전자 장치의 다양한 스크린들(730) 및 사용자 동작들(315)은 사용자 동작들에 의해서만 야기되는 사용자 이벤트들(716), 및 그 사용자 동작들에 수반하는 시스템 이벤트들(717)을 결정하는 데 사용된다. 예를 들어, 시스템 이벤트들(717)은 다른 애플리케이션/서비스로부터의 공지 또는 이벤트들, 배터리 부족, 키보드 입력 등과 같은 시기적절한 시스템 이벤트들을 포함할 수 있다. 이러한 모든 이벤트들은 집합적으로 의미론적 이벤트 큐 또는 원시 이벤트 큐(350)에 추가된다. 이벤트 프로세서/필터(373)는 시맨틱 이벤트 큐(350)에서 이벤트를 필터링하고 우선순위를 지정하며, 컨텍스트/상태 예측을 수행하고, 또한 그 출력이 메인 태스크 큐(371)에 추가된다. 시맨틱 온톨로지 프로세싱(372)은 수동으로 구성되는 미리 정의된 값들의 세트에 기초하여 의미론적으로 검증한다. 가능한 값들은 UI 요소들의 다양한 시나리오에 대해 다수의 애플리케이션들로부터 추출된다. 일례로, 전송하기 버튼(send button)은 게시, 트윗, 제출, 완료 등과 같은 가능한 의미론적 의미를 갖는다. 이러한 값들은 수동으로 구성되거나 대규모 애플리케이션들의 세트에서 데이터를 수집함으로써 알고리즘적으로 구성된다. 상기 구성된 데이터 값들은 NLU 엔진(710)에 의해 제공된 슬롯 값을 검증하는 데 사용된다. 일례로, "늦은 시간에 엄마에게 SMS 보내기"와 같은 음성 명령에 대해서, 태스크를 완료하기 위해 필요한 '엄마(연락처의 전화 번호)'와 텍스트 '늦은 시간에'같은 두 개의 슬롯 값들이 존재한다. ILS 동작 검증기(340)는 사용자가 시연했는지 또는 시스템이 언제든지 그 태스크를 수행하기 위해 필요한 슬롯을 올바르게 처리했는지 검증한다. 블록(740)에서, 사용자에게는 추가 데이터 또는 사용자 검증을 위해 프롬프트 된다. 일단 태스크가 검증되면, 태스크 명령 생성기(570)는 태스크 명령(380)을 생성한다. 몇몇 실시 예들에서, 단일 애플리케이션에 대한 ILS(300) 프로세싱은 항공편 예약, 장소 찾기(예를 들어, 레스토랑, 장소, 호텔, 상점 등)와 같은 다양한 태스크들에 사용될 수 있다. 예를 들어, EXPEDIA®는 '호텔 예약', '항공편 예약', '자동차 예약' 및 '주변 명소 찾기'와 같은 다양한 태스크들을 수행할 수 있다. 복수의 사용자가 동일한 애플리케이션 상에서 다른 태스크들을 시연한다면, 태스크 실행에 있어서의 모호성을 피하기 위해 태스크를 수행하기 위한 추가적인 사용자 검증이 필요할 수도 있다.
도 8은 몇몇 실시 예들에 따른, 둘 이상의 애플리케이션 상에서 ILS 태스크 러닝을 위한 다른 예시적인 프로세스 흐름도(800)를 도시한다. 몇몇 실시 예들에서, 음성 명령 발화(705)는 NLU 엔진(710)에 의해 처리된다(도 7 참조). NLU 엔진(710)으로부터의 출력은 전술한 바와 같이 인텐트 슬롯(715)에 인텐트 및 슬롯 정보를 제공한다. 사용자(태스크 러닝) 결정(720)은 전술한 바와 같이 애플리케이션(310)(도 3 참조)을 확인한다. 전자 장치의 다양한 스크린들(730) 및 사용자 동작들(315)은 사용자 동작만으로 인한 이벤트들 및 사용자 동작을 수반하는 시스템 이벤트들(717) 모두를 포함하는 사용자 이벤트들(716)을 결정하는 데 사용된다. 이러한 모든 이벤트들은 시맨틱 이벤트 큐 또는 원시 이벤트 큐(350)에 집합적으로 추가된다. 이벤트 프로세서/필터(373)는 이벤트들을 처리하고, 컨텍스트/상태 예측을 필터링하고, 우선순위를 지정하고 수행한다. 서브-태스크들(예를 들어, 2개 이상)을 갖는 이벤트 큐(871)는 전체 태스크 시연 프로세스에 포함된 애플리케이션을 기반으로 형성된다. 예를 들어, 사용자가 시연 프로세스 동안 애플리케이션 1 및 애플리케이션 2와 상호작용한 경우, 애플리케이션 1에서부터의 동작들은 하나의 서브-태스크로 형성되고 애플리케이션 2에서의 동작들은 제2 서브-태스크로 형성된다. 이러한 동작들은 패키지 관리자를 사용하여 애플리케이션 패키지 ID에 기초하여 분류될 수 있고(전술한 바와 같이), 그 출력이 메인 태스크 큐(371)에 추가된다. 시맨틱 온톨로지 프로세싱(372)은 전술한 바와 같이, 미리 정의된 세트의 값들에 입각하여 요소들을 의미론적으로 검증한다. ILS 동작 검증기(372)는 사용자가 시연하거나 또는 전자 장치가 언제라도 태스크를 수행하기 위해 필요한 슬롯을 올바르게 처리했는지 검증한다. 블록(740)에서, 사용자는 추가 데이터 또는 사용자 검증을 위해 프롬프트 된다. 일단 태스크가 검증되면, 태스크 명령 생성기(570)는 태스크 명령(380)을 생성한다. 몇몇 실시 예들에서, 다수의 애플리케이션들에 대한 ILS(300) 프로세싱은 특정한 영역들에서 특정 장소들을 찾는 것(예를 들어, 특정 위치에 있는 특정한 유형의 장소, 예컨대, 캘리포니아 팔로알토에서 한식 바베큐 레스토랑 찾기), 특정 여행에 대해 클라우드에서 사진들을 공유하는 것 등과 같은 다양한 태스크들에 사용될 수도 있다.
도 9a, 9b, 9c 및 9d는 몇몇 실시 예들에 따른 TWITTER®애플리케이션에 대한 게시물을 학습하는 일례를 도시한다. 이러한 예시적인 실시 예에서, ILS(300) 프로세싱(도 3)은 TWITTER®애플리케이션에 수반되는 "새로운 트윗 추가" 태스크를 학습하고 있다. 스크린 1(910)은 "트윗 생성"을 나타내고, 스크린 2(920)는 메시지 및 트윗을 추가하기 위한 것이다. 두 개의 스크린에서 TWITTER®애플리케이션에서의 이러한 태스크를 학습하기 위해, 제1 스크린(스크린 1 (910))은 사용자가 '새로운 트윗'을 시작하는 것을 기록하고, 제2 스크린(스크린 2 (920))은 제3 스크린(스크린 3 (930))에서의 '트윗' 된 사용자 입력 및 '버튼 클릭' 동작을 캡처한다. 사용자의 동작은 각각의 이벤트, 데이터 및 UI 요소들에 의해 프로그래밍 방식으로 추적된다. 이러한 해당 이벤트들은 동적 및 상태 변경 이벤트들로, 복수의 추가 이벤트들 및 알림들의 생성으로 이어진다. 일반적으로, 각 태스크에 대해, 생성된 총 이벤트 수는 사용자가 수행한 동작들의 거의 3배이며, 이것은 그 이벤트가 UI 요소와 상호작용하는 방식에 대한 깊은 통찰력을 제공한다. ILS(300) 프로세싱은 UI 요소 클래스, 사용자 동작에 의해 생성된 이벤트들, 텍스트, 각 액티비티 스크린과 함께 요소 좌표, 각 사용자 동작을 의미론적으로 이해하기 위한 각 UI 요소 이미지를 캡처한다. ILS(300) 프로세싱은 태스크 러닝의 일부로 호출되는 각각의 액티비티 스크린을 이해하고, 각 액티비티 스크린에 대한 UI 요소 트리의 데이터를 채굴(mining)한다. 사용자 시연에 의해 생성된 이벤트들과 함께 시맨틱 트리 데이터는 명령 프로세싱(370)(도 3)에서 추가적인 시맨틱 온톨로지 프로세싱을 위해 태스크 이벤트 큐(350)(도 3)에 저장된다. 이 예에서 스크린 3(930)은 트윗에 대한 수신자 정보를 제공하고, 스크린 4(940)는 트윗을 나타낸다.
몇몇 실시 예들에서, 추가 데이터에 대해 중간 입력 프롬프트가 발행된다. 자연어 명령은 인간이 서로에게 새로운 태스크들을 가르칠 수 있는 보편적인 매개체이다. PA 또는 스마트 에이전트가 이러한 명령들에서 배우기 위해서는, 그라운딩(grounding)이 중요한 도전인데, 에이전트들은 가르침으로부터 의미론적 의미(semantic meaning)를 추출하고 그것들을 행동 및 인식과 연관시켜야 한다. 특정 UI 요소에 부적절한 정보가 있는 경우, ILS(300) 프로세싱은 간단한 자연어 명령을 추가로 입력하여 어떤 의미론적 의미를 분류하기 위한 데이터를 추론한다. 몇몇 실시 예들에서, 키워드 기반 명령이 동작, 항목 또는 설명을 정교화하는 데 사용되어 데이터를 보다 정확하게 추론한다. ILS(300) 프로세싱은 정보의 가능한 의미론적 범주에 대해 전자 장치의 스크린에 힌트로 프롬프트를 제공한다.
몇몇 실시 예들에서, ILS(300) 프로세싱은 컨텍스트를 이해함으로써 이벤트들을 강건하게 처리하고 필터링한다. 일 실시 예는 수동으로 구성되는 미리 정의된 값들의 세트인 키-맵 이벤트 분류기(key-map event classifier)를 사용한다. 가능한 값들은 UI 요소의 다양한 시나리오에 대해 복수의 애플리케이션들에서 추출된다. 일례로, '전송하기' 버튼은 게시, 트윗, 제출, 완료 등과 같은 여러 가능한 의미론적 의미들을 갖는다. 이러한 값들은 수동으로 구성되거나 대규모 세트의 애플리케이션들에서 데이터를 수집하여 알고리즘적으로 구성된다. 앱 UI 스크린 이미지 캡처 서비스(330)(도 3) 및 UI 요소 트리 시맨틱 채굴기(360)는 사용자에 의해 시연된 각각의 UI 요소 및 그들의 각각의 동작을 이해하는 데 사용된다. 이벤트 프로세서/필터(373)(도 3)는 태스크 이벤트 큐(350)(도 3)로부터 정보를 추출하고 키-맵 이벤트 분류기를 사용하여 원치 않는 이벤트를 검증 및 필터링 한다. 키-맵 이벤트 분류기는 애플리케이션 패키지, 애플리케이션 유형 및 컨텍스트와 같은 데이터를 기반으로 시스템 이벤트들을 분류하고, 태스크 러닝 애플리케이션에 대한 컨텍스트를 벗어난 정보를 필터링한다. '윈도 변경(windows change)', 알림, 공지 사항 등과 같은 이벤트들이 필터링된다. 그러나 '윈도 상태 변경'과 같은 시스템에 의해 생성된 다른 이벤트들은 태스크 러닝 과정에서 액티비티 변경 상태 또는 컨텍스트 변경 상태에 대한 태스크 러닝에서 사용된다. 이벤트들을 처리한 후에, 시맨틱 온톨로지(372)(도 3)는 사용자 시연 동안 캡처된 UI 요소들의 텍스트 및 이미지에 기초하여 시맨틱 온톨로지를 생성하도록 후속된다.
몇몇 실시 예들에서, 이벤트들에 대한 ILS(300) 프로세싱은 각각의 상이한 태스크에 대한 다양한 메타데이터(이벤트 메타데이터 추출기(345)(도 3)에 의해 추출됨)에 대해 작동한다. 예를 들어, 태스크 이벤트 큐(350)에서 모든 시스템 이벤트들을 제거하기 위해, ILS(300) 프로세싱은 이벤트 소스의 패키지 이름을 식별한다. 예를 들어, SAMSUNG®모바일 장치들에서, "com.samsung.android.app.aodservice", "com.sec.android.app.launcher" 및 "com.samsung.android.MtpApplication"에 국한되지 않는 패키지 이름들은 시스템 패키지로서 분류되고 필터링된다. 아래는 TWITTER®애플리케이션에 트윗을 게시하기 위해 캡처되는 이벤트들의 예이다.
∑1:EventType: TYPE_VIEW_FOCUSED; EventTime: 310865; PackageName: com.twitter.android; MovementGranularity: 0; Action: 0 [ ClassName: android.support.v7.widget.RecyclerView; Text: [●]; ContentDescription: null; ItemCount: 1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: 0; ToIndex: 0; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0
∑2:EventType: TYPE_VIEW_FOCUSED; EventTime: 310916; PackageName: com.twitter.android; MovementGranularity: 0; Action: 0 [ ClassName: android.support.v7.widget.RecyclerView; Text: [●]; ContentDescription: Home timeline list; ItemCount: 6; CurrentItemIndex: 0; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0
∑3:EventType: TYPE_VIEW_SCROLLED; EventTime: 311238; PackageName: com.twitter.android; MovementGranularity: 0; Action: 0 [ ClassName: android.support.v7.widget.RecyclerView; Text: []; ContentDescription: null; ItemCount: 1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: 0; ToIndex: 0; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0
∑4:EventType: TYPE_WINDOW_STATE_CHANGED; EventTime: 312329; PackageName: com.samsung.android.MtpApplication; MovementGranularity: 0; Action: 0 [ ClassName: com.samsung.android.MtpApplication.USBConnection; Text: [MTP application]; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0
∑5:EventType:TYPE_VIEW_CLICKED; EventTime: 322105; PackageName: com.samsung.android.MtpApplication; MovementGranularity: 0; Action: 0 [ ClassName: android.widget.Button; Text: [OK]; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0
∑6:EventType: TYPE_WINDOW_STATE_CHANGED; EventTime: 322170; PackageName: com.twitter.android; MovementGranularity: 0; Action: 0 [ ClassName: com.twitter.app.main.MainActivity; Text: [Home]; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: true; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0
이 예에서, 이벤트 ∑2는 ∑1과 ∑2가 사본이므로, 이것은 이벤트 유형, 패키지 및 클래스 이름 등의 파라미터들에 기초해 결정된다(예를 들어, EventType: TYPE_VIEW_FOCUSED; PackageName: com.twitter.android; ClassName: android.support.v7.widget.RecyclerView). 두 이벤트들 모두 사용자에 의해 '트위터' 애플리케이션이 열릴 때 시스템에 의해 생성된다. 이벤트 ∑은 필터링 되지 않을 것이며, 이것은 패키지 이름과 사본의 부존재에 입각해 결정된다. 이벤트 ∑4 및 ∑5는 시스템 이벤트들로 패키지 이름들(예를 들어, PackageName: com.samsung.android.MtpApplication, USB 연결을 갖는 SAMSUNG® 모바일 디바이스들에 소유권이 있는 패키지)에 의해 식별되며, 따라서 필터링된다. 이벤트 ∑6은 메인 이벤트이며 필터링되지 않을 것이다. 이 예에서는, PackageName: com.twitter.android으로부터의 EventType: TYPE_WINDOW_STATE_CHANGED의 도움으로 애플리케이션으로부터 새로운 스크린이 열린다는 것을 주목해야 한다.
몇몇 실시 예들에서, 이벤트 프로세서/필터(373)는 메타데이터 정보에 기초하여 처리하고 필터링할 다양한 시스템 이벤트들 및 애플리케이션 이벤트들을 구체적으로 인식하기 위해, SAMSUNG® 및 GOOGLE® ANDROID® OS와 같은 시스템에 대해 맞춤화될 수 있다.
몇몇 실시 예들에서, 태스크 파일(태스크 명령(380))은 '바이트코드 파일(bytecode file)'인데, 이것은 일련의 사용자 동작들, 메타데이터 정보 및 각각의 UI 요소 카테고리를 이해하는 데 사용되는 의미론적 데이터를 포함한다. 메타데이터 정보는 동일하거나 다른 버전의 애플리케이션에 대한 태스크를 수행하는 데 도움이 된다. 애플리케이션 버전이 변경되면 UI 요소도 변경될 수 있다. 일례로서, 애플리케이션의 이전 버전에 대해 태스크가 학습되고 사용자가, 예컨대, '버튼'에 대해 하나의 동작을 시연하였다. 새 버전의 애플리케이션에서, 버튼 UI 요소가 '이미지 버튼' UI 요소로 대체되어 그 소스 및 대상 UI 요소들이 동일하지 않다. 그럼에도 불구하고, 시스템은 가능한 경우 텍스트, 설명 및 아이콘 이미지를 사용하여 시맨틱 정보를 매핑함으로써 버튼 클릭 동작을 수행할 수 있다. 몇몇 실시 예들에서, 태스크 파일은 애플리케이션에 대해 동작하는 각각의 동작 및 피드백 동작들을 포함하는 'json' 데이터 파일일 수 있다. 일반적으로 JSON 파일은 개방 형식이며, 누구나 멀웨어(malware)나 봇(bot)을 사용하여 동작 순서를 변경할 수 있다. 이 경우, 태스크 실행의 종료는 예측할 수 없고 원치 않는 동작에 의해 예측 불가하고 사용자에게 해로울 수 있다. 몇몇 실시 예들에서, JSON 파일은 프로토콜 버퍼(Protocol Buffer)(.pb 파일 확장자를 가짐) 파일 형식으로 변환되는데, 이것은 플랫폼 독립적이고, 더 적은 메모리를 사용하고, JSON 파일을 사용하는 것보다 안전하고 더 빠르다. 프로토콜 버퍼는 구조화된 데이터를 바이너리 형식으로 직렬화하는 한 방법이다. 유선을 통해 서로 통신하거나 데이터를 저장하는 프로그램들을 개발하는 데 유용하다.
도 10a, 10b 및 10c는 몇몇 실시 예들에 따른 EXPEDIA® 애플리케이션에서 항공편 예약을 학습하는 예를 도시한다. 항공권 예약은 EXPEDIA®, KAYAK®, PRICELINE®, BOOKING® 등과 같은 다양한 애플리케이션들에서 완료될 수 있는 하나의 태스크이다. 일 실시 예에서, ILS(300) 프로세싱(도 3)은 애플리케이션으로부터 음성 명령에 응답하여 태스크를 학습하고, 동일한 음성 명령을 수신하면 동일한 애플리케이션을 실행한다. 항공편 예약은 반복적인 태스크일 수 있다. 일반적으로 각 사용자는 서로 다른 애플리케이션들을 검색하여, 최상의 거래를 위해 날짜와 시간을 조정한다. 각 사용자는 다양한 애플리케이션을 사용하여 날짜와 목적지가 같은 항공편에 대한 데이터를 비교하는 태스크를 수행한다. 다른 실시 예에서, 상기 학습된 태스크는 동일한 카테고리의 상이한 애플리케이션들에 적용될 수 있다. 예를 들어, 제1 스크린(1010)은 사용자 입력을 이용하여 검색을 시작할 수 있다. 제2 스크린(1020)은 선택을 위해 도시된 중간 결과와 함께 목적지를 입력하기 시작하는 사용자를 보여준다. 제3 스크린(1030)은 사용자가 입력한 데이터가 항공편 검색에 사용될 것임을 보여준다. ILS(300) 프로세싱(도 3)은 다수의 날짜들 및 변경 파라미터들로써 그 태스크를 반복한다.
도 11a, 11b 및 11c는 몇몇 실시 예들에 따른 YELP®애플리케이션에서 레스토랑을 찾는 일례를 도시한다. 식당/장소/호텔/상점 등을 찾는 일은 사용자가 운전 중이거나 집에서 벗어나 있을 때 자주 발생할 수 있다. 몇몇 실시 예들에서, ILS(300) 프로세싱(도 3)은 애플리케이션(예를 들어, YELP®)으로부터 레스토랑을 찾는 태스크를 학습할 수 있고, 사용자가 이동하는 자동차에 있는 동안 학습된 태스크를 나중에 수행할 수 있다. ILS(300) 프로세싱은 결과를 실행하고 찾을 뿐만 아니라 선택에 기초하여 사용자에게 (예를 들어, 자동차 사운드 시스템을 통해, 전자 장치(120)(도 2)를 통해 등등) 판독될 것이다. 몇몇 실시 예들에서, 이 태스크는 최고의 레스토랑 및/또는 호텔을 찾기 위해 근처 장소에 대한 요리 유형을 변경함으로써 반복적으로 수행될 수 있다. ILS(300) 프로세싱은 이 태스크를 효과적으로 학습하여 요리와 장소의 다양한 조합으로 수행한다. 몇몇 실시 예들에서, 태스크를 학습할 때, ILS(300) 프로세싱은 주어진 동작 시퀀스에 얼마나 많은 입력 UI 요소들이 존재하는지에 기초하여 태스크를 완료하는 데 필요한 입력 값들의 총량을 결정한다. 입력 요소들은 edittext, listbox, deop down목록 등을 포함할 수 있다. 따라서, 이러한 입력 요소들을 누락한 채로 태스크를 수행할 때, ILS(300) 프로세싱은 그 태스크를 수행하기 위한 해당하는 입력들을 사용자에게 프롬프트(예를 들어, 텍스트 프롬프트, 음성 또는 사운드 프롬프트 등) 한다. 사용자가 음성 명령으로 태스크를 수행하도록 지시할 경우, NLU 엔진(예를 들어, NLU 엔진(710), 도 7-8)은 음성 명령에 얼마나 많은 입력 값이 존재하는지 식별할 것이다(이러한 값들은 '슬롯'으로 지칭됨). 예를 들어, 전술한 TWITTER®애플리케이션 예에 있어, 사용자 음성 명령은 "휴가 중이므로 트윗을 포스팅해"이다. 이러한 음성 명령은 "나는 휴가 중이다"의 입력 값(슬롯)을 갖는다. 사용자 음성 명령이 "트윗 포스팅"일 경우, 텍스트로 포스팅할 어떤 입력 값도 없다. 따라서, 이러한 태스크가 수행될 때, 시스템은 게시할 입력 값에 대해 프롬프트 한다.
이러한 예에서, 제1 스크린(1110)은 어플리케이션을 사용하기 위한 시작점이다. 제2 스크린(1120)은 한식 BBQ를 요리 유형으로, 캘리포니아 팔로 알토를 원하는 위치로 사용하는 검색 페이지를 보여준다. 제3 스크린(1130)은 제2 스크린(1120)의 검색 기준 결과를 보여준다.
도 12a, 12b 및 12c는 몇몇 실시 예들에 따른 갤러리에서 클라우드 서비스로 여행 사진을 공유하는 일례를 도시한다. 이 예에서 두 사용자는 메시지(또는 채팅) 애플리케이션을 사용하여 대화에 참여하고 있으며, 여기서 제1 사용자는 제2 사용자에게 "Share la trip pics in cloud"(즉, 클라우드 환경 또는 앱에서의 갤러리 앱에서 로스앤젤레스 여행 사진 공유) 요청을 보낸다. 제2 사용자가 태스크를 수행하려면, 메시지 애플리케이션을 종료하고 갤러리 애플리케이션에서 사진을 검색한 다음, SAMSUNG® Link, DROPBOX®, GOOGLE® Drive 등과 같은 클라우드 서비스를 사용하여 사진을 공유하고, 그런 다음 대화를 재개해야 한다. ILS(300) 프로세싱(도 3)은 갤러리에서 클라우드 서비스로 사진을 공유하는 태스크를 학습하고, 그 대화를 떠나지 않고 다음 번에 그 태스크를 자동으로 수행할 수 있다. 제1 스크린(1210)은 제1 및 제2 사용자가 사용 중인 메시지 애플리케이션을 도시한다. 제2 스크린(1220)은 그림들/사진들을 선택하기 위한 오픈 갤러리 애플리케이션을 보여준다. 제3 스크린(1230)은 상기 선택된 사진을 공유하기 위한 클라우드 애플리케이션을 보여준다.
도 13은 몇몇 실시 예들에 따른 태스크를 학습하기 위한 프로세스(1300)의 블록도를 도시한다. 몇몇 실시 예들에서, 블록(1310)에서, 상기 프로세스(1300)는 전자 장치(예를 들어, 전자 장치(120), 도 2, 시스템(1400), 도 14 등)에 의해 실행되는 적어도 하나의 애플리케이션(예를 들어, 앱/애플리케이션(310), 도 3)과 연관되는 제1 정보(예컨대, 하나 또는 다수의 음성 명령 발화로부터의 정보/데이터, 대화 또는 컨텍스트로부터의 정보 등)를 획득한다. 블록(1320)에서, 프로세스(1300)는 적어도 하나의 애플리케이션에 대한 사용자 인터페이스(예를 들어, 입력 메커니즘(124)을 사용하여, 도 2) 상호작용들(예를 들어, 사용자 동작들(315), 도 3)의 시퀀스를 기록한다. 블록(1330)에서, 프로세스(1300)는 사용자 인터페이스 상호작용들의 시퀀스로부터 제2 정보(예를 들어, 시스템 정보 또는 서비스 정보 중 적어도 하나)를 추출한다. 블록(1340)에서, 프로세스(1300)는 모든 세부사항에 대해 획득되는, 제1 정보에 기초하여 제2 정보로부터 (원치 않는) 이벤트 또는 동작 중 적어도 하나를 (예를 들어, 이벤트 프로세서/필터(373)을 사용하여, 도 3) 필터링한다. 블록(1350)에서, 프로세스(1300)는 (예를 들어, 시맨틱 온톨로지(372, 도 3을 통해)) 시맨틱 온톨로지를 생성하기 위해 제1 정보에 포함된 각각의 요소에 대한 인식(예를 들어, 텍스트 및 이미지(550)의 인식, 도 5)을 수행한다. 블록(1360)에서, 프로세스(1300)는 시맨틱 온톨로지의 각각의 요소 및 필터링된 제2 정보에 기초하여 사용자 인터페이스 상호작용들의 시퀀스(예를 들어, 도 3의 태스크 명령(380))에 대하여 태스크 명령을 생성한다. 상기 태스크 명령은 적어도 하나의 애플리케이션에 대한 실행 가능한 순차적 이벤트 태스크 명령일 수 있다.
몇몇 실시 예들에서, 상기 제2 정보는 컨텍스트 및 상태를 이해하도록 처리된다. 몇몇 실시 예들에서, 프로세스(1300)는 사용자 인터페이스 상호작용으로부터 (예를 들어, 이벤트 메타데이터 추출기(345, 도 3)를 사용하여) 메타데이터를 추출하는 것을 포함할 수 있다. 메타데이터 및 태스크 정보는 태스크 이벤트 큐(예를 들어, 태스크 이벤트 큐(350, 도 3))에 큐-인될 수 있다. 이벤트들, 동작들 또는 이들의 조합은 태스크 이벤트 큐에 추가로 기초하여 제2 정보로부터 필터링될 수 있다. 몇몇 실시 예들에서, 태스크 명령은 태스크를 수행하기 위한 적어도 하나의 애플리케이션에서 실행하도록 구성된다.
하나 또는 다수의 실시 예에서, 프로세스(1300)는 (예를 들어, 이벤트 검증기(340)를 사용하여) 추가 메타데이터를 획득하기 위해 사용자 인터페이스 상호작용들의 시퀀스의 각각의 요소에 추가적인 음성 또는 텍스트 데이터(예를 들어, 추가 데이터(420, 도 4))를 추가하는 것을 포함할 수 있다.
몇몇 실시 예들에서, 프로세스(1300)는 텍스트, 이미지 및 사용자 인터페이스 요소를 분류함으로써 시스템, 서비스 및 태스크에 대한 컨텍스트 외(out of context) 데이터에 기반하여 사용자 인터페이스 상호작용들을 사전 처리(예를 들어, 이벤트 사전-프로세싱(530, 도 5)을 사용하여)하는 것을 포함할 수 있다.
몇몇 실시 예들에서, 프로세스(1300)는 태스크 명령이 사용자 음성 명령에 기초하여 적어도 하나의 애플리케이션에서 반복적으로 실행하도록 만들어지는 것을 포함할 수 있고, 상기 태스크 명령은 실행될 때 적어도 하나의 애플리케이션에서 태스크를 수행하는 논리적 데이터를 사용하는 의미론적 이벤트들의 시퀀스를 포함하는 것을 더 포함할 수 있다.
도 14는 하나 또는 다수의 실시 예를 구현하는 컴퓨팅 시스템을 포함하는 정보 처리 시스템을 나타내는 예시적인 상위-레벨 블록도이다. 시스템(1400)은 하나 또는 다수의 프로세서들(1411)(예를 들어, ASIC, CPU 등)을 포함하고, 또한 전자 디스플레이 장치(1412)(그래픽, 텍스트 및 기타 데이터를 표시하기 위한), 메인 메모리(1413)(예를 들어, 랜덤 액세스 메모리(RAM), 캐시 장치 등), 저장 장치(1414)(예를 들어, 하드 디스크 드라이브), 이동식 저장 장치(1415)(예를 들어, 이동식(removable) 저장 드라이브, 이동식 메모리, 자기 테이프 드라이브, 광 디스크 드라이브, 컴퓨터 소프트웨어 및/또는 데이터가 저장된 컴퓨터 판독가능 매체), 사용자 인터페이스 장치(1416)(예를 들어, 키보드, 터치 스크린, 키패드, 포인팅 장치), 및 통신 인터페이스(1417)(예를 들어, 모뎀, 무선 송수신기(예컨대, Wi-Fi, 셀룰러와 같은), 네트워크 인터페이스(예컨대, 이더넷(Ethernet) 카드와 같은), 통신 포트 또는 PCMCIA 슬롯 및 카드)를 더 포함할 수 있다.
통신 인터페이스(1417)는 소프트웨어 및 데이터가 인터넷(1450), 모바일 전자 장치(1451), 서버(1452), 네트워크(1453) 등을 통해 컴퓨터 시스템과 외부 장치들 사이에서 전송되도록 한다. 상기 시스템(1400)은 전술한 장치들(1411 내지 1417)이 연결되는 통신 인프라 스트럭처(1418)(예를 들어, 통신 버스, 크로스바 또는 네트워크)를 더 포함할 수 있다.
통신 인터페이스(1417)를 통해 전송된 정보는 신호를 전달하는 통신 링크를 경유하여, 통신 인터페이스(1417)에 의해 수신될 수 있는 전자, 전자기, 광학 또는 기타 신호와 같은 신호의 형태일 수 있으며, 와이어 또는 케이블, 광섬유, 전화선, 휴대폰(cellular phone) 링크, 무선 주파수(RF) 링크 및/또는 기타 통신 채널을 사용해 구현될 수 있다.
전자 장치(예를 들어, 전자 장치(120, 도 2))에서의 하나 또는 다수의 실시 예들의 일 구현에 있어서, 시스템(1400)은 카메라(128)(도 2)와 같은 이미지 캡처 장치(1420), 및 마이크로폰(122)(도 2)과 같은 오디오 캡처 장치(1419)를 더 포함한다. 상기 시스템(1400)은 MMS(1421), SMS(1422), 이메일(1423), 소셜 네트워크 인터페이스(SNI)(1424), 오디오/비디오(AV) 플레이어(1425), 웹 브라우저(1426), 이미지 캡처(1427) 등과 같은 애플리케이션 프로세싱 또는 프로세서들을 더 포함할 수 있다.
몇몇 실시 예들에서, 상기 시스템(1400)은, 전술한 것과 같이, ILS(300) 프로세싱(도 3), 흐름(400)의 프로세싱(도 4), 흐름(500)의 프로세싱(도 5), 흐름(600)의 프로세싱 (도 6), 흐름(700)의 프로세싱(도 7), 흐름(800)의 프로세싱(도 8) 및 프로세스(1300)(도 13)에 관련하여 설명된 것과 유사한 프로세싱을 구현할 수 있는 인텔리전트 러닝 프로세싱(1430)을 포함한다. 일 실시 예에서, 운영 체제(O/S)(1429)와 함께 인텔리전트 러닝 프로세싱(1430)은 시스템(1400)의 메모리에 상주하는 실행 가능한 코드로서 구현될 수 있다. 다른 실시 예에서, 상기 인텔리전트 러닝 프로세싱(1430)은 하드웨어, 펌웨어 등으로 제공될 수 있다.
일 실시 예에서, 메인 메모리(1413), 저장 장치(1414) 및 착탈식 저장 장치(1415)는 각각, 그 자체로 또는 임의의 조합으로, 하나 또는 다수의 프로세서(1411)에 의해 실행될 수 있는 전술한 실시 예들에 대한 명령들을 저장할 수 있다.
당해 기술분야의 전문가에게 알려진 바와 같이, 상기한 아키텍처에 따른 전술한 예시적인 아키텍처는 프로세서에 의한 실행을 위한 프로그램 명령들, 소프트웨어 모듈, 마이크로코드, 컴퓨터 판독가능 매체 상의 컴퓨터 프로그램 제품, 아날로그/논리 회로, 주문형 집적 회로(ASIC), 펌웨어, 가전제품, AV 장치, 무선/유선 송신기, 무선/유선 수신기, 네트워크, 멀티미디어 장치 등과 같은, 다양한 방식으로 구현될 수 있다. 또한, 상기 아키텍처의 실시 예들은 전체 하드웨어 실시 예, 전체 소프트웨어 실시 예 또는 하드웨어 및 소프트웨어 요소 모두를 포함하는 실시 예의 형태를 취할 수도 있다.
하나 또는 다수의 실시 예에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 및/또는 블록도를 참조하여 하나 또는 다수의 실시 예들이 설명되었다. 이러한 예시들/도면들의 각각의 블록 또는 이들의 조합은 컴퓨터 프로그램 명령들에 의해 구현될 수 있다. 프로세서에 제공될 때 상기한 컴퓨터 프로그램 명령들은 하나의 기계를 만들어내며, 이로써 프로세서를 통해 실행되는 명령들은 흐름도 및/또는 블록도에 지정된 기능들/동작들을 구현하기 위한 수단을 생성한다. 흐름도/블록도들의 각 블록은 하나 또는 다수의 실시 예들을 구현하는 하드웨어 및/또는 소프트웨어 모듈 또는 로직을 나타낼 수 있다. 대안적인 구현들에서, 블록들에 언급된 기능들은 도면들에 언급된 순서를 벗어나서, 동시에 또는 기타 순서로 발생할 수도 있다.
"컴퓨터 프로그램 매체", "컴퓨터 사용 가능한 매체", "컴퓨터 독출 가능 매체" 및 "컴퓨터 프로그램 제품"이라는 용어들은 주기억 장치, 보조 기억 장치, 이동식 저장 드라이브, 하드 디스크 드라이브에 설치된 하드 디스크 등의 매체를 총괄적으로 지칭하기 위해 사용된다. 이러한 컴퓨터 프로그램 제품들은 컴퓨터 시스템에 소프트웨어를 제공하기 위한 수단이다. 컴퓨터 판독가능 매체는 컴퓨터 시스템이 그 컴퓨터 판독가능 매체로부터 데이터, 명령, 메시지 또는 메시지 패킷, 및 기타 컴퓨터 판독가능 정보를 독출할 수 있도록 한다. 컴퓨터 판독가능 매체는, 예를 들어, 플로피 디스크, ROM, 플래시 메모리, 디스크 드라이브 메모리, CD-ROM 및 기타 영구 저장 장치와 같은 비-휘발성 메모리를 포함할 수 있다. 예를 들어, 그것은 컴퓨터 시스템들 간에 데이터 및 컴퓨터 명령과 같은 정보를 전송하는 데 유용하다. 컴퓨터 프로그램 명령들은 컴퓨터, 다른 프로그램가능 데이터 처리 장치, 또는 다른 장치가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독가능 매체에 저장될 수 있는데, 이로써 컴퓨터 판독가능 매체에 저장된 명령들이 흐름도 및/또는 블록도의 블록(들)에 지정된 기능/행위를 구현하는 명령들을 포함하는 제조 물품을 생성하도록 한다.
본 명세서의 블록도 및/또는 흐름도들을 나타내는 컴퓨터 프로그램 명령들은 컴퓨터, 프로그램 가능한 데이터 프로세싱 장치, 또는 프로세싱 장치에 로딩되어 그에 대해 수행되는 일련의 동작들이 컴퓨터로 구현되는 프로세스를 생성하도록 할 수 있다. 컴퓨터 프로그램들(즉, 컴퓨터 제어 논리)은 주 메모리 및/또는 보조 메모리에 저장된다. 컴퓨터 프로그램들은 또한 통신 인터페이스를 통해 수신될 수 있다. 그러한 컴퓨터 프로그램들은, 실행될 때, 컴퓨터 시스템이 본 명세서에 논의된 실시 예들의 특징들을 수행할 수 있게 한다. 특히, 컴퓨터 프로그램들은, 실행될 때, 프로세서 및/또는 멀티 코어 프로세서가 그 컴퓨터 시스템의 기능들을 수행할 수 있도록 한다. 이러한 컴퓨터 프로그램들은 컴퓨터 시스템의 컨트롤러를 나타낸다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의해 판독 가능하고 하나 또는 다수의 실시 예들의 방법을 수행하기 위해 컴퓨터 시스템에 의한 실행을 위한 명령들을 저장하는 유형(tangible)의 저장 매체를 포함한다.
이상, 상기한 실시 예들은 그것의 특정한 버전들을 참조하여 설명되었지만, 다른 버전들도 실현 가능하다. 따라서, 첨부된 청구범위의 정신과 범위는 본 명세서에 포함된 바람직한 버전들의 설명에만 한정되어서는 안 될 것이다.
100: 시스템, 120: 전자 장치, 130: 인텔리전트 러닝 프로세싱, 131: 인텔리전트 러닝 프로세싱, 140: 클라우드 또는 서버

Claims (15)

  1. 태스크 러닝(task learning) 방법에 있어서,
    전자 장치에 의해 실행되는 적어도 하나의 애플리케이션과 관련된 제1 정보를 획득하는 동작;
    상기 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 상호작용들의 시퀀스를 기록하는 동작;
    상기 사용자 인터페이스 상호작용들의 시퀀스로부터 제2 정보를 추출하는 동작;
    상기 제1 정보에 기초하여 상기 제2 정보로부터 이벤트 또는 동작 중의 적어도 하나를 필터링하는 동작;
    상기 제1 정보에 포함된 각 요소에 대한 인식을 수행하여 시맨틱 온톨로지(semantic onthology)를 생성하는 동작; 그리고
    상기 시맨틱 온톨로지 및 상기 필터링된 제2 정보에 기초하여 상기 사용자 인터페이스 상호작용들의 시퀀스에 대한 태스크 명령을 생성하는 동작을 포함하는, 태스크 러닝 방법.
  2. 제1항에 있어서,
    상기 제1 정보는 음성 명령 발화, 대화로부터의 정보 또는 컨텍스트 정보 중의 적어도 하나를 포함하고; 및
    상기 태스크 명령은 상기 태스크를 수행하기 위한 상기 적어도 하나의 애플리케이션 상에서 실행하도록 구성되는 것인 방법.
  3. 제1항에 있어서,
    상기 제2 정보는 시스템 정보 또는 서비스 정보 중의 적어도 하나를 포함하고, 상기 제2 정보는 컨텍스트 및 상태들을 이해하도록 처리되는 것인 방법.
  4. 제1항에 있어서,
    상기 사용자 인터페이스 상호작용들에서 메타데이터를 추출하는 동작;
    태스크 이벤트 큐에 상기 메타데이터 및 태스크 정보를 큐-인하는 동작; 및
    상기 태스크 이벤트 큐에 더 기초하여 상기 제2 정보로부터 이벤트들 또는 동작들 중의 적어도 하나를 필터링하는 동작을 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 사용자 인터페이스 상호작용들의 시퀀스의 각 요소에 추가적인 음성 또는 텍스트 데이터를 추가하여 추가 메타데이터를 얻는 동작을 더 포함하는 방법.
  6. 제1항에 있어서,
    텍스트, 이미지 및 사용자 인터페이스 요소들을 분류하여 상기 태스크에 대한 시스템, 서비스 및 컨텍스트 외(out of context) 데이터를 기반으로 상기 사용자 인터페이스 상호작용들의 시퀀스를 사전 처리하는 동작을 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 태스크 명령은 사용자 음성 명령들에 기초하여 상기 적어도 하나의 애플리케이션에서 반복적으로 실행되도록 이루어지고, 상기 태스크 명령은, 실행될 때, 상기 적어도 하나의 애플리케이션 상에서 상기 태스크를 수행하는 논리적 데이터를 사용하는 시맨틱 이벤트들(semantic events)을 포함하는 것인 방법.
  8. 전자 장치에 있어서,
    지시들을 저장하는 메모리; 및
    상기 지시들을 실행하는 적어도 하나의 프로세서를 포함하고, 상기 지시들은:
    상기 전자 장치에 의해 실행되는 적어도 하나의 애플리케이션과 연관된 제1 정보를 획득하고;
    상기 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 상호작용들의 시퀀스를 기록하고;
    상기 사용자 인터페이스 상호작용들의 시퀀스로부터 제2 정보를 추출하고;
    상기 제1 정보에 기초하여 상기 제2 정보로부터 이벤트 또는 동작 중의 적어도 하나를 필터링하고;
    상기 제1 정보에 포함된 각 요소에 대한 인식을 수행하여 시맨틱 온톨로지를 생성하고; 및
    상기 시맨틱 온톨로지 및 상기 필터링된 제2 정보에 기초하여 상기 사용자 인터페이스 상호작용들의 시퀀스에 대한 태스크 명령을 생성하도록, 구성되는 프로세스를 포함하는 전자 장치.
  9. 제8항에 있어서,
    상기 제1 정보는 음성 명령 발화, 대화로부터의 정보 또는 컨텍스트 정보 중의 적어도 하나를 포함하고; 및
    상기 태스크 명령은 태스크를 수행하기 위한 적어도 하나의 애플리케이션 상에서 실행하도록 구성되는 것인 전자 장치.
  10. 제8항에 있어서,
    상기 제2 정보는 시스템 정보 또는 서비스 정보 중 적어도 하나를 포함하고, 상기 제2 정보는 컨텍스트 및 상태들을 이해하도록 처리되는 것인 전자 장치.
  11. 제8항에 있어서, 상기 프로세스는,
    상기 사용자 인터페이스 상호작용들에서 메타 데이터를 추출하고;
    태스크 이벤트 큐에 상기 메타데이터 및 태스크 정보를 큐-인하고; 및
    상기 태스크 이벤트 큐에 더 기초하여 상기 제2 정보로부터 이벤트들 또는 동작들 중의 적어도 하나를 필터링하도록, 더 구성되는 것인 전자 장치.
  12. 제11항에 있어서, 상기 프로세스는,
    상기 사용자 인터페이스 상호작용들의 시퀀스의 각 요소에 추가 음성 또는 텍스트 데이터를 추가하여 추가 메타데이터를 획득하도록 더 구성되는 것인 전자 장치.
  13. 제8항에 있어서, 상기 프로세스는,
    텍스트, 이미지 및 사용자 인터페이스 요소들을 분류하여 상기 태스크에 대한 시스템, 서비스 및 컨텍스트 외(out of context) 데이터를 기반으로 상기 사용자 인터페이스 상호작용들의 시퀀스를 사전 처리하도록 더 구성되는 것인 전자 장치.
  14. 제8항에 있어서,
    상기 태스크 명령은 사용자 음성 명령들에 기초하여 적어도 하나의 애플리케이션 상에서 반복적으로 실행되도록 이루어지고, 상기 태스크 명령은, 실행될 때, 상기 적어도 하나의 애플리케이션 상에서 상기 태스크를 수행하는 논리적 데이터를 사용하는 시맨틱 이벤트의 시퀀스를 포함하는 것인 전자 장치.
  15. 프로세서에 의해 실행될 때, 제1항 내지 제7항에 따른 방법들 중의 하나를 수행하는 프로그램을 포함하는 비-일시적 프로세서 판독가능 매체.
KR1020217030129A 2019-03-29 2020-03-18 사용자 시연을 통하여 명령들을 학습하고 실행 가능하게 하기 위한 방법 및 시스템 KR20210134675A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/370,411 2019-03-29
US16/370,411 US11093715B2 (en) 2019-03-29 2019-03-29 Method and system for learning and enabling commands via user demonstration
PCT/KR2020/003697 WO2020204406A1 (en) 2019-03-29 2020-03-18 Method and system for learning and enabling commands via user demonstration

Publications (1)

Publication Number Publication Date
KR20210134675A true KR20210134675A (ko) 2021-11-10

Family

ID=72606231

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217030129A KR20210134675A (ko) 2019-03-29 2020-03-18 사용자 시연을 통하여 명령들을 학습하고 실행 가능하게 하기 위한 방법 및 시스템

Country Status (5)

Country Link
US (1) US11093715B2 (ko)
EP (1) EP3924816A4 (ko)
KR (1) KR20210134675A (ko)
CN (1) CN113646746A (ko)
WO (1) WO2020204406A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11468881B2 (en) 2019-03-29 2022-10-11 Samsung Electronics Co., Ltd. Method and system for semantic intelligent task learning and adaptive execution
US11113095B2 (en) 2019-04-30 2021-09-07 Automation Anywhere, Inc. Robotic process automation system with separate platform, bot and command class loaders
US11481304B1 (en) 2019-12-22 2022-10-25 Automation Anywhere, Inc. User action generated process discovery
US11182178B1 (en) 2020-02-21 2021-11-23 Automation Anywhere, Inc. Detection of user interface controls via invariance guided sub-control learning
US11462220B2 (en) * 2020-03-04 2022-10-04 Accenture Global Solutions Limited Infrastructure automation platform to assist in performing actions in response to tasks
US11775321B2 (en) * 2020-08-03 2023-10-03 Automation Anywhere, Inc. Robotic process automation with resilient playback capabilities
US11816437B2 (en) * 2020-12-15 2023-11-14 International Business Machines Corporation Automatical process application generation
US12020710B2 (en) * 2021-03-05 2024-06-25 Samsung Electronics Co., Ltd. Electronic apparatus and controlling method thereof
US11968182B2 (en) 2021-07-29 2024-04-23 Automation Anywhere, Inc. Authentication of software robots with gateway proxy for access to cloud-based services
US11820020B2 (en) 2021-07-29 2023-11-21 Automation Anywhere, Inc. Robotic process automation supporting hierarchical representation of recordings
GB2609947A (en) * 2021-08-18 2023-02-22 Blue Prism Ltd Systems and methods for determining GUI in interaction information for an end user device
US20230360091A1 (en) * 2022-02-28 2023-11-09 Virality Media, Inc. System and method for a social media management, publishing and marketing campaign collaboration platform

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010076775A (ko) 2000-01-28 2001-08-16 오길록 스크립트 자동 생성 에이전트 및 그 방법
JP2002259113A (ja) 2001-03-02 2002-09-13 Sharp Corp 音声マクロ処理装置、その方法、そのコンピュータ・プログラムおよびそのプログラムを記録した記録媒体
US7546576B2 (en) * 2001-06-15 2009-06-09 Lightsurf Technology, Inc. Software framework for web-based applications
JP4713820B2 (ja) * 2003-05-28 2011-06-29 パナソニック株式会社 プログラム実行制御装置、プログラム実行制御方法
US7295981B1 (en) 2004-01-09 2007-11-13 At&T Corp. Method for building a natural language understanding model for a spoken dialog system
US20060230319A1 (en) 2005-04-12 2006-10-12 Ryali Jogarao M Automated migration of software instructions
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8670972B1 (en) * 2007-06-07 2014-03-11 West Corporation Method and apparatus for voice recognition unit simulation
US7983997B2 (en) 2007-11-02 2011-07-19 Florida Institute For Human And Machine Cognition, Inc. Interactive complex task teaching system that allows for natural language input, recognizes a user's intent, and automatically performs tasks in document object model (DOM) nodes
US8407057B2 (en) 2009-01-21 2013-03-26 Nuance Communications, Inc. Machine, system and method for user-guided teaching and modifying of voice commands and actions executed by a conversational learning system
US8670597B2 (en) * 2009-08-07 2014-03-11 Google Inc. Facial recognition with social network aiding
JP5495014B2 (ja) 2009-09-09 2014-05-21 ソニー株式会社 データ処理装置、データ処理方法、およびプログラム
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US9064222B2 (en) 2010-05-14 2015-06-23 The Boeing Company Real time mission planning
KR101380967B1 (ko) 2011-09-09 2014-04-10 주식회사 팬택 애플리케이션 기능 실행을 위한 사용자 정의 패턴 설정 장치 및 방법
KR101348645B1 (ko) 2012-03-28 2014-01-08 이노디지털 주식회사 터치기반 스마트 단말에서 매크로어플 제공 방법 및 이를 위한 컴퓨터로 판독가능한 기록매체
US20140036022A1 (en) * 2012-05-31 2014-02-06 Volio, Inc. Providing a conversational video experience
JP2014048805A (ja) 2012-08-30 2014-03-17 Sharp Corp アプリ管理システム、情報表示装置、アプリ管理方法、アプリ管理プログラムおよびプログラム記録媒体
US9583100B2 (en) * 2012-09-05 2017-02-28 GM Global Technology Operations LLC Centralized speech logger analysis
US9454732B1 (en) 2012-11-21 2016-09-27 Amazon Technologies, Inc. Adaptive machine learning platform
CN103914496B (zh) * 2013-01-09 2017-04-19 北大方正集团有限公司 一种页面校对的方法和装置
WO2014197340A1 (en) * 2013-06-08 2014-12-11 Apple Inc. Device and method for generating user interfaces from a template
US10156611B2 (en) * 2013-09-12 2018-12-18 Teradyne, Inc. Executing code on a test instrument in response to an event
US9189742B2 (en) 2013-11-20 2015-11-17 Justin London Adaptive virtual intelligent agent
US9996680B2 (en) * 2015-01-18 2018-06-12 F. Scott Deaver Methods and related apparatus for managing access to digital assets
US10324926B2 (en) 2015-05-15 2019-06-18 Microsoft Technology Licensing, Llc System and method for extracting and sharing application-related user data
US10902339B2 (en) 2015-05-26 2021-01-26 Oracle International Corporation System and method providing automatic completion of task structures in a project plan
US10089465B2 (en) * 2015-07-24 2018-10-02 Bitdefender IPR Management Ltd. Systems and methods for tracking malicious behavior across multiple software entities
CN108369521A (zh) 2015-09-02 2018-08-03 埃丹帝弗有限公司 智能虚拟助理系统及相关方法
US10082954B2 (en) 2015-09-04 2018-09-25 International Business Machines Corporation Challenge generation for verifying users of computing devices
US10713220B2 (en) * 2016-05-18 2020-07-14 Koninklijke Philips N.V. Intelligent electronic data capture for medical patient records
WO2017218069A1 (en) * 2016-06-12 2017-12-21 Apple Inc. Devices, methods, and graphical user interfaces for processing intensity information associated with touch inputs
US11237696B2 (en) 2016-12-19 2022-02-01 Google Llc Smart assist for repeated actions
US10229680B1 (en) * 2016-12-29 2019-03-12 Amazon Technologies, Inc. Contextual entity resolution
US10970605B2 (en) * 2017-01-03 2021-04-06 Samsung Electronics Co., Ltd. Electronic apparatus and method of operating the same
US10664146B2 (en) 2017-01-04 2020-05-26 Amazon Technologies, Inc. Creation of custom user interface controls that are associated with physical devices
GB201708764D0 (en) * 2017-06-01 2017-07-19 Microsoft Technology Licensing Llc Managing electronic slide decks
US10438594B2 (en) 2017-09-08 2019-10-08 Amazon Technologies, Inc. Administration of privileges by speech for voice assistant system
US10546023B2 (en) 2017-10-03 2020-01-28 Google Llc Providing command bundle suggestions for an automated assistant
US20190222540A1 (en) 2018-01-16 2019-07-18 Capital One Services, Llc Automated chat assistant systems for providing interactive data using natural language processing
US10573298B2 (en) 2018-04-16 2020-02-25 Google Llc Automated assistants that accommodate multiple age groups and/or vocabulary levels
US10679622B2 (en) 2018-05-01 2020-06-09 Google Llc Dependency graph generation in a networked system
JP7195796B2 (ja) * 2018-07-23 2022-12-26 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及び、プログラム
US11468881B2 (en) 2019-03-29 2022-10-11 Samsung Electronics Co., Ltd. Method and system for semantic intelligent task learning and adaptive execution

Also Published As

Publication number Publication date
US11093715B2 (en) 2021-08-17
EP3924816A1 (en) 2021-12-22
CN113646746A (zh) 2021-11-12
EP3924816A4 (en) 2022-03-23
WO2020204406A1 (en) 2020-10-08
US20200311210A1 (en) 2020-10-01

Similar Documents

Publication Publication Date Title
US11093715B2 (en) Method and system for learning and enabling commands via user demonstration
CN107209781B (zh) 使用自然语言的上下文搜索
KR102244698B1 (ko) 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
US10007396B2 (en) Method for executing program and electronic device thereof
WO2021147948A1 (zh) 一种控件显示方法及电子设备
US11468881B2 (en) Method and system for semantic intelligent task learning and adaptive execution
US20180182395A1 (en) Automatic performance of user interaction operations on a computing device
RU2689203C2 (ru) Гибкая схема для настройки языковой модели
US11204681B2 (en) Program orchestration method and electronic device
KR20150021925A (ko) 제스처 또는 터치를 통해 사용자 인터페이스를 제어하는 최적화 기법
US20160147400A1 (en) Tab based browser content sharing
US20170286133A1 (en) One Step Task Completion
US11140534B2 (en) Non-intrusive proximity based advertising and message delivery
KR102276856B1 (ko) 컴퓨팅 디바이스와 상호작용하는 장치 및 방법
US20200401645A1 (en) Processor-implemented method, computing system and computer program for invoking a search
US20240086231A1 (en) Task migration system and method
CN113268212A (zh) 投屏方法、装置、存储介质及电子设备
US11243679B2 (en) Remote data input framework
US11630688B2 (en) Method and apparatus for managing content across applications
KR102468164B1 (ko) 계층화된 콘텐츠 선택
WO2023036082A1 (zh) 远程设备任务显示以及控制的系统及方法
CN112416211A (zh) 应用权限的开启控制方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination