KR102394289B1 - 맥락을 인식하는 인간-대-컴퓨터 대화 - Google Patents
맥락을 인식하는 인간-대-컴퓨터 대화 Download PDFInfo
- Publication number
- KR102394289B1 KR102394289B1 KR1020227002256A KR20227002256A KR102394289B1 KR 102394289 B1 KR102394289 B1 KR 102394289B1 KR 1020227002256 A KR1020227002256 A KR 1020227002256A KR 20227002256 A KR20227002256 A KR 20227002256A KR 102394289 B1 KR102394289 B1 KR 102394289B1
- Authority
- KR
- South Korea
- Prior art keywords
- topics
- user
- natural language
- topic
- raised
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 150
- 230000004044 response Effects 0.000 claims abstract description 90
- 230000007704 transition Effects 0.000 claims abstract description 38
- 230000008569 process Effects 0.000 claims description 94
- 230000015654 memory Effects 0.000 claims description 17
- 238000001914 filtration Methods 0.000 claims description 12
- 230000002452 interceptive effect Effects 0.000 claims description 8
- 230000003028 elevating effect Effects 0.000 claims 2
- 238000004891 communication Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 8
- 230000002085 persistent effect Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000012790 confirmation Methods 0.000 description 5
- 239000000463 material Substances 0.000 description 5
- XIWFQDBQMCDYJT-UHFFFAOYSA-M benzyl-dimethyl-tridecylazanium;chloride Chemical compound [Cl-].CCCCCCCCCCCCC[N+](C)(C)CC1=CC=CC=C1 XIWFQDBQMCDYJT-UHFFFAOYSA-M 0.000 description 4
- 230000007423 decrease Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- XEEYBQQBJWHFJM-UHFFFAOYSA-N Iron Chemical compound [Fe] XEEYBQQBJWHFJM-UHFFFAOYSA-N 0.000 description 2
- 235000004789 Rosa xanthina Nutrition 0.000 description 2
- 241000109329 Rosa xanthina Species 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 240000007839 Kleinhovia hospita Species 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 229910052742 iron Inorganic materials 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
- G06F16/3329—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/211—Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
- G06F40/35—Discourse or dialogue representation
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/08—Speech classification or search
- G10L15/18—Speech classification or search using natural language modelling
- G10L15/183—Speech classification or search using natural language modelling using context dependencies, e.g. language models
- G10L15/19—Grammatical context, e.g. disambiguation of the recognition hypotheses based on word sequence rules
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/02—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Machine Translation (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
사용자가 상이한 분야들(주제들) 간을 갑자기 전이할 때, 자동화된 보조기의 해석 및 응답 능력을 증진시키기 위해, 계속 진행 중인 인간-대-컴퓨터 대화의 맥락을 이용하는 것과 관련된 방법들, 장치 및 컴퓨터 판독가능 매체들이 설명된다. 다양한 구현예들에서, 자연 언어 입력은 계속 진행 중인 인간-대-컴퓨터 대화 동안 사용자로부터 자동화된 보조기를 사용해 수신될 수 있다. 자연 언어 입력을 파싱하기 위해 문법(들)이 선택될 수 있다. 이러한 선택은 계속 진행 중인 인간-대-컴퓨터 대화와 관련된 맥락 데이터 구조의 일부로서 저장된 토픽(들)에 근거할 수 있다. 자연 언어 입력은 선택된 문법(들)에 근거하여 파싱될 수 있고, 이에 따라 파스(들)가 발생될 수 있다. 파스(들)에 근거하여, 자연 언어 응답이 발생될 수 있고, 출력 디바이스를 사용해 사용자에게 출력될 수 있다. 파스(들) 혹은 자연 언어 응답에 의해 제기된 임의의 토픽(들)이 식별될 수 있고 맥락 데이터 구조에 추가될 수 있다.
Description
사용자들은 자연 언어(natural language)를 사용하여 점점 더 컴퓨터들과 상호작용할 수 있는데, 예를 들어, 본 명세서에서 "인간-대-컴퓨터 대화(human-to-computer dialog)들"로서 지칭될 그러한 것에서 컴퓨터들과 상호작용할 수 있다. 예를 들어, 스마트 폰(smart phone)들, 태블릿(tablet)들, 스마트 와치(smart watch)들, 독립형 스마트 스피커(standalone smart speaker)들, 등과 같은 다수의 모바일 컴퓨팅 디바이스(mobile computing device)들은 "자동화된 보조기(automated assistant)들"(이것은 또한 "상호작용형 보조기 모듈(interactive assistant module)들, "모바일 보조기(mobile assistant)들" 등으로 알려짐)로서 지칭되는 소프트웨어 프로그램(software program)들을 포함한다. 자동화된 보조기들은 자연 언어 입력(예를 들어, 먼저 발성된 후에 텍스트(text) 변환된 자연 언어 입력, 또는 초기에 텍스트로서 수신된 자연 언어 입력)을 파싱(parsing) 및 해석(interpret)하도록 구성될 수 있고, 그리고 질문들에 대한 답변들, 태스크 개시(task initiation) 등과 같은 응답형 출력(responsive output)을 제공하도록 구성될 수 있다. 기존의 자동화된 보조기들은 종종 대화의 분야(domain)들 간에 전환(switching)을 행하는데 어려움을 갖는다. 예를 들어, 만약 사용자와 자동화된 보조기가 하나의 토픽(topic) 혹은 분야(예컨대, 게임(game)을 플레이(playing)하는 것)에서 임의의 주제(subject)에 대해 대화를 교환하고 있어왔고, 이후 사용자가 갑자기 연관되지 않은 분야(예를 들어, 날씨)에서의 또 하나의 다른 토픽을 향해 대화를 이끌어간다면, 자동화된 보조기는 전체적으로 응답하지 않을 수 있고, 그리고/또는 적절하게 응답하기 위해 추가적인 대화를 요구할 수 있다.
본 명세서에서 설명되는 기법들은, 사용자가 상이한 분야들 간에 인간-대-컴퓨터 대화를 갑자기 전이(transition)할 때 자동화된 보조기(혹은 더 일반적으로는, 쌍방향 음성 응답(Interactive Voice Response)("IVR") 컴포넌트(component))의 해석 및 응답 능력을 증진시키기 위해, 계속 진행 중인 인간-대-컴퓨터 대화(ongoing human-to-computer dialog)의 맥락(context)을 이용하기 위한 기법들이다. 다양한 구현예들에서, 소위 "맥락 데이터 구조(contextual data structure)"가, 계속 진행 중인 인간-대-컴퓨터 대화와 관련된 다양한 "토픽들"을 지속시키기 위해 사용될 수 있다. 이러한 토픽들은 예를 들어, 사용자의 자연 언어 입력을 파싱하기 위해 사용되는 하나 이상의 문법들을 선택하는데 사용될 수 있다.
선택된 문법들에 의해 생성된 파스(parse)들에 근거하여, 그리고 일부 경우들에서는 또한, 계속 진행 중인 인간-대-컴퓨터 대화를 나타내는 동적 대화 트리(dialog tree)에 근거하여, 응답(예를 들어, 자연 언어 응답, 태스크의 개시, 등)이, 자동화된 보조기에 의해 발생 및 제공될 수 있다. 한편, 사용자에 의해 그리고/또는 자동화된 보조기에 의해, 계속 진행 중인 대화에 추가되는 임의의 새로운 토픽들은, 맥락 데이터 구조에 추가될 수 있다. 잠시 언급되었거나 시사되었던 토픽들은 탈락(drop)될 수 있다. 이러한 방식으로, 만약 사용자가 즉각적으로는 관련이 없지만 계속 진행 중인 대화의 어떤 이전의 토픽과 관련되었던 자연 언어 입력을 제공한다면, 자동화된 보조기는 그 이전의 토픽으로 끊김 없이(seamlessly) 다시 되돌아(pivot back) 갈 수 있다. 따라서, 자동화된 보조기는, 임의의 주어진 시간에 사용자가 말하고 있는 것을 더 잘 이해할 수 있고, 이로부터, 명확한 진술들이 없어도 사용자가 요구하는 정보 또는 서비스를 더 잘 제공할 수 있다.
일부 구현예들에서, 본 명세서에서 설명되는 기법들은 파서 서브시스템(parser subsystem) 및 응답 서브시스템(response subsystem)을 포함하는 시스템 상에서 구현될 수 있다. 파서 서브시스템은 자연 언어 입력을 해석하여 해석물(예를 들어, "파스(parse)" 및/또는 토픽)을 응답 서브시스템에 제공할 책임을 가질 수 있다. 응답 서브시스템은 해석물들을 수신하여, 자연 언어 응답을 발생 및 출력함으로써 또는 어떤 다른 응답 액션(responsive action)을 취함으로써(예컨대, 특정 앱(app)을 론칭(launching)시킴으로써), 적절하게 응답할 책임을 가질 수 있다.
일부 구현예들에서, 파서 서브시스템은 계속 진행 중인 인간-대-컴퓨터 대화와 관련된 앞서언급된 맥락 데이터 구조에 저장된 하나 이상의 토픽들에 근거하여, 수신된 자연 언어 입력을 파싱하기 위해 하나 이상의 문법들을 선택하도록 구성될 수 있다. 예를 들어, 일부 구현예들에서, (예를 들어, 잠재적으로 매우 클 수 있는 문법들의 라이브러리(library)에서의) 복수의 문법들 각각이 하나 이상의 적용가능한 토픽들과 관련되어 저장될 수 있다. 문법은 만약 그 관련된 토픽들 중 하나 이상이 현재 인간-대-컴퓨터 대화와 관련되어 있다면(그리고/또는 충분히 관련되어 있다면), 선택/적용될 수 있고, 그렇지 않다면 적용되지 않을 수 있다. 따라서, 사용자가 자연 언어 입력을 제공하는 경우, 현재-관련이 있는 토픽들과 관련된 그러한 문법들만이 선택되어 적용된다. 이러한 기법은 본 명에서에서 때때로 "맥락 필터링(contextual filtering)"으로서 지칭된다. 맥락 필터링은 대화의 맥락에서 의미가 없는(이에 따라 결과적으로 의미없는 출력을 생성할 수 있는) 문법들을 피할 수 있는 기술적 이점을 제공한다. 일부 경우들에서, 이것은 인간으로부터 수신된 각각의 자연 언어 입력에 적용되는 문법들의 수를 감소시킬 수 있다(각각의 자연 언어 입력에 잠재적으로 거대한 라이브러리의 모든 문법들을 적용하는 것과는 상반되는 것임). 적용되는 문법들의 수를 감소시키는 것은 프로세서 싸이클(processor cycle)들, 메모리(memory), 그리고/또는 네트워크 대역폭(network bandwidth)과 같은 컴퓨팅 리소스(computing resource)들의 이용을 감소시킨다. 이것은 인간-대-컴퓨터 대화들에 대해 특히 이로울 수 있는데, 왜냐하면 자동화된 보조기의 지연(latency)을 최소화하는 것(즉, 사용자 입력에 대한 자동화된 보조기 응답을 가능한 한 빠르게 하는 것을 보장하는 것)은 사용자들에게는 가장 중요할 수 있기 때문이다. 만약 인간-대-컴퓨터 대화가 단지 막 개시되었고, 이에 따라 어떠한 토픽들도 아직 관련되어 있지않다면, 파서 서브시스템은 수신된 자연 언어 입력을 종래의 기법들을 사용하여 프로세싱(processing)할 수 있다. 그 다음에, 파서 서브시스템은 인간-대-컴퓨터 대화 동안 인간에 의해 제기된 혹은 자동화된 보조기에 의해 제기된 토픽들에 근거하여 맥락 데이터 구조를 채우기 시작할 수 있다.
파서 서브시스템 및 응답 서브시스템과 모두 상호작용하는 것은 앞서언급된 맥락 데이터 구조이다. 맥락 데이터 구조는 메모리에 저장되는 데이터 구조들의 다양한 형태들을 취할 수 있고, 계속 진행 중인 인간-대-컴퓨터 대화와 관련된 토픽들 혹은 최근에 관련되었던 토픽들을 지속시키기 위해 사용될 수 있다. 사용자에 의해 혹은 자동화된 보조기에 의해 토픽이 제기되면, 토픽은 예를 들어, 응답 서브시스템에 의해 맥락 데이터 구조에 추가될 수 있다. 만약 맥락 데이터 구조 내에 이미 지속되고 있는 토픽이 제기되면, 그 토픽은 "터치(touch)"될 수 있는바, 예를 들어, 해당 토픽은 다시 한번 더 대화의 선두(forefront)로 이동될 수 있다.
이러한 것을 위해, 다양한 구현예들에서, 맥락 데이터 구조 내에서 지속되는 각각의 토픽은 계속 진행 중인 인간-대-컴퓨터 대화에 대한 토픽의 관련성의 정도(measure)와 관련될 수 있다. 예를 들어, 일부 구현예들에서, 각각의 토픽과 관련된 관련성의 정도는 토픽이 마지막으로 제기된 후, 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수에 적어도 부분적으로 근거하여 결정될 수 있다. 토픽이 제기된 후에(예를 들어, 추가된 후에 혹은 터치된 후에) 전환이 더 많이 일어날 수록, 해당 토픽에 대한 관련성의 정도는 더 낮아진다. 사용자가 날씨에 대한 질문으로 인간-대-컴퓨터 대화를 시작했고(이것은 토픽 "날씨"가 추가되도록 함), 하지만 이후 대화는 날씨와 연관되지 않은 광범위한 토픽들을 다루었다고 가정한다. 날씨의 토픽이 제기된 후에 대화에 대한 전환이 더 많아질수록, 토픽 날씨와 관련된 관련성 점수는 더 많이 감소된다. 일부 구현예들에서, 만약 토픽의 관련성 정도가 임계치 아래로 감소한다면, 해당 토픽은 맥락 데이터 구조로부터 완전히 탈락될 수 있다. 맥락 데이터 구조로부터 "오래된(stale)" 토픽들을 탈락시키는 것은 다양한 기술적 이점들을 제공할 수 있다. 파서 서브시스템에 의해 선택되어(즉, 앞서 설명된 바와 같이 맥락적으로 필터링되어) 사용자로부터 수신된 각각의 자연 언어 입력에 적용되는 문법들이 더 많을수록, 컴퓨팅 리소스들은 더 많이 소비된다. 오래된 토픽들을 탈락시킴으로써, 파서 서브시스템에 의해 각각의 자연 언어 입력에 적용되는 문법들의 수가 감소될 수 있고, 그럼으로써 컴퓨팅 리소스 소비가 감소될 수 있게 된다. 추가적으로, 파서 서브시스템을 현재 인간-대-컴퓨터 대화에 관련성이 있는 토픽들과 관련된 문법들에 집중시킴으로써, 토픽을 벗어나거나 혹은 그렇지 않으면 의미없는 파스들이 생성될 확률을 더 줄일 수 있다(여기서 토픽을 벗어나거나 의미없는 파스들이 생성은 자동화된 보조기로 하여금 유사하게 의미없는 출력을 제공하게 할 수 있음). 따라서, 사용자의 특정 목표를 달성하기 위해 요구되는 인간-대-컴퓨터 대화 전환의 수(및 이에 따른 사용자에 의해 제공되는 자연 언어 입력들의 수)가 감소될 수 있고, 이것은 다수의 입력들을 제공하는데 제한된 물리적 혹은 상황적 능력들을 갖는 사용자들에게 혜택을 줄 수 있다.
관련성의 정도는 또한 다른 인자(factor)들에 근거할 수 있다. 예를 들어, 일부 구현예들에서, 각각의 토픽과 관련된 관련성의 정도는 토픽과 맥락 데이터 구조 내의 하나 이상의 다른 토픽들 간의 (예컨대, 의미론적(semantic)) 연관성의 정도에 적어도 부분적으로 근거하여 결정될 수 있다. 만약 한동안 제 1 토픽이 제기되지 않았지만, 의미론적으로-연관된 제 2 토픽이 이후 제기된다면, 제 1 토픽의 관련성 정도는 상승될 수 있다.
일부 구현예들에서, 맥락 데이터 구조는 복수의 노드(node)들과 복수의 노드들을 연결하는 복수의 에지(edge)들을 포함하는 무방향 그래프(undirected graph)의 형태를 취할 수 있다. 무방향 그래프의 각각의 노드는 맥락 데이터 구조의 일부로서 저장된 하나 이상의 토픽들 중 주어진 토픽을 나타낼 수 있다. 일부 구현예들에서, 각각의 노드는 또한 주어진 토픽이 마지막으로 제기된 이후, 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수를 저장할 수 있다. 일부 구현예들에서, 두 개의 노드들을 연결하는 각각의 에지는 두 개의 노드들이 각각 나타내는 두 개의 토픽들 간의 연관성(예를 들어, 의미론적 연관성, 등)의 정도를 나타낼 수 있다. 당연한 것으로, 다른 데이터 구조들이 여기서 고려된다.
일부 구현예들에서, 각각의 문법은 토픽 및 해당 토픽에 대한 임계 관련성 점수 모두와 관련될 수 있다. 만약 토픽이 맥락 데이터 구조 내에서 지속되고 있지만 그 관련성 점수가 임계치를 충족시키지 못한다면, 문법은 선택되지 않을 수 있다. 이것은 문법들이 언제 적용될 것인지 및 언제 적용되지 않을 것인지에 관한 미세-조정(fine-tuning)을 가능하게 한다.
다양한 구현예들에서, 응답 서브시스템은 파서 서브시스템에 의해 선택되어 적용되는 문법들로부터 해석물들(혹은 "파스들")을 수신할 수 있다. 일부 구현예들에서, 파서 서브시스템은 또한, 응답 서브시스템에게 토픽들을 제공할 수 있는데, 예를 들어, 파스들/해석물들의 일부로서 제공할 수 있고 그리고/또는 별개로 제공할 수 있다. 일부 구현예들에서, 이러한 토픽들은 맥락 데이터 구조 내에서 이미 지속되고 있는 것일 수 있고, 그리고 적용되었던 그들의 관련된 문법들에 의해 터치되었던 것일 수 있다. 다양한 구현예들에서, 응답 서브시스템은, 외관상 연관성이 없는 토픽들 사이에서, 계속 진행 중인 인간-대-컴퓨터 대화를 조향(steer)하기 위해 대화 트리를 이용할 수 있다. 본질적으로, 응답 서브시스템은 파서 서브시스템으로부터 하나 이상의 파스들(혹은 해석물들) 및 토픽들을 수신하고, 이러한 파스들 및 토픽들에 근거하여 대화 트리를 따라 대화를 조향한다.
예를 들어, 일부 구현예들에서, 대화 트리 내의 각각의 노드는 자연 언어 프로세스를 나타낸다. 대화 트리의 루트 노드(root node)는, (프로세스를 개시시킴으로써 또는 사용자로부터의 명확화(disambiguation)를 요구함으로써) 임의의 자연 언어 입력을 핸들링(handlig)하도록 구성될 수 있고, 그리고 사용자로부터의 자연 언어 입력에 응답하여 개시되는 프로세스들에 대응하는 하나 이상의 차일드 노드(child node)들을 개시시키도록 구성될 수 있다. 차일드 프로세스들 자신들은 자신들의 내부 대화의 다양한 양상들을 핸들링하기 위해 추가적인 차일드 프로세스들을 추가할 수 있다. 이것은 코드 유지관리 및 재사용을 간단하게 할 수 있는데, 왜냐하면 각각의 프로세스는 본 명세서에서 설명되는 기법들을 구현하도록 구성된 모듈식 프로세스(modular process)일 수 있기 때문이다.
응답 서브시스템이 사용자에 대한 응답(예를 들어, 자연 언어 응답, 응답형 액션 혹은 태스크 등)을 발생시킬 때마다, 응답 서브시스템은 임의의 연관된 토픽들을 맥락 데이터 구조에 추가할 수 있다. 일부 구현예들에서, 대화 트리의 각각의 노드는 (예컨대, 노드의 기반이 되는 프로세스의 개발자에 의해 선택될 수 있는) 하나 이상의 토픽들과 관련될 수 있다. 앞에서 언급된 바와 같이, 각각의 문법은 또한 하나 이상의 토픽들과 관련될 수 있다. 결과적으로, 이러한 토픽들을 맥락 데이터 구조에 추가함으로써, 응답 서브시스템은 실제로 임의의 시점에서 파서 서브시스템에 의해 적용가능할 수 있는 다수의 문법들을 추가한다. 따라서, 만약 사용자가 하나의 토픽에 대해 대화를 하고, 대화방향을 바꾸고, 그 다음에 본래의 토픽으로(혹은 의미론적으로 연관된 토픽으로) 되돌아 온다면, 그 본래의 토픽과 관련된 문법들은 여전히 적용가능할 수 있는데, 왜냐하면 이들과 관련된 토픽들이 여전히 맥락 데이터 구조 내에서 지속되고 있기 때문이다. 하지만, 앞에서 언급된 바와 같이, 만약 인간-대-컴퓨터 대화가 충분히 긴 시간 동안 임의의 주어진 토픽으로부터 벗어나 있다면, 일부 구현예들에서, 그 토픽은 맥락 데이터 구조로부터 탈락될 수 있는데, 예를 들어, 파서 서브시스템이 각각의 자연 언어 입력에 과도한 수의 문법들을 적용하는 것(이것은 앞에서 논의된 바와 같이, 값비싼 컴퓨터연산 비용을 요구하게 될 수 있음)을 막기 위해 해당 토픽은 맥락 데이터 구조로부터 탈락될 수 있다.
예로서, 사용자가 어구 "Let's play a game(게임을 플레이하자)"로 인간-대-컴퓨터 대화를 개시한다고 가정한다. 응답 서브시스템은 루트 노드에서 대화 트리를 시작할 수 있다. 파서 서브시스템은 사용자의 자연 언어 입력을 파싱/해석할 수 있고, 응답 서브시스템에게 파스/해석물 및 임의의 제기된 토픽들(예컨대, 게임)을 제공할 수 있다. 수신된 파스 및 토픽(들)에 근거하여, 응답 서브시스템은 "OK, what game do you want to play?(오케이, 당신은 어떤 게임을 플레이하고 싶나요?)"와 같은 대화를 제공할 수 있고, 그리고 이후 루트 노드 아래의 게이밍 차일드 프로세스(gaming child process)를 개시시킬 수 있다. 응답 서브시스템은 또한, (수신된 입력에 근거하여 파서 서브시스템에 의해 결정될 수 있는, 그리고/또는 게이밍 차일드 프로세스와 관련된 토픽들에 근거하여 응답 서브시스템에 의해 결정될 수 있는) "game(게임)" 및 "game selection(게임 선택)"과 같은 토픽들을 맥락 데이터 구조에 추가할 수 있다. 게이밍 차일드 프로세스는 (예를 들어, 그 개발자에 의해) 하나 이상의 토픽들과 관련될 수 있는데, 각각은 "game(게임)", "game selection(게임 선택)"과 같은 게임들과 연관된 하나 이상의 토픽들과 관련될 수 있다. 이러한 토픽들과 관련될 수 있는 하나의 문법은 예를 들어, "list_available_games(나열_가용_게임)" 문법일 수 있다. 이러한 토픽들과 관련된 또 하나의 다른 문법은 예컨대, "number_of_players(플레이어_수)" 문법일 수 있다. 사용자가 현재 "What games do you have?(당신은 어떤 게임들을 가지고 있나요?)"라고 발성한다고 가정한다. 파서 서브시스템은 "list_available_games(나열_가용_게임)" 문법을 선택할 수 있는데, 왜냐하면 그 토픽(들)(game(게임), game selection(게임 선택))이 상대적으로 높은 관련성 정도로 맥락 데이터 구조에 현재 존재하기 때문이다(왜냐하면, 이들이 바로 최근에 제기된 것이기 때문). "list_available_games(나열_가용_게임)" 문법은 사용자의 진술을 파싱할 수 있고, 그리고 그 해석물(예를 들어, 커맨드(command), "LIST GAMES(게임 나열)")을 응답 서브시스템에 제공할 수 있다. 결과적으로, 자동화된 보조기는 (예를 들어, 응답 서브시스템을 통해) "I have Sports Trivia and Historical Trivia(나는 스포츠 트리비아 및 히스토리컬 트리비아를 갖고 있어요)"와 같은 이용가능한 게임들을 나열할 수 있다. 응답 서브시스템은 또한 "trivia(트리비아)", "sports(스포츠)" 및 "history(히스토리)"와 같은 토픽들을 맥락 데이터 구조에 추가할 수 있고, 그리고 스포츠 트리비아 및 히스토리컬 트리비아 게임들에 대응하는 차일드 프로세스 노드들을 대화 트리에 추가할 수 있다.
이제, 사용자가 갑자기 예컨대 "오늘 날씨 예보는 어떻지?(What's the weather forecast today?)"라고 발성함으로써, 주제를 바꾼다고 가정한다. 현재 토픽 "weather(날씨)"와 연관된 어떠한 토픽들도 맥락 데이터 구조에 저장되어 있지 않을 수 있다. 일부 구현예들에서, 파서 서브시스템은 "weather(날씨)"와 같은 이러한 발성에 의해 제기된 각각의 토픽과 관련되어 있는 하나 이상의 문법들을 식별(예를 들어, 문법들의 거대한 저장소로부터 맥락적으로 필터링)할 수 있다. 파서 서브시스템은 응답 서브시스템에 하나 이상의 식별된 문법들에 의해 생성된 하나 이상의 파스들을 제공할 수 있고, 뿐만 아니라 대응하는 토픽(들)을 제공할 수 있다. 응답 서브시스템은 파서 서브시스템에 의해 반환된 파스들/토픽(들)과 기존의 대화 트리 노드들을 관련시키려고(예를 들어, 매칭(matching)시키려고) 시도할 수 있다. 일부 경우들에서, 파서 서브시스템에 의해 제공된 파스/토픽은 대화 트리 노드와 관련될 수 있는데(예를 들어, 매칭될 수 있는데), 만약 (i) 대화 트리 노드와 관련되어 있는 토픽이 파스/토픽의 토픽과 매칭된다면, 그리고 (ii) 대화 트리 노드가 파스/토픽의 파스를 핸들링할 수 있다면, 대화 트리 노드와 관련(예컨대, 매칭)될 수 있다. 만약 하나의 조건이 충족되지 않거나 혹은 양쪽 조건이 모두 충족되지 않는다면, 제어권은 대화 트리의 루트 노드로 다시 건네질 수 있다. 이것은 본 예에서 일어날 가능성이 높은 데, 왜냐하면 토픽 "weather(날씨)"는 대화 트리에 이미 추가되었던 앞서언급된 토픽들 중 어느 것과도 매칭되지 않을 가능성이 높기 때문이다. 이에 따라, 응답 서브시스템은 토픽 "weather(날씨)"와 관련된 차일드 프로세스 노드를 로딩(loading)할 수 있고, 그리고 "Cloudy with a 30% chance of rain(비 올 확률 30%의 구름 낌)"과 같은 응답을 제공할 수 있다. 응답 서브시스템은 또한 토픽 "weather(날씨)"를 맥락 데이터 구조에 추가할 수 있고, 그리고 일부 경우들에서는, "game(게임)", "game selection(게임 선택)", "trivia(트리비아)", "sports(스포츠)", 및 "history(히스토리)"와 같은 맥락 데이터 구조에 이미 포함되어 있는 날씨와 연관되지 않은 토픽들과 관련된 관련성의 정도를 감소시킬 수 있다.
사용자가 현재 "Sports Trivia(스포츠 트리비아)"라고 발성한다고 가정한다. 비록 사용자가 가장 최근에 인간-대-컴퓨터 대화의 주제를 "날씨"로 바꾸었을 지라도, "game(게임)", "game selection(게임 선택)", "trivia(트리비아)", "sports(스포츠)", 및 "history(히스토리)"의 토픽들은, 관련성 정도가 약간 감소되었을 뿐, 모두 여전히 맥락 데이터 구조에 저장되어 있다. 이에 따라, 파서 서브시스템은 사용자의 발성을 파싱하기 위해 이러한 토픽들과 관련된 하나 이상의 문법들을 여전히 선택할 수 있다(예를 들어, 문법들의 더 큰 저장소로부터 맥락적으로 필터링할 수 있음). 그 다음에, 파서 서브시스템은 선택된 문법들을 입력에 적용할 수 있고, 그 결과적인 파스들 및 관련된 토픽들을 응답 서브시스템에 제공할 수 있다. 그 다음에, 응답 서브시스템은 대화 트리에 이전에 추가된 스포츠 트리비아 차일드 프로세스 노드에 제어권을 건네줄 수 있다.
본 명세서에서 설명되는 기법들은 이미 언급된 것들보다 뛰어난 다양한 추가적인 기술적 이점들을 일으킬 수 있다. 예를 들어, 본 명세서에서 설명되는 기법들은 대화 주제를 부드럽게 변경시킴에 있어 (예를 들어, 개별 IVR 프로세스들의) 개개의 개발자들로 하여금 그러한 주제 변경을 핸들링하는 상당량의 리소스들을 소비하도록 요구함이 없이 부드러운 대화 주제 변경을 가능하게 한다. 추가적으로 혹은 대안적으로, 문법들은 오로지 특정 토픽들이 관련된 경우에만(그리고 일부 경우들에서는 다양한 임계치들을 충족시키는 관련성 정도를 가져야만) 적용가능하기 때문에, 본 명세서에서 설명되는 기법들의 사용은 또한, 발생되는 파스들/해석물들의 수를 현재 대화 맥락에서 의미가 있는 그러한 것들로만 한정시킨다. 이것은 메모리, 프로세서 싸이클들, 네트워크 대역폭, 등과 같은 컴퓨터연산 리소스들을 절약할 수 있다.
일부 구현예들에서, 본 명세서에서 설명되는 기법들은 자동화된 보조기들에 의해 구현될 IVR 대화들의 모듈식 설계를 용이하게 한다. (본 명세서에서 설명되는 대화 트리들의 계층적 구조를 포함하는) 이러한 모듈식 설계는 유지관리하기가 더 쉬울 수 있으며, 또한 더 쉬운 코드 재사용을 가능하게 할 수 있다. 일부 구현예들의 추가적인 기술적 이점은, 본 명세서에서 설명되는 대화 트리들이 단일 프로그래밍 언어(예컨대, C++)로 모든 비즈니스 로직(business logic)이 쉽게 개발될 수 있게 한다는 것이다. 결과적으로, 수 개의 프로그래밍 언어들을 수반하는 해법들과 비교해 개발 시간이 감소된다.
일부 구현예들에서, 하나 이상의 프로세서들에 의해 수행되는 방법이 제공되는데, 이러한 방법은, 사용자로부터 자연 언어 입력(natural language input)을 수신하되 하나 이상의 프로세서들에 의해 동작되는 자동화된 보조기(automated assistant)와 사용자 간의 계속 진행 중인 인간-대-컴퓨터 대화(human-to-computer dialog)의 일부로서 수신하는 것; 자연 언어 입력을 파싱(parsing)하기 위해 하나 이상의 문법(grammar)들을 선택하는 것(여기서 선택하는 것은 계속 진행 중인 인간-대-컴퓨터 대화와 관련된 맥락 데이터 구조(contextual data structure)의 일부로서 메모리에 저장된 하나 이상의 토픽(topic)들에 근거함); 선택된 하나 이상의 문법들에 근거하여 자연 언어 입력을 파싱하여 하나 이상의 파스(parse)들을 발생시키는 것; 파스들 중 하나 이상의 파스에 근거하여 자연 언어 응답(natural language response)을 발생시키는 것; 하나 이상의 출력 디바이스들을 사용하여 사용자에게 자연 언어 응답을 출력하는 것; 파스들 중 하나 이상의 파스 혹은 자연 언어 응답에 의해 제기된 하나 이상의 토픽들을 식별하는 것; 그리고 식별된 하나 이상의 토픽들을 맥락 데이터 구조에 추가하는 것을 포함한다.
본 명세서에서 개시되는 기술(technology)의 이러한 구현예들 및 다른 구현예들은 선택에 따라서는 다음과 같은 특징들 중 하나 이상의 특징을 포함할 수 있다.
다양한 구현예들에서, 하나 이상의 문법들은 복수의 문법들로부터 선택될 수 있고, 여기서 복수의 문법들 각각은 하나 이상의 적용가능한 토픽들과 관련되어 저장된다. 다양한 구현예들에서, 맥락 데이터 구조의 일부로서 메모리에 저장된 각각의 토픽은 계속 진행 중인 인간-대-컴퓨터 대화에 대한 토픽의 관련성의 정도(measure)와 관련될 수 있다. 다양한 구현예들에서, 각각의 토픽과 관련된 관련성의 정도는 토픽이 마지막으로 제기된 후, 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수에 적어도 부분적으로 근거하여 결정될 수 있다.
다양한 구현예들에서, 각각의 토픽과 관련된 관련성의 정도는 토픽과 맥락 데이터 구조 내의 하나 이상의 다른 토픽들 간의 연관성의 정도에 적어도 부분적으로 근거하여 결정될 수 있다.
다양한 구현예들에서, 맥락 데이터 구조는 복수의 노드(node)들과 복수의 노드들을 연결하는 복수의 에지(edge)들을 포함하는 무방향 그래프(undirected graph)를 포함할 수 있다. 다양한 구현예들에서, 무방향 그래프의 각각의 노드는, 맥락 데이터 구조의 일부로서 저장된 하나 이상의 토픽들 중 주어진 토픽과, 그리고 주어진 토픽이 마지막으로 제기된 이후, 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수를 나타낼 수 있다. 다양한 구현예들에서, 두 개의 노드들을 연결하는 각각의 에지는 두 개의 노드들이 각각 나타내는 두 개의 토픽들 간의 연관성의 정도를 나타낼 수 있다.
다양한 구현예들에서, 본 방법은 또한, 계속 진행 중인 인간-대-컴퓨터 대화 동안 호출되었던 하나 이상의 쌍방향 음성 프로세스(interactive voice process)들을 나타내는 하나 이상의 노드들을 갖는 대화 트리(dialog tree)를 발생시키는 것을 포함할 수 있다. 다양한 구현예들에서, 노드들 중 하나 이상은 하나 이상의 토픽들과 관련될 수 있다. 다양한 구현예들에서, 앞서의 선택하는 것은 하나 이상의 토픽들과 관련된 하나 이상의 문법들로부터 하나 이상의 문법들을 선택하는 것을 포함할 수 있다.
추가적으로, 일부 구현예들은 하나 이상의 컴퓨팅 디바이스들의 하나 이상의 프로세서들을 포함하고, 여기서 하나 이상의 프로세서들은 관련된 메모리에 저장된 명령들을 실행하도록 동작가능하고, 그리고 명령들은 앞서언급된 방법들 중 임의의 방법의 수행을 일으키도록 구성된다. 일부 구현예들은 또한 앞서언급된 방법들 중 임의의 방법을 수행하기 위해 하나 이상의 프로세서들에 의해 실행가능한 컴퓨터 명령들을 저장하고 있는 하나 이상의 비-일시적 컴퓨터 판독가능 저장 매체들을 포함한다.
앞서의 개념들과 본 명세서에서 더 상세히 설명되는 추가적인 개념들의 모든 조합들은 본 명세서에서 개시되는 주된 내용의 일부가 되는 것으로서 고려됨을 이해해야 한다. 예를 들어, 본 개시내용의 끝에 나타나 청구되는 주된 내용의 모든 조합들은 본 명세서에서 개시되는 주된 내용의 일부가 되는 것으로서 고려된다.
도 1은 본 명세서에서 개시되는 구현예들이 구현될 수 있는 예시적인 환경의 블록도이다.
도 2는, 다양한 구현예들에 따른, 인간-컴퓨터 대화 동안 적용될 수 있는 예시적인 문법들을 도시한다.
도 3, 도 4, 및 도 5는, 다양한 구현예들에 따른, 예시적인 맥락 데이터 구조들을 도시한다.
도 6은, 본 명세서에서 개시되는 구현예들에 따른, 예시적인 대화 트리를 도시한다.
도 7A, 도 7B, 및 도 7C는, 다양한 구현예들에 따른, 인간-대-컴퓨터 대화 동안 어떻게 대화 트리가 동적으로 성장될 수 있는 지의 예를 도시한다.
도 8은 본 명세서에서 설명되는 다양한 기법들을 실시하는 예시적인 프로세스를 도시한다.
도 9는 컴퓨팅 디바이스의 예시적인 아키텍처를 나타낸다.
도 2는, 다양한 구현예들에 따른, 인간-컴퓨터 대화 동안 적용될 수 있는 예시적인 문법들을 도시한다.
도 3, 도 4, 및 도 5는, 다양한 구현예들에 따른, 예시적인 맥락 데이터 구조들을 도시한다.
도 6은, 본 명세서에서 개시되는 구현예들에 따른, 예시적인 대화 트리를 도시한다.
도 7A, 도 7B, 및 도 7C는, 다양한 구현예들에 따른, 인간-대-컴퓨터 대화 동안 어떻게 대화 트리가 동적으로 성장될 수 있는 지의 예를 도시한다.
도 8은 본 명세서에서 설명되는 다양한 기법들을 실시하는 예시적인 프로세스를 도시한다.
도 9는 컴퓨팅 디바이스의 예시적인 아키텍처를 나타낸다.
이제 도 1을 참조하면, 본 명세서에서 개시되는 기법들이 구현될 수 있는 예시적인 환경이 나타나 있다. 예시적인 환경은 복수의 클라이언트 컴퓨팅 디바이스들(1061-N) 및 자동화된 보조기(120)를 포함한다. 비록 자동화된 보조기(120)가 도 1에서는 클라이언트 컴퓨팅 디바이스들(1061-N)로부터 분리된 것으로서 예시되어 있지만, 일부 구현예들의 경우, 자동화된 보조기(120)의 모든 실시형태들은 클라이언트 컴퓨팅 디바이스들(1061-N) 중 하나 이상의 클라이언트 컴퓨팅 디바이스에 의해 구현될 수 있다. 예를 들어, 클라이언트 디바이스(106i)는 자동화된 보조기(120)의 하나 이상의 실시형태들 중 하나의 인스턴스(instance)를 구현할 수 있고, 그리고 클라이언트 디바이스(106N)는 또한 자동화된 보조기(120)의 그러한 하나 이상의 실시형태들 중 별개의 인스턴스를 구현할 수 있다. 자동화된 보조기(120)의 하나 이상의 실시형태들이 클라이언트 컴퓨팅 디바이스들(1061-N)로부터 멀리 떨어져 있는 하나 이상의 컴퓨팅 디바이스들에 의해 구현되는 구현예들에서, 클라이언트 컴퓨팅 디바이스들(1061-N)과 자동화된 보조기(120)의 이러한 실시형태들은, 로컬 영역 네트워크(Local Area Network)(LAN) 및/또는 와이드 영역 네트워크(Wide Area Network)(WAN)(예컨대, 인터넷)와 같은 하나 이상의 네트워크들을 통해 통신할 수 있다.
클라이언트 디바이스들(1061-N)은 예를 들어, 데스크탑 컴퓨팅 디바이스(desktop computing device), 랩탑 컴퓨팅 디바이스(laptop computing device), 태블릿 컴퓨팅 디바이스(tablet computing device), 모바일 폰 컴퓨팅 디바이스(mobile phone computing device), 사용자의 차량의 컴퓨팅 디바이스(예컨대, 차량-내 통신 시스템(in-vehicle communications system), 차량-내 엔터테인먼트 시스템(in-vehicle entertainment system), 차량-내 네비게이션 시스템(in-vehicle navigation system)), 그리고/또는 컴퓨팅 디바이스를 포함하는 사용자의 착용가능 장치(예컨대, 컴퓨팅 디바이스를 갖는 사용자의 시계, 컴퓨팅 디바이스를 갖는 사용자의 안경, 가상 혹은 증강 현실 컴퓨팅 디바이스) 중 하나 이상을 포함할 수 있다. 추가적인 그리고/또는 대안적인 클라이언트 컴퓨팅 디바이스들이 제공될 수 있다. 일부 구현예들의 경우, 주어진 사용자는 컴퓨팅 디바이스들의 조정된 "생태계(ecosystem)"로부터 수집된 복수의 클라이언트 컴퓨팅 디바이스들을 이용하여, 자동화된 보조기(120)와 통신할 수 있다. 하지만, 간결한 설명을 위해, 본 명세서에서 설명되는 일부 예들은 단일 클라이언트 컴퓨팅 디바이스(106)를 동작시키는 사용자에 초점을 맞출 것이다.
클라이언트 컴퓨팅 디바이스들(1061-N) 각각은 여러 가지 상이한 애플리케이션들을 동작시킬 수 있는데, 예컨대, 메시지 교환 클라이언트(message exchange client)들(1071-N) 중 대응하는 하나의 메시지 교환 클라이언트를 동작시킬 수 있다. 메시지 교환 클라이언트들(1071-N)은 다양한 형태들을 취할 수 있고, 그 형태들은 클라이언트 컴퓨팅 디바이스들(1061-N)에 걸쳐 다양할 수 있고, 그리고/또는 복수의 형태들이 클라이언트 컴퓨팅 디바이스들(1061-N) 중 단일 클라이언트 컴퓨팅 디바이스 상에서 동작될 수 있다. 일부 구현예들에서, 메시지 교환 클라이언트들(1071-N) 중 하나 이상의 메시지 교환 클라이언트는, 단문 메시징 서비스(Short Messaging Service)("SMS") 및/또는 멀티미디어 메시징 서비스(Multimedia Messaging Service)("MMS") 클라이언트의 형태를 취할 수 있고, 온라인 채팅 클라이언트(online chat client)(예컨대, 인스턴트 메신저(instant messenger), 인터넷 릴레이 채팅(Internet Relay Chat), 혹은 "IRC" 등)의 형태를 취할 수 있고, 소셜 네트워크(social network)와 관련된 메시징 애플리케이션(messaging application)의 형태를 취할 수 있고, 자동화된 보조기(120)와의 대화를 위해 전용으로 사용되는 개인 보조기 메시징 서비스(personal assistant messaging service)의 형태, 및 기타 등등의 형태를 취할 수 있다. 일부 구현예들에서, 하나 이상의 메시지 교환 클라이언트들(1071-N)은 웹 브라우저(web browser)(미도시)에 의해 렌더링(rendering)되는 웹페이지(webpage) 혹은 다른 리소스들을 통해 구현될 수 있거나, 또는 클라이언트 컴퓨팅 디바이스(106)의 다른 애플리케이션을 통해 구현될 수 있다.
본 명세서에서 더 상세히 설명되는 바와 같이, 자동화된 보조기(120)는 하나 이상의 클라이언트 디바이스들(1061-N)의 사용자 인터페이스 입력 및 출력 디바이스들을 통해 하나 이상의 사용자들과의 인간-대-컴퓨터 대화 세션(human-to-computer dialog session)들에 관여한다. 일부 구현예들에서, 자동화된 보조기(120)는 클라이언트 디바이스들(1061-N)의 하나의 클라이언트 디바이스의 하나 이상의 사용자 인터페이스 입력 디바이스들을 통해 사용자에 의해 제공된 사용자 인터페이스 입력에 응답하여 사용자와의 대화 세션(dialog session)에 관여할 수 있다. 이러한 구현예들 중 일부 구현예에서, 사용자 인터페이스 입력은, 명시적으로, 자동화된 보조기(120)에 전용으로 사용된다. 예를 들어, 메시지 교환 클라이언트들(1071-N) 중 하나의 메시지 교환 클라이언트는 자동화된 보조기(120)와의 대화에 전용으로 사용되는 개인 보조기 메시징 서비스일 수 있고, 그리고 이러한 개인 보조기 메시징 서비스를 통해 제공되는 사용자 인터페이스 입력은 자동화된 보조기(120)에 자동으로 제공될 수 있다. 또한, 예를 들어, 사용자 인터페이스 입력은 자동화된 보조기(120)가 호출될 것을 표시하는 특정 사용자 인터페이스 입력에 근거하여 메시지 교환 클라이언트들(1071-N) 중 하나 이상의 메시지 교환 클라이언트에서, 명시적으로, 자동화된 보조기(120)에 전용으로 사용될 수 있다. 예를 들어, 특정 사용자 인터페이스 입력은, 하나 이상의 타이핑된 문자들(typed characters)(예컨대, @AutomatedAssistant), 하드웨어 버튼 및/또는 가상 버튼과의 사용자 상호작용(예컨대, 탭(tap), 롱 탭(long tap)), 구두 커맨드(oral command)(예컨대, "Hey Automated Assistant(안녕 자동화된 보조기)"), 그리고/또는 다른 특정 사용자 인터페이스 입력일 수 있다. 일부 구현예들에서, 자동화된 보조기(120)는, 사용자 인터페이스 입력이, 명시적으로, 자동화된 보조기(120)에 전용으로 사용되지 않는 경우에도, 사용자 인터페이스 입력에 응답하여 대화 세션에 관여할 수 있다. 예를 들어, 자동화된 보조기(120)는 사용자 인터페이스 입력의 콘텐츠들을 조사(examine)할 수 있고, 그리고 사용자 인터페이스 입력에 특정 용어들이 존재하는 것에 응답하여 그리고/또는 다른 단서(cue)들에 근거하여 대화 세션에 관여할 수 있다. 다수의 구현예들에서, 자동화된 보조기(120)는 쌍방향 음성 응답("IVR")을 채용할 수 있고, 이에 따라 사용자는 커맨드들, 검색들, 등을 발성할 수 있고, 그리고 자동화된 보조기는 하나 이상의 문법들을 이용하여 이러한 발성(utterance)들을 텍스트(text)로 변환할 수 있고 이에 따라 그 텍스트에 응답할 수 있다.
클라이언트 컴퓨팅 디바이스들(1061-N) 각각과 자동화된 보조기(120)는 데이터 및 소프트웨어 애플리케이션들을 저장하기 위한 하나 이상의 메모리들, 데이터에 액세스하고 애플리케이션들을 실행하기 위한 하나 이상의 프로세서들, 그리고 네트워크를 통한 통신을 용이하게 하는 다른 컴포넌트들을 포함할 수 있다. 클라이언트 컴퓨팅 디바이스들(1061-N) 중 하나 이상의 클라이언트 컴퓨팅 디바이스에 의해 수행되는 동작들 및/또는 자동화된 보조기(120)에 수행되는 동작들은 복수의 컴퓨터 시스템들에 걸쳐 분산될 수 있다. 자동화된 보조기(120)는 예를 들어, 네트워크를 통해 서로 결합되는 하나 이상의 위치들에서의 하나 이상의 컴퓨터들 상에서 실행되는 컴퓨터 프로그램들로서 구현될 수 있다.
자동화된 보조기(120)는 파서 서브시스템(parser subsystem)(130), 응답 서브시스템(response subsystem)(140), 대화 맥락 엔진(dialog context engine)(150), 및 애플리케이션 엔진(application engine)(160)을 포함할 수 있다. 일부 구현예들에서, 자동화된 보조기(120)의 엔진들 및/또는 서브시스템들 중 하나 이상은 생략될 수 있고, 결합될 수 있고, 그리고/또는 자동화된 보조기(120)로부터 분리되어 있는 컴포넌트에서 구현될 수 있다. 자동화된 보조기(120)는, 정보를 획득하기 위해(예를 들어, 질문들에 대한 답변들의 획득, 검색 결과들의 획득, 등을 위해), 태스크들(전화 애플리케이션들, 캘린더 애플리케이션들, 여러 가지 애플리케이션들, 등)을 개시시키기 위해, 대화에 관여하기 위해, 그리고 기타 등등을 하기 위해, 관련된 클라이언트 디바이스들(1061-N)을 통해 하나 이상의 사용자(들)와의 인간-대-컴퓨터 대화 세션들에 관여할 수 있다.
본 명세서에서 사용되는 바와 같은, "대화 세션(dialog session)"은, 인간-대-컴퓨터 대화의 일부로서, 논리적으로 그 자체에 포함된 사용자와 자동화된 보조기(120) 간의 하나 이상의 메시지들의 교환을 포함할 수 있다. 자동화된 보조기(120)는 다양한 신호들에 근거하여 사용자와의 다수의 대화 세션들 간을 구분할 수 있는데, 예컨대, 세션들 간의 시간의 경과, 세션들 간의 사용자 맥락(예컨대, 위치, 스케줄링된 만남 이전/동안/이후, 등)의 변화, 사용자와 자동화된 보조기 간의 대화와는 다른 사용자와 클라이언트 디바이스 간의 하나 이상의 중간개입 상호작용들(예컨대, 사용자가 얼마 동안 애플리케이션들을 전환시키는 것, 사용자가 음성으로-활성화되는 독립형 제품(standalone voice-activated product)으로부터 떨어져 걸어간 후 나중에 다시 해당 제품으로 되돌아 오는 것)의 검출, 세션들 간의 클라이언트 디바이스의 잠금/휴면, 자동화된 보조기(120)의 하나 이상의 인스턴스들과 인터페이싱(interfacing)하기 위해 사용되는 클라이언트 디바이스들의 변화, 등에 근거하여 사용자와의 다수의 대화 세션들 간을 구분할 수 있다.
일부 구현예들에서, 자동화된 보조기(120)가 사용자 피드백(user feedback)을 요청(solicit)하는 프롬프트(prompt)를 제공하는 경우, 자동화된 보조기(120)는 (프롬프트의 제공이 일어나게 되는) 클라이언트 디바이스의 하나 이상의 컴포넌트들을 우선적으로 활성화시킬 수 있으며, 여기서 클라이언트 디바이스의 하나 이상의 컴포넌트들은 프롬프트에 응답하여 수신될 사용자 인터페이스 입력을 프로세싱하도록 구성된다. 예를 들어, 사용자 인터페이스 입력이 클라이언트 디바이스(1061)의 마이크로폰(microphone)을 통해 제공되게 되는 경우, 자동화된 보조기(120)는 하나 이상의 커맨드들을 제공할 수 있는바, 마이크로폰이 우선적으로 "오픈(open)"되도록(그럼으로써 마이크로폰을 오픈시키기 위해 "핫 워드(hot word)"를 말하거나 인터페이스 요소를 히트(hit)할 필요가 없게 됨) 하기 위한 커맨드들, 클라이언트 디바이스(1061)의 로컬 음성 대 텍스트 프로세서(local speech to text processor)가 우선적으로 활성화되도록 하기 위한 커맨드들, 클라이언트 디바이스(1061)와 원격 음성 대 텍스트 프로세서 간의 통신 세션이 우선적으로 확립되도록 하기 위한 커맨드들, 그리고/또는 그래픽 사용자 인터페이스(예를 들어, 피드백을 제공하기 위해 선택될 수 있는 하나 이상의 선택가능한 요소들을 포함하는 인터페이스)가 클라이언트 디바이스(1061) 상에 렌더링되도록 하기 위한 커맨드들을 제공할 수 있다. 이것은 이러한 컴포넌트들이 우선적으로 활성화되지 않았던 경우보다 사용자 인터페이스 입력이 더 빠르게 제공 및 프로세싱될 수 있게 할 수 있다.
자동화된 보조기(120)의 파서 서브시스템(130)은, 클라이언트 디바이스들(1061-N)을 통해 사용자들에 의해 발생된 자연 언어 입력을 프로세싱할 수 있고, 그리고 맥락 필터링(contextual filtering)을 사용하여 선택된 하나 이상의 문법들에 근거하여, 응답 서브시스템(140)과 같은 자동화된 보조기(120)의 하나 이상의 다른 컴포넌트들에 의한 사용을 위해서 ("파스들" 혹은 "해석물들"을 포함할 수 있는) 주석달린 출력(annotated output)을 발생시킬 수 있다. 예를 들어, 파서 서브시스템(130)은 클라이언트 디바이스(1061)의 하나 이상의 사용자 인터페이스 입력 디바이스들을 통해 사용자에 의해 발생된 자연 언어 자유-형태 입력을 프로세싱할 수 있다. 발생된 주석달린 출력은 자연 언어 입력의 하나 이상의 주석들(예컨대, 하나 이상의 토픽들)을 포함하고, 선택에 따라서는 자연 언어 입력의 용어들 중 하나 이상의 용어(예컨대, 모든 용어)를 포함한다.
일부 구현예들에서, 파서 서브시스템(130)은 자연 언어 입력 내에서 다양한 타입의 문법적 정보를 식별하여 주석으로 달도록 구성될 수 있다. 예를 들어, 파서 서브시스템(130)은 용어들에 그들의 문법적 역할들을 주석으로 달도록 구성된 품사 태거(a part of speech tagger)를 포함할 수 있다. 예를 들어, 품사 태거는 각각의 용어에 "명사(noun)", "동사(verb)", "형용사(adjective)", "대명사(pronoun)" 등과 같은 해당 용어의 품사를 덧붙일 수 있다. 또한, 예를 들어, 일부 구현예들에서, 파서 서브시스템(130)은, 추가적으로 그리고/또는 대안적으로, 자연 언어 입력 내의 용어들 간의 구문론적 관계(syntactic relationship)들을 결정하도록 구성된 종속성 파서(dependency parser)를 포함할 수 있다. 예를 들어, 종속성 파서는 어떤 용어들이 다른 용어들을 수식하는지를 결정할 수 있고, 문장들의 주어들 및 동사들을 결정할 수 있고, 그리고 기타 등등(예를 들어, 파스 트리(parse tree))을 결정할 수 있으며, 이러한 종속성들의 주석들을 만들 수 있다.
일부 구현예들에서, 파서 서브시스템(130)은, 추가적으로 그리고/또는 대안적으로, 하나 이상의 분절(segment)들 내에서 엔티티 참조(entity reference)들(예를 들어, 사람들(예컨대, 문학적 인물들을 포함함), 조직들, 위치들(실제 위치 및 가상의 위치), 토픽, 등에 대한 참조들)을 주석으로 달도록 구성된 엔티티 태거(entity tagger)를 포함할 수 있다. 엔티티 태거는 (예를 들어, 사람들과 같은 엔티티 클래스에 대한 모든 참조들의 식별을 가능하게 하기 위해) 높은 세분화 레벨에서 엔티티에 대한 참조들을 주석으로 달 수 있고, 그리고/또는 (예를 들어, 특정 사람과 같은 특정 엔티티에 대한 모든 참조들의 식별을 가능하게 하기 위해) 더 낮은 세분화 레벨에서 엔티티에 대한 참조들을 주석으로 달 수 있다. 엔티티 태거는 특정 엔티티 혹은 토픽을 결정(resolve)하기 위해 자연 언어 입력의 콘텐츠에 의존할 수 있고, 그리고/또는 선택에 따라서는, 특정 엔티티 및/또는 토픽을 결정하기 위해 지식 그래프(knowledge graph) 혹은 다른 엔티티 데이터베이스와 통신할 수 있다. 일부 구현예들에서, 파서 서브시스템(130)은, 추가적으로 그리고/또는 대안적으로, 하나 이상의 맥락 단서(contextual cue)들에 근거하여 동일한 엔티티에 대한 참조들을 그룹(group)화 혹은 "클러스터(cluster)화"하도록 구성된 동일참조 결정기(coreference resolver)를 포함할 수 있다.
일부 구현예들에서, 파서 서브시스템(130)의 하나 이상의 컴포넌트들은 파서 서브시스템(130)의 하나 이상의 다른 컴포넌트들로부터의 주석들에 의존할 수 있다. 예를 들어, 일부 구현예들에서, 명칭이 부여된 엔티티 태거는 특정 엔티티에 모든 언급들을 주석으로 다는 경우 동일참조 결정기 및/또는 종속성 파서로부터의 주석들에 의존할 수 있다. 또한, 예를 들어, 일부 구현예들에서, 동일참조 결정기는 동일한 엔티티에 대한 참조들을 클러스터화하는 경우 종속성 파서로부터의 주석들에 의존할 수 있다. 일부 구현예들에서, 특정 자연 언어 입력을 프로세싱하는 경우, 파서 서브시스템(130)의 하나 이상의 컴포넌트들은 하나 이상의 주석들을 결정하기 위해, 관련된 이전의 입력, 그리고/또는 특정 자연 언어 입력 이외의 다른 관련된 데이터(예를 들어, 대화 맥락 엔진(150)에 의해 유지되는 토픽들)를 사용할 수 있다.
다양한 구현예들에서, 대화 맥락 엔진(150)은 클라이언트 디바이스(106)의 사용자와 자동화된 보조기(120) 간의 현재 인간-대-컴퓨터 대화 세션 동안 제기되었던 하나 이상의 토픽들을 지속시키도록 구성될 수 있다. 일부 구현예들에서, 대화 맥락 엔진(150)은 컴퓨터 메모리 내에 소위 "맥락 데이터 구조"(152)를 유지할 수 있다. 맥락 데이터 구조(152)는 메모리 내에 저장되는 다양한 형태의 데이터 구조들을 취할 수 있고, 그리고 계속 진행 중인 인간-대-컴퓨터 대화 세션과 관련된 혹은 최근에 관련되었던 토픽들을 지속시키기 위해 사용될 수 있다. 토픽이 사용자에 의해 제기되거나 또는 자동화된 보조기(120)에 의해 제기되는 경우, 그 토픽은 예를 들어, 대화 맥락 엔진(150)에 의해, 또는 자동화된 보조기(120)의 또 하나의 다른 컴포넌트에 의해, 맥락 데이터 구조(152)에 추가될 수 있다. 만약 맥락 데이터 구조(154) 내에 이미 지속되고 있는 토픽이 제기되면, 그 토픽은 "터치"될 수 있는바, 예를 들어, 해당 토픽은 다시 한번 더 대화의 선두로 효과적으로 이동될 수 있다. 또 하나의 다른 방식으로 말하면, 맥락 데이터 구조(152) 내에서 지속되는 토픽들은, 특정 인간-대-컴퓨터 대화 세션 동안(또는 일부 구현예들에서, 시간에 있어 상대적으로 근접하여 일어나는 상이한 인간-대-컴퓨터 대화 세션들에 걸쳐) 사용자가 초점을 맞추고 있을 확률이 높은 토픽들을 나타낼 수 있다. 맥락 데이터 구조(152) 내에 이러한 토픽들을 적어도 일시적으로 유지함으로써, 자동화된 보조기(120)는 가장 최근에 논의된 토픽과 연관되지 않은 사용자로부터의 자연 언어 입력을 더 잘 이해할 수 있고, 이에 따라 인간-대-컴퓨터 대화의 주제를 변경하는 사용자에게 더 잘 적응할 수 있다.
이러한 것을 위해, 맥락 데이터 구조(152) 내에서 지속되는 각각의 토픽은 계속 진행 중인 인간-대-컴퓨터 대화 세션에 대한 토픽의 관련성의 정도와 관련될 수 있다. 예를 들어, 일부 구현예들에서, 각각의 토픽과 관련된 관련성의 정도는 토픽이 마지막으로 제기된 후, 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수에 적어도 부분적으로 근거하여 결정될 수 있다. 토픽이 제기된 후에(예를 들어, 추가된 후에 혹은 터치된 후에) 전환이 더 많이 일어날 수록, 해당 토픽에 대한 관련성의 정도는 더 낮아진다. 사용자가 날씨에 대한 질문으로 인간-대-컴퓨터 대화를 시작했고(이것은 토픽 "weather(날씨)"가 추가되도록 함), 하지만 이후 대화는 날씨와 관련없는 광범위한 토픽들을 다루었다고 가정한다. 날씨의 토픽이 제기된 후에 대화에 대한 전환이 더 많아질수록, 토픽 날씨와 관련된 관련성 점수는 더 많이 감소된다. 일부 구현예들에서, 만약 토픽의 관련성 정도가 임계치 아래로 감소한다면, 해당 토픽은 맥락 데이터 구조(152)로부터 완전히 탈락될 수 있다.
관련성의 정도는 또한 다른 인자들에 근거할 수 있다. 예를 들어, 일부 구현예들에서, 맥락 데이터 구조(152) 내의 각각의 토픽과 관련된 관련성의 정도는 토픽과 맥락 데이터 구조(152) 내의 하나 이상의 다른 토픽들 간의 (예컨대, 의미론적) 연관성의 정도에 적어도 부분적으로 근거하여 결정될 수 있다. 만약 어떤 시간 동안 제 1 토픽이 제기되지 않았지만, 의미론적으로-연관된 제 2 토픽이 이후 제기된다면, 제 1 토픽의 관련성 정도는 상승 혹은 증가될 수 있다.
일부 구현예들에서, 맥락 데이터 구조(152)는 복수의 노드들과 복수의 노드들을 연결하는 복수의 에지들을 포함하는 무방향 그래프의 형태를 취할 수 있다. 무방향 그래프의 각각의 노드는 맥락 데이터 구조(152)의 일부로서 저장된 하나 이상의 토픽들 중 주어진 토픽을 나타낼 수 있다. 일부 구현예들에서, 각각의 노드는 또한 주어진 토픽이 마지막으로 제기된 이후, 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수를 저장할 수 있다. 일부 구현예들에서, 두 개의 노드들을 연결하는 각각의 에지는 두 개의 노드들이 각각 나타내는 두 개의 토픽들 간의 연관성(예를 들어, 의미론적 연관성, 등)의 정도를 나타낼 수 있다. 당연한 것으로, 다른 데이터 구조들이 여기서 고려된다.
다양한 구현예들에서, 파서 서브시스템(130)은 문법 엔진(132)을 포함할 수 있다. 문법 엔진(132)은 복수의 문법들을 포함하는 문법 데이터베이스(134)에 액세스할 수 있다. 다양한 구현예들에서, 문법 데이터베이스(134) 내에 저장된 각각의 문법은 토픽 및 해당 토픽에 대한 임계 관련성 점수 모두와 관련될 수 있다. 만약 토픽이 맥락 데이터 구조(152) 내에서 지속되고 있지만 그 관련성 점수가 임계치를 충족시키지 못한다면, 문법은 파서 서브시스템(130)에 의해 선택되지 않을 수 있다. 이것은 언제 문법들이 적용될 것인지 및 언제 적용되지 않을 것인지에 관한 미세-조정을 가능하게 한다.
예를 들어, 다음과 같은 문법 규칙(grammar rule)들이 실제로 존재한다고 가정한다.
(allow_if (slight game))
(rule $restart_game (please restart the game)
(= (event_name restart_game)))
(allow_if (high game_restart_confirmation))
(rule $common_yes ($PT_Yes)
(= (event_name yes)))
이러한 문법 규칙들은 사용자가 게임을 다시 시작하기 위해 다양한 형태의 자연 언어 입력을 사용할 수 있는 상황들을 나타낼 수 있다. 상단 규칙은 단지 토픽 "game(게임)"이 약간 관련될 것만을 요구한다. 예를 들어, 상단 규칙은 토픽 "game(게임)"이 어떤 최소 임계치를 총족시키는(예컨대, >0) 관련성의 정도를 갖는 한 유효하게 유지될 수 있다. 이것은 사용자가 게임을 플레이하고 있는 동안, 게임이 백그라운드(background)에서 활성화되어 있는 동안, 그리고 기타 등등 동안, 임의의 지점에서 유효(true)할 수 있다. 상단 문법 "please restart the game(게임을 다시 시작하세요)"을 충족시키는 자연 언어 입력이 매우 집중된 그리고 명확한 진술이기 때문에 상단 문법은 광범위하게 적용가능하다고 이해된다.
반면, 하단 규칙은 토픽 "game_restart_confirmation(게임_재시작_확인)"이 크게 관련될 것을 요구하는데, 예를 들어, 어떤 상대적으로 엄격한 임계치를 충족시키는 관련성의 정도를 가짐으로써 크게 관련될 것을 요구한다. 토픽 "game_restart_confirmation(게임_재시작_확인)"은 예를 들어, 사용자가 "please restart the game(게임을 다시 시작하세요)", "maybe we should reset the game(아마도 우리는 게임을 재설정해야해요)", "I want to start over(나는 다시 시작하고 싶어요)", 등과 같은 진술을 할 때만 제기될 수 있다. 따라서, 하단 규칙은 사용자로 하여금 사용자가 게임을 다시 시작하는 것에 크게 집중하고 있는 경우에만 다양한 형태의 간단한 긍정적 응답(예를 들어, $PT_Yes는 "yes(예)", "OK(오케이)", "좋아(sure)", 등을 포함할 수 있음)을 제공함으로써 게임을 다시 시작하게 할 수 있다. 사용자는 "are you sure you want to restart the game?(당신은 확실히 게임을 다시 시작하기를 원해요?)"와 같은 자동화된 보조기(120)로부터의 요청에 응답하여 이러한 긍정적 입력을 제공할 수 있다. 만약 사용자가 이러한 토픽이 먼저 제기됨이 없이 "yes(예)"라고 발성한다면, 자동화된 보조기(120)는 "I'm sorry, I didn't get that(미안해, 무슨 말인지 모르겠어)" 혹은 "what are you agreeing to?(당신은 무엇에 동의한다는 거죠?)"와 같은 출력을 제공할 수 있다. 반드시 요구되는 것은 아니지만, 일반적으로 말하면, 집중적인 자연 언어 입력이 특정 문법에 의해 더 많이 기대(expect)되면 될수록, 해당 문법과 관련된 토픽 관련성 요건은 더 커질 것이다.
일부 구현예들에서, 문법 데이터베이스(134) 내에 저장된 문법 규칙들은 다양한 상황들에서 적용가능할 수 있는데, 예를 들어, 다양한 토픽들이 현재 인간-대-컴퓨터 대화와 관련되어 있는 경우, 그러하다. 예를 들어, 긍정적 응답들(예를 들어, "yes(예)", "OK(오케이)", "sure(좋아)", "definitely(틀림없지)", 등)을 해석하기 위한 간단한 문법 규칙이 광범위한 상황들에서 적용가능할 수 있다. 다음의 문법 규칙은 이러한 문법 규칙이 적용가능할 수 있는 몇 가지 예시적 시나리오들을 보여준다.
(allow_if (high pizza_order_confirmation))
(allow_if (high quiz_quit_game_question))
(allow_if (high quiz_add_player_question))
(allow_if (high phone_call_retry_question))
(rule $common_yes ($PT_Yes)
(= (event_name yes)))
이러한 문법 규칙을 이용하면, 토픽들 "pizza_order_confirmation(피자_주문_확인)", "quiz_quit_game_question(퀴즈_종료_게임_질문)", "quiz_add_player_question(퀴즈_추가_플레이어_질문)" 또는 "phone_call_retry_question(전화_호출_재시도_질문)" 중 임의의 토픽이 높은 관련성 정도를 가질 때마다, 사용자는 간단한 긍정적 응답(예를 들어, "yes(예)", "OK(오케이)", "yeah(그래)", "sure(좋아)", 등)을 제공할 수 있다. 이러한 문법은 토픽들이 적용가능하기 위해 크게 집중될 것(즉, 상대적으로 높은 관련성 정도를 가질 것)을 요구한다. 이것은 자동화된 보조기(120)가 간단한 예 혹은 아니오 응답을 추구하는 질문을 한 경우에만 토픽들 각각이 제기되기 때문이다. 이러한 토픽들 중 하나보다 많은 토픽들이 임의의 주어진 시나리오에서 적용가능하기 위해 충분히 높은 관련성 정도를 가질 확률은 낮다. 이러한 토픽들 중 하나보다 많은 토픽들이 맥락 데이터 구조(152)에서 현재 지속되고 있는 경우에도, 가장 최근에-제기된 토픽만이 엄격한 관련성 요건을 충족시킬 확률이 높다.
일부 구현예들에서, 문법 데이터베이스(134)에 저장된 문법 규칙은 다수의 토픽들과 관련될 수 있다. 예를 들어, 다음과 같은 문법 규칙을 갖는다고 하자.
(allow_if (medium person) (medium person))
(rule $were_married (were they ever married)
(= (event_name were_married)))
이러한 규칙은 다수의 상이한 사람들이 적어도 중간 정도의 관련성을 가질 때 적용가능할 수 있다. 따라서, 예컨대, 다음과 같은 인간-대-컴퓨터 대화가 가능할 수 있다.
USER(사용자): Who is the lead vocalist of Iron Maiden?(아이언 메이든의 리드 보컬은 누구지?)
AA: It's Bruce Dickinson(브루스 딕킨슨이지).
USER(사용자): Who performed the Paparazzi song?(파파라치 송은 누가 공연했지?)
AA: It was Lady Gaga(레이디 가가였지).
USER(사용자): Were they ever married?(그들이 결혼했었나?)
AA: No, they were not(아니, 그들은 하지 않았어).
토픽 "person(사람)"의 두 개의 별개의 인스턴스들이 제기되었는데, 하나는 "Bruce Dickinson(브루스 딕킨슨)"에 대한 것이고, 또 하나의 다른 것은 "Lady Gaga(레이디 가가)"에 대한 것이다. 따라서, 사용자가 "Were they ever married?(그들이 결혼했었나?)"라고 질문하는 경우, 자동화된 보조기(120)는 두 명의 사람들이 실제로 결코 결혼하지 않았음을 표시하는 정보를 얻기 위해 앞서의 문법 규칙을 적용할 수 있다.
일부 구현예들에서, 문법 규칙들은 사용자 혹은 자동화된 보조기(120)와는 다른 소스(source)들에 의해 제기될 수 있는 토픽들에 적용가능할 수 있다. 실제로 다음과 같은 문법 규칙이 있다고 가정한다.
(allow_if (point_of_interest))
(rule $who_built (google who built it)
(= (event_name who_built)))
이러한 문법 규칙은 관련성의 정도가 높을 수 있거나 혹은 낮을 수 있는 것에 상관없이 임의의 관심 지점(point of interest)이 맥락 데이터 구조(152) 내에 현재 지속되고 있을 때 적용가능할 수 있다. 그리고 "point_of_interest(관심_지점)" 토픽이 사용자에 의해 추가될 수 있거나 혹은 자동화된 보조기(120)에 의해 추가될 수 있지만, 이것은 또한 사용자가 지니고 있는 컴퓨팅 디바이스 내의 위치 좌표 센서(position coordinate sensor)(예를 들어, 전지구 위치결정 시스템(Global Positioning System), 또는 "GPS")와 같은 컴포넌트에 의해 추가될 수 있다. 사용자가 에펠 탑 앞에 서 있고(이것은 토픽 "point_of_interest(관심_지점)"이 맥락 데이터 구조(152)에 추가되도록 함) "Who built it?(이것을 누가 만들었지?)"라고 묻는다고 가정한다. 자동화된 보조기(120)는 사용자의 자연 언어 입력을 파싱하기 위해 앞서의 문법 규칙을 적용할 수 있고, 그리고 "The Eiffel Tower was built by Gustave Eiffel(에펠 탑은 구스타브 에펠에 의해 만들어졌지)"라는 답변을 반환할 수 있다.
응답 서브시스템(140)은 파서 서브시스템(130)에 의해 선택 및 적용된 문법들로부터 파스들 및 토픽들을 수신할 수 있다. 다양한 구현예들에서, 응답 서브시스템(140)은, 외관상 연관성이 없는 토픽들 사이에서, 계속 진행 중인 인간-대-컴퓨터 대화를 조향하기 위해 대화 트리(144)를 이용하는 대화 엔진(142)을 포함할 수 있다. 본질적으로, 응답 서브시스템은 파서 서브시스템으로부터 하나 이상의 파스들(혹은 해석물들) 및 토픽들을 수신하고, 이러한 파스들 및 토픽들에 근거하여 대화 트리를 따라 대화를 조향한다.
예를 들어, 일부 구현예들에서, 대화 트리(144) 내의 각각의 노드는 자연 언어 프로세스를 나타낸다. 대화 트리(144)의 루트 노드는, (프로세스를 개시시킴으로써 또는 사용자로부터의 명확화를 요구함으로써) 임의의 자연 언어 입력을 핸들링하도록 구성될 수 있고, 그리고 사용자로부터의 자연 언어 입력에 응답하여 개시되는 프로세스들에 대응하는 하나 이상의 차일드 노드들을 개시시키도록 구성될 수 있다. 차일드 프로세스들 자신들은 자신들의 내부 대화의 다양한 양상들을 핸들링하기 위해 추가적인 차일드 프로세스들을 추가할 수 있다. 이것은 코드 유지관리 및 재사용을 간단하게 할 수 있는데, 왜냐하면 각각의 프로세스는 본 명세서에서 설명되는 기법들을 구현하도록 구성된 모듈식 프로세스일 수 있기 때문이다.
응답 서브시스템(140)이 사용자에 대한 응답(예를 들어, 자연 언어 응답, 응답형 액션 혹은 태스크 등)을 발생시킬 때마다, 응답 서브시스템(140)은 임의의 연관된 토픽들을 맥락 데이터 구조(152)에 추가할 수 있다. 일부 구현예들에서, 대화 트리의 각각의 노드는 (예컨대, 노드의 기반이 되는 프로세스의 개발자에 의해 선택될 수 있는) 하나 이상의 토픽들과 관련될 수 있다. 앞에서 언급된 바와 같이, 각각의 문법은 또한 하나 이상의 토픽들과 관련될 수 있다. 결과적으로, 이러한 토픽들을 맥락 데이터 구조에 추가함으로써, 응답 서브시스템은 실제로 임의의 시점에서 파서 서브시스템(130)에 의해 적용가능할 수 있는 다수의 문법들을 추가한다. 따라서, 만약 사용자가 하나의 토픽에 대해 대화를 하고, 대화방향을 바꾸고, 그 다음에 본래의 토픽으로(혹은 의미론적으로 연관된 토픽으로) 되돌아 온다면, 그 본래의 토픽과 관련된 문법들은 여전히 적용가능할 수 있는데, 왜냐하면 이들과 관련된 토픽들이 여전히 맥락 데이터 구조(152) 내에서 지속되고 있기 때문이다. 하지만, 앞에서 언급된 바와 같이, 만약 인간-대-컴퓨터 대화가 충분히 긴 시간 동안 임의의 주어진 토픽으로부터 벗어나 있다면, 일부 구현예들에서, 그 토픽은 맥락 데이터 구조(152)로부터 탈락될 수 있는데, 예를 들어, 파서 서브시스템(130)이 각각의 자연 언어 입력에 과도한 수의 문법들을 적용하는 것(이것은 앞에서 논의된 바와 같이, 값비싼 컴퓨터연산 비용을 요구하게 될 수 있음)을 막기 위해 해당 토픽은 맥락 데이터 구조(152)로부터 탈락될 수 있다.
본 명세서에서 설명되는 기법들을 사용하여 사용자와 간단히 대화하는 것에 추가하여 혹은 그 대신에, 자동화된 보조기(120)는 또한 사용자에 의해 제공된 자연 언어 입력에 근거하여 하나 이상의 태스크들을 개시시킬 수 있다. 이에 따라, 애플리케이션 엔진(160)은 애플리케이션 라이브러리(162)를 유지할 수 있거나, 혹은 그렇지 않으면 애플리케이션 라이브러리(162)에 액세스할 수 있다. 애플리케이션 라이브러리(162) 내의 애플리케이션들은 하나 이상의 클라이언트 디바이스들(106) 상에 인스톨(install)될 수 있고, 자동화된 보조기(120)에 이용가능한 프로세스들(예컨대, 웹 프로세스(web process)들, 클라우드 프로세스(cloud process)들, 등)일 수 있고, 그리고/또는 자동화된 보조기(120) 내에 구축된 프로세스들일 수 있다. 더 일반적으로, 애플리케이션 라이브러리(162) 내의 애플리케이션들은 인간-대-컴퓨터 대화 동안, 자동화된 보조기(120)에 이용가능한 프로세스들일 수 있다.
아래에서 더 상세히 설명되는 바와 같이, 응답 서브시스템(140)은 예를 들어, 인간-대-컴퓨터 대화 세션 동안, 자동화된 보조기(120)에 의해 개시되었던 그리고/또는 액세스되었던 상호작용형 자연 언어 프로세스들에 대응하는 노드들의 그래프를, 대화 트리(144)로서, 유지할 수 있다. 자동화된 보조기(120)가 새로운 프로세스들에 액세스함에 따라, 이러한 프로세스들을 나타내는 노드들은 앞서언급된 루트 노드에 차일드 노드들로서 추가될 수 있다. 일부 구현예들에서, 차일드 노드 프로세스들은 마찬가지로 필요에 따라 추가적인 차일드 노드 프로세스들을 추가할 수 있다.
일부 구현예들에서, 각각의 차일드 노드 프로세스는 본 명세서에서 설명되는 기법들 및 프레임워크(framework)와 호환가능할 수 있다. 예를 들어, 각각의 차일드 노드 프로세스는 하나 이상의 토픽들과 관련될 수 있다. 이러한 토픽들은 각각의 차일드 노드를 동일한 토픽들과 또한 관련된 문법들과 효과적으로 관련시킨다. 만약 가장 최근에-추가된 차일드 노드 프로세스를 충족시키지 않는 자연 언어 입력이 수신된다면(즉, 자연 언어 입력이, 가장 최근에-추가된 차일드 노드 프로세스의 임의의 토픽에 적용가능하지 않는 토픽을 제기한다면), 다른 이전에-추가된 차일드 노드 프로세스들이 그 새롭게 제기된 토픽에 적용가능한(예컨대, 매칭되는) 관련된 토픽들을 가질 수 있다. 이러한 방식으로, 사용자는 자동화된 보조기(120)로 하여금 이전에-제기된 차일드 노드 프로세스와 관련된 상태 머신(state machine)을 역추적(retrace)하도록 반드시 요구함이 없이, 인간-대-컴퓨터 대화 세션의 이전의 토픽으로 끊김 없이 다시 되돌아 갈 수 있다.
도 2는 사용자와 자동화된 보조기(Automated Assistant)(120)(도면에서는 "AA") 간의 인간-대-컴퓨터 대화 세션(272) 동안 하나 이상의 문법들(270)이 어떻게 적용될 수 있는 지에 관한 간단한 예를 도시한다. 이러한 예에서, 문법들 중 최상단 문법(270)은, 만약 "person(사람)"의 토픽이 "높음(high)"인 것으로 고려되는 관련성 정도를 갖는다면(예를 들어, 임계치를 충족시킨다면), 적용가능할 수 있다. 대화는 사용자가 질문의 형태로 자연 언어 입력 "What's this music?(이 음악은 뭐죠?)"을 제공함으로써 시작한다(자동화된 보조기(120)에 의해 플레이되고 있는 음악이 있거나 혹은 주변 소리로서 검출되는 음악이 있다고 가정함). 굵게 활자화되어 표시된 바와 같이, 일부 구현예들에서, 사용자의 자연 언어 입력은 예를 들어, 파서 서브시스템(130) 및/또는 대화 맥락 엔진(150)에 의해 분석되어 토픽 "music(음악)"이 맥락 데이터 구조(152) 내에서 현재 지속되고 있는 토픽들에 추가돼야함을 결정할 수 있다. 이러한 시점에서, 토픽 "music(음악)"과 관련된 관련성 정도는 상대적으로 높을/강할 수 있는데, 왜냐하면 해당 토픽이 방금 추가되었기 때문이다.
자동화된 보조기(120)는 "It's Opus in C Sharp Minor by Chopin(그것은 쇼팽의 C 샵 단조 작품이에요)"라고 진술함으로써 응답한다. 자동화된 보조기(120)는 예컨대, 자동화된 보조기(120) 자신이 해당 음악의 재생을 개시시켰기 때문에 이러한 답변을 결정할 수 있거나, 혹은 하나 이상의 청취가능한 특징들에 근거하여 해당 음악을 식별하기 위해 다양한 사운드-프로세싱 기법들을 이용함으로써 이러한 답변을 결정할 수 있다. 굵게 활자화되어 표시된 바와 같이, 다양한 구현예들에서, "person(사람)", "artist(예술가)", "composer(작곡가)" 및/또는 "Chopin(쇼팽)"과 같은 토픽들이 맥락 데이터 구조(152) 내에 현재 지속되는 토픽들에 추가될 수 있다. 이러한 시점에서, 토픽들 "person(사람)" 및/또는 "Chopin(쇼팽)"과 관련된 관련성 정도는 상대적으로 높을/강할 수 있는데, 왜냐하면 해당 토픽이 방금 추가되었기 때문이다. 일부 구현예들에서, 이전에-추가된 토픽 "music(음악)"과 관련된 관련성 정도는 감소/약화될 수 있는데, 왜냐하면 예를 들어, 토픽 "music(음악)"이 제기되었던 이후 이제 한 번의 전환이 있었기 때문이다. 하지만, 다른 구현예들에서는, 토픽 "Chopin(쇼팽)"(작곡가)이 토픽 "music(음악)"과 밀접한 의미론적 관계를 갖기 때문에, 토픽 "music(음악)"과 관련된 관련성 정도는 감소/약화되지 않을 수 있는데, 왜냐하면 토픽 "music(음악)"이 인간-대-컴퓨터 대화와 명확하게 여전히 관련되어 있기 때문이다.
다음으로, 사용자는 다른 것들 중에서도 질문 "Where was he born?(그는 어디서 태어났죠?)"을 포함하는 자연 언어 입력을 제공한다. 토픽 "person(사람)"이 바로 직전 전환 동안 방금 제기되었기 때문에(이에 따라 맥락 데이터 구조(152)에 추가되었기 때문에), 토픽 "person(사람)"은 여전히 상대적으로 강한 혹은 높은 관련성 정도를 가질 수 있다. 이에 따라, 문법(270)이 예를 들어, 파서 서브시스템(130)에 의해 적용되어 자연 언어 입력 "where was he born?(그는 어디서 태어났죠?)"이 "where_person_born(사람_출생_장소)"로 지칭되는 이벤트(event)를 트리거(trigger)해야함이 결정될 수 있는바, 이러한 "where_person_born(사람_출생_장소)"로 지칭되는 이벤트는 파서 서브시스템(130)으로 하여금 파스 및/또는 해석물을 응답 서브시스템(140)에게 제공하도록 하고, 이러한 파스 및/또는 해석물은 응답 서브시스템(140)으로 하여금 대화 동안 가장 최근에 참조된 사람(쇼팽)의 출생지를 결정하여 응답 "He was born in Zelazowa Wola(그는 젤라조바 볼라에서 태어났어요)"을 반환하도록 한다. 한편, 응답 서브시스템(140)은 또한 "city(도시)" 및/또는 "Zelazowa Wola(젤라조바 볼라)"와 같은 토픽들을 맥락 데이터 구조(152)에 추가할 수 있거나 대화 엔진(150)으로 하여금 추가하도록 할 수 있다. 앞에서와 같이, 이전의 전환들 동안 제기된 토픽들(예컨대, "music(음악)", "person(사람)", "Chopin(쇼팽)")과 관련된 관련성 정도는, 예를 들어, 이들이 새롭게 추가된 토픽들과 의미론적으로 관련되어 있는지 여부에 따라, 감소될 수 있거나 감소되지 않을 수 있다.
다음으로, 사용자는 질문 "Where is that?(그곳은 어디에 있죠?)"라고 묻는 자연 언어 입력을 제공한다. 만약 사용자가 어떠한 이전의 대화 맥락의 혜택 없이 이와 같이 모호한 질문을 함으로써, 자동화된 보조기(120)와 새로운 인간-대-컴퓨터 대화 세션을 개시했다면, 자동화된 보조기(120)는 사용자로부터 추가적인 명확한 정보를 요청함이 없이는 이러한 질문에 대한 응답을 제공할 수 없었을 것임에 유의해야 한다. 하지만, 앞선 전환에서 토픽 "city(도시)"가 맥락 데이터 구조(152)에 방금 추가되었고 이에 따라 상대적으로 높은 관련성 정도를 갖고 있기 때문에, 파서 서브시스템(130)은 문법들(270) 중 두 번째 문법을 사용자의 자연 언어 입력에 제공할 수 있다. 파서 서브시스템(130)은 임의의 새로운 적용가능한 토픽들뿐만 아니라 결과적인 파스 혹은 해석물(예컨대, event_name(이벤트_명칭) = "where_city_located(도시_위치_장소)")을 응답 서브시스템(140)에게 제공할 수 있다. 이러한 파스(및 토픽)에 근거하여, 응답 서브시스템(140)은 (예를 들어, 지식 그래프들, 검색가능한 문서들, 등과 같은 다양한 소스들로부터) 응답형 정보를 획득할 수 있고, 그리고 자연 언어 출력 "Zelazowa Wola is a city in Masovian district in Poland(젤라조바 볼라는 폴란드 마조비아 지역에 있는 도시에요)"를 제공할 수 있다. 앞에서와 유사하게, "district(지역)", "country(나라)" 및/또는 "Poland(폴란드)"와 같은 토픽들이 예를 들어, 응답 서브시스템(140) 및/또는 대화 맥락 엔진(150)에 의해 맥락 데이터 구조(152)에 추가될 수 있다.
그 다음에, 사용자는 질문 "How far from the capitol?(수도에서 얼마나 멀죠?)"을 묻는 자연 언어 입력을 제공한다. 다시, 이전의 맥락이 없다면, 자동화된 보조기(120)는 사용자로부터 명확한 정보를 요청하지 않고는 이러한 질문에 답변할 수 있는 확률이 낮다. 하지만, 이러한 특정 인간-대-컴퓨터 대화 세션에서 여전히 상대적으로 "신선(fresh)"하게 있는(즉, 여전히 상대적으로 높은 관련성 정도를 갖는) 토픽들 "Zelazowa Wola(젤라조바 볼라)" 및 "Poland(폴란드)"를 통해, 자동화된 보조기(120)는 해당 질문에 더 즉각적으로 답변할 수 있다. 예를 들어, 파서 서브시스템(130)은 사용자의 자연 언어 입력에 아래에 있는 세 번째 문법을 적용하여 이벤트 "identify_capitol(수도_식별)"를 트리거할 수 있고, 이러한 이벤트 "identify_capitol(수도_식별)"은 현재 관련 있는 나라 혹은 지역의 수도(본 예에서는 "Warsaw(바르샤바)")를 반환한다. 또한, 일부 구현예들에서, "capitol(수도)"와 같은 토픽들이 맥락 데이터 구조(152)에 추가될 수 있다. 그 다음에, 파서 서브시스템(130)은 사용자의 자연 언어 입력 및 식별된 수도의 조합에 아래에 있는 네 번째 문법을 적용할 수 있다. 결과적인 파스 혹은 해석물(예를 들어, event_name(이벤트_명칭) = "distance_between_cities(도시들_간_거리)")이 응답 서브시스템(140)에게 제공될 수 있다. 이러한 파스에 근거하여, 응답 서브시스템(140)은 응답형 정보를 획득할 수 있고, 그리고 자연 언어 출력 "It's 39 miles away(39마일 떨어져 있어요)"를 제공할 수 있다.
인간-대-컴퓨터 대화(272)의 다음 두 개의 전환들(즉, 갑자기 대화 분야를 바꾸는 것)은 본 명세서에서 설명되는 기법들에 의해 제공되는 하나의 기술적 이점을 특히 강조한다. 사용자는 "Do you know any similar artists?(당신은 유사한 예술가들을 좀 아나요?)"라고 묻는 자연 언어 입력을 제공한다. 앞서 논의된 바와 같이, 토픽 "artist(예술가)"는 인간-대-컴퓨터 대화(272) 동안 상대적으로 초기에 맥락 데이터 구조(152)에 추가되었고, 다수의 대화 전환들에서는 제기되지 않았다. 결과적으로, 토픽 "artist(예술가)"와 관련된 관련성의 정도는 상당히 감소/약화되었을 수 있다. 그렇기는 하지만, 문법들(270) 중 하단 문법은 토픽 "artist(예술가)"가 상대적으로 낮은 관련성 정도와 관련되어 있음에도 불구하고 해당 문법이 그래도 적용가능할 수 있음을 특정한다. 이에 따라, 파서 서브시스템(130)은 해당 문법을 적용하여 응답 서브시스템(140)을 위한 파스를 발생시킬 수 있다. 그 다음에, 이러한 파스에 응답하여, 응답 서브시스템(140)은 이벤트 "find_similar_artists(유사_예술가_찾기)"를 트리거할 수 있고, 이러한 이벤트 "find_similar_artists(유사_예술가_찾기)"는 다른 유사한 예술가들(예를 들어, 예술적으로 유사한 작품을 만드는 예술가들, 인구통계적으로 유사한 예술가들, 유사한 시기에 활동했던 예술가들, 등)에 대한 검색을 개시시킨다. 그 다음에 응답 서브시스템(140)은 자연 언어 출력 "Sure, I recommend Franz Liszt, Ludwig van Beethoven or Franz Schubert(물론이죠, 프란츠 리스트, 루트비히 반 베토벤, 또는 프란츠 슈베르트를 추천해요)"를 제공할 수 있다.
도 3은 맥락 데이터 구조(152)가 어떻게 논리적으로 구현될 수 있는지에 관한 하나의 예를 도시한다. 이러한 예에서, 맥락 데이터 구조(152)는 복수의 노드들 및 이러한 복수의 노드들을 연결하는 복수의 에지들을 갖는 무방향 그래프(364)로서 형성된다. 무방향 그래프(364)의 각각의 노드는 맥락 데이터 구조(152)의 일부로서 지속되는 하나 이상의 토픽들 중 주어진 토픽을 나타낼 수 있다. 일부 구현예들에서, 각각의 노드는 또한 주어진 토픽이 마지막으로 제기된 이후, 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수를 저장할 수 있다.
무방향 그래프(364)는 도 2의 인간-대-컴퓨터 대화(272) 동안 맥락 데이터 구조(152)에 추가되었을 수 있는 토픽들에 대응하는 노드들을 포함한다. 각각의 토픽 앞에 있는 모난 괄호(brackets)는 해당 토픽이 마지막으로 제기된 전환 번호(turn number)를 나타내는데, 이것은 또한 도 2에 표시되어 있다. 따라서, 예를 들어, 토픽들 "music(음악)" 및 "artist(예술가)"는 첫 번째([0]) 전환 동안 제기되었다(이러한 첫 번째([0]) 전환은 사용자의 자연 언어 입력 및 자동화된 보조기(120)로부터의 응답을 모두 포함함, 하지만 반드시 이럴 필요는 없음). 토픽 "city(도시)"는 자동화된 보조기(120)가 "Zelazowa Wola(젤라조바 볼라)"를 언급했을 때인 두 번째([1]) 전환 동안 제기되었다. 토픽들 "country(나라)" 및 "district(지역)"는 자동화된 보조기(120)가 "Poland(폴란드)" 및 "Masovian district(마조비아 지역)"를 각각 언급했을 때인 세 번째([2]) 전환 동안 제기되었다. 토픽들 "district(지역)" 및 "city(도시)"는 사용자가 수도에 대한 거리를 요청했을 때인 네 번째([3]) 전환 동안 제기되었다. 토픽 "artist(예술가)"는 자동화된 보조기(120)가 쇼팽과 유사한 예술가들 중 세 명의 예들을 제공했을 때인 다섯 번째([4]) 전환 동안 제기되었다.
일부 구현예들에서, 특정 토픽의 관련성의 정도는 그 관련된 대화 전환 번호(만약 해당 토픽을 나타내는 복수의 노드들이 존재한다면 가장 최근의 대화 전환 번호)를 현재 전환 번호로부터 감산(subtracting)함으로써 간단히 결정될 수 있다. 결과값이 작으면 작을수록, 현재 해당 토픽은 대화에 더 많이 관련되어 있다. 하지만, 앞에서 언급되었던 바와 같이, 다른 구현예들에서는, 토픽들의 연관성과 같은 다른 인자들이 고려된다. 예를 들어, 일부 구현예들의 경우, 현재 대화 전환에서 제기되고 있는 토픽들(이들이 새롭게 추가된 것인지 혹은 업데이트된 것이지 상관없음)을 나타내는 노드들이 예를 들어, 노드들 A로서 식별될 수 있다. 주어진 토픽의 관련성의 정도는 무방향 그래프(363) 내의 각각의 노드에 대해서 A에 속하는 임의 노드까지의 가장 짧은 거리 di를 계산함으로써 현재 대화 전환 동안 결정될 수 있다. 추가적으로, 현재 대화 전환 번호와 노드의 전환 번호 간의 차이 ai가 또한 계산될 수 있다. 노드의(그리고 이에 따른 토픽의) 관련성의 정도는 di와 ai 중 최소값으로 설정될 수 있다.
도 4는 도 3에 도시되었던 것과 유사한 무방향 그래프(464)를 도시한다. 이러한 예에 대해 가정된 것은, 도 2에 도시된 인간-대-컴퓨터 대화(272)가 현재 여섯 번째([5]) 대화 전환에 진입하고 있다는 것, 그리고 음영화된 노드("artist(예술가)")가 현재 대화 전환([5]) 동안 제기된다는 것이다. 무방향 그래프(464)의 각각의 노드는, 모난 괄호의 좌측편 상에, 현재 대화 전환 번호([5])와 해당 토픽이 제기되었던 마지막 대화 전환 간의 차이 di를 포함한다. 무방향 그래프(464)의 각각의 노드는 또한, 모난 괄호의 우측편 상에, 해당 노드와 새롭게 추가된 노드 A 간의 가장 짧은 경로 ai를 포함한다. 도 5는 di와 ai 중 최소값에 근거하여 각각의 노드/토픽에 대해 결정된 관련성 정도를 도시한다. 이러한 방식으로 관련성 정도를 결정함으로써, 특정 토픽이 최근에 언급되지는 않았지만 밀접하게 연관된 토픽들이 여전히 최근에 언급되었던 그러한 시나리오가 고려될 수 있다. 이러한 시나리오에서, 특정 토픽은 인간-대-컴퓨터 대화와 적어도 간접적으로 여전히 관련될 수 있고, 따라서 이것은 그 특정 토픽과 관련된 관련성 정도가 얼마만큼 감소될 것인지를 조율(temper)함에 있어 의미를 가질 수 있다.
앞에서 논의된 바와 같이, 응답 서브시스템(140)은, 예를 들어, 대화 엔진(142)을 통해, 자동화된 보조기(120)가 사용자와의 인간-대-컴퓨터 대화에 어떻게 참여할 것인지 제어할 수 있다. 일부 구현예들에서, 사용자의 자연 언어 입력들의 파스들(혹은 해석물들)은 대화 엔진(142)에 의해 구현되는, 예를 들어, 대화 트리(144)를 사용하는 방식에 의해 구현되는, 계층적 결정 수행 프로세스(hierarchal decision making process)에 제공될 수 있다. 계층적 결정 수행 프로세스는, 일부 경우들에서, 더 큰 프로세스들이 일부 더 작은 프로세스들을 지배(govern)하는 프로세스들의 계층(예를 들어, 대화 트리(144)의 루트 및 차일드 프로세스 노드들)을 포함할 수 있다.
도 6은 인간-대-컴퓨터 대화(670) 동안 사용될 수 있는 대화 트리(644)의 간단한 예를 도시적으로 나타낸다. 이러한 예는 맥락이 더 많이 이용가능할수록(즉, 맥락 데이터 구조(152) 내에서 지속되는 토픽들이 더 많을수록) 사용자가 어떤 목표를 달성하기 위해(예를 들어, 자동화된 보조기(120)로부터 응답형 답변을 획득하기 위해, 자동화된 보조기로 하여금 태스크를 개시시키도록 하기 위해, 및 기타 등등을 위해) 더 적게 말할 필요가 있음이 어떻게 구현되는지를 보여준다. 이러한 예에 대해, 다음과 같은 문법 규칙들이 GAME A(게임 A)(이것은 트리비아 게임일 수 있음)에 대해 정의되어 있다고 가정한다.
(allow_always)
(rule $play_game (I want to play Game A for three players)
(= (event_name play_game_A) (players 3))
(allow_if (medium game_A))
(rule $player_choice (I want three players)
(= (event_name player_choice) (number 3))
(allow_if (high player_question))
(rule $number ($PT_Number)
(= (event_name number) (value 3))
이러한 문법 규칙들로부터 명백한 것은, 사용자는 언제나 특정적으로 처음에 자신은 세 명의 플레이어들과 GAME A(게임 A)를 플레이하기를 원한다고 진술할 수 있다는 것이다. 이러한 진술은 게임 플레이를 시작하기 위해 GAME A(게임 A)에 의해 요구되는 모든 파라미터들을 포함한다. 만약 토픽 "game_A(게임_A)"가 적어도 중간 정도의 관련성을 갖는다면(예를 들어, 플레이어가 "I want to play Game A(나는 게임 A를 플레이하고 싶어)"라고 말했지만, 추가적인 정보는 제공하지 않았다면), 플레이어는 게임 플레이를 시작하기 위해 "I want <non-zero integer> players(나는 <0이 아닌 정수>명의 플레이어들을 원해요)"라고 말할 수 있다. 그리고 만약 자동화된 보조기(120)가 방금 "How many players?(몇 명의 플레이어들?)"라고 말했다면, 토픽 "player_question(플레이어_질문)"은 사용자가 간단히 수치적 응답을 제공할 수 있을 만큼 충분히 높은 관련성 정도를 가질 수 있다.
인간-대-컴퓨터 대화(672)에서, 사용자는 "I want to play Game A(나는 게임 A를 플레이하고 싶어)"라고 진술함으로써 시작한다. 토픽 "game_A(게임_A)"(및 잠재적으로는 "games(게임)"과 같은 다른 토픽들)이 맥락 데이터 구조(152)에 추가될 수 있고, 그리고 GAME A(게임 A)는 루트 노드에 추가된다. GAME A(게임 A) 차일드 노드는 GAME A(게임 A)와 관련된 차일드 노드 프로세스를 나타낼 수 있다. 이러한 차일드 노드 프로세스(또는 특정 애플리케이션에 대한 대화를 나타내는 복수의 차일드 노드 프로세스들)를 발전(developing)시킬 때, 개발자는 앞에서 설명된 문법 규칙들과 같은 그러한 문법 규칙들을 정의할 수 있다(그리고 일부 구현예들에서는 문법 데이터베이스(134) 내에 저장할 수 있음). 이러한 예에서, GAME A(게임 A)는 다음과 같은 세 개의 차일드 노드 프로세스들을 포함하는데, GAME MODE(게임 모드)(이것은 단일 모드가 구현되는지 아니면 멀티플레이어 모드가 구현되는지를 제어함); PLAYERS(플레이어들)(이것은 만약 멀티플레이어 모드가 구현된다면 플레이어들은 몇 명인지를 제어함); 그리고 MULTIPLAYER LOOP(멀티플레이어 루프)(이것은 멀티플레이어 게임플레이를 제어함)를 포함한다.
GAME MODE(게임 모드) 차일드 프로세스에 따르면, 자동화된 보조기(120)는 "OK, single player or multiplayer?(오케이, 단일 플레이어 혹은 멀티플레이어?)라고 대답한다. 플레이어는 "multiplayer(멀티플레이어)"라고 응답한다. 일부 구현예들에서, 노드 GAME MODE(게임 모드)와 관련된 차일드 프로세스는 사용자의 입력을 (예를 들어, GAME MODE(게임 모드) 노드와 관련하여 제공된 문법 규칙을 사용하여) 해석할 수 있고, 그리고 GAME A(게임 A) 노드가 나타내는 프로세스에 파스/해석물을 제공할 수 있다. 다음으로, PLAYERS(플레이어들) 노드와 관련된 차일드 프로세스와 관련하여, 자동화된 보조기(120)는 "how many players?(몇 명의 플레이어들?)"라고 물을 수 있다. 플레이어는 "three(세 명)"라고 응답한다. 일부 구현예들에서, 노드 PLAYERS(플레이어들)와 관련된 차일드 프로세스는 사용자의 입력을 (예를 들어, PLAYERS(플레이어들) 노드와 관련하여 제공된 문법 규칙을 사용하여) 해석할 수 있고, 그리고 GAME A(게임 A) 노드가 나타내는 프로세스에 파스/해석물을 제공할 수 있다. GAME A(게임 A)와 관련된 프로세스가 게임 모드(멀티플레이어) 및 플레이어들의 수(세 명)를 알게 되면, 제어권을 MULTIPLAYER LOOP(멀티플레이어 루프) 노드로 건네줄 수 있고, 이 경우 MULTIPLAYER LOOP(멀티플레이어 루프) 노드는 게임플레이 동안 대화를 제어한다.
일부 구현예들에서, 대화 트리의 각각의 차일드 노드 프로세스는 세 개의 기능들을 수행하도록 설계될 수 있는바, 특정 사용자 해석들(즉, 파스들)을 핸들링하는 기능; 가장 가까운 페어런트 노드(closest parent node)와 통신하는 기능; 그리고 가장 가까운 차일드 노드와 통신하는 기능을 수행하도록 설계될 수 있다. 차일드 노드 프로세스는 특정 사용자 해석들을 핸들링하는 기능을 수행할 수 있는데, 예를 들어, 현재 맥락에서 적용가능한 (예컨대, 맥락 데이터 구조 내에 저장된) 하나 이상의 토픽들과 관련됨으로써, 특정 사용자 해석들을 핸들링하는 기능을 수행할 수 있다. 도 6에서, GAME A(게임 A)와 관련된 노드는 게임을 플레이하는데 필요한 파라미터들을 수신하되, 사용자와 같은 복수의 소스들로부터(예를 들어, GAME A(게임 A) 노드와 관련된 문법에 의해 해석되는 자연 언어 입력을 사용자가 제공함으로써) 직접 수신할 수 있고 그리고/또는 하나 이상의 차일드 노드들로부터 수신할 수 있다(예를 들어, GAME MODE(게임 모드) 노드로부터 게임플레이의 모드를 수신할 수 있고, PLAYERS(플레이어들) 노드로부터 플레이어들의 수를 수신할 수 있음).
도 7A 내지 도 7C는 다음과 같은 인간-대-컴퓨터 대화 동안 대화 트리(744)가 어떻게 동적으로 발생될 수 있는지를 보여준다.
USER(사용자): I want to play GAME A(나는 게임 A를 플레이하고 싶어)
AA: OK, how many players?(오케이, 몇 명의 플레이어들?)
USER(사용자): First, tell me the time(먼저, 나에게 시간을 말해봐)
AA: It's 7:15 PM(오후 7시 15분이야)
USER(사용자): When does Game of Roses air today?(오늘 게임 오브 로즈는 언제 방송하지?)
AA: In 45 minutes, at 8 pm(45분 후, 오후 8시에).
USER(사용자): OK. I want three players(오케이, 나는 세 명의 플레이어들을 원해)
AA: Sure, let's play. First question...(좋아, 플레이하자. 첫 번째 질문...)
앞에서 설명된 바와 같이, 사용자의 첫 번째 진술("I want to play GAME A(나는 게임 A를 플레이하고 싶어)")은 루트 노드에 의해 해석되는데, 왜냐하면 맥락 데이터 구조 내에 아직 어떠한 토픽도 있지 않기 때문이다. 도 7A에 도시된 바와 같이, 사용자의 요청은 차일드 노드 프로세스 GAME A(게임 A)가 개시되도록 할 수 있으며, 뿐만 아니라 일부 경우들에서는 MULTIPLAYER LOOP(멀티플레이어 루프) 노드도 개시되도록 할 수 있다. 일부 구현예들에서, 자동화된 보조기의 응답("OK, how many players?(오케이, 몇 명의 플레이어들?)")은 노드 GAME A(게임 A) 아래에 PLAYERS(플레이어들)와 같은 하나 이상의 추가적인 차일드 노드 프로세스들이 추가되도록 할 수 있다.
도 7B는 사용자가 "First, tell me the time(먼저, 나에게 시간을 말해봐)"라고 말함으로써 갑자기 주제를 변경한 이후의 대화 트리(744)를 도시한다. 사용자가 이러한 진술을 제공할 때는, 토픽 "time(시간)"이 맥락 데이터 구조(152)에 추가되지 않았다. 이에 따라, 임의의 활성 차일드 프로세스 노드들과 관련된 어떠한 토픽들도 새롭게 제기된 토픽에 적용가능하지 않을 때(예컨대, 매칭되지 않을 때) 자연 언어 입력들을 핸들링하는 루트 노드로 제어권이 다시 건네진다. 루트 노드는 사용자의 요청을 해석할 수 있고, 그리고 (현재 시간을 반환하도록 구성될 수 있는) TIME(시간)으로 지칭되는 또 하나의 다른 차일드 프로세스 노드를 개시시킬 수 있다.
도 7C는 사용자가 갑자기 주제를 다시 변경한 이후의 대화 트리(744)를 도시한다. 이번에, 사용자는 "When does Game of Roses air today?(오늘 게임 오브 로즈는 언제 방송하지?)"라고 묻는다. "television(텔레비젼)", "series(시리즈)" 등과 같은 잠재적으로 적용가능한 토픽들이 맥락 데이터 구조(152) 내에서 지속되고 있지 않다. 이에 따라, 제어권은 다시 한번 더 루트로 건네지고, 루트는 사용자의 자연 언어 입력을 해석하여 "In 45 minutes, at 8 pm(45분 후, 오후 8시에)"라고 응답한다. 그 다음에, 사용자는 "OK. I want three players(오케이, 나는 세 명의 플레이어들을 원해)"라고 말하며 주제를 다시 GAME A(게임 A)로 조향한다. 토픽 "GAME A(게임 A)"가 맥락 데이터 구조(152) 내에 여전히 지속되고 있기 때문에, 토픽 "GAME A(게임 A)"과 관련된 문법이 GAME A(게임 A) 차일드 노드 프로세스에 의해 적용가능할 수 있다.
앞서의 설명 및 예들로부터, 일부 구현예들에서 대화 트리들 내의 차일드 노드 프로세스들은 토픽들과 관련된다는 것이 명백해져야 한다. 맥락 데이터 구조(152) 내의 토픽들의 존재는 시간 경과에 따라 변하는 계속 진행 중인 인간-대-컴퓨터 대화의 맥락에 의존한다. 이에 따라, 대화 트리들 내의 차일드 노드 프로세스들의 존재는 계속 진행 중인 인간-대-컴퓨터 대화의 맥락에 의존할 수 있다. 따라서, 계속 진행 중인 인간-대-컴퓨터 대화의 맥락이 변함에 따라 대화 트리는 시간 경과에 의해 동적으로 변한다.
일부 구현예들에서, 차일드 노드 프로세스들은 다양한 프로그래밍 언어들(예를 들어, C++, 자바(Java), 등)에서 클래스(class)들로서 구현될 수 있다. 각각의 차일드 노드 프로세스는, 자신의 페어런트(parent) 및 (만약 있다면) 칠드런(children)과 정보를 교환하도록 구성될 수 있고; 사용자가 제공한 자연 언어 입력의 파스들/해석물들에 반응하도록 구성될 수 있고; 어떤 상태를 지속시키도록 구성될 수 있고; 그리고 일부 경우들에서는, 날씨, 스포츠 점수들, 뉴스, 텔레비젼 스케쥴들, 일반적인 정보(예컨대, 지식 그래프 내의 엔티티들과 관련된 정보)와 같은 여러 정보를 반환할 수 있는 원격 프로시저 호출(remote procedure call)들과 같은 그러한 원격 프로세스들과 통신할 수 있도록 구성될 수 있고; 그리고 기타 등등을 하도록 구성될 수 있다.
일부 구현예들에서, 차일드 노드 프로세스들은 정적으로 정의된 인터페이스들의 메소드(method)들을 포함할 수 있다. 단방향 통신(simplex communication)에서, 응답은 기대되지 않는다. 아래의 샘플 코드에 의해 보여지는 바와 같이, 피호출자(callee)만이 인터페이스를 노출한다.
void SomeChildClass::set_difficulty( int level).
반면, 양방향 통신(duplex communication)에서, 수신측은 호출자(caller)에게 결과를 반환할 수 있어야만 한다. 이에 따라, 양측은 인터페이스를 노출할 수 있다.
void SomeChildClass::ask_for_game_settings();
void ParentClass::game_settings_callback( const GameSettings& settings).
만약 (예컨대, C++로 된) 템플릿 프로그래밍이 사용된다면, 페어런트 프로세스들이 예를 들어, 양방향 통신을 가능하게 하기 위해, 그들의 칠드런에 의해 요구되는 인터페이스들을 구현하도록 보장하는 것이 가능할 수 있다. 결과적으로, 호출자와 피호출자 간의 통신 프로토콜에서 불일치(inconsistencies)에 의해 야기되는 버그(bug)들은 컴파일 시간(compile time)에 검출될 수 있다.
이와 같이 명확하게 정의된 통신 인터페이스들은 코드의 재사용을 용이하게 할 수 있다. 예를 들어, 프로세스 A가 프로세스 B에 의해 제공된 로직(logic)을 사용하려고 한다고 가정한다. 만약 프로세스 B가 자신의 페어런트 프로세스로 임의의 데이터를 다시 반환하지 않는다면, 프로세스 A는 프로세스 B를 차일드로서 단순히 추가할 수 있다. 반면, 만약 프로세스 B가 자신의 페어런트 프로세스에게 데이터를 예를 들어, 인터페이스 IB를 통해 반환하도록 구성된다면, 프로세스 A는 인터페이스 IB를 구현하도록 구성될 수 있고, 그 다음에, 프로세스 B를 차일드로서 추가할 수 있다.
일부 구현예들에서, 프로세스를 구현하는 각각의 클래스는 사용자로부터 수신된 자연 언어 입력의 파스/해석물을 핸들링할 책임이 있는 메소드를 구현할 수 있다. 클래스 인스턴스(class instance)의 상태는 그 클래스 인스턴스와 관련된 토픽 객체(topic object) 내에 유지될 수 있다. 각각의 클래스는 외부 세계에 대한 다양한 호출들(예를 들어, 원격 프로시저 호출들)을 하기 위한 인터페이스를 제공하는 상속된 멤버(inherited member)에 액세스할 수 있다.
도 8은 본 명세서에서 개시되는 구현예들에 따른 예시적인 방법(800)을 나타내는 흐름도이다. 편의상, 흐름도의 동작들은 해당 동작들을 수행하는 시스템을 참조하여 설명된다. 이러한 시스템은 다양한 컴퓨터 시스템들의 다양한 컴포넌트들을 포함할 수 있는데, 예컨대, 자동화된 보조기(120)의 하나 이상의 컴포넌트들을 포함할 수 있다. 더욱이, 방법(800)의 동작들이 특정 순서로 보여지고 있지만, 이것은 한정의 의미를 갖도록 의도된 것이 아니다. 하나 이상의 동작들이 재정리, 생략, 혹은 추가될 수 있다.
블록(802)에서, 시스템은 사용자로부터 자연 언어 입력을 수신할 수 있다. 자연 언어 입력은 다양한 타입의 입력 디바이스들을 통해 다양한 형태로 수신될 수 있다. 예를 들어, 일부 구현예들에서, 입력 디바이스는 마이크로폰일 수 있고, 그리고 자연 언어 입력은 사용자에 의해 제공되는 청취가능한 발성일 수 있다. 일부 이러한 구현예들에서, 토큰(token)들 및 다른 정보가 오디오 신호로부터 추출될 수 있고, 그리고 발성된 입력에 대응하는 텍스트를 발생시키기 위해 사용될 수 있다. 다른 구현예들에서, 자연 언어 입력은 예컨대, 메시지 교환 클라이언트(107)를 사용하여 메시지 교환 쓰레드(message exchange thread)에서 사용자에 의해 제공되는 타이핑된 혹은 발성된 입력으로서 수신될 수 있다.
블록(804)에서, 시스템은 자연 언어 입력을 파싱하기 위해 하나 이상의 문법들을 선택할 수 있다. 이러한 선택은 맥락 데이터 구조의 일부로서 지속되는 하나 이상의 토픽들에 근거할 수 있고, 그리고/또는 이러한 토픽들과 관련된 관련성 정도에 근거할 수 있다. 대화 트리들이 응답 서브시스템(140)에 의해 이용되는 구현예들에서, 만약 어떠한 토픽들도 맥락 데이터 구조(152) 내에 아직 지속되고 있지 않다면, 또는 만약 임의의 차일드 프로세스 노드들과 현재 관련된 어떠한 토픽들도 가장 최근에 제기된 토픽에 적용가능하지 않다면(예컨대, 매칭되지 않는다면), 제어권은 루트 노드에 건네질 수 있다. 이 경우, 루트 노드는 자연 언어 입력을 파싱할 수 있고 이에 따라 반응할 수 있다(예를 들어, 정보를 획득하는 것, 자연 언어 응답을 제공하는 것, 하나 이상의 애플리케이션들/프로세스들을 개시시키는 것, 등을 할 수 있음). 만약 루트 노드에서, 사용자의 자연 언어 입력이 이해되지 않는다면, 자동화된 보조기(120)는 명확화를 위해 사용자에 질문할 수 있다.
블록(806)에서, 시스템은 블록(804)에서 선택된 문법들에 근거하여 블록(802)에서 수신된 자연 언어 입력을 파싱할 수 있다. 일부 구현예들에서, 복수의 문법들이 적용가능할 수 있고, 이에 따라 해당 자연 언어 입력의 파스들/해석물들을 발생시킬 수 있는 것이 가능하다. 시스템은 다양한 방식들로 이러한 복수의(잠재적으로 상충되는) 해석들로부터 선택할 수 있다. 일부 구현예들에서, 시스템은 그 관련된 토픽이 가장 집중된 것일 것(예를 들어, 가장 높은 관련성 정도와 관련된 것일 것)을 요구하는 문법에 의해 발생된 파스를 선택할 수 있다. 예컨대, 제 1 문법이 토픽 "game(게임)"과 관련되어 있지만 토픽 "game(게임)"이 중간 정도의 관련성 혹은 아주 작은 약간의 관련성 정도만을 가질 것을 요구한다고 가정한다. 더불어, 또한 토픽 "game(게임)"과 관련되어 있는 제 2 문법이 상대적으로 높은 관련성 정도를 요구한다고 가정한다. 만약 토픽 "game(게임)"이 (예를 들어, 해당 토픽이 바로 방금 제기되었기 때문에, 혹은 다른 최근에 제기된 토픽들과 의미론적으로 연관되어 있기 때문에) 현재 높은 관련성 정도와 관련되어 있다면, 양쪽 문법들이 모두 적용가능할 수 있다. 하지만, 시스템은 제 2 문법의 집중 임계치(focus threshold)가 더 높기 때문에 제 2 문법에 의해 발생되는 파스를 선택할 수 있다. 다른 구현예들에서, 시스템은 각각의 파스가 사용자의 진정한 의도(true intention)일 확률들과 같은 다른 신호들에 근거하여 복수의 파스들/해석물들로부터 선택할 수 있다. 예를 들어, 일부 구현예들에서는, 복수의 파스들 각각이 사용자의 진정한 의도와 매칭될 확률을 계산하기 위해 로그(log)들, 관련성 정도, 또는 다른 유사한 데이터 포인트들이 사용될 수 있다. 복수의 파스들이 정확함에 있어 유사한 확률들을 갖는 것으로 보이는 경우들에서, 시스템은 사용자로부터 추가적인 명료화 및/또는 명확화를 추구할 수 있다.
일부 구현예들의 경우, 블록(808)에서, 시스템은 블록(806)에서 발생된 하나 이상의 파스(들)에 근거하여 자연 언어 응답을 발생시킬 수 있다. 일부 이러한 구현예들에서, 자연 언어 응답은 시스템에 동반되어 앞서 설명된 트리비아 게임과 같은 어떤 프로세스를 또한 개시시킬 수 있다. 그리고 앞에서 예들로서 제공된 트리비아 게임이, 자동화된 보조기와 통합되는 것으로 언급되었지만(즉, 트리비아 게임이 계속 진행 중인 인간-대-컴퓨터 대화에 끊김 없이 통합되는 IVR 앱들로서 설명되었지만), 이것은 한정의 의미를 갖도록 의도된 것이 아니다. 다양한 구현예들에서, 시스템은 발성된 혹은 타이핑된 자연 언어 입력을 사용하여 반드시 제어되는 것이 아닌 애플리케이션(예컨대, 전화 앱, 캘린더 앱, 소셜 네트워킹 앱, 그래픽 비디오 게임, 피트니스 앱(fitness app), 등)을 오픈시키는 것과 같이 IVR이 관여되지 않은 태스크를 개시시킬 수 있다. 블록(810)에서, 시스템은 블록(808)에서 발생된 자연 언어 응답을 출력할 수 있다. 예를 들어, 자동화된 보조기는 사용자의 질문에 답할 수 있고; 프로세스를 위한 또 하나의 다른 파라미터를 추구할 수 있고; 사용자와의 대화에 관여할 수 있고; 자동화된 보조기가 또 하나의 다른 애플리케이션을 개시시키고 있음을 표시하는 출력을 제공할 수 있고; 그리고 기타 등등을 할 수 있다.
블록(812)에서, 시스템은 블록(806)에서 발생된 파스(들) 및/또는 블록(808)에서 발생된 자연 언어 응답에 의해 제기된 토픽들을 식별할 수 있다. 블록(814)에서, 시스템은 식별된 토픽들에 근거하여 맥락 구조를 업데이트할 수 있다. 만약 토픽들이 아직 맥락 데이터 구조에 추가되지 않았다면, 토픽들은 추가될 수 있다. 만약 토픽들이 맥락 데이터 구조의 일부로서 이미 지속되고 있다면, 토픽들은 예를 들어, 해당 토픽들과 관련된 관련성 정도를 증가시킴으로써 "터치"될 수 있다. 추가적으로, 일부 구현예들에서, 새롭게 제기된 토픽들과 의미론적으로 연관된 맥락 데이터 구조(152) 내의 다른 토픽들이 또한, 예를 들어, 추가된 토픽들과 동일한 정도로 "터치"될 수 있거나, 또는 일부 경우들에서는, 더 작은 정도로 "터치"될 수 있다.
도 9는 본 명세서에서 설명되는 기법들의 하나 이상의 실시형태들을 수행하기 위해 선택에 따라 이용될 수 있는 예시적인 컴퓨팅 디바이스(910)의 블록도이다. 일부 구현예들에서, 클라이언트 컴퓨팅 디바이스, 자동화된 보조기(120), 및/또는 다른 컴포넌트(들) 중 하나 이상은 예시적인 컴퓨팅 디바이스(910)의 하나 이상의 컴포넌트들을 포함할 수 있다.
컴퓨팅 디바이스(910)는 전형적으로 버스 서브시스템(912)을 통해 다수의 주변 디바이스들과 통신하는 적어도 하나의 프로세서(914)를 포함한다. 이러한 주변 디바이스들은, 예를 들어, 메모리 서브시스템(925) 및 파일 저장 서브시스템(926)을 포함하는 저장 서브시스템(924), 사용자 인터페이스 출력 디바이스들(920), 사용자 인터페이스 입력 디바이스들(922), 그리고 네트워크 인터페이스 서브시스템(916)을 포함할 수 있다. 입력 및 출력 디바이스들은 컴퓨팅 디바이스(910)와의 사용자 상호작용을 가능하게 한다. 네트워크 인터페이스 서브시스템(916)은 외부 네트워크들에 대한 인터페이스를 제공하고, 다른 컴퓨팅 디바이스들 내의 대응하는 인터페이스 디바이스들에 결합된다.
사용자 인터페이스 디바이스들(922)은, 키보드, 포인팅 디바이스들(예컨대, 마우스, 트랙볼, 터치패드, 또는 그래픽 태블릿), 스캐너, 디스플레이에 통합된 터치스크린, 오디오 입력 디바이스들(예컨대, 음성 인식 시스템들), 마이크로폰들, 및/또는 다른 타입의 입력 디바이스들을 포함할 수 있다. 일반적으로, 용어 "입력 디바이스"의 사용은 컴퓨팅 디바이스(910)에 정보를 입력하거나 통신 네트워크 상에 정보를 입력하기 위한 모든 가능한 타입의 디바이스들 및 방식들을 포함하도록 의도된 것이다.
사용자 인터페이스 출력 디바이스들(920)은 디스플레이 서브시스템, 프린터, 팩스 머신, 또는 비-시각적 디스플레이들(예컨대, 오디오 출력 디바이스들)을 포함할 수 있다. 디스플레이 서브시스템은 음극선관(Cathode Ray Tube, CRT), 평판 디바이스(flat-panel device)(예컨대, 액정 디스플레이(Liquid Crystal Display, LCD)), 프로젝션 디바이스(projection device), 또는 시각적 이미지를 생성하기 위한 어떤 다른 메커니즘을 포함할 수 있다. 디스플레이 서브시스템은 또한 예를 들어, 오디오 출력 디바이스들을 통해 비-시각적 디스플레이를 제공할 수 있다. 일반적으로, 용어 "출력 디바이스"의 사용은 컴퓨팅 디바이스(910)로부터의 정보를 사용자에게 출력하거나 또는 또 하나의 다른 머신 혹은 컴퓨팅 디바이스에 출력하기 위한 모든 가능한 타입의 디바이스들 및 방식들을 포함하도록 의도된 것이다.
저장 서브시스템(924)은 본 명세서에서 설명되는 모듈들 중 일부 모듈 혹은 모든 모듈의 기능을 제공하는 프로그래밍 및 데이터 구조들을 저장한다. 예를 들어, 저장 서브시스템(924)은 도 8의 방법의 선택된 실시형태들을 수행하기 위한 로직, 뿐만 아니라 도 1에 도시된 다양한 컴포넌트들을 구현하기 위한 로직을 포함할 수 있다.
이러한 소프트웨어 모듈들은 일반적으로 프로세서(914)에 의해서만 실행되거나 또는 다른 프로세서들과 결합되어 실행된다. 저장 서브시스템(924) 내에서 사용되는 메모리(925)는 다수의 메모리들을 포함할 수 있는데, 이러한 다수의 메모리들은 프로그램 실행 동안 명령들 및 데이터를 저장하기 위한 메인 랜덤 액세스 메모리(Random Access Memory, RAM)(930)를 포함하고, 아울러 고정된 명령들이 저장되는 판독 전용 메모리(Read Only Memory, ROM)(932)를 포함한다. 파일 저장 서브시스템(926)은 프로그램 및 데이터 파일들에 대한 지속적인 저장을 제공할 수 있고, 그리고 하드 디스크 드라이브를 포함할 수 있고, 플로피 디스크 드라이브를 관련된 탈착가능 미디어와 함께 포함할 수 있고, CD-ROM 드라이브, 광학 드라이브, 또는 탈착가능 미디어 카트리지들을 포함할 수 있다. 특정 구현예들의 기능을 구현하는 모듈들은 파일 저장 서브시스템(926)에 의해 저장 서브시스템(924) 내에 저장될 수 있거나, 또는 프로세서(들)(914)에 의해 액세스가능한 다른 머신들 내에 저장될 수 있다.
버스 서브시스템(912)은 컴퓨팅 디바이스(910)의 다양한 컴포넌트들 및 서브시스템들이 의도된 바에 따라 서로 통신하게 하기 위한 메커니즘을 제공한다. 비록 버스 서브시스템(912)이 단일 버스로서 도시적으로 보여지고 있어도, 버스 서브시스템의 대안적 구현예들은 다수의 버스들을 사용할 수 있다.
컴퓨팅 디바이스(910)는 워크스테이션, 서버, 컴퓨팅 클러스터, 블레이드 서버, 서버 팜, 또는 임의의 다른 데이터 프로세싱 시스템 혹은 컴퓨팅 디바이스를 포함하는 다양한 타입들을 가질 수 있다. 컴퓨터들 및 네트워크들의 지속적으로 변하는 성질로 인해, 도 9에 도시된 컴퓨팅 디바이스(910)의 설명은 일부 구현예들을 예시할 목적으로 단지 특정 예로서 의도된 것이다. 컴퓨팅 디바이스(910)의 다수의 다른 구성들이 도 9에 도시된 컴퓨팅 디바이스보다 더 많거나 더 적은 컴포넌트들을 갖는 것이 가능하다.
본 명세서에서 논의되는 특정 구현예들이 사용자들에 대한 개인적 정보(예를 들어, 다른 전자 통신들로부터 추출된 사용자 데이터, 사용자의 소셜 네트워크에 대한 정보, 사용자의 위치, 사용자의 시간, 사용자의 생체 정보, 그리고 사용자의 활동들 및 인구통계학적 정보)를 수집 혹은 사용할 수 있는 상황들에서, 사용자들은 정보의 수집 여부, 개인적 정보의 저장 여부, 개인적 정보의 사용 여부, 그리고 사용자에 대한 정보의 수집, 저장 및 사용 방법을 제어할 하나 이상의 기회들을 제공받는다. 즉, 본 명세서에서 논의되는 시스템들 및 방법들은 사용자 개인 정보를 수집, 저장 및/또는 사용하되 오로지 그 관련 사용자들로부터 그렇게 하도록 하는 명시적 허가를 수신한 경우에만 사용자 개인 정보를 수집, 저장 및/또는 사용한다. 예를 들어, 사용자는 프로그램들 혹은 특징들이 그 특정 사용자에 대한 사용자 정보 혹은 그 프로그램 혹은 특징과 관련된 다른 사용자들에 대한 사용자 정보를 수집할지 여부에 관한 제어권을 제공받는다. 개인적 정보의 수집의 대상이 되는 각각의 사용자는, 그 사용자와 관련된 정보 수집에 관해 제어할 수 있게 하는(이에 따라 정보의 수집 여부에 관해서 그리고 정보의 어떤 부분들이 수집될 것인지에 관해서 허락 혹은 허가를 제공할 수 있게 하는) 하나 이상의 옵션들을 제공받는다. 예를 들어, 사용자들은 통신 네트워크를 통해 하나 이상의 이러한 제어 옵션들을 제공받을 수 있다. 추가적으로, 특정 데이터는 저장 혹은 사용 전에 개인적으로 식별가능한 정보가 제거되도록 하나 이상의 방식으로 처리될 수 있다. 일 예로서, 사용자의 신원은 개인적으로 식별가능한 정보가 결정될 수 없도록 처리될 수 있다. 또 하나의 다른 예로서, 사용자의 지리적 위치는 사용자의 특정 위치가 결정될 수 없도록 더 넓은 영역으로 일반화될 수 있다.
수 개의 구현예들이 본 명세서에서 설명되었고 예시되었지만, 그 기능을 수행하기 위한 그리고/또는 해당 결과들 및/또는 본 명세서에서 설명되는 이점들 중 하나 이상의 이점을 획득하기 위한 다양한 다른 수단들 및/또는 구조들이 이용될 수 있고, 그리고 이러한 변형들 및/또는 수정들 각각은 본 명세서에서 설명되는 구현예들의 범위 내에 있는 것으로 고려된다. 더 일반적으로, 본 명세서에서 설명되는 모든 파라미터들, 치수들, 물질들, 및 구성들은 예시적 의미를 갖도록 의도된 것이고, 실제 파라미터들, 치수들, 물질들, 및/또는 구성들은 본 명세서의 가르침들이 사용되게 되는 특정 애플리케이션 혹은 애플리케이션들에 따라 달라질 것이다. 본 발명의 기술분야에서 숙련된 자들은 본 명세서에서 설명되는 특정 구현예들에 대한 많은 등가물들을 인식할 것이고, 또는 단지 일상적 실험만을 사용하여 그러한 많은 등가물들을 알 수 있을 것이다. 따라서, 이해해야 하는 것으로, 앞서의 구현예들은 단지 예시적으로 제시된 것이고, 그리고 첨부되는 청구항들 및 그 등가물들의 범위 내에서, 특정적으로 설명 및 청구되는 것과는 다른 다수의 구현예들이 실시될 수 있다. 본 개시내용의 구현예들은 본 명세서에서 설명되는 각각의 개별 특징, 시스템, 물품, 물질, 키트 및/또는 방법에 관한 것이다. 추가적으로, 둘 이상의 이러한 특징들, 시스템들, 물품들, 물질들, 키트들, 및/또는 방법들의 임의의 조합은, 만약 이러한 특징들, 시스템들, 물품들, 물질들, 키트들, 및/또는 방법들이 상호 양립가능하다면, 본 개시내용의 범위 내에 포함된다.
Claims (19)
- 하나 이상의 프로세서들을 사용하여 구현되는 방법으로서,
사용자로부터 자연 언어 입력(natural language input)을 수신하되 상기 프로세서들 중 하나 이상에 의해 동작되는 자동화된 보조기(automated assistant)와 상기 사용자 간의 계속 진행 중인 인간-대-컴퓨터 대화(human-to-computer dialog)의 일부로서 수신하는 단계와,
여기서 상기 계속 진행 중인 인간-대-컴퓨터 대화 동안 이전에 제기된 하나 이상의 토픽(topic)들은 상기 계속 진행 중인 인간-대-컴퓨터 대화와 관련된 맥락 데이터 구조(contextual data structure)의 일부로서 메모리에 저장되며;
복수의 각각의 토픽들과 관련된 문법(grammar)들의 상위세트로부터 상기 이전에 제기된 하나 이상의 토픽들과 관련된 하나 이상의 문법들의 하위세트를 맥락적으로 필터링(contextually filtering)하는 단계와,
여기서 상기 맥락적으로 필터링하는 것은, 상기 계속 진행 중인 인간-대-컴퓨터 대화에 대한 상기 이전에 제기된 하나 이상의 토픽들의 관련성의 하나 이상의 각각의 정도(measure)들에 근거하며;
상기 맥락적으로 필터링한 이후에, 상기 맥락적으로 필터링된 하나 이상의 문법들에 근거하여 상기 자연 언어 입력을 파싱(parsing)하여 하나 이상의 파스(parse)들을 발생시키는 단계와;
상기 파스들 중 하나 이상의 파스에 근거하여 자연 언어 응답(natural language response)을 발생시키는 단계와;
하나 이상의 출력 디바이스들을 사용하여 상기 사용자에게 상기 자연 언어 응답을 출력하는 단계와;
상기 파스들 중 하나 이상의 파스 혹은 상기 자연 언어 응답에 의해 제기된 하나 이상의 새로운 토픽들을 식별하는 단계와;
상기 식별된 하나 이상의 새로운 토픽들을 상기 맥락 데이터 구조에 추가하는 단계와; 그리고
상기 계속 진행 중인 인간-대-컴퓨터 대화에 대한 상기 이전에 제기된 토픽들 중 주어진 토픽과 관련된 관련성의 정도를 상기 주어진 토픽과 상기 하나 이상의 새로운 토픽들 간의 의미론적 연관성(semantic relatedness)의 정도에 근거하여 상승시키는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서들을 사용하여 구현되는 방법. - 제1항에 있어서,
상기 하나 이상의 토픽들 중 각각의 주어진 토픽과 관련된 관련성의 정도는 또한, 상기 주어진 토픽이 마지막으로 제기된 이후 상기 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수에 적어도 부분적으로 근거하여 결정되며,
상기 주어진 토픽이 마지막으로 제기된 이후 상기 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수는, 상기 계속 진행 중인 인간-대-컴퓨터 대화에 대한 상기 주어진 토픽의 관련성에 역으로(inversely) 관련되는 것을 특징으로 하는 하나 이상의 프로세서들을 사용하여 구현되는 방법. - 제1항에 있어서,
상기 맥락 데이터 구조는 복수의 노드(node)들과 상기 복수의 노드들을 연결하는 복수의 에지(edge)들을 포함하는 무방향 그래프(undirected graph)를 포함하는 것을 특징으로 하는 하나 이상의 프로세서들을 사용하여 구현되는 방법. - 제3항에 있어서,
상기 무방향 그래프의 각각의 노드는, 상기 맥락 데이터 구조의 일부로서 저장된 상기 이전에 제기된 하나 이상의 토픽들 중 주어진 토픽과, 그리고 상기 주어진 토픽이 마지막으로 제기된 이후 상기 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수를 나타내는 것을 특징으로 하는 하나 이상의 프로세서들을 사용하여 구현되는 방법. - 제4항에 있어서,
두 개의 노드들을 연결하는 각각의 에지는 두 개의 노드들이 각각 나타내는 두 개의 토픽들 간의 의미론적 연관성의 정도를 나타내는 것을 특징으로 하는 하나 이상의 프로세서들을 사용하여 구현되는 방법. - 제1항에 있어서,
상기 방법은 또한, 상기 계속 진행 중인 인간-대-컴퓨터 대화 동안 호출되었던 하나 이상의 쌍방향 음성 프로세스(interactive voice process)들을 나타내는 하나 이상의 노드들을 갖는 대화 트리(dialog tree)를 발생시키는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서들을 사용하여 구현되는 방법. - 제6항에 있어서,
상기 노드들 중 하나 이상은 하나 이상의 토픽들과 관련되는 것을 특징으로 하는 하나 이상의 프로세서들을 사용하여 구현되는 방법. - 하나 이상의 프로세서들과, 그리고 상기 하나 이상의 프로세서들과 동작가능하게 결합된 메모리를 포함하는 시스템으로서, 상기 메모리는 명령들을 저장하고, 상기 명령들은 상기 하나 이상의 프로세서들에 의한 상기 명령들의 실행에 응답하여 상기 하나 이상의 프로세서들로 하여금,
사용자로부터 자연 언어 입력을 수신하되 상기 프로세서들 중 하나 이상에 의해 동작되는 자동화된 보조기와 상기 사용자 간의 계속 진행 중인 인간-대-컴퓨터 대화의 일부로서 수신하는 것과,
여기서 상기 계속 진행 중인 인간-대-컴퓨터 대화 동안 이전에 제기된 하나 이상의 토픽들은 상기 계속 진행 중인 인간-대-컴퓨터 대화와 관련된 맥락 데이터 구조의 일부로서 메모리에 저장되며;
복수의 각각의 토픽들과 관련된 문법들의 상위세트로부터 상기 이전에 제기된 하나 이상의 토픽들과 관련된 하나 이상의 문법들의 하위세트를 맥락적으로 필터링하는 것과,
여기서 상기 맥락적으로 필터링하는 것은, 상기 계속 진행 중인 인간-대-컴퓨터 대화에 대한 상기 이전에 제기된 하나 이상의 토픽들의 관련성의 하나 이상의 각각의 정도들에 근거하며;
상기 맥락적으로 필터링한 이후에, 상기 맥락적으로 필터링된 하나 이상의 문법들에 근거하여 상기 자연 언어 입력을 파싱하여 하나 이상의 파스들을 발생시키는 것과;
상기 파스들 중 하나 이상의 파스에 근거하여 자연 언어 응답을 발생시키는 것과;
하나 이상의 출력 디바이스들을 사용하여 상기 사용자에게 상기 자연 언어 응답을 출력하는 것과;
상기 파스들 중 하나 이상의 파스 혹은 상기 자연 언어 응답에 의해 제기된 하나 이상의 새로운 토픽들을 식별하는 것과;
상기 식별된 하나 이상의 새로운 토픽들을 상기 맥락 데이터 구조에 추가하는 것과; 그리고
상기 계속 진행 중인 인간-대-컴퓨터 대화에 대한 상기 이전에 제기된 토픽들 중 주어진 토픽과 관련된 관련성의 정도를 상기 주어진 토픽과 상기 하나 이상의 새로운 토픽들 간의 의미론적 연관성의 정도에 근거하여 상승시키는 것을
수행하도록 하는 것을 특징으로 하는 시스템. - 제8항에 있어서,
상기 하나 이상의 토픽들 중 각각의 주어진 토픽과 관련된 관련성의 정도는 또한, 상기 주어진 토픽이 마지막으로 제기된 이후 상기 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수에 적어도 부분적으로 근거하여 결정되며,
상기 주어진 토픽이 마지막으로 제기된 이후 상기 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수는, 상기 계속 진행 중인 인간-대-컴퓨터 대화에 대한 상기 주어진 토픽의 관련성에 역으로 관련되는 것을 특징으로 하는 시스템. - 제8항에 있어서,
상기 맥락 데이터 구조는 복수의 노드들과 상기 복수의 노드들을 연결하는 복수의 에지들을 포함하는 무방향 그래프를 포함하는 것을 특징으로 하는 시스템. - 제10항에 있어서,
상기 무방향 그래프의 각각의 노드는, 상기 맥락 데이터 구조의 일부로서 저장된 상기 이전에 제기된 하나 이상의 토픽들 중 주어진 토픽과, 그리고 상기 주어진 토픽이 마지막으로 제기된 이후 상기 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수를 나타내는 것을 특징으로 하는 시스템. - 제11항에 있어서,
두 개의 노드들을 연결하는 각각의 에지는 두 개의 노드들이 각각 나타내는 두 개의 토픽들 간의 의미론적 연관성의 정도를 나타내는 것을 특징으로 하는 시스템. - 제8항에 있어서,
상기 시스템은 또한, 상기 계속 진행 중인 인간-대-컴퓨터 대화 동안 호출되었던 하나 이상의 쌍방향 음성 프로세스들을 나타내는 하나 이상의 노드들을 갖는 대화 트리를 발생시키는 것을 포함하는 것을 특징으로 하는 시스템. - 제13항에 있어서,
상기 노드들 중 하나 이상은 하나 이상의 토픽들과 관련되는 것을 특징으로 하는 시스템. - 명령들을 포함하는 적어도 하나의 비-일시적 컴퓨터-판독가능 매체로서, 상기 명령들은 하나 이상의 프로세서들에 의한 상기 명령들의 실행에 응답하여 상기 하나 이상의 프로세서들로 하여금,
사용자로부터 자연 언어 입력을 수신하되 상기 프로세서들 중 하나 이상에 의해 동작되는 자동화된 보조기와 상기 사용자 간의 계속 진행 중인 인간-대-컴퓨터 대화의 일부로서 수신하는 것과,
여기서 상기 계속 진행 중인 인간-대-컴퓨터 대화 동안 이전에 제기된 하나 이상의 토픽들은 상기 계속 진행 중인 인간-대-컴퓨터 대화와 관련된 맥락 데이터 구조의 일부로서 메모리에 저장되며;
복수의 각각의 토픽들과 관련된 문법들의 상위세트로부터 상기 이전에 제기된 하나 이상의 토픽들과 관련된 하나 이상의 문법들의 하위세트를 맥락적으로 필터링하는 것과,
여기서 상기 맥락적으로 필터링하는 것은, 상기 계속 진행 중인 인간-대-컴퓨터 대화에 대한 상기 이전에 제기된 하나 이상의 토픽들의 관련성의 하나 이상의 각각의 정도들에 근거하며;
상기 맥락적으로 필터링한 이후에, 상기 맥락적으로 필터링된 하나 이상의 문법들에 근거하여 상기 자연 언어 입력을 파싱하여 하나 이상의 파스들을 발생시키는 것과;
상기 파스들 중 하나 이상의 파스에 근거하여 자연 언어 응답을 발생시키는 것과;
하나 이상의 출력 디바이스들을 사용하여 상기 사용자에게 상기 자연 언어 응답을 출력하는 것과;
상기 파스들 중 하나 이상의 파스 혹은 상기 자연 언어 응답에 의해 제기된 하나 이상의 새로운 토픽들을 식별하는 것과;
상기 식별된 하나 이상의 새로운 토픽들을 상기 맥락 데이터 구조에 추가하는 것과; 그리고
상기 계속 진행 중인 인간-대-컴퓨터 대화에 대한 상기 이전에 제기된 토픽들 중 주어진 토픽과 관련된 관련성의 정도를 상기 주어진 토픽과 상기 하나 이상의 새로운 토픽들 간의 의미론적 연관성의 정도에 근거하여 상승시키는 것을
수행하도록 하는 것을 특징으로 하는 적어도 하나의 비-일시적 컴퓨터-판독가능 매체. - 제15항에 있어서,
상기 하나 이상의 토픽들 중 각각의 주어진 토픽과 관련된 관련성의 정도는 또한, 상기 주어진 토픽이 마지막으로 제기된 이후 상기 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수에 적어도 부분적으로 근거하여 결정되며,
상기 주어진 토픽이 마지막으로 제기된 이후 상기 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수는, 상기 계속 진행 중인 인간-대-컴퓨터 대화에 대한 상기 주어진 토픽의 관련성에 역으로 관련되는 것을 특징으로 하는 적어도 하나의 비-일시적 컴퓨터-판독가능 매체. - 제15항에 있어서,
상기 맥락 데이터 구조는 복수의 노드들과 상기 복수의 노드들을 연결하는 복수의 에지들을 포함하는 무방향 그래프를 포함하는 것을 특징으로 하는 적어도 하나의 비-일시적 컴퓨터-판독가능 매체. - 제17항에 있어서,
상기 무방향 그래프의 각각의 노드는, 상기 맥락 데이터 구조의 일부로서 저장된 상기 이전에 제기된 하나 이상의 토픽들 중 주어진 토픽과, 그리고 상기 주어진 토픽이 마지막으로 제기된 이후 상기 계속 진행 중인 인간-대-컴퓨터 대화의 전환 횟수를 나타내는 것을 특징으로 하는 적어도 하나의 비-일시적 컴퓨터-판독가능 매체. - 제18항에 있어서,
두 개의 노드들을 연결하는 각각의 에지는 두 개의 노드들이 각각 나타내는 두 개의 토픽들 간의 의미론적 연관성의 정도를 나타내는 것을 특징으로 하는 적어도 하나의 비-일시적 컴퓨터-판독가능 매체.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662440856P | 2016-12-30 | 2016-12-30 | |
US62/440,856 | 2016-12-30 | ||
US15/446,908 | 2017-03-01 | ||
US15/446,908 US10268680B2 (en) | 2016-12-30 | 2017-03-01 | Context-aware human-to-computer dialog |
PCT/US2017/052721 WO2018125332A1 (en) | 2016-12-30 | 2017-09-21 | Context-aware human-to-computer dialog |
KR1020197022334A KR102355988B1 (ko) | 2016-12-30 | 2017-09-21 | 맥락을 인식하는 인간-대-컴퓨터 대화 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197022334A Division KR102355988B1 (ko) | 2016-12-30 | 2017-09-21 | 맥락을 인식하는 인간-대-컴퓨터 대화 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220016286A KR20220016286A (ko) | 2022-02-08 |
KR102394289B1 true KR102394289B1 (ko) | 2022-05-04 |
Family
ID=60270219
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197022334A KR102355988B1 (ko) | 2016-12-30 | 2017-09-21 | 맥락을 인식하는 인간-대-컴퓨터 대화 |
KR1020227002256A KR102394289B1 (ko) | 2016-12-30 | 2017-09-21 | 맥락을 인식하는 인간-대-컴퓨터 대화 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197022334A KR102355988B1 (ko) | 2016-12-30 | 2017-09-21 | 맥락을 인식하는 인간-대-컴퓨터 대화 |
Country Status (8)
Country | Link |
---|---|
US (2) | US10268680B2 (ko) |
EP (3) | EP4152314B1 (ko) |
JP (1) | JP6912579B2 (ko) |
KR (2) | KR102355988B1 (ko) |
CN (2) | CN108268587B (ko) |
DE (2) | DE102017122357B4 (ko) |
GB (1) | GB2558352A (ko) |
WO (1) | WO2018125332A1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20240141101A (ko) | 2023-03-18 | 2024-09-25 | 김만돌 | 모범적 공감형 인공지능의 대화 방법 및 시스템 |
KR20240145239A (ko) | 2023-03-27 | 2024-10-07 | 김만돌 | 공감형 챗gpt 인공지능의 대화 방법 및 시스템 |
Families Citing this family (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8977255B2 (en) | 2007-04-03 | 2015-03-10 | Apple Inc. | Method and system for operating a multi-function portable electronic device using voice-activation |
US8676904B2 (en) | 2008-10-02 | 2014-03-18 | Apple Inc. | Electronic devices with voice command and contextual data processing capabilities |
US10417037B2 (en) | 2012-05-15 | 2019-09-17 | Apple Inc. | Systems and methods for integrating third party services with a digital assistant |
DE112014000709B4 (de) | 2013-02-07 | 2021-12-30 | Apple Inc. | Verfahren und vorrichtung zum betrieb eines sprachtriggers für einen digitalen assistenten |
WO2014182820A2 (en) * | 2013-05-07 | 2014-11-13 | Haley Paul V | System for knowledge acquisition |
US20190129941A2 (en) * | 2013-05-21 | 2019-05-02 | Happify, Inc. | Systems and methods for dynamic user interaction for improving happiness |
EP3937002A1 (en) | 2013-06-09 | 2022-01-12 | Apple Inc. | Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant |
US10170123B2 (en) | 2014-05-30 | 2019-01-01 | Apple Inc. | Intelligent assistant for home automation |
US9715875B2 (en) | 2014-05-30 | 2017-07-25 | Apple Inc. | Reducing the need for manual start/end-pointing and trigger phrases |
US9338493B2 (en) | 2014-06-30 | 2016-05-10 | Apple Inc. | Intelligent automated assistant for TV user interactions |
US9886953B2 (en) | 2015-03-08 | 2018-02-06 | Apple Inc. | Virtual assistant activation |
US10460227B2 (en) | 2015-05-15 | 2019-10-29 | Apple Inc. | Virtual assistant in a communication session |
US20160378747A1 (en) | 2015-06-29 | 2016-12-29 | Apple Inc. | Virtual assistant for media playback |
US10747498B2 (en) | 2015-09-08 | 2020-08-18 | Apple Inc. | Zero latency digital assistant |
US10740384B2 (en) | 2015-09-08 | 2020-08-11 | Apple Inc. | Intelligent automated assistant for media search and playback |
US10331312B2 (en) | 2015-09-08 | 2019-06-25 | Apple Inc. | Intelligent automated assistant in a media environment |
US11587559B2 (en) | 2015-09-30 | 2023-02-21 | Apple Inc. | Intelligent device identification |
US10691473B2 (en) | 2015-11-06 | 2020-06-23 | Apple Inc. | Intelligent automated assistant in a messaging environment |
US10223066B2 (en) | 2015-12-23 | 2019-03-05 | Apple Inc. | Proactive assistance based on dialog communication between devices |
US10586535B2 (en) | 2016-06-10 | 2020-03-10 | Apple Inc. | Intelligent digital assistant in a multi-tasking environment |
DK201670540A1 (en) | 2016-06-11 | 2018-01-08 | Apple Inc | Application integration with a digital assistant |
DK179415B1 (en) | 2016-06-11 | 2018-06-14 | Apple Inc | Intelligent device arbitration and control |
US10872289B2 (en) * | 2017-04-08 | 2020-12-22 | Geun Il Kim | Method and system for facilitating context based information |
DK180048B1 (en) | 2017-05-11 | 2020-02-04 | Apple Inc. | MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION |
DK179496B1 (en) | 2017-05-12 | 2019-01-15 | Apple Inc. | USER-SPECIFIC Acoustic Models |
DK201770428A1 (en) | 2017-05-12 | 2019-02-18 | Apple Inc. | LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT |
DK201770411A1 (en) | 2017-05-15 | 2018-12-20 | Apple Inc. | MULTI-MODAL INTERFACES |
US20180336275A1 (en) | 2017-05-16 | 2018-11-22 | Apple Inc. | Intelligent automated assistant for media exploration |
US10176808B1 (en) * | 2017-06-20 | 2019-01-08 | Microsoft Technology Licensing, Llc | Utilizing spoken cues to influence response rendering for virtual assistants |
US10387463B2 (en) * | 2017-07-06 | 2019-08-20 | International Business Machines Corporation | Dialog agent for conducting task-oriented computer-based communications |
US11436469B2 (en) * | 2017-07-31 | 2022-09-06 | Microsoft Technology Licensing, Llc | Knowledge graph for conversational semantic search |
US11514903B2 (en) * | 2017-08-04 | 2022-11-29 | Sony Corporation | Information processing device and information processing method |
WO2019155716A1 (ja) * | 2018-02-08 | 2019-08-15 | ソニー株式会社 | 情報処理装置、情報処理システム、および情報処理方法、並びにプログラム |
WO2019161207A1 (en) * | 2018-02-15 | 2019-08-22 | DMAI, Inc. | System and method for conversational agent via adaptive caching of dialogue tree |
US11308312B2 (en) | 2018-02-15 | 2022-04-19 | DMAI, Inc. | System and method for reconstructing unoccupied 3D space |
US11018997B2 (en) * | 2018-04-12 | 2021-05-25 | Disney Enterprises, Inc. | Systems and methods for maintaining a conversation |
US10699708B2 (en) * | 2018-04-24 | 2020-06-30 | Accenture Global Solutions Limited | Robotic agent conversation escalation |
US11145294B2 (en) | 2018-05-07 | 2021-10-12 | Apple Inc. | Intelligent automated assistant for delivering content from user experiences |
US10928918B2 (en) | 2018-05-07 | 2021-02-23 | Apple Inc. | Raise to speak |
DK179822B1 (da) | 2018-06-01 | 2019-07-12 | Apple Inc. | Voice interaction at a primary device to access call functionality of a companion device |
DK180639B1 (en) | 2018-06-01 | 2021-11-04 | Apple Inc | DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT |
DK201870355A1 (en) | 2018-06-01 | 2019-12-16 | Apple Inc. | VIRTUAL ASSISTANT OPERATION IN MULTI-DEVICE ENVIRONMENTS |
US10891950B2 (en) * | 2018-09-27 | 2021-01-12 | International Business Machines Corporation | Graph based prediction for next action in conversation flow |
US11462215B2 (en) | 2018-09-28 | 2022-10-04 | Apple Inc. | Multi-modal inputs for voice commands |
EP3859568A4 (en) * | 2018-09-28 | 2021-09-29 | Fujitsu Limited | DIALOGUE DEVICE, DIALOGUE PROCEDURE AND DIALOGUE PROGRAM |
US11714965B2 (en) * | 2018-11-09 | 2023-08-01 | Genesys Telecommunications Laboratories, Inc. | System and method for model derivation for entity prediction |
CN111223477B (zh) * | 2018-11-23 | 2023-01-24 | 珠海格力电器股份有限公司 | 一种人机交互时话题上移的方法及设备 |
JP7160116B2 (ja) * | 2018-12-25 | 2022-10-25 | 富士通株式会社 | 対話装置、対話方法及び対話プログラム |
US11295213B2 (en) * | 2019-01-08 | 2022-04-05 | International Business Machines Corporation | Conversational system management |
US11348573B2 (en) | 2019-03-18 | 2022-05-31 | Apple Inc. | Multimodality in digital assistant systems |
US11790176B2 (en) | 2019-03-19 | 2023-10-17 | Servicenow, Inc. | Systems and methods for a virtual agent in a cloud computing environment |
US11423910B2 (en) * | 2019-03-19 | 2022-08-23 | Servicenow, Inc. | Systems and method for third party natural language understanding service integration |
US11544475B2 (en) | 2019-03-22 | 2023-01-03 | Predictika Inc. | System and method for providing a model-based intelligent conversational agent |
CN110188190B (zh) * | 2019-04-03 | 2023-07-14 | 创新先进技术有限公司 | 对话解析方法、装置、服务器及可读存储介质 |
US10964324B2 (en) | 2019-04-26 | 2021-03-30 | Rovi Guides, Inc. | Systems and methods for enabling topic-based verbal interaction with a virtual assistant |
US11307752B2 (en) | 2019-05-06 | 2022-04-19 | Apple Inc. | User configurable task triggers |
DK201970509A1 (en) | 2019-05-06 | 2021-01-15 | Apple Inc | Spoken notifications |
US11140099B2 (en) | 2019-05-21 | 2021-10-05 | Apple Inc. | Providing message response suggestions |
DK180129B1 (en) | 2019-05-31 | 2020-06-02 | Apple Inc. | USER ACTIVITY SHORTCUT SUGGESTIONS |
CN112017662B (zh) * | 2019-05-31 | 2023-07-07 | 阿里巴巴集团控股有限公司 | 控制指令确定方法、装置、电子设备和存储介质 |
US11468890B2 (en) | 2019-06-01 | 2022-10-11 | Apple Inc. | Methods and user interfaces for voice-based control of electronic devices |
US11256868B2 (en) | 2019-06-03 | 2022-02-22 | Microsoft Technology Licensing, Llc | Architecture for resolving ambiguous user utterance |
CN110704595B (zh) * | 2019-09-27 | 2022-08-23 | 百度在线网络技术(北京)有限公司 | 对话的处理方法、装置、电子设备及可读存储介质 |
CN111177310B (zh) * | 2019-12-06 | 2023-08-18 | 广西电网有限责任公司 | 电力服务机器人智能场景会话方法及装置 |
WO2021183156A1 (en) * | 2020-03-13 | 2021-09-16 | Google Llc | Natural language dialog system for video game interaction |
US11195534B1 (en) * | 2020-03-30 | 2021-12-07 | Amazon Technologies, Inc. | Permissioning for natural language processing systems |
CN111506292B (zh) * | 2020-04-15 | 2021-06-15 | 思必驰科技股份有限公司 | 用于人机对话的语音技能跳转方法、电子设备及存储介质 |
US11061543B1 (en) | 2020-05-11 | 2021-07-13 | Apple Inc. | Providing relevant data items based on context |
US11038934B1 (en) | 2020-05-11 | 2021-06-15 | Apple Inc. | Digital assistant hardware abstraction |
US11490204B2 (en) | 2020-07-20 | 2022-11-01 | Apple Inc. | Multi-device audio adjustment coordination |
US11438683B2 (en) | 2020-07-21 | 2022-09-06 | Apple Inc. | User identification using headphones |
DE102021109265A1 (de) | 2020-08-31 | 2022-03-03 | Cognigy Gmbh | Verfahren zur Optimierung |
US11790173B2 (en) * | 2020-10-22 | 2023-10-17 | Google Llc | Recommending action(s) based on entity or entity type |
CN112667795B (zh) * | 2021-01-04 | 2023-07-28 | 北京百度网讯科技有限公司 | 对话树构建方法和装置、对话树运行方法、装置以及系统 |
US20220351741A1 (en) * | 2021-04-29 | 2022-11-03 | Rovi Guides, Inc. | Systems and methods to alter voice interactions |
US11984112B2 (en) | 2021-04-29 | 2024-05-14 | Rovi Guides, Inc. | Systems and methods to alter voice interactions |
US12039471B2 (en) | 2021-11-29 | 2024-07-16 | T-Mobile Usa, Inc. | Tracking issues and resolution of same in a wireless communication network |
US11962455B2 (en) | 2021-11-29 | 2024-04-16 | T-Mobile Usa, Inc. | Prioritizing multiple issues associated with a wireless telecommunication network |
US11855831B1 (en) | 2022-06-10 | 2023-12-26 | T-Mobile Usa, Inc. | Enabling an operator to resolve an issue associated with a 5G wireless telecommunication network using AR glasses |
WO2024020065A1 (en) * | 2022-07-20 | 2024-01-25 | Cerence Operating Company | Collaboration between a recommendation engine and a voice assistant |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060074670A1 (en) | 2004-09-27 | 2006-04-06 | Fuliang Weng | Method and system for interactive conversational dialogue for cognitively overloaded device users |
US20100217592A1 (en) | 2008-10-14 | 2010-08-26 | Honda Motor Co., Ltd. | Dialog Prediction Using Lexical and Semantic Features |
US20150149177A1 (en) | 2013-11-27 | 2015-05-28 | Sri International | Sharing Intents to Provide Virtual Assistance in a Multi-Person Dialog |
US20160132484A1 (en) | 2014-11-10 | 2016-05-12 | Oracle International Corporation | Automatic generation of n-grams and concept relations from linguistic input data |
US20160163311A1 (en) | 2014-12-09 | 2016-06-09 | Microsoft Technology Licensing, Llc | Communication system |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7725307B2 (en) | 1999-11-12 | 2010-05-25 | Phoenix Solutions, Inc. | Query engine for processing voice based queries including semantic decoding |
JP2001188784A (ja) * | 1999-12-28 | 2001-07-10 | Sony Corp | 会話処理装置および方法、並びに記録媒体 |
US6985852B2 (en) * | 2001-08-21 | 2006-01-10 | Microsoft Corporation | Method and apparatus for dynamic grammars and focused semantic parsing |
US20030061029A1 (en) | 2001-08-29 | 2003-03-27 | Efraim Shaket | Device for conducting expectation based mixed initiative natural language dialogs |
US7197460B1 (en) * | 2002-04-23 | 2007-03-27 | At&T Corp. | System for handling frequently asked questions in a natural language dialog service |
US7398209B2 (en) | 2002-06-03 | 2008-07-08 | Voicebox Technologies, Inc. | Systems and methods for responding to natural language speech utterance |
US7542902B2 (en) * | 2002-07-29 | 2009-06-02 | British Telecommunications Plc | Information provision for call centres |
KR101032176B1 (ko) | 2002-12-02 | 2011-05-02 | 소니 주식회사 | 대화 제어 장치 및 방법 및 로봇 장치 |
US8645122B1 (en) * | 2002-12-19 | 2014-02-04 | At&T Intellectual Property Ii, L.P. | Method of handling frequently asked questions in a natural language dialog service |
WO2005122145A1 (en) * | 2004-06-08 | 2005-12-22 | Metaphor Solutions, Inc. | Speech recognition dialog management |
TWI237991B (en) | 2004-06-28 | 2005-08-11 | Delta Electronics Inc | Integrated dialogue system and method thereof |
US7925506B2 (en) * | 2004-10-05 | 2011-04-12 | Inago Corporation | Speech recognition accuracy via concept to keyword mapping |
CA2483805C (en) * | 2004-10-05 | 2015-04-21 | Inago Corporation | System and methods for improving accuracy of speech recognition |
KR100755677B1 (ko) | 2005-11-02 | 2007-09-05 | 삼성전자주식회사 | 주제 영역 검출을 이용한 대화체 음성 인식 장치 및 방법 |
JP2008009552A (ja) * | 2006-06-27 | 2008-01-17 | Nippon Telegr & Teleph Corp <Ntt> | インデクス生成装置、インデクス生成方法およびインデクス生成プログラム |
US9318108B2 (en) | 2010-01-18 | 2016-04-19 | Apple Inc. | Intelligent automated assistant |
US8073681B2 (en) * | 2006-10-16 | 2011-12-06 | Voicebox Technologies, Inc. | System and method for a cooperative conversational voice user interface |
US20080221892A1 (en) * | 2007-03-06 | 2008-09-11 | Paco Xander Nathan | Systems and methods for an autonomous avatar driver |
US20090030697A1 (en) | 2007-03-07 | 2009-01-29 | Cerra Joseph P | Using contextual information for delivering results generated from a speech recognition facility using an unstructured language model |
US8326637B2 (en) * | 2009-02-20 | 2012-12-04 | Voicebox Technologies, Inc. | System and method for processing multi-modal device interactions in a natural language voice services environment |
US20120245925A1 (en) * | 2011-03-25 | 2012-09-27 | Aloke Guha | Methods and devices for analyzing text |
US8880406B2 (en) * | 2011-03-28 | 2014-11-04 | Epic Systems Corporation | Automatic determination of and response to a topic of a conversation |
WO2013042117A1 (en) | 2011-09-19 | 2013-03-28 | Personetics Technologies Ltd. | System and method for evaluating intent of a human partner to a dialogue between human user and computerized system |
US9214157B2 (en) * | 2011-12-06 | 2015-12-15 | At&T Intellectual Property I, L.P. | System and method for machine-mediated human-human conversation |
US8458197B1 (en) * | 2012-01-31 | 2013-06-04 | Google Inc. | System and method for determining similar topics |
US8346563B1 (en) * | 2012-04-10 | 2013-01-01 | Artificial Solutions Ltd. | System and methods for delivering advanced natural language interaction applications |
US20140278427A1 (en) | 2013-03-13 | 2014-09-18 | Samsung Electronics Co., Ltd. | Dynamic dialog system agent integration |
US9189742B2 (en) * | 2013-11-20 | 2015-11-17 | Justin London | Adaptive virtual intelligent agent |
RU2014111971A (ru) * | 2014-03-28 | 2015-10-10 | Юрий Михайлович Буров | Способ и система голосового интерфейса |
EP3164806A1 (en) * | 2014-07-04 | 2017-05-10 | Intelligent Digital Avatars, Inc. | Systems and methods for assessing, verifying and adjusting the affective state of a user |
US10061867B2 (en) * | 2014-12-30 | 2018-08-28 | Genesys Telecommunications Laboratories, Inc. | System and method for interactive multi-resolution topic detection and tracking |
CN104573028B (zh) | 2015-01-14 | 2019-01-25 | 百度在线网络技术(北京)有限公司 | 实现智能问答的方法和系统 |
US10418032B1 (en) * | 2015-04-10 | 2019-09-17 | Soundhound, Inc. | System and methods for a virtual assistant to manage and use context in a natural language dialog |
US10599644B2 (en) * | 2016-09-14 | 2020-03-24 | International Business Machines Corporation | System and method for managing artificial conversational entities enhanced by social knowledge |
US9953650B1 (en) * | 2016-12-08 | 2018-04-24 | Louise M Falevsky | Systems, apparatus and methods for using biofeedback for altering speech |
-
2017
- 2017-03-01 US US15/446,908 patent/US10268680B2/en active Active
- 2017-09-21 WO PCT/US2017/052721 patent/WO2018125332A1/en unknown
- 2017-09-21 EP EP22204713.6A patent/EP4152314B1/en active Active
- 2017-09-21 EP EP17886881.6A patent/EP3563258B1/en active Active
- 2017-09-21 KR KR1020197022334A patent/KR102355988B1/ko active IP Right Grant
- 2017-09-21 JP JP2019535863A patent/JP6912579B2/ja active Active
- 2017-09-21 EP EP21202764.3A patent/EP3958254B1/en active Active
- 2017-09-21 KR KR1020227002256A patent/KR102394289B1/ko active IP Right Grant
- 2017-09-26 DE DE102017122357.6A patent/DE102017122357B4/de active Active
- 2017-09-26 DE DE202017105864.6U patent/DE202017105864U1/de active Active
- 2017-09-27 CN CN201710891157.1A patent/CN108268587B/zh active Active
- 2017-09-27 CN CN202210018083.1A patent/CN114490977A/zh active Pending
- 2017-09-28 GB GB1715746.2A patent/GB2558352A/en not_active Withdrawn
-
2019
- 2019-03-07 US US16/295,302 patent/US11227124B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060074670A1 (en) | 2004-09-27 | 2006-04-06 | Fuliang Weng | Method and system for interactive conversational dialogue for cognitively overloaded device users |
US20100217592A1 (en) | 2008-10-14 | 2010-08-26 | Honda Motor Co., Ltd. | Dialog Prediction Using Lexical and Semantic Features |
US20150149177A1 (en) | 2013-11-27 | 2015-05-28 | Sri International | Sharing Intents to Provide Virtual Assistance in a Multi-Person Dialog |
US20160132484A1 (en) | 2014-11-10 | 2016-05-12 | Oracle International Corporation | Automatic generation of n-grams and concept relations from linguistic input data |
US20160163311A1 (en) | 2014-12-09 | 2016-06-09 | Microsoft Technology Licensing, Llc | Communication system |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20240141101A (ko) | 2023-03-18 | 2024-09-25 | 김만돌 | 모범적 공감형 인공지능의 대화 방법 및 시스템 |
KR20240145239A (ko) | 2023-03-27 | 2024-10-07 | 김만돌 | 공감형 챗gpt 인공지능의 대화 방법 및 시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR102355988B1 (ko) | 2022-01-26 |
EP3563258B1 (en) | 2021-11-03 |
US20190205379A1 (en) | 2019-07-04 |
GB201715746D0 (en) | 2017-11-15 |
EP3958254B1 (en) | 2023-05-10 |
JP6912579B2 (ja) | 2021-08-04 |
US10268680B2 (en) | 2019-04-23 |
JP2020503620A (ja) | 2020-01-30 |
DE102017122357B4 (de) | 2022-10-20 |
EP4152314B1 (en) | 2024-06-12 |
CN108268587A (zh) | 2018-07-10 |
EP3563258A1 (en) | 2019-11-06 |
KR20190099061A (ko) | 2019-08-23 |
DE102017122357A1 (de) | 2018-07-05 |
EP3563258A4 (en) | 2020-05-20 |
GB2558352A (en) | 2018-07-11 |
WO2018125332A1 (en) | 2018-07-05 |
US11227124B2 (en) | 2022-01-18 |
CN114490977A (zh) | 2022-05-13 |
US20180189267A1 (en) | 2018-07-05 |
CN108268587B (zh) | 2022-01-28 |
KR20220016286A (ko) | 2022-02-08 |
DE202017105864U1 (de) | 2018-01-10 |
EP4152314A1 (en) | 2023-03-22 |
EP3958254A1 (en) | 2022-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102394289B1 (ko) | 맥락을 인식하는 인간-대-컴퓨터 대화 | |
AU2021202694B2 (en) | Facilitating end-to-end communications with automated assistants in multiple languages | |
US11978452B2 (en) | Handling explicit invocation of chatbots | |
KR102475719B1 (ko) | 서드 파티 에이전트를 사용하기 위한 호출 요청 생성 및 전송 | |
US11113481B2 (en) | Adapting automated assistants for use with multiple languages | |
US11216292B2 (en) | Adapting client application of feature phone based on experiment parameters | |
KR102345615B1 (ko) | 사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션 | |
US20220366910A1 (en) | Voice commands for an automated assistant utilized in smart dictation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E701 | Decision to grant or registration of patent right |