KR20200054338A - 다이얼로그 시스템들에서의 파라미터 수집 및 자동 다이얼로그 생성 - Google Patents

다이얼로그 시스템들에서의 파라미터 수집 및 자동 다이얼로그 생성 Download PDF

Info

Publication number
KR20200054338A
KR20200054338A KR1020207013506A KR20207013506A KR20200054338A KR 20200054338 A KR20200054338 A KR 20200054338A KR 1020207013506 A KR1020207013506 A KR 1020207013506A KR 20207013506 A KR20207013506 A KR 20207013506A KR 20200054338 A KR20200054338 A KR 20200054338A
Authority
KR
South Korea
Prior art keywords
dialog
parameters
dialog system
values
intent
Prior art date
Application number
KR1020207013506A
Other languages
English (en)
Other versions
KR102189855B1 (ko
Inventor
일리아 겔펜베인
파벨 시롯인
아르템 곤차룩
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20200054338A publication Critical patent/KR20200054338A/ko
Application granted granted Critical
Publication of KR102189855B1 publication Critical patent/KR102189855B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3329Natural language query formulation or dialogue systems
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3344Query execution using natural language analysis
    • 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]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • G06F40/35Discourse or dialogue representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/487Arrangements for providing information services, e.g. recorded voice services or time announcements
    • H04M3/493Interactive information services, e.g. directory enquiries ; Arrangements therefor, e.g. interactive voice response [IVR] systems or voice portals
    • H04M3/4936Speech interaction details
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M7/00Arrangements for interconnection between switching centres
    • H04M7/0012Details of application programming interfaces [API] for telephone networks; Arrangements which combine a telephonic communication equipment and a computer, i.e. computer telephony integration [CPI] arrangements
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3605Destination input or retrieval
    • G01C21/3608Destination input or retrieval using speech input, e.g. using speech recognition
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L2015/088Word spotting
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • G10L2015/223Execution procedure of a spoken command
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M2201/00Electronic components, circuits, software, systems or apparatus used in telephone systems
    • H04M2201/40Electronic components, circuits, software, systems or apparatus used in telephone systems using speech recognition
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M2203/00Aspects of automatic or semi-automatic exchanges
    • H04M2203/35Aspects of automatic or semi-automatic exchanges related to information services provided via a voice call
    • H04M2203/355Interactive dialogue design tools, features or methods

Abstract

자연 음성 다이얼로그 시스템 및 방법들이 게시된다. 하나의 예시에서, 방법은 적어도 하나의 미리 결정된 인텐트 키워드에 기초하여 상기 음성 입력과 연관된 다이얼로그 시스템 인텐트를 식별하는 단계, 상기 다이얼로그 시스템 인텐트는 필수 인텐트 파라미터들을 가지며, 상기 다이얼로그 시스템의 모든 필수 인텐트 파라미터들에 대한 데이터가 사용 가능한지 여부를 결정하는 단계, 상기 결정에 기초하여, 상기 다이얼로그 시스템 인텐트와 연관된 파라미터 수집 다이얼로그를 선택적으로 개시하는 단계, 상기 파라미터 수집 다이얼로그는 상기 다이얼로그 시스템 인텐트에는 사용 가능하지 않는 상기 필수 파라미터들에 대한 데이터를 수집하도록 동작 가능하며, 및 상기 다이얼로그 시스템 인텐트 및 하나 이상의 필수 파라미터들에 기초하여, 액션 명령어를 생성하는 단계를 포함한다.

Description

다이얼로그 시스템들에서의 파라미터 수집 및 자동 다이얼로그 생성{PARAMETER COLLECTION AND AUTOMATIC DIALOG GENERATION IN DIALOG SYSTEMS}
본 출원은 2015년 10월 21일자로 출원되었으며 "다이얼로그 시스템들에서의 파라미터 수집 및 자동 다이얼로그 생성"이라는 제목이 붙은 미국 가출원번호 62/244,560의 이익을 향유하며, 이것은 모든 목적들을 위해 그 전체가 본 명세서에 참조로써 포함된다.
다이얼로그 시스템들은 휴대용 디바이스들을 위한 애플리케이션에 널리 사용된다. 전형적으로, 다이얼로그 시스템은 정보에 액세스하고, 프로세싱하고, 관리하고, 전달하기 위한 인간 기계 인터페이스를 갖는 컴퓨터-기반 에이전트를 포함한다. 다이얼로그 시스템들은 채팅 정보 시스템들, 발화된 다이얼로그 시스템들, 대화형 에이전트들, 채터 로봇들, 채터봇들, 챗봇들, 채팅 에이전트들, 개인용 정보 단말기들, AOA(automated online assistants), 그와 같은 것으로 또한 알려져 있다.
전통적으로, 다이얼로그 시스템은 지능형 대화를 시뮬레이팅하고 사용자에게 개인화된 도움을 제공하기 위해 자연어를 사용하여 인간과 인터랙팅할 수 있다. 예를 들어, 사용자는 다이얼로그 시스템에 "오늘 알렉산드리아의 날씨는 어떻습니까?"라고 물어볼 수 있고 다이얼로그 시스템으로부터 오디오 또는 텍스트 메시지들의 형태로 대답을 수신할 수 있다. 사용자는 다이얼로그 시스템에 음성 명령들을 제공하여 일정 동작들, 예를 들어 이메일들 생성, 전화 걸기, 정보 검색, 탐색, 알림들 또는 리마인더들 세팅 등을 수행하도록 할 수 있다. 이러한 기능들 및 다른 기능들은 다이얼로그 시스템들이 사용자들, 특히 스마트폰들 및 태블릿 컴퓨터들과 같은 휴대용 전자 디바이스들의 사용자들에게 매우 인기 있도록 한다.
다이얼로그 시스템은 사용자 음성 입력들을 수신하고, 입력들을 텍스트 입력들로 변환하고, 텍스트 입력들을 해석하고, 텍스트 입력들에 대한 적절한 응답들을 생성하고, 사용자들에게 응답들을 전달하는 것을 담당하는 다이얼로그 시스템 엔진을 포함할 수 있다. 입력들을 해석하고 적절한 응답들을 찾는 것은 인공 지능 알고리즘들을 활용할 수 있다. 따라서, 다이얼로그 시스템들에 대한 수요가 증가하고 있음에도 불구하고, 다이얼로그 시스템들을 제작하는 것은 복잡한 공학 과제로 남아 있다.
자연어 다이얼로그 시스템은 사용자와의 다이얼로그를 유지하고 지능형 응답들을 제공하거나 사용자 요청들에 응답하여 광범위한 액션들을 수행할 수 있다. 사용자 요청들은 사용자가 발언하는 것과 자연어 다이얼로그 시스템에 의해 취해진 액션들 사이의 매핑을 용이하게 하는 다이얼로그 시스템 "인텐트들"을 사용하여 자연어 다이얼로그 시스템에 의해 해석될 수 있다. 일정 사용자-기계 다이얼로그 컨텍스트들에서, 주어진 인텐트에 대한 액션을 구현하기 위해, 자연어 다이얼로그 시스템은 하나 이상의 인텐트 파라미터들을 획득해야 한다. 예를 들어, 사용자가 피자를 주문하기 위해 자연어 다이얼로그 시스템에 요청할 때, 자연어 다이얼로그 시스템은 사이즈, 빵 타입, 토핑들, 공급 업체, 시간 및 배달을 위한 주소와 같은 피자와 연관된 파라미터들을 획득해야 한다.
본 게시에 따른 예시들은 자연어 다이얼로그를 모방한 기계로-구현되는 파라미터 수집 다이얼로그를 사용하여 사용자로부터 인텐트 파라미터를 수집하는 시스템들 및 방법들을 제공한다. 인텐트 파라미터들의 수집이 개시되도록 사용자의 미리 결정된 인텐트가 식별될 필요가 있을 수 있다. 인텐트 파라미터들이 수집되면, 자연어 다이얼로그 시스템은 수집된 파라미터들에 기초하여 인텐트와 연관된 미리 결정된 액션을 구현한다(예를 들어, 피자 레스토랑에 전자 구매 주문을 보냄).
본 게시에 따른 예시들은 소프트웨어 개발자들로 하여금 파라미터 수집 다이얼로그들을 작동시키고 인텐트 파라미터들을 수집하도록 구성 가능한 다이얼로그 에이전트들을 제작할 수 있게 하는 시스템들 및 방법들을 더 제공할 수 있다. 게시된 하나의 예시에서, 인텐트 파라미터 수집을 위한 방법은 사용자의 음성 입력을 수신하는 단계; 적어도 하나의 미리 결정된 인텐트 키워드에 기초하여 상기 음성 입력과 연관된 다이얼로그 시스템 인텐트를 식별하는 단계, 상기 다이얼로그 시스템 인텐트는 필수 인텐트 파라미터들을 가지며; 상기 다이얼로그 시스템의 모든 필수 인텐트 파라미터들에 대한 데이터가 사용 가능한지 여부를 결정하는 단계; 상기 결정에 기초하여, 상기 다이얼로그 시스템 인텐트와 연관된 파라미터 수집 다이얼로그를 선택적으로 개시하는 단계, 상기 파라미터 수집 다이얼로그는 상기 다이얼로그 시스템 인텐트에는 사용 가능하지 않는 상기 필수 파라미터들에 대한 데이터를 수집하도록 동작 가능하며; 및 상기 다이얼로그 시스템 인텐트 및 하나 이상의 필수 파라미터들에 기초하여, 액션 명령어를 생성하는 단계를 포함한다.
하나의 예시에서, 상기 방법은 상기 음성 입력에서 상기 필수 인텐트 파라미터들 중 적어도 하나를 식별하는 단계 및 상기 음성 입력으로부터 상기 필수 인텐트 파라미터들 중 적어도 하나를 추출하는 단계를 더 포함할 수 있다. 상기 방법은 상기 음성 입력이 모든 누락된 인텐트 파라미터들을 포함한다는 상기 결정에 기초하여 상기 파라미터 수집 다이얼로그를 개시하지 않고 상기 음성 입력으로부터 상기 필수 인텐트 파라미터들을 추출하는 단계를 더 포함할 수 있다. 상기 파라미터 수집 다이얼로그는 적어도 하나의 미리 결정된 프롬프트를 포함할 수 있다.
하나의 예시에서, 상기 방법은 상기 적어도 하나의 미리 결정된 프롬프트에 응답하여 상기 사용자의 적어도 하나의 추가 음성 입력을 수신하는 단계 및 상기 누락된 인텐트 파라미터들이 모두 수집될 때까지 상기 적어도 하나의 추가 음성 입력으로부터 상기 필수 인텐트 파라미터들 중 적어도 하나를 추출하는 단계를 더 포함할 수 있다. 상기 인텐트 파라미터들 중 적어도 하나는 다음: 수치, 단어, 구문, 사운드 및 이미지 중 적어도 하나를 포함할 수 있다. 상기 인텐트 파라미터들 중 적어도 하나는 미리 결정된 값들의 리스트로부터 선택될 수 있다.
하나의 예시에서, 상기 방법은 누락된 인텐트 파라미터들의 수집을 자동화하기 위하여 개발자 플랫폼에 의해, 개발자로 하여금 상기 자연 음성 다이얼로그 시스템의 다이얼로그 에이전트를 제작할 수 있도록 하는 단계를 더 포함할 수 있으며, 상기 다이얼로그 에이전트는 개발자 프로필과 연관되어있다. 상기 방법은, 상기 개발자로 하여금 상기 다이얼로그 에이전트를 제작하고 그리고 다음: 상기 다이얼로그 시스템 인텐트, 적어도 하나의 인텐트 파라미터, 및 상기 인텐트 파라미터들에 대한 하나 이상의 프롬프트들 중 하나 이상을 제공할 수 있도록, 상기 개발자 플랫폼에 의해, 그래픽 인터페이스를 제공하는 단계를 더 포함할 수 있다. 상기 방법은 상기 개발자 플랫폼에 의해, 상기 개발자로 하여금 상기 인텐트 파라미터들에 대한 다이얼로그 시스템 엔티티 또는 데이터 타입을 지정할 수 있도록 하는 단계 및 상기 개발자 플랫폼에 의해, 상기 개발자로 하여금 상기 인텐트 파라미터들 각각에 대한 값 타입을 지정할 수 있도록 하는 단계를 더 포함할 수 있다. 상기 액션 명령어는 서버 또는 사용자 디바이스로 하여금 상기 액션 명령어 및 하나 이상의 필수 인텐트 파라미터에 기초하여 미리 결정된 액션을 구현하게 하도록 구성될 수 있다. 액션 명령어는 Application Programming Interface(API) 서비스를 유발하도록 구성된 API 특정 응답을 포함할 수 있다. 상기 방법은 상기 사용자가 상기 액션 명령어를 확인 또는 명확하게 하는 것을 허용하는 확인 메시지를 제공하는 단계를 더 포함할 수 있으며, 상기 확인 메시지는 하나 이상의 필수 인텐트 파라미터들을 열거한다.
본 게시에 따른 다른 예시에서, 적어도 하나의 프로세서 및 프로세서-실행 가능 코드들을 저장하는 메모리를 포함하는 자연 음성 다이얼로그 시스템이 있다. 상기 프로세서는 상기 프로세서-실행 가능 코드들을 실행시 동작들을 구현하도록 구성될 수 있으며, 상기 동작들은: 적어도 하나의 미리 결정된 인텐트 키워드에 기초하여 상기 음성 입력과 연관된 다이얼로그 시스템 인텐트를 식별하는 동작, 상기 다이얼로그 시스템은 인텐트는 필수 인텐트 파라미터들을 가지며, 상기 다이얼로그 시스템의 모든 필수 인텐트 파라미터들에 대한 데이터가 사용 가능한지 여부를 결정하는 동작, 상기 결정에 기초하여, 상기 다이얼로그 시스템 인텐트와 연관된 파라미터 수집 다이얼로그를 선택적으로 개시하는 동작, 상기 파라미터 수집 다이얼로그는 상기 다이얼로그 시스템 인텐트에는 사용 가능하지 않는 상기 필수 파라미터들에 대한 데이터를 수집하도록 동작 가능하며, 및 상기 다이얼로그 시스템 인텐트 및 하나 이상의 필수 파라미터들에 기초하여, 액션 명령어를 생성하는 동작이다.
하나의 예시에서, 상기 적어도 하나의 프로세서는 상기 음성 입력이 모든 누락된 인텐트 파라미터들을 포함한다는 상기 결정에 기초하여 상기 파라미터 수집 다이얼로그를 개시하지 않고 상기 음성 입력으로부터 상기 모든 누락된 인텐트 파라미터들을 회수하도록 더 구성될 수 있다. 상기 적어도 하나의 프로세서는 상기 파라미터 수집 다이얼로그에 대한 적어도 하나의 미리 결정된 프롬프트를 생성하도록 더 구성될 수 있다. 상기 적어도 하나의 프로세서는 상기 프로세서-실행 가능 코드들의 실행시 동작들을 구현하도록 더 구성될 수 있으며, 상기 동작들은: 상기 적어도 하나의 미리 결정된 프롬프트에 응답하여 상기 사용자의 적어도 하나의 추가 음성 입력을 수신하는 동작, 및 상기 누락된 인텐트 파라미터들이 모두 수집될 때까지 상기 적어도 하나의 추가 음성 입력으로부터 상기 필수 인텐트 파라미터들 중 적어도 하나를 회수하는 동작이다.
하나의 예시에서, 상기 적어도 하나의 프로세서는 상기 프로세서-실행 가능 코드들의 실행시 다음의 동작들을 구현하도록 구성될 수 있으며, 상기 동작들은: 상기 필수 인텐트 파라미터들의 수집을 자동화하기 위하여 개발자 플랫폼에 의해, 개발자로 하여금 상기 자연 음성 다이얼로그 시스템을 위한 다이얼로그 에이전트를 제작할 수 있도록 하는 동작이며, 상기 다이얼로그 에이전트는 개발자 프로필과 연관되어있다. 상기 적어도 하나의 프로세서는 상기 프로세서-실행 가능 코드들의 실행시 다음의 동작들을 구현하도록 구성될 수 있으며, 상기 동작들은: 상기 개발자 플랫폼에 의해, 그래픽 인터페이스를 제공하는 동작이며, 이는: 상기 개발자로 하여금 상기 다이얼로그 에이전트를 제작할 수 있도록 하고; 그리고 상기 다이얼로그 시스템 인텐트, 적어도 하나의 인턴트 파라미터, 및 상기 인텐트 파라미터들 각각에 대한 상기 파라미터 수집 다이얼로그에 대한 하나 이상의 프롬프트들 중 적어도 하나를 제공하고; 상기 개발자 플랫폼에 의해, 상기 개발자로 하여금 상기 인텐트 파라미터들에 대한 다이얼로그 시스템 엔티티 또는 데이터 타입을 지정할 수 있도록 하고; 그리고 상기 개발자 플랫폼에 의해, 상기 개발자로 하여금 상기 인텐트 파라미터들 각각에 대한 값 타입을 지정할 수 있도록 한다.
본 게시에 따른 다른 예시에서, 그 위에 저장된 명령어들을 갖는 비일시적 프로세서-판독 가능 매체가 있으며, 상기 명령어들은 하나 이상의 프로세서들에 의해 실행시, 상기 하나 이상의 프로세서들로 하여금 자연 음성 다이얼로그 시스템을 위한 방법을 구현하게 하며, 상기 방법은: 적어도 하나의 미리 결정된 인텐트 키워드에 기초하여 상기 음성 입력과 연관된 다이얼로그 시스템 인텐트를 식별하는 단계, 상기 다이얼로그 시스템은 인텐트는 필수 인텐트 파라미터들을 가지며; 상기 다이얼로그 시스템의 모든 필수 인텐트 파라미터들에 대한 데이터가 사용 가능한지 여부를 결정하는 단계; 상기 결정에 기초하여, 상기 다이얼로그 시스템 인텐트와 연관된 파라미터 수집 다이얼로그를 선택적으로 개시하는 단계, 상기 파라미터 수집 다이얼로그는 상기 다이얼로그 시스템 인텐트에는 사용 가능하지 않는 상기 필수 파라미터들에 대한 데이터를 수집하도록 동작 가능하며; 및 상기 다이얼로그 시스템 인텐트 및 하나 이상의 필수 파라미터들에 기초하여, 액션 명령어를 생성하는 단계를 포함한다.
이 섹션은 청구된 발명의 필수적 구성들 또는 키(key) 구성들을 식별하도록 의도된 것이 아니며, 청구된 발명의 범위를 결정함에 있어 도움으로 사용되도록 의도된 것이 아니다. 본 명세서에서 기술된 발명의 하나 이상의 예시들에 대한 세부 사항들은 첨부된 도면들 및 이하의 설명에서 기술된다. 발명의 다른 잠재적인 구성들, 양태들 및 장점들은 상세한 설명, 도면들 및 청구항들로부터 명백해질 것이다.
실시예들은 첨부된 도면들의 예시로써 도시되고 도면들에 제한되지 않으며, 동일한 참조들은 유사한 요소들을 표시한다.
도 1은 본 발명의 일부 실시예들에 따른, 다이얼로그 시스템 인터페이스들용 커스텀 다이얼로그 시스템 엔진들을 제작하기 위한 시스템들 및 방법들이 구현될 수 있는 환경을 도시한다.
도 2는 예시적인 실시예에 따른, 플랫폼을 사용하여 커스텀 다이얼로그 시스템 엔진들을 제작하고 상기 플랫폼을 동작시키기 위한 방법을 나타내는(illustrate) 프로세스 흐름도이다.
도 3은 본 게시의 예시적인 실시예에 따른, 다이얼로그 시스템 엔진의 하이-레벨 아키텍처를 도시한다.
도 4는 본 게시의 예시적인 실시예에 따른, 새로운 다이얼로그 시스템 엔티티를 제작하기 위한 플랫폼 인터페이스의 GUI(Graphical User Interface)를 도시한다.
도 5는 본 게시의 예시적인 실시예에 따른, 새로운 다이얼로그 시스템 인텐트를 제작하기 위한 플랫폼 인터페이스의 GUI를 도시한다.
도 6은 본 게시의 예시적인 실시예에 따른, 다이얼로그 시스템에 의해 요청들을 프로세싱하기 위한 로그들을 제공하기 위한 플랫폼 인터페이스의 GUI를 도시한다.
도 7은 본 게시의 예시적인 실시예에 따른, 인텐트 파라미터들을 수집하기 위한 방법을 도시하는 프로세스 흐름도이다.
도 8은 본 게시의 예시적인 실시예에 따른, 파라미터 수집 다이얼로그에 의해 인텐트 파라미터들을 수집하기 위한 다이얼로그 에이전트를 제작하기 위한 플랫폼 인터페이스의 예시적인 GUI를 도시한다.
도 9는 본 게시의 예시적인 실시예에 따른, 다이얼로그 에이전트의 프롬프트들을 정의하기 위한 플랫폼 인터페이스의 예시적인 GUI를 도시한다.
도 10은 여기에 기술된 방법들을 구현하기에 적합한 예시적인 컴퓨팅 디바이스를 나타내는 하이-레벨 블록도이다.
본 게시의 예시적인 양태들은 지능형 인간-기계 인터랙션을 유지하도록 구성된 자연어 다이얼로그 시스템(간략화를 위해 "다이얼로그 시스템들"로 또한 지칭됨)에 일반적으로 관한 것이다. 다이얼로그 시스템들은 사용자로들부터 음성 입력들을 수신하고, 음성 입력들을 텍스트 입력들로 변환하고, 그리고 기계-학습, 통계, 휴리스틱 또는 다른 적합한 알고리즘들을 사용하여 텍스트 입력들을 프로세싱할 수 있다. 프로세싱 결과는 사용자에 대한 응답 메시지 또는 클라이언트 디바이스 또는 서버에 의해 수행된 액션을 포함할 수 있다. 예시적 액션들은 이메일들 전송, 예약들 하기, 알림들 또는 리마인더들 세팅, 호텔들 예약, 일기 예보 확인, 교통 안내 등을 포함할 수 있다.
인간-기계 인터랙션은 다이얼로그 시스템 및, 특히 다이얼로그 컨텍스트들, 에 의해 취해질 사용자 입력들과 액션들 사이의 매핑들, 방식들, 또는 규칙들을 포함할 수 있는 다이얼로그 시스템 인텐트들에 기초할 수 있다. 다이얼로그 시스템 인텐트들은 사용자 입력들에서 미리 결정된 키워드들 또는 구문들을 검출함으로써 인간-기계 인터랙션의 과정에서 다이얼로그 시스템들에 의해 자동으로 식별될 수 있다. 예를 들어, 사용자가 다이얼로그 시스템에 일정 도시의 호텔을 예약하도록 요청할 때 인텐트가 식별될 수 있다. 다른 예시에서, 사용자가 다이얼로그 시스템에 특정한 수신인에게 텍스트 메시지 또는 이메일을 전송하도록 요청할 때 인텐트가 식별될 수 있다. 다른 예시에서, 사용자가 다이얼로그 시스템에 피자를 레스토랑에서 주문하도록 요청할 때 인텐트가 식별될 수 있다.
미리 결정된 다이얼로그 시스템 인텐트들을 프로세싱하는 것은 넓은 범위의 인텐트 파라미터들을 수집할 것을 요청할 수 있다. 예를 들어, 인텐트가 텍스트 메시지를 수령인에게 보내는 액션을 요청할 때, 이 인텐트를 실행하기 위해 필요하고 충분한, 인텐트 파라미터들은 텍스트 메시지의 콘텐츠와 수령인의 이름을 포함할 수 있다. 호텔을 전자적으로 예약하기 위해 제공되는 인텐트의 예시를 위해, 필수 파라미터들은 도착 도시, 객실 타입, 도착 날짜, 출발 날짜 및 선택적으로 호텔 등급, 호텔 이름, 호텔 서비스들 등과 같은 다른 파라미터들을 포함할 수 있다. 다수의 인텐트들을 정의하고 그들을 다이얼로그 컨텍스트를 통해 링크하기 보다는, 본 명세서에 게시된 예시들은 다이얼로그 시스템들에서 사용하기 위한 다이얼로그 에이전트들을 제공하며, 이로써 각각의 다이얼로그 에이전트는 단일 다이얼로그 시스템 인텐트 및 다이얼로그 시스템 인텐트의 하나 이상의 인텐트 파라미터들과 연관될 수 있다.
특정한 다이얼로그 에이전트가 활성화될 때, 파라미터 수집 다이얼로그는 사용자 음성 입력들에서 다이얼로그 시스템 인텐트가 감지되면 개시될 수 있다. 파라미터 수집 다이얼로그는 이미 사용자에 의해 제공되었었거나 다른 소스들에서 사용될 수 있는 인텐트 파라미터들을 검출할 수 있다. 일정 인텐트 파라미터들이 누락되었다고 결정되면, 파라미터 수집 다이얼로그는 사용자에게 추가 음성 입력들을 제공할 것을 촉구하기 위해 사용자에게 프롬프트 메시지들을 제공할 수 있다. 프롬프트 메시지들은 미리 정의되거나 필요에 따라 제작될 수 있으며, 누락된 필수 파라미터들 및 일부 경우들에서 추가적인 선택적 파라미터들을 제공하기 위해 사용자를 가이드하도록 선택될 수 있다. 다이얼로그 시스템은 사용자의 하나 이상의 추가 음성 입력들로부터 인텐트 파라미터들을 회수할 수 있다.
일부 예시들에서, 일부 파라미터들은 미리-저장된 데이터로부터 획득될 수 있다. 예를 들어, "내가 있는 곳에서 집까지 나를 태워다 줄 택시 서비스 호출"이라고 사용자가 말하면, 사용자의 집 주소가 메모리에서 획득될 수 있다. 특정한 인텐트를 위해 필요한 모든 파라미터들 중 적어도 최소한의 마라미터들이 수집되거나 확인되었을 때, 파라미터 수집은 완료되고 다이얼로그 시스템이 인텐트에 기초하여 액션 명령어를 생성할 수 있다. 액션 명령어는 상기 인텐트 및 사용자 음성 입력들로부터 수집되거나 다른 곳에서 획득된 일부 필수 및 선택적 인텐트 파라미터들에 기초할 수 있다. 다이얼로그 시스템, 클라이언트 디바이스, 또는 서버는 그 후 사용자에게 다이얼로그 응답을 제공하거나 일정 액션을 수행하기 위해 액션 명령을 실행할 수 있다.
예를 들어, 사용자가 "Palo Alto에서 나를 위한 호텔을 예약해줘"라고 발언할 때, 다이얼로그 시스템은 다이얼로그 시스템의 인텐트가 "호텔 예약"임을 식별하고 대응하는 파라미터 수집 다이얼로그를 시작할 수 있다. 먼저, 다이얼로그 시스템은 필수 파라미터들 중 일부가 이미 제공되었었거나 (즉, 도시가 Palo Alto 임) 또는 다른 소스들로부터 사용 가능하다는 것을 결정할 수 있다. 다이얼로그 시스템은 도착 날짜 및 체류 기간과 같은 "호텔 예약" 인텐트의 다른 필수 파라미터들이 여전히 누락되었음을 더 결정할 수 있다. 다이얼로그 시스템은 사용자에게 "언제 도착 하시겠습니까?" 및 “며칠밤을 머무르시겠습니까?”와 같은 프롬프트들을 사용하여 음성 입력을 더 제공하도록 사용자를 촉구할 수 있다. 사용자가 대답들을 제공할 때, 다이얼로그 시스템은 상기 입력들에서 인텐트 파라미터들을 회수하고 모든 누락된 필수 인텐트 파라미터들이 수집될 때까지 프롬프트들을 계속 제공할 수 있다. 또한, 다이얼로그 시스템은 예를 들어, "당신은 내가 다음주 월요일부터 2일 동안 Palo Alto에 있는 호텔을 예약하길 원합니다. 맞습니까?”와 같은 요약 출력을 제공함으로써 필수 파라미터들이 수집되었는지 확인하도록 사용자에게 요청할 수 있다. 사용자가 긍정적으로 대답하면, 다이얼로그 시스템은 하나 이상의 수집된 파라미터들을 포함한 전자 호텔 예약 주문을 생성하여 적절한 웹 서비스로 보낼 수 있다. 그렇지 않은 경우, 다이얼로그 시스템은 사용자에게 변경되거나 추가되어야 할 것을 요청할 수 있다.
본 명세서에 게시된 예시들은 소프트웨어 개발자들로 하여금 커스텀 다이얼로그 시스템 엔진들 및 다이얼로그 에이전트들을 제작할 수 있도록 하는 개발자 플랫폼에 또한 관련된 것이며, 상술된 인텐트 파라미터들을 수집하기 위한 다이얼로그 에이전트들을 포함한다. 전형적으로, 다이얼로그 시스템 엔진들은 커스텀 다이얼로그 시스템 인터페이스들과 협력하는 백엔드 서비스들을 포함한다. 다이얼로그 시스템 인터페이스들은 다양한 소프트웨어 애플리케이션들, 모바일 애플리케이션들, 미들웨어 애플리케이션들, 펌웨어 애플리케이션들, 웹사이트들 등의 적어도 일부로 구현될 수 있다. 달리 말해, 다이얼로그 시스템 인터페이스들은 적어도 사용자 입력을 취득하고 다이얼로그 시스템 출력들을 사용자들에게 전달하도록 구성된 컴퓨터-인간 인터페이스들을 제공할 수 있다.
다이얼로그 시스템 엔진들은 사용자 입력들을 프로세싱하고 대응하는 응답들(또는 명령들)을 생성하여 다이얼로그 시스템 인터페이스들을 지원할 수 있다. 따라서, 다이얼로그 시스템 엔진과 다이얼로그 시스템 인터페이스는, 서로 인터랙팅할 때, 다이얼로그 시스템을 형성할 수 있다. 일정 예시들에서, 사용자 디바이스에서 작동하거나 사용자 디바이스로부터 액세스되는 다이얼로그 시스템 인터페이스는 "프론트엔드" 사용자 인터페이스로 지칭될 수 있는 반면에, 이 다이얼로그 시스템 인터페이스의 동작을 지원하는, 다이얼로그 시스템 엔진은 "백엔드" 서비스로 지칭될 수 있다. 일부 예시들에서, 인터페이스 및 엔진은 네트워크 연결을 통해 둘 모두와 통신하는 클라이언트-서버 모델을 포함할 수 있다. 다른 예시들에서, 다이얼로그 시스템 엔진 및 다이얼로그 시스템 인터페이스는 서버에 네트워크 연결을 요청하지 않고, 단일 디바이스 상에서 동작할 수 있다.
개발자 플랫폼은, 본 출원 게시의 예시들에 따르면, 소프트웨어 개발자로 하여금 프론트엔드 다이얼로그 시스템 인터페이스들을 지원할 수 있는 커스텀 다이얼로그 시스템 엔진들을 제작할 수 있도록 허용한다. 예를 들어, 소프트웨어 개발자가 추가 구성으로써 다이얼로그 시스템 기능을 모바일 애플리케이션에 통합하길 원하는 경우, 개발자는 플랫폼을 사용하여 커스텀 다이얼로그 시스템 엔진을 제작하여 배포하고 커스텀 다이얼로그 시스템 엔진을 모바일 애플리케이션과 링크할 수 있다. 모바일 애플리케이션은 다이얼로그 시스템 인터페이스만 포함할 수 있다. 이 예시에서, 사용자는 모바일 애플리케이션과 인터랙팅 함으로써 다이얼로그 시스템 인터페이스를 활성화할 수 있다. 사용자는 음성 입력들 또는 텍스트 입력들의 형태로 다이얼로그 시스템 인터페이스에 질의할 수 있다. 다이얼로그 시스템 인터페이스는, 사용자 질의를 수신하면, 추가 사전 프로세싱을 하거나 또는 추가 사전 프로세싱 없이, 개발자 플랫폼을 사용하여 이전에 제작된, 링크된 커스텀 다이얼로그 시스템 엔진에 상기 질의를 전송할 수 있다. 커스텀 다이얼로그 시스템 엔진은 수신된 사용자 질의를 프로세싱 및 해석하고 미리 결정된 규칙들 및 세팅들에 기초하여 질의에 대한 응답을 생성할 수 있다. 상기 응답은 사용자에게 더 많은 시각적 또는 오디오 프리젠테이션을 제공하기 위해 그 후 다이얼로그 시스템 인터페이스로 전달될 수 있다. 대안적으로, 응답이 액션 명령어(명령)을 포함하는 경우, 액션 명령어는 실행될 수 있거나 또는 실행을 위해 서버, 웹 서비스, 또는 클라이언트 디바이스로 보내질 수 있다.
다이얼로그 시스템 인터페이스들은 퍼스널 컴퓨터 또는 스마트폰과 같은, 사용자 디바이스에 의해, 또는 서버 또는 컴퓨팅 클라우드 리소스에서 원격으로, 실행될 수 있는 광범위한 소프트웨어 애플리케이션들에 의해 작동되며 및/또는 광범위한 소프트웨어 애플리케이션들에 통합될 수 있고, 이로써 다이얼로그 시스템들은 웹사이트 또는 웹 서비스의 일부가 된다. 언급한 바와 같이, 다이얼로그 시스템 엔진들은 인터페이스와 동일한 사용자 디바이스, 인터페이스가 구현된 디바이스와 통신하는 컴패니언 디바이스(예를 들어, Bluetooth 연결을 통해 통신하는 스마트 시계 및 모바일 폰과 같은), 또는 서버에서 구현될 수 있어 그들의 기능들은 인터넷, 모바일 데이터 네트워크들, 또는 임의의 다른 통신들 네트워크들을 통해 다이얼로그 시스템 인터페이스들에 액세스할 수 있다.
도 1은 본 출원 게시의 예시들을 실행하기에 적합할 수 있는 예시적인 시스템 환경(100)의 하이-레벨 블록도를 도시한다. 특히, 도 1은 커스텀 다이얼로그 시스템 엔진들을 제작하고 유지하기 위한 플랫폼(110)을 도시한다. 도시된 바와 같이, 플랫폼(110)은 커스텀 다이얼로그 시스템 엔진들을 제작하기 위한 플랫폼 인터페이스(112) 및 커스텀 다이얼로그 시스템 엔진을(120)을 유지하고 작동시키기 위한 백엔드 서비스(114)를 포함한다. 본 게시의 일부 양태들에서, 플랫폼(110)은 개발자 플랫폼을 포함한다.
플랫폼 인터페이스(112)는 웹 페이지에 내장되고 네트워크를 통해 개발자들에 의해 액세스 가능한 GUI(Graphical User Interface)를 포함할 수 있다. 본 게시의 일부 다른 양태들에서, 플랫폼 인터페이스(112)는 소프트웨어 애플리케이션으로써 구현될 수 있으며, 상기 애플리케이션은 다운로드 가능한 소프트웨어 애플리케이션 또는 예를 들어 미들웨어와 같은 임의의 다른 소프트웨어, 또는 컴퓨터 또는 스마트폰과 같은 전자 디바이스에서 작동하거나 전자 디바이스로부터 액세스 가능한 펌웨어를 포함한다. 도 1에 도시된 예시에서, 플랫폼 인터페이스(112)는 웹 액세스 가능 GUI (이하에서보다 상세하게 기술됨)로써 수행된다. 단순화를 위해, 본 게시는 플랫폼 인터페이스(112)가 인터넷을 통해 액세스 가능한 서버 기반 솔루션인 양태들만을 제공한다. 그러나, 플랫폼 인터페이스(112)는 이러한 구현에 제한되지 않으며 다양한 GUI 툴들을 통해 하나 이상의 커스텀 다이얼로그 시스템 엔진들(120) 또는 다이얼로그 에이전트들의 제작을 허용할 수 있다는 것을 이해해야 한다.
여전히 도 1을 참조하여, 백엔드 서비스(114)는 예를 들어, 플랫폼 인터페이스(112)의 도움에 의해 또는 플랫폼 인터페이스(112)의 도움으로 제작되는 커스텀 다이얼로그 시스템 엔진들(120)을 유지 및 작동시키는 것을 담당할 수 있다. 백엔드 서비스(114)는 그들의 다이얼로그 시스템 인터페이스들이 플랫폼(110)의 백엔드 서비스(114)에 의해 유지되는 커스텀 다이얼로그 시스템 엔진(120)과 인터랙팅 할 수 있게 함으로써 커스텀 다이얼로그 시스템들에 기능을 제공하는 웹 서비스로써 동작할 수 있다.
전술한 바와 같이, 다이얼로그 시스템 인터페이스(130)는 클라이언트 측(140) 상에 제공될 수 있다. 다이얼로그 시스템 인터페이스(130)는 사용자로 하여금 질의하고 다이얼로그 시스템 엔진들(120)에 의해 생성된 질의들에 대한 응답을 수신할 수 있게 하는 GUI일 수 있으며, 질의는 그 후 대응하는 다이얼로그 시스템 엔진들(120)에 의한 프로세싱을 위해 백엔드 서비스(114)에 전달된다. 다이얼로그 시스템 인터페이스(130)는 독립형 소프트웨어 애플리케이션으로써 구현될 수 있거나 다른 소프트웨어 애플리케이션, 웹 서비스, 웹사이트 등과 통합될 수 있다. 클라이언트-서버 모델은 기술(describe)의 목적들로만 나타낸 것임을 이해해야 한다. 본 명세서에 게시된 시스템은 클라이언트-서버 시스템일 필요는 없으며, 일정 예시들에서는 다이얼로그 시스템 인터페이스(130) 및 다이얼로그 시스템 엔진(120)은 동일한(예를 들어, 사용자) 디바이스 상에 있을 수 있다.
클라이언트 측(140)은 사용자 디바이스, 클라이언트 디바이스, 터미널, 포털, 사용자 장비, 컴퓨팅 디바이스(예를 들어, 랩탑 컴퓨터, 태블릿 컴퓨터, 데스크톱 컴퓨터, 워크스테이션, 퍼스널 컴퓨터 및 스마트폰), 개인용 정보 단말기, 게임 콘솔, 리모컨, 멀티미디어 시스템, 스마트 텔레비전 디바이스, 셋톱 박스, 인포테인먼트 시스템, 차량 내 컴퓨팅 디바이스, 정보 키오스크, 로봇 등을 포함할 수 있다. 이러한 예시들에서, 하나 이상의 다이얼로그 시스템 인터페이스들(130)은 소프트웨어, 미들웨어 또는 펌웨어로써 구현될 수 있다.
추가적인 예시들에서, 클라이언트 측(140)은 서버, 웹 호스팅 서비스, 웹 서비스, 웹사이트, 클라우드 서비스 등과 같은 네트워크화된 또는 온라인 솔루션을 지칭할 수 있다. 예를 들어, 다이얼로그 시스템 인터페이스(130)는 최종 사용자들이 질의들을 하고 그에 대한 응답들을 수신할 수 있게 하는 하나 이상의 웹 페이지들 상에 제공된 위젯 또는 GUI를 포함할 수 있다. 이 옵션은 개발자가 예를 들어, 향상된 고객 서비스를 제공하기 위해 다이얼로그 시스템을 웹 사이트에 통합하길 원하는 경우에 적합하다.
도 1에 도시된 바와 같이, 다이얼로그 시스템 인터페이스들(130)과 대응하는 커스텀 다이얼로그 시스템 엔진들(120) 사이의 인터랙션들은 통신들 네트워크(150)를 통해 발생한다. 통신들 네트워크(150)는 다음 중 하나 이상을 포함할 수 있다: 인터넷, 인트라넷, 모바일 데이터 네트워크, 근거리 통신망, 광역 통신망, IEEE 802.11 기반 네트워크, 개인 네트워크 (예를 들어, Bluetooth, Zigbee), 적외선 등.
도 1은 다이얼로그 시스템 응답들의 일부로써 정보를 커스텀 다이얼로그 시스템 엔진들(120) 또는 다이얼로그 시스템 인터페이스들(130)에 제공하거나 일정 액션들 또는 동작들을 수행할 수 있는 다양한 제3 당사자 웹 리소스들/서비스들(160)을 또한 도시한다. 예를 들어, 웹 리소스들/서비스들(160)은 이메일 서비스들, 날씨 서비스들, 네비게이션 서비스들, 호텔 예약 서비스들, 택시 예약 서비스들, 온라인 쇼핑 서비스들, 전자상거래 서비스들, 예약 서비스들, 리마인더 서비스들 등을 제공할 수 있다. 따라서, 사용자가 “오늘의 날씨는 어떻습니까?"라고 말하면, 대응하는 정보는 하나 이상의 제3 당사자 웹 리소스들/서비스들(160)로부터 다이얼로그 시스템 엔진(120)에 의해 자동으로 획득될 수 있고 사용자에게 전달될 다이얼로그 시스템 응답에 통합될 수 있다. 사용자가 "오늘 밤에 John을 내 파티에 초대하기 위해 그에게 이메일을 보내주세요"라고 말하면, 다이얼로그 시스템 엔진(120)은 제3 당사자 웹 리소스들/서비스들(160)로 하여금 이메일을 제작하고 그 이메일을 수신인과 연관된 이메일 주소로 보내게 할 수 있다.
커스텀 다이얼로그 시스템 엔진들(120)을 제작하고 동작시키는 예시적인 프로세스가 이제 도 1 및 다른 도면들을 참조하여 기술될 것이다. 특히, 플랫폼 인터페이스(112)는 개발자들로 하여금 하나 이상의 "다이얼로그 시스템 요소들"을 제작 및 커스터마이징 할 수 있게 하는 다수의 툴들을 갖는 하나 이상의 GUI들을 제공할 수 있으며, 그것은 커스텀 다이얼로그 시스템 엔진에 대한 기초로써 역할한다.
다양한 예시들에 따르면, 다이얼로그 시스템 요소들은 적어도 "엔티티들" 과 "인텐트들"을 포함한다. 각각의 엔티티는 실질적으로 동일하거나 유사한 특성들을 갖는 다수의 객체들을 포함할 수 있다. 달리 말해, 엔티티들은 클래스의 객체들을 정의하는 키워드들의 리스트들을 포함할 수 있다. 하나의 예시에서, 엔티티는 키워드 및 키워드에 대응하는 유의어들의 집합을 포함할 수 있다. 다른 예시에서, 엔티티는 키워드 및 상기 키워드에 대응하는 정의들의 집합을 포함할 수 있다. 또 다른 예시에서, 엔티티는 리스트(예를 들어, city들의 리스트, 이름들의 리스트, 제목들의 리스트, 브랜드들의 리스트, 거리 이름들의 리스트)를 포함할 수 있다. 일부 예시들에서, 엔티티들은 특정한 다이얼로그 에이전트에서 사용될 수 있으며 에이전트 기능의 결과로써 리턴될 것으로 예상되는 파라미터 값들에 따를 수 있다.
본 게시의 일부 예시들에서, 개발자는 -실행 가능한 데이터에 필요한 것들만을 위해- 다이얼로그 에이전트에 언급된 모든 개념에 대한 엔티티들을 제작할 필요는 없다. 예를 들어, 세 가지 타입의 엔티티들이 있을 수 있다. 첫 번째 타입은 일반적인 날짜 참조들, 시간 참조들, 번호 참조들 및 도시 참조들과 같은 시스템 엔티티들을 포함할 수 있다. 두 번째 타입은 개발자 엔티티들, 예를 들어, 참조 값에 매핑된 유의어들의 임의의 유니크(unique)그룹, 을 포함할 수 있으므로 개발자는 "veg" 및 “veggie” 가 유의어들인 "vegetarian"의 참조 값을 입력하여 식품 타입 엔티티를 제작할 수 있다. 세 번째 타입은 사용자 엔티티들, 예를 들어 사용자 선호도들에 특정적인 재생 리스트 엔티티와 같이 특정 최종 사용자에 대해 정의된 엔티티들을 포함할 수 있다. 또한 이러한 엔티티들 각각은 매핑(참조 값들 포함), 열거 타입(참조 값들 없음) 또는 복합형(별칭들을 가진 다른 엔티티들을 내포 및 객체 타입 값들을 리턴)일 수 있다.
일부 예시들에서, 엔티티와 연관된 객체들의 리스트는 자동으로 확장될 수 있다. 예를 들어, 기계-학습 알고리즘은 엔티티와 연관될 하나 이상의 새로운 객체들을 제안하기 위해 사용될 수 있다. 기계 학습 알고리즘은 큰 텍스트들 및/또는 어휘들을 사용하여 트레이닝될 수 있다. 제한이 아닌 예시로써, 커스텀 다이얼로그 시스템 엔진(120)의 개발자는 예를 들어, New York 및 Los Angeles와 같은 값들로 엔티티@city를 정의할 수 있다. 커스텀 다이얼로그 시스템 엔진의 사용자가 "Washington, DC"라는 단어들을 발언하거나 입력하면, 기계 학습 알고리즘이 "Washington DC"가 엔티티@city에 리스트된 객체들과 관련된다고 결정할 수 있기 때문에, 그 후 엔티티@city는 New York, Los Angeles 및 Washington DC로 자동 확장될 수 있다. 일부 예시들에서, 사용자는 제안된 객체가 하나 이상의 엔티티들과 관련되어 있는지를 확인하도록 요청받을 수 있다.
추가 예시들에서, 엔티티는 다른 엔티티들의 리스트를 포함할 수 있다. 예를 들어 개발자는 엔티티들의 리스트(@make, @model)로 엔티티@car를 정의할 수 있으며, 값들 @make 및 @model은 @make 및 @model이 연관될 수 있는 임의의 객체들로 세팅된다. 예를 들어, 엔티티@car는 {make:"Honda"; model:"Accord"}, {make:"Ford"; model:"Fiesta"} 등과 같은 복합 객체들을 포함할 수 있다.
또한, 각 인텐트는 사용자 요청과 다이얼로그 시스템 응답 간의 특정한 관계를 설명하는 다이얼로그 시스템 인터랙션 방식 또는 규칙을 포함할 수 있다. 달리 말해, 인텐트는 사용자가 발화하는 것과 소프트웨어 애플리케이션에 의해 취해질 액션 간의 매핑을 표현할 수 있다. 예를 들어, 인텐트는 엔티티들에 대한 하나 이상의 참조들을 명시적으로 포함하는 패턴으로 결정될 수 있다. 예시 패턴은 "@city:city 의 날씨가 어떻습니까"를 포함할 수 있으며, "@city:city"는 엔티티@city 및 엔티티@city 내의 파라미터 city에 대한 참조이다. 추가 예시들에서, 인텐트를 결정하기 위해, "엔티티들"에 대한 명시적 참조들을 내포하는 패턴들을 제공하는 대신, 개발자들은 인텐트들 및 엔티티들을 나타내기 위한 예시 요청들(구문들)을 제공할 수 있다. 이러한 예시들에서, 플랫폼(110)은 기계 학습 기법들을 사용하여, 예시 요청들에 어떤 "엔티티들" 및 "인텐트들"이 암시되어 있는지를 자동으로 결정한다.
예시 입력들에 기초하여, 플랫폼(110)은 대응하는 액션들을 제작할 수 있다. 각 액션은 이름 (엔티티) 및 하나 이상의 파라미터들을 포함할 수 있다. 예를 들어, "Weather forecast for Los Angeles"와 같은 요청이 입력될 수 있다. 기계 학습 기법은 "weather"라는 이름과 파라미터 이름들: 데이터 타입 @city의 city로 액션을 결정할 수 있다.
따라서, 개발자들은 복수의 엔티티들 및 복수의 인텐트들을 생성하기 위해 플랫폼 인터페이스(112)를 사용할 수 있으며, 둘 모두 특정한 애플리케이션 또는 산업에 특정적이다. 이러한 복수의 엔티티들 및 인텐트들은 다이얼로그 시스템 엔진들(120)을 형성할 수 있고 다이얼로그 시스템 엔진들(120)로 하여금 광범위한 최종 사용자 입력들에 응답하여 일정 액션들을 수행하거나 일정 출력들을 생성할 수 있게 한다. 일정 예시들에서, 인텐트는 일반 구조를 포함할 수 있으며, 상기 구조는: 인텐트 이름(사용자 참조 전용), 패턴들 및/또는 예시 요청들의 리스트, 액션 이름, 액션과 연관된 파라미터들, 및 액션과 연관된 이행을 포함한다. 이행은 텍스트(화면 상에 하이라이트된 텍스트), 또는 웹 서비스에 대한 호출, 데이터베이스에 대한 요청 등을 포함할 수 있다. 일부 예시들에서, 개발자들은 액션(파라미터들 및 액션의 이름)을 수신하고 커스텀 이행을 클라이언트 측(140)으로 통합할 수 있다. 예를 들어, 다이얼로그 시스템 인터페이스가 작동중인 디바이스의 일부 동작을 수행하기 위해 및 그와 같은 것들을 위해, 커스텀 이행은 정보(예를 들어, 예보, 교통 정보, 및 네비게이션)를 회수하기 위한 웹 사이트 또는 데이터베이스에 대한 요청을 포함할 수 있다.
일부 예시들에서, 다이얼로그 시스템 요소들은 하나 이상의 컨텍스트들을 포함할 수 있다. 컨텍스트들은 특정한 최종 사용자의 세션 동안 인텐트들에 대한 레이블들, 키들, 또는 단서들을 내포하는 하나 이상의 파라미터들을 포함할 수 있다. 컨텍스트들은 레이블들의 사전-조건들 및 부울 표현을 포함할 수 있다. 인텐트는 입력 컨텍스트에 기초하여 트리거될 수 있다. 예를 들어, 특정 사전-조건이 충족되거나 사전-조건들의 부울 표현이 참일 때 인텐트가 트리거될 수 있다. 출력 컨텍스트들은 사용자의 요청에 기초하여 인텐트가 실행될 때 최종 사용자 세션으로 세팅된다. 다양한 예시들에서, 출력 컨텍스트들은 여러 사용자 요청들을 포함하여 사용자 세션 내에서 일정 수명을 할당 받을 수 있다. 일부 예시들에서, 출력 컨텍스트의 수명은 사용자의 세션 동안 요청된 수로써 측정될 수 있다. 사용자 세션 내에는, 다음 사용자 요청에 대한 응답으로 인텐트 실행 전에 존재하는 현재 컨텍스트 상태 및 인텐트 실행 후 세팅된 실행-후 컨텍스트 상태가 있다. 실행-후 컨텍스트 상태는 사용자 요청 및 인텐트 실행 결과들에 기초하여 하나 이상의 새로 추가된 컨텍스트들을 포함할 수 있다. 일부 오래된 컨텍스트들은 인텐트 실행 결과들에 기초하여 또는 그것들의 만료로 인해 실행-후 상태에서 삭제될 수 있다.
컨텍스트들은 사용자 요청의 현재 컨텍스트를 표현하는 문자열일 수 있다. 이는 사용자의 선호도들이나 지리적 위치 또는 대화의 토픽에 따라 다른 의미를 가지거나 막연할 수 있는 구문들을 구별하는데 도움이 된다. 예를 들어, 사용자가 뮤직 플레이어 애플리케이션을 듣고 자신의 관심을 캐치(catch)하는 밴드를 찾으면, 그는 "I want to hear more of this"와 같은 것을 발화할 수 있다. 개발자는 요청과 함께 컨텍스트에 밴드의 이름을 포함할 수 있어, 다이얼로그 에이전트는 보다 효과적으로 그것을 프로세싱 할 수 있다. 다른 예시에서, 개발자는 스마트 홈 디바이스들의 제조업체이며, 가전 제품들을 원격으로 제어하는 모바일 애플리케이션을 가지고 있다. 사용자가 "Turn on the front door light"라고 발화한 다음 "Turn it off"라고 발화하면, 모바일 애플리케이션은 두 번째 구문이 동일한 컨텍스트에 있기 때문에 여전히 light를 참조하고 있다고 이해할 것이다. 지금 이후로, 사용자가 "Turn on the coffee machine"이라고 발화한 다음 "Turn it off"라고 발화하면 새로운 컨텍스트로 인해, 이전과 상이한 액션이 수행된다. 컨텍스트들은 사용자 세션들(예를 들어, API 호출들에 패스된(pass) 세션 식별자)과 또한 묶일 수 있다. 사용자 표현이 인텐트에 일치되면, 인텐트는 그 후 미래에 이 표현에 의해 공유되도록 출력 컨텍스트를 세팅할 수 있다.
추가 예시들에서, 하나 이상의 속성들 또는 파라미터들은 각각의 컨텍스트에 할당될 수 있다. 속성들은 인텐트 실행 중에 식별되어 인텐트와 연관된 액션들에서 사용될 수 있다. 컨텍스트들에서 회수된 값들은 액션에 대한 파라미터들을 형성할 수 있다. 속성들은 인텐트 실행 후, 세팅된 출력 컨텍스들 집합에 추가로 배치될 수 있다.
도 2는 플랫폼(110)을 사용하여 커스텀 다이얼로그 시스템 엔진들을 제작하고 여기에 게시된 하나의 양태에 따라 플랫폼(110)을 동작시키는 것에 대한 방법(200)을 도시하는 프로세스 흐름도이다. 방법(200)은 하드웨어(예를 들어, 의사 결정 논리(logic), 전용 논리, 프로그램 가능한 논리, 및 마이크로코드), 소프트웨어(범용 컴퓨터 시스템 또는 전용 기계 상에서 작동되는 소프트웨어와 같은), 또는 둘 모두의 조합을 포함할 수 있는 프로세싱 논리에 의해 수행될 수 있다. 하나의 예시에서, 프로세싱 논리는 도 1에 도시된 컴퓨팅 디바이스 또는 플랫폼(110)의 하나 이상의 컴포넌트들을 지칭한다. 방법(200)의 단계들은 도 2에 기술되고 도시된 것과 상이한 순서로 구현될 수 있다. 또한, 방법(200)은 여기에 도시되지 않은 추가적인 단계들을 가질 수 있지만, 이는 본 게시로부터 당업자에게 명백할 수 있다. 방법(200)은 이하에 기술되고 도 2에 도시된 것보다 적은 단계들을 또한 가질 수 있다.
방법(200)은 개발자로 하여금 플랫폼(110)에 등록하고 적어도 하나의 프로세서 및 프로세서-실행 가능 코드들을 저장하는 메모리를 포함하는 제1 서버에 의해 개발자 프로필을 제작할 수 있도록 동작(202)에서 시작될 수 있다. 이러한 목적으로, 개발자는 플랫폼 인터페이스(112)와 인터랙팅 한다. 개발자 프로필은 개발자의 커스텀 다이얼로그 시스템 엔진(120) 및 클라이언트 측들(140) 상에 배치된 하나 이상의 다이얼로그 시스템 인터페이스들(130)을 가상으로 링킹(연관)할 수 있다. 링킹은 API(Application Programming Interface) 코드들, 인터랙션 규칙들, 목적 주소들, 등을 규정하는 것을 포함할 수 있다. 일정 예시들에서 개발자 프로필은 다수의 개발자들에 의해 액세스될 수 있다. 동작(202)에서, 이 방법은 개발자가 하나 이상의 다이얼로그 시스템들을 제작할 것을 허용할 수 있다. 각 다이얼로그 시스템은 액세스 식별자(ID)와 연관될 수 있다. 액세스 ID는 인증을 통해 클라이언트 측(140)으로부터 다이얼로그 시스템에 액세스하는데 사용될 수 있다. 다양한 예시들에서, 액세스 ID는 토큰들, 디지털 키들 등을 포함할 수 있다.
동작(204)에서, 플랫폼(110)은 개발자로부터 하나 이상의 다이얼로그 시스템 엔티티들을 수신하여 메모리 또는 데이터베이스에 이들을 저장할 수 있다. 일부 예시들에서, 엔티티들은 수신되지 않지만 플랫폼 인터페이스(112)의 웹 도구들을 사용하여 개발자에 의해 제작된다. 다이얼로그 시스템 엔티티들은 키워드 및 키워드에 대한 적어도 하나의 유의어, 키워드 및 키워드의 적어도 하나의 정의, 한 클래스의 객체들을 정의하는 키워드들의 리스트 등을 포함할 수 있다. 다이얼로그 시스템 엔티티들은 하나 이상의 파라미터들과 또한 연관되거나 하나 이상의 파라미터들을 또한 포함할 수 있다.
동작(206)에서, 플랫폼(110)은 개발자로부터 하나 이상의 다이얼로그 시스템 인텐트들을 수신하여 메모리 또는 데이터베이스에 이들을 저장할 수 있다. 일부 예시들에서, 다이얼로그 시스템 인텐트들은 수신되지 않지만, 플랫폼 인터페이스(112)의 툴들을 사용하여 개발자에 의해 제작된다. 상술한 바와 같이, 인텐트들은 다이얼로그 시스템 요소들(다이얼로그 시스템 엔진으로 하여금 특정 필요들에 맞춘 응답들을 생성할 수 있도록 하는 커스텀 논리)을 형성한다. 다이얼로그 시스템 인텐트들은 다이얼로그 시스템 인터랙션 방식, 사용자 요청 및 다이얼로그 시스템 응답 간의 관계를 정의하는 규칙, 특정한 액션과 하나 이상의 다이얼로그 시스템 엔티티들간 관계의 규칙 등을 포함할 수 있다. 일부 예시들에서, 개발자는 하나 이상의 다이얼로그 시스템 인텐트들에서 사용될 하나 이상의 다이얼로그 시스템 엔티티들을 명시적으로 정의할 수 있다. 추가적으로 또는 대안적으로, 개발자는 예시 요청(들)(구문들)을 제공할 수 있다. 예시 요청들에 기초하여, 플랫폼(110)은 하나 이상의 다이얼로그 시스템 엔티티들을 제안할 수 있다. 엔티티들을 제안하기 위해, 플랫폼(110)은 동작(204)에서 개발자에 의해 제공된 엔티티들의 리스트에서 적절한 엔티티들을 먼저 검색할 수 있다. 일부 예시들에서, 플랫폼(110)은 기계-학습 기법을 통해 새로운 다이얼로그 시스템 엔티티들을 제안할 수 있다. 개발자는 제안된 새로운 다이얼로그 시스템 엔티티들의 파라미터들을 승인, 수정, 또는 변경할 수 있게 된다. 개발자는 인텐트들의 하나 이상의 파라미터들을 또한 제공할 수 있다.
엔티티의 정의는 고정된 것이 아님을 유의해야 한다. 추가 동작들 동안, 플랫폼(110)은 개발자에 의해 정의된 엔티티들을 동적으로 재정의할 수 있다. 엔티티들은 사용자 프로필, 선호도들, 사용자 요청들 등에 기초하여 재정의(증대)될 수 있다. 재정의된 엔티티들은 추가 프로세싱에서 플랫폼(110)에 의해 사용된다.
동작(208)에서, 플랫폼(110)은 하나 이상의 다이얼로그 시스템 인텐트들을 하나 이상의 다이얼로그 시스템 액션들과 연관시켜 하나 이상의 커스텀 다이얼로그 시스템 엔진들(120) 또는 다이얼로그 에이전트들을 제작할 수 있다. 커스텀 다이얼로그 시스템 엔진(120)은 개발자의 하나 이상의 다이얼로그 시스템 인터페이스들(130)과 연관된다. 각각의 액션은 다이얼로그 시스템 엔티티들과 연관된 별칭들의 집합과 이름에 의해 정의된다.
동작들(202-208)은 커스텀 다이얼로그 시스템 엔진들(120)(다이얼로그 에이전트들)에 대한 셋업 프로세스를 나타내는 반면, 동작들(210-218)은 커스텀 다이얼로그 시스템 엔진(120)을 동작시키는 프로세스를 나타낸다. 특히, 커스텀 다이얼로그 시스템 엔진(120)의 모든 다이얼로그 시스템 요소들이 제작되면, 이들은 백엔드 서비스로써 유지되고, 연관된 다이얼로그 시스템 인터페이스들(130) 중 임의의 것으로 하여금 미리 결정된 세팅들에 따라 다이얼로그 시스템의 모든 기능을 사용자에게 제공할 수 있게 한다.
구체적으로, 동작(210)에서, 플랫폼(110)은 미확인 다이얼로그 시스템 인터페이스(130)로부터 사용자 요청을 수신할 수 있다. 사용자 요청은 음성(voice)(음성(speech)) 입력 또는 텍스트 입력일 수 있다. 일부 예시들에서, 다이얼로그 시스템 인터페이스(130)는, 예를 들어, 발화된 단어를 인식하고 음성 입력을 텍스트 입력으로 변환함으로써, 사용자 입력을 사전-프로세싱 할 수 있다. 다른 예시들에서, 사전프로세싱은 오디오 향상, 노이즈 제거, 암호화/해독 등을 포함할 수 있다. 그러나, 다른 예시들에선, 다이얼로그 시스템 인터페이스(130)에 의해 사전프로세싱은 수행되지 않는다.
동작(212)에서, 플랫폼(110)은 사용자 요청을 프로세싱하고 다이얼로그 시스템 인터페이스(130)를 식별한다. 식별 프로세스는 사용자 요청으로부터 다이얼로그 시스템 인터페이스(130)의 식별자를 회수하는 것에 기초할 수 있다. 예를 들어, 사용자 요청은 다이얼로그 시스템 인터페이스(130)로부터 플랫폼(110)으로 사용자 요청이 보내질 때 식별자에 의해 수반될 수 있다.
동작(214)에서, 동작(212)에서의 식별 결과에 기초하여, 플랫폼(110)은 식별된 다이얼로그 시스템 인터페이스(130)와 연관된 커스텀 다이얼로그 시스템 엔진(120)을 활성화시킨다. 동일한 동작(214)에서, 플랫폼(110)은 동작(212)에서의 식별 결과에 기초하여 하나 이상의 다이얼로그 시스템 요소들(즉, 하나 이상의 엔티티들 및 하나 이상의 인텐트들)을 회수하거나 식별할 수 있다. 동작(214)에서, 플랫폼(110)은 사용자 요청 및 특정한 요청 세션과 연관된 컨텍스트들(하나 이상의 레이블들, 키들, 단서들, 및 이들의 논리적 표현)을 식별할 수 있다.
동작(216)에서, 커스텀 다이얼로그 시스템 엔진(120)은 단계(214)에서 회수된 다이얼로그 시스템 요소들(즉, 하나 이상의 엔티티들 및 하나 이상의 인텐트들)을 사용하여 사용자 요청을 프로세싱한다. 인텐트들은 컨텍스트들에 기초하여 트리거될 수 있다. 컨텍스트들은 사전-정의되고, 사용자 요청에 기초하여 결정되며, 그리고 하나 이상의 인텐트들이 트리거된 후에 추가로 변경될 수 있다. 컨텍스트들은 특정한 사용자 및 특정한 세션에 대해 특정될 수 있다. 다이얼로그 시스템 프로세싱의 일부 예시들은 도 3을 참조하여 더 기술된다.
동작(218)에서, 커스텀 다이얼로그 시스템 엔진(120)은 응답을 생성하여 그것을 커스텀 다이얼로그 시스템 엔진(120)과 연관된 다이얼로그 시스템 인터페이스(130)에 보낼 수 있다. 응답은 특정한 데이터 예를 들어, 텍스트 메시지 및/또는 하나 이상의 액션들, 을 포함할 수 있다. 각 액션은 액션의 이름 및 하나 이상의 인텐트들과 하나 이상의 엔티티들을 사용하여 식별된 파라미터들의 집합을 포함할 수 있다. 다이얼로그 시스템 인터페이스(130)는 그 후 미리 결정된 세팅들에 따라 텍스트 메시지를 최종 사용자에게 디스플레이하거나 재생할 수 있다. 다이얼로그 시스템 인터페이스(130)는 액션과 연관된 커스텀 이행에 따라 및 액션 이름 및 파라미터들의 집합을 사용하여, 하나 이상의 액션들에 기초하여 하나 이상의 동작들을 또한 수행할 수 있다. 일부 예시들에서, 커스텀 다이얼로그 시스템 엔진(120)은 커스텀 이행을 프로세싱할 수 있고 그 결과들을 다이얼로그 시스템 인터페이스(130)에 보낼 수 있다. 커스텀 다이얼로그 시스템 엔진(120)의 응답은 클라이언트 디바이스, 웹 리소스/서비스(160), 플랫폼(110), 또는 원격 서버에 의해 실행될 수 있는 액션 명령어를 또한 지칭할 수 있다.
도 3은, 예시에 따른, 다이얼로그 시스템 엔진(120)의 하이-레벨 아키텍처(300)를 도시한다. 다이얼로그 시스템 엔진(120)의 모든 모듈 또는 연관된 아키텍처는 하드웨어 컴포넌트들, 소프트웨어 컴포넌트들, 또는 이들의 조합을 포함한다는 것을 유의해야 한다. 다이얼로그 시스템 엔진(120)은 사용자 디바이스 또는 서버에 내장되거나 설치될 수 있거나, 또는 클라우드 컴퓨팅 모듈 및/또는 배포된 컴퓨팅 모듈로써 제시될 수 있다.
도 3에 도시된 예시에서, 다이얼로그 시스템 엔진(120)은 음성-기반 사용자 입력들을 수신하여 파라미터 벡터들의 시퀀스로 프로세싱하도록 구성된 Automatic Speech Recognizer(ASR)(310)를 포함한다. ASR(310)은 파라미터 벡터들의 시퀀스를 인식된 입력(즉, 하나 이상의 단어들, 구무들, 또는 문장들을 갖는 텍스트 입력)으로 더 변환한다. ASR(310)은 패턴-기반 음성 인식기, 자유-구술 인식기, 주소록 기반 인식기, 동적으로 제작된 인식기 등과 같은 하나 이상의 음성 인식기들을 포함한다.
다이얼로그 시스템 엔진(120)은 발화된 언어 입력을 이해하기 위한 Natural Language Processing(NLP) 모듈(320)을 더 포함한다. 구체적으로, NLP 모듈(320)은 인식된 입력을 분해 및 파싱(parse)하여 발언들을 생산할 수 있으며, 상기 발언들은 그 후, 예를 들어, 형태학적 분석, 품사 태깅(tagging), 얕은 파싱, 신경 네트워크들, 기계 학습 분류기, 패턴-마이닝된 분류기 등을 활용하여 분석된다. NLP 모듈(320)은 그 후 인식된 입력 또는 그 부분들을 의미 표현들에 매핑할 수 있다.
다이얼로그 시스템 엔진(120)은 다이얼로그 관리자(330)를 더 포함하며, 상기 다이얼로그 관리자는 모든 컴포넌트들의 활동을 조정하고, 다이얼로그 흐름들을 제어하며, 외부 애플리케이션들, 디바이스들, 서비스들, 또는 리소스들과 통신한다. 다이얼로그 관리자(330)는 많은 역할들을 수행할 수 있으며, 상기 역할들은 게시 컨텍스트에 기초한 시스템 액션 예측, 게시 분석, 지식 데이터베이스 쿼리를 포함한다. 일부 예시들에서, 다이얼로그 관리자(330)는 특정 작업 도메인들에 관한 지식을 가질 수 있는 하나 이상의 작업 관리자들(도시되지 않음)과 컨택(contact)할 수 있다. 일부 실시예들에서, 다이얼로그 관리자(330)는 다양한 컴퓨팅, 논리, 또는 저장 리소스들(340)과 통신할 수 있으며, 그것들은 예를 들어, 콘텐츠 저장소, 규칙들 데이터베이스, 추천 데이터베이스, 푸시 알림 데이터베이스, 전자 주소록, 이메일 또는 텍스트 에이전트들, 다이얼로그 이력 데이터베이스, 이질적인 지식 데이터베이스, 맵 데이터베이스, 관심 지점들 데이터베이스, 지리적 위치 결정기, 시계, 무선 네트워크 검출기, 검색 엔진들, 소셜 네트워킹 웹사이트들, 블로깅 웹사이트들, 뉴스 피드 서비스들, 등을 포함할 수 있다. 일부 예시들에서, 계산 또는 저장 리소스들(340)은 상술한 하나 이상의 웹 리소스들/서비스들(160)을 포함한다.
동작 동안(예를 들어, 다이얼로그 세션 내에서), 다이얼로그 관리자(330)는 입력 및 출력 컨텍스트들에 따라 다이얼로그 흐름들을 제어할 수 있다. 입력 컨텍스트들은 인텐트 실행을 위한 사전-조건들 중 일부를 표현한다. 특정한 인텐트는 일정 입력 컨텍스트(들)이 사용자 요청에 존재하거나 이전 인텐트들의 실행 결과인 경우에만 트리거될 것이다. 동일한 컨텍스트에 기초하여 여러 개의 인텐트들이 트리거될 수 있는 경우, 어떤 인텐트가 실행될 지에 대한 결정은 컨텍스트의 에이지(age), 선호도들에 특정된 다른 파라미터들, 및 상기 컨텍스트와 관련된 인텐트의 가중치에 기초할 수 있다. 최신 컨텍스트는 더 높은 우선 순위를 가질 수 있다. 인텐트의 일치 및 실행시 출력 컨텍스트들이 세팅될 수 있다.
다양한 예시들에서, 다이얼로그 관리자(330)는 사용자 요청을 다이얼로그 시스템에 패스할 수 있다. 다이얼로그 시스템들은 도 1 및 도 2에 기술된 바와 같이 개발자에 의해 디자인된 커스텀 다이얼로그 시스템들을 포함할 수 있다. 동시에, 일부 예시들에서, 사용자 요청들은 작업 도메인들에 병렬로 보내질 수 있다. 작업 도메인들은 요청을 프로세싱하고 대답을 제공할 수 있는 사전-구축된 다이얼로그 시스템들이다. 일부 예시들에서, 커스텀 다이얼로그 시스템들이 사용자 요청에 대답을 제공하지 못하면, 그 후 다이얼로그 관리자(330)는 작업 도메인들로부터 수신된 대답을 진행한다.
다이얼로그 관리자(330)는 인식된 입력들에 응답하여 출력들을 생성하기 위해 다수의 이질적인 접근법들을 사용할 수 있다. 일부 접근법들은 통계 분석, 기계-학습 알고리즘들(예를 들어, 신경 네트워크들), 휴리스틱 분석(heuristic analysis) 등의 사용을 포함한다. 다이얼로그 관리자(330)는 다이얼로그 시스템 엔진(120)의 중심 컴포넌트들 중 하나이다. 다이얼로그 관리자(330)의 주요 역할은 관찰된 증거들 및 NLP 결과들(예를 들어, 다이얼로그 행동, 사용자 목표 및 담화 이력)로부터 추론된 다이얼로그 상태들에 기초하여 정확한 시스템 액션들을 선택하는 것이다. 추가로, 사용자 입력이 노이즈들 또는 예기치 않은 입력들로 인한 ASR 및 NLP 에러들을 가질 때, 다이얼로그 관리자(330)는 에러들을 핸들링(handle)할 수 있다.
다이얼로그 시스템 엔진(120)은 다이얼로그 관리자(330)에 의해 선택된 액션을 사용자에게 제공하기에 적합한 형태로 또는 컴퓨터-구현 가능 또는 프로세서-구현 가능 명령어(예를 들어, API 코드)의 형태로 변환하기 위한 출력 렌더러(renderer)(350)를 더 포함할 수 있다. 예를 들어, 출력 렌더러(350)는 텍스트 음성 변환 엔진을 사용할 수 있거나 다이얼로그 관리자(330)의 출력에 대응하는 오디오 메시지를 생성하기 위해 사전-기록된 오디오 데이터베이스와 컨택할 수 있다. 일정 예시들에서, 출력 렌더러(350)는 사용자 디바이스의 디스플레이 화면 상에 추가로 디스플레이 하기 위한 텍스트 메시지, 이미지 또는 비디오 메시지로써 다이얼로그 관리자(330)의 출력을 제시하거나 제시하도록 할 수 있다.
다른 예시들에서, 출력 렌더러(350)는 클라이언트 측(140) 상의 다이얼로그 시스템 인터페이스(130)에 선택된 액션(액션의 이름 및 파라미터들의 집합)을 제공한다. 개발자들은 선택된 액션을 프로세싱하도록 및 웹 서비스에 요청 보내기, 데이터베이스 동작들, 텍스트 메시지 디스플레이, 사용자 디바이스 상에서 오디오 또는 비디오 재생, 텍스트 생성, 텍스트 음성 변환 시스템 등을 통해 이를 프로세싱하는 것과 같은 하나 이상의 필요한 동작들을 수행하도록 다이얼로그 시스템 인터페이스(130)를 구성할 수 있다. 일부 예시들에서, 개발자들은 액션과 연관된 이행에 따라 액션을 프로세싱하고 그 결과를 다이얼로그 시스템 인터페이스(130)에 제공하도록 커스텀 다이얼로그 시스템 엔진(120)을 구성할 수 있다.
도 4는 상술한 바와 같이, 새로운 다이얼로그 시스템 엔티티를 제작하기 위한 플랫폼 인터페이스(112)의 예시적인 GUI(400)를 도시한다. 개발자가 커스텀 다이얼로그 시스템 엔진(120)을 제작하기를 원할 때, 그는 GUI(400)와 같은, 플랫폼 인터페이스(112)의 웹 툴들을 사용하여 다이얼로그 시스템 엔티티들 및 인텐트들을 정의할 수 있다. GUI(400)를 사용하여, 개발자는 키워드에 대한 참조 값(402)을 입력할 수 있고 제공된 참조 값에 대한 유의어(404)를 GUI(400)에 의해 제공된 대응하는 필드들에 입력할 수 있다. 다이얼로그 시스템 엔티티들은 키워드(또는 참조 값) 및 상기 키워드에 대한 유의어, 키워드 및 상기 키워드의 정의들, 한 클래스의 객체들을 정의하는 키워드들의 리스트 등을 포함할 수 있다. 키워드들 또는 참조 값들은 그들의 유의어들 및/또는 정의들과 함께 다이얼로그 시스템 엔티티를 구성한다.
일부 예시들에서, 각 엔티티는 제목을 가질 수 있다. 예를 들어, 하나의 엔티티는 "city"라는 제목일 수 있으며 Arlington, Boston, Chicago 등과 같은 도시들의 리스트를 내포할 수 있다. 다른 예시들에서, 엔티티는 키워드로 제목이 붙을 수 있으며 이 키워드의 유의어들 또는 정의들을 포함할 수 있다. 하나의 예시에서, "music"이라는 엔티티는 노래, 가수, 노래하기, 음악가 등의 용어들을 내포할 수 있다. 다른 예시에서, "artist"라는 엔티티는 음악 밴드들, 음악 앙상블들, 또는 음악 아티스트들의 리스트를 포함할 수 있다. 다른 예시에서, "Beatles"라는 엔티티는 "The Beatles", "Beatles", "Fab Four", "Liverpool Legends", "John Lennon" 등과 같은 가능한 유의어들의 리스트를 포함할 수 있다. 또 다른 예시에서, 다양한 아티스트 이름들, 아티스트 이름 유의어들, 음악 밴드 이름들 등을 포함할 수 있는, "Artist"라는 엔티티가 있을 수 있다.
도 5는 상술한 바와 같이, 새로운 다이얼로그 시스템 인텐트를 제작하기 위한 플랫폼 인터페이스(112)의 예시적인 GUI(500)를 도시한다. 다이얼로그 시스템 인텐트는 사용자 요청과 다이얼로그 시스템 응답 사이의 관계를 정의할 수 있으며 특정한 액션과 엔티티 간의 관계에 기초한 규칙과 연관될 수 있다. 일반적으로, 각 인텐트는 다음과 같은 컴퓨터 판독 가능 프로시저 "[Action] @[Entity]" 또는 "[Action] @[Entities]"로 표현될 수 있다. GUI(500)를 사용하여, 개발자는 인텐트들 및 엔티티들을 나타내기 위해 사용자 표현(502)(예를 들어, "Weather @city")를 추가할 수 있다. 사용자 표현(502)에 기초하여, 플랫폼(110)은 기계 학습 기법들을 사용하여, 예시 요청들에 어떤 엔티티들 및 인텐트들이 암시 되는지를 자동으로 결정하고, 대응하는 규칙을 제작한다. 예를 들어, 개발자는 "Los Angeles의 날씨 예보"와 같은 예시 요청들을 간단하게 제공할 수 있다. 플랫폼(110)은 "Los Angeles"를 기존 엔티티들(시스템 또는 사용자 정의된)과 일치시키고 대응하는 "[Action] @ [Entity]" 규칙들을 자동으로 생성할 수 있다. 추가적으로 또는 대안적으로, 개발자는 "@say.geo-city:geo-city-us의 날씨가 어떻습니까?"와 같이, 하나 이상의 엔티티들이 명시적으로 제시되는 예시 요청을 제공할 수 있다. 도 5의 예시에서, 액션(506)과 연관된 파라미터들 및 "날씨"는 "geo-city-us" 및 "geo-city"이다. 개발자는 액션(506)을 더 수정할 수 있고 액션(506)에 대한 이행(508)을 더 제공할 수 있다.
제작된 규칙은 특정한 동작이 상기 엔티티 또는 여러 엔티티들에 대해 클라이언트 측(140)(또는 서버, 웹 서비스 등)에 의해 수행될 것임을 의미한다. 예를 들어, 하나의 인텐트는 "$geo-city-us에 대한 예보를 조사하기" 로 표현될 수 있다. 이 예시에서, 인텐트는 다이얼로그 시스템 엔진(120)이 Los Angeles의 예보를 찾도록 명령한다.
일부 예시들에서, GUI(500)는 기계 학습을 위한 제어(510)를 제공한다. 기계 학습 알고리즘을 토글링(toggle) 하는 것은 하드/리지드 (hard/rigid)한 일치들에서 광범위한 퍼지(fuzzy) 또는 기계 학습 일치들에 이르기까지 일치의 퍼지니스(fuzziness)를 핸들링 하는 것을 허용할 수 있다.
일부 예시들에서, 플랫폼 인터페이스(112)는 특정한 다이얼로그 시스템 최종 사용자 또는 최종 사용자들의 그룹과 연관된 인텐트들을 프로세싱하고 요청들의 로그를 제공하기 위한 GUI를 제공할 수 있다. 도 6은 특정한 사용자의 요청들의 로그를 제공하기 위한 예시적인 GUI(600)를 도시한다.
다양한 예시들에서, 플랫폼 인터페이스(112)는 개발자들에게 커스텀 다이얼로그 시스템 성능의 통계적 분석을 위한 툴들을 제공할 수 있다. 결과 통계들은 세션들의 수, 요청들의 수, 분류된 요청들의 수(적어도 하나의 인텐트가 트리거된), 분류되지 않은 요청들의 수(인텐트가 트리거되지 않은), 정밀도, 리콜, 요청들에 대한 F-점수들, 및 그와 같은 것을 포함할 수 있다. 일부 예시들에서, 분류되지 않은 요청들은 기계 학습 클러스터링에 기초하여 그룹들로 나뉜다.
추가 예시에서, 플랫폼 인터페이스(112)는 요청에 대한 새로운 엔티티들, 인텐트들, 액션들 및 이행을 수정 또는 생성하기 위해 개발자 또는 기계 학습 기법에 의해 분류되지 않은 요청들에서 엔티티를 마킹하기 위한 툴들을 제공할 수 있다. 플랫폼 인터페이스(112)는 하나 이상의 커스텀 다이얼로그 시스템들에 의한 요청을 재-분류하기 위한 툴들을 포함할 수 있다.
도 7은 예시에 따른, 인텐트 파라미터들을 수집하고 다이얼로그 시스템을 동작시키는 방법(700)을 도시하는 프로세스 흐름도이다. 방법(700)은 하드웨어(예를 들어, 의사 결정 논리, 전용 논리, 프로그램 가능한 논리, application-specific integrated circuit (ASIC) 및 마이크로코드), 소프트웨어(범용 컴퓨터 시스템 또는 전용 기계 상에서 작동하는 소프트웨어와 같은), 또는 둘 모두의 조합을 포함할 수 있다. 하나의 예시에서, 프로세싱 논리는 플랫폼(110), 백엔드 서비스(114), 커스텀 다이얼로그 시스템 엔진(120), 컴퓨팅 디바이스(1000), 또는 이들의 임의의 조합을 지칭한다. 아래에 열거된 방법(700)의 단계들은 도면에 도시되고 기술된 것과 다른 순서로 구현될 수 있다. 또한, 방법(700)은 본 명세서에 도시되지 않은 추가적인 단계들을 가질 수 있지만, 이는 본 게시로부터 당업자에게 명백할 수 있다. 방법(700)은 또한 이하에서 개략적으로 기술되고 도 7에 도시된 것보다 적은 단계들을 가질 수 있다.
방법(700)은 사용자의 음성 입력을 수신하는 다이얼로그 시스템(예를 들어, 커스텀 다이얼로그 시스템 엔진(120))과 함께 동작(702)에서 시작할 수 있다. 음성 입력은 다이얼로그 시스템 인터페이스(130)를 통해 클라이언트 측(140)에 제공될 수 있다. 음성 입력은 클라이언트 측(140) 또는 다이얼로그 시스템에 의해 프로세싱될 수 있다. 예를 들어, 음성 입력은 인식되어 컴퓨터 판독 가능한 텍스트 입력으로 변환될 수 있다.
동작(704)에서, 다이얼로그 시스템(예를 들어, 커스텀 다이얼로그 시스템 엔진(120))은 음성 입력의 적어도 하나의 미리 결정된 인텐트 키워드에 기초하여 음성 입력과 연관된 다이얼로그 시스템 인텐트를 식별하거나 결정할 수 있다. 달리 말해, 다이얼로그 시스템은 하나 이상의 인텐트 키워드들이 미리 결정된 인텐트들 중 하나를 참조 하는지를 결정하기 위해 음성 입력을 프로세싱할 수 있다. 예를 들어, "나를 위해 피자를 주문해주세요.”라는 음성 입력은 미리 결정된 "피자 주문" 인텐트(플랫폼(110)을 통해 개발자에 의해 미리 제작될 수 있는)를 트리거 또는 검출할 수 있는 "주문" 및 "피자"라는 인텐트 키워드들을 포함한다. 다이얼로그 시스템 인텐트는 인텐트 파라미터들을 수집하기 위해 파라미터 수집 다이얼로그로의 진입 점(entry point)을 표시할 수 있다. 주어진 예시에서, 인텐트 파라미터들은 피자 사이즈, 크러스트의 타입, 토핑들 선택, 소스, 배달 주소, 배달 시간, 공급 업체 등을 포함할 수 있다. 따라서, 인텐트 파라미터들은 파라미터 이름 및 해당 값과 연관될 수 있다. 파라미터 값은 숫자 값, 단어, 구문, 사운드 또는 이미지를 포함할 수 있다. 일부 구현예들에서, 인텐트 파라미터들의 일부 또는 전부는 미리 결정된 값들의 리스트로부터 선택될 수 있다(예를 들어, 하나의 인텐트 파라미터는 미리 결정된 도시 이름들의 리스트로부터 선택될 수 있다).
동작(706)에서, 다이얼로그 시스템은 음성 입력이 이미 누락된 필수 인텐트 파라미터 모두를 포함하고 있는지 여부를 결정할 수 있다. 누락된 필수 인텐트 파라미터들 모두가 동작(702)에서 주어진 음성 입력에 존재한다고 결정되면, 상기 방법은 동작(708)으로 진행할 수 있다. 동작(708)에서, 다이얼로그 시스템은 음성 입력으로부터 누락된 필수 인텐트 파라미터들을 식별하고 수집할 수 있다. 수집된 필수 인텐트 파라미터들은 캐시 또는 메모리에 임시로 저장될 수 있다.
동작(710)에서, 필수 누락된 인텐트 파라미터들 모두가 수집되면, 다이얼로그 시스템은 인텐트 및 인텐트 파라미터들에 기초하여 다이얼로그 시스템과 연관된 액션 명령어를 생성한다. 액션 명령어는 다이얼로그 시스템, 서버, 사용자 디바이스, 또는 다이얼로그 시스템 인터페이스로 하여금 액션 명령어 및 하나 이상의 인텐트 파라미터들에 기초하여 미리 결정된 액션을 구현하도록 구성될 수 있다. 위의 주어진 예시에서, 액션 명령어는 이전에 수집된 인텐트 파라미터들에 기초하여 피자를 주문하기 위해 미리 결정된 웹 서비스(160)에 보내질 수 있는 전자 구매 주문을 지칭할 수 있다. 따라서, 일부 예시들에서, 액션 명령어는 API 서비스를 유발하도록 구성된 API 특정 응답(또는 API 코드)을 포함할 수 있다. 예를 들어, 액션 명령어의 API 코드는 JavaScript Object Notation(JSON) 형태일 수 있다.
일부 예시들에서, 액션 명령어의 생성 이전에, 동작 시스템(710)에서, 다이얼로그 시스템은 응답 메시지를 생성하여 사용자에게 제시할 수 있다. 응답 메시지는 하나 이상의 수집된 인텐트 파라미터들을 반복하고 사용자에게 인텐트 파라미터들이 올바른지 확인하도록 요청할 수 있다. 예를 들어, 다이얼로그 시스템은 다이얼로그 시스템 인터페이스(130)를 통해 전달될 "당신은 큰 마르게리타 피자가 한 시간 안에 집으로 배달되도록 주문하고 싶어합니다. 맞습니까?”와 같은 텍스트 또는 오디오 메시지를 생성할 수 있다. 사용자가 긍정적으로 응답하면, 다이얼로그 시스템은 상술한 바와 같이 액션 명령어를 렌더링하는 것으로 진행할 수 있다. 그렇지 않으면, 다이얼로그 시스템이 사용자에게 요청을 명확히 할 것을 요청하는 하나 이상의 프롬프트들을 제공할 수 있다.
동작(706)에서, 초기 음성 입력(동작(702)에서 획득된)이 누락된 필수 인텐트 파라미터들 모두를 포함하지 않는 것으로 결정되면, 상기 방법은 도 7에 도시된 바와 같이 동작(712)으로 진행할 수 있다. 동작(712)에서, 다이얼로그 시스템은 동작(704)에서 식별된 인텐트와 연관된 미리 결정된 파라미터 수집 다이얼로그를 개시할 수 있다. 미리 결정된 파라미터 수집 다이얼로그는 누락된 필수 인텐트 파라미터들 및, 일부의 예시들에서, 선택적 인텐트 파라미터들, 을 획득하기 위해 다이얼로그 시스템에 의해 요청될 수 있는 다수의 프롬프트 메시지들을 포함할 수 있다. 즉, 동작(712)에서, 다이얼로그 시스템은 사용자에게 하나 이상의 누락된 인텐트 파라미터들을 입력할 것을 촉구하기 위해 사용자에게 하나 이상의 프롬프트들을 사용자에게 제공한다. 예를 들어, 동작(712)에서, 다이얼로그 시스템은 사용자에게 "어떤 피자 크기를 원합니까? - 라지, 미디엄 또는 스몰?" 또는 "당신이 원하는 토핑은 무엇입니까?"를 물을 수 있다.
동작(714)에서, 다이얼로그 시스템은 이전 동작에서 주어진 프롬프트들에 대한 대답들을 포함하는 하나 이상의 추가 음성 입력들을 사용자로부터 수신할 수 있다. 다이얼로그 시스템은 추가적인 음성 입력들로부터 또는 다른 소스들로부터 필수 인텐트 파라미터들을 회수할 수 있다. 동작(716)에서, 다이얼로그 시스템은 모든 필수 인텐트 파라미터들이 사용 가능한지를 결정할 수 있다. 필수 인텐트 파라미터들이 모두 사용 가능하다고 결정되면, 본 방법은 동작(710)으로 진행할 수 있다. 그렇지 않고, 필수 인텐트 파라미터들 모두가 사용 가능하지 않다고 결정되면, 상기 방법은 도 7에 도시된 바와 같이 동작(712)으로 돌아갈 수 있다. 동작들(712, 714, 및 716)은 모든 누락된 필수 인텐트 파라미터들이 수집될 때까지 반복될 수 있다.
상술한 바와 같이, 플랫폼(110)은 개발자들로 하여금 모든 필수 인텐트 파라미터들의 수집을 자동화하는 자연 음성 다이얼로그 시스템의 다이얼로그 에이전트들을 생성 또는 수정할 수 있도록 한다. 각각의 개발자는 모든 개발자의 커스텀 다이얼로그 시스템 엔진들 및 다이얼로그 에이전트들을 저장하는 플랫폼(110)을 갖는 개발자 프로필을 가질 수 있다. 도 8은 예시에 따른, 파라미터 수집 다이얼로그에서 인텐트 파라미터들을 수집하기 위한 다이얼로그 에이전트를 제작하기 위한 플랫폼 인터페이스(112)의 예시적인 GUI(800)를 도시한다.
도 8에 도시된 바와 같이, GUI(800)는 다이얼로그 시스템 인텐트를 제작하도록 하는 액션 가능한 버튼(802)을 포함한다. 예를 들어, 개발자는 호텔들을 전자적으로 예약하기 위해 인텐트를 제작할 수 있고 호텔 예약을 적절하게 예약하는데 필요한 모든 인텐트 파라미터들을 수집하기 위해 이 인텐트에 대한 파라미터 수집 다이얼로그를 제작할 수 있다. 먼저, 개발자는 도 8의 위젯(804)에 의해 도시된 바와 같이 "호텔 예약"과 같은 새로 제작된 인텐트를 명명할 수 있다. 또한, 개발자는 이 인텐트의 활성화를 트리거할 수 있는 하나 이상의 예시 구문들 또는 키워드들을 GUI(800)의 인터페이스를 통해 제공할 수 있다.
이 목적들을 위해, 개발자는 위젯(806)을 통해 예시 구문들이나 키워드들을 제공할 수 있다. "호텔 예약" 인텐트를 위한 일부 예시 구문들 또는 키워드들은 "호텔 예약", "sys.geo-city:city의 호텔 예약" 또는 "@sys.date:date에 @sys.geo-city:city의 호텔 예약"을 포함할 수 있다. 여기서, @sys.geo-city:city와 @sys.date:date는 각각 "city" 및 "date" 엔티티들을 지칭한다. 달리 말해, 일부 예시들에서, 인텐트들을 트리거하는 예시 구문들 또는 키워드들은 하나 이상의 엔티티들과 연관될 수 있다. 버튼(808)을 클릭함으로써, 개발자는 이 인텐트와 연관된 추가적 예시 구문들 또는 키워드들을 추가할 수 있다.
또한, 개발자는 인텐트가 다이얼로그 시스템에 의해 실행될 때, 미리 결정된 액션들 중 하나를 선택하거나 새로운 액션을 제작할 수 있다. 여기서, 위젯(810)은 개발자가 플랫폼 인터페이스(112)의 다른 GUI를 통해 커스터마이징될 수 있는 미리 결정된 또는 새로운 액션 "bookhotel" 중 하나를 선택했음을 보여준다. 또한, 개발자는 사용자와의 다이얼로그 도중 파라미터 수집 다이얼로그가 활성화될 때, 파라미터 수집 다이얼로그에 수집되는 하나 이상의 인텐트 파라미터들을 제공할 수 있다. 인텐트 파라미터들은 "city", "date" 등을 포함할 수 있다. 도 8에 도시된 바와 같이, 인텐트 파라미터들은 GUI 위젯(812)을 통해 제공, 식별 또는 수정된다. 버튼(814)을 클릭함으로써, 개발자는 리스트에 새로운 인텐트 파라미터를 추가할 수 있다. 각각의 인텐트 파라미터는 다수의 특성들을 가질 수 있다. 예를 들어, 개발자는 인텐트 파라미터가 필요적(필수)인지 또는 선택적인지를 지정할 수 있다. 또한, 개발자는 파라미터 이름, 파라미터 데이터 타입, 및 파라미터 값을 제공 또는 수정할 수 있으며 하나 이상의 프롬프트 메시지들을 제공할 수 있다. 다이얼로그 시스템은 파라미터 수집 다이얼로그 중에 모든 누락된 인텐트 파라미터 값들을 얻기 위해 인텐트 파라미터들 각각의 프롬프트 메시지들을 요청할 수 있다(예를 들어, 방법(700)의 동작들(712 및 714)를 참조하여 상술된 바와 같이).
도 9는 예시에 따른, 다이얼로그 에이전트의 프롬프트들을 정의하기 위한 플랫폼 인터페이스(112)의 예시적인 GUI를 도시한다. 도면과 같이, 각 인텐트 파라미터는 파라미터 이름(예를 들어, city), 파라미터 데이터 타입(예를 들어, @sys.geo-city), 파라미터 값(예를 들어, $city) 및 하나 이상의 프롬프트 메시지들(902)과 연관될 수 있다. 여기서, 파라미터 데이터 타입 및 파라미터 값은 다이얼로그 시스템 엔티티를 지칭할 수 있다. 또한, 프롬프트 메시지(902)는 "Where are you going?" 및 "What is the destination?"을 지칭할 수 있다. 개발자는 원하는 만큼 프롬프트들을 제공할 수 있다. 프롬프트들을 선택하여 사용자에게 전달하는 순서는 개발자에 의해 임의적일 수 있거나 미리 결정될 수 있다.
이미 상술한 바와 같이, 일부 파라미터들은 사용자에게 요청되고 사용자로부터 각각의 값들을 수집하는데 필수적일 수 있는 반면에, 일부 다른 파라미터들은 선택적일 수 있다. 예를 들어 'city' 파라미터는 필수적일 수 있지만, 호텔 체인의 이름은 선택적일 수 있다.
도 10은 본 명세서에 기술된 방법들을 구현하기에 적합한 컴퓨팅 디바이스(1000)를 도시하는 하이-레벨 블록도이다. 특히, 컴퓨팅 디바이스(1000)는 개발자들에 의의 다이얼로그 시스템들을 제작 및 수정하기 위해 그리고 다이얼로그 시스템들을 실행하기 위해 사용될 수 있다. 컴퓨팅 디바이스(1000)는 다른 것들 중에서 범용 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 서버, 넷북, 모바일 폰, 스마트폰, 인포테인먼트 시스템(infotainment system), 스마트 텔레비전 디바이스와 같은, 하나 이상의 다양한 타입의 디바이스들을 포함하거나, 디바이스들이거나, 디바이스들의 통합 부분일 수 있다. 일부 예시들에서, 컴퓨팅 디바이스(1000)는 클라이언트 디바이스, 서버, 플랫폼(110) 또는 다이얼로그 시스템의 인스턴스로 간주될 수 있다.
도 10에 도시된 바와 같이, 컴퓨팅 디바이스(1000)는 하나 이상의 프로세서들(1010), 메모리(1020), 하나 이상의 대용량 저장 디바이스들(1030), 하나 이상의 입력 디바이스들(1050), 하나 이상의 출력 디바이스들 및 위에 열거된 요소들을 동작 가능하도록 상호연결하기 위한 통신 바스(communication bas)(1090)를 포함한다. 프로세서(1010)는 컴퓨팅 디바이스(1000) 에서의 실행을 위한 기능 및/또는 프로세싱 명령어들을 구현하도록 구성될 수 있다. 예를 들어, 프로세서들(1010)은 메모리(1020)에 저장된 명령어들 및/또는 저장 디바이스들(1030)에 저장된 명령어들을 프로세싱할 수 있다. 이러한 명령어들은 동작중인 운영체제 또는 소프트웨어 애플리케이션의 컴포넌트들을 포함할 수 있다.
메모리(1020)는, 하나의 예시에 따르면, 동작 동안 컴퓨팅 디바이스(1000) 내에 정보를 저장하도록 구성된다. 메모리(1020)은, 일부 예시들에서, 비일시적 컴퓨터 판독 가능 저장 매체 또는 컴퓨터 판독 가능 저장 디바이스를 지칭할 수 있다. 일부 예시들에서, 메모리(1020)는 일시적인 메모리이며, 이는 메모리(1020)의 주요 목적이 장기간의 저장이 아닐 수 있음을 의미한다. 메모리(1020)는 휘발성 메모리를 또한 지칭할 수 있으며, 이는 메모리(1020)가 전력을 수신하지 않을 때 메모리(1020)가 저장된 콘텐츠를 유지하지 않음을 의미한다. 휘발성 메모리들의 예시들은 random access memories(RAM), dynamic random access memories(DRAM), static random access memories(SRAM), 및 당해 기술분야에 알려진 다른 형태의 휘발성 메모리들을 포함한다. 일부 예시들에서, 메모리(1020)는 프로세서들(1010)에 의한 실행을 위해 프로그램 명령어들을 저장하는데 사용된다. 메모리(1020)는, 하나의 예시에서, 소프트웨어 애플리케이션들에 의해 사용된다. 일반적으로, 소프트웨어 애플리케이션들은 본 명세서에 기술된 바와 같이 인텐트 파라미터들을 수집하고 다이얼로그 시스템을 동작시키는 방법들의 적어도 일부 동작들을 구현하기에 적합한 소프트웨어 애플리케이션들을 지칭한다.
대용량 저장 디바이스들(1030)은 하나 이상의 일시적 또는 비일시적 컴퓨터 판독 가능 저장 매체 및/또는 컴퓨터 판독 가능 저장 디바이스들을 또한 포함할 수 있다. 일부 예시들에서, 대용량 저장 디바이스들(1030)은 메모리(1020)보다 더 많은 양의 정보를 저장하도록 구성될 수 있다. 대용량 저장 디바이스들(1030)은 정보의 장기 저장을 위해 또한 구성될 수 있다. 일부 예시들에서, 대용량 저장 디바이스들(1030)은 비휘발성 저장 요소들을 포함한다. 그러한 비휘발성 저장 요소들의 예시들은 자기 하드 디스크들, 광 디스크들, 고체-상태 디스크들, 플래시 메모리들, electrically programmable memories(EPROM) 또는 전기적으로 소거 및 프로그램 가능한 메모리의 형태들, 및 당해 기술분야에 알려진 다른 형태의 비휘발성 메모리들을 포함한다.
여전히 도 10을 참조하면, 컴퓨팅 디바이스(1000)는 하나 이상의 입력 디바이스들(1050)을 또한 포함할 수 있다. 입력 디바이스들(1050)은 촉각, 오디오, 비디오 또는 생체 인식 채널들을 통해 사용자로부터 입력을 수신하도록 구성될 수 있다. 입력 디바이스들(1050)의 예시들은 키보드, 키패드, 마우스, 트랙볼, 터치 스크린, 터치 패드, 마이크로폰, 비디오 카메라, 이미지 센서, 지문 센서, 또는 사용자 또는 다른 소스로부터의 입력을 검출할 수 있는 임의의 다른 디바이스를 포함할 수 있으며, 그리고 컴퓨팅 디바이스(1000) 또는 그들의 컴포넌트들에 입력을 중계(relay)할 수 있다. 출력 디바이스들(1060)은 시각 또는 청각 채널들을 통해 사용자에게 출력을 제공하도록 구성될 수 있다. 출력 디바이스들(1060)은 비디오 그래픽 어댑터 카드, liquid crystal display (LCD) 모니터, light emitting diode (LED) 모티너, 또는 organic LED와 같은 디스플레이, 사운드 카드, 스피커, 조명 디바이스, 프로젝터 또는 사용자에게 해석될 수 있는 출력을 생성할 수 있는 임의의 다른 디바이스를 포함할 수 있다. 출력 디바이스들(1060)은 터치 스크린, 존재-감지 디스플레이, 또는 당해 기술분야에 알려진 다른 입/력 가능 디스플레이들을 또한 포함할 수 있다.
컴퓨팅 디바이스(1000)는 네트워크 인터페이스(1070)를 또한 포함할 수 있다. 네트워크 인터페이스(1070)는, 예를 들어, 다른 것들 중에서, 인터넷, 인트라넷, 로컬 영역 네트워크, 광역 네트워크, 셀룰러 폰 네트워크들(예를 들어, 모바일 통신들 네트워크를위한 글로벌 시스템, Mobile communications network를 위한, Long-Term Evolution communications network, packet switching communications network, circuit switching communications network), 블루투스 라디오, 및 IEEE 802.11 기반 무선 주파수 네트워크를 포함하는, 하나 이상의 광, 무선, 유선 네트워크들과 같은 하나 이상의 네트워크들을 통해 외부 디바이스들과 통신하기 위해 활용될 수 있다. 네트워크 인터페이스(1070)는 이더넷 카드, 광 송수신기, 라디오 주파수 송수신기, 또는 정보를 송신 및 수신할 수 있는 임의의 다른 유형의 디바이스와 같은 네트워크 인터페이스 카드일 수 있다.
컴퓨팅 디바이스(1000)의 운영 체제는 컴퓨팅 디바이스(1000) 또는 그것의 컴포넌트들 중 하나 이상의 기능들을 제어할 수 있다. 예를 들어, 운영 체제는 소프트웨어 애플리케이션들과 인터랙팅할 수 있고 소프트웨어 애플리케이션들 및 프로세서들(1010), 메모리(1020), 저장 디바이스들(1030), 입력 디바이스들(1050), 출력 디바이스들(1060) 및 네트워크 인터페이스(1070) 사이의 하나 이상의 인터랙션들을 용이하게 할 수 있다. 운영 체제는 소프트웨어 애플리케이션들 또는 그것의 컴포넌트들과 인터랙팅 하거나 그렇지 않으면 소프트웨어 애플리케이션들 또는 그것의 컴포넌트들에 연결될 수 있다. 일부 예시들에서, 소프트웨어 애플리케이션들은 운영 체제에 포함될 수 있다.
다이얼로그 시스템들에서 인텐트 파라미터들을 수집하기 위한 방법들 및 시스템들이 설명되었다. 비록 특정 양태들이 특정 예시들을 참조하여 기술되었지만, 본 출원의 보다 넓은 사상 및 범위를 벗어나지 않고 이 예시들에 대해 다양한 변경 및 수정들이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면들은 제한적이기 보다는 예시적인 것으로 간주되어야 한다.
전술한 상세한 설명은 상세한 설명의 일부를 형성하는 첨부 도면들에 대한 참조들을 포함한다. 이 섹션에서 기술된 접근법들은 청구항들에 대한 선행 기술이 아니며 그리고 이 섹션 내에 포함되어 선행 기술로 인정되지 않는다. 도면들은 본 명세서에 게시된 예시들에 따른 일러스트레이션(illustration)들을 도시한다. 본 명세서에서 "예시들"로 또한 지칭되는, 이 예시들은 당업자로 하여금 본 발명을 실시할 수 있도록 충분히 상세하게 기술된다. 상기 예시들이 결합될 수 있거나, 다른 예시들이 활용될 수 있거나, 청구된 범위를 벗어나지 않으면서 구조적, 논리적 및 동작적 변경들이 이루어질 수 있다. 이하의 상세한 설명은, 따라서, 제한적인 의미로 해석되어서는 안되며, 상기 범위는 첨부된 청구항들 및 그 등가물들에 의해 정의된다.
위에서 제공된 예시들은 첨부 도면들에서 "요소들"로 총칭되는 다양한 블록들, 컴포넌트들, 회로들, 단계들, 동작들, 프로세스들, 알고리즘들 등에 의해 참조된다. 이러한 요소들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 임의의 조합을 사용하여 구현될 수 있다. 이러한 요소들이 하드웨어 또는 소프트웨어로 구현되는지 여부는 전체 시스템 상에 부과된 특정한 애플리케이션 및 디자인 제약 사항들에 따른다.
예를 들어, 요소, 요소의 임의의 부분, 또는 요소들의 임의의 조합은 하나 이상의 프로세서들을 포함하는 "프로세싱 시스템"으로 구현될 수 있다. 프로세서들의 예시들은 microprocessors, microcontrollers, Central Processing Units(CPUs), digital signal processors(DSPs), field programmable gate arrays(FPGAs), programmable logic devices(PLDs), 상태 머신, 게이트 논리, 개별 하드웨어 회로들, 및 본 게시 전체에 걸쳐 기술된 다양한 기능들을 수행하도록 구성된 다른 적합한 하드웨어를 포함한다. 프로세싱 시스템의 하나 이상의 프로세서들은 소프트웨어, 펌웨어, 또는 미들웨어(통칭하여 "소프트웨어"라고 지칭됨)를 실행할 수 있다. "소프트웨어"라는 용어는 소프트웨어, 펌웨어, 미들웨어, 마이크로 코드, 하드웨어 설명 언어 또는 이와 다르게 지칭되거나, 명령어들, 명령어 집합들, 코드, 코드 세그먼트들, 프로그램 코드, 프로그램들, 서브 프로그램들, 소프트웨어 컴포넌트들, 애플리케이션들, 소프트웨어 애플리케이션들, 소프트웨어 패키지들, 루틴들, 서브 루틴들, 객체들, 실행 가능한 것들, 실행 스레드, 절차들, 기능들 등을 의미하는 것으로 폭넓게 해석되어야 한다.
따라서, 하나 이상의 예시들에서, 기술된 기능들은 하드웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 비일시적인 컴퓨터 판독 가능 매체 상에 하나 이상의 명령어들 또는 코드로써 저장되거나 인코딩될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 사용 가능한 매체일 수 있다. 제한이 아닌 예시로써, 그러한 컴퓨터 판독 가능 매체는 랜덤-액세스 메모리, 판독-전용 메모리, electrically erasable programmable random-access memory(EEPROM), 컴팩트 디스크 랜덤-액세스 메모리, 또는 다른 광학 디스크 저장소, 자기 디스크 저장소, 고체 상태 메모리, 또는 임의의 다른 데이터 저장 디바이스들, 전술한 타입의 컴퓨터 판독 가능 매체의 조합들, 또는 임의의 다른 매체를 포함할 수 있으며, 상기 다른 매체는 컴퓨터에 의해 액세스될 수 있는 데이터 구조들 또는 명령어들의 형태로 컴퓨터 실행 가능 코드를 저장하는데 사용될 수 있다.
이 특허 문헌의 목적들을 위해, "또는" 및 "및"이라는 용어들은 다르게 언급되거나 사용의 문맥에 의해 분명하게 다르게 의도되지 않는 한 "및/또는"을 의미한다. "단수(a)"는 다르게 명시되거나 “하나 이상"의 사용이 명백하게 부적절한 경우를 제외하고는 "하나 이상"을 의미한다. 용어들 "포함하다(comprise)", "포함하는(comprising)", "포함하다(include)" 및 "포함하는(including)"은 교환 가능하며 제한하는 것으로 의도되지 않는다. 예를 들어, "포함하는"이라는 용어는 "포함하지만 이에 제한되지 않는”을 의미하는 것으로 해석되어야 한다.
용어들 "자연어 다이얼로그 시스템" 및 "다이얼로그 시스템"은 교환 가능하게 사용될 수 있으며 텍스트, 음성, 그래픽들, 촉각들, 제스처들, 컴퓨터로 생성된 액션들, 및 입력 및 출력 채널 모두에서의 다른 통신 모드들을 사용하여 인간-기계 다이얼로그 인터랙션을 제공하기 위한 컴퓨터로 구현되는 시스템을 의미하는 것으로 해석되어야 하며, 사용자 입력에 대한 응답들은 하나 이상의 다이얼로그 시스템 에이전트들 또는 다이얼로그 시스템 엔진들에 의해 생성되고, 시스템은 정보를 수신, 프로세싱, 관리, 및 전달하기 위한 인터페이스를 제공한다. 용어들 “채팅 정보 시스템”, “발화된 다이얼로그 시스템”, “대화형 에이전트”, “채터 로봇”, “채터봇”, “챗봇”, “채팅 에이전트”, “개인용 정보 단말기”, “automated online assistant" 및 그와 같은 것은 "다이얼로그 시스템"이라는 용어의 범위 내에 있다.
용어들 "클라이언트 디바이스" 및 "사용자 디바이스"는 모바일 디바이스, 셀룰러 폰, 모바일 폰, 사용자 터미널, 스마트폰, 태블릿 컴퓨터, 랩탑 컴퓨터, 데스크탑 컴퓨터, 서버, PDA, 뮤직 플레이어, 멀티미디어 플레이어, 휴대용 컴퓨팅 디바이스, 네비게이션 시스템, 차량용 컴퓨터, 인포테인먼트 시스템, 게임 디바이스, 게임 콘솔, 엔터테인먼트 시스템, 텔레비전 디바이스, 네트워크 디바이스, 모뎀, 라우터 등과 같은, 입력 및 출력 능력들을 갖는 클라이언트 측(140) 상의 임의의 전자 또는 컴퓨팅 디바이스를 의미하는 것으로 해석되어야 한다.
용어 "사용자"는 "클라이언트 디바이스"와 "사용자 디바이스"의 사용자를 의미한다. 용어 "개발자"는 플랫폼(110)을 통해 제작되고 유지될 수 있는 다이얼로그 시스템 엔진들(에이전트들)의 소유자, 소프트웨어 개발자, 또는 엔지니어를 의미하는 것으로 해석되어야 한다.
용어 "다이얼로그 시스템 에이전트" 및 "다이얼로그 시스템 엔진"은 교환 가능하게 사용될 수 있으며, 다이얼로그 시스템 인텐트들 및 다이얼로그 시스템 엔티티들을 포함하여, 다이얼로그 시스템 요소들과 같은 하나 이상의 미리 결정된 규칙들 또는 기준에 기초하여 사용자 입력들을 프로세싱 하기 위한 컴퓨터로 구현 가능한 인터페이스를 의미하는 것으로 해석될 수 있다.
본 명세서에 게시된 기술적 효과들은 복수의 파라미터들에 기초하여 컴퓨터로 구현되는 액션을 생산하기 위해 사용자 요청들을 프로세싱하고 사용자 요청과 연관된 복수의 파라미터들(또는 파라미터 값들)을 수집하여 자연어 다이얼로그 시스템에 대한 개선들을 제공할 수 있다.
본 명세서에 게시된 추가 기술적 효과들은 속성들을 찾는 메모리에 대한 호출들을 줄임으로써 하드웨어 성능의 개선들을 제공할 수 있으며, 이로써 대기 시간을 줄이고 배터리 수명을 개선하며, 음성 액션 등을 세팅하는데 필요한 메모리에 대한 호출들, 단계들, 및 인터페이스들을 줄여준다.
본 명세서에 게시된 시스템들이나 방법들로 사용자에 관한 개인 정보를 수집하거나 개인 정보를 사용할 수 있는 상황들에서, 사용자는 그러한 개인 정보의 수집 및/또는 사용을 제어할 기회를 제공받을 수 있으며, 그러한 데이터 수집의 일부 또는 전부를 제한한다. 예를 들어, 파라미터들의 식별을 위한 컨텍스트의 사용이 가능할 때, 사용자는 컨텍스트 데이터의 일부 또는 전부의 수집을 제한하는 능력을 제공받을 수 있다. 추가로, 일정 데이터는 저장 또는 사용되기 전에 하나 이상의 방법들로 취급될 수 있어, 개인 식별 정보가 제거되거나 불분명하게 된다. 예를 들어, 사용자의 신원이 취급되어 사용자에 대한 개인 식별 정보를 결정하지 못하거나, 사용자의 지리적 위치가 일반화되어 사용자의 특정한 위치를 결정하지 못할 수 있다. 따라서, 사용자는 사용자에 관한 정보가 어떻게 수집되고 본 명세서에 게시된 시스템들 및 방법들에 의해 어떻게 사용되는지에 대한 제어를 제공받을 수 있다.
이 게시가 일부 세부 사항들을 포함하지만, 이들은 게시의 범위 또는 청구될 수 있는 범위에 대한 제한들로 해석되어서는 안되며, 오히려 게시의 예시적인 구현예들의 구성들에 대한 기술(description)들로 해석되어야 한다. 개별 구현예들의 컨텍스트 내의 게시에 기술된 일정 구성들은 단일 구현으로 조합하여 또한 제공될 수 있다. 반대로, 단일 구현의 컨텍스트에 기술된 다양한 구성들은은 다수의 구현예들에서 개별적으로 또는 임의의 적합한 하위-조합으로 또한 제공될 수 있다. 또한, 구성들은 일정 조합들로 동작하는 것으로써 상기 기술되었고 심지어 초기적으로는 그와 같이 청구되었지만, 청구된 조합으로부터의 하나 이상의 구성들은 일부 경우들에서는 상기 조합으로부터 제거될 수 있고, 청구된 조합은 하위조합 또는 하위조합의 변형으로 유도될 수 있다.
유사하게, 동작들이 특정한 순서로 도면들에 도시되어 있지만, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정한 순서 또는 순차적 순서로 수행되거나, 또는 도시된 모든 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 일정 상황들에서는, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술된 구현예들에서 다양한 시스템 컴포넌트들의 분리는 모든 구현예들에서 그러한 분리를 요구하는 것으로 이해되어서는 안되며, 상기 기술된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것을 이해하여야 한다.
발명의 특정한 구현예들이 기술되었다. 다른 구현예들은 다음의 청구항들의 범위 내에 있다. 예를 들어, 청구항들에 열거된 액션들은 상이한 순서로 수행될 수 있으며 여전히 바람직한 결과들을 달성한다. 여러가지 구현예들이 기술되었다. 그럼에도 불구하고, 본 발명의 범위와 사상을 벗어나지 않고서 다양한 수정들이 가능하다. 예를 들어, 위에 나타낸 흐름들의 다양한 형태들은 재-배열된, 추가된 또는 제거된 단계들과 함께 사용될 수 있다. 따라서, 다른 구현예들은 다음의 청구항들의 범위 내에 있다.

Claims (17)

  1. 하나 이상의 프로세서에 의해 구현되는 방법으로서, 상기 방법은,
    다이얼로그 시스템에 대한 다이얼로그 에이전트를 작성하는 개발자로부터의 사용자 인터페이스 입력에 기초하여,
    다이얼로그 에이전트의 다이얼로그 시스템 인텐트(intent),
    다이얼로그 시스템 인텐트에 대한 복수의 파라미터,
    각 파라미터에 대해, 다이얼로그 시스템 인텐트에 대한 필수 파라미터인지 또는 다이얼로그 시스템 인텐트에 대한 선택적 파라미터인지 여부, 및
    다이얼로그 시스템 인텐트가 트리거되고 적어도 필수 파라미터들의 값들이 분석(resolve)될 때 수행될 액션을 결정하는 단계와, 상기 액션은 분석된 값들에 기초하여 수행되고;
    파라미터가 필수 또는 선택적 파라미터인지의 표시와 함께, 다이얼로그 시스템 인텐트를 액션과 연관시키고 상기 파라미터들을 다이얼로그 시스템 인텐트와 연관시키는 단계와;
    연관시키는 것에 후속하여:
    클라이언트 디바이스의 다이얼로그 시스템 인터페이스를 통해 제공된 음성(speech) 입력을 수신하는 단계와, 상기 다이얼로그 시스템 인터페이스는 다이얼로그 시스템과 연관되고;
    음성 입력을 처리하는 것에 기초하여, 다이얼로그 에이전트의 다이얼로그 시스템 인텐트를 활성화하기로 결정하는 단계와;
    다이얼로그 에이전트의 다이얼로그 시스템 인텐트 활성화에 응답하여:
    다이얼로그 시스템 인텐트에 대한 모든 필수 파라미터의 값들이 파라미터 수집 다이얼로그를 개시하지 않고 모두 분석 가능한지 여부를 결정하는 단계와;
    모든 필수 파라미터의 값들이 파라미터 수집 다이얼로그를 개시하지 않고 분석 가능한 것으로 결정된 경우:
    파라미터 수집 다이얼로그를 개시하지 않고 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 단계와;
    모든 필수 파라미터의 값들이 파라미터 수집 다이얼로그를 개시하지 않고 분석 가능하지 않은 것으로 결정된 경우:
    모든 필수 파라미터의 값들이 분석될 때까지 파라미터 수집 다이얼로그를 수행하는 단계와; 그리고
    파라미터 수집 다이얼로그를 수행한 후 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  2. 제1항에 있어서,
    상기 다이얼로그 시스템 인텐트에 대한 파라미터들을 결정하는 단계는,
    사용자 인터페이스 입력을 통해, 적어도 하나의 참조 용어 및 적어도 하나의 동의어를 제공함으로써 개발자에 의해 작성된 개발자 엔티티에 기초하는, 상기 파라미터들의 개발자 파라미터를 결정하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  3. 제2항에 있어서,
    상기 다이얼로그 시스템 인텐트에 대한 파라미터들을 결정하는 단계는,
    사용자 인터페이스 입력에 의해 표시된 시스템 엔티티에 기초하여 정의되는, 상기 파라미터들의 시스템 파라미터를 결정하는 단계를 더 포함하고, 상기 시스템 엔티티는 다이얼로그 시스템에 대해 사전 정의되는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  4. 제1항에 있어서,
    상기 선택적 파라미터들 중 하나에 대해, 음성 입력에 기초하여 선택적 값을 분석하는 단계를 더 포함하고,
    상기 모든 필수 파라미터의 값들이 분석 가능한 것으로 결정된 경우, 파라미터 수집 다이얼로그를 개시하지 않고 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 단계는,
    상기 선택적 값 및 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  5. 제4항에 있어서,
    상기 선택적 파라미터들 중 추가의 하나에 대해, 선택적 값이 음성 입력에 기초하여 분석될 수 없음을 결정하는 단계를 더 포함하고,
    상기 모든 필수 파라미터의 값들이 분석 가능한 것으로 결정된 경우, 파라미터 수집 다이얼로그를 개시하지 않고 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 단계는,
    상기 선택적 파라미터들 중 상기 추가의 하나의 파라미터에 대한 임의의 값이 없이, 상기 선택적 값과 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  6. 제1항에 있어서,
    상기 선택적 파라미터들 중 하나에 대해, 선택적 값이 음성 입력에 기초하여 분석될 수 없음을 결정하는 단계를 더 포함하고,
    상기 모든 필수 파라미터의 값들이 분석 가능하지 않은 것으로 결정된 경우, 모든 필수 파라미터의 값들이 분석될 때까지 파라미터 수집 다이얼로그를 수행하는 단계는,
    파라미터 수집 다이얼로그 동안, 선택적 파라미터들 중 하나에 대한 임의의 값을 본석하지 않고 모든 필수 파라미터의 값들을 분석하는 단계를 포함하고; 그리고
    상기 파라미터 수집 다이얼로그를 수행한 후, 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 단계는,
    상기 선택적 파라미터들 중 하나에 대한 임의의 값 없이, 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  7. 제1항에 있어서,
    상기 액션은 클라이언트 디바이스 또는 클라이언트 디바이스와 통신하는 서버에 의해 수행되는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  8. 제7항에 있어서,
    상기 액션은 API(Application Programming Interface) 특정 응답을 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  9. 적어도 하나의 프로세서 및 프로세서 실행 가능한 코드를 저장하는 메모리를 포함하는 시스템으로서, 상기 적어도 하나의 프로세서는 프로세서 실행 가능한 코드를 실행할 때 동작들을 구현하도록 구성되고, 상기 동작들은:
    다이얼로그 시스템에 대한 다이얼로그 에이전트를 작성하는 개발자로부터의 사용자 인터페이스 입력에 기초하여,
    다이얼로그 에이전트의 다이얼로그 시스템 인텐트,
    다이얼로그 시스템 인텐트에 대한 복수의 파라미터,
    각 파라미터에 대해, 다이얼로그 시스템 인텐트에 대한 필수 파라미터인지 또는 다이얼로그 시스템 인텐트에 대한 선택적 파라미터인지 여부, 및
    다이얼로그 시스템 인텐트가 트리거되고 적어도 필수 파라미터들의 값들이 분석될 때 수행될 액션을 결정하는 동작과, 상기 액션은 분석된 값들에 기초하여 수행되고;
    파라미터가 필수 또는 선택적 파라미터인지의 표시와 함께, 다이얼로그 시스템 인텐트를 동작과 연관시키고 상기 파라미터들을 다이얼로그 시스템 인텐트와 연관시키는 동작과;
    연관시키는 것에 후속하여:
    클라이언트 디바이스의 다이얼로그 시스템 인터페이스를 통해 제공된 음성 입력을 수신하는 동작과, 상기 다이얼로그 시스템 인터페이스는 다이얼로그 시스템과 연관되고;
    음성 입력을 처리하는 것에 기초하여, 다이얼로그 에이전트의 다이얼로그 시스템 인텐트를 활성화하기로 결정하는 동작과;
    다이얼로그 에이전트의 다이얼로그 시스템 인텐트 활성화에 응답하여:
    다이얼로그 시스템 인텐트에 대한 모든 필수 파라미터의 값들이 파라미터 수집 다이얼로그를 개시하지 않고 모두 분석 가능한지 여부를 결정하는 동작과;
    모든 필수 파라미터의 값들이 파라미터 수집 다이얼로그를 개시하지 않고 분석 가능한 것으로 결정된 경우:
    파라미터 수집 다이얼로그를 개시하지 않고 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 동작과;
    모든 필수 파라미터의 값들이 파라미터 수집 다이얼로그를 개시하지 않고 분석 가능하지 않은 것으로 결정된 경우:
    모든 필수 파라미터의 값들이 분석될 때까지 파라미터 수집 다이얼로그를 수행하는 동작과; 그리고
    파라미터 수집 다이얼로그를 수행한 후 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 동작을 포함하는 것을 특징으로 하는 시스템.
  10. 제9항에 있어서,
    상기 적어도 하나의 프로세서는,
    다이얼로그 시스템 인텐트에 대한 파라미터들을 결정할 때:
    사용자 인터페이스 입력을 통해, 적어도 하나의 참조 용어 및 적어도 하나의 동의어를 제공함으로써 개발자에 의해 작성된 개발자 엔티티에 기초하는, 상기 파라미터들의 개발자 파라미터를 결정하도록 구성되는 것을 특징으로 하는 시스템.
  11. 제10항에 있어서,
    상기 적어도 하나의 프로세서는,
    다이얼로그 시스템 인텐트에 대한 파라미터들을 결정할 때:
    사용자 인터페이스 입력에 의해 표시된 시스템 엔티티에 기초하여 정의되는, 파라미터들의 시스템 파라미터를 결정하도록 구성되고, 상기 시스템 엔티티는 다이얼로그 시스템에 대해 사전 정의되는 것을 특징으로 하는 시스템.
  12. 제9항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 선택적 파라미터들 중 하나에 대해, 음성 입력에 기초하여 선택적 값을 분석하도록 더 구성되고,
    상기 모든 필수 파라미터의 값들이 분석 가능한 것으로 결정된 경우, 상기 적어도 하나의 프로세서는, 파라미터 수집 다이얼로그를 개시하지 않고 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시할 때:
    상기 선택적 값 및 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하도록 구성되는 것을 특징으로 하는 시스템.
  13. 제12항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 선택적 파라미터들 중 추가의 하나에 대해, 선택적 값이 음성 입력에 기초하여 분석될 수 없음을 결정하도록 더 구성되고,
    상기 모든 필수 파라미터의 값들이 분석 가능한 것으로 결정된 경우, 상기 적어도 하나의 프로세서는, 파라미터 수집 다이얼로그를 개시하지 않고 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시할 때:
    상기 선택적 파라미터들 중 상기 추가의 하나의 파라미터에 대한 임의의 값이 없이, 상기 선택적 값과 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하도록 구성되는 것을 특징으로 하는 시스템.
  14. 제9항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 선택적 파라미터들 중 하나에 대해, 선택적 값이 음성 입력에 기초하여 분석될 수 없음을 결정하도록 더 구성되고,
    상기 모든 필수 파라미터의 값들이 분석 가능하지 않은 것으로 결정된 경우, 상기 적어도 하나의 프로세서는, 모든 필수 파라미터의 값들이 분석될 때까지 파라미터 수집 다이얼로그를 수행할 때:
    파라미터 수집 다이얼로그 동안, 선택적 파라미터들 중 하나에 대한 임의의 값을 본석하지 않고 모든 필수 파라미터의 값들을 분석하도록 구성되고; 그리고
    상기 적어도 하나의 프로세서는, 파라미터 수집 다이얼로그를 수행한 후, 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시할 때:
    상기 선택적 파라미터들 중 하나에 대한 임의의 값 없이, 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하도록 구성되는 것을 특징으로 하는 시스템.
  15. 제9항에 있어서,
    상기 액션은 클라이언트 디바이스 또는 클라이언트 디바이스와 통신하는 서버에 의해 수행되는 것을 특징으로 하는 시스템.
  16. 제15항에 있어서,
    상기 액션은 API(Application Programming Interface) 특정 응답을 포함하는 것을 특징으로 하는 시스템.
  17. 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금 자연 음성 다이얼로그 시스템에 대한 방법을 구현하게 하는 명령어가 저장된 비-일시적 프로세서 판독 가능 매체에 있어서, 상기 방법은,
    다이얼로그 시스템에 대한 다이얼로그 에이전트를 작성하는 개발자로부터의 사용자 인터페이스 입력에 기초하여,
    다이얼로그 에이전트의 다이얼로그 시스템 인텐트,
    다이얼로그 시스템 인텐트에 대한 복수의 파라미터,
    각 파라미터에 대해, 다이얼로그 시스템 인텐트에 대한 필수 파라미터인지 또는 다이얼로그 시스템 인텐트에 대한 선택적 파라미터인지 여부, 및
    다이얼로그 시스템 인텐트가 트리거되고 적어도 필수 파라미터들의 값들이 분석될 때 수행될 액션을 결정하는 단계와, 상기 액션은 분석된 값들에 기초하여 수행되고;
    파라미터가 필수 또는 선택적 파라미터인지의 표시와 함께, 다이얼로그 시스템 인텐트를 동작과 연관시키고 상기 파라미터들을 다이얼로그 시스템 인텐트와 연관시키는 단계와;
    연관시키는 것에 후속하여:
    클라이언트 디바이스의 다이얼로그 시스템 인터페이스를 통해 제공된 음성 입력을 수신하는 단계와, 상기 다이얼로그 시스템 인터페이스는 다이얼로그 시스템과 연관되고;
    음성 입력을 처리하는 것에 기초하여, 다이얼로그 에이전트의 다이얼로그 시스템 인텐트를 활성화하기로 결정하는 단계와;
    다이얼로그 에이전트의 다이얼로그 시스템 인텐트 활성화에 응답하여:
    다이얼로그 시스템 인텐트에 대한 모든 필수 파라미터의 값들이 파라미터 수집 다이얼로그를 개시하지 않고 모두 분석 가능한지 여부를 결정하는 단계와;
    모든 필수 파라미터의 값들이 파라미터 수집 다이얼로그를 개시하지 않고 분석 가능한 것으로 결정된 경우:
    파라미터 수집 다이얼로그를 개시하지 않고 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 단계와;
    모든 필수 파라미터의 값들이 파라미터 수집 다이얼로그를 개시하지 않고 분석 가능하지 않은 것으로 결정된 경우:
    모든 필수 파라미터의 값들이 분석될 때까지 파라미터 수집 다이얼로그를 수행하는 단계와; 그리고
    파라미터 수집 다이얼로그를 수행한 후 모든 필수 파라미터의 값들에 기초하여 액션의 수행을 개시하는 단계를 포함하는 것을 특징으로 하는 비-일시적 프로세서 판독 가능 매체.
KR1020207013506A 2015-10-21 2016-10-21 다이얼로그 시스템들에서의 파라미터 수집 및 자동 다이얼로그 생성 KR102189855B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562244560P 2015-10-21 2015-10-21
US62/244,560 2015-10-21
PCT/US2016/058193 WO2017070522A1 (en) 2015-10-21 2016-10-21 Parameter collection and automatic dialog generation in dialog systems

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020187014399A Division KR102112814B1 (ko) 2015-10-21 2016-10-21 다이얼로그 시스템들에서의 파라미터 수집 및 자동 다이얼로그 생성

Publications (2)

Publication Number Publication Date
KR20200054338A true KR20200054338A (ko) 2020-05-19
KR102189855B1 KR102189855B1 (ko) 2020-12-11

Family

ID=57209944

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020207013506A KR102189855B1 (ko) 2015-10-21 2016-10-21 다이얼로그 시스템들에서의 파라미터 수집 및 자동 다이얼로그 생성
KR1020187014399A KR102112814B1 (ko) 2015-10-21 2016-10-21 다이얼로그 시스템들에서의 파라미터 수집 및 자동 다이얼로그 생성

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020187014399A KR102112814B1 (ko) 2015-10-21 2016-10-21 다이얼로그 시스템들에서의 파라미터 수집 및 자동 다이얼로그 생성

Country Status (9)

Country Link
US (3) US10170106B2 (ko)
EP (1) EP3341933A1 (ko)
JP (2) JP6960914B2 (ko)
KR (2) KR102189855B1 (ko)
CN (2) CN116628157A (ko)
DE (1) DE112016004863T5 (ko)
GB (1) GB2557532A (ko)
RU (1) RU2018113724A (ko)
WO (1) WO2017070522A1 (ko)

Families Citing this family (165)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US20120309363A1 (en) 2011-06-03 2012-12-06 Apple Inc. Triggering notifications associated with tasks items that represent tasks to perform
US9634855B2 (en) 2010-05-13 2017-04-25 Alexander Poltorak Electronic personal interactive device that determines topics of interest using a conversational agent
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
CN113470640B (zh) 2013-02-07 2022-04-26 苹果公司 数字助理的语音触发器
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
AU2015266863B2 (en) 2014-05-30 2018-03-15 Apple Inc. Multi-command single utterance input method
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
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10331312B2 (en) 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US10740384B2 (en) 2015-09-08 2020-08-11 Apple Inc. Intelligent automated assistant for media search and playback
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
CN109792402B (zh) 2016-07-08 2020-03-06 艾赛普公司 自动响应用户的请求
US10083451B2 (en) 2016-07-08 2018-09-25 Asapp, Inc. Using semantic processing for customer support
US10891152B2 (en) * 2016-11-23 2021-01-12 Amazon Technologies, Inc. Back-end task fulfillment for dialog-driven applications
US10565989B1 (en) * 2016-12-16 2020-02-18 Amazon Technogies Inc. Ingesting device specific content
US10109275B2 (en) 2016-12-19 2018-10-23 Asapp, Inc. Word hash language model
US10740373B2 (en) * 2017-02-08 2020-08-11 International Business Machines Corporation Dialog mechanism responsive to query context
US11171892B2 (en) * 2017-02-27 2021-11-09 Ncr Corporation Service assistance and integration
US10332505B2 (en) * 2017-03-09 2019-06-25 Capital One Services, Llc Systems and methods for providing automated natural language dialogue with customers
US10796088B2 (en) * 2017-04-21 2020-10-06 International Business Machines Corporation Specifying a conversational computer agent and its outcome with a grammar
KR102388539B1 (ko) * 2017-04-30 2022-04-20 삼성전자주식회사 사용자 발화를 처리하는 전자 장치
US11373632B2 (en) * 2017-05-10 2022-06-28 Oracle International Corporation Using communicative discourse trees to create a virtual persuasive dialogue
US10679011B2 (en) 2017-05-10 2020-06-09 Oracle International Corporation Enabling chatbots by detecting and supporting argumentation
US10817670B2 (en) * 2017-05-10 2020-10-27 Oracle International Corporation Enabling chatbots by validating argumentation
US11386274B2 (en) 2017-05-10 2022-07-12 Oracle International Corporation Using communicative discourse trees to detect distributed incompetence
US10839154B2 (en) * 2017-05-10 2020-11-17 Oracle International Corporation Enabling chatbots by detecting and supporting affective argumentation
US10599885B2 (en) 2017-05-10 2020-03-24 Oracle International Corporation Utilizing discourse structure of noisy user-generated content for chatbot learning
JP7086993B2 (ja) * 2017-05-10 2022-06-20 オラクル・インターナショナル・コーポレイション コミュニケーション用談話ツリーの使用による修辞学的分析の可能化
US11586827B2 (en) 2017-05-10 2023-02-21 Oracle International Corporation Generating desired discourse structure from an arbitrary text
US11615145B2 (en) 2017-05-10 2023-03-28 Oracle International Corporation Converting a document into a chatbot-accessible form via the use of communicative discourse trees
US11960844B2 (en) * 2017-05-10 2024-04-16 Oracle International Corporation Discourse parsing using semantic and syntactic relations
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770429A1 (en) 2017-05-12 2018-12-14 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
US10275651B2 (en) 2017-05-16 2019-04-30 Google Llc Resolving automated assistant requests that are based on image(s) and/or other sensor data
US20180336275A1 (en) 2017-05-16 2018-11-22 Apple Inc. Intelligent automated assistant for media exploration
US20180336892A1 (en) 2017-05-16 2018-11-22 Apple Inc. Detecting a trigger of a digital assistant
US11043206B2 (en) 2017-05-18 2021-06-22 Aiqudo, Inc. Systems and methods for crowdsourced actions and commands
US11340925B2 (en) 2017-05-18 2022-05-24 Peloton Interactive Inc. Action recipes for a crowdsourced digital assistant system
EP3635578A4 (en) 2017-05-18 2021-08-25 Aiqudo, Inc. SYSTEMS AND PROCEDURES FOR CRWODSOURCING ACTIONS AND COMMANDS
US11056105B2 (en) * 2017-05-18 2021-07-06 Aiqudo, Inc Talk back from actions in applications
US11436265B2 (en) * 2017-06-13 2022-09-06 Microsoft Technology Licensing, Llc System for presenting tailored content based on user sensibilities
US11100144B2 (en) 2017-06-15 2021-08-24 Oracle International Corporation Data loss prevention system for cloud security based on document discourse analysis
US10839161B2 (en) 2017-06-15 2020-11-17 Oracle International Corporation Tree kernel learning for text classification into classes of intent
CN107342078B (zh) * 2017-06-23 2020-05-05 上海交通大学 对话策略优化的冷启动系统和方法
US10388285B2 (en) 2017-08-31 2019-08-20 International Business Machines Corporation Generating chat bots from web API specifications
US11182412B2 (en) 2017-09-27 2021-11-23 Oracle International Corporation Search indexing using discourse trees
US10796099B2 (en) 2017-09-28 2020-10-06 Oracle International Corporation Enabling autonomous agents to discriminate between questions and requests
WO2019067869A1 (en) 2017-09-28 2019-04-04 Oracle International Corporation DETERMINING RHETORIC RELATIONSHIPS BETWEEN DOCUMENTS BASED ON THE ANALYSIS AND IDENTIFICATION OF NAMED ENTITIES
US11809825B2 (en) 2017-09-28 2023-11-07 Oracle International Corporation Management of a focused information sharing dialogue based on discourse trees
US10431219B2 (en) * 2017-10-03 2019-10-01 Google Llc User-programmable automated assistant
KR102348124B1 (ko) * 2017-11-07 2022-01-07 현대자동차주식회사 차량의 기능 추천 장치 및 방법
DE102017128651A1 (de) * 2017-12-02 2019-06-06 Tobias Rückert Dialogsystem und Verfahren zur Umsetzung von Anweisungen eines Nutzers
US10497004B2 (en) 2017-12-08 2019-12-03 Asapp, Inc. Automating communications using an intent classifier
US10599640B2 (en) * 2017-12-19 2020-03-24 At&T Intellectual Property I, L.P. Predictive search with context filtering
KR101944353B1 (ko) * 2017-12-20 2019-04-17 주식회사 카카오 챗봇 빌더 사용자 인터페이스 제공 방법 및 장치
CN109949800B (zh) * 2017-12-20 2021-08-10 北京京东尚科信息技术有限公司 语音打车方法及系统
US11222632B2 (en) 2017-12-29 2022-01-11 DMAI, Inc. System and method for intelligent initiation of a man-machine dialogue based on multi-modal sensory inputs
WO2019133706A1 (en) * 2017-12-29 2019-07-04 DMAI, Inc. System and method for learning preferences in dialogue personalization
US11504856B2 (en) 2017-12-29 2022-11-22 DMAI, Inc. System and method for selective animatronic peripheral response for human machine dialogue
US11024294B2 (en) 2017-12-29 2021-06-01 DMAI, Inc. System and method for dialogue management
US10489792B2 (en) 2018-01-05 2019-11-26 Asapp, Inc. Maintaining quality of customer support messages
EP4123478A1 (en) * 2018-01-16 2023-01-25 Google LLC Systems, methods, and apparatuses for providing assistant deep links to effectuate third-party dialog session transfers
WO2019152426A1 (en) 2018-01-30 2019-08-08 Oracle International Corporation Using communicative discourse trees to detect a request for an explanation
US11537645B2 (en) 2018-01-30 2022-12-27 Oracle International Corporation Building dialogue structure by using communicative discourse trees
CN108376543B (zh) * 2018-02-11 2021-07-13 深圳创维-Rgb电子有限公司 一种电器设备的控制方法、装置、设备和存储介质
US10210244B1 (en) * 2018-02-12 2019-02-19 Asapp, Inc. Updating natural language interfaces by processing usage data
US11331807B2 (en) 2018-02-15 2022-05-17 DMAI, Inc. System and method for dynamic program configuration
KR102445365B1 (ko) * 2018-03-19 2022-09-20 현대자동차주식회사 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법
WO2019182586A1 (en) * 2018-03-21 2019-09-26 Google Llc Data transfer in secure processing environments
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
WO2019203859A1 (en) 2018-04-19 2019-10-24 Google Llc Dependency graph conversation modeling for use in conducting human-to-computer dialog sessions with a computer-implemented automated assistant
US10169315B1 (en) 2018-04-27 2019-01-01 Asapp, Inc. Removing personal information from text using a neural network
US10679622B2 (en) 2018-05-01 2020-06-09 Google Llc Dependency graph generation in a networked system
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
CN112106056A (zh) 2018-05-09 2020-12-18 甲骨文国际公司 构造虚构的话语树来提高回答聚敛性问题的能力
US11520989B1 (en) * 2018-05-17 2022-12-06 Workday, Inc. Natural language processing with keywords
US10572232B2 (en) 2018-05-17 2020-02-25 International Business Machines Corporation Automatically converting a textual data prompt embedded within a graphical user interface (GUI) to a widget
EP3576084B1 (de) 2018-05-29 2020-09-30 Christoph Neumann Effiziente dialoggestaltung
CN110556102B (zh) * 2018-05-30 2023-09-05 蔚来(安徽)控股有限公司 意图识别和执行的方法、设备、车载语音对话系统以及计算机存储介质
US11455494B2 (en) 2018-05-30 2022-09-27 Oracle International Corporation Automated building of expanded datasets for training of autonomous agents
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
DK179822B1 (da) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US11157704B2 (en) 2018-06-18 2021-10-26 DataChat.ai Constrained natural language processing
US11645459B2 (en) 2018-07-02 2023-05-09 Oracle International Corporation Social autonomous agent implementation using lattice queries and relevancy detection
US10915588B2 (en) * 2018-08-02 2021-02-09 International Business Machines Corporation Implicit dialog approach operating a conversational access interface to web content
US10824658B2 (en) 2018-08-02 2020-11-03 International Business Machines Corporation Implicit dialog approach for creating conversational access to web content
US11216510B2 (en) 2018-08-03 2022-01-04 Asapp, Inc. Processing an incomplete message with a neural network to generate suggested messages
US10839159B2 (en) * 2018-09-28 2020-11-17 Apple Inc. Named entity normalization in a spoken dialog system
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11100407B2 (en) * 2018-10-10 2021-08-24 International Business Machines Corporation Building domain models from dialog interactions
CN112154431A (zh) * 2018-10-10 2020-12-29 华为技术有限公司 一种人机交互的方法及电子设备
US11562135B2 (en) * 2018-10-16 2023-01-24 Oracle International Corporation Constructing conclusive answers for autonomous agents
CN111104490B (zh) * 2018-10-25 2023-06-06 阿里巴巴集团控股有限公司 参数的删除方法及装置
US11501656B2 (en) * 2018-10-29 2022-11-15 Sestek Ses Ve Iletisim Bilgisayar Tek. San Ve Tic A.S. Interactive and automated training system using real interactions
US11551004B2 (en) 2018-11-13 2023-01-10 Asapp, Inc. Intent discovery with a prototype classifier
US10747957B2 (en) 2018-11-13 2020-08-18 Asapp, Inc. Processing communications using a prototype classifier
US11416785B2 (en) * 2018-12-04 2022-08-16 International Business Machines Corporation Automated interactive support
CN109739481A (zh) * 2018-12-11 2019-05-10 北京奇点机智科技有限公司 生成交互式应用程序的方法及系统
CN109783608B (zh) * 2018-12-20 2021-01-05 出门问问信息科技有限公司 目标假设的确定方法、装置、可读存储介质和电子设备
US11164574B2 (en) 2019-01-03 2021-11-02 International Business Machines Corporation Conversational agent generation
JP2022520763A (ja) * 2019-02-08 2022-04-01 アイ・ティー スピークス エル・エル・シー インテリジェント産業アシスタントのためのダイアログテンプレートを開発するための方法、システム、および、コンピュータプログラム製品
US11321536B2 (en) 2019-02-13 2022-05-03 Oracle International Corporation Chatbot conducting a virtual social dialogue
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
CA3133829A1 (en) * 2019-03-19 2020-09-24 Liveperson, Inc. Dynamic communications routing to disparate endpoints
WO2020214988A1 (en) 2019-04-17 2020-10-22 Tempus Labs Collaborative artificial intelligence method and system
CN110046227B (zh) * 2019-04-17 2023-07-18 腾讯科技(深圳)有限公司 对话系统的配置方法、交互方法、装置、设备和存储介质
US11637792B2 (en) * 2019-04-19 2023-04-25 Oracle International Corporation Systems and methods for a metadata driven integration of chatbot systems into back-end application services
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
CN110096583B (zh) * 2019-05-09 2021-05-14 思必驰科技股份有限公司 多领域对话管理系统及其构建方法
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US10671941B1 (en) * 2019-05-23 2020-06-02 Capital One Services, Llc Managing multifaceted, implicit goals through dialogue
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. USER ACTIVITY SHORTCUT SUGGESTIONS
DK201970511A1 (en) 2019-05-31 2021-02-15 Apple Inc Voice identification in digital assistant systems
US11468890B2 (en) 2019-06-01 2022-10-11 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
CA3045132C (en) * 2019-06-03 2023-07-25 Eidos Interactive Corp. Communication with augmented reality virtual agents
CN114586037A (zh) * 2019-07-29 2022-06-03 人工智能机器人私人有限公司 用于将语境元素链接到动作的标签方法和系统
US11449682B2 (en) 2019-08-29 2022-09-20 Oracle International Corporation Adjusting chatbot conversation to user personality and mood
CN110798506B (zh) * 2019-09-27 2023-03-10 华为技术有限公司 执行命令的方法、装置及设备
US11425064B2 (en) 2019-10-25 2022-08-23 Asapp, Inc. Customized message suggestion with user embedding vectors
WO2021096382A2 (ru) * 2019-11-15 2021-05-20 Федеральное Государственное Автономное Образовательное Учреждение Высшего Образования "Московский Физико-Технический Институт" (Национальный Исследовательский Университет) (Мфти) Способ и система управления диалоговым агентом в канале взаимодействия с пользователем
US11775772B2 (en) 2019-12-05 2023-10-03 Oracle International Corporation Chatbot providing a defeating reply
KR20210113488A (ko) 2020-03-05 2021-09-16 삼성전자주식회사 사용 로그 분석에 의한 보이스 에이전트의 새 기능을 자동적으로 추출하는 방법 및 장치
US11501211B2 (en) 2020-03-13 2022-11-15 Hong Kong Applied Science And Technology Research Institute Co., Ltd Chatbot system with model lifecycle management
CN111312254A (zh) * 2020-03-26 2020-06-19 镁佳(北京)科技有限公司 语音对话方法和装置
US11482223B2 (en) 2020-03-31 2022-10-25 Pricewaterhousecoopers Llp Systems and methods for automatically determining utterances, entities, and intents based on natural language inputs
US11580112B2 (en) 2020-03-31 2023-02-14 Pricewaterhousecoopers Llp Systems and methods for automatically determining utterances, entities, and intents based on natural language inputs
US11095579B1 (en) 2020-05-01 2021-08-17 Yseop Sa Chatbot with progressive summary generation
US11183193B1 (en) 2020-05-11 2021-11-23 Apple Inc. Digital assistant hardware abstraction
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11755276B2 (en) 2020-05-12 2023-09-12 Apple Inc. Reducing description length based on confidence
CN114341864A (zh) * 2020-06-18 2022-04-12 思杰系统有限公司 在人工智能对话系统中对主体值的自主学习
US20220019195A1 (en) * 2020-07-15 2022-01-20 Automation Anywhere, Inc. Robotic process automation with conversational user interface
US11539650B2 (en) 2020-07-16 2022-12-27 International Business Machines Corporation System and method for alerts for missing coverage of chatbot conversation messages
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
CN111914075A (zh) * 2020-08-06 2020-11-10 平安科技(深圳)有限公司 基于深度学习的客户标签确定方法、装置、设备及介质
US11816437B2 (en) * 2020-12-15 2023-11-14 International Business Machines Corporation Automatical process application generation
JP2022147362A (ja) * 2021-03-23 2022-10-06 株式会社リコー サービス提供システム、情報処理装置、情報処理方法、及びプログラム
US11683283B2 (en) 2021-03-30 2023-06-20 International Business Machines Corporation Method for electronic messaging
US11533279B2 (en) 2021-03-30 2022-12-20 International Business Machines Corporation Method for electronic messaging using image based noisy content
US11334223B1 (en) 2021-04-14 2022-05-17 DataChat.ai User interface for data analytics systems
JP6954549B1 (ja) * 2021-06-15 2021-10-27 ソプラ株式会社 エンティティとインテントとコーパスの自動生成装置及びプログラム
CN114265920B (zh) * 2021-12-27 2022-07-01 北京易聊科技有限公司 一种基于信号和场景的智能机器人对话方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010085878A (ko) * 1998-10-02 2001-09-07 포만 제프리 엘 대화형 가상 기계를 통한 대화형 컴퓨터
JP2002024212A (ja) * 2000-07-12 2002-01-25 Mitsubishi Electric Corp 音声対話システム
JP2008146150A (ja) * 2006-12-06 2008-06-26 Honda Motor Co Ltd 言語理解装置、言語理解方法、及び、コンピュータプログラム
US20090150156A1 (en) * 2007-12-11 2009-06-11 Kennewick Michael R System and method for providing a natural language voice user interface in an integrated voice navigation services environment
KR20120120316A (ko) * 2010-01-18 2012-11-01 애플 인크. 지능형 자동화 어시스턴트

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078886A (en) * 1997-04-14 2000-06-20 At&T Corporation System and method for providing remote automatic speech recognition services via a packet network
US6868385B1 (en) * 1999-10-05 2005-03-15 Yomobile, Inc. Method and apparatus for the provision of information signals based upon speech recognition
US9076448B2 (en) * 1999-11-12 2015-07-07 Nuance Communications, Inc. Distributed real time speech recognition system
AU2001259446A1 (en) * 2000-05-02 2001-11-12 Dragon Systems, Inc. Error correction in speech recognition
US7308404B2 (en) * 2001-09-28 2007-12-11 Sri International Method and apparatus for speech recognition using a dynamic vocabulary
US6999930B1 (en) * 2002-03-27 2006-02-14 Extended Systems, Inc. Voice dialog server method and system
US7302383B2 (en) * 2002-09-12 2007-11-27 Luis Calixto Valles Apparatus and methods for developing conversational applications
US7228275B1 (en) * 2002-10-21 2007-06-05 Toyota Infotechnology Center Co., Ltd. Speech recognition system having multiple speech recognizers
US7548858B2 (en) * 2003-03-05 2009-06-16 Microsoft Corporation System and method for selective audible rendering of data to a user based on user input
US8311835B2 (en) * 2003-08-29 2012-11-13 Microsoft Corporation Assisted multi-modal dialogue
US7266537B2 (en) * 2004-01-14 2007-09-04 Intelligent Results Predictive selection of content transformation in predictive modeling systems
US8024196B1 (en) * 2005-09-19 2011-09-20 Sap Ag Techniques for creating and translating voice applications
US9009046B1 (en) * 2005-09-27 2015-04-14 At&T Intellectual Property Ii, L.P. System and method for disambiguating multiple intents in a natural language dialog system
US8332218B2 (en) * 2006-06-13 2012-12-11 Nuance Communications, Inc. Context-based grammars for automated speech recognition
US7752043B2 (en) * 2006-09-29 2010-07-06 Verint Americas Inc. Multi-pass speech analytics
US20110060587A1 (en) * 2007-03-07 2011-03-10 Phillips Michael S Command and control utilizing ancillary information in a mobile voice-to-speech application
US8874443B2 (en) * 2008-08-27 2014-10-28 Robert Bosch Gmbh System and method for generating natural language phrases from user utterances in dialog systems
US8700389B2 (en) * 2010-12-23 2014-04-15 Sap Ag Systems and methods for model-based processing of linguistic user inputs using annotations
US9082402B2 (en) * 2011-12-08 2015-07-14 Sri International Generic virtual personal assistant platform
US8892419B2 (en) * 2012-04-10 2014-11-18 Artificial Solutions Iberia SL System and methods for semiautomatic generation and tuning of natural language interaction applications
EP2839391A4 (en) * 2012-04-20 2016-01-27 Maluuba Inc CONVERSATION AGENT
US10096316B2 (en) * 2013-11-27 2018-10-09 Sri International Sharing intents to provide virtual assistance in a multi-person dialog
US10026400B2 (en) * 2013-06-27 2018-07-17 Google Llc Generating dialog recommendations for chat information systems based on user interaction and environmental data
US10811004B2 (en) * 2013-03-28 2020-10-20 Nuance Communications, Inc. Auto-generation of parsing grammars from a concept ontology
US9110889B2 (en) * 2013-04-23 2015-08-18 Facebook, Inc. Methods and systems for generation of flexible sentences in a social networking system
US9633317B2 (en) * 2013-06-20 2017-04-25 Viv Labs, Inc. Dynamically evolving cognitive architecture system based on a natural language intent interpreter
US20150242395A1 (en) * 2014-02-24 2015-08-27 Transcriptic, Inc. Systems and methods for equipment sharing
SG11201702029PA (en) * 2014-09-14 2017-04-27 Speaktoit Inc Platform for creating customizable dialog system engines
CN104360897B (zh) * 2014-10-29 2017-09-22 百度在线网络技术(北京)有限公司 对话处理方法和对话管理系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010085878A (ko) * 1998-10-02 2001-09-07 포만 제프리 엘 대화형 가상 기계를 통한 대화형 컴퓨터
JP2002024212A (ja) * 2000-07-12 2002-01-25 Mitsubishi Electric Corp 音声対話システム
JP2008146150A (ja) * 2006-12-06 2008-06-26 Honda Motor Co Ltd 言語理解装置、言語理解方法、及び、コンピュータプログラム
US20090150156A1 (en) * 2007-12-11 2009-06-11 Kennewick Michael R System and method for providing a natural language voice user interface in an integrated voice navigation services environment
KR20120120316A (ko) * 2010-01-18 2012-11-01 애플 인크. 지능형 자동화 어시스턴트

Also Published As

Publication number Publication date
JP2020161153A (ja) 2020-10-01
GB201805212D0 (en) 2018-05-16
GB2557532A (en) 2018-06-20
JP6960914B2 (ja) 2021-11-05
US10170106B2 (en) 2019-01-01
KR20180070684A (ko) 2018-06-26
US10733983B2 (en) 2020-08-04
US10490186B2 (en) 2019-11-26
EP3341933A1 (en) 2018-07-04
US20200111486A1 (en) 2020-04-09
JP2019503526A (ja) 2019-02-07
US20190139538A1 (en) 2019-05-09
JP6942841B2 (ja) 2021-09-29
CN108701454B (zh) 2023-05-30
KR102112814B1 (ko) 2020-05-19
CN116628157A (zh) 2023-08-22
WO2017070522A1 (en) 2017-04-27
RU2018113724A (ru) 2019-11-21
US20170116982A1 (en) 2017-04-27
KR102189855B1 (ko) 2020-12-11
DE112016004863T5 (de) 2018-07-19
CN108701454A (zh) 2018-10-23

Similar Documents

Publication Publication Date Title
KR102112814B1 (ko) 다이얼로그 시스템들에서의 파라미터 수집 및 자동 다이얼로그 생성
US11232265B2 (en) Context-based natural language processing
US11321116B2 (en) Systems and methods for integrating third party services with a digital assistant
US20220221959A1 (en) Annotations in software applications for invoking dialog system functions
US10546067B2 (en) Platform for creating customizable dialog system engines
JP2019503526A5 (ko)
US10891152B2 (en) Back-end task fulfillment for dialog-driven applications

Legal Events

Date Code Title Description
A107 Divisional application of patent
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant