KR20220083789A - 어시스턴트 시스템들을 위한 선행적 콘텐츠 생성 - Google Patents

어시스턴트 시스템들을 위한 선행적 콘텐츠 생성 Download PDF

Info

Publication number
KR20220083789A
KR20220083789A KR1020227016523A KR20227016523A KR20220083789A KR 20220083789 A KR20220083789 A KR 20220083789A KR 1020227016523 A KR1020227016523 A KR 1020227016523A KR 20227016523 A KR20227016523 A KR 20227016523A KR 20220083789 A KR20220083789 A KR 20220083789A
Authority
KR
South Korea
Prior art keywords
user
proactive
certain embodiments
assistant
content
Prior art date
Application number
KR1020227016523A
Other languages
English (en)
Inventor
윌리엄 크로스비 프레산트
샤오레이 리
하오 저우
피유시 켐카
폴 앤서니 크룩
카이 준 웽
프란쯔-율리우스 첸
마이클 로버트 한손
리사 샤오이 황
에릭 샤오
아누즈 쿠마르
진송 유
바이양 리우
프란시스라브 피. 페노브
샤오후 리우
파라스 파레시 샤
빈센트 찰스 청
니콜라스 마이클 벤손
야팅 셍
지지안 헤
루이 샤오
아니메시 신하
크시티즈 말릭
성환 문
홍레이 리우
아메드 알리
홍유안 장
Original Assignee
메타 플랫폼스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 메타 플랫폼스, 인크. filed Critical 메타 플랫폼스, 인크.
Publication of KR20220083789A publication Critical patent/KR20220083789A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/109Time management, e.g. calendars, reminders, meetings or time accounting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/02Reservations, e.g. for tickets, services or events
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06311Scheduling, planning or task assignment for a person or group
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/53Network services using third party service providers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Human Resources & Organizations (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • Tourism & Hospitality (AREA)
  • Data Mining & Analysis (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Artificial Intelligence (AREA)
  • Development Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Computer Hardware Design (AREA)
  • Primary Health Care (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

일 실시예에서, 방법은, 제 1 사용자와 연관된 선행적 트리거들과 연관된 하나 이상의 입력들을 수신하는 단계, 하나 이상의 선행적 정책들에 기반하여 제 1 사용자가 선행적 제안들을 수신할 자격이 있는지 여부를 결정하는 단계, 제 1 사용자와 연관된 사용자 콘텍스트 데이터 및 하나 이상의 입력들에 기반하여 하나 이상의 선행적 제안들을 생성하는 단계, 제 1 사용자와 연관된 태스크 이력 데이터에 기반하여 선행적 제안들 중 하나 이상을 선택하는 단계, 및 제 1 사용자와 연관된 클라이언트 시스템에, 선행적 콘텐츠를 제 1 사용자에게 제공하기 위한 명령들을 전송하는 단계를 포함하며, 선행적 콘텐츠는 선택된 선행적 제안들을 포함한다.

Description

어시스턴트 시스템들을 위한 선행적 콘텐츠 생성
본 출원은, 2020년 8월 28일자로 출원된 미국 가특허출원 일련 번호 제 17/006,260호, 2019년 10월 18일자로 출원된 미국 가특허출원 번호 제 62/923,342호 및 2020년 6월 25일자로 출원된 미국 가특허출원 번호 제 63/044,270호의 이익을 주장한다. 이로써, 상기 특허 출원들의 개시내용들은 참조로서 본원에 포함된다.
본 개시내용은 일반적으로, 네트워크 환경들 내의 데이터베이스들 및 파일 관리에 관한 것으로, 특히, 스마트 어시스턴트 시스템들을 위한 하드웨어 및 소프트웨어에 관한 것이다.
어시스턴트 시스템은 사용자 입력, 위치 인식, 및 다양한 온라인 소스들로부터의 정보(이를테면, 날씨 조건들, 교통 혼잡, 뉴스, 주가, 사용자 스케줄들, 소매 가격들 등)에 액세스하는 능력의 조합에 기반하여 사용자 대신에 서비스들 또는 정보를 제공할 수 있다. 사용자 입력은, 특히 인스턴트 메시징 애플리케이션에서의 텍스트(예컨대, 온라인 채팅) 또는 다른 애플리케이션들, 음성, 이미지들, 모션, 또는 이들의 조합을 포함할 수 있다. 어시스턴트 시스템은 사용자 입력에 기반하여 정보를 제공하거나 또는 컨시어지-타입 서비스들(예컨대, 저녁 식사 예약하기, 이벤트 티켓 구매, 여행 준비하기)을 수행할 수 있다. 어시스턴트 시스템은 또한, 사용자 개시 또는 상호작용 없이 온라인 정보 및 이벤트들에 기반하여 관리 또는 데이터-핸들링 태스크들을 수행할 수 있다. 어시스턴트 시스템에 의해 수행될 수 있는 그러한 태스크들의 예들은 스케줄 관리(예컨대, 사용자가 교통 조건들로 인해 늦게 뛰고 있다는 경보를 저녁 식사 날짜에 전송하는 것, 양 당사자들에 대한 업데이트 스케줄들, 및 식당 예약 시간을 변화시키는 것)를 포함할 수 있다. 어시스턴트 시스템은 컴퓨팅 디바이스들, API(application programming interface)들, 및 사용자 디바이스들 상의 애플리케이션들의 확산(proliferation)의 조합에 의해 가능해질 수 있다.
소셜 네트워킹 웹사이트를 포함할 수 있는 소셜 네트워킹 시스템은 소셜 네트워킹 시스템의 사용자들(이를테면, 개인들 또는 조직들)이 소셜 네트워킹 시스템과 상호작용하고 소셜 네트워킹 시스템을 통해 서로 상호작용하는 것을 가능하게 할 수 있다. 소셜 네트워킹 시스템은, 사용자로부터의 입력으로, 사용자와 연관된 사용자 프로파일을 생성하여 소셜 네트워킹 시스템에 저장할 수 있다. 사용자 프로파일은 인구통계 정보, 통신 채널 정보, 및 사용자의 개인 관심사들에 관한 정보를 포함할 수 있다. 소셜 네트워킹 시스템은 또한, 사용자로부터의 입력으로, 소셜 네트워킹 시스템의 다른 사용자들과 사용자의 관계들의 레코드를 생성 및 저장할 수 있을뿐만 아니라, 사용자들 사이의 또는 사용자들 간의 소셜 상호작용을 가능하게 하기 위한 서비스들(예컨대, 프로파일/뉴스 피드 포스트들, 사진 공유, 이벤트 조직, 메시징, 게임들, 또는 광고들)을 제공할 수 있다.
소셜 네트워킹 시스템은, 하나 이상의 네트워크들을 통해, 소셜 네트워킹 시스템의 서비스들과 관련된 콘텐츠 또는 메시지들을 사용자의 모바일 또는 다른 컴퓨팅 디바이스에 전송할 수 있다. 사용자는 또한, 사용자의 사용자 프로파일 및 소셜 네트워킹 시스템 내의 다른 데이터에 액세스하기 위해 사용자의 모바일 또는 다른 컴퓨팅 디바이스 상에 소프트웨어 애플리케이션들을 설치할 수 있다. 소셜 네트워킹 시스템은 사용자에게 디스플레이할 개인화된 세트의 콘텐츠 오브젝트들, 이를테면, 사용자에게 연결된 다른 사용자들의 애그리케이팅(aggregate)된 스토리들의 뉴스피드를 생성할 수 있다.
특정 실시예들에서, 어시스턴트 시스템은 사용자가 정보 또는 서비스들을 획득하는 것을 보조할 수 있다. 어시스턴트 시스템은, 사용자가 보조를 얻기 위해 스테이트풀 및 멀티-턴 대화(stateful and multi-turn conversation)들에서 멀티-모달 사용자 입력(이를테면, 음성, 텍스트, 이미지, 비디오, 모션)을 이용하여 어시스턴트 시스템과 상호작용하는 것을 가능하게 할 수 있다. 제한이 아닌 예로서, 어시스턴트 시스템은 오디오(구두) 입력 및 비구두 입력, 이를테면, 비전, 위치, 제스처, 모션 또는 하이브리드/멀티-모달 입력 양자 모두를 지원할 수 있다. 어시스턴트 시스템은 사용자와 연관된 개인 정보 및 콘텍스츄얼(contextual) 정보 양자 모두를 포함하는 사용자 프로파일을 생성 및 저장할 수 있다. 특정 실시예들에서, 어시스턴트 시스템은 자연어 이해를 사용하여 사용자 입력을 분석할 수 있다. 분석은 보다 개인화된 콘텍스트-인식 이해를 위해 사용자의 사용자 프로파일에 기반할 수 있다. 어시스턴트 시스템은 분석에 기반하여 사용자 입력과 연관된 엔티티들을 리졸빙(resolve)할 수 있다. 특정 실시예들에서, 어시스턴트 시스템은 리졸빙된 엔티티들과 연관된 정보 또는 서비스들을 획득하기 위해 상이한 에이전트들과 상호작용할 수 있다. 어시스턴트 시스템은 자연어 생성을 사용함으로써 정보 또는 서비스들에 관한 사용자에 대한 응답을 생성할 수 있다. 사용자와의 상호작용을 통해, 어시스턴트 시스템은 사용자와의 대화 흐름을 관리 및 진전시키기 위해 다이얼로그 관리 기법들을 사용할 수 있다. 특정 실시예들에서, 어시스턴트 시스템은 정보를 요약함으로써 획득된 정보를 사용자가 효과적이고 효율적으로 소화시키는 것을 추가로 보조할 수 있다. 어시스턴트 시스템은 또한, 사용자가 온라인 소셜 네트워크와 상호작용하는 것을 돕는 툴들을 제공(예컨대, 포스트들, 코멘트들, 메시지들을 생성)함으로써 사용자가 온라인 소셜 네트워크에 더 관여하는 것을 보조할 수 있다. 어시스턴트 시스템은 부가적으로, 이벤트들의 추적을 유지하는 것과 같은 상이한 태스크들을 사용자가 관리하는 것을 보조할 수 있다. 특정 실시예들에서, 어시스턴트 시스템은, 사용자 입력 없이, 사용자에 대해 관련된 시간에 사용자 프로파일에 기반하여 사용자 관심사들 및 선호도들과 관련된 태스크들을 선행적으로(proactively) 실행할 수 있다. 특정 실시예들에서, 어시스턴트 시스템은, 사용자의 프로파일 또는 다른 사용자 정보에 액세스하고 상이한 태스크들을 실행하는 것이 사용자의 프라이버시 세팅들에 따라 허용되는 것을 보장하기 위해 프라이버시 세팅들을 체크할 수 있다.
특정 실시예들에서, 어시스턴트 시스템은 클라이언트 측 프로세스들 및 서버 측 프로세스들 양자 모두에 구축된 하이브리드 아키텍처를 통해 사용자를 보조할 수 있다. 클라이언트 측 프로세스들 및 서버 측 프로세스들은, 사용자 입력을 프로세싱하고 사용자에게 보조를 제공하기 위한 2 개의 병렬 워크플로우들일 수 있다. 특정 실시예들에서, 클라이언트 측 프로세스들은 사용자와 연관된 클라이언트 시스템 상에서 로컬로 수행될 수 있다. 대조적으로, 서버 측 프로세스들은 하나 이상의 컴퓨팅 시스템들 상에서 원격으로 수행될 수 있다. 특정 실시예들에서, 클라이언트 시스템 상의 중재자(arbitrator)는, 사용자 입력(예컨대, 오디오 신호)을 수신하는 것을 조정하고, 사용자 입력에 응답하기 위해 클라이언트 측 프로세스를 사용할지, 서버 측 프로세스를 사용할지 또는 양자 모두를 사용할지를 결정하며, 그리고 각각의 프로세스로부터의 프로세싱 결과들을 분석할 수 있다. 중재자는 클라이언트 측 또는 서버 측 상의 에이전트들에게 전술된 분석들에 기반하여 사용자 입력과 연관된 태스크들을 실행하도록 명령할 수 있다. 실행 결과들은 클라이언트 시스템에 대한 출력으로서 추가로 렌더링될 수 있다. 클라이언트 측 및 서버 측 프로세스들 양자 모두를 레버리징(leveraging)함으로써, 어시스턴트 시스템은, 사용자 프라이버시를 보호하고 보안을 향상시키면서 동시에 컴퓨팅 자원들의 최적의 사용으로 사용자를 효과적으로 보조할 수 있다.
특정 실시예들에서, 어시스턴트 시스템은 선행적 콘텐츠 제안들을 사용자에게 제공할 수 있으며, 이는 다양한 멀티모달 신호들에 의해 트리거될 수 있다. 선행적 콘텐츠는 또한, 사용자의 요청에 응답하여 후속 액션들로서 제공될 수 있으며, 이는 일종의 반-선행적 사용 사례(semi-proactive use case)로 간주될 수 있다(즉, 이는 사용자 요청에 응답하는 것이기 때문에 완전히 선행적은 아닐 수 있음). 선행적 콘텐츠는 제안된 질의들, 제안된 후속 액션들, 보충 정보, 조사(survey)들, 또는 임의의 다른 적절한 콘텐츠를 포함할 수 있다. 후속 액션들로서 제공될 때, 선행적 콘텐츠는 사용자의 태스크가 완료된 후 대화를 확장시킴으로써 사용자 다이얼로그들을 풍부하게 할 수 있다. 제한이 아닌 예로서, 사용자는 "몇 시지?"라고 물을 수 있다. 어시스턴트 시스템은 "오전 11시 30 분입니다"라고 답변할 수 있다. 어시스턴트 시스템은 추가로, "당신의 캘린더를 보시겠습니까?"와 같은 제안된 후속 액션을 제공하거나 또는 "정오에 당신의 치과 예약에 도달하는 데 15 분이 걸릴 것입니다"와 같은 보충 정보를 제공할 수 있다. 제한이 아닌 다른 예로서, 사용자는 "바로 지금 어떤 노래가 재생되고 있는가?"라고 물을 수 있으며, 여기서, 사용자로부터 요청된 태스크는 [IN:get_track_info_music()]일 수 있다. 어시스턴트 시스템은 "이는 Outkast에 의한 Hey Ya입니다"라고 답변할 수 있으며, 이는 태스크의 완료를 마킹한다. 어시스턴트 시스템은 추가로, "이 노래를 당신의 즐겨찾기에 추가하길 원하십니까?"라고 선행적으로 물을 수 있으며, 이는 제안된 후속 액션(즉, [IN:add_to_favorites()])에 대응한다. 태스크의 완료, 사용자 콘텍스트의 변화, 또는 관련 멀티모달 신호는 선행적 정책을 트리거할 수 있다. 선행적 정책에 기반하여, 어시스턴트 시스템은 어떤 종류의 선행적 콘텐츠를 실행할지를 결정할 수 있다. 어시스턴트 시스템은 사용자와의 사전 상호작용들 또는 사용자에 관한 사전 지식을 취하여, 어떤 선행적 콘텐츠가 적절한지를 결정할 수 있다. 어시스턴트 시스템은 다이얼로그의 각각의 턴에 대한 사용자 피드백에 기반하여 또는 멀티모달 콘텍스트에서 선행적 콘텐츠의 체인들을 생성할 수 있으며, 여기서, 사용자가 선행적 콘텐츠 또는 동적 멀티모달 신호들과 상호작용하는 것에 대한 응답으로, 어시스턴트 시스템은 계속해서 선행적으로 콘텐츠를 제공할 수 있다. 제한이 아닌 예로서, 어시스턴트 시스템은, 어시스턴트 시스템이 각각의 턴의 종료 시에 새로운 추천을 제공하는 추천자 시스템으로서 기능할 수 있다. 선행적 콘텐츠를 통해, 어시스턴트 시스템은, 어시스턴트 시스템과 연관된 추가적인 특징들 또는 향상들을 위해 사용될 수 있는 핵심 기법들 그리고 성장(예컨대, 사용자 교육) 및 사용자 만족도 측정을 위한 즉각적인 기회들을 제공할 수 있다. 본 개시내용은 특정 방식으로 특정 시스템들에 의해 특정 선행적 콘텐츠를 생성하는 것을 설명하지만, 본 개시내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 선행적 콘텐츠를 생성하는 것을 고려한다.
특정 실시예들에서, 어시스턴트 시스템은 제 1 사용자와 연관된 선행적 트리거들과 연관된 하나 이상의 입력들을 수신할 수 있다. 어시스턴트 시스템은, 하나 이상의 선행적 정책들에 기반하여 제 1 사용자가 선행적 제안들을 수신할 자격이 있는지 여부를 결정할 수 있다. 이어서, 어시스턴트 시스템은, 제 1 사용자와 연관된 사용자 콘텍스트 데이터 및 하나 이상의 입력들에 기반하여 하나 이상의 선행적 제안들을 생성할 수 있다. 특정 실시예들에서, 어시스턴트 시스템은, 제 1 사용자와 연관된 태스크 이력 데이터에 기반하여 선행적 제안들 중 하나 이상을 선택할 수 있다. 어시스턴트 시스템은 선행적 콘텐츠를 제 1 사용자에게 제공하기 위한 명령들을 제 1 사용자와 연관된 클라이언트 시스템에 추가로 전송할 수 있다. 선행적 콘텐츠는 선택된 선행적 제안들을 포함할 수 있다.
선행적 제안들을 제공하는 목표를 달성하기 위해 특정 기술적 난제들이 존재할 수 있다. 하나의 기술적 난제는 어떤 선행적 제안들을 사용자에게 제공할지를 정확하게 결정하는 것을 포함할 수 있다. 위의 난제를 해결하기 위해 본원에서 개시된 실시예들에 의해 제시된 솔루션은 사용자 콘텍스트, 다이얼로그 콘텍스트, 사용자 태스크 이력, 사용자 메모리, 및 지식 그래프를 사용하여 선행적 제안들을 결정하는 것인데, 그 이유는 이들 상이한 타입들의 데이터가 추천된 선행적 제안들이 사용자가 관심 있고 사용자에게 관련됨을 보장할 수 있기 때문이다. 다른 기술적 난제는 원하지 않는 제안들로 사용자에게 과부하를 주지 않는 것을 포함할 수 있다. 이러한 난제를 해결하기 위해 본원에서 개시된 실시예들에 의해 제시된 솔루션들은, 사용자가 선행적 제안들에 대해 자격이 있는지 여부를 결정하기 위해 사용자 콘텍스트 데이터, 태스크 이력 데이터, 또는 사용자 메모리에 기반하여 다이얼로그 정책들을 사용하는 것을 포함하는데, 그 이유는 그러한 다이얼로그 정책들은 사용자가 선행적 제안을 원하는지 여부를 평가하기 위해 사용자와 관련된 이력 정보 및 현재 정보 양자 모두를 효과적으로 사용할 수 있기 때문이다. 다른 기술적 난제는, 가장 적절한 조건 하에서 사용자에게 선행적 콘텐츠를 제공하는 것을 포함할 수 있다. 이러한 난제를 해결하기 위해 본원에서 개시된 실시예들에 의해 제시된 솔루션은, 사용자 콘텍스트 데이터, 사용자 메모리, 또는 지식 그래프에 기반하여 선행적 콘텐츠의 전달 스케줄을 결정하는 것을 포함하는데, 그 이유는 이들 타입들의 데이터가 사용자가 선행적 콘텐츠로 촉구될 용의가 있을 수 있다는 개인 선호도들을 캡처할 수 있기 때문이다.
본원에서 개시된 특정 실시예들은 하나 이상의 기술적 장점들을 제공할 수 있다. 실시예들의 기술적 장점은, 상이한 타입들의 멀티모달 신호들에 응답하여 사용자들에게 선행적 제안들을 자동으로 제공함으로써, 어시스턴트 시스템에 관여하는 사용자들의 정도를 증가시키는 것을 포함할 수 있다. 실시예들의 다른 기술적 장점은, 어시스턴트 시스템이 이력 데이터에 기반하여 사용자가 어떤 스킬들을 아직 탐구하지 않았는지를 정확하게 결정하고 사용자에게 그러한 스킬들과 관련된 제안들을 제공할 수 있기 때문에, 어시스턴트 시스템이 가능한 새로운 스킬들을 사용자가 학습하도록 보조하는 것을 포함할 수 있다. 본원에서 개시된 특정 실시예들은 위의 기술적 장점들 중 일부 또는 전부를 제공할 수 있거나 또는 아무것도 제공하지 않을 수 있다. 하나 이상의 다른 기술적 장점들은 본 개시내용의 도면들, 설명들 및 청구항들의 관점에서 당업자에게 용이하게 명백할 수 있다.
본원에서 개시된 실시예들은 단지 예들이며, 본 개시내용의 범위는 이들로 제한되지 않는다. 특정 실시예들은 본원에서 개시된 실시예들의 컴포넌트들, 엘리먼트들, 특징들, 기능들, 동작들 또는 단계들 중 전부 또는 일부를 포함할 수 있거나 또는 아무것도 포함하지 않을 수 있다. 본 발명에 따른 실시예들은 특히, 방법, 저장 매체, 시스템 및 컴퓨터 프로그램 제품에 관한 첨부된 청구항들에 개시되며, 여기서, 하나의 청구항 카테고리, 예컨대, 방법에서 언급된 임의의 특징은 다른 청구항 카테고리, 예컨대, 시스템에서도 또한 청구될 수 있다. 첨부된 청구항들에서의 인용들 또는 종속성들은 공식적인 이유들을 위해서만 선택된다. 그러나, 임의의 이전의 청구항들에 대한 고의적인 참조(특히, 다수의 종속성들)로 인한 임의의 청구 대상이 또한 청구될 수 있고, 이에 따라, 청구항들 및 이들의 특징들의 임의의 조합이 개시되며, 첨부된 청구항들에서 선택된 종속성들에 관계없이 청구될 수 있다. 청구될 수 있는 청구 대상은, 첨부된 청구항들에 제시된 특징들의 조합들뿐만 아니라 청구항들에서의 특징들의 임의의 다른 조합을 포함하며, 여기서, 청구항들에서 언급된 각각의 특징은 청구항들에서의 임의의 다른 특징 또는 다른 특징들의 조합과 조합될 수 있다. 더욱이, 본원에 설명 또는 도시된 실시예들 및 특징들 중 임의의 것은 별개의 청구항에서 청구될 수 있고 그리고/또는 본원에 설명 또는 도시된 임의의 실시예 또는 특징과 임의의 조합으로 또는 첨부된 청구항들의 특징들 중 임의의 특징과 임의의 조합으로 청구될 수 있다.
도 1은 어시스턴트 시스템과 연관된 예시적인 네트워크 환경을 예시한다.
도 2는 어시스턴트 시스템의 예시적인 아키텍처를 예시한다.
도 3은 어시스턴트 시스템의 서버 측 프로세스들의 예시적인 다이어그램 흐름을 예시한다.
도 4는 어시스턴트 시스템에 의해 사용자 입력을 프로세싱하는 예시적인 다이어그램 흐름을 예시한다.
도 5는 선행적 제안들을 제공하기 위한 예시적인 아키텍처를 예시한다.
도 6a는 시간을 체크하기 위한 사용자 요청에 응답하는 예시적인 선행적 제안을 예시한다.
도 6b는 시간을 체크하기 위한 사용자 요청에 응답하는 다른 예시적인 선행적 제안을 예시한다.
도 7a는 사진을 찍기 위한 사용자 요청에 응답하는 예시적인 선행적 제안을 예시한다.
도 7b는 사진을 찍기 위한 사용자 요청에 응답하는 다른 예시적인 선행적 제안을 예시한다.
도 8은 시각 신호에 응답하는 예시적인 선행적 제안을 예시한다.
도 9는 오디오 신호에 응답하는 예시적인 선행적 제안을 예시한다.
도 10은 선행적 제안들의 체인의 예를 예시한다.
도 11은 선행적 제안들을 제공하기 위한 예시적인 방법을 예시한다.
도 12는 예시적인 소셜 그래프를 예시한다.
도 13은 임베딩 공간의 예시적인 뷰를 예시한다.
도 14는 예시적인 인공 뉴럴 네트워크를 예시한다.
도 15는 예시적인 컴퓨터 시스템을 예시한다.
시스템 개요
도 1은 어시스턴트 시스템과 연관된 예시적인 네트워크 환경(100)을 예시한다. 네트워크 환경(100)은 네트워크(110)에 의해 서로 연결된 클라이언트 시스템(130), 어시스턴트 시스템(140), 소셜 네트워킹 시스템(160), 및 제 3 자 시스템(170)을 포함한다. 도 1이 클라이언트 시스템(130), 어시스턴트 시스템(140), 소셜 네트워킹 시스템(160), 제 3 자 시스템(170) 및 네트워크(110)의 특정 어레인지먼트를 예시하지만, 본 개시내용은 클라이언트 시스템(130), 어시스턴트 시스템(140), 소셜 네트워킹 시스템(160), 제 3 자 시스템(170) 및 네트워크(110)의 임의의 적절한 어레인지먼트를 고려한다. 제한이 아닌 예로서, 클라이언트 시스템(130), 소셜 네트워킹 시스템(160), 어시스턴트 시스템(140) 및 제 3 자 시스템(170) 중 둘 이상은 네트워크(110)를 우회하여 서로 직접 연결될 수 있다. 다른 예로서, 클라이언트 시스템(130), 어시스턴트 시스템(140), 소셜 네트워킹 시스템(160), 및 제 3 자 시스템(170) 중 둘 이상은, 물리적으로 또는 논리적으로, 전체적으로 또는 부분적으로 서로 코로케이트(co-locate)될 수 있다. 게다가, 도 1이 특정 수의 클라이언트 시스템들(130), 어시스턴트 시스템들(140), 소셜 네트워킹 시스템들(160), 제 3 자 시스템들(170) 및 네트워크들(110)을 예시하지만, 본 개시내용은 임의의 적절한 수의 클라이언트 시스템들(130), 어시스턴트 시스템들(140), 소셜 네트워킹 시스템들(160), 제 3 자 시스템들(170) 및 네트워크들(110)을 고려한다. 제한이 아닌 예로서, 네트워크 환경(100)은 다수의 클라이언트 시스템들(130), 어시스턴트 시스템들(140), 소셜 네트워킹 시스템들(160), 제 3 자 시스템들(170) 및 네트워크들(110)을 포함할 수 있다.
본 개시내용은 임의의 적절한 네트워크(110)를 고려한다. 제한이 아닌 예로서, 네트워크(110)의 하나 이상의 부분들은 애드 혹 네트워크, 인트라넷, 엑스트라넷, VPN(virtual private network), LAN(local area network), WLAN(wireless LAN), WAN(wide area network), WWAN(wireless WAN), MAN(metropolitan area network), 인터넷의 일부분, PSTN(Public Switched Telephone Network)의 일부분, 셀룰러 전화 네트워크, 또는 이들 중 둘 이상의 조합을 포함할 수 있다. 네트워크(110)는 하나 이상의 네트워크들(110)을 포함할 수 있다.
링크들(150)은 클라이언트 시스템(130), 어시스턴트 시스템(140), 소셜 네트워킹 시스템(160), 및 제 3 자 시스템(170)을 통신 네트워크(110)에 또는 서로 연결할 수 있다. 본 개시내용은 임의의 적절한 링크들(150)을 고려한다. 특정 실시예들에서, 하나 이상의 링크들(150)은 하나 이상의 유선(이를테면, 예컨대, DSL(Digital Subscriber Line) 또는 DOCSIS(Data over Cable Service Interface Specification)), 무선(이를테면, 예컨대, Wi-Fi 또는 WiMAX(Worldwide Interoperability for Microwave Access)), 또는 광학(이를테면, 예컨대, SONET(Synchronous Optical Network) 또는 SDH(Synchronous Digital Hierarchy)) 링크들을 포함한다. 특정 실시예들에서, 하나 이상의 링크들(150) 각각은 애드 혹 네트워크, 인트라넷, 엑스트라넷, VPN, LAN, WLAN, WAN, WWAN, MAN, 인터넷의 일부분, PSTN의 일부분, 셀룰러 기술-기반 네트워크, 위성 통신 기술-기반 네트워크, 다른 링크(150), 또는 둘 이상의 그러한 링크들(150)의 조합을 포함한다. 링크들(150)은 네트워크 환경(100) 전체에 걸쳐 반드시 동일할 필요는 없다. 하나 이상의 제 1 링크들(150)은 하나 이상의 제 2 링크들(150)과 하나 이상의 측면들에서 상이할 수 있다.
특정 실시예들에서, 클라이언트 시스템(130)은, 하드웨어, 소프트웨어, 또는 임베딩된 로직 컴포넌트들 또는 둘 이상의 그러한 컴포넌트들의 조합을 포함하고 클라이언트 시스템(130)에 의해 구현 또는 지원되는 적절한 기능성들을 수행할 수 있는 전자 디바이스일 수 있다. 제한이 아닌 예로서, 클라이언트 시스템(130)은 데스크톱 컴퓨터, 노트북 또는 랩톱 컴퓨터, 넷북, 태블릿 컴퓨터, e-북 리더, GPS 디바이스, 카메라, PDA(personal digital assistant), 핸드헬드 전자 디바이스, 셀룰러 전화, 스마트폰, 스마트 스피커, VR(virtual reality) 헤드셋, AR(augment reality) 스마트 안경, 다른 적절한 전자 디바이스, 또는 이들의 임의의 적절한 조합과 같은 컴퓨터 시스템을 포함할 수 있다. 특정 실시예들에서, 클라이언트 시스템(130)은 스마트 어시스턴트 디바이스일 수 있다. 스마트 어시스턴트 디바이스들에 관한 더 많은 정보는, 2018 년 4 월 9 일자로 출원된 미국 특허 출원 번호 제 15/949011 호, 2018 년 10 월 5 일자로 출원된 미국 특허 출원 번호 제 16/153574 호, 2018 년 1 월 3 일자로 출원된 미국 디자인 특허 출원 번호 제 29/631910 호, 2018 년 1 월 2 일자로 출원된 미국 디자인 특허 출원 번호 제 29/631747 호, 2018 년 1 월 3 일자로 출원된 미국 디자인 특허 출원 번호 제 29/631913 호, 및 2018 년 1 월 3 일자로 출원된 미국 디자인 특허 출원 번호 제 29/631914 호에서 발견될 수 있으며, 이들 각각은 인용에 의해 포함된다. 본 개시내용은 임의의 적절한 클라이언트 시스템들(130)을 고려한다. 클라이언트 시스템(130)은 클라이언트 시스템(130)의 네트워크 사용자가 네트워크(110)에 액세스하는 것을 가능하게 할 수 있다. 클라이언트 시스템(130)은 클라이언트 시스템(130)의 사용자가 다른 클라이언트 시스템들(130)의 다른 사용자들과 통신하는 것을 가능하게 할 수 있다.
특정 실시예들에서, 클라이언트 시스템(130)은 웹 브라우저(132)를 포함할 수 있고, 하나 이상의 애드-온(add-on)들, 플러그-인들, 또는 다른 확장들을 가질 수 있다. 클라이언트 시스템(130)의 사용자는 웹 브라우저(132)를 특정 서버(이를테면, 서버(162) 또는 제 3 자 시스템(170)과 연관된 서버)로 지향시키는 URL(Uniform Resource Locator) 또는 다른 어드레스를 입력할 수 있고, 웹 브라우저(132)는 HTTP(Hyper Text Transfer Protocol) 요청을 생성하고 이 HTTP 요청을 서버에 통신할 수 있다. 서버는 HTTP 요청을 수락하고, HTTP 요청에 응답하여 하나 이상의 HTML(Hyper Text Markup Language) 파일들을 클라이언트 시스템(130)에 통신할 수 있다. 클라이언트 시스템(130)은 사용자에게의 프리젠테이션을 위해 서버로부터의 HTML 파일들에 기반하여 웹 인터페이스(예컨대, 웹페이지)를 렌더링할 수 있다. 본 개시내용은 임의의 적절한 소스 파일들을 고려한다. 제한이 아닌 예로서, 웹 인터페이스는 특정 요구들에 따라 HTML 파일들, XHTML(Extensible Hyper Text Markup Language) 파일들, 또는 XML(Extensible Markup Language) 파일들로부터 렌더링될 수 있다. 그러한 인터페이스들은 또한, 스크립트들, 마크업 언어와 스크립트들의 조합들 등을 실행할 수 있다. 본원에서, 웹 인터페이스에 대한 언급은, 적절한 경우, (브라우저가 웹 인터페이스를 렌더링하기 위해 사용할 수 있는) 하나 이상의 대응하는 소스 파일들을 포함하며, 그 반대의 경우도 마찬가지이다.
특정 실시예들에서, 클라이언트 시스템(130)은 클라이언트 시스템(130) 상에 설치된 소셜 네트워킹 애플리케이션(134)을 포함할 수 있다. 클라이언트 시스템(130)의 사용자는 소셜 네트워킹 애플리케이션(134)을 사용하여 온라인 소셜 네트워크 상에 액세스할 수 있다. 클라이언트 시스템(130)의 사용자는 소셜 네트워킹 애플리케이션(134)을 사용하여 사용자의 소셜 연결들(예컨대, 친구들, 팔로어들, 팔로잉된 계정들, 연락처들 등)과 통신할 수 있다. 클라이언트 시스템(130)의 사용자는 또한, 소셜 네트워킹 애플리케이션(134)을 사용하여 온라인 소셜 네트워크 상의 복수의 콘텐츠 오브젝트들(예컨대, 포스트들, 뉴스 기사들, 휘발성 콘텐츠(ephemeral content) 등)과 상호작용할 수 있다. 제한이 아닌 예로서, 사용자는 소셜 네트워킹 애플리케이션(134)을 사용하여 트렌딩 토픽들 및 뉴스 속보를 브라우징할 수 있다.
특정 실시예들에서, 클라이언트 시스템(130)은 어시스턴트 애플리케이션(136)을 포함할 수 있다. 클라이언트 시스템(130)의 사용자는 어시스턴트 애플리케이션(136)을 사용하여 어시스턴트 시스템(140)과 상호작용할 수 있다. 특정 실시예들에서, 어시스턴트 애플리케이션(136)은 독립형 애플리케이션을 포함할 수 있다. 특정 실시예들에서, 어시스턴트 애플리케이션(136)은 소셜 네트워킹 애플리케이션(134) 또는 다른 적절한 애플리케이션(예컨대, 메시징 애플리케이션)에 통합될 수 있다. 특정 실시예들에서, 어시스턴트 애플리케이션(136)은 또한, 클라이언트 시스템(130), 어시스턴트 하드웨어 디바이스, 또는 임의의 다른 적절한 하드웨어 디바이스들에 통합될 수 있다. 특정 실시예들에서, 어시스턴트 애플리케이션(136)은 웹 브라우저(132)를 통해 액세스될 수 있다. 특정 실시예들에서, 사용자는 상이한 모달리티들을 통해 입력을 제공할 수 있다. 제한이 아닌 예로서, 모달리티들은 오디오, 텍스트, 이미지, 비디오, 모션, 배향 등을 포함할 수 있다. 어시스턴트 애플리케이션(136)은 사용자 입력을 어시스턴트 시스템(140)에 통신할 수 있다. 사용자 입력에 기반하여, 어시스턴트 시스템(140)은 응답들을 생성할 수 있다. 어시스턴트 시스템(140)은 생성된 응답들을 어시스턴트 애플리케이션(136)에 전송할 수 있다. 이어서, 어시스턴트 애플리케이션(136)은 클라이언트 시스템(130)의 사용자에게 응답들을 제공할 수 있다. 제공된 응답들은 오디오, 텍스트, 이미지 및 비디오와 같은 상이한 모달리티들에 기반할 수 있다. 제한이 아닌 예로서, 사용자는 클라이언트 시스템(130)의 마이크로폰에 말함으로써 트래픽 정보에 관해 어시스턴트 애플리케이션(136)에 구두로 요청(즉, 오디오 모달리티를 통해 요청)할 수 있다. 이어서, 어시스턴트 애플리케이션(136)은 어시스턴트 시스템(140)에 요청을 통신할 수 있다. 이에 따라서, 어시스턴트 시스템(140)은 응답을 생성하고 이 응답을 다시 어시스턴트 애플리케이션(136)에 전송할 수 있다. 어시스턴트 애플리케이션(136)은 클라이언트 시스템(130)의 디스플레이 상의 텍스트 및/또는 이미지들로 사용자에게 응답을 추가로 제공할 수 있다.
특정 실시예들에서, 어시스턴트 시스템(140)은 사용자들이 상이한 소스들로부터 정보를 리트리브(retrieve)하는 것을 보조할 수 있다. 어시스턴트 시스템(140)은 또한, 사용자가 상이한 서비스 제공자들로부터 서비스들을 요청하는 것을 보조할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 클라이언트 시스템(130)의 어시스턴트 애플리케이션(136)을 통해 정보 또는 서비스들에 대한 사용자 요청을 수신할 수 있다. 어시스턴트 시스템(140)은 사용자의 프로파일 및 다른 관련 정보에 기반하여 사용자 요청을 분석하기 위해 자연어 이해를 사용할 수 있다. 분석의 결과는 온라인 소셜 네트워크와 연관된 상이한 엔티티들을 포함할 수 있다. 이어서, 어시스턴트 시스템(140)은 이들 엔티티들과 연관된, 서비스들을 요청하거나 또는 정보를 리트리브할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은, 사용자를 위해 정보를 리트리브하거나 또는 서비스들을 요청할 때, 소셜 네트워킹 시스템(160) 및/또는 제 3 자 시스템(170)과 상호작용할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 자연어 생성 기법들을 사용하여 사용자를 위한 개인화된 통신 콘텐츠를 생성할 수 있다. 개인화된 통신 콘텐츠는 예컨대 요청된 서비스들의 상태 또는 리트리브된 정보를 포함할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은, 다이얼로그 관리 기법들을 사용함으로써, 사용자가 스테이트풀 및 멀티-턴 대화에서 정보 또는 서비스들에 관하여 어시스턴트 시스템(140)과 상호작용하는 것을 가능하게 할 수 있다. 어시스턴트 시스템(140)의 기능성은 아래의 도 2의 논의에서 더 상세히 설명된다.
특정 실시예들에서, 소셜 네트워킹 시스템(160)은 온라인 소셜 네트워크를 호스팅할 수 있는 네트워크-어드레싱 가능 컴퓨팅 시스템일 수 있다. 소셜 네트워킹 시스템(160)은 소셜 네트워킹 데이터, 이를테면, 예컨대, 사용자 프로파일 데이터, 개념 프로파일 데이터, 소셜 그래프 정보, 또는 온라인 소셜 네트워크와 관련된 다른 적절한 데이터를 생성, 저장, 수신 및 전송할 수 있다. 소셜 네트워킹 시스템(160)은 직접적으로 또는 네트워크(110)를 통해 네트워크 환경(100)의 다른 컴포넌트들에 의해 액세스될 수 있다. 제한이 아닌 예로서, 클라이언트 시스템(130)은, 직접적으로 또는 네트워크(110)를 통해, 웹 브라우저(132) 또는 소셜 네트워킹 시스템(160)과 연관된 네이티브 애플리케이션(예컨대, 모바일 소셜 네트워킹 애플리케이션, 메시징 애플리케이션, 다른 적절한 애플리케이션, 또는 이들의 임의의 조합)을 사용하여 소셜 네트워킹 시스템(160)에 액세스할 수 있다. 특정 실시예들에서, 소셜 네트워킹 시스템(160)은 하나 이상의 서버들(162)을 포함할 수 있다. 각각의 서버(162)는 단일 서버일 수 있거나, 또는 다수의 컴퓨터들 또는 다수의 데이터센터들에 걸쳐 있는 분산형 서버일 수 있다. 서버들(162)은 다양한 타입들, 이를테면, 예컨대, 그리고 제한 없이, 웹 서버, 뉴스 서버, 메일 서버, 메시지 서버, 광고 서버, 파일 서버, 애플리케이션 서버, 교환 서버, 데이터베이스 서버, 프록시 서버, 본원에 설명된 기능들 또는 프로세스들을 수행하기에 적절한 다른 서버, 또는 이들의 임의의 조합일 수 있다. 특정 실시예들에서, 각각의 서버(162)는 하드웨어, 소프트웨어, 또는 임베딩된 로직 컴포넌트들, 또는 서버(162)에 의해 구현 또는 지원되는 적절한 기능성들을 수행하기 위한 둘 이상의 그러한 컴포넌트들의 조합을 포함할 수 있다. 특정 실시예들에서, 소셜 네트워킹 시스템(160)은 하나 이상의 데이터 스토어들(164)을 포함할 수 있다. 데이터 스토어들(164)은 다양한 타입들의 정보를 저장하기 위해 사용될 수 있다. 특정 실시예들에서, 데이터 스토어들(164)에 저장된 정보는 특정 데이터 구조들에 따라 구성될 수 있다. 특정 실시예들에서, 각각의 데이터 스토어(164)는 관계형, 열형, 상관, 또는 다른 적절한 데이터베이스일 수 있다. 본 개시내용은 특정 타입들의 데이터베이스들을 설명하거나 또는 예시하지만, 본 개시내용은 임의의 적절한 타입들의 데이터베이스들을 고려한다. 특정 실시예들은 클라이언트 시스템(130), 소셜 네트워킹 시스템(160), 어시스턴트 시스템(140) 또는 제 3 자 시스템(170)이 데이터 스토어(164)에 저장된 정보를 관리, 리트리브, 수정, 추가 또는 삭제하는 것을 가능하게 하는 인터페이스들을 제공할 수 있다.
특정 실시예들에서, 소셜 네트워킹 시스템(160)은 하나 이상의 데이터 스토어들(164)에 하나 이상의 소셜 그래프들을 저장할 수 있다. 특정 실시예들에서, 소셜 그래프는, 다수의 사용자 노드들(각각은 특정 사용자에 대응함) 또는 다수의 개념 노드들(각각은 특정 개념에 대응함)을 포함할 수 있는 다수의 노드들을 포함할 수 있고, 노드들을 연결하는 다수의 에지들을 포함할 수 있다. 소셜 네트워킹 시스템(160)은 온라인 소셜 네트워크의 사용자들에게 다른 사용자들과 통신 및 상호작용하는 능력을 제공할 수 있다. 특정 실시예들에서, 사용자들은 소셜 네트워킹 시스템(160)을 통해 온라인 소셜 네트워크에 가입할 수 있고, 이어서, 그들이 연결되기를 원하는 소셜 네트워킹 시스템(160)의 다수의 다른 사용자들에 대한 연결들(예컨대, 관계들)을 추가할 수 있다. 본원에서, "친구"라는 용어는 사용자가 소셜 네트워킹 시스템(160)을 통해 연결, 연관 또는 관계를 형성한 소셜 네트워킹 시스템(160)의 임의의 다른 사용자를 지칭할 수 있다.
특정 실시예들에서, 소셜 네트워킹 시스템(160)은 소셜 네트워킹 시스템(160)에 의해 지원되는 다양한 타입들의 아이템들 또는 오브젝트들에 대해 액션들을 취하는 능력을 사용자들에게 제공할 수 있다. 제한이 아닌 예로서, 아이템들 및 오브젝트들은, 소셜 네트워킹 시스템(160)의 사용자들이 속할 수 있는 그룹들 또는 소셜 네트워크들, 사용자가 관심을 가질 수 있는 이벤트들 또는 캘린더 엔트리들, 사용자가 사용할 수 있는 컴퓨터-기반 애플리케이션들, 사용자들이 서비스를 통해 아이템들을 구매 또는 판매할 수 있게 하는 트랜잭션들, 사용자가 수행할 수 있는 광고들과의 상호작용들, 또는 다른 적절한 아이템들 또는 오브젝트들을 포함할 수 있다. 사용자는, 소셜 네트워킹 시스템(160)과 별개이고 네트워크(110)를 통해 소셜 네트워킹 시스템(160)에 연결된 제 3 자 시스템(170)의 외부 시스템에 의해 또는 소셜 네트워킹 시스템(160)에서 표현될 수 있는 모든 것과 상호작용할 수 있다.
특정 실시예들에서, 소셜 네트워킹 시스템(160)은 다양한 엔티티들을 링크할 수 있다. 제한이 아닌 예로서, 소셜 네트워킹 시스템(160)은, 사용자들이 서로 상호작용할뿐만 아니라 제 3 자 시스템들(170) 또는 다른 엔티티들로부터 콘텐츠를 수신하는 것을 가능하게 할 수 있거나, 또는 사용자들이 API(application programming interface)들 또는 다른 통신 채널들을 통해 이들 엔티티들과 상호작용하도록 할 수 있다.
특정 실시예들에서, 제 3 자 시스템(170)은 하나 이상의 타입들의 서버들, 하나 이상의 데이터 스토어들, API들을 포함(그러나, 이에 제한되지 않음)하는 하나 이상의 인터페이스들, 하나 이상의 웹 서비스들, 하나 이상의 콘텐츠 소스들, 하나 이상의 네트워크들, 또는 예컨대 서버들과 통신할 수 있는 임의의 다른 적절한 컴포넌트들을 포함할 수 있다. 제 3 자 시스템(170)은 소셜 네트워킹 시스템(160)을 동작시키는 엔티티와 상이한 엔티티에 의해 동작될 수 있다. 그러나, 특정 실시예들에서, 소셜 네트워킹 시스템(160) 및 제 3 자 시스템들(170)은 소셜 네트워킹 시스템(160) 또는 제 3 자 시스템들(170)의 사용자들에게 소셜 네트워킹 서비스들을 제공하기 위해 서로 협력하여 동작할 수 있다. 이러한 의미에서, 소셜 네트워킹 시스템(160)은 제 3 자 시스템들(170)과 같은 다른 시스템들이 인터넷을 통해 사용자들에게 소셜 네트워킹 서비스들 및 기능성을 제공하기 위해 사용할 수 있는 플랫폼 또는 백본을 제공할 수 있다.
특정 실시예들에서, 제 3 자 시스템(170)은 제 3 자 콘텐츠 오브젝트 제공자를 포함할 수 있다. 제 3 자 콘텐츠 오브젝트 제공자는 클라이언트 시스템(130)에 통신될 수 있는 콘텐츠 오브젝트들의 하나 이상의 소스들을 포함할 수 있다. 제한이 아닌 예로서, 콘텐츠 오브젝트들은, 예컨대 영화 쇼 시간들, 영화 리뷰들, 식당 리뷰들, 식당 메뉴들, 제품 정보 및 리뷰들 또는 다른 적절한 정보와 같이, 사용자가 관심 있는 것들 또는 활동들에 관한 정보를 포함할 수 있다. 제한이 아닌 다른 예로서, 콘텐츠 오브젝트들은 인센티브 콘텐츠 오브젝트들, 이를테면, 쿠폰들, 할인 티켓들, 상품권들, 또는 다른 적절한 인센티브 오브젝트들을 포함할 수 있다. 특정 실시예들에서, 제 3 자 콘텐츠 제공자는 콘텐츠 오브젝트들 및/또는 서비스들을 제공하기 위해 하나 이상의 제 3 자 에이전트들을 사용할 수 있다. 제 3 자 에이전트는, 제 3 자 시스템(170) 상에서 호스팅되고 실행되는 구현일 수 있다.
특정 실시예들에서, 소셜 네트워킹 시스템(160)은 또한, 소셜 네트워킹 시스템(160)과의 사용자의 상호작용들을 향상시킬 수 있는 사용자-생성 콘텐츠 오브젝트들을 포함한다. 사용자-생성 콘텐츠는 사용자가 소셜 네트워킹 시스템(160)에 추가, 업로드, 전송 또는 "포스팅"할 수 있는 모든 것을 포함할 수 있다. 제한이 아닌 예로서, 사용자는 클라이언트 시스템(130)으로부터 소셜 네트워킹 시스템(160)으로 포스트들을 통신한다. 포스트들은 상태 업데이트들 또는 다른 텍스트 데이터, 위치 정보, 사진들, 비디오들, 링크들, 음악 또는 다른 유사한 데이터 또는 매체와 같은 데이터를 포함할 수 있다. 콘텐츠는 또한, 뉴스피드 또는 스트림과 같은 "통신 채널"을 통해 제 3 자에 의해 소셜 네트워킹 시스템(160)에 추가될 수 있다.
특정 실시예들에서, 소셜 네트워킹 시스템(160)은 다양한 서버들, 서브-시스템들, 프로그램들, 모듈들, 로그들 및 데이터 스토어들을 포함할 수 있다. 특정 실시예들에서, 소셜 네트워킹 시스템(160)은 웹 서버, 액션 로거, API-요청 서버, 관련성 및 랭킹 엔진, 콘텐츠 오브젝트 분류기, 통지 제어기, 액션 로그, 제 3 자 콘텐츠 오브젝트 노출 로그, 추론 모듈, 인증/프라이버시 서버, 검색 모듈, 광고-타겟팅 모듈, 사용자-인터페이스 모듈, 사용자-프로필 스토어, 연결 스토어, 제 3 자 콘텐츠 스토어, 또는 위치 스토어 중 하나 이상을 포함할 수 있다. 소셜 네트워킹 시스템(160)은 또한, 적절한 컴포넌트들, 이를테면, 네트워크 인터페이스들, 보안 메커니즘들, 로드 밸런서들, 페일오버 서버들, 관리 및 네트워크 동작 콘솔들, 다른 적절한 컴포넌트들, 또는 이들의 임의의 적절한 조합을 포함할 수 있다. 특정 실시예들에서, 소셜 네트워킹 시스템(160)은 사용자 프로파일들을 저장하기 위한 하나 이상의 사용자 프로파일 스토어들을 포함할 수 있다. 사용자 프로파일은 예컨대 전기(biographic) 정보, 인구통계 정보, 행동 정보, 소셜 정보, 또는 다른 타입들의 설명 정보, 이를테면, 직장 경험, 교육 이력, 취미들 또는 선호도들, 관심사들, 친화성들, 또는 위치를 포함할 수 있다. 관심사 정보는 하나 이상의 카테고리들과 관련된 관심사들을 포함할 수 있다. 카테고리들은 일반적 또는 특정적일 수 있다. 제한이 아닌 예로서, 사용자가 신발 브랜드에 관한 기사를 "좋아요"하면, 카테고리는 브랜드, 또는 "신발" 또는 "의류"의 일반적인 카테고리일 수 있다. 연결 스토어는 사용자들에 관한 연결 정보를 저장하기 위해 사용될 수 있다. 연결 정보는, 유사한 또는 공통적인 직장 경험, 그룹 멤버쉽들, 취미들, 교육 이력을 갖거나, 또는 임의의 방식으로 관련되거나 또는 공통 속성들을 공유하는 사용자들을 표시할 수 있다. 연결 정보는 또한, 콘텐츠(내부 및 외부 양자 모두)와 상이한 사용자들 사이의 사용자-정의 연결들을 포함할 수 있다. 웹 서버는 네트워크(110)를 통해 소셜 네트워킹 시스템(160)을 하나 이상의 클라이언트 시스템들(130) 또는 하나 이상의 제 3 자 시스템들(170)에 링크시키기 위해 사용될 수 있다. 웹 서버는 소셜 네트워킹 시스템(160)과 하나 이상의 클라이언트 시스템들(130) 사이에서 메시지들을 수신 및 라우팅하기 위한 메일 서버 또는 다른 메시징 기능성을 포함할 수 있다. API-요청 서버는 예컨대 어시스턴트 시스템(140) 또는 제 3 자 시스템(170)이 하나 이상의 API들을 호출함으로써 소셜 네트워킹 시스템(160)으로부터의 정보에 액세스하는 것을 가능하게 할 수 있다. 액션 로거는 소셜 네트워킹 시스템(160)을 온 또는 오프하는 사용자의 액션들에 관한 통신들을 웹 서버로부터 수신하기 위해 사용될 수 있다. 액션 로그와 함께, 제 3 자 콘텐츠 오브젝트들에 대한 사용자 노출들의 제 3 자 콘텐츠 오브젝트 로그가 유지될 수 있다. 통지 제어기는 콘텐츠 오브젝트들에 관한 정보를 클라이언트 시스템(130)에 제공할 수 있다. 정보는 통지들로서 클라이언트 시스템(130)에 푸시될 수 있거나, 또는 클라이언트 시스템(130)으로부터 수신된 요청에 응답하여 클라이언트 시스템(130)으로부터 정보가 풀링될 수 있다. 인증 서버들은 소셜 네트워킹 시스템(160)의 사용자들의 하나 이상의 프라이버시 세팅들을 강제(enforce)하기 위해 사용될 수 있다. 사용자의 프라이버시 세팅은 사용자와 연관된 특정 정보가 어떻게 공유될 수 있는지를 결정한다. 인증 서버는, 이를테면, 예컨대, 적절한 프라이버시 세팅들을 세팅함으로써, 사용자들의 액션들이 소셜 네트워킹 시스템(160)에 의해 로깅되거나 또는 다른 시스템들(예컨대, 제 3 자 시스템(170))과 공유되게 하는 것에 대해 사용자들이 옵트 인 또는 옵트 아웃하도록 할 수 있다. 제 3 자 콘텐츠 오브젝트 스토어들은 제 3 자 시스템(170)과 같은 제 3 자들로부터 수신된 콘텐츠 오브젝트들을 저장하기 위해 사용될 수 있다. 위치 스토어들은 사용자들과 연관된 클라이언트 시스템들(130)로부터 수신된 위치 정보를 저장하기 위해 사용될 수 있다. 광고 가격 모듈들은, 통지들의 형태로 사용자에게 관련 광고들을 제공하기 위해 소셜 정보, 현재 시간, 위치 정보, 또는 다른 적절한 정보를 결합할 수 있다.
어시스턴트 시스템들
도 2는 어시스턴트 시스템(140)의 예시적인 아키텍처를 예시한다. 특정 실시예들에서, 어시스턴트 시스템(140)은 사용자가 정보 또는 서비스들을 획득하는 것을 보조할 수 있다. 어시스턴트 시스템(140)은, 사용자가 보조를 얻기 위해 스테이트풀 및 멀티-턴 대화들에서 멀티-모달 사용자 입력(이를테면, 음성, 텍스트, 이미지, 비디오, 모션)을 이용하여 어시스턴트 시스템과 상호작용하는 것을 가능하게 할 수 있다. 제한이 아닌 예로서, 어시스턴트 시스템(140)은 오디오 입력(구두) 및 비구두 입력, 이를테면, 비전, 위치, 제스처, 모션 또는 하이브리드/멀티-모달 입력 양자 모두를 지원할 수 있다. 어시스턴트 시스템(140)은 사용자와 연관된 개인 정보 및 콘텍스츄얼 정보 양자 모두를 포함하는 사용자 프로파일을 생성 및 저장할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 자연어 이해를 사용하여 사용자 입력을 분석할 수 있다. 분석은 보다 개인화된 콘텍스트-인식 이해를 위해 사용자의 사용자 프로파일에 기반할 수 있다. 어시스턴트 시스템(140)은 분석에 기반하여 사용자 입력과 연관된 엔티티들을 리졸빙할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 리졸빙된 엔티티들과 연관된 정보 또는 서비스들을 획득하기 위해 상이한 에이전트들과 상호작용할 수 있다. 어시스턴트 시스템(140)은 자연어 생성을 사용함으로써 정보 또는 서비스들에 관한 사용자에 대한 응답을 생성할 수 있다. 사용자와의 상호작용을 통해, 어시스턴트 시스템(140)은 사용자와의 대화 흐름을 관리 및 진척시키기 위해 다이얼로그 관리 기법들을 사용할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 정보를 요약함으로써 획득된 정보를 사용자가 효과적이고 효율적으로 소화시키는 것을 추가로 보조할 수 있다. 어시스턴트 시스템(140)은 또한, 사용자가 온라인 소셜 네트워크와 상호작용하는 것을 돕는 툴들을 제공(예컨대, 포스트들, 코멘트들, 메시지들을 생성)함으로써 사용자가 온라인 소셜 네트워크에 더 관여하는 것을 보조할 수 있다. 어시스턴트 시스템(140)은 부가적으로, 이벤트들의 추적을 유지하는 것과 같은 상이한 태스크들을 사용자가 관리하는 것을 보조할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은, 사용자 입력 없이, 사용자에 대해 관련된 시간에 사용자 프로파일에 기반하여 사용자 관심사들 및 선호도들과 관련된 미리 승인된(pre-authorized) 태스크들을 선행적으로 실행할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은, 사용자의 프로파일 또는 다른 사용자 정보에 액세스하고 상이한 태스크들을 실행하는 것이 사용자의 프라이버시 세팅들에 따라 허용되는 것을 보장하기 위해 프라이버시 세팅들을 체크할 수 있다. 프라이버시 세팅들에 종속되는 사용자들을 보조하는 것에 관한 더 많은 정보는 2018 년 11 월 6 일자로 출원된 미국 특허 출원 번호 제 16/182542 호에서 발견될 수 있으며, 이는 인용에 의해 포함된다.
특정 실시예들에서, 어시스턴트 시스템(140)은 클라이언트 측 프로세스들 및 서버 측 프로세스들 양자 모두에 구축된 하이브리드 아키텍처를 통해 사용자를 보조할 수 있다. 클라이언트 측 프로세스들 및 서버 측 프로세스들은, 사용자 입력을 프로세싱하고 사용자에게 보조들을 제공하기 위한 2 개의 병렬 워크플로우들일 수 있다. 특정 실시예들에서, 클라이언트 측 프로세스들은 사용자와 연관된 클라이언트 시스템(130) 상에서 로컬로 수행될 수 있다. 대조적으로, 서버 측 프로세스들은 하나 이상의 컴퓨팅 시스템들 상에서 원격으로 수행될 수 있다. 특정 실시예들에서, 클라이언트 시스템(130) 상의 어시스턴트 오케스트레이터(orchestrator)는 사용자 입력(예컨대, 오디오 신호)을 수신하는 것을 조정하고, 사용자 입력에 응답하기 위해 클라이언트 측 프로세스들을 사용할지, 서버 측 프로세스들을 사용할지, 또는 양자 모두를 사용할지를 결정할 수 있다. 다이얼로그 중재자는 각각의 프로세스로부터의 프로세싱 결과들을 분석할 수 있다. 다이얼로그 중재자는 클라이언트 측 또는 서버 측 상의 에이전트들에게 전술된 분석들에 기반하여 사용자 입력과 연관된 태스크들을 실행하도록 명령할 수 있다. 실행 결과들은 클라이언트 시스템(130)에 대한 출력으로서 추가로 렌더링될 수 있다. 클라이언트 측 및 서버 측 프로세스들 양자 모두를 레버리징함으로써, 어시스턴트 시스템(140)은, 사용자 프라이버시를 보호하고 보안을 향상시키면서 동시에 컴퓨팅 자원들의 최적의 사용으로 사용자를 효과적으로 보조할 수 있다.
특정 실시예들에서, 어시스턴트 시스템(140)은 사용자와 연관된 클라이언트 시스템(130)으로부터 사용자 입력을 수신할 수 있다. 특정 실시예들에서, 사용자 입력은, 단일 턴에서 어시스턴트 시스템(140)에 전송되는 사용자-생성 입력일 수 있다. 사용자 입력은 구두, 비구두, 또는 이들의 조합일 수 있다. 제한이 아닌 예로서, 비구두 사용자 입력은 사용자의 음성, 비전, 위치, 활동, 제스처, 모션, 또는 이들의 조합에 기반할 수 있다. 사용자 입력이 사용자의 음성에 기반하면(예컨대, 사용자가 클라이언트 시스템(130)에게 말할 수 있음), 그러한 사용자 입력은 먼저 시스템 오디오 API(application programming interface)(202)에 의해 프로세싱될 수 있다. 시스템 오디오 API(202)는 에코 소거, 잡음 제거, 빔 형성, 및 자체-사용자 음성 활성화, 스피커 식별, VAD(voice activity detection), 및 어시스턴트 시스템(140)에 의해 용이하게 프로세싱 가능한 오디오 데이터를 생성하기 위한 임의의 다른 음향 기법들을 수행할 수 있다. 특정 실시예들에서, 시스템 오디오 API(202)는 사용자 입력으로부터 웨이크-워드(wake-word) 검출(204)을 수행할 수 있다. 제한이 아닌 예로서, 웨이크-워드는 "어시스턴트야"일 수 있다. 그러한 웨이크-워드가 검출되면, 어시스턴트 시스템(140)은 이에 따라서 활성화될 수 있다. 대안적인 실시예들에서, 사용자는 웨이크-워드 없이 시각 신호를 통해 어시스턴트 시스템(140)을 활성화시킬 수 있다. 시각 신호는 다양한 시각 신호들을 검출할 수 있는 저전력 센서(예컨대, 카메라)에서 수신될 수 있다. 제한이 아닌 예로서, 시각 신호는 클라이언트 시스템(130)에 의해 검출되는 바코드, QR 코드 또는 UPC(universal product code)일 수 있다. 제한이 아닌 다른 예로서, 시각 신호는 오브젝트에 대한 사용자의 시선일 수 있다. 제한이 아닌 또 다른 예로서, 시각 신호는 사용자 제스처, 예컨대, 사용자가 오브젝트를 가리키는 것일 수 있다.
특정 실시예들에서, 시스템 오디오 API(202)로부터의 오디오 데이터는 어시스턴트 오케스트레이터(206)에 전송될 수 있다. 어시스턴트 오케스트레이터(206)는 클라이언트 시스템(130) 상에서 실행되고 있을 수 있다. 특정 실시예들에서, 어시스턴트 오케스트레이터(206)는 클라이언트 측 프로세스들, 서버 측 프로세스들, 또는 양자 모두를 사용함으로써 사용자 입력에 응답할지 여부를 결정할 수 있다. 도 2에 표시된 바와 같이, 클라이언트 측 프로세스들은 파선(207) 아래에 예시되는 반면, 서버 측 프로세스들은 파선(207) 위에 예시된다. 어시스턴트 오케스트레이터(206)는 또한, 클라이언트 측 프로세스들 및 서버 측 프로세스들 양자 모두를 동시에 사용함으로써 사용자 입력에 응답하기로 결정할 수 있다. 도 2가 어시스턴트 오케스트레이터(206)가 클라이언트 측 프로세스인 것으로 예시하지만, 어시스턴트 오케스트레이터(206)는 서버 측 프로세스일 수 있거나 또는 클라이언트 측 및 서버 측 프로세스들 사이에 분리되는 하이브리드 프로세스일 수 있다.
특정 실시예들에서, 시스템 오디오 API(202)로부터 오디오 데이터가 생성된 후에, 서버 측 프로세스들은 다음과 같을 수 있다. 어시스턴트 오케스트레이터(206)는 사용자 입력에 응답하기 위해 어시스턴트 시스템(140)의 상이한 모듈들을 호스팅하는 원격 컴퓨팅 시스템에 오디오 데이터를 전송할 수 있다. 특정 실시예들에서, 오디오 데이터는 원격 ASR(automatic speech recognition) 모듈(208)에서 수신될 수 있다. ASR 모듈(208)은, 사용자가 구술하고 스피치를 기록된 텍스트로서 전사(transcribe)되게 하거나, 문서가 오디오 스트림으로서 합성되게 하거나, 또는 시스템에 의해 그렇게 인식되는 커맨드들을 발행하도록 할 수 있다. ASR 모듈(208)은 오디오 입력으로서 어시스턴트 시스템(140)에 의해 수신된 스피치의 주어진 부분에 대응하는 가장 가능성이 높은 워드(word)들의 시퀀스들을 결정하기 위해 통계 모델들을 사용할 수 있다. 모델들은 은닉 마르코프 모델들, 뉴럴 네트워크들, 딥 러닝 모델들, 또는 이들의 임의의 조합 중 하나 이상을 포함할 수 있다. 수신된 오디오 입력은, 특정 샘플링 레이트(예컨대, 16, 44.1, 또는 96 kHz)로 그리고 각각의 샘플을 표현하는 특정 수의 비트들(예컨대, 24 비트 중 8 비트, 16 비트)을 이용하여, 디지털 데이터로 인코딩될 수 있다.
특정 실시예들에서, ASR 모듈(208)은 상이한 컴포넌트들을 포함할 수 있다. ASR 모듈(208)은 G2P(grapheme-to-phoneme) 모델, 발음 학습 모델, 개인화된 음향 모델, 개인화된 언어 모델(PLM; personalized language model), 또는 엔드-포인팅 모델 중 하나 이상을 포함할 수 있다. 특정 실시예들에서, G2P 모델은 사용자의 자소-음소 스타일, 예컨대, 특정 사용자가 특정 워드를 말할 때 그것이 어떻게 들릴 수 있는지를 결정하기 위해 사용될 수 있다. 개인화된 음향 모델은 오디오 신호들과 언어로 된 음성 단위들의 사운드들 사이의 관계의 모델일 수 있다. 그러므로, 그러한 개인화된 음향 모델은 사용자의 음성이 어떻게 들리는지를 식별할 수 있다. 개인화된 음향 모델은, 오디오 입력으로서 수신된 트레이닝 스피치 및 스피치에 대응하는 대응 음성 단위들과 같은, 트레이닝 데이터를 사용하여 생성될 수 있다. 개인화된 음향 모델은 특정 사용자의 음성을 사용하여 트레이닝 또는 개선되어 그 사용자의 스피치를 인식할 수 있다. 이어서, 특정 실시예들에서, 개인화된 언어 모델은 특정 오디오 입력에 대해 식별된 음성 단위들에 대응하는 가장 가능성이 높은 어구를 결정할 수 있다. 개인화된 언어 모델은 다양한 워드 시퀀스들이 언어에서 발생할 수 있는 확률들의 모델일 수 있다. 오디오 입력의 음성 단위들의 사운드들은 개인화된 언어 모델을 사용하여 워드 시퀀스들과 매칭될 수 있고, 언어의 어구들일 가능성이 더 높은 워드 시퀀스들에 더 큰 가중치들이 할당될 수 있다. 이어서, 가장 높은 가중치를 갖는 워드 시퀀스가 오디오 입력에 대응하는 텍스트로서 선택될 수 있다. 특정 실시예들에서, 개인화된 언어 모델은 또한, 맥락이 주어지면, 사용자가 어떤 워드들을 말할 가능성이 가장 높은지를 예측하기 위해 사용될 수 있다. 특정 실시예들에서, 엔드-포인팅 모델은 발언의 끝에 도달할 때를 검출할 수 있다.
특정 실시예들에서, ASR 모듈(208)의 출력은 원격 NLU(natural-language understanding) 모듈(210)에 전송될 수 있다. NLU 모듈(210)은 NER(named entity resolution)을 수행할 수 있다. NLU 모듈(210)은 사용자 입력을 분석할 때 콘텍스츄얼 정보를 부가적으로 고려할 수 있다. 특정 실시예들에서, 인텐트(intent) 및/또는 슬롯이 NLU 모듈(210)의 출력일 수 있다. 인텐트는, 어시스턴트 시스템(140)과 상호작용하는 사용자의 목적을 표시할 수 있는 의미론적 의도(semantic intention)들의 미리-정의된 분류법(taxonomy) 내의 엘리먼트일 수 있다. NLU 모듈(210)은 사용자 입력을 미리 정의된 분류법의 멤버로 분류할 수 있는데, 예컨대, "베토벤 5 번 재생해"란 입력에 대해, NLU 모듈(210)은 인텐트 [IN:play_music]을 갖는 것으로 입력을 분류할 수 있다. 특정 실시예들에서, 도메인은 상호작용의 소셜 콘텍스트, 예컨대, 교육, 또는 한 세트의 인텐트들에 대한 네임스페이스, 예컨대, 음악을 나타낼 수 있다. 슬롯은 기본 의미론적 엔티티를 표현하는, 사용자 입력 내의 문자열에 대응하는 명명된 서브-스트링일 수 있다. 예컨대, "피자"에 대한 슬롯은 [SL:dish]일 수 있다. 특정 실시예들에서, 한 세트의 유효한 또는 예상되는 명명된 슬롯들은 분류된 인텐트에 따라 컨디셔닝될 수 있다. 제한이 아닌 예로서, 인텐트 [IN:play_music]에 대해, 유효 슬롯은 [SL:song_name]일 수 있다. 특정 실시예들에서, NLU 모듈(210)은 부가적으로, 소셜 그래프, 지식 그래프 또는 개념 그래프 중 하나 이상으로부터 정보를 추출하고, 하나 이상의 원격 데이터 스토어들(212)로부터 사용자의 프로파일을 리트리브할 수 있다. NLU 모듈(210)은, 어떤 정보를 애그리케이팅할지을 결정하고, 사용자 입력의 n-그램들에 주석을 달고, 애그리케이팅된 정보에 기반하여 신뢰도 스코어들로 n-그램들을 랭킹하며, 그리고 랭킹된 n-그램들을, 사용자 입력을 이해하기 위해 NLU 모듈(210)에 의해 사용될 수 있는 특징들로 공식화함으로써, 이들 상이한 소스들로부터의 정보를 추가로 프로세싱할 수 있다.
특정 실시예들에서, NLU 모듈(210)은 개인화된 콘텍스트-인식 방식으로 사용자 입력으로부터 도메인, 인텐트, 또는 슬롯 중 하나 이상을 식별할 수 있다. 제한이 아닌 예로서, 사용자 입력은 "커피 숍에 어떻게 도착하는지 보여 줘"를 포함할 수 있다. NLU 모듈(210)은 사용자의 개인 정보 및 연관된 콘텍스츄얼 정보에 기반하여 사용자가 가기를 원하는 특정 커피 숍을 식별할 수 있다. 특정 실시예들에서, NLU 모듈(210)은 특정 언어의 어휘, 및 문장들을 내부 표현으로 파티셔닝하기 위한 파서 및 문법 규칙들을 포함할 수 있다. NLU 모듈(210)은 또한, 사용자 입력을 이해하기 위한 실용주의의 사용에 대한 나이브 의미론(naive semantics) 또는 확률적 의미론적 분석(stochastic semantic analysis)을 수행하는 하나 이상의 프로그램들을 포함할 수 있다. 특정 실시예들에서, 파서는 다수의 LSTM(long-short term memory) 네트워크들을 포함하는 딥 러닝 아키텍처에 기반할 수 있다. 제한이 아닌 예로서, 파서는, 일종의 순환적(recurrent)이고 재귀적(recursive)인 LSTM 알고리즘인 RNNG(recurrent neural network grammar) 모델에 기반할 수 있다. 자연어 이해에 관한 더 많은 정보는 2018 년 6 월 18 일자로 출원된 미국 특허 출원 번호 제 16/011062 호, 2018 년 7 월 2 일자로 출원된 미국 특허 출원 번호 제 16/025317 호 및 2018 년 7 월 17 일자로 출원된 미국 특허 출원 번호 제 16/038120 호에서 발견될 수 있으며, 이들 각각은 인용에 의해 포함된다.
특정 실시예들에서, NLU 모듈(210)의 출력은 원격 추론 모듈(214)에 전송될 수 있다. 추론 모듈(214)은 다이얼로그 관리자 및 엔티티 레졸루션 컴포넌트를 포함할 수 있다. 특정 실시예들에서, 다이얼로그 관리자는 복잡한 다이얼로그 로직 및 제품-관련 비즈니스 로직을 가질 수 있다. 다이얼로그 관리자는 사용자와 어시스턴트 시스템(140) 사이의 대화의 흐름 및 다이얼로그 상태를 관리할 수 있다. 다이얼로그 관리자는 부가적으로, 사용자와 어시스턴트 시스템(140) 사이의 이전 대화들을 저장할 수 있다. 특정 실시예들에서, 다이얼로그 관리자는 하나 이상의 슬롯들과 연관된 엔티티들을 리졸빙하기 위해 엔티티 레졸루션 컴포넌트와 통신할 수 있으며, 이는 사용자와 어시스턴트 시스템(140) 사이의 대화의 흐름을 진전시키기 위해 다이얼로그 관리자를 지원한다. 특정 실시예들에서, 엔티티 레졸루션 컴포넌트는 엔티티들을 리졸빙할 때 소셜 그래프, 지식 그래프 또는 개념 그래프 중 하나 이상에 액세스할 수 있다. 엔티티들은 예컨대 고유 사용자들 또는 개념들을 포함할 수 있으며, 이들 각각은 고유 식별자(ID; identifier)를 가질 수 있다. 제한이 아닌 예로서, 지식 그래프는 복수의 엔티티들을 포함할 수 있다. 각각의 엔티티는 하나 이상의 속성 값들과 연관된 단일 레코드를 포함할 수 있다. 특정 레코드는 고유 엔티티 식별자와 연관될 수 있다. 각각의 레코드는 엔티티의 속성에 대한 다양한 값들을 가질 수 있다. 각각의 속성 값은 신뢰도 확률과 연관될 수 있다. 속성 값에 대한 신뢰도 확률은 주어진 속성에 대해 값이 정확할 확률을 표현한다. 각각의 속성 값은 또한, 의미론적 가중치와 연관될 수 있다. 속성 값에 대한 의미론적 가중치는 모든 이용가능한 정보를 고려하여 주어진 속성에 대해 값이 의미론적으로 얼마나 적절한지를 표현할 수 있다. 예컨대, 지식 그래프는, 다수의 콘텐츠 소스들(예컨대, 온라인 소셜 네트워크, 온라인 백과사전들, 서평 소스들, 미디어 데이터베이스들 및 엔터테인먼트 콘텐츠 소스들)로부터 추출되고 이어서 지식 그래프에 대한 단일 고유 레코드를 생성하기 위해 중복제거(dedupe)되고, 리졸빙되며 융합된 정보를 포함하는 책 "Alice's Adventures"의 엔티티를 포함할 수 있다. 엔티티는 책 "Alice's Adventures"의 장르를 표시하는 "판타지" 속성 값과 연관될 수 있다. 지식 그래프에 관한 더 많은 정보는, 2018 년 7 월 27 일자로 출원된 미국 특허 출원 번호 제 16/048049 호 및 2018 년 7 월 27 일자로 출원된 미국 특허 출원 번호 제 16/048101 호에서 발견될 수 있으며, 이들 각각은 인용에 의해 포함된다.
특정 실시예들에서, 엔티티 레졸루션 컴포넌트는 엔티티들의 리졸빙이 프라이버시 정책들을 위반하지 않음을 보장하기 위해 프라이버시 제약들을 체크할 수 있다. 제한이 아닌 예로서, 리졸빙될 엔티티는, 자신의 아이덴티티가 온라인 소셜 네트워크상에서 검색 가능하지 않아야 한다는 것을 자신의 프라이버시 세팅들에서 특정하는 다른 사용자일 수 있고, 따라서 엔티티 레졸루션 컴포넌트는 요청에 대한 응답으로 그 사용자의 식별자를 리턴하지 않을 수 있다. 그러므로, 소셜 그래프, 지식 그래프, 개념 그래프 및 사용자 프로파일로부터 획득된 정보에 기반하여, 그리고 적용 가능한 프라이버시 정책들에 따라, 엔티티 레졸루션 컴포넌트는, 개인화된, 콘텍스트-인식 그리고 프라이버시-인식 방식으로, 사용자 입력과 연관된 엔티티들을 리졸빙할 수 있다. 특정 실시예들에서, 리졸빙된 엔티티들 각각은 소셜 네트워킹 시스템(160)에 의해 호스팅되는 하나 이상의 식별자들과 연관될 수 있다. 제한이 아닌 예로서, 식별자는 특정 사용자에 대응하는 고유 사용자 식별자(ID)(예컨대, 고유 사용자 이름 또는 사용자 ID 번호)를 포함할 수 있다. 특정 실시예들에서, 리졸빙된 엔티티들 각각은 또한, 신뢰도 스코어와 연관될 수 있다. 엔티티들을 리졸빙하는 것에 관한 더 많은 정보는, 2018 년 7 월 27 일자로 출원된 미국 특허 출원 번호 제 16/048049 호 및 2018 년 7 월 27 일자로 출원된 미국 특허 출원 번호 제 16/048072 호에서 발견될 수 있으며, 이들 각각은 인용에 의해 포함된다.
특정 실시예들에서, 다이얼로그 관리자는 다이얼로그 최적화 및 어시스턴트 상태 추적을 수행할 수 있다. 다이얼로그 최적화는, 다이얼로그에서 가장 가능성이 높은 분기(branching)가 무엇이어야 하는지를 이해하기 위해 데이터를 사용하는 문제이다. 제한이 아닌 예로서, 다이얼로그 최적화를 이용하여, 어시스턴트 시스템(140)은 사용자가 누구에게 전화하기를 원하는지를 확인할 필요가 없을 수 있는데, 그 이유는 어시스턴트 시스템(140)은 다이얼로그 최적화에 기반하여 추론된 사람이 사용자가 전화하기를 원하는 누구일 가능성이 매우 높을 것이라는 높은 신뢰도를 갖기 때문이다. 특정 실시예들에서, 다이얼로그 관리자는 다이얼로그 최적화를 위해 강화 학습을 사용할 수 있다. 어시스턴트 상태 추적은, 사용자가 세계와 상호작용하고 어시스턴트 시스템(140)이 사용자와 상호작용할 때, 시간이 지남에 따라 변화하는 상태를 계속 추적하는 것을 목표로 한다. 제한이 아닌 예로서, 어시스턴트 상태 추적은, 적용 가능한 프라이버시 정책들에 따라, 사용자가 무엇에 대해 말하고 있는지, 사용자가 누구와 있는지, 사용자가 어디에 있는지, 현재 어떤 태스크들이 진행되고 있는지, 그리고 사용자의 시선이 어디에 있는지 등을 추적할 수 있다. 특정 실시예들에서, 다이얼로그 관리자는 다이얼로그 상태를 추적하기 위해 한 세트의 오퍼레이터들을 사용할 수 있다. 오퍼레이터들은 다이얼로그 상태를 업데이트하기 위해 필요한 데이터 및 로직을 포함할 수 있다. 각각의 오퍼레이터는 착신 요청을 프로세싱한 후에 다이얼로그 상태의 델타로서 작용할 수 있다. 특정 실시예들에서, 다이얼로그 관리자는 다이얼로그 상태 추적기 및 액션 선택기를 더 포함할 수 있다. 대안적인 실시예들에서, 다이얼로그 상태 추적기는 엔티티 레졸루션 컴포넌트를 대체하고, 참조들/멘션들을 리졸빙하며, 상태를 계속 추적할 수 있다.
특정 실시예들에서, 추론 모듈(214)은 잘못된 트리거 완화를 추가로 수행할 수 있다. 잘못된 트리거 완화의 목표는, 보조 요청들의 잘못된 트리거들(예컨대, 웨이크-워드)을 검출하고, 사용자가 실제로 어시스턴트 시스템(140)을 인보크(invoke)할 의도가 없을 때 잘못된 레코드들을 생성하는 것을 회피하는 것이다. 제한이 아닌 예로서, 추론 모듈(214)은 넌센스 검출기에 기반하여 잘못된 트리거 완화를 달성할 수 있다. 사용자와의 상호작용에서 웨이크-워드가 이 시점에서 의미가 없다고 넌센스 검출기가 결정하면, 추론 모듈(214)은 사용자가 어시스턴트 시스템(140)을 인보크하는 것으로 의도했다고 추론하는 것이 부정확할 수 있다고 결정할 수 있다. 특정 실시예들에서, 추론 모듈(214)의 출력은 원격 다이얼로그 중재자(216)에 전송될 수 있다.
특정 실시예들에서, ASR 모듈(208), NLU 모듈(210) 및 추론 모듈(214) 각각은, 사용자를 더 효과적으로 보조할 방법을 결정하기 위해 사용자 일화적(episodic) 메모리들을 포함하는 원격 데이터 스토어(212)에 액세스할 수 있다. 일화적 메모리들에 관한 더 많은 정보는 2019 년 8 월 27 일자로 출원된 미국 특허 출원 번호 제 16/552559 호에서 발견될 수 있으며, 이는 인용에 의해 포함된다. 데이터 스토어(212)는 부가적으로, 사용자의 사용자 프로파일을 저장할 수 있다. 사용자의 사용자 프로파일은 인구통계 정보, 소셜 정보, 및 사용자와 연관된 콘텍스츄얼 정보를 포함하는 사용자 프로파일 데이터를 포함할 수 있다. 사용자 프로파일 데이터는 또한, 뉴스 피드, 검색 로그들, 메시징 플랫폼들 등에 대한 대화들을 통해 애그리케이팅된 복수의 토픽들에 대한 사용자 관심사들 및 선호도들을 포함할 수 있다. 사용자 프로파일의 사용은, 사용자의 정보가 자신의 이익을 위해서만 사용될 수 있고 다른 누구와도 공유되지 않을 수 있음을 보장하기 위해 프라이버시 제약들에 따를 수 있다. 사용자 프로파일들에 관한 더 많은 정보는 2018 년 4 월 30 일자로 출원된 미국 특허 출원 번호 제 15/967239 호에서 발견될 수 있으며, 이는 인용에 의해 포함된다.
특정 실시예들에서, ASR 모듈(208), NLU 모듈(210) 및 추론 모듈(214)을 수반하는 전술된 서버 측 프로세스와 병렬로, 클라이언트 측 프로세스는 다음과 같을 수 있다. 특정 실시예들에서, 어시스턴트 오케스트레이터(206)의 출력은 클라이언트 시스템(130) 상의 로컬 ASR 모듈(216)에 전송될 수 있다. ASR 모듈(216)은 PLM(personalized language model), G2P 모델, 및 엔드-포인팅 모델을 포함할 수 있다. 클라이언트 시스템(130)의 제한된 컴퓨팅 파워 때문에, 어시스턴트 시스템(140)은 클라이언트 측 프로세스 동안 런타임에 개인화된 언어 모델을 최적화할 수 있다. 제한이 아닌 예로서, 어시스턴트 시스템(140)은 사용자가 말할 수 있는 복수의 가능한 주제들에 대한 복수의 개인화된 언어 모델들을 미리 컴퓨팅할 수 있다. 이어서, 사용자가 보조를 요청할 때, 어시스턴트 시스템(140)은, 개인화된 언어 모델이 사용자 활동들에 기반하여 런타임에 어시스턴트 시스템(140)에 의해 로컬로 최적화될 수 있도록, 이들 미리 컴퓨팅된 언어 모델들을 신속하게 스와핑할 수 있다. 그 결과, 어시스턴트 시스템(140)은 사용자가 무엇에 대해 말하고 있는지를 효율적으로 결정하면서 컴퓨테이셔널 자원들을 절약하는 기술적 장점을 가질 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 또한, 런타임에 신속하게 사용자 발음들을 재학습할 수 있다.
특정 실시예들에서, ASR 모듈(216)의 출력은 로컬 NLU 모듈(218)에 전송될 수 있다. 특정 실시예들에서, 본원의 NLU 모듈(218)은 서버 측 상에서 지원되는 원격 NLU 모듈(210)과 비교하여 더 콤팩트할 수 있다. ASR 모듈(216) 및 NLU 모듈(218)이 사용자 입력을 프로세싱할 때, 이들은 로컬 어시스턴트 메모리(220)에 액세스할 수 있다. 로컬 어시스턴트 메모리(220)는, 사용자 프라이버시를 보호할 목적으로 데이터 스토어(212) 상에 저장된 사용자 메모리들과 상이할 수 있다. 특정 실시예들에서, 로컬 어시스턴트 메모리(220)는 네트워크(110)를 통해 데이터 스토어(212) 상에 저장된 사용자 메모리들과 동기화(syncing)될 수 있다. 제한이 아닌 예로서, 로컬 어시스턴트 메모리(220)는 사용자의 클라이언트 시스템(130) 상의 캘린더를 사용자와 연관된 서버 측 캘린더와 동기화할 수 있다. 특정 실시예들에서, 로컬 어시스턴트 메모리(220) 내의 임의의 보안 데이터에는 클라이언트 시스템 (130) 상에서 로컬로 실행되는 어시스턴트 시스템(140)의 모듈들만이 액세스 가능할 수 있다.
특정 실시예들에서, NLU 모듈(218)의 출력은 로컬 추론 모듈(222)에 전송될 수 있다. 추론 모듈(222)은 다이얼로그 관리자 및 엔티티 레졸루션 컴포넌트를 포함할 수 있다. 제한된 컴퓨팅 파워로 인해, 추론 모듈(222)은 클라이언트 시스템들(130)에 대해 특히 맞춤화된 학습 알고리즘들에 기반한 온-디바이스 학습을 수행할 수 있다. 제한이 아닌 예로서, 연합 학습(federated learning)이 추론 모듈(222)에 의해 사용될 수 있다. 연합 학습은, 모바일 폰들과 같은 최종 디바이스들 상에 상주하는 탈중앙화 데이터를 사용하여 기계 학습 모델들을 트레이닝하는 분산형 기계 학습 접근법들의 특정 카테고리이다. 특정 실시예들에서, 추론 모듈(222)은 특정 연합 학습 모델, 즉, 연합 사용자 표현 학습을 사용하여, 기존의 뉴럴 네트워크 개인화 기법들을 연합 학습으로 확장할 수 있다. 연합 사용자 표현 학습은 태스크-특정 사용자 표현들(즉, 임베딩들)을 학습함으로써 또는 모델 가중치들을 개인화함으로써 연합 학습에서 모델들을 개인화할 수 있다. 연합 사용자 표현 학습은 간단하고, 스케일러블(scalable)하고, 프라이버시-보존적이며, 자원-효율적이다. 연합 사용자 표현 학습은 모델 파라미터들을 연합 및 프라이빗 파라미터들로 분할할 수 있다. 프라이빗 파라미터들, 이를테면, 프라이빗 사용자 임베딩들은, 원격 서버로 전송되거나 또는 원격 서버 상에서 평균화되는 대신에 클라이언트 시스템(130) 상에서 로컬로 트레이닝될 수 있다. 대조적으로, 연합 파라미터들은 서버 상에서 원격으로 트레이닝될 수 있다. 특정 실시예들에서, 추론 모듈(222)은, 원격 서버 상에서 트레이닝된 글로벌 모델을 클라이언트 시스템들(130)에 송신하고 이들 클라이언트 시스템들(130) 상에서 로컬로 구배(gradient)들을 계산하기 위해, 다른 특정 연합 학습 모델, 즉, 능동 연합 학습(active federated learning)을 사용할 수 있다. 능동 연합 학습은, 추론 모듈이, 모델들을 다운로드하고 구배들을 업로드하는 것과 연관된 송신 비용들을 최소화하는 것을 가능하게 할 수 있다. 능동 연합 학습의 경우, 각각의 라운드에서 클라이언트 시스템들이 무작위로 균일하게 선택되는 것이 아니라, 효율성을 최대화하기 위해 클라이언트 시스템들 상의 데이터 및 현재 모델에 따라 컨디셔닝된 확률로 선택된다. 특정 실시예들에서, 추론 모듈(222)은 다른 특정 연합 학습 모델, 즉, 연합 Adam을 사용할 수 있다. 종래의 연합 학습 모델은 SGD(stochastic gradient descent) 최적화기들을 사용할 수 있다. 대조적으로, 연합 Adam 모델은 모멘트-기반 최적화기들을 사용할 수 있다. 종래의 작업이 하는 것과 같이 평균화된 모델을 직접적으로 사용하는 대신에, 연합 Adam 모델은 대략적인 구배들을 컴퓨팅하기 위해 평균화된 모델을 사용할 수 있다. 이어서, 이들 구배들은 연합 Adam 모델에 피딩될 수 있으며, 이는 확률적 구배들을 잡음 제거하고 파라미터별 적응형 학습 레이트를 사용할 수 있다. 연합 학습에 의해 생성된 구배들은 (데이터가 동일하게 분산되고 독립적이지 않을 수 있기 때문에) 확률적 구배 하강보다 훨씬 더 잡음이 많을 수 있고, 따라서 연합 Adam 모델은 잡음을 훨씬 더 처리하는 것을 도울 수 있다. 연합 Adam 모델은 목적 함수를 최소화하는 쪽으로 더 스마트한 단계들을 취하기 위해 구배들을 사용할 수 있다. 실험들은, 벤치마크에 대한 종래의 연합 학습이 ROC(Receiver Operating Characteristics) 곡선에서 1.6% 강하를 갖는 반면, 연합 Adam 모델은 단지 0.4% 강하를 갖는다는 것을 보여준다. 부가하여, 연합 Adam 모델은 통신 또는 온-디바이스 컴퓨테이션에서 어떠한 증가도 갖지 않는다. 특정 실시예들에서, 추론 모듈(222)은 또한, 잘못된 트리거 완화를 수행할 수 있다. 이러한 잘못된 트리거 완화는 사용자의 스피치 입력이 프라이버시 제약들에 따르는 데이터를 포함할 때 클라이언트 시스템(130) 상에서 잘못된 활성화 요청들, 예컨대, 웨이크-워드를 검출하는 것을 도울 수 있다. 제한이 아닌 예로서, 사용자가 음성 콜에 있을 때, 사용자의 대화는 프라이빗이며, 그러한 대화에 기반한 잘못된 트리거 검출은 사용자의 클라이언트 시스템(130) 상에서 로컬로만 발생할 수 있다.
특정 실시예들에서, 어시스턴트 시스템(140)은 로컬 콘텍스트 엔진(224)을 포함할 수 있다. 콘텍스트 엔진(224)은 추론 모듈(222)에 더 유익한 큐(cue)들을 제공하기 위해 모든 다른 이용 가능한 신호들을 프로세싱할 수 있다. 제한이 아닌 예로서, 콘텍스트 엔진(224)은, 사람들과 관련된 정보인, 클라이언트 시스템(130) 센서들(예컨대, 마이크로폰, 카메라)로부터의 감각 데이터를 가질 수 있으며, 이는 컴퓨터 비전 기술들, 기하학적 구조 구성들, 활동 데이터, 관성 데이터(예컨대, VR 헤드셋에 의해 수집됨), 위치 등에 의해 추가로 분석된다. 특정 실시예들에서, 컴퓨터 비전 기술들은 인간 스켈레톤 재구성, 얼굴 검출, 얼굴 인식, 손 추적, 눈 추적 등을 포함할 수 있다. 특정 실시예들에서, 기하학적 구조 구성들은 클라이언트 시스템(130)에 의해 수집된 데이터를 사용하여 사용자를 둘러싸는 오브젝트들을 구성하는 것을 포함할 수 있다. 제한이 아닌 예로서, 사용자는 AR 안경을 착용하고 있을 수 있고, 기하학적 구조 구성은 바닥이 어디에 있는지, 벽이 어디에 있는지, 사용자의 손들이 어디에 있는지 등을 결정하는 것을 목표로 할 수 있다. 특정 실시예들에서, 관성 데이터는 선형 및 각도 모션들과 연관된 데이터일 수 있다. 제한이 아닌 예로서, 관성 데이터는 사용자의 신체 부위들이 어떻게 움직이는지를 측정하는 AR 안경에 의해 캡처될 수 있다.
특정 실시예들에서, 로컬 추론 모듈(222)의 출력은 다이얼로그 중재자(216)에 전송될 수 있다. 다이얼로그 중재자(216)는 3 개의 시나리오들에서 상이하게 기능할 수 있다. 제 1 시나리오에서, 어시스턴트 오케스트레이터(206)는 서버 측 프로세스를 사용하기로 결정하며, 이를 위해 다이얼로그 중재자(216)는 추론 모듈(214)의 출력을 원격 액션 실행 모듈(226)에 송신할 수 있다. 제 2 시나리오에서, 어시스턴트 오케스트레이터(206)는 서버 측 프로세스들 및 클라이언트 측 프로세스들 양자 모두를 사용하기로 결정하며, 이를 위해, 다이얼로그 중재자(216)는 추론 모듈들(즉, 원격 추론 모듈(214) 및 로컬 추론 모듈 (222)) 양자 모두로부터의 출력을 애그리케이팅하여 이들을 프로세싱할 뿐 아니라 분석도 할 수 있다. 제한이 아닌 예로서, 다이얼로그 중재자(216)는 랭킹을 수행하고, 사용자 입력에 응답하기 위한 최상의 추론 결과를 선택할 수 있다. 특정 실시예들에서, 다이얼로그 중재자(216)는 분석에 기반하여 관련 태스크들을 실행하기 위해 서버 측의 에이전트들을 사용할지 또는 클라이언트 측의 에이전트들을 사용할지를 추가로 결정할 수 있다. 제 3 시나리오에서, 어시스턴트 오케스트레이터(206)는 클라이언트 측 프로세스들을 사용하기로 결정하고, 다이얼로그 중재자(216)는 클라이언트 측 프로세스들이 사용자 입력을 핸들링하는 태스크를 완료할 수 있는지를 결정하기 위해 로컬 추론 모듈(222)의 출력을 평가할 필요가 있다. 대안적인 실시예들에서, 어시스턴트 오케스트레이터(206)가 클라이언트 측 프로세스들을 사용하기로 결정하고 클라이언트 측 프로세스들이 사용자 입력을 완전히 프로세싱할 수 있다면, 추론 모듈(222)의 출력은 다이얼로그 중재자(216)에 전송되지 않을 수 있다.
특정 실시예들에서, 위에서 언급된 제 1 및 제 2 시나리오들의 경우, 다이얼로그 중재자(216)는 서버 측의 에이전트들이 사용자 입력에 응답하여 태스크들을 실행하는 데 필요하다고 결정할 수 있다. 이에 따라서, 다이얼로그 중재자(216)는 사용자 입력에 관한 필요한 정보를 액션 실행 모듈(226)에 전송할 수 있다. 액션 실행 모듈(226)은 태스크들을 실행하기 위해 하나 이상의 에이전트들을 호출할 수 있다. 대안적인 실시예들에서, 다이얼로그 관리자의 액션 선택기는 실행할 액션들을 결정하고 이에 따라서 액션 실행 모듈(226)에 명령할 수 있다. 특정 실시예들에서, 에이전트는 하나의 도메인에 대한 복수의 콘텐츠 제공자들에 걸쳐 브로커로서의 역할을 하는 구현일 수 있다. 콘텐츠 제공자는, 인텐트와 연관된 액션을 수행하거나 인텐트와 연관된 태스크를 완료하는 것을 담당하는 엔티티일 수 있다. 특정 실시예들에서, 에이전트들은 당사자 에이전트들 및 제 3 자 에이전트들을 포함할 수 있다. 특정 실시예들에서, 당사자 에이전트들은 어시스턴트 시스템(140)에 의해 액세스 가능하고 제어 가능한 내부 에이전트들(예컨대, 메시징 서비스들 또는 사진-공유 서비스들과 같이 온라인 소셜 네트워크에 의해 제공되는 서비스들과 연관된 에이전트들)을 포함할 수 있다. 특정 실시예들에서, 제 3 자 에이전트들은 어시스턴트 시스템(140)이 제어하지 않는 외부 에이전트들(예컨대, 제 3 자 온라인 음악 애플리케이션 에이전트들, 티켓 판매 에이전트들)을 포함할 수 있다. 당사자 에이전트들은 소셜 네트워킹 시스템(160)에 의해 호스팅되는 콘텐츠 오브젝트들 및/또는 서비스들을 제공하는 당사자 제공자들과 연관될 수 있다. 제 3 자 에이전트들은 제 3 자 시스템(170)에 의해 호스팅되는 콘텐츠 오브젝트들 및/또는 서비스들을 제공하는 제 3 자 제공자들과 연관될 수 있다. 특정 실시예들에서, 당사자 에이전트들 또는 제 3 자 에이전트들 각각은 특정 도메인에 대해 지정될 수 있다. 제한이 아닌 예로서, 도메인은 날씨, 교통, 음악, 쇼핑, 소셜, 비디오들, 사진들, 이벤트들, 위치들, 직장 등을 포함할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 사용자 입력에 응답하기 위해 복수의 에이전트들을 협력적으로 사용할 수 있다. 제한이 아닌 예로서, 사용자 입력은 "나를 다음 회의로 안내"하는 것을 포함할 수 있다. 어시스턴트 시스템(140)은 다음 회의의 위치를 리트리브하기 위해 캘린더 에이전트를 사용할 수 있다. 이어서, 어시스턴트 시스템(140)은 사용자를 다음 회의로 안내하기 위해 내비게이션 에이전트를 사용할 수 있다.
특정 실시예들에서, 위에서 언급된 제 2 및 제 3 시나리오들의 경우, 다이얼로그 중재자(216)는, 클라이언트 측의 에이전트들이 사용자 입력에 응답하여 태스크들을 실행할 수 있지만 부가적인 정보(예컨대, 응답 템플릿들)가 필요하다고 결정할 수 있거나 또는 태스크들이 서버 측의 에이전트들에 의해서만 핸들링될 수 있다고 결정할 수 있다. 다이얼로그 중재자(216)가 태스크들이 서버 측의 에이전트들에 의해서만 핸들링될 수 있다고 결정하면, 다이얼로그 중재자(216)는 사용자 입력에 관한 필요한 정보를 액션 실행 모듈(226)에 전송할 수 있다. 다이얼로그 중재자(216)가 클라이언트 측의 에이전트들이 태스크들을 실행할 수 있지만 응답 템플릿들이 필요하다고 결정하면, 다이얼로그 중재자(216)는 사용자 입력에 관한 필요한 정보를 원격 응답 템플릿 생성 모듈(228)에 전송할 수 있다. 응답 템플릿 생성 모듈(228)의 출력은 클라이언트 시스템(130) 상에서 실행되는 로컬 액션 실행 모듈(230)에 추가로 전송될 수 있다. 특정 실시예들에서, 어시스턴트 오케스트레이터(206)가 클라이언트 측 프로세스들을 사용하기로 결정하고 클라이언트 측 프로세스들이 사용자 입력을 완전히 프로세싱할 수 있다고 결정하면, 추론 모듈(222)의 출력은 액션 실행 모듈(230)에 직접적으로 전송될 수 있다.
특정 실시예들에서, 액션 실행 모듈(230)은 태스크들을 실행하기 위해 로컬 에이전트들을 호출할 수 있다. 클라이언트 시스템(130) 상의 로컬 에이전트는 서버 측의 에이전트와 비교하여 더 간단한 태스크들을 실행할 수 있다. 제한이 아닌 예로서, 다수의 디바이스-특정 구현들(예컨대, 클라이언트 시스템(130) 또는 클라이언트 시스템(130) 상의 메시징 애플리케이션에 대한 실시간 호출들)은 단일 에이전트에 의해 내부적으로 핸들링될 수 있다. 대안적으로, 이들 디바이스-특정 구현들은 다수의 도메인들과 연관된 다수의 에이전트들에 의해 핸들링될 수 있다. 특정 실시예들에서, 액션 실행 모듈(230)은 부가적으로, 한 세트의 일반적인 실행 가능 다이얼로그 액션들을 수행할 수 있다. 한 세트의 실행 가능 다이얼로그 액션들은 에이전트들, 사용자들 및 어시스턴트 시스템(140) 자체와 상호작용할 수 있다. 이들 다이얼로그 액션들은 슬롯 요청, 확인, 명확화(disambiguation), 에이전트 실행 등을 위한 다이얼로그 액션들을 포함할 수 있다. 다이얼로그 액션들은 액션 선택기 또는 다이얼로그 정책의 근본적인 구현과 독립적일 수 있다. 트리-기반 정책 및 모델-기반 정책 양자 모두는 임의의 액션 선택기 특정 구현 세부사항들을 은닉하는 콜백 함수를 이용하여 동일한 기본 다이얼로그 액션들을 생성할 수 있다.
특정 실시예들에서, 서버 측의 원격 액션 실행 모듈(226)로부터의 출력은 원격 응답 실행 모듈(232)에 전송될 수 있다. 특정 실시예들에서, 액션 실행 모듈(226)은 추가 정보를 위해 다이얼로그 중재자(216)에 다시 통신할 수 있다. 응답 실행 모듈(232)은 원격 CU(conversational understanding) 컴포저(composer)에 기반할 수 있다. 특정 실시예들에서, 액션 실행 모듈(226)로부터의 출력은 <k,c,u,d> 튜플로서 공식화될 수 있으며, 여기서, k는 지식 소스를 표시하고, c는 통신 목표를 표시하고, u는 사용자 모델을 표시하며, d는 담화(discourse model) 모델을 표시한다. 특정 실시예들에서, CU 컴포저는 자연어 생성(NLG; natural-language generation) 모듈 및 UI(user interface) 페이로드 생성기를 포함할 수 있다. 자연어 생성기는 상이한 언어 모델들 및/또는 언어 템플릿들을 사용하여 액션 실행 모듈(226)의 출력에 기반하여 통신 콘텐츠를 생성할 수 있다. 특정 실시예들에서, 통신 콘텐츠의 생성은 애플리케이션 특정적일 수 있고, 또한 각각의 사용자에 대해 개인화될 수 있다. CU 컴포저는 또한, UI 페이로드 생성기를 사용하여 생성된 통신 콘텐츠의 모달리티를 결정할 수 있다. 특정 실시예들에서, NLG 모듈은 콘텐츠 결정 컴포넌트, 문장 플래너, 및 표면 실현 컴포넌트를 포함할 수 있다. 콘텐츠 결정 컴포넌트는 지식 소스, 통신 목표, 및 사용자의 기대들에 기반하여 통신 콘텐츠를 결정할 수 있다. 제한이 아닌 예로서, 결정은 설명 로직에 기반할 수 있다. 설명 로직은, 예컨대, 개체(individual)들(도메인 내의 오브젝트들을 표현함), 개념들(개체들의 세트들을 설명함), 및 역할들(개체들 또는 개념들 사이의 이진 관계들을 표현함)인 3 개의 근본적인 관념들을 포함할 수 있다. 설명 로직은 자연어 생성기가 아주 작은(atomic) 개념들/역할들로부터 복잡한 개념들/역할들을 구축할 수 있게 하는 한 세트의 구성자들에 의해 특징지어질 수 있다. 특정 실시예들에서, 콘텐츠 결정 컴포넌트는 통신 콘텐츠를 결정하기 위해 다음의 태스크들을 수행할 수 있다. 제 1 태스크는 번역 태스크를 포함할 수 있으며, 여기서, 자연어 생성기에 대한 입력은 개념들로 번역될 수 있다. 제 2 태스크는 선택 태스크를 포함할 수 있으며, 여기서, 관련 개념들은 사용자 모델에 기반하여 번역 태스크로 인한 것들 중에서 선택될 수 있다. 제 3 태스크는 선택된 개념들의 일관성(coherence)이 검증될 수 있는 검증 태스크를 포함할 수 있다. 제 4 태스크는 인스턴스화 태스크를 포함할 수 있으며, 여기서, 검증된 개념들은 자연어 생성기에 의해 프로세싱될 수 있는 실행 가능 파일로서 인스턴스화될 수 있다. 문장 플래너는 통신 콘텐츠를 인간이 이해할 수 있게 하기 위해 이러한 통신 콘텐츠의 구성을 결정할 수 있다. 표면 실현 컴포넌트는 사용할 특정 워드들, 문장들의 시퀀스, 및 통신 콘텐츠의 스타일을 결정할 수 있다. UI 페이로드 생성기는 사용자에게 제공될 통신 콘텐츠의 선호되는 모달리티를 결정할 수 있다. 특정 실시예들에서, CU 컴포저는 통신 콘텐츠의 생성이 프라이버시 정책들을 따르는지를 확실하게 하기 위해 사용자와 연관된 프라이버시 제약들을 체크할 수 있다. 자연어 생성에 관한 더 많은 정보는 2018 년 4 월 30 일자로 출원된 미국 특허 출원 번호 제 15/967279 호 및 2018 년 4 월 30 일자로 출원된 미국 특허 출원 번호 제 15/966455 호에서 발견될 수 있으며, 이들 각각은 인용에 의해 포함된다.
특정 실시예들에서, 클라이언트 시스템(130) 상의 로컬 액션 실행 모듈(230)로부터의 출력은 로컬 응답 실행 모듈(234)에 전송될 수 있다. 응답 실행 모듈(234)은 로컬 CU(conversational understanding) 컴포저에 기반할 수 있다. CU 컴포저는 NLG(natural-language generation) 모듈을 포함할 수 있다. 클라이언트 시스템(130)의 컴퓨팅 파워가 제한될 수 있기 때문에, NLG 모듈은 컴퓨테이셔널 효율을 고려하여 간단할 수 있다. NLG 모듈이 간단할 수 있기 때문에, 응답 실행 모듈(234)의 출력은 로컬 응답 확장 모듈(236)에 전송될 수 있다. 응답 확장 모듈(236)은, 응답을 더 자연스럽게 만들고 더 풍부한 의미론적 정보를 포함하도록 응답 실행 모듈(234)의 결과를 추가로 확장시킬 수 있다.
특정 실시예들에서, 사용자 입력이 오디오 신호들에 기반하면, 서버 측의 응답 실행 모듈(232)의 출력은 원격 TTS(text-to-speech) 모듈(238)에 전송될 수 있다. 유사하게, 클라이언트 측의 응답 확장 모듈(236)의 출력은 로컬 TTS 모듈(240)에 전송될 수 있다. TTS 모듈들 양자 모두는 응답을 오디오 신호들로 컨버팅(convert)할 수 있다. 특정 실시예들에서, 응답 실행 모듈(232), 응답 확장 모듈(236), 또는 양측의 TTS 모듈들로부터의 출력은 최종적으로 로컬 렌더 출력 모듈(242)에 전송될 수 있다. 렌더 출력 모듈(242)은 클라이언트 시스템(130)에 적절한 응답을 생성할 수 있다. 제한이 아닌 예로서, 응답 실행 모듈(232) 또는 응답 확장 모듈(236)의 출력은 자연어 스트링들, 스피치, 파라미터들을 갖는 액션들, 또는 VR 헤드셋 또는 AR 스마트 안경에 디스플레이될 수 있는 렌더링된 이미지들 또는 비디오들 중 하나 이상을 포함할 수 있다. 그 결과, 렌더 출력 모듈(242)은, VR 헤드셋 또는 AR 스마트 안경 상에 디스플레이하기 위해서 적절하게 응답을 렌더링하기 위해 CU 컴포저의 출력에 기반하여 어떤 태스크들을 수행할지를 결정할 수 있다. 예컨대, 응답은 VR 헤드셋 또는 AR 스마트 안경을 통해 디스플레이될 수 있는 시각-기반 모달리티(예컨대, 이미지 또는 비디오 클립)일 수 있다. 다른 예로서, 응답은 VR 헤드셋 또는 AR 스마트 안경을 통해 사용자에 의해 재생될 수 있는 오디오 신호들일 수 있다. 또 다른 예로서, 응답은 사용자 경험을 향상시키기 위해 VR 헤드셋 또는 AR 스마트 안경에 렌더링될 수 있는 증강 현실 데이터일 수 있다.
특정 실시예들에서, 어시스턴트 시스템(140)은 오디오 인식, 시각 인식, 신호 지능, 추론 및 메모리들을 포함하는 다양한 능력들을 가질 수 있다. 특정 실시예들에서, 오디오 인식 능력은, 보조 시스템(140)이 상이한 언어들의 다양한 도메인들과 연관된 사용자의 입력을 이해하고, 대화를 이해하고, 이를 요약할 수 있고, 복잡한 커맨드들에 대한 온-디바이스 오디오 인식을 수행하고, 음성에 의해 사용자를 식별하고, 대화 및 대화의 자동-태그 섹션들로부터 토픽들을 추출하고, 웨이크-워드 없이 오디오 상호작용을 가능하게 하고, 주변 잡음 및 대화들로부터 사용자 음성을 필터링 및 증폭시키며, (다수의 클라이언트 시스템들(130)이 인근에 있다면) 사용자가 어떤 클라이언트 시스템(130)에 말하고 있는지를 이해하는 것을 가능하게 할 수 있다.
특정 실시예들에서, 시각 인식 능력은, 어시스턴트 시스템(140)이 얼굴 검출 및 추적을 수행하고, 사용자를 인식하고, 다양한 각도들로 주요 대도시 영역들에서 대부분의 관심 있는 사람들을 인식하고, 기존의 기계-학습 모델들과 원-샷(one-shot) 학습의 조합을 통해 세계에서 대부분의 관심 오브젝트들을 인식하고, 관심 모멘트를 인식하여 이를 자동-캡처하고, 상이한 시간 에피소드들에 걸쳐 다수의 시각 프레임들에 대한 의미론적 이해를 달성하고, 사람들, 장소들, 오브젝트 인식에서 부가적인 능력들에 대한 플랫폼 지지를 제공하고, 개인화된 위치들을 포함하는, 풀 세트의 세팅들 및 마이크로-위치들을 인식하고, 복잡한 활동들을 인식하고, 클라이언트 시스템(130)을 제어하기 위한 복잡한 제스처들을 인식하고, (예컨대, 모션, 캡처 각도들, 레졸루션 등을 이용하여) 자기 중심적 카메라들로부터의 이미지들/비디오들을 핸들링하고, 더 낮은 레졸루션을 갖는 이미지들에 관한 유사한 수준의 정확도 및 속도를 달성하고, 사람들, 장소들 및 오브젝트들의 원-샷 등록 및 인식을 수행하며, 클라이언트 시스템(130) 상에서 시각 인식을 수행하는 것을 가능하게 할 수 있다.
특정 실시예들에서, 어시스턴트 시스템(140)은 시각 인지를 달성하기 위해 컴퓨터 비전 기법들을 레버리징할 수 있다. 컴퓨터 비전 기법들 외에도, 어시스턴트 시스템(140)은 오브젝트들의 인식을 확대하기 위해 이들 기법들을 보충할 수 있는 옵션들을 탐구할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 오브젝트의 라벨들의 OCR(optical character recognition), 장소 인식을 위한 GPS 신호들, 사용자를 식별하기 위한, 사용자의 클라이언트 시스템(130)으로부터의 신호들과 같은 보충 신호들을 사용할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 사용자에 대한 콘텍스트를 세팅하기 위해 일반적인 장면 인식(집, 직장, 공공 공간 등)을 수행할 수 있고, 가장 가능성이 높은 오브젝트들 또는 사람들을 식별하기 위해 컴퓨터-비전 검색 공간을 감소시킬 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 어시스턴트 시스템(140)을 트레이닝하도록 사용자들을 가이드할 수 있다. 예컨대, 크라우드소싱은, 사용자들이 태그하게 하며, 어시스턴트 시스템(140)이 시간이 지남에 따라 더 많은 오브젝트들을 인식하는 것을 돕기 위해 사용될 수 있다. 다른 예로서, 사용자들은 어시스턴트 시스템(140)을 사용할 때 초기 셋업의 일부로서 그들의 개인 오브젝트들을 등록할 수 있다. 어시스턴트 시스템(140)은 추가로, 사용자들이 그들과 상호작용하는 오브젝트들에 대해 긍정/부정 신호들을 제공하여 그들을 위한 개인화된 모델들을 트레이닝 및 개선하도록 할 수 있다.
특정 실시예들에서, 신호 지능 능력은, 어시스턴트 시스템(140)이 사용자 위치를 결정하고, 날짜/시간을 이해하고, 가족 위치들을 결정하고, 사용자의 캘린더들 및 미래의 원하는 위치들을 이해하고, 더 풍부한 사운드 이해를 통합하여 사운드만을 통해 세팅/콘텍스트를 식별하고, 사용자의 개별적인 루틴들에 대해 개인화될 수 있는 신호 지능 모델들을 런타임에 구축하는 것을 가능하게 할 수 있다.
특정 실시예들에서, 추리 능력은, 어시스턴트 시스템(140)이 미래의 임의의 시점에서 임의의 이전 대화 스레드들을 픽업하고, 모든 신호들을 합성하여 마이크로 및 개인화된 콘텍스트를 이해하고, 사용자의 이력 행동으로부터 상호작용 패턴들 및 선호도들을 학습하여 사용자가 가치를 둘 수 있는 상호작용들을 제안하고, 마이크로-콘텍스트 이해에 기반하여 고도로 예측적인 선행적 제안들을 생성하고, 사용자가 하루 중 몇 시에 어떤 콘텐츠를 보기를 원할 수 있는지를 이해하고, 장면의 변화들 및 이러한 장면의 변화들이 사용자의 원하는 콘텐츠에 어떻게 영향을 미칠 수 있는지를 이해하는 능력을 갖는 것을 가능하게 할 수 있다.
특정 실시예들에서, 메모리들의 능력들은, 어시스턴트 시스템(140)이, 사용자가 이전에 어떤 소셜 연결들과 상호작용했는지 또는 호출했는지를 기억하고, 메모리에 기록하여 자유자재로(at will) 메모리에 질의하고(즉, 개방 받아쓰기 및 자동 태그들), 이전 상호작용들 및 장기적 학습에 기반하여 더 풍부한 선호도들을 추출하고, 사용자의 생활 이력을 기억하고, 자동 카탈로그 및 데이터의 자기 중심적 스트림들로부터 풍부한 정보를 추출하며, 구조화된 형태로 메모리에 기록하여 풍부하고 짧은, 일화적 및 장기적 메모리들을 형성하는 것을 가능하게 할 수 있다.
도 3은 어시스턴트 시스템(140)의 서버 측 프로세스들의 예시적인 다이어그램 흐름을 예시한다. 특정 실시예들에서, 서버-어시스턴트 서비스 모듈(301)은 사용자 요청을 수신할 때 요청 관리자(302)에 액세스할 수 있다. 대안적인 실시예들에서, 사용자 요청이 오디오 신호들에 기반하면, 사용자 요청은 원격 ASR 모듈(208)에 의해 먼저 프로세싱될 수 있다. 특정 실시예들에서, 요청 관리자(302)는 콘텍스트 추출기(303) 및 대화형 이해 오브젝트 생성기(CU 오브젝트 생성기)(304)를 포함할 수 있다. 콘텍스트 추출기(303)는 사용자 요청과 연관된 콘텍스츄얼 정보를 추출할 수 있다. 콘텍스트 추출기(303)는 또한, 클라이언트 시스템(130) 상에서 실행되는 어시스턴트 애플리케이션(136)에 기반하여 콘텍스츄얼 정보를 업데이트할 수 있다. 제한이 아닌 예로서, 콘텍스츄얼 정보의 업데이트는 클라이언트 시스템(130) 상에 디스플레이되는 콘텐츠 아이템들을 포함할 수 있다. 제한이 아닌 다른 예로서, 콘텍스츄얼 정보의 업데이트는 클라이언트 시스템(130) 상에 알람이 세팅되는지 여부를 포함할 수 있다. 제한이 아닌 다른 예로서, 콘텍스츄얼 정보의 업데이트는 클라이언트 시스템(130) 상에 노래가 재생되고 있는지 여부를 포함할 수 있다. CU 오브젝트 생성기(304)는 사용자 요청과 관련된 특정 콘텐츠 오브젝트들을 생성할 수 있다. 콘텐츠 오브젝트들은 사용자 요청과 연관된 특징들 및 다이얼로그-세션 데이터를 포함할 수 있으며, 이는 어시스턴트 시스템(140)의 모든 모듈들과 공유될 수 있다. 특정 실시예들에서, 요청 관리자(302)는 어시스턴트 시스템(140)에서 구현되는 특정 데이터 스토어인 데이터 스토어(212)에 콘텍스츄얼 정보 및 생성된 콘텐츠 오브젝트들을 저장할 수 있다.
특정 실시예들에서, 요청 관리자(302)는 생성된 콘텐츠 오브젝트들을 원격 NLU 모듈(210)에 전송할 수 있다. NLU 모듈(210)은 콘텐츠 오브젝트들을 프로세싱하기 위해 복수의 단계들을 수행할 수 있다. 단계(305)에서, NLU 모듈(210)은 콘텐츠 오브젝트들에 대한 화이트리스트를 생성할 수 있다. 특정 실시예들에서, 화이트리스트는 사용자 요청과 매칭하는 해석 데이터를 포함할 수 있다. 단계(306)에서, NLU 모듈(210)은 화이트리스트에 기반하여 특징화를 수행할 수 있다. 단계(307)에서, NLU 모듈(210)은 사용자 요청을 미리 정의된 도메인들로 분류하기 위해 특징화로 인한 특징들에 기반하여 사용자 요청에 대해 도메인 분류/선택을 수행할 수 있다. 도메인 분류/선택 결과들은 2 개의 관련된 절차들에 기반하여 추가로 프로세싱될 수 있다. 단계(308a)에서, NLU 모듈(210)은 인텐트 분류기를 사용하여 도메인 분류/선택 결과를 프로세싱할 수 있다. 인텐트 분류기는 사용자 요청과 연관된, 사용자의 인텐트를 결정할 수 있다. 특정 실시예들에서, 주어진 도메인에서 가장 가능한 인텐트들을 결정하기 위해 각각의 도메인에 대해 하나의 인텐트 분류기가 있을 수 있다. 제한이 아닌 예로서, 인텐트 분류기는, 도메인 분류/선택 결과를 입력으로서 취하고 입력이 특정한 미리 정의된 인텐트와 연관될 확률을 계산할 수 있는 기계-학습 모델에 기반할 수 있다. 단계(308b)에서, NLU 모듈(210)은 메타-인텐트 분류기를 사용하여 도메인 분류/선택 결과를 프로세싱할 수 있다. 메타-인텐트 분류기는 사용자의 인텐트를 설명하는 카테고리들을 결정할 수 있다. 특정 실시예들에서, 다수의 도메인들에 공통인 인텐트들은 메타-인텐트 분류기에 의해 프로세싱될 수 있다. 제한이 아닌 예로서, 메타-인텐트 분류기는, 도메인 분류/선택 결과를 입력으로서 취하고 입력이 특정한 미리 정의된 메타-인텐트와 연관될 확률을 계산할 수 있는 기계-학습 모델에 기반할 수 있다. 단계(309a)에서, NLU 모듈(210)은 사용자 요청과 연관된 하나 이상의 슬롯들에 주석을 달기 위해 슬롯 태거를 사용할 수 있다. 특정 실시예들에서, 슬롯 태거는 사용자 요청의 n-그램들에 대해 하나 이상의 슬롯들에 주석을 달 수 있다. 단계(309b)에서, NLU 모듈(210)은 메타-인텐트 분류기로부터의 분류 결과에 대해 하나 이상의 슬롯들에 주석을 달기 위해 메타 슬롯 태거를 사용할 수 있다. 특정 실시예들에서, 메타 슬롯 태거는 아이템들에 대한 참조들(예컨대, 첫 번째), 슬롯의 타입, 슬롯의 값 등과 같은 일반 슬롯들을 태그할 수 있다. 제한이 아닌 예로서, 사용자 요청은 "내 계정의 500 달러를 일본 엔화로 바꾸는" 것을 포함할 수 있다. 인텐트 분류기는 사용자 요청을 입력으로서 취하고, 이를 벡터로 공식화할 수 있다. 이어서, 인텐트 분류기는, 사용자 요청을 표현하는 벡터와 상이한 미리 정의된 인텐트들을 표현하는 벡터들 사이의 벡터 비교에 기반하여, 사용자 요청이 상이한 미리 정의된 인텐트들과 연관될 확률들을 계산할 수 있다. 유사한 방식으로, 슬롯 태거는 사용자 요청을 입력으로서 취하고, 각각의 워드를 벡터로 공식화할 수 있다. 이어서, 인텐트 분류기는, 각각의 워드를 표현하는 벡터와 상이한 미리 정의된 슬롯들을 표현하는 벡터들 사이의 벡터 비교에 기반하여, 각각의 워드가 상이한 미리 정의된 슬롯들과 연관될 확률들을 계산할 수 있다. 사용자의 인텐트는 "돈을 바꾸는" 것으로서 분류될 수 있다. 사용자 요청의 슬롯들은 "500", "달러", "계좌" 및 "일본 엔화"를 포함할 수 있다. 사용자의 메타-인텐트는 "파이낸셜 서비스"로서 분류될 수 있다. 메타 슬롯은 "파이낸스"를 포함할 수 있다.
특정 실시예들에서, NLU 모듈(210)은 의미론적 정보 애그리게이터(310)를 포함할 수 있다. 의미론적 정보 애그리게이터(310)는 의미론적 정보를 제공함으로써 NLU 모듈(210)이 콘텐츠 오브젝트들의 도메인 분류/선택을 개선하는 것을 도울 수 있다. 특정 실시예들에서, 의미론적 정보 애그리게이터(310)는 다음의 방식으로 의미론적 정보를 애그리게이팅할 수 있다. 의미론적 정보 애그리게이터(310)는 먼저, 사용자 콘텍스트 엔진(315)으로부터 정보를 리트리브할 수 있다. 특정 실시예들에서, 사용자 콘텍스트 엔진(315)은 오프라인 애그리게이터들 및 온라인 추론 서비스를 포함할 수 있다. 오프라인 애그리게이터들은 이전 시간 윈도우로부터 수집된, 사용자와 연관된 복수의 데이터를 프로세싱할 수 있다. 제한이 아닌 예로서, 데이터는 미리 결정된 타임프레임 동안(예컨대, 이전 90일 윈도우로부터) 수집되는, 뉴스 피드 포스트들/코멘트들, 뉴스 피드 포스트들/코멘트들과의 상호작용들, 검색 이력 등을 포함할 수 있다. 프로세싱 결과는 사용자 프로파일의 일부로서 사용자 콘텍스트 엔진(315)에 저장될 수 있다. 온라인 추론 서비스는 현재 시간에 어시스턴트 시스템(140)에 의해 수신되는, 사용자와 연관된 대화형 데이터를 분석할 수 있다. 분석 결과는 사용자 프로파일의 일부로서 또한 사용자 콘텍스트 엔진(315)에 저장될 수 있다. 특정 실시예들에서, 오프라인 애그리게이터들 및 온라인 추론 서비스 양자 모두는 복수의 데이터로부터 개인화 특징들을 추출할 수 있다. 추출된 개인화 특징들은, 사용자 입력을 더 잘 이해하기 위해 어시스턴트 시스템(140)의 다른 모듈들에 의해 사용될 수 있다. 이어서, 특정 실시예들에서, 의미론적 정보 애그리게이터(310)는 다음의 단계들에서 사용자 콘텍스트 엔진(315)으로부터 리트리브된 정보, 즉, 사용자 프로파일을 프로세싱할 수 있다. 단계(311)에서, 의미론적 정보 애그리게이터(310)는 NLP(natural-language processing)에 기반하여 사용자 콘텍스트 엔진(315)으로부터 리트리브된 정보를 프로세싱할 수 있다. 특정 실시예들에서, 의미론적 정보 애그리게이터(310)는 텍스트 정규화에 의해 텍스트를 토큰화하고, 텍스트로부터 구문론(syntax) 특징들을 추출하고, NLP에 기반하여 텍스트로부터 의미론적 특징들을 추출할 수 있다. 의미론적 정보 애그리게이터(310)는 부가적으로, 사용자와 어시스턴트 시스템(140) 사이의 다이얼로그 이력으로부터 액세스되는 콘텍스츄얼 정보로부터 특징들을 추출할 수 있다. 의미론적 정보 애그리게이터(310)는 콘텍스츄얼 정보에 기반하여 글로벌 워드 임베딩, 도메인-특정 임베딩 및/또는 동적 임베딩을 추가로 수행할 수 있다. 단계(312)에서, 프로세싱 결과는 엔티티 태거에 의해 엔티티들로 주석될 수 있다. 주석들에 기반하여, 의미론적 정보 애그리게이터(310)는 단계(313)에서 리트리브된 정보에 대한 사전들을 생성할 수 있다. 특정 실시예들에서, 사전들은 오프라인에서 동적으로 업데이트될 수 있는 글로벌 사전 특징들을 포함할 수 있다. 단계(314)에서, 의미론적 정보 애그리게이터(310)는 엔티티 태거에 의해 태그된 엔티티들을 랭킹할 수 있다. 특정 실시예들에서, 의미론적 정보 애그리게이터(310)는 사용자 콘텍스트 엔진(315)으로부터 리트리브된 정보에 관련된 온톨로지(ontology) 데이터를 추출하기 위해 소셜 그래프, 지식 그래프, 또는 개념 그래프 중 하나 이상을 포함하는 상이한 그래프들(320)과 통신할 수 있다. 특정 실시예들에서, 의미론적 정보 애그리게이터(310)는 사용자 프로파일, 랭킹된 엔티티들, 및 그래프들(320)로부터의 정보를 애그리게이팅할 수 있다. 이어서, 의미론적 정보 애그리게이터(310)는, 도메인 분류/선택을 가능하게 하기 위해, 애그리게이팅된 정보를 NLU 모듈(210)에 제공할 수 있다.
특정 실시예들에서, NLU 모듈(210)의 출력은 원격 추론 모듈(214)에 전송될 수 있다. 추론 모듈(214)은 공동-참조(co-reference) 컴포넌트(325), 엔티티 레졸루션 컴포넌트(330) 및 다이얼로그 관리자(335)를 포함할 수 있다. NLU 모듈(210)의 출력은 사용자 요청과 연관된 콘텐츠 오브젝트들의 참조들을 해석하기 위해 공동-참조 컴포넌트(325)에서 먼저 수신될 수 있다. 특정 실시예들에서, 공동-참조 컴포넌트(325)는 사용자 요청이 참조하는 아이템을 식별하기 위해 사용될 수 있다. 공동-참조 컴포넌트(325)는 참조 생성(326) 및 참조 레졸루션(327)을 포함할 수 있다. 특정 실시예들에서, 참조 생성(326)은 NLU 모듈(210)에 의해 결정된 엔티티들에 대한 참조들을 생성할 수 있다. 참조 레졸루션(327)은 이들 참조들을 정확하게 리졸빙할 수 있다. 제한이 아닌 예로서, 사용자 요청은 "가장 가까운 식품점을 찾아 그곳으로 안내"하는 것을 포함할 수 있다. 공동-참조 컴포넌트(325)는 "그곳"을 "가장 가까운 식품점"으로서 해석할 수 있다. 특정 실시예들에서, 공동-참조 컴포넌트(325)는 개선된 정확도로 참조들을 해석하기 위해 필요할 때 사용자 콘텍스트 엔진(315) 및 다이얼로그 관리자(335)에 액세스할 수 있다.
특정 실시예들에서, 식별된 도메인들, 인텐트들, 메타-인텐트들, 슬롯들, 및 메타 슬롯들은, 리졸빙된 참조들과 함께, 관련 엔티티들을 리졸빙하기 위해 엔티티 레졸루션 컴포넌트(330)에 전송될 수 있다. 엔티티들은 (일반 지식 베이스로부터의) 실세계 엔티티, (사용자 메모리로부터의) 사용자 엔티티, 콘텍스츄얼 엔티티(디바이스 콘텍스트/다이얼로그 콘텍스트), 또는 값 레졸루션(번호들, 날짜 시간 등) 중 하나 이상을 포함할 수 있다. 엔티티 레졸루션 컴포넌트(330)는 일반 및 도메인-특정 엔티티 레졸루션을 실행할 수 있다. 특정 실시예들에서, 엔티티 레졸루션 컴포넌트(330)는 도메인 엔티티 레졸루션(331) 및 일반 엔티티 레졸루션(332)을 포함할 수 있다. 도메인 엔티티 레졸루션(331)은 슬롯들 및 메타 슬롯들을 상이한 도메인들로 카테고리화함으로써 엔티티들을 리졸빙할 수 있다. 특정 실시예들에서, 엔티티들은 그래프들(320)로부터 추출된 온톨로지 데이터에 기반하여 리졸빙될 수 있다. 온톨로지 데이터는 상이한 슬롯들/메타-슬롯들과 도메인들 사이의 구조적 관계를 포함할 수 있다. 온톨로지는 또한, 슬롯들/메타-슬롯들이 어떻게 그룹화되고, 상위 레벨이 도메인을 포함하는 계층 내에서 관련되는지, 그리고 유사성들 및 차이들에 따라 세분될 수 있는지에 대한 정보를 포함할 수 있다. 일반 엔티티 레졸루션(332)은 슬롯들 및 메타 슬롯들을 상이한 일반 토픽들로 카테고리화함으로써 엔티티들을 리졸빙할 수 있다. 특정 실시예들에서, 리졸빙하는 것은 또한, 그래프들(320)로부터 추출된 온톨로지 데이터에 기반할 수 있다. 온톨로지 데이터는 상이한 슬롯들/메타-슬롯들과 일반 토픽들 사이의 구조적 관계를 포함할 수 있다. 온톨로지는 또한, 슬롯들/메타-슬롯들이 어떻게 그룹화되고, 상위 레벨이 토픽을 포함하는 계층 내에서 관련되는지, 그리고 유사성들 및 차이들에 따라 세분될 수 있는지에 대한 정보를 포함할 수 있다. 제한이 아닌 예로서, 특정 브랜드의 전기 자동차의 장점들의 문의의 입력에 대한 응답으로, 일반 엔티티 레졸루션(332)은 참조된 브랜드의 전기 자동차를 차량으로서 리졸빙할 수 있고, 도메인 엔티티 레졸루션(331)은 참조된 브랜드의 전기 자동차를 전기 자동차로서 리졸빙할 수 있다.
특정 실시예들에서, 엔티티 레졸루션 컴포넌트(330)는 상이한 타입들의 엔티티들을 리졸빙하기 위해 상이한 기법들을 사용할 수 있다. 실세계 엔티티들의 경우, 엔티티 레졸루션 컴포넌트(330)는 지식 그래프를 사용하여 스팬(span)을 엔티티들, 이를테면, "음악 트랙", "영화" 등으로 리졸빙할 수 있다. 사용자 엔티티들의 경우, 엔티티 레졸루션 컴포넌트(330)는 사용자 메모리 또는 일부 에이전트들을 사용하여 스팬을 사용자-특정 엔티티들, 이를테면, "연락처", "리마인더들", "관계" 등으로 리졸빙할 수 있다. 콘텍스츄얼 엔티티들의 경우, 엔티티 레졸루션 컴포넌트(330)는 "그", "그녀", "첫 번째 것", "마지막의 것" 등과 같이 콘텍스트에서의 엔티티들에 대한 참조들을 리졸빙하기 위해 공동-참조 모듈(325)을 사용할 수 있다. 부가하여, 엔티티 레졸루션 컴포넌트(330)는 콘텍스트(디바이스 콘텍스트 또는 다이얼로그 콘텍스트) 하의 엔티티, 이를테면, 스크린 상에 보여지는 엔티티, 마지막 대화 이력으로부터의 엔티티 등을 리졸빙할 수 있다. 값 레졸루션들의 경우, 엔티티 레졸루션 컴포넌트(330)는 언급을 표준화된 형태의 정확한 값, 이를테면, 수치 값, 날짜 시간, 주소 등으로 리졸빙할 수 있다.
특정 실시예들에서, 엔티티 레졸루션 컴포넌트(330)는 엔티티 레졸루션을 수행하기 위해 ASR 모듈(208) 또는 ASR 모듈(216)과 동등하게(on par) 작동할 수 있다. 이름들을 리졸빙하는 것을 예로서 취하면, 엔티티 레졸루션 컴포넌트(330)는 다음과 같이 작동할 수 있다. 엔티티 레졸루션 컴포넌트(330)는 먼저, 이중 메타폰 알고리즘을 사용하여, 사용자와 연관된 이름들을 그들의 정규화된 텍스트 형태뿐만 아니라 음성 자음 표현으로 확장시킬 수 있다. 이어서, 엔티티 레졸루션 컴포넌트(330)는 완전한 n-베스트 세트의 후보 전사(transcription)들을 결정하고 모든 전사들에 대해 이해 프로세스를 병렬로 실행할 수 있다. 특정 실시예들에서, 동일한 인텐트로 리졸빙되는 각각의 전사는 단일 인텐트로 상쇄(collapse)될 수 있다. 인텐트는 가장 높은 스코어링 후보 전사에 대응하는 스코어를 얻을 수 있다. 상쇄 동안, 엔티티 레졸루션 컴포넌트(330)는 슬롯의 전사와 연관된 경계 타이밍 오프셋들에 의해 상관되는, 각각의 슬롯과 연관된 다양한 가능한 텍스트 전사들을 식별할 수 있다. 엔티티 레졸루션 컴포넌트(330)는, 복수의(예컨대, 1000개의) 후보 전사들로부터 슬롯 텍스트 가능성들을, 이들이 동일한 인텐트로 분류되는지 여부에 관계없이 추출할 수 있다. 따라서, 인텐트들 내의 슬롯들은 어구들의 스코어링된 리스트들일 수 있다. 특정 실시예들에서, 인텐트를 핸들링할 수 있는 새로운 또는 실행중인 태스크가 식별되고 인텐트를 전달할 수 있다. 태스크는 엔티티 레졸루션 컴포넌트(330)가 자신의 슬롯들 중 하나와 연관된 어구들의 스코어링된 리스트들 및 자신이 리졸빙되어야 하는 카테고리들을 제공하도록 트리거할 수 있다.
특정 실시예들에서, 친구 카테고리가 특정될 때, 엔티티 레졸루션 컴포넌트(330)는 매칭기 컴파일 시간에 동일한 확장 실행을 통해 용어들의 모든 각각의 후보 리스트를 실행할 수 있다. 용어들의 각각의 후보 확장은 미리 컴파일된 트리 매칭 구조에서 매칭될 수 있다. 전사된 입력, 매칭된 형태 및 친구 이름을 취하는 함수를 사용하여 매치들이 스코어링될 수 있다. 특정 실시예들에서, 유명인사/주목할만한 사람 카테고리가 특정될 때, 엔티티 레졸루션 컴포넌트(330)는 ASR 모듈(208) 또는 ASR 모듈(216)로부터의 슬롯에 대한 용어들의 각각의 후보 세트에 대해 지식 그래프에 대한 병렬 검색들을 실행할 수 있다. 엔티티 레졸루션 컴포넌트(330)는 매칭된 사람 인기도 및 ASR-제공된 스코어 신호에 기반하여 매치들을 스코어링할 수 있다. 특정 실시예들에서, 메모리 카테고리가 특정될 때, 엔티티 레졸루션 컴포넌트(330)는 사용자 메모리에 대해 동일한 검색을 수행할 수 있다. 엔티티 레졸루션 컴포넌트(330)는 사용자 메모리를 통해 역방향으로 크롤링하고 각각의 메모리(예컨대, 대화에서 최근에 언급된 개인, 또는 시각 신호들을 통해 보고 인식된 개인 등)를 매칭하려고 시도할 수 있다. 각각의 개인에 대해, 엔티티 레졸루션 컴포넌트(330)는 친구들이 매칭되는 방법(즉, 음성)과 유사하게 매칭을 이용할 수 있다. 특정 실시예들에서, 스코어링은 이름이 얼마나 최근에 언급되었는지와 관련된 시간적 쇠퇴 팩터를 포함할 수 있다. 엔티티 레졸루션 컴포넌트(330)는 추가로, 모든 매치들을 결합, 정렬 및 중복제거할 수 있다. 특정 실시예들에서, 태스크는 한 세트의 후보들을 수신할 수 있다. 다수의 높은 스코어링 후보들이 존재할 때, 엔티티 레졸루션 컴포넌트(330)는 사용자 촉진 명확화(user facilitated disambiguation)를 수행할 수 있다.
특정 실시예들에서, 엔티티 레졸루션 컴포넌트(330)는 (에이전트(350)에 대응하는) 태스크에 의해 구동될 수 있다. 프로세싱 순서의 이러한 반전은, 그렇게 하는 것이 명백하고 적절할 때, 태스크에 존재하는 도메인 지식이, 한 세트의 레졸루션 타겟들을 사전-필터링 또는 바이어싱하기 위해 적용되는 것을 가능하게 할 수 있다. 제한이 아닌 예로서, "누가 존인가?"란 발언의 경우, 명확한 카테고리가 발언에서 암시되지 않는다. 그러므로, 엔티티 레졸루션 컴포넌트(330)는 모든 각각의 것에 대해 "존"을 리졸빙할 수 있다. 제한이 아닌 다른 예로서, "존에게 메시지를 전송해"라는 발언의 경우, 엔티티 레졸루션 컴포넌트(330)는 "존"이 메시지를 수신할 수 있는 사람을 지칭한다고 쉽게 결정할 수 있다. 그 결과, 엔티티 레졸루션 컴포넌트(330)는 레졸루션을 친구로 바이어싱할 수 있다. 제한이 아닌 다른 예로서, "존의 가장 유명한 앨범은 무엇인가?"라는 발언의 경우, "존"을 리졸빙하기 위해, 엔티티 레졸루션 컴포넌트(330)는 먼저, 음악 앨범을 찾는 발언에 대응하는 태스크를 결정할 수 있다. 엔티티 레졸루션 컴포넌트(330)는 음악 앨범들과 관련된 엔티티들이 싱어들, 프로듀서들 및 레코딩 스튜디오들을 포함한다고 결정할 수 있다. 그러므로, 엔티티 레졸루션 컴포넌트(330)는 "존"을 리졸빙하기 위해 음악 도메인에서 이들 타입들의 엔티티들 중에서 검색할 수 있다.
특정 실시예들에서, 엔티티 레졸루션 컴포넌트(330)의 출력은 사용자와의 대화의 흐름을 진전시키기 위해 다이얼로그 관리자(335)에 전송될 수 있다. 다이얼로그 관리자(335)는, 상태를 반복적으로 업데이트하고 새로운 상태에 기반하여 액션들을 선택하는 비동기 상태 기계일 수 있다. 다이얼로그 관리자(335)는 다이얼로그 인텐트 레졸루션(336) 및 다이얼로그 상태 추적기(337)를 포함할 수 있다. 특정 실시예들에서, 다이얼로그 관리자(335)는, 선택된 액션들을 실행하고, 이어서, 선택된 액션이 사용자 응답을 요구하거나 또는 실행할 액션들이 더 이상 없을 때까지 다이얼로그 상태 추적기(337)를 다시 호출할 수 있다. 선택된 각각의 액션은 이전 액션들로부터의 실행 결과에 의존할 수 있다. 특정 실시예들에서, 다이얼로그 인텐트 레졸루션(336)은 사용자와 어시스턴트 시스템(140) 사이의 다이얼로그 이력에 기반하여 현재 다이얼로그 세션과 연관된 사용자 인텐트를 리졸빙할 수 있다. 다이얼로그 인텐트 레졸루션(336)은 NLU 모듈(210)에 의해 결정된 인텐트들을 상이한 다이얼로그 인텐트들에 매핑할 수 있다. 다이얼로그 인텐트 레졸루션(336)은 사용자와 어시스턴트 시스템(140) 사이의 다이얼로그 이력, 엔티티 레졸루션 컴포넌트(330) 및 NLU 모듈(210)로부터의 신호들에 기반하여 다이얼로그 인텐트들을 추가로 랭킹할 수 있다. 특정 실시예들에서, 다이얼로그 상태를 직접 변경하는 대신에, 다이얼로그 상태 추적기(337)는 부작용 없는 컴포넌트일 수 있고, 다이얼로그 상태에 대한 업데이트들을 제안하는 다이얼로그 상태 업데이트 오퍼레이터들의 n-베스트 후보들을 생성할 수 있다. 다이얼로그 상태 추적기(337)는, 다이얼로그 상태에 기반하여 상이한 타입들의 NLU 인텐트를 핸들링하고 오퍼레이터들를 생성하기 위한 로직을 포함하는 인텐트 리졸버들을 포함할 수 있다. 특정 실시예들에서, 로직은, 어시스턴트 시스템(140)이 명확화를 요청할 때 인텐트들을 핸들링하기 위한 명확화 인텐트 핸들러, 확인들을 핸들링하기 위한 로직을 포함하는 확인 인텐트 핸들러 등과 같은 인텐트 핸들러에 의해 구성될 수 있다. 인텐트 리졸버들은 사용자와의 대화에 대한 콘텍스츄얼 업데이트들을 생성하기 위해 다이얼로그 상태와 함께 턴 인텐트(turn intent)를 결합할 수 있다. 이어서, 슬롯 레졸루션 컴포넌트는, 지식 그래프 및 도메인 에이전트들을 포함하는 레졸루션 제공자들을 이용하여 업데이트 오퍼레이터들에서 슬롯들을 재귀적으로 리졸빙할 수 있다. 특정 실시예들에서, 다이얼로그 상태 추적기(337)는 현재 다이얼로그 세션의 다이얼로그 상태를 업데이트/랭킹할 수 있다. 제한이 아닌 예로서, 다이얼로그 상태 추적기(337)는 다이얼로그 세션이 종료되면 다이얼로그 상태를 "완료됨"으로서 업데이트할 수 있다. 제한이 아닌 다른 예로서, 다이얼로그 상태 추적기(337)는 다이얼로그 상태와 연관된 우선순위에 기반하여 다이얼로그 상태를 랭킹할 수 있다.
특정 실시예들에서, 추론 모듈(214)은 원격 액션 실행 모듈(226) 및 다이얼로그 중재자(216)와 각각 통신할 수 있다. 특정 실시예들에서, 추론 모듈(214)의 다이얼로그 관리자(335)는 다이얼로그 인텐트 및 연관된 콘텐츠 오브젝트들에 관해 액션 실행 모듈(226)의 태스크 완료 컴포넌트(340)와 통신할 수 있다. 특정 실시예들에서, 태스크 완료 모듈(340)은 상이한 다이얼로그 인텐트들에 대해 상이한 다이얼로그 가설들을 랭킹할 수 있다. 태스크 완료 모듈(340)은 액션 선택기(341)를 포함할 수 있다. 대안적인 실시예들에서, 액션 선택기(341)는 다이얼로그 관리자(335)에 포함될 수 있다. 특정 실시예들에서, 다이얼로그 관리자(335)는 부가적으로, 다이얼로그 상태에 관하여 다이얼로그 중재자(216)에 포함된 다이얼로그 정책들(345)에 대해 체크할 수 있다. 특정 실시예들에서, 다이얼로그 정책(345)은 에이전트(350)에 의한 액션의 실행 계획을 설명하는 데이터 구조를 포함할 수 있다. 다이얼로그 정책(345)은 일반 정책(346) 및 태스크 정책들(347)을 포함할 수 있다. 특정 실시예들에서, 일반 정책(346)은 개별적인 태스크들에 특정되지 않은 액션들에 대해 사용될 수 있다. 일반 정책(346)은 낮은 신뢰도 인텐트들, 내부 에러들, 재시도들에 대한 수용 불가능한 사용자 응답, ASR 또는 NLU 신뢰도 스코어들에 기반하여 확인을 스킵 또는 삽입하는 것 등을 핸들링하는 것을 포함할 수 있다. 일반 정책(346)은 또한, 다이얼로그 상태 추적기(337) 출력으로부터 다이얼로그 상태 업데이트 후보들을 랭킹하고 업데이트할 하나를 고르는 로직(이를테면, 최상위 랭킹 태스크 인텐트를 고름)을 포함할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 일반 정책(346)에 대한 특정 인터페이스를 가질 수 있으며, 이는 확산된 교차-도메인 정책/비즈니스-규칙들, 특히, 다이얼로그 상태 추적기(337)에서 발견되는 것들을 액션 선택기(341)의 기능으로 합병(consolidating)하는 것을 가능하게 한다. 일반 정책(346)에 대한 인터페이스는 또한, 특정 상황들 또는 클라이언트들, 예컨대, 클라이언트들, 상황 등에 기반하여 쉽게 스위칭 온 또는 오프될 수 있는 정책 기능들에 묶일 수 있는 자립식 하위-정책 유닛들의 저작을 가능하게 할 수 있다. 일반 정책(346)에 대한 인터페이스는 또한, 백-오프(back-off)를 갖는 정책들의 계층화(layering), 즉, 다수의 정책 유닛들을 제공하는 것을 가능하게 할 수 있는데, 특정 상황들을 처리하는 고도로 전문화된 정책 유닛들은 더 넓은 상황들에 적용되는 보다 일반 정책들(346)에 의해 백업된다. 이러한 콘텍스트에서, 일반 정책(346)은 대안적으로, 인텐트 또는 태스크 특정 정책을 포함할 수 있다. 특정 실시예들에서, 태스크 정책(347)은 태스크 및 현재 상태에 기반하여 액션 선택기(341)에 대한 로직을 포함할 수 있다. 특정 실시예들에서, 태스크 정책들(347)의 타입들은 다음의 타입들: (1) 수동으로 제작(craft)된 트리-기반 다이얼로그 계획들; (2) 액션들을 생성하기 위한 인터페이스를 직접 구현하는 코딩된 정책; (3) 구성자-특정 슬롯-충전 태스크들; 또는 (4) 데이터로부터 학습된 기계-학습 모델 기반 정책 중 하나 이상을 포함할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 규칙-기반 로직을 이용하여 새로운 도메인들을 부트스트래핑하고, 나중에 기계-학습 모델들을 이용하여 태스크 정책들(347)을 개선할 수 있다. 특정 실시예들에서, 다이얼로그 정책(345)은 미리 구성된 다이얼로그 계획인 트리-기반 정책일 수 있다. 현재 다이얼로그 상태에 기반하여, 다이얼로그 정책(345)은 실행할 노드를 선택하고 대응하는 액션들을 생성할 수 있다. 제한이 아닌 예로서, 트리-기반 정책은 토픽 그룹화 노드들 및 다이얼로그 액션 (리프) 노드들을 포함할 수 있다.
특정 실시예들에서, 액션 선택기(341)는 다이얼로그 상태의 후보 오퍼레이터들을 취하고, 어떤 액션이 실행되어야 하는지를 결정하기 위해 다이얼로그 정책(345)을 참고할 수 있다. 어시스턴트 시스템(140)은 교차-도메인 비즈니스 로직을 핸들링하는 일반 정책(346)과 함께 계층적 다이얼로그 정책을 사용할 수 있고, 태스크 정책들(347)은 태스크/도메인 특정 로직을 핸들링한다. 특정 실시예들에서, 일반 정책(346)은 다이얼로그 상태를 업데이트하기 위해 후보 오퍼레이터들로부터 하나의 오퍼레이터를 고르고, 이후에 태스크 정책(347)에 의해 사용자 대면 액션의 선택이 뒤따를 수 있다. 일단 태스크가 다이얼로그 상태에서 활성이면, 대응하는 태스크 정책(347)은 올바른 액션들을 선택하기 위해 참고될 수 있다. 특정 실시예들에서, 다이얼로그 상태 추적기(337) 및 액션 선택기(341) 양자 모두는 선택된 액션이 실행될 때까지 다이얼로그 상태를 변화시키지 않을 수 있다. 이는 어시스턴트 시스템(140)이, 추론적(speculative) ASR 결과들을 프로세싱하기 위해 다이얼로그 상태 추적기(337) 및 액션 선택기(341)를 실행하고 드라이 런(dry run)들로 n-베스트 랭킹을 수행하도록 할 수 있다. 특정 실시예들에서, 액션 선택기(341)는 다이얼로그 액션을 선택하기 위한 입력의 일부로서 다이얼로그 상태 업데이트 오퍼레이터들을 취할 수 있다. 다이얼로그 액션의 실행은 미래의 턴들을 핸들링하도록 다이얼로그 상태 추적기(337)에 명령하기 위한 한 세트의 예상을 생성할 수 있다. 특정 실시예들에서, 다음 턴으로부터의 사용자 입력을 핸들링할 때 다이얼로그 상태 추적기(337)에 콘텍스트를 제공하기 위해 예상이 사용될 수 있다. 제한이 아닌 예로서, 슬롯 요청 다이얼로그 액션은 요청된 슬롯에 대한 값을 입증하는 예상을 가질 수 있다.
특정 실시예들에서, 다이얼로그 관리자(335)는 슬롯 멘션들의 멀티-턴 구성 레졸루션(multi-turn compositional resolution)을 지원할 수 있다. NLU(210)로부터의 구성 파싱을 위해, 리졸버는 네스팅된 슬롯들을 재귀적으로 리졸빙할 수 있다. 다이얼로그 관리자(335)는 부가적으로, 네스팅된 슬롯들에 대한 명확화를 지원할 수 있다. 제한이 아닌 예로서, 사용자 요청은 "알렉스에게 전화하도록 나에게 리마인드해"일 수 있다. 리졸버는 실행 가능한 리마인더 할일 엔티티를 생성하기 전에 어느 알렉스에게 전화할지를 알 필요가 있을 수 있다. 리졸버는 특정 슬롯에 대해 추가적인 사용자 설명이 필요할 때 레졸루션을 중단하고 레졸루션 상태를 세팅할 수 있다. 일반 정책(346)은 레졸루션 상태를 검사하고 사용자 설명을 위한 대응하는 다이얼로그 액션을 생성할 수 있다. 다이얼로그 상태 추적기(337)에서, 사용자 요청 및 마지막 다이얼로그 액션에 기반하여, 다이얼로그 관리자는 네스팅된 슬롯을 업데이트할 수 있다. 이러한 능력은 어시스턴트 시스템(140)이 사용자와 상호작용하여 누락된 슬롯 값들을 수집할뿐만 아니라 더 복잡한/모호한 발언들의 모호성을 감소시켜 태스크를 완료하도록 할 수 있다. 특정 실시예들에서, 다이얼로그 관리자는 네스팅된 인텐트 및 멀티-인텐트 사용자 요청들(예컨대, "이 사진을 찍고 그것을 아빠에게 전송해")에서 누락된 슬롯들을 요청하는 것을 추가로 지원할 수 있다. 특정 실시예들에서, 다이얼로그 관리자(335)는 더 견고한 다이얼로그 경험을 위해 기계-학습 모델들을 지원할 수 있다. 제한이 아닌 예로서, 다이얼로그 상태 추적기(337)는 태스크 가설들에 대한 신념을 모델링하기 위해 뉴럴 네트워크 기반 모델들(또는 임의의 다른 적절한 기계-학습 모델들)을 사용할 수 있다. 제한이 아닌 다른 예로서, 액션 선택기(341)의 경우, 최고 우선순위 정책 유닛들은 설계에 의해 발생되어야 할 수 있는 화이트리스트/블랙리스트 오버라이드(override)들을 포함할 수 있고; 중간 우선순위 유닛들은 액션 선택을 위해 설계된 기계-학습 모델들을 포함할 수 있고; 더 낮은 우선순위 유닛들은, 기계-학습 모델들이 상황을 핸들링하지 않기로 택할 때 규칙-기반 폴백들을 포함할 수 있다. 특정 실시예들에서, 기계-학습 모델 기반 일반 정책 유닛은 어시스턴트 시스템(140)이 리던던트 명확화 또는 확인 단계들을 감소시켜서 사용자 요청을 실행하기 위한 턴들의 수를 감소시키는 것을 도울 수 있다.
특정 실시예들에서, 액션 실행 모듈(226)은 태스크 실행을 위해 상이한 에이전트들(350)을 호출할 수 있다. 에이전트(350)는 등록된 콘텐츠 제공자들 중에서 액션을 완료하기 위해 선택할 수 있다. 데이터 구조는 인텐트 및 인텐트와 연관된 하나 이상의 슬롯들에 기반하여 다이얼로그 관리자(335)에 의해 구성될 수 있다. 다이얼로그 정책(345)은 논리 오퍼레이터들을 통해 서로 관련된 다수의 목표들을 더 포함할 수 있다. 특정 실시예들에서, 목표는 다이얼로그 정책의 일부분의 결과일 수 있고, 이는 다이얼로그 관리자(335)에 의해 구성될 수 있다. 목표는 목표를 파라미터화하는 하나 이상의 명명된 인수들을 갖는 식별자(예컨대, 스트링)에 의해 표현될 수 있다. 제한이 아닌 예로서, 그 연관된 목표 인수를 갖는 목표는 {confirm_artist, args:{아티스트: "마돈나"}}로서 표현될 수 있다. 특정 실시예들에서, 다이얼로그 정책은 트리-구조 표현에 기반할 수 있으며, 여기서, 목표들은 트리의 리프들에 매핑된다. 특정 실시예들에서, 다이얼로그 관리자(335)는 수행할 다음 액션을 결정하기 위해 다이얼로그 정책(345)을 실행할 수 있다. 다이얼로그 정책들(345)은 일반 정책(346) 및 도메인 특정 정책들(347)을 포함할 수 있으며, 이들 양자 모두는 다이얼로그 상태에 기반하여 다음 시스템 액션을 선택하는 방법을 가이드할 수 있다. 특정 실시예들에서, 액션 실행 모듈(226)의 태스크 완료 컴포넌트(340)는 다음 시스템 액션의 가이던스를 획득하기 위해 다이얼로그 중재자(216)에 포함된 다이얼로그 정책들(345)과 통신할 수 있다. 그러므로, 특정 실시예들에서, 액션 선택 컴포넌트(341)는 다이얼로그 인텐트, 연관된 콘텐츠 오브젝트들, 및 다이얼로그 정책들(345)로부터의 가이던스에 기반하여 액션을 선택할 수 있다.
특정 실시예들에서, 액션 실행 모듈(226)의 출력은 원격 응답 실행 모듈(232)에 전송될 수 있다. 구체적으로, 액션 실행 모듈(226)의 태스크 완료 컴포넌트(340)의 출력은 응답 실행 모듈(226)의 CU 컴포저(355)에 전송될 수 있다. 대안적인 실시예들에서, 선택된 액션은 하나 이상의 에이전트들(350)이 수반될 것을 요구할 수 있다. 그 결과, 태스크 완료 모듈(340)은 선택된 액션에 관해 에이전트들(350)에게 통보할 수 있다. 한편, 다이얼로그 관리자(335)는 다이얼로그 상태를 업데이트하기 위한 명령을 수신할 수 있다. 제한이 아닌 예로서, 업데이트는 에이전트들(350)의 응답을 대기하는 것을 포함할 수 있다. 특정 실시예들에서, CU 컴포저(355)는 태스크 완료 모듈(340)의 출력에 기반하여 NLG(natural-language generation) 모듈(356)을 사용하여 사용자에 대한 통신 콘텐츠를 생성할 수 있다. 특정 실시예들에서, NLG 모듈(356)은 자연어 출력들을 생성하기 위해 상이한 언어 모델들 및/또는 언어 템플릿들을 사용할 수 있다. 자연어 출력들의 생성은 애플리케이션 특정적일 수 있다. 자연어 출력들의 생성은 또한, 각각의 사용자에 대해 개인화될 수 있다. CU 컴포저(355)는 또한, UI 페이로드 생성기(357)를 사용하여 생성된 통신 콘텐츠의 모달리티를 결정할 수 있다. 생성된 통신 콘텐츠가 사용자 요청에 대한 응답으로서 간주될 수 있기 때문에, CU 컴포저(355)는 부가적으로, 생성된 통신 콘텐츠를 응답 랭커(358)를 사용하여 랭킹할 수 있다. 제한이 아닌 예로서, 랭킹은 응답의 우선순위를 표시할 수 있다. 특정 실시예들에서, CU 컴포저(355)는 NLG 모듈(356)과는 별개일 수 있는 NLS(natural-language synthesis) 모듈을 포함할 수 있다. NLS 모듈은, 특정 사용자, 태스크 또는 에이전트에 대한 응답을 맞춤화하기 위해서, 성별, 볼륨, 페이스(pace), 스타일 또는 레지스터(register)를 포함하여, CU 컴포저(355)에 의해 생성되는 합성된 스피치의 속성들을 특정할 수 있다. NLS 모듈은 연관된 태스크들의 구현에 관여하지 않으면서 언어 합성을 튜닝할 수 있다. 자연어 생성을 맞춤화하는 것에 관한 더 많은 정보는 2018 년 4 월 30 일자로 출원된 미국 특허 출원 번호 제 15/966455 호에서 발견될 수 있으며, 이는 인용에 의해 포함된다.
특정 실시예들에서, 응답 실행 모듈(232)은 CU 컴포저(355)의 출력에 기반하여 상이한 태스크들을 수행할 수 있다. 이들 태스크들은 데이터 스토어(212)로부터 리트리브된 다이얼로그 상태를 기록(즉, 저장/업데이트)하는 것(361) 및 응답들을 생성하는 것(362)을 포함할 수 있다. 특정 실시예들에서, CU 컴포저(355)의 출력은, VR 헤드셋 또는 AR 스마트 안경에 디스플레이될 수 있는, 자연어 스트링들, 스피치, 파라미터들을 갖는 액션들, 또는 렌더링된 이미지들 또는 비디오들 중 하나 이상을 포함할 수 있다. 그 결과, 응답 실행 모듈(232)은 CU 컴포저(355)의 출력에 기반하여 어떤 태스크들을 수행할지를 결정할 수 있다. 특정 실시예들에서, 생성된 응답 및 통신 콘텐츠는 응답 실행 모듈(232)에 의해 로컬 렌더 출력 모듈(242)에 전송될 수 있다. 대안적인 실시예들에서, 통신 콘텐츠의 결정된 모달리티가 오디오이면, CU 컴포저(355)의 출력은 부가적으로, 원격 TTS 모듈(238)에 전송될 수 있다. 이어서, TTS 모듈(238)에 의해 생성된 스피치 및 응답 실행 모듈(232)에 의해 생성된 응답은 렌더 출력 모듈(242)에 전송될 수 있다.
도 4는 어시스턴트 시스템(140)에 의해 사용자 입력을 프로세싱하는 예시적인 다이어그램 흐름을 예시한다. 제한이 아닌 예로서, 사용자 입력은 오디오 신호들에 기반할 수 있다. 특정 실시예들에서, 클라이언트 시스템(130)의 마이크로폰 어레이(402)는 오디오 신호들(예컨대, 스피치)을 수신할 수 있다. 오디오 신호들은 오디오 프레임들의 포맷으로 프로세스 루프(404)에 송신될 수 있다. 특정 실시예들에서, 프로세스 루프(404)는 VAD(voice activity detection)(406) 및 WoV(wake-on-voice) 검출(408)을 위한 오디오 프레임들을 전송할 수 있다. 검출 결과들은 프로세스 루프(404)로 리턴될 수 있다. WoV 검출(408)이 사용자가 어시스턴트 시스템(140)을 인보크하기를 원한다고 표시하면, VAD(406) 결과와 함께 오디오 프레임들은, 인코딩된 오디오 데이터를 생성하기 위해 인코딩 유닛(410)에 전송될 수 있다. 인코딩 후에, 인코딩된 오디오 데이터는 프라이버시 및 보안 목적을 위해 암호화 유닛(412)에 전송되고, 이후에 링크 유닛(414) 및 암호해제 유닛(416)에 전송될 수 있다. 암호 해제 후에, 오디오 데이터는 마이크로폰 드라이버(418)에 전송될 수 있고, 마이크로폰 드라이버(418)는 추가로, 오디오 데이터를 오디오 서비스 모듈(420)에 송신할 수 있다. 대안적인 실시예들에서, 사용자 입력은 클라이언트 시스템(130)과 페어링된 무선 디바이스(예컨대, 블루투스 디바이스)에서 수신될 수 있다. 대응하여, 오디오 데이터는 무선-디바이스 드라이버(422)(예컨대, 블루투스 드라이버)로부터 오디오 서비스 모듈(420)로 전송될 수 있다. 특정 실시예들에서, 오디오 서비스 모듈(420)은 사용자 입력이 클라이언트 시스템(130) 상에서 실행되는 애플리케이션에 의해 충족될 수 있다고 결정할 수 있다. 이에 따라서, 오디오 서비스 모듈(420)은 사용자 입력을 RTC(real-time communication) 모듈(424)에 전송할 수 있다. RTC 모듈(424)은 비디오 또는 오디오 통신 시스템(예컨대, VOIP 또는 영상 전화)에 오디오 패킷들을 전달할 수 있다. RTC 모듈(424)은 사용자 입력과 관련된 태스크들을 실행하기 위해 관련 애플리케이션(app)(426)을 호출할 수 있다.
특정 실시예들에서, 오디오 서비스 모듈(420)은 사용자가 어시스턴트 시스템(140)이 응답할 필요가 있는 보조를 요청하고 있다고 결정할 수 있다. 이에 따라서, 오디오 서비스 모듈(420)은 클라이언트-어시스턴트 서비스 모듈(426)에 통보할 수 있다. 특정 실시예들에서, 클라이언트-어시스턴트 서비스 모듈(426)은 어시스턴트 오케스트레이터(206)와 통신할 수 있다. 어시스턴트 오케스트레이터(206)는 사용자 입력에 응답하기 위해 클라이언트 측 프로세스들을 사용할지 또는 서버 측 프로세스들을 사용할지를 결정할 수 있다. 특정 실시예들에서, 어시스턴트 오케스트레이터(206)는 클라이언트 측 프로세스들을 사용하기로 결정하고, 그러한 결정에 관해 클라이언트-어시스턴트 서비스 모듈(426)에 통보할 수 있다. 그 결과, 클라이언트-어시스턴트 서비스 모듈(426)은 사용자 입력에 응답하기 위해 관련 모듈들을 호출할 수 있다.
특정 실시예들에서, 클라이언트-어시스턴트 서비스 모듈(426)은 사용자 입력을 분석하기 위해 로컬 ASR 모듈(216)을 사용할 수 있다. ASR 모듈(216)은 G2P(grapheme-to-phoneme) 모델, 발음 학습 모델, PLM(personalized language model), 엔드-포인팅 모델 및 개인화된 음향 모델을 포함할 수 있다. 특정 실시예들에서, 클라이언트-어시스턴트 서비스 모듈(426)은 사용자 입력을 이해하기 위해 로컬 NLU 모듈(218)을 추가로 사용할 수 있다. NLU 모듈(218)은 NER(named entity resolution) 컴포넌트 및 콘텍스츄얼 세션-기반 NLU 컴포넌트를 포함할 수 있다. 특정 실시예들에서, 클라이언트-어시스턴트 서비스 모듈(426)은 사용자의 인텐트를 분석하기 위해 인텐트 브로커(428)를 사용할 수 있다. 사용자의 인텐트에 관해 정확하게 하기 위해, 인텐트 브로커(428)는 사용자 및 세계와 연관된 엔티티들을 포함하는 엔티티 스토어(430)에 액세스할 수 있다. 대안적인 실시예들에서, 사용자 입력은 클라이언트 시스템(130) 상에서 실행되는 애플리케이션(432)을 통해 제출될 수 있다. 이 경우, 입력 관리자(434)는 사용자 입력을 수신하고 이를 애플리케이션 환경(App Env) 모듈(436)에 의해 분석할 수 있다. 분석 결과는 애플리케이션(432)에 전송될 수 있고, 애플리케이션(432)은 추가로, 분석 결과를 ASR 모듈(216) 및 NLU 모듈(218)에 전송할 수 있다. 대안적인 실시예들에서, 사용자 입력은 클라이언트 시스템(130) 상에서 실행되는 어시스턴트 애플리케이션(438)을 통해 클라이언트-어시스턴트 서비스 모듈(426)에 직접 제출될 수 있다. 이어서, 클라이언트-어시스턴트 서비스 모듈(426)은 앞서 언급된 바와 같은 모듈들, 즉, ASR 모듈(216), NLU 모듈(218) 및 인텐트 브로커(428)에 기반하여 유사한 절차들을 수행할 수 있다.
특정 실시예들에서, 어시스턴트 오케스트레이터(206)는 서버 측 프로세스를 사용하기로 결정할 수 있다. 이에 따라서, 어시스턴트 오케스트레이터(206)는 어시스턴트 시스템(140)의 상이한 모듈들을 호스팅하는 하나 이상의 컴퓨팅 시스템들에 사용자 입력을 전송할 수 있다. 특정 실시예들에서, 서버-어시스턴트 서비스 모듈(301)은 어시스턴트 오케스트레이터(206)로부터 사용자 입력을 수신할 수 있다. 서버-어시스턴트 서비스 모듈(301)은 사용자 입력의 오디오 데이터를 분석하도록 원격 ASR 모듈(208)에 명령할 수 있다. ASR 모듈(208)은 G2P(grapheme-to-phoneme) 모델, 발음 학습 모델, PLM(personalized language model), 엔드-포인팅 모델 및 개인화된 음향 모델을 포함할 수 있다. 특정 실시예들에서, 서버-어시스턴트 서비스 모듈(301)은 추가로, 사용자 입력을 이해하도록 원격 NLU 모듈(210)에 명령할 수 있다. 특정 실시예들에서, 서버-어시스턴트 서비스 모듈(301)은 ASR 모듈(208) 및 NLU 모듈(210)로부터의 출력을 프로세싱하기 위해 원격 추론 모델(214)을 호출할 수 있다. 특정 실시예들에서, 추론 모델(214)은 엔티티 레졸루션 및 다이얼로그 최적화를 수행할 수 있다. 특정 실시예들에서, 추론 모델(314)의 출력은 하나 이상의 관련 태스크들을 실행하기 위해 에이전트(350)에 전송될 수 있다.
특정 실시예들에서, 에이전트(350)는, 자신이 관련 태스크들을 정확하게 실행할 수 있도록, 엔티티 레졸루션 및 다이얼로그 최적화로부터의 결과를 정확하게 이해하기 위해 온톨로지 모듈(440)에 액세스할 수 있다. 온톨로지 모듈(440)은 복수의 미리 정의된 도메인들, 인텐트들 및 슬롯들과 연관된 온톨로지 데이터를 제공할 수 있다. 온톨로지 데이터는 또한, 상이한 슬롯들과 도메인들 사이의 구조적 관계를 포함할 수 있다. 온톨로지 데이터는, 슬롯들이 어떻게 그룹화되고, 상위 레벨이 도메인을 포함하는 계층 내에서 관련되는지, 그리고 유사성들 및 차이들에 따라 세분될 수 있는지에 대한 정보를 더 포함할 수 있다. 온톨로지 데이터는 또한, 슬롯들이 어떻게 그룹화되고, 상위 레벨이 토픽을 포함하는 계층 내에서 관련되는지, 그리고 유사성들 및 차이들에 따라 세분될 수 있는지에 대한 정보를 포함할 수 있다. 일단 태스크들이 실행되면, 에이전트(350)는 태스크 완료 표시와 함께 실행 결과들을 추론 모듈(214)에 리턴할 수 있다.
본원에서 개시된 실시예들은 인공 현실(artificial reality) 시스템을 포함하거나 또는 인공 현실 시스템과 함께 구현될 수 있다. 인공 현실은, 예컨대, VR(virtual reality), AR(augment reality), MR(mixed reality), 하이브리드 현실, 또는 이들의 어떤 조합 및/또는 파생물들을 포함할 수 있는, 사용자에게 제공하기 전에 어떤 방식으로든 조정된 형태의 현실이다. 인공 현실 콘텐츠는 캡처된 콘텐츠(예컨대, 실세계 사진들)와 결합된, 생성된 콘텐츠 또는 완전히 생성된 콘텐츠를 포함할 수 있다. 인공 현실 콘텐츠는 비디오, 오디오, 햅틱 피드백, 또는 이들의 어떤 조합을 포함할 수 있으며, 이들 중 임의의 콘텐츠는 단일 채널로 또는 다수의 채널들(이를테면, 뷰어에게 3 차원 효과를 생성하는 스테레오 비디오)로 제공될 수 있다. 부가적으로, 일부 실시예들에서, 인공 현실은, 예컨대 인공 현실에서 콘텐츠를 생성하기 위해 사용되고 그리고/또는 인공 현실에서 사용되는(예컨대, 인공 현실에서 활동들을 수행하는) 애플리케이션들, 제품들, 액세서리들, 서비스들, 또는 이들의 어떤 조합과 연관될 수 있다. 인공 현실 콘텐츠를 제공하는 인공 현실 시스템은, 호스트 컴퓨터 시스템에 연결된 HMD(head-mounted display), 독립형 HMD, 모바일 디바이스 또는 컴퓨팅 시스템, 또는 하나 이상의 뷰어들에게 인공 현실 콘텐츠를 제공할 수 있는 임의의 다른 하드웨어 플랫폼을 포함하는 다양한 플랫폼들 상에서 구현될 수 있다.
선행적 콘텐츠 생성
특정 실시예들에서, 어시스턴트 시스템(140)은 선행적 콘텐츠 제안들을 사용자에게 제공할 수 있으며, 이는 다양한 멀티모달 신호들에 의해 트리거될 수 있다. 선행적 콘텐츠는 또한, 사용자의 요청에 응답하여 후속 액션들로서 제공될 수 있으며, 이는 일종의 반-선행적 사용 사례(semi-proactive use case)로 간주될 수 있다(즉, 이는 사용자 요청에 응답하는 것이기 때문에 완전히 선행적은 아닐 수 있음). 선행적 콘텐츠는 제안된 질의들, 제안된 후속 액션들, 보충 정보, 조사(survey)들, 또는 임의의 다른 적절한 콘텐츠를 포함할 수 있다. 후속 액션들로서 제공될 때, 선행적 콘텐츠는 사용자의 태스크가 완료된 후 대화를 확장시킴으로써 사용자 다이얼로그들을 풍부하게 할 수 있다. 제한이 아닌 예로서, 사용자는 "몇 시지?"라고 물을 수 있다. 어시스턴트 시스템(140)은 "오전 11시 30 분입니다"라고 답변할 수 있다. 어시스턴트 시스템(140)은 추가로, "당신의 캘린더를 보시겠습니까?"와 같은 제안된 후속 액션을 제공하거나 또는 "정오에 당신의 치과 예약에 도달하는 데 15 분이 걸릴 것입니다"와 같은 보충 정보를 제공할 수 있다. 제한이 아닌 다른 예로서, 사용자는 "바로 지금 어떤 노래가 재생되고 있는가?"라고 물을 수 있으며, 여기서, 사용자로부터 요청된 태스크는 [IN:get_track_info_music()]일 수 있다. 어시스턴트 시스템(140)은 "이는 Outkast에 의한 Hey Ya입니다"라고 답변할 수 있으며, 이는 태스크의 완료를 마킹한다. 어시스턴트 시스템(140)은 추가로, "이 노래를 당신의 즐겨찾기에 추가하길 원하십니까?"라고 선행적으로 물을 수 있으며, 이는 제안된 후속 액션(즉, [IN:add_to_favorites()])에 대응한다. 태스크의 완료, 사용자 콘텍스트의 변화, 또는 관련 멀티모달 신호는 선행적 정책을 트리거할 수 있다. 선행적 정책에 기반하여, 어시스턴트 시스템(140)은 어떤 종류의 선행적 콘텐츠를 실행할지를 결정할 수 있다. 어시스턴트 시스템(140)은 사용자와의 사전 상호작용들 또는 사용자에 관한 사전 지식을 취하여, 어떤 선행적 콘텐츠가 적절한지를 결정할 수 있다. 어시스턴트 시스템(140)은 다이얼로그의 각각의 턴에 대한 사용자 피드백에 기반하여 또는 멀티모달 콘텍스트에서 선행적 콘텐츠의 체인들을 생성할 수 있으며, 여기서, 사용자가 선행적 콘텐츠 또는 동적 멀티모달 신호들과 상호작용하는 것에 대한 응답으로, 어시스턴트 시스템(140)은 계속해서 선행적으로 콘텐츠를 제공할 수 있다. 제한이 아닌 예로서, 어시스턴트 시스템(140)은, 어시스턴트 시스템(140)이 각각의 턴의 종료 시에 새로운 추천을 제공하는 추천자 시스템으로서 기능할 수 있다. 선행적 콘텐츠를 통해, 어시스턴트 시스템(140)은, 어시스턴트 시스템(140)과 연관된 추가적인 특징들 또는 향상들을 위해 사용될 수 있는 핵심 기법들 그리고 성장(예컨대, 사용자 교육) 및 사용자 만족도 측정을 위한 즉각적인 기회들을 제공할 수 있다. 본 개시내용은 특정 방식으로 특정 시스템들에 의해 특정 선행적 콘텐츠를 생성하는 것을 설명하지만, 본 개시내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 선행적 콘텐츠를 생성하는 것을 고려한다.
특정 실시예들에서, 어시스턴트 시스템(140)은 제 1 사용자와 연관된 선행적 트리거들과 연관된 하나 이상의 입력들을 수신할 수 있다. 어시스턴트 시스템(140)은, 하나 이상의 선행적 정책들에 기반하여 제 1 사용자가 선행적 제안들을 수신할 자격이 있는지 여부를 결정할 수 있다. 이어서, 어시스턴트 시스템(140)은, 제 1 사용자와 연관된 사용자 콘텍스트 데이터 및 하나 이상의 입력들에 기반하여 하나 이상의 선행적 제안들을 생성할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은, 제 1 사용자와 연관된 태스크 이력 데이터에 기반하여 선행적 제안들 중 하나 이상을 선택할 수 있다. 어시스턴트 시스템(140)은 선행적 콘텐츠를 제 1 사용자에게 제공하기 위한 명령들을 제 1 사용자와 연관된 클라이언트 시스템(130)에 추가로 전송할 수 있다. 선행적 콘텐츠는 선택된 선행적 제안들을 포함할 수 있다.
특정 실시예들에서, 어시스턴트 시스템(140)은 사용자에게 어떤 선행적 콘텐츠를 제공할지를 결정하기 위해 상이한 타입들의 멀티모달 신호들을 사용할 수 있다. 멀티모달 신호들은 날짜, 시간, 위치, 시각 신호, 사운드 신호, 엔티티 업데이트 또는 사용자 콘텍스트 중 하나 이상을 포함할 수 있다. 제한이 아닌 예로서, 날짜 및 시간이 크리스마스 전 주를 표시하면, 선행적 콘텐츠는 선물들을 구매하기 위한 선행적 제안일 수 있다. 제한이 아닌 다른 예로서, 사운드가 노래이면, 선행적 콘텐츠는 관련 아티스트들에 대한 선행적 제안일 수 있다. 그 결과, 어시스턴트 시스템(140)은 상이한 타입들의 멀티모달 신호들에 응답하여 사용자들에게 선행적 제안들을 자동으로 제공함으로써 어시스턴트 시스템(140)과 관여하는 사용자들의 정도를 증가시키는 기술적 장점을 가질 수 있다. 본 개시 내용은 특정 방식으로 특정 신호들에 기반하여 특정 콘텐츠를 결정하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 신호에 기반하여 임의의 적절한 콘텐츠를 결정하는 것을 고려한다.
도 5는 선행적 제안들을 제공하기 위한 예시적인 아키텍처(500)를 예시한다. 특정 실시예들에서, 사용자 요청에 응답하여 선행적 제안들이 제공될 수 있다. 도 5에 예시된 바와 같이, 사용자 요청은 스피치에 기반할 수 있고, 서버 측 ASR 모듈(208) 또는 클라이언트 측 ASR 모듈(216)에서 수신될 수 있다. ASR 모듈(208/216)은 스피치로부터 텍스트를 추출하고, 추출된 텍스트를 서버 측 NLU 모듈(210) 또는 클라이언트 측 NLU 모듈(218)에 전송할 수 있다. NLU 모듈(210/218)은 사용자 요청과 연관된 인텐트들 및 슬롯들을 결정할 수 있다. 인텐트들 및 슬롯들은 다이얼로그 상태 추적기(337)에 전송될 수 있다. 특정 실시예들에서, 멀티모달 신호들에 응답하여 선행적 제안들이 제공될 수 있다. 제한이 아닌 예로서, 멀티모달 신호들은 제스처들, 위치들, 시각 자료(visual)들 등일 수 있다. 어시스턴트 시스템(140)은 멀티모달 신호들을 이해하고 이들을 이벤트들에 매핑할 수 있다. 이벤트들은 상이한 소스들로부터 올 수 있다. 제한이 아닌 예로서, 인텐트들은 특별한 타입의 이벤트들로서 보여질 수 있다. 어시스턴트 시스템(140)은 유효(valid) 이벤트들의 타입들을 유지하기 위해 온톨로지를 사용할 수 있다. 특정 실시예들에서, 멀티모달 신호들은 UCE(user context engine)(315)에서 수신될 수 있다. UCE(315)는 하나 이상의 멀티모달 이벤트들을 결정하고, 이들을 다이얼로그 상태 추적기(337)에 전송할 수 있다. 특정 실시예들에서, 세계 업데이트들 또는 소셜 업데이트들에 응답하여 선행적 제안들이 제공될 수 있다. 하나 이상의 관찰자들(505)은 그러한 업데이트들을 검출하고 이에 따라서 세계/소셜 이벤트들을 생성할 수 있다. 제한이 아닌 예로서, 세계 이벤트는 샌프란시스코의 날씨 변화일 수 있다. 제한이 아닌 다른 예로서, 소셜 이벤트는 엄마가 온라인에 접속하는 것일 수 있다. 관찰자들(505)은 세계/소셜 이벤트들을 다이얼로그 상태 추적기(337)에 전송할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 다이얼로그 상태 추적기(337) 전에 또는 다이얼로그 상태 추적기(337) 내부에서 유효 이벤트들을 필터링할 수 있다. 본 개시 내용은 특정 방식으로 특정 시스템들에 의해 특정 신호들에 응답하여 특정 제안들을 제공하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 신호에 응답하여 임의의 적절한 제안을 제공하는 것을 고려한다.
특정 실시예들에서, 다이얼로그 상태 추적기(337)는 사용자와 관련된 이벤트들을 추적하고, 인텐트들, 슬롯들, 멀티모달 이벤트들, 세계 이벤트들 또는 소셜 이벤트들 중 하나 이상에 기반하여 후보 태스크들을 제안할 수 있다. 사용자 상태(예컨대, 사용자의 현재 활동) 및 태스크 상태(예컨대, 트리거 조건들) 양자 모두가 추적될 수 있다. 현재 상태가 주어지면, 다이얼로그 상태 추적기(337)는 어시스턴트 시스템(140)이 사용자에 대해 수행할 수 있는 후보 태스크들을 제안할 수 있다. 제한이 아닌 예로서, 후보 태스크들은 "제안 보여주기", "날씨 정보 얻기", 또는 "사진 찍기"일 수 있다. 특정 실시예들에서, 다이얼로그 상태 추적기(337)는 지식 그래프(510), 사용자 메모리(515) 및 사용자 태스크 이력(520)을 포함하는 이용 가능한 지식에 기반하여 후보 태스크들을 제안할 수 있다. 특정 실시예들에서, 사용자 메모리(515)는 사용자에 대해 트리거될 수 있는 모든 가능한 선행적 태스크들을 저장하기 위한 진실 소스(source of truth)일 수 있다. 후보 태스크들은 액션 선택기(341)에 전송될 수 있으며, 액션 선택기(341)는 사용자에게 선행적 콘텐츠를 제공하기 위해 다른 모듈들과 통신할 수 있다. 특정 실시예들에서, 액션 선택기(341)는 다이얼로그 상태 추적기(337)로부터 제안된 후보 태스크를 취하고, 이 태스크의 우선순위 및 이 태스크를 전달하는 것이 괜찮은지 여부를 결정하기 위해 스마트 스케줄러(525)를 참고할 수 있다. 액션 선택기(341)는 또한, 페이로드 생성기를 호출하여 페이로드들을 생성하고 클라이언트 시스템(130)으로 갈 것으로 예상되는 "통보" 액션을 리턴할 수 있다. 제안된 후보 태스크들이 주어지면, 액션 선택기(341)는 태스크들을 수행하기 위해서 취할 액션들을 결정할 수 있다. 태스크가 실행/전달될 준비가 되었는지 여부와 같은 검증들은 액션 선택기(341)에 의해 수행될 수 있다. 특정 실시예들에서, 어시스턴트 추천기(530)는 사용자에게 어떤 선행적 제안들을 제공할지를 결정할 수 있다. 어시스턴트 추천기(530)는 제 1 사용자와 연관된 사용자 콘텍스트 데이터, 제 1 사용자와 연관된 사용자 메모리(515), 또는 지식 그래프(510) 중 하나 이상에 기반하여 선행적 제안들 중 하나 이상을 선택할 수 있다. 특정 실시예들에서, 어시스턴트 추천기(530)는, 선행적 제안이 에이전트들(350)에 의해 실행될 것을 요구하면, 상이한 에이전트들(350)과 통신할 수 있다. 어시스턴트 추천기(530)는 또한, 사용자 교육 모듈(535)과 통신할 수 있다. 본 개시 내용은 특정 방식으로 특정 시스템들에 의해 특정 태스크 및 액션들을 결정하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 태스크 및 액션을 결정하는 것을 고려한다.
특정 실시예들에서, 사용자 교육 모듈(535)은, 사용자가 어시스턴트 시스템(140)이 할 수 있는 것에 관한 새로운 스킬을 학습할 수 있게 하는 선행적 제안들을 추천하는 것을 담당할 수 있다. 사용자 교육 모듈(535)은 사용자가 수행하는 방법을 이미 알고 있는 것을 보기 위해 사용자 태스크 이력(520) 및 사용자 메모리(515)에 액세스할 수 있고, 이어서, 사용자가 이전에 수행하려고 시도하지 않은 스킬들을 추천할 수 있다. 그 결과, 어시스턴트 시스템(140)이 이력 데이터에 기반하여 사용자가 어떤 스킬들을 아직 탐구하지 않았는지를 정확하게 결정하고 그러한 스킬들과 관련된 제안들을 사용자에게 제공할 수 있기 때문에, 어시스턴트 시스템(140)은 어시스턴트 시스템(140)이 할 수 있는 새로운 스킬들을 사용자가 학습하는 것을 보조하는 기술적 장점을 가질 수 있다. 부가하여, 사용자 교육 모듈(535)은, 추천된 선행적 제안들이 사용자가 관심 있고 사용자에게 관련됨을 확실하게 하기 위해, 사용자 콘텍스트, 다이얼로그 콘텍스트, 사용자 태스크 이력(520), 사용자 메모리(515)를 고려할 수 있다. 사용자 교육 모듈(535)은 사용자의 다음 인텐트를 예측하여 특정 어시스턴트 스킬을 결정할 수 있다. 구체적으로, 사용자 교육 모듈(535)은 하나 이상의 입력들에 기반하여 제 1 사용자와 연관된 초기 인텐트를 결정할 수 있다. 이어서, 사용자 교육 모듈(535)은 초기 인텐트에 기반하여 제 1 사용자와 연관된 후속 인텐트를 결정할 수 있다. 이에 따라서, 어시스턴트 시스템(140)은, 후속 인텐트에 추가로 기반하여 하나 이상의 선행적 제안들을 생성할 수 있다. 제한이 아닌 예로서, 다음 인텐트는 새로운 태스크에 대한 추천일 수 있다. 특정 실시예들에서, 다음 인텐트는, 어시스턴트 시스템(140)이 UCE(315) 및 사용자 태스크 이력(520)으로부터 사용자가 다음에 그 스킬을 수행하기를 원할 수 있다는 것을 알고 있다면, 사용자가 이전에 사용한 스킬에 대한 추천일 수 있다. 그 결과, 사용자 교육 모듈(535)은 사용자에게 이전에 이미 추천된 선행적 제안을 추천할 수 있다. 특정 실시예들에서, 후속 인텐트를 결정하는 것은 기계-학습 모델에 기반할 수 있다. 기계-학습 모델은 복수의 인텐트-쌍들과 연관된 데이터에 기반하여 트레이닝될 수 있다. 특정 실시예들에서, 복수의 인텐트-쌍들과 연관된 데이터는 초기 인텐트와 후속 인텐트 사이의 인텐트-쌍과 연관된 데이터를 포함할 수 있다. 제한이 아닌 예로서, 복수의 사용자 상호작용들이 인텐트 B가 항상 인텐트 A를 뒤따랐다는 것을 드러내면, 어시스턴트 시스템(140)은 인텐트-쌍 A-B를 생성할 수 있다. 이에 따라서, 사용자 교육 모듈(535)이 미래에 인텐트 A를 식별할 때, 사용자 교육 모듈(535)은 사용자의 다음 인텐트를 인텐트 B로서 예측할 수 있다. 특정 실시예들에서, 사용자 교육 모듈(535)은 추천할 베스트 선행적 제안을 결정하기 위해서 모듈 계층에서 제 1-레벨 랭킹을 얻기 위해 값-모델 랭커를 사용할 수 있다. 사용자 콘텍스트, 다이얼로그 콘텍스트, 사용자 태스크 이력, 사용자 메모리, 및 지식 그래프를 사용하여 선행적 제안들을 결정하는 것은, 사용자에게 어떤 선행적 제안들을 제공할지를 정확하게 결정하는 기술적 난제를 해결하기 위한 효과적인 솔루션일 수 있는데, 그 이유는 이들 상이한 타입들의 데이터가 추천되는 선행적 제안들이 사용자가 관심 있고 사용자에게 관련됨을 보장할 수 있기 때문이다. 본 개시 내용은 특정 방식으로 특정 시스템들에 의해 특정 제안들을 추천하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 제안을 추천하는 것을 고려한다.
특정 실시예들에서, 스마트 스케줄러(525)는, 태스크 아직 스케줄링되지 않았다면 이 태스크를 스케줄링하며, 그리고 전달을 위한 페이로드들을 생성하기 전에 레이트 제한, 우선순위 세팅 및 임의의 다른 개인화 요건들을 강제하기 위해 사용될 수 있다. 스마트 스케줄러(525)는 선행적 콘텐츠의 전달 스케줄을 결정할 수 있다. 대응하여, 제 1 사용자에게 선행적 콘텐츠를 제공하기 위한 명령들을 전송하는 것은 전달 스케줄에 기반할 수 있다. 전달 스케줄은 제 1 사용자와 연관된 사용자 콘텍스트 데이터(즉, UCE(315)로부터 옴), 제 1 사용자와 연관된 사용자 메모리(515), 또는 지식 그래프(510) 중 하나 이상에 기반하여 결정될 수 있다. 스마트 스케줄러(525)는 결정된 전달 스케줄을 액션 선택기(341)에 다시 전송할 수 있다. 사용자 콘텍스트 데이터, 사용자 메모리 또는 지식 그래프에 기반하여 선행적 콘텐츠의 전달 스케줄을 결정하는 것은, 가장 적절한 조건 하에서 사용자에게 선행적 콘텐츠를 제공하기 위한 효과적인 솔루션일 수 있는데, 그 이유는 이들 타입들의 데이터가 사용자가 선행적 콘텐츠로 촉구될 용의가 있을 수 있다는 개인 선호도들을 캡처할 수 있기 때문이다. 특정 실시예들에서, 액션 선택기(341)는, 특정 디바이스(들)에 액션들을 전달하고 실시간 디바이스 콘텍스트를 페칭(fetching)하여 이러한 실시간 디바이스 콘텍스트를, 상위 스트림 컴포넌트들에 의해 세팅되는 상호작용 모드(예컨대, 인터럽션(interruption) 없음)와 매칭시킴으로써 태스크를 충족시키기 위해 클라이언트 시스템(130)에 대해 액션들을 전달 및 실행할 수 있다. 제한이 아닌 예로서, 액션은 통보, 제안, 슬롯에 대한 요청, 또는 디바이스 제어 중 하나 이상을 포함할 수 있다. 예컨대, 어시스턴트 시스템(140)은 인텐트-확인 다이얼로그 액션(즉, "프롬프트" 다이얼로그 액트 타입)을 구성할 수 있다. 이는 새로운 태스크에 대한 선행적 제안을 위한 인텐트 및 슬롯들을 포함할 수 있다. 어시스턴트 시스템(140)은 추가로, "프롬프트" 다이얼로그 액트 템플릿에 대응하는 예/아니오 질문을 물을 수 있다. 사용자가 "예"라고 말하면, 새로운 태스크가 실행될 수 있다. 액션 선택기(341)는 추가로, 전달 상태 업데이트가 주어지면 피드백을 다이얼로그 상태 추적기(337)에 전송할 수 있다. 본 개시내용은 특정 방식으로 특정 시스템들에 의해 특정 콘텐츠를 스케줄링하는 것을 설명하지만, 본 개시내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 콘텐츠를 스케줄링하는 것을 고려한다.
특정 실시예들에서, 어시스턴트 시스템(140)은 온라인 방식으로(예컨대, 사용자의 명시적인 요청이 주어지면 즉시 생성됨) 또는 오프라인 방식으로(예컨대, 오프라인으로 사용자의 행동 패턴들을 마이닝(mining)하는 것을 통해 비동기적으로 생성됨) 선행적 태스크를 생성할 수 있다. 제한이 아닌 예로서, 태스크의 완료시에 사용자에게 피드백을 전송하거나, 또는 태스크를 재시도하기 위한 태스크들이 온라인으로 생성될 수 있다. 선행적 태스크는 또한, 오프라인 프로세싱과 비동기적으로 생성될 수 있다. 어시스턴트 시스템(140)은 사용자 행동 패턴들을 마이닝하기 위해 사용자 메모리 외에 오프라인 추론을 수행하고, 이어서, 사용자에 대한 루틴 기반 선행적 태스크들을 스케줄링할 수 있다. 어시스턴트 시스템(140)은 사용자 메모리(515) 외에 실행되는 추론 계층을 갖고, 배치 프로세싱(batching processing)을 핸들링하기 위해 스마트 스케줄러(525)를 비동기식으로 호출할 수 있다. 본 개시내용은 특정 방식으로 특정 시스템들에 의해 특정 태스크들을 생성하는 것을 설명하지만, 본 개시내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 태스크를 생성하는 것을 고려한다.
특정 실시예들에서, 어시스턴트 시스템(140)은 사용자에게 선행적 제안을 제공할지 여부 및 제공한다면 어떤 선행적 제안을 제공할지를 결정하기 위해 다이얼로그 정책들을 사용할 수 있다. 다이얼로그 정책들은 적격성 정책을 포함할 수 있으며, 이는 사용자가 선행적 제안에 대한 자격이 있는지를 결정할 수 있다. 적격성 정책은 또한, 그러한 선행적 제안을 제공하기에 적절한 시간인지를 결정할 수 있다. 적격성 정책은 (UCE(315)로부터의) 사용자 콘텍스트, 사용자 태스크 이력(520), 또는 사용자 메모리(515)와 같은 상이한 정보에 기반할 수 있다. 다시 말해서, 제 1 사용자가 선행적 제안들을 수신할 자격이 있는지 여부를 결정하는 것은, 제 1 사용자와 연관된 사용자 콘텍스트 데이터, 제 1 사용자와 연관된 태스크 이력 데이터(520), 또는 제 1 사용자와 연관된 사용자 메모리(515) 중 하나 이상에 추가로 기반할 수 있다. 사용자 콘텍스트는 제 1 사용자가 관여하는 현재 태스크들/활동들을 표시할 수 있다. 제한이 아닌 예로서, 사용자가 자러 간다면, 또는 사용자가 다른 태스크, 예컨대, 운전, 달리기 또는 회의에 집중하여 바쁘다면, 어시스턴트 시스템(140)은 적격성 정책에 기반하여 선행적 제안을 제공하지 않을 수 있다. 특정 실시예들에서, 입력들과 연관된 태스크/인텐트가 태스크들/인텐트들/스킬들의 화이트리스트에 있다면, 사용자는 선행적 제안들을 수신할 자격이 있을 수 있다. 부가하여, 사용자가 최근에(예컨대, 마지막 1 시간, 마지막 날 등 내에) 다른 선행적 제안을 수신했다면, 적격성 정책은 원하지 않는 제안으로 사용자에게 과부하를 주지 않기 위해 어떠한 새로운 선행적 제안도 제공하지 않기로 결정할 수 있다. 그러나, 사용자가 선행적 제안들의 체이닝(chaining)을 허용하기 위한 마지막 제안을 수락했다면, 선행적 정책들은 적격성 정책을 우회하기로 결정할 수 있다. 사용자가 선행적 제안들에 자격이 있는지 여부를 결정하기 위해 사용자 콘텍스트 데이터, 태스크 이력 데이터, 또는 사용자 메모리에 기반하여 다이얼로그 정책들을 사용하는 것은, 원하지 않는 제안들로 사용자에게 과부하를 주지 않는 기술적 난제를 해결하기 위한 효과적인 솔루션일 수 있는데, 그 이유는 그러한 다이얼로그 정책들은 사용자가 선행적 제안을 원하는지 여부를 평가하기 위해 사용자와 관련된 이력 정보 및 현재 정보 양자 모두를 효과적으로 사용할 수 있기 때문이다. 본 개시 내용은 특정 방식으로 특정 제안들에 대한 특정 정책들을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 제안에 대한 임의의 적절한 정책을 고려한다.
각각의 사용자에 대해, 어시스턴트 시스템(140)은 사용자 태스크 이력(520) 또는 사용자 메모리(515)에 구조화된 인텐트 이력을 저장할 수 있다. 그 결과, 각각의 사용자 및 각각의 인텐트에 대해, 어시스턴트 시스템(140)은 사용자의 이전 인텐트들을 신속하게 룩업할 수 있다. 부가적으로, 각각의 사용자에 대해, 어시스턴트 시스템(140)은 임의의 선행적 제안이 마지막으로 제공된 시간, 그리고 어떤 선행적 제안들이 사용자의 어시스턴트 활동 로그로서 제공되었는지를 저장할 수 있다. 사용자의 어시스턴트 활동 로그를 저장하는 것은, 선행적 제안들을 과도하게 트리거하지 않고 동일한 선행적 제안을 한 번 이상하지 않는 목표를 충족시키는 데 유용할 수 있다. 본 개시 내용은 특정 방식으로 특정 시스템들에 의해 특정 사용자 이력/메모리를 저장하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 사용자 이력/메모리를 저장하는 것을 고려한다.
특정 실시예들에서, 어시스턴트 시스템(140)은 상이한 선행적 콘텐츠 모듈들을 사용하여 선행적 제안들을 생성할 수 있다. 이들 콘텐츠 모듈들은 어떤 선행적 제안이 관련되는지 또는 이용 가능한지를 결정할 수 있다. 모든 콘텐츠 모듈들은 병렬로 실행되고 후보 선행적 제안을 생성할 수 있다. 선행적 콘텐츠 모듈들의 병렬화는 단일 정책이 모든 모듈들을 제어할 수 있게 하고, 부가적인 타입들의 선행적 콘텐츠로의 스케일링을 더 쉽게 할 수 있다. 다이얼로그 액션을 생성하는 임의의 모듈은 다른 모듈들과 병렬로 실행되기 위한 선행적 콘텐츠 모듈들 중 하나일 수 있다. 특정 실시예들에서, 각각의 모듈은 가능한 선행적 콘텐츠들의 자신만의 랭킹을 결정하고 단지 최상위 랭킹 콘텐츠를 출력할 수 있다. 본 개시 내용은 특정 방식으로 특정 콘텐츠 모듈들을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 콘텐츠 모듈을 고려한다.
특정 실시예들에서, 하나 이상의 선행적 제안들 각각은 제안된 조사(survey), 제안된 질의 또는 제안된 태스크 중 하나 이상을 포함할 수 있다. 특정 실시예들에서, 선행적 제안들이 하나 이상의 제안된 조사들을 포함하면, 어시스턴트 시스템(140)은 사용자 피드백을 요청하는 다이얼로그 액션을 생성함으로써 일반 사용자 만족도 조사를 생성할 수 있다. 제한이 아닌 예로서, 제안된 조사는 "오늘 당신의 경험이 좋았나요?"일 수 있으며, 이에 대해, 사용자는 "예" 또는 "아니오"라고 대답할 수 있다. 제한이 아닌 다른 예로서, 제안된 조사는 "당신의 경험을 1 내지 5로 레이팅하세요"일 수 있으며, 이에 대해, 사용자는 1 내지 5에서 선택할 수 있다. 제한이 아닌 또 다른 예로서, 제안된 조사는 "학습하도록 도와주세요: 당신의 요청을 올바르게 해결했나요?"일 수 있다. 어시스턴트 시스템(140)은 제안된 조사들을 활용하여 사용자 만족도 측정을 위한 명시적인 사용자 피드백을 모을 수 있다. 본 개시 내용은 특정 방식으로 특정 조사들을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 조사를 고려한다.
특정 실시예들에서, 하나 이상의 선행적 제안들을 생성하는 것은 복수의 선행적 제안들을 포함하는 미리 결정된 제안 리스트에 액세스하는 것을 포함할 수 있다. 미리 결정된 제안 리스트는, 제 1 사용자와 연관된 태스크 이력 데이터(520), 제 1 사용자와 연관된 사용자 메모리(515), 또는 지식 그래프(510) 중 하나 이상에 기반하여 생성될 수 있다. 제한이 아닌 예로서, 선행적 제안들이 하나 이상의 제안된 질문들을 포함하면, 미리 결정된 제안 리스트는 블랙리스트에 오른 질문 시나리오들/인텐트들을 포함할 수 있다. 블랙리스트에 오른 질문 시나리오들/의도들은, 사용자들이 이전에 이미 대답한 제안된 질문들을 사용자들이 수신하지 않고, 주어진 시간 기간 내에 한 번보다 더 많이 임의의 제안된 질문으로는 촉구되지 않으며(예컨대, 하루에 최대 하나의 제안된 질문), 언제나 한 번보다 더 많이 임의의 특정 제안된 질문으로는 촉구되지 않음을 보장할 수 있다. 어시스턴트 시스템(140)은 사용자가 특정 스킬을 실행하기를 원하는지를 묻는 다이얼로그 액션을 생성할 수 있다. 제한이 아닌 예로서, 다이얼로그 액션 타입은 "프롬프트", 예컨대, "새로운 알람을 세팅하길 원하세요?"일 수 있다. 사용자가 "예"라고 말하면, 어시스턴트 시스템(140)은 추천된 스킬을 실행할 수 있다. 사용자가 "아니오"라고 말하면, 어시스턴트 시스템(140)은 어떠한 액션도 실행하지 않을 수 있다. 제한이 아닌 다른 예로서, 선행적 제안들이 하나 이상의 제안된 태스크들을 포함하면, 미리 결정된 제안 리스트는 블랙리스트에 오른 태스크 시나리오들/인텐트들을 포함할 수 있다. 블랙리스트에 오른 태스크 시나리오들/인텐트들은 블랙리스트에 오른 질문 시나리오들/인텐트들과 유사한 목적을 제공할 수 있다. 어시스턴트 시스템(140)은 다른 어시스턴트 스킬을 사용자에게 통보하는 다이얼로그 액션을 생성할 수 있다. 제한이 아닌 예로서, 다이얼로그 액션 타입은 "제안", 예컨대, "당신을 위해 알람들을 또한 세팅할 수 있습니다"일 수 있다. "어시스턴트야, 내일 오전 7시에 알람을 세팅해 줘"와 같이 말해보라. 이 경우, 사용자 피드백/응답은 요구되지 않을 수 있다. 본 개시 내용은 특정 방식으로 특정 리스트들에 기반하여 특정 제안들을 생성하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 리스트에 기반하여 임의의 적절한 제안을 생성하는 것을 고려한다.
사용자가 제안된 조사, 제안된 질문, 제안된 태스크 또는 임의의 타입의 선행적 콘텐츠에 대해 자격이 있다면, 어시스턴트 시스템(140)은 사용자에게 제공할 하나만을 고를 수 있다. 특정 실시예들에서, 액션 선택기(341)는 모든 선행적 콘텐츠 모듈들 중에서 옵션들을 랭킹하여 최상위 선행적 제안을 제공할 수 있다. 다시 말해서, 액션 선택기(341)는 교차-도메인 랭킹을 수행할 수 있다. 선행적 콘텐츠 모듈들 각각은 선택적으로, 다이얼로그 액션을 생성할 수 있으며, 이 다이얼로그 액션에 대해, 액션 선택기(341)는 실제로 실행할 그러한 액션들 중 하나를 선택할 수 있다. 특정 실시예들에서, 다이얼로그 액션은 무작위로 또는 더 정교한 규칙들/모델들에 기반하여 선택될 수 있다. 제한이 아닌 예로서, 하나의 규칙은, 사용자 태스크 이력(520) 및/또는 사용자 메모리(515)에 기반하여, 선행적 제안을 위해 어느 선행적 콘텐츠 모듈이 가장 최근에 사용되지 않았는지에 대해 선호도가 주어져야 한다는 것일 수 있으며, 이는 다양성을 개선하는 것을 목적으로 한다. 액션 선택기(341)는 사용자 태스크 이력(520) 및/또는 사용자 메모리(515)에 액세스하고, 선행적 다이얼로그 액션이 타임스탬프와 함께 제공되었다고 결정하고, 액션이 실행된 그 선행적 콘텐츠 모듈의 이름을 식별하고, 모듈-특정 정보에 액세스할 수 있다. 본 개시 내용은 특정 방식으로 특정 시스템들에 의해 특정 제안들을 랭킹하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 제안을 랭킹하는 것을 고려한다.
특정 실시예들에서, 하나 이상의 입력들은 제 1 태스크의 완료의 하나 이상의 표시들을 포함할 수 있다. 대응하여, 하나 이상의 선행적 제안들 각각은 후속 조사, 후속 질문 또는 후속 태스크 중 하나 이상을 포함할 수 있다. 이 시나리오에서, 어시스턴트 시스템(140)은 제 1 태스크가 선행적 제안들에 대해 자격이 있는 태스크들의 화이트리스트에 있음을 검증할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 각각의 턴에서 사용자 피드백에 기반하여 선행적 제안들의 체인들을 생성할 수 있다. 어시스턴트 시스템(140)은, 클라이언트 시스템(130)으로부터, 제공된 선행적 콘텐츠에 응답하여 제 1 사용자로부터의 사용자 입력을 수신할 수 있다. 이어서, 어시스턴트 시스템(140)은 사용자 입력에 응답하여 제 2 태스크를 실행할 수 있다. 어시스턴트 시스템(140)은 추가로, 제 1 태스크, 및 제 2 태스크의 실행에 기반하여, 하나 이상의 업데이트된 선행적 제안들을 생성할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은, 체이닝된 선행적 제안들을 생성하기 위해, 콘텍스트 캐리오버(carryover), 즉, 사용자의 초기 요청부터 선행적 제안들까지 인텐트들 및/또는 슬롯들을 전달하는 것을 사용할 수 있다. 제한이 아닌 예로서, 제 1 태스크가 완료된 후, 어시스턴트 시스템(140)은 제 2 태스크에 대응하는 제 1 선행적 제안을 생성하고 이를 사용자에게 선행적으로 제공할 수 있다. 사용자가 (예컨대, "예"라고 말함으로써) 제 1 선행적 제안을 확인하면, 어시스턴트 시스템(140)은 제 2 태스크를 완료할 수 있다. 이어서, 어시스턴트 시스템(140)은 제 1 태스크 및 제 2 태스크 양자 모두를 고려하여, 제 3 태스크에 대응하는 제 2 선행적 제안을 생성하고 이를 사용자에게 선행적으로 제공할 수 있다. 어시스턴트 시스템(140)은 사용자 피드백이 사용자가 더 이상 선행적 제안에 관심이 없음을 표시할 때까지 선행적 제안들의 그러한 체이닝된 시퀀스를 계속할 수 있다. 본 개시내용은 특정 방식으로 특정 시스템들에 의해 특정 체이닝된 제안들을 생성하는 것을 설명하지만, 본 개시내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 체이닝된 제안들을 생성하는 것을 고려한다.
특정 실시예들에서, 하나 이상의 입력들은 하나 이상의 멀티모달 신호들을 포함할 수 있다. 각각의 멀티모달 신호는 날짜, 시간, 위치, 시각 신호, 사운드 신호, 엔티티 업데이트 또는 사용자 콘텍스트 중 하나 이상에 기반할 수 있다. 어시스턴트 시스템(140)은 유사하게, 멀티모달 콘텍스트에서 선행적 제안들의 체인을 생성할 수 있다. 특정 실시예들에서, 어시스턴트 시스템(140)은 하나 이상의 업데이트된 멀티모달 신호들을 수신할 수 있다. 이어서, 어시스턴트 시스템(140)은 업데이트된 멀티모달 신호들에 기반하여 하나 이상의 업데이트된 선행적 제안들을 생성할 수 있다. 제한이 아닌 예로서, 새로운 멀티모달 신호들이 들어올 때, UCE(315)는 사용자와 연관된 사용자 콘텍스트를 업데이트할 수 있다. 업데이트된 사용자 콘텍스트는 멀티모달 다이얼로그 상태에 레코딩될 수 있다. 이어서, 어시스턴트 시스템(140)은 업데이트된 사용자 콘텍스트에 대한 응답으로 새로운 선행적 제안들을 제공할 수 있다. 본 개시내용은 특정 방식으로 특정 시스템들에 의해 특정 체이닝된 제안들을 생성하는 것을 설명하지만, 본 개시내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 체이닝된 제안들을 생성하는 것을 고려한다.
특정 실시예들에서, 선택된 선행적 제안은 다이얼로그 관리자(335)에 리턴될 수 있다. 다이얼로그 관리자(335)는 NLG 모듈(356)을 사용하여, 선행적 제안, 예컨대, 제안된 조사, 제안된 질문 또는 제안된 태스크에 기반하여 응답을 생성할 수 있다. 특정 실시예들에서, NLG 다이얼로그 액트들은 다이얼로그 액트 스태킹을 가능하게 하기 위해 타겟 로케일(target locale)들에 대해 인에이블링될 수 있다. 선행적 제안들을 위한 NLG 템플릿들은 로컬화될 수 있다. 특정 실시예들에서, 선택된 선행적 제안은 미래의 사용을 위해 사용자 태스크 이력(520) 및/또는 사용자 메모리(515)에 동시에 저장될 수 있다. 본 개시내용은 특정 방식으로 특정 시스템들에 의해 특정 응답을 생성하는 것을 설명하지만, 본 개시내용은 임의의 적절한 방식으로 임의의 적절한 시스템에 의해 임의의 적절한 응답을 생성하는 것을 고려한다.
도 6a는 시간을 체크하기 위한 사용자 요청에 응답하는 예시적인 선행적 제안을 예시한다. 도 6a에 표시된 바와 같이, 사용자(600)는 자신의 클라이언트 시스템(130)(예컨대, 스마트 폰)을 통해 어시스턴트 시스템(140)에게 "어시스턴트야, 몇 시지?(602)"라고 물을 수 있다. 어시스턴트 시스템(140)은 시간을 체크하는 태스크를 실행하고, "오전 11시 30 분입니다(604)"라고 답변할 수 있다. 어시스턴트 시스템(140)은 "당신의 캘린더를 보시겠습니까?(606)"라는 선행적 제안을 추가로 생성할 수 있다. 도 6b는 시간을 체크하라는 사용자 요청에 응답하는 다른 예시적인 선행적 제안을 예시한다. 도 6b에 표시된 바와 같이, 사용자(600)는 어시스턴트 시스템(140)에게 "어시스턴트야, 몇 시지?(602)"라는 동일한 질문을 물을 수 있다. 어시스턴트 시스템(140)은 시간을 체크하고 "오전 11시 30 분입니다(604)"라고 답변할 수 있다. 어시스턴트 시스템(140)은 추가로, 사용자(600)의 캘린더를 체크하고, "정오에 당신의 치과 예약에 도달하는 데 15 분이 걸릴 것입니다(608)"라는 선행적 제안을 생성할 수 있다.
도 7a는 사진을 찍기 위한 사용자 요청에 응답하는 예시적인 선행적 제안을 예시한다. 도 7a에 표시된 바와 같이, 사용자(700)는 자신의 클라이언트 시스템(130)(예컨대, 태블릿)을 통해 어시스턴트 시스템(140)에게 "어시스턴트야, 이 개의 사진을 찍어줘(702)"란 요청을 말할 수 있다. 어시스턴트 시스템(140)은 태스크를 실행하고 "다 했어요(704)"라고 답변할 수 있다. 어시스턴트 시스템(140)은 "이것을 온라인에 포스팅하길 원하세요?(706)"라는 선행적 제안을 추가로 생성할 수 있다. 도 7b는 사진을 찍으라는 사용자 요청에 응답하는 다른 예시적인 선행적 제안을 예시한다. 도 7b에 표시된 바와 같이, 사용자(700)는 동일한 것을 수행하도록, 즉, 사진을 찍도록 어시스턴트 시스템(140)에 요청할 수 있다. 어시스턴트 시스템(140)은 태스크를 실행하고 "다 했어요(704)"라고 답변할 수 있다. 어시스턴트 시스템(140)은 "스마트 카메라 툴들을 사용하여 이것을 편집할 수 있어요(708)"라는 선행적 제안을 추가로 생성할 수 있다.
도 8은 시각 신호에 응답하는 예시적인 선행적 제안을 예시한다. 도 8에 표시된 바와 같이, 사용자(800)는 클라이언트 시스템(130)으로서 AR/VR 안경을 착용하고 있을 수 있다. 사용자는 날짜가 2020 년 12 월 20 일임을 보여주는 시계(802)를 볼 수 있다. AR/VR 안경에 의해 캡처된 시각 신호는 선행적 제안들을 트리거할 수 있다. 이에 따라서, 어시스턴트 시스템(140)은 "거의 성탄절이예요. 성탄절 선물들을 위해 약간의 온라인 쇼핑을 하시겠어요?(804)"라는 선행적 제안을 생성할 수 있다.
도 9는 오디오 신호에 응답하는 예시적인 선행적 제안을 예시한다. 도 9에 표시된 바와 같이, 사용자(900)는 근처에 스마트 도크(smart dock)(즉, 클라이언트 시스템(130))가 있는 거실에 앉아있을 수 있다. 사용자는 어떤 음악을 들을 수 있다. 스마트 도크에 의해 캡처된 오디오 신호는 선행적 제안들을 트리거할 수 있다. 이에 따라서, 어시스턴트 시스템(140)은 먼저, 수신된 오디오 신호들에 기반하여 음악 리트리벌을 수행하고, 그것이 어떤 노래이고 어떤 아티스트에 속하는지를 결정할 수 있다. 어시스턴트 시스템(140)은 "아티스트 A에 의해 히트한 새로운 빌보드입니다. 아티스트 B와 아티스트 C가 유사한 노래들을 갖습니다. 청취하실래요?"로서 응답(902)을 생성할 수 있다. 응답(902)은 사용자가 들은 음악의 정보, 그리고 또한 사용자에게 일부 유사한 노래들을 청취하도록 제안하는 선행적 제안을 포함할 수 있다.
도 10은 선행적 제안들의 체인의 예를 예시한다. 도 10에 표시된 바와 같이, 사용자(900)는 근처에 스마트 도크(즉, 클라이언트 시스템(130))가 있는 거실에 앉아있을 수 있다. 사용자(900)는 어시스턴트 시스템(140)에게 "어시스턴트야, 근처에 어떤 좋은 그리스 식당이 있니?(904)"라고 물을 수 있다. 어시스턴트 시스템(140)은 "Gyro Bistro가 좋은 식당입니다(906)"라고 답변할 수 있다. 어시스턴트 시스템(140)은 "예약을 하거나 또는 집 배달(home delivery)을 주문하길 원하세요?(908)"라는 제 1 선행적 제안을 생성할 수 있다. 사용자(900)는 "집 배달(910)"이라고 답변할 수 있다. 사용자 피드백에 기반하여, 어시스턴트 시스템(140)은 추가로, "배달 앱을 통해 주문하면, 배달 앱이 지금 판촉들을 합니다(912)"라는 제 2 선행적 제안을 생성할 수 있다. 사용자(900)는 "오, 정말로? 그러면 배달 앱을 통해 주문하자(914)"라고 말할 수 있다. 사용자(900)의 확인을 수신하자마자, 어시스턴트 시스템(140)은 "그리스 양고기 샐러드를 주문하길 원하세요? 그것은 그들의 시그니처 요리이면서 베스트셀러입니다(916)"라는 제 3 선행적 제안을 생성할 수 있다. 사용자(900)는 "그래(918)"라고 말하여 확인할 수 있다. 어시스턴트 시스템(140)은 부가적으로, "그 밖에 무엇을 원하세요?(920)"라는 제 4 선행적 제안을 생성할 수 있다. 사용자(900)는 "그게 다야(922)"라고 말함으로써 그가 더 이상 제안들을 들을 용의가 없음을 표시할 수 있다. 어시스턴트 시스템(140)은 음식 주문 태스크를 실행하고, "지금 주문합니다(924)"로 상태에 관해 사용자에게 통지할 수 있다.
도 11은 선행적 제안들을 제공하기 위한 예시적인 방법(1100)을 예시한다. 방법은 단계(1110)에서 시작할 수 있으며, 여기서, 어시스턴트 시스템(140)은 제 1 사용자와 연관된 선행적 트리거들과 연관된 하나 이상의 입력들을 수신할 수 있으며, 하나 이상의 입력들은, 멀티모달 신호가 날짜, 시간, 위치, 시각 신호, 사운드 신호, 엔티티 업데이트 또는 사용자 콘텍스트 중 하나 이상에 기반한다는 것 또는 제 1 태스크의 완료의 표시 중 하나 이상을 포함한다. 단계(1120)에서, 어시스턴트 시스템(140)은 선행적 정책, 제 1 사용자와 연관된 사용자 콘텍스트 데이터, 제 1 사용자와 연관된 태스크 이력 데이터 또는 제 1 사용자와 연관된 사용자 메모리 중 하나 이상에 기반하여 제 1 사용자가 선행적 제안들을 수신할 자격이 있는지 여부를 결정할 수 있다. 단계(1130)에서, 어시스턴트 시스템(140)은 제 1 사용자와 연관된 사용자 콘텍스트 데이터 및 하나 이상의 입력들에 기반하여 하나 이상의 선행적 제안들을 생성할 수 있으며, 하나 이상의 선행적 제안들 각각은 제안된 조사, 제안된 질의, 제안된 태스크, 후속 조사, 후속 질문 또는 후속 태스크 중 하나 이상을 포함하며, 생성하는 것은 복수의 선행적 제안들을 포함하는 미리 결정된 제안 리스트에 액세스하는 것을 포함하며, 미리 결정된 제안 리스트는 제 1 사용자와 연관된 태스크 이력 데이터, 제 1 사용자와 연관된 사용자 메모리, 지식 그래프, 또는 후속 인텐트 중 하나 이상에 기반하여 생성된다. 단계(1140)에서, 어시스턴트 시스템(140)은 하나 이상의 입력들에 기반하여 제 1 사용자와 연관된 초기 인텐트를 결정할 수 있다. 단계(1150)에서, 어시스턴트 시스템(140)은, 기계-학습 모델에 기반하여, 초기 인텐트에 기반하는 제 1 사용자와 연관된 후속 인텐트를 결정할 수 있고, 기계-학습 모델은 복수의 인텐트-쌍들과 연관된 데이터에 기반하여 트레이닝되며, 복수의 인텐트-쌍들과 연관된 데이터는 초기 인텐트와 후속 인텐트 사이의 인텐트-쌍과 연관된 데이터를 포함한다. 단계(1160)에서, 어시스턴트 시스템(140)은 제 1 사용자와 연관된 태스크 이력 데이터, 제 1 사용자와 연관된 사용자 콘텍스트 데이터, 제 1 사용자와 연관된 사용자 메모리, 또는 지식 그래프 중 하나 이상에 기반하여 선행적 제안들 중 하나 이상을 선택할 수 있다. 단계(1170)에서, 어시스턴트 시스템(140)은 선행적 콘텐츠의 전달 스케줄을 결정할 수 있으며, 전달 스케줄은 제 1 사용자와 연관된 사용자 콘텍스트 데이터, 제 1 사용자와 연관된 사용자 메모리, 또는 지식 그래프 중 하나 이상에 기반하여 결정된다. 단계(1180)에서, 어시스턴트 시스템(140)은 전달 스케줄에 기반하여 제 1 사용자에게 선행적 콘텐츠를 제공하기 위한 명령들을 제 1 사용자와 연관된 클라이언트 시스템(130)에 전송할 수 있으며, 선행적 콘텐츠는 선택된 선행적 제안들을 포함한다. 적절한 경우, 특정 실시예들은 도 11의 방법의 하나 이상의 단계들을 반복할 수 있다. 본 개시 내용은 특정 순서로 발생하는 것으로서 도 11의 방법의 특정 단계들을 설명 및 예시하지만, 본 개시 내용은 도 11의 방법의 임의의 적절한 단계들이 임의의 적절한 순서로 발생하는 것을 고려한다. 게다가, 본 개시 내용은 도 11의 방법의 특정 단계들을 포함하는 선행적 제안들을 제공하기 위한 예시적인 방법을 설명 및 예시하지만, 본 개시 내용은, 적절한 경우, 도 11의 방법의 단계들 중 전부 또는 일부를 포함할 수 있거나 또는 아무것도 포함하지 않을 수 있는, 임의의 적절한 단계들을 포함하는 선행적 제안들을 제공하기 위한 임의의 적절한 방법을 고려한다. 더욱이, 본 개시 내용은 도 11의 방법의 특정 단계들을 수행하는 특정 컴포넌트들, 디바이스들 또는 시스템들을 설명 및 예시하지만, 본 개시 내용은 도 11의 방법의 임의의 적절한 단계들을 수행하는 임의의 적절한 컴포넌트들, 디바이스들 또는 시스템들의 임의의 적절한 조합을 고려한다.
소셜 그래프들
도 12는 예시적인 소셜 그래프(1200)를 예시한다. 특정 실시예들에서, 소셜 네트워킹 시스템(160)은 하나 이상의 데이터 스토어들에 하나 이상의 소셜 그래프들(1200)을 저장할 수 있다. 특정 실시예들에서, 소셜 그래프(1200)는 다수의 노드들(다수의 사용자 노드들(1202) 또는 다수의 개념 노드들(1204)을 포함할 수 있음) 및 노드들을 연결하는 다수의 에지들(1206)을 포함할 수 있다. 각각의 노드는 고유 엔티티(즉, 사용자 또는 개념)와 연관될 수 있으며, 이들 각각은 고유 번호 또는 사용자 이름과 같은 고유 식별자(ID)를 가질 수 있다. 도 12에 예시된 예시적인 소셜 그래프(1200)는 교훈적인 목적들을 위해 2 차원 시각적 맵 표현으로 도시된다. 특정 실시예들에서, 소셜 네트워킹 시스템(160), 클라이언트 시스템(130), 어시스턴트 시스템(140), 또는 제 3 자 시스템(170)은 적절한 애플리케이션들에 대한 소셜 그래프(1200) 및 관련 소셜-그래프 정보에 액세스할 수 있다. 소셜 그래프(1200)의 노드들 및 에지들은 데이터 오브젝트들로서 예컨대 데이터 스토어(이를테면, 소셜-그래프 데이터베이스)에 저장될 수 있다. 그러한 데이터 스토어는 소셜 그래프(1200)의 노드들 또는 에지들의 하나 이상의 검색 가능 또는 질의 가능 인덱스들을 포함할 수 있다.
특정 실시예들에서, 사용자 노드(1202)는 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)의 사용자에 대응할 수 있다. 제한이 아닌 예로서, 사용자는 개체(인간 사용자), 엔티티(예컨대, 기업, 비즈니스 또는 제 3 자 애플리케이션), 또는 (예컨대, 개체들 또는 엔티티들의) 그룹일 수 있으며, 이들은 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)과 상호작용 또는 통신하거나 또는 이들을 통해 상호작용 또는 통신한다. 특정 실시예들에서, 사용자가 소셜 네트워킹 시스템(160)에 계정을 등록할 때, 소셜 네트워킹 시스템(160)은 사용자에 대응하는 사용자 노드(1202)를 생성하고, 사용자 노드(1202)를 하나 이상의 데이터 스토어들에 저장할 수 있다. 본원에서 설명된 사용자들 및 사용자 노드들(1202)은, 적절한 경우, 등록된 사용자들 및 등록된 사용자들과 연관된 사용자 노드들(1202)을 지칭할 수 있다. 부가하여 또는 대안으로서, 본원에서 설명된 사용자들 및 사용자 노드들(1202)은, 적절한 경우, 소셜 네트워킹 시스템(160)에 등록되지 않은 사용자들을 지칭할 수 있다. 특정 실시예들에서, 사용자 노드(1202)는 사용자에 의해 제공되는 정보 또는 소셜 네트워킹 시스템(160)을 포함하는 다양한 시스템들에 의해 수집되는 정보와 연관될 수 있다. 제한이 아닌 예로서, 사용자는 자신의 이름, 프로파일 사진, 연락처 정보, 생년월일, 성, 혼인 여부, 가족 상태, 고용, 교육 배경, 선호도들, 관심사들, 또는 다른 인구통계 정보를 제공할 수 있다. 특정 실시예들에서, 사용자 노드(1202)는 사용자와 연관된 정보에 대응하는 하나 이상의 데이터 오브젝트들과 연관될 수 있다. 특정 실시예들에서, 사용자 노드(1202)는 하나 이상의 웹 인터페이스들에 대응할 수 있다.
특정 실시예들에서, 개념 노드(1204)는 개념에 대응할 수 있다. 제한이 아닌 예로서, 개념은 장소(이를테면, 예컨대, 영화관, 식당, 랜드마크, 또는 도시); 웹사이트(이를테면, 예컨대, 소셜 네트워킹 시스템(160)과 연관된 웹사이트 또는 웹-애플리케이션 서버와 연관된 제 3 자 웹사이트); 엔티티(이를테면, 예컨대, 개인, 비즈니스, 그룹, 스포츠 팀, 또는 유명인사); 소셜 네트워킹 시스템(160) 내에 또는 외부 서버, 이를테면, 웹-애플리케이션 서버에 위치될 수 있는 자원(이를테면, 예컨대, 오디오 파일, 비디오 파일, 디지털 사진, 텍스트 파일, 구조화된 문서, 또는 애플리케이션); 부동산 또는 지적 재산(이를테면, 예컨대, 조각품, 그림, 영화, 게임, 노래, 아이디어, 사진, 또는 저작물); 게임; 활동; 아이디어 또는 이론; 다른 적절한 개념; 또는 둘 이상의 그러한 개념들에 대응한다. 개념 노드(1204)는 사용자에 의해 제공되는 개념의 정보 또는 소셜 네트워킹 시스템(160) 및 어시스턴트 시스템(140)을 포함하는 다양한 시스템들에 의해 수집되는 정보와 연관될 수 있다. 제한이 아닌 예로서, 개념의 정보는 이름 또는 제목; 하나 이상의 이미지들(예컨대, 책의 커버 페이지의 이미지); 위치(예컨대, 주소 또는 지리적 위치); 웹사이트(URL과 연관될 수 있음); 연락처 정보(예컨대, 전화 번호 또는 이메일 주소); 다른 적절한 개념 정보; 또는 그러한 정보의 임의의 적절한 조합을 포함할 수 있다. 특정 실시예들에서, 개념 노드(1204)는 개념 노드(1204)와 연관된 정보에 대응하는 하나 이상의 데이터 오브젝트들과 연관될 수 있다. 특정 실시예들에서, 개념 노드(1204)는 하나 이상의 웹 인터페이스들에 대응할 수 있다.
특정 실시예들에서, 소셜 그래프(1200)의 노드는 웹 인터페이스("프로필 인터페이스"로 지칭될 수 있음)를 표현하거나 또는 이러한 웹 인터페이스에 의해 표현될 수 있다. 프로파일 인터페이스들은 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)에 의해 호스팅되거나 또는 프로파일 인터페이스들에는 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)이 액세스 가능할 수 있다. 프로파일 인터페이스들은 또한, 제 3 자 시스템(170)과 연관된 제 3 자 웹사이트들 상에서 호스팅될 수 있다. 제한이 아닌 예로서, 특정 외부 웹 인터페이스에 대응하는 프로파일 인터페이스는 특정 외부 웹 인터페이스일 수 있고, 프로파일 인터페이스는 특정 개념 노드(1204)에 대응할 수 있다. 프로파일 인터페이스들은 다른 사용자들 모두 또는 선택된 서브세트에 의해 보일 수 있다. 제한이 아닌 예로서, 사용자 노드(1202)는, 대응하는 사용자가 콘텐츠를 추가하거나, 선언들을 하거나 또는 다른 방식으로 자신을 표현할 수 있는 대응하는 사용자-프로파일 인터페이스를 가질 수 있다. 제한이 아닌 다른 예로서, 개념 노드(1204)는, 특히 개념 노드(1204)에 대응하는 개념과 관련하여, 하나 이상의 사용자들이 콘텐츠를 추가하거나, 선언들을 하거나, 또는 자신들을 표현할 수 있는 대응하는 개념-프로파일 인터페이스를 가질 수 있다.
특정 실시예들에서, 개념 노드(1204)는 제 3 자 시스템(170)에 의해 호스팅되는 제 3 자 웹 인터페이스 또는 자원을 표현할 수 있다. 제 3 자 웹 인터페이스 또는 자원은, 다른 엘리먼트들 중에서, 콘텐츠, 선택 가능한 또는 다른 아이콘, 또는 액션 또는 활동을 표현하는 다른 상호작용 가능 오브젝트를 포함할 수 있다. 제한이 아닌 예로서, 제 3 자 웹 인터페이스는 "좋아요", "체크-인", "먹기", "추천", 또는 다른 적절한 액션 또는 활동과 같은 선택 가능 아이콘을 포함할 수 있다. 제 3 자 웹 인터페이스를 보는 사용자는 아이콘들 중 하나를 선택함으로써(예컨대, "체크-인") 액션을 수행하여서, 클라이언트 시스템(130)으로 하여금 사용자의 액션을 표시하는 메시지를 소셜 네트워킹 시스템(160)에 전송하게 할 수 있다. 메시지에 대한 응답으로, 소셜 네트워킹 시스템(160)은 사용자에 대응하는 사용자 노드(1202)와 제 3 자 웹 인터페이스 또는 자원에 대응하는 개념 노드(1204) 사이에 에지(예컨대, 체크-인-타입 에지)를 생성하고 에지(1206)를 하나 이상의 데이터 스토어들에 저장할 수 있다.
특정 실시예들에서, 소셜 그래프(1200)의 한 쌍의 노드들은 하나 이상의 에지들(1206)에 의해 서로 연결될 수 있다. 한 쌍의 노드들을 연결하는 에지(1206)는 한 쌍의 노드들 사이의 관계를 표현할 수 있다. 특정 실시예들에서, 에지(1206)는 한 쌍의 노드들 사이의 관계에 대응하는 하나 이상의 데이터 오브젝트들 또는 속성들을 포함 또는 표현할 수 있다. 제한이 아닌 예로서, 제 1 사용자는 제 2 사용자가 제 1 사용자의 "친구"임을 표시할 수 있다. 이러한 표시에 대한 응답으로, 소셜 네트워킹 시스템(160)은 "친구 요청"을 제 2 사용자에게 전송할 수 있다. 제 2 사용자가 "친구 요청"을 확인하면, 소셜 네트워킹 시스템(160)은 소셜 그래프(1200)에서 제 1 사용자의 사용자 노드(1202)를 제 2 사용자의 사용자 노드(1202)에 연결하는 에지(1206)를 생성하고, 소셜-그래프 정보로서 에지(1206)를 데이터 스토어들(164) 중 하나 이상에 저장할 수 있다. 도 12의 예에서, 소셜 그래프(1200)는 사용자 "B"와 사용자 "A"의 사용자 노드들(1202) 사이의 친구 관계를 표시하는 에지(1206), 및 사용자 "B"와 사용자 "C"의 사용자 노드들(1202) 사이의 친구 관계를 표시하는 에지를 포함한다. 본 개시 내용은 특정 사용자 노드들(1202)을 연결하는 특정 속성들을 갖는 특정 에지들(1206)을 설명하거나 또는 예시하지만, 본 개시 내용은 사용자 노드들(1202)을 연결하는 임의의 적절한 속성들을 갖는 임의의 적절한 에지들(1206)을 고려한다. 제한이 아닌 예로서, 에지(1206)는 교우 관계, 가족 관계, 비즈니스 또는 고용 관계, 팬 관계(예컨대, 좋아하는 것 등을 포함함), 팔로어 관계, 방문자 관계(예컨대, 액세스, 보기, 체크-인, 공유 등을 포함함), 가입자 관계, 상위/종속 관계, 상호 관계, 비-상호 관계, 다른 적절한 타입의 관계, 또는 둘 이상의 그러한 관계들을 표현할 수 있다. 게다가, 본 개시 내용은 일반적으로 노드들이 연결되는 것으로 설명하지만, 본 개시 내용은 또한, 사용자들 또는 개념들이 연결되는 것으로 설명한다. 본원에서, 연결되는 사용자들 또는 개념들에 대한 참조들은, 적절한 경우, 소셜 그래프(1200)에서 하나 이상의 에지들(1206)에 의해 연결되는 그러한 사용자들 또는 개념들에 대응하는 노드들을 지칭할 수 있다. 2 개의 노드들에 의해 각각 표현되는 2 개의 오브젝트들 사이의 분리 정도는 소셜 그래프(1200)에서 2 개의 노드들을 연결하는 최단 경로 내의 에지들의 카운트(count)이다. 제한이 아닌 예로서, 소셜 그래프(1200)에서, 사용자 "C"의 사용자 노드(1202)는, 예컨대, 사용자 "B"의 사용자 노드(1202)를 직접 통과하는 제 1 경로, 회사 "A1me"의 개념 노드(1204) 및 사용자 "D"의 사용자 노드(1202)를 통과하는 제 2 경로, 및 학교 "Stateford", 사용자 "G", 회사 "A1me" 및 사용자 "D"를 표현하는 개념 노드들(1204) 및 사용자 노드들(1202)을 통과하는 제 3 경로를 포함하는 다수의 경로들을 통해 사용자 "A"의 사용자 노드(1202)에 연결된다. 사용자 "C" 및 사용자 "A"는 이들의 대응하는 노드들을 연결하는 최단 경로(즉, 제 1 경로)가 2 개의 에지들(1206)을 포함하기 때문에 2의 분리 정도를 갖는다.
특정 실시예들에서, 사용자 노드(1202)와 개념 노드(1204) 사이의 에지(1206)는 개념 노드(1204)와 연관된 개념을 향해 사용자 노드(1202)와 연관된 사용자에 의해 수행되는 특정 액션 또는 활동을 표현할 수 있다. 제한이 아닌 예로서, 도 12에 예시된 바와 같이, 사용자는 "좋아요", "참석", "재생", "청취", "요리", "근무" 또는 "읽기"란 개념을 행할 수 있으며, 이들 각각은 에지 타입 또는 서브타입에 대응할 수 있다. 개념 노드(1204)에 대응하는 개념-프로파일 인터페이스는 예컨대 선택 가능 "체크 인" 아이콘(이를테면, 예컨대, 클릭 가능 "체크 인" 아이콘) 또는 선택 가능 "즐겨 찾기에 추가" 아이콘을 포함할 수 있다. 유사하게, 사용자가 이들 아이콘들을 클릭한 후, 소셜 네트워킹 시스템(160)은 개개의 액션에 대응하는 사용자의 액션에 대한 응답으로 "즐겨찾는" 에지 또는 "체크 인" 에지를 생성할 수 있다. 제한이 아닌 다른 예로서, 사용자(사용자 "C")는 특정 애플리케이션(제 3 자 온라인 음악 애플리케이션)을 사용하여 특정 노래("Imagine")를 청취할 수 있다. 이 경우, 소셜 네트워킹 시스템(160)은, 사용자가 노래를 청취했고 애플리케이션을 사용했음을 표시하기 위해, 사용자에 대응하는 사용자 노드들(1202)과 노래 및 애플리케이션에 대응하는 개념 노드들(1204) 사이에 (도 12에 예시된 바와 같이) "청취" 에지(1206) 및 "사용" 에지를 생성할 수 있다. 게다가, 소셜 네트워킹 시스템(160)은, 특정 노래가 특정 애플리케이션에 의해 재생되었음을 표시하기 위해, 노래 및 애플리케이션에 대응하는 개념 노드들(1204) 사이에 (도 12에 예시된 바와 같이) "재생" 에지(1206)를 생성할 수 있다. 이 경우, "재생" 에지(1206)는 외부 오디오 파일(노래 "Imagine")에 대해 외부 애플리케이션(제 3 자 온라인 음악 애플리케이션)에 의해 수행되는 액션에 대응한다. 본 개시 내용은 사용자 노드들(1202)과 개념 노드들(1204)을 연결하는 특정 속성들을 갖는 특정 에지들(1206)을 설명하지만, 본 개시 내용은 사용자 노드들(1202)과 개념 노드들(1204)을 연결하는 임의의 적절한 속성들을 갖는 임의의 적절한 에지들(1206)을 고려한다. 게다가, 본 개시 내용은 단일 관계를 표현하는, 사용자 노드(1202)와 개념 노드(1204) 사이의 에지들을 설명하지만, 본 개시 내용은 하나 이상의 관계들을 표현하는, 사용자 노드(1202)와 개념 노드(1204) 사이의 에지들을 고려한다. 제한이 아닌 예로서, 에지(1206)는 사용자가 좋아하는 것과 특정 개념에서 사용한 것 양자 모두를 표현할 수 있다. 대안적으로, 다른 에지(1206)는 사용자 노드(1202)와 개념 노드(1204) 사이의(도 12에서 예시된 바와 같이, 사용자 "E"에 대한 사용자 노드(1202)와 "온라인 음악 애플리케이션"에 대한 개념 노드(1204) 사이의) 각각의 타입의 관계(또는 단일 관계의 배수들)를 표현할 수 있다.
특정 실시예들에서, 소셜 네트워킹 시스템(160)은 소셜 그래프(1200)에서 사용자 노드(1202)와 개념 노드(1204) 사이에 에지(1206)를 생성할 수 있다. 제한이 아닌 예로서, (이를테면, 예컨대, 사용자의 클라이언트 시스템(130)에 의해 호스팅되는 특수 목적 애플리케이션 또는 웹 브라우저를 사용함으로써) 개념-프로파일 인터페이스를 보는 사용자는 "좋아요" 아이콘을 클릭 또는 선택함으로써 자신이 개념 노드(1204)에 의해 표현된 개념을 좋아한다는 것을 표시할 수 있으며, 이는 사용자의 클라이언트 시스템(130)으로 하여금 개념-프로파일 인터페이스와 연관된 개념에 대해 사용자의 좋아함을 표시하는 메시지를 소셜 네트워킹 시스템(160)에 전송하게 할 수 있다. 메시지에 대한 응답으로, 소셜 네트워킹 시스템(160)은 사용자와 개념 노드(1204) 사이의 "좋아요" 에지(1206)에 의해 예시된 바와 같이 사용자와 연관된 사용자 노드(1202)와 개념 노드(1204) 사이에 에지(1206)를 생성할 수 있다. 특정 실시예들에서, 소셜 네트워킹 시스템(160)은 하나 이상의 데이터 스토어들에 에지(1206)를 저장할 수 있다. 특정 실시예들에서, 에지(1206)는 특정 사용자 액션에 대한 응답으로 소셜 네트워킹 시스템(160)에 의해 자동으로 형성될 수 있다. 제한이 아닌 예로서, 제 1 사용자가 사진을 업로드하거나, 책을 읽거나, 영화를 보거나, 또는 노래를 청취하면, 에지(1206)가 제 1 사용자에 대응하는 사용자 노드(1202)와 그러한 개념들에 대응하는 개념 노드들(1204) 사이에 형성될 수 있다. 본 개시 내용은 특정 방식들로 특정 에지들(1206)을 형성하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 에지들(1206)을 형성하는 것을 고려한다.
벡터 공간들 및 임베딩들
도 13은 벡터 공간(1300)의 예시적인 도면을 예시한다. 특정 실시예들에서, 오브젝트 또는 n-그램은 d-차원 벡터 공간에서 표현될 수 있으며, 여기서, d는 차원들의 임의의 적절한 수를 나타낸다. 벡터 공간(1300)이 3 차원 공간으로서 예시되지만, 이는 단지 예시 목적들을 위한 것인데, 그 이유는 벡터 공간(1300)이 임의의 적절한 차원일 수 있기 때문이다. 특정 실시예들에서, n-그램은 벡터 공간(1300)에서 용어 임베딩(term embedding)으로 지칭되는 벡터로서 표현될 수 있다. 각각의 벡터는 벡터 공간(1300) 내의 특정 지점(즉, 벡터의 종점)에 대응하는 좌표들을 포함할 수 있다. 제한이 아닌 예로서, 벡터들(1310, 1320, 및 1330)은 도 13에 예시된 바와 같이 벡터 공간(1300) 내의 지점들로서 표현될 수 있다. n-그램은 개개의 벡터 표현에 매핑될 수 있다. 제한이 아닌 예로서, n-그램들(t1 및 t2)은, 사전에 의해 정의된 함수(
Figure pct00001
)를 적용함으로써, 벡터 공간(1300) 내의 벡터들(
Figure pct00002
Figure pct00003
)에 각각 매핑될 수 있어서,
Figure pct00004
이고
Figure pct00005
이다. 제한이 아닌 다른 예로서, 텍스트를 벡터 표현에 매핑하도록 트레이닝된 사전이 활용될 수 있거나, 또는 그러한 사전은 트레이닝을 통해 자체 생성될 수 있다. 제한이 아닌 다른 예로서, 벡터 공간(1300)에서 n-그램을 벡터 표현에 매핑하기 위해 워드-임베딩 모델(word-embeddings model)이 사용될 수 있다. 특정 실시예들에서, n-그램은 기계 학습 모델(예컨대, 뉴럴 네트워크)을 사용함으로써 벡터 공간(1300)에서 벡터 표현에 매핑될 수 있다. 기계 학습 모델은 트레이닝 데이터의 시퀀스(예컨대, n-그램들을 각각 포함하는 오브젝트들의 코퍼스(corpus))를 사용하여 트레이닝되었을 수 있다.
특정 실시예들에서, 오브젝트는 벡터 공간(1300)에서 특징 벡터 또는 오브젝트 임베딩으로 지칭되는 벡터로서 표현될 수 있다. 제한이 아닌 예로서, 오브젝트들(e1 및 e2)은, 함수(
Figure pct00006
)를 적용함으로써 벡터 공간(1300) 내의 벡터들(
Figure pct00007
Figure pct00008
)에 각각 매핑될 수 있어서,
Figure pct00009
이고
Figure pct00010
이다. 특정 실시예들에서, 오브젝트는 오브젝트의 하나 이상의 특성들, 속성들 또는 특징들, 오브젝트와 다른 오브젝트들의 관계들, 또는 오브젝트와 연관된 임의의 다른 적절한 정보에 기반하여 벡터에 매핑될 수 있다. 제한이 아닌 예로서, 함수(
Figure pct00011
)는 특징 추출에 의해 오브젝트들을 벡터들에 매핑할 수 있으며, 이는 초기 세트의 측정된 데이터로부터 시작하여 유도된 값들(예컨대, 특징들)을 구축할 수 있다. 제한이 아닌 예로서, 비디오 또는 이미지를 포함하는 오브젝트는, 오브젝트의 다양한 원하는 부분들 또는 형상들을 검출 또는 격리하기 위해 알고리즘을 사용함으로써 벡터에 매핑될 수 있다. 벡터를 계산하기 위해 사용되는 특징들은 에지 검출, 코너 검출, 블랍(blob) 검출, 리지 검출, 스케일-불변 특징 변환, 에지 방향, 변화하는 세기, 자기상관, 모션 검출, 광학 흐름, 임계화, 블랍 추출, 템플릿 매칭, 허프 변환(예컨대, 라인들, 원들, 타원들, 임의의 형상들)으로부터 획득되는 정보, 또는 임의의 다른 적절한 정보에 기반할 수 있다. 제한이 아닌 다른 예로서, 오디오 데이터를 포함하는 오브젝트는 특징들, 이를테면, 스펙트럼 기울기, 조성 계수(tonality coefficient), 오디오 스펙트럼 센트로이드, 오디오 스펙트럼 엔벨로프, 멜-주파수 켑스트럼(Mel-frequency cepstrum), 또는 임의의 다른 적절한 정보에 기반하여 벡터에 매핑될 수 있다. 특정 실시예들에서, 오브젝트가, 효율적으로 프로세싱되기에는 너무 크거나 또는 리던던트 데이터를 포함하는 데이터를 가질 때, 함수(
Figure pct00012
)는 변환된 감소된 세트의 특징들(예컨대, 특징 선택)을 사용하여 오브젝트를 벡터에 매핑할 수 있다. 특정 실시예들에서, 함수(
Figure pct00013
)는 오브젝트(e)와 연관된 하나 이상의 n-그램들에 기반하여 오브젝트(e)를 벡터(
Figure pct00014
)에 매핑할 수 있다. 본 개시 내용은 특정 방식으로 벡터 공간에서 n-그램 또는 오브젝트를 표현하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 벡터 공간에서 n-그램 또는 오브젝트를 표현하는 것을 고려한다.
특정 실시예들에서, 소셜 네트워킹 시스템(160)은 벡터 공간(1300) 내의 벡터들의 유사성 메트릭(metric)을 계산할 수 있다. 유사성 메트릭은 코사인 유사성, 민코프스키 거리, 마할라노비스 거리, 자카드 유사성 계수, 또는 임의의 적절한 유사성 메트릭일 수 있다. 제한이 아닌 예로서,
Figure pct00015
Figure pct00016
의 유사성 메트릭은 코사인 유사성
Figure pct00017
일 수 있다. 제한이 아닌 다른 예로서,
Figure pct00018
Figure pct00019
의 유사성 메트릭은 유클리드 거리
Figure pct00020
일 수 있다. 2 개의 벡터들의 유사성 메트릭은, 벡터 공간(1300) 내의 2 개의 벡터들 사이의 거리에 의해 측정되는 바와 같이, 2 개의 벡터들에 각각 대응하는 2 개의 오브젝트들 또는 n-그램들이 서로 얼마나 유사한지를 표현할 수 있다. 제한이 아닌 예로서, 벡터(1310) 및 벡터(1320)는, 개개의 벡터들 사이의 거리에 기반하여, 벡터(1310) 및 벡터(1330)에 대응하는 오브젝트들보다 서로 더 유사한 오브젝트들에 대응할 수 있다. 본 개시 내용은 특정 방식으로 벡터들 사이의 유사성 메트릭을 계산하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 벡터들 사이의 유사성 메트릭을 계산하는 것을 고려한다.
벡터 공간들, 임베딩들, 피처 벡터들, 및 유사성 메트릭들에 관한 더 많은 정보는 2015 년 11 월 23 일자로 출원된 미국 특허 출원 번호 제 14/949436 호, 2016 년 10 월 5 일자로 출원된 미국 특허 출원 번호 제 15/286315 호, 및 2016 년 11 월 30 일자로 출원된 미국 특허 출원 번호 제 15/365789 호에서 발견될 수 있으며, 이들 각각은 참조에 의해 포함된다.
인공 뉴럴 네트워크들
도 14는 예시적인 인공 뉴럴 네트워크("ANN(artificial neural network)")(1400)를 예시한다. 특정 실시예들에서, ANN은 하나 이상의 노드들을 포함하는 컴퓨테이셔널 모델을 지칭할 수 있다. 예시적인 ANN(1400)은 입력 계층(1410), 은닉 계층들(1420, 1430, 1440) 및 출력 계층(1450)을 포함할 수 있다. ANN(1400)의 각각의 계층은 하나 이상의 노드들, 이를테면, 노드(1405) 또는 노드(1415)를 포함할 수 있다. 특정 실시예들에서, ANN의 각각의 노드는 ANN의 다른 노드에 연결될 수 있다. 제한이 아닌 예로서, 입력 계층(1410)의 각각의 노드는 은닉 계층(1420)의 하나 이상의 노드들 중 하나에 연결될 수 있다. 특정 실시예들에서, 하나 이상의 노드들은 바이어스 노드(예컨대, 이전 계층의 임의의 노드에 연결되지 않고 이러한 이전 계층의 임의의 노드로부터 입력을 수신하지 않는 계층의 노드)일 수 있다. 특정 실시예들에서, 각각의 계층의 각각의 노드는 이전 또는 후속 계층의 하나 이상의 노드들에 연결될 수 있다. 도 14는 특정 수의 계층들, 특정 수의 노드들, 및 노드들 사이의 특정 연결들을 갖는 특정 ANN을 도시하지만, 본 개시 내용은 임의의 적절한 수의 계층들, 임의의 적절한 수의 노드들, 및 노드들 사이의 임의의 적절한 연결들을 갖는 임의의 적절한 ANN을 고려한다. 제한이 아닌 예로서, 도 14는 입력 계층 (1410)의 각각의 노드와 은닉 계층(1420)의 각각의 노드 사이의 연결을 도시하지만, 입력 계층(1410)의 하나 이상의 노드들은 은닉 계층(1420)의 하나 이상의 노드들에 연결되지 않을 수 있다.
특정 실시예들에서, ANN은 피드포워드 ANN(예컨대, 노드들 사이의 통신이 입력 계층으로 시작해 연속적인 계층들로 진행하는 하나의 방향으로 흐르는 루프들 또는 사이클들을 갖지 않는 ANN)일 수 있다. 제한이 아닌 예로서, 은닉 계층(1420)의 각각의 노드에 대한 입력은 입력 계층(1410)의 하나 이상의 노드들의 출력을 포함할 수 있다. 제한이 아닌 다른 예로서, 출력 계층(1450)의 각각의 노드에 대한 입력은 은닉 계층(1440)의 하나 이상의 노드들의 출력을 포함할 수 있다. 특정 실시예들에서, ANN은 딥 뉴럴 네트워크(예컨대, 적어도 2 개의 은닉 계층들을 포함하는 뉴럴 네트워크)일 수 있다. 특정 실시예들에서, ANN은 딥 레지듀얼 네트워크(deep residual network)일 수 있다. 딥 레지듀얼 네트워크는 레지듀얼 블록들로 구성된 은닉 계층들을 포함하는 피드포워드 ANN일 수 있다. 제 1 레지듀얼 블록 이후의 각각의 레지듀얼 블록으로의 입력은 이전 레지듀얼 블록의 출력 및 이전 레지듀얼 블록의 입력의 함수일 수 있다. 제한이 아닌 예로서, 레지듀얼 블록(N)으로의 입력은
Figure pct00021
일 수 있으며, 여기서,
Figure pct00022
는 레지듀얼 블록(
Figure pct00023
)의 출력일 수 있고, x는 레지듀얼 블록(
Figure pct00024
)으로의 입력일 수 있다. 본 개시 내용은 특정 ANN을 설명하지만, 본 개시 내용은 임의의 적절한 ANN을 고려한다.
특정 실시예들에서, 활성화 함수는 ANN의 각각의 노드에 대응할 수 있다. 노드의 활성화 함수는 주어진 입력에 대한 노드의 출력을 정의할 수 있다. 특정 실시예들에서, 노드에 대한 입력은 한 세트의 입력들을 포함할 수 있다. 제한이 아닌 예로서, 활성화 함수는 아이덴티티 함수, 이진 계단 함수, 로지스틱 함수, 또는 임의의 다른 적절한 함수일 수 있다. 제한이 아닌 다른 예로서, 노드(k)에 대한 활성화 함수는 시그모이드 함수
Figure pct00025
, 하이퍼볼릭 탄젠트 함수
Figure pct00026
, 정류기
Figure pct00027
, 또는 임의의 다른 적절한 함수
Figure pct00028
일 수 있으며, 여기서,
Figure pct00029
는 노드(k)에 대한 유효 입력일 수 있다. 특정 실시예들에서, 노드에 대응하는 활성화 함수의 입력이 가중될 수 있다. 각각의 노드는 가중된 입력들에 기반하여 대응하는 활성화 함수를 사용하여 출력을 생성할 수 있다. 특정 실시예들에서, 노드들 사이의 각각의 연결은 가중치와 연관될 수 있다. 제한이 아닌 예로서, 노드(1405)와 노드(1415) 사이의 연결(1425)은 0.4의 가중 계수를 가질 수 있으며, 이는 노드(1405)의 출력에 0.4를 곱한 것이 노드(1415)에 대한 입력으로서 사용됨을 표시할 수 있다. 제한이 아닌 다른 예로서, 노드(k)의 출력(
Figure pct00030
)는
Figure pct00031
일 수 있고, 여기서,
Figure pct00032
는 노드(k)에 대응하는 활성화 함수일 수 있고,
Figure pct00033
는 노드(k)에 대한 유효 입력일 수 있고,
Figure pct00034
는 노드(k)에 연결된 노드(j)의 출력일 수 있으며,
Figure pct00035
는 노드(j)와 노드(k) 사이의 가중 계수일 수 있다. 특정 실시예들에서, 입력 계층의 노드들에 대한 입력은 오브젝트를 표현하는 벡터에 기반할 수 있다. 본 개시 내용은 노드들에 대한 특정 입력들 및 노드들의 특정 출력들을 설명하지만, 본 개시 내용은 노드들에 대한 임의의 적절한 입력들 및 노드들의 임의의 적절한 출력들을 고려한다. 게다가, 본 개시 내용은 노드들 사이의 특정 연결들 및 가중치들을 설명할 수 있지만, 본 개시 내용은 노드들 사이의 임의의 적절한 연결들 및 가중치들을 고려한다.
특정 실시예들에서, ANN은 트레이닝 데이터를 사용하여 트레이닝될 수 있다. 제한이 아닌 예로서, 트레이닝 데이터는 ANN(1400)에 대한 입력들 및 예상되는 출력을 포함할 수 있다. 제한이 아닌 다른 예로서, 트레이닝 데이터는 벡터들을 포함할 수 있으며, 벡터들 각각은 트레이닝 오브젝트 및 각각의 트레이닝 오브젝트에 대한 예상 라벨을 표현한다. 특정 실시예들에서, ANN을 트레이닝하는 것은 목적 함수를 최적화함으로써 ANN의 노드들 사이의 연결들과 연관된 가중치들을 수정하는 것을 포함할 수 있다. 제한이 아닌 예로서, (예컨대, 제곱합 에러를 최소화하는 비용 함수를 사용하여) 트레이닝 오브젝트를 표현하는 각각의 벡터 사이의 거리들로서 측정된 제곱합 에러를 역 전파하기 위해 트레이닝 방법(예컨대, 켤레 구배법, 구배 하강법, 확률적 구배 하강)이 사용될 수 있다. 특정 실시예들에서, ANN은 드롭아웃(dropout) 기법을 사용하여 트레이닝될 수 있다. 제한이 아닌 예로서, 하나 이상의 노드들은 트레이닝 동안 일시적으로 생략될 수 있다(예컨대, 입력을 수신하지 않고 출력을 생성하지 않음). 각각의 트레이닝 오브젝트에 대해, ANN의 하나 이상의 노드들이 생략될 약간의 확률을 가질 수 있다. 특정 트레이닝 오브젝트에 대해 생략된 노드들은 다른 트레이닝 오브젝트들에 대해 생략된 노드들과 상이할 수 있다(예컨대, 노드들은 오브젝트별로 일시적으로 생략될 수 있음). 본 개시 내용은 특정 방식으로 ANN을 트레이닝하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 ANN을 트레이닝하는 것을 고려한다.
프라이버시
특정 실시예들에서, 컴퓨팅 시스템의 하나 이상의 오브젝트들(예컨대, 콘텐츠 또는 다른 타입들의 오브젝트들)은 하나 이상의 프라이버시 세팅들과 연관될 수 있다. 하나 이상의 오브젝트들은 임의의 적절한 컴퓨팅 시스템 또는 애플리케이션, 이를테면, 예컨대, 소셜 네트워킹 시스템(160), 클라이언트 시스템(130), 어시스턴트 시스템(140), 제 3 자 시스템(170), 소셜 네트워킹 애플리케이션, 어시스턴트 애플리케이션, 메시징 애플리케이션, 사진 공유 애플리케이션, 또는 임의의 다른 적절한 컴퓨팅 시스템 또는 애플리케이션 상에 저장되거나 또는 그렇지 않으면 이와 연관될 수 있다. 본원에서 논의된 예들이 온라인 소셜 네트워크의 콘텍스트에 있지만, 이들 프라이버시 세팅들은 임의의 다른 적절한 컴퓨팅 시스템에 적용될 수 있다. 오브젝트에 대한 프라이버시 세팅들(또는 "액세스 세팅들")은 임의의 적절한 방식으로, 이를테면, 예컨대, 오브젝트와 연관하여, 인증 서버 상의 인덱스에, 다른 적절한 방식으로, 또는 이들의 임의의 적절한 조합으로 저장될 수 있다. 오브젝트에 대한 프라이버시 세팅은 오브젝트(또는 오브젝트와 연관된 특정 정보)가 온라인 소셜 네트워크 내에서 어떻게 액세스, 저장 또는 다른 방식으로 사용(예컨대, 뷰잉, 공유, 수정, 복사, 실행, 표면화 또는 식별)될 수 있는지를 특정할 수 있다. 오브젝트에 대한 프라이버시 세팅들이 특정 사용자 또는 다른 엔티티가 그 오브젝트에 액세스하는 것을 허용할 때, 오브젝트는 그 사용자 또는 다른 엔티티에 대해 "보이는" 것으로서 설명될 수 있다. 제한이 아닌 예로서, 온라인 소셜 네트워크의 사용자는 사용자-프로파일 페이지 상의 직장-경험 정보에 액세스할 수 있는 한 세트의 사용자들을 식별하는, 사용자-프로필 페이지에 대한 프라이버시 세팅들을 특정하여서, 다른 사용자들이 그 정보에 액세스하는 것을 배제할 수 있다.
특정 실시예들에서, 오브젝트에 대한 프라이버시 세팅들은 오브젝트와 연관된 특정 정보에 액세스하도록 허용되지 않아야 하는 사용자들 또는 다른 엔티티들의 "차단 리스트"를 특정할 수 있다. 특정 실시예들에서, 차단 리스트는 제 3 자 엔티티들을 포함할 수 있다. 차단 리스트는 오브젝트가 보이지 않는 하나 이상의 사용자들 또는 엔티티들을 특정할 수 있다. 제한이 아닌 예로서, 사용자는 사용자와 연관된 사진 앨범들에 액세스하지 않을 수 있는 한 세트의 사용자들을 특정하여서, 그러한 사용자들이 사진 앨범들에 액세스하는 것을 배제할 수 있다(또한 가능하게는, 사진 앨범들에 액세스하도록 특정된 세트의 사용자들 내에 있지 않은 특정 사용자들을 허용하면서). 특정 실시예들에서, 프라이버시 세팅들은 특정 소셜 그래프 엘리먼트들과 연관될 수 있다. 소셜 그래프 엘리먼트, 이를테면, 노드 또는 에지의 프라이버시 세팅들은, 소셜 그래프 엘리먼트, 소셜 그래프 엘리먼트와 연관된 정보, 또는 소셜 그래프 엘리먼트와 연관된 오브젝트들이 온라인 소셜 네트워크를 사용하여 어떻게 액세스될 수 있는지를 특정할 수 있다. 제한이 아닌 예로서, 특정 사진에 대응하는 특정 개념 노드(1204)는 사진에서 태그된 사용자들 및 사진에서 태그된 사용자들의 친구들에 의해서만 사진이 액세스될 수 있음을 특정하는 프라이버시 세팅을 가질 수 있다. 특정 실시예들에서, 프라이버시 세팅들은 사용자들의 콘텐츠, 정보 또는 액션들이 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)에 의해 저장/로깅되거나 또는 다른 시스템들(예컨대, 제 3 자 시스템(170))과 공유되게 하는 것에 대해 사용자들이 옵트 인 또는 옵트 아웃하도록 할 수 있다. 본 개시 내용은 특정 방식으로 특정 프라이버시 세팅들을 사용하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 임의의 적절한 프라이버시 세팅들을 사용하는 것을 고려한다.
특정 실시예들에서, 프라이버시 설정들은 소셜 그래프(1200)의 하나 이상의 노드들 또는 에지들에 기반할 수 있다. 프라이버시 세팅은 소셜 그래프(1200)의 하나 이상의 에지들(1206) 또는 에지-타입들에 대해, 또는 소셜 그래프(1200)의 하나 이상의 노드들(1202, 1204) 또는 노드-타입들에 대해 특정될 수 있다. 2 개의 노드들을 연결하는 특정 에지(1206)에 적용된 프라이버시 세팅들은 노드들에 대응하는 2 개의 엔티티들 사이의 관계가 온라인 소셜 네트워크의 다른 사용자들에게 보이는지 여부를 제어할 수 있다. 유사하게, 특정 노드에 적용된 프라이버시 세팅들은 노드에 대응하는 사용자 또는 개념이 온라인 소셜 네트워크의 다른 사용자들에게 보이는지 여부를 제어할 수 있다. 제한이 아닌 예로서, 제 1 사용자는 소셜 네트워킹 시스템(160)에 대해 오브젝트를 공유할 수 있다. 오브젝트는 에지(1206)에 의해 제 1 사용자의 사용자 노드(1202)에 연결된 개념 노드(1204)와 연관될 수 있다. 제 1 사용자는 오브젝트의 개념 노드(1204)에 연결되는 특정 에지(1206)에 적용되는 프라이버시 세팅들을 특정할 수 있거나, 또는 개념 노드(1204)에 연결되는 모든 에지들(1206)에 적용되는 프라이버시 세팅들을 특정할 수 있다. 제한이 아닌 다른 예로서, 제 1 사용자는 특정 오브젝트-타입의 한 세트의 오브젝트들(예컨대, 한 세트의 이미지들)을 공유할 수 있다. 제 1 사용자는 그 특정 오브젝트-타입의, 제 1 사용자와 연관된 모든 오브젝트들에 대한 프라이버시 세팅들을, 특정 프라이버시 세팅을 갖는 것으로서 특정(예컨대, 제 1 사용자에 의해 포스팅된 모든 이미지들이 제 1 사용자의 친구들 및/또는 이미지들에 태그된 사용자들에게만 보이도록 특정)할 수 있다.
특정 실시예들에서, 소셜 네트워킹 시스템(160)은 제 1 사용자가 하나 이상의 프라이버시 세팅들을 특정하는 것을 보조하기 위해 제 1 사용자에게 (예컨대, 웹페이지, 모듈, 하나 이상의 다이얼로그 박스들, 또는 임의의 다른 적절한 인터페이스 내에서) "프라이버시 위저드"를 제공할 수 있다. 프라이버시 위저드는 명령들, 적절한 프라이버시-관련 정보, 현재 프라이버시 세팅들, 프라이버시 세팅들의 변화 또는 확인을 특정하는, 제1 사용자로부터의 하나 이상의 입력들을 수락하기 위한 하나 이상의 입력 필드들, 또는 이들의 임의의 적절한 조합을 디스플레이할 수 있다. 특정 실시예들에서, 소셜 네트워킹 시스템(160)은 제 1 사용자에게 제 1 사용자의 현재 프라이버시 세팅들을 디스플레이할 수 있는 "대시보드" 기능성을 제 1 사용자에게 제공할 수 있다. 대시보드 기능성은 임의의 적절한 시간에 (예컨대, 특정 이벤트 또는 트리거 액션의 발생 이후에, 대시보드 기능성을 소환하는 제 1 사용자로부터의 입력 이후에) 제 1 사용자에게 디스플레이될 수 있다. 대시보드 기능성은 제 1 사용자가 임의의 적절한 방식으로(예컨대, 제 1 사용자를 프라이버시 위저드로 재안내하여) 임의의 시간에 제 1 사용자의 현재 프라이버시 세팅들 중 하나 이상을 수정하도록 할 수 있다.
오브젝트와 연관된 프라이버시 세팅들은 허용된 액세스 또는 액세스 거부의 임의의 적절한 입도(granularity)를 특정할 수 있다. 제한이 아닌 예로서, 액세스 또는 액세스 거부는 특정 사용자들(예컨대, 오직 나, 내 룸메이트들, 내 상사), 특정 분리도 내의 사용자들(예컨대, 친구들, 친구들의 친구들), 사용자 그룹들(예컨대, 게이밍 클럽, 우리 가족), 사용자 네트워크들(예컨대, 특정 고용주들의 직원들, 특정 대학교의 학생들 또는 동문들), 모든 사용자들("공개"), 사용자 없음("프라이빗"), 제 3 자 시스템들(170)의 사용자들, 특정 애플리케이션들(예컨대, 제 3 자 애플리케이션들, 외부 웹사이트들), 다른 적절한 엔티티들, 또는 이들의 임의의 적절한 조합에 대해 특정될 수 있다. 본 개시 내용은 허용된 액세스 또는 액세스 거부의 특정 입도들을 설명하지만, 본 개시 내용은 허용된 액세스 또는 액세스 거부의 임의의 적절한 입도들을 고려한다.
특정 실시예들에서, 하나 이상의 서버들(162)은 프라이버시 세팅들을 강제하기 위한 인증/프라이버시 서버들일 수 있다. 데이터 스토어(164)에 저장된 특정 오브젝트에 대한 사용자(또는 다른 엔티티)로부터의 요청에 대한 응답으로, 소셜 네트워킹 시스템(160)은 오브젝트에 대한 요청을 데이터 스토어(164)에 전송할 수 있다. 요청은 요청과 연관된 사용자를 식별할 수 있고, 오브젝트는, 오브젝트와 연관된 프라이버시 세팅들에 기반하여 사용자(또는 사용자의 클라이언트 시스템(130))가 오브젝트에 액세스하도록 인증된다고 인증 서버가 결정하는 경우에만 이 사용자에게 전송될 수 있다. 요청하는 사용자가 오브젝트에 액세스하도록 인증되지 않으면, 인증 서버는 요청된 오브젝트가 데이터 스토어(164)로부터 리트리브되는 것을 방지할 수 있거나 또는 요청된 오브젝트가 사용자에게 전송되는 것을 방지할 수 있다. 검색-질의 콘텍스트에서, 질의하는 사용자가 오브젝트에 액세스하도록 인증되는 경우에만, 예컨대, 오브젝트에 대한 프라이버시 세팅들이 오브젝트가 질의하는 사용자에게 표면화되거나, 질의하는 사용자에 의해 발견되거나, 또는 다른 방식으로 질의하는 사용자에게 보이도록 허용되는 경우에만, 오브젝트가 검색 결과로서 제공될 수 있다. 특정 실시예들에서, 오브젝트는 사용자의 뉴스피드를 통해 사용자에게 보이는 콘텐츠를 표현할 수 있다. 제한이 아닌 예로서, 하나 이상의 오브젝트들이 사용자의 "트렌딩" 페이지에 보일 수 있다. 특정 실시예들에서, 오브젝트는 특정 사용자에 대응할 수 있다. 오브젝트는 특정 사용자와 연관된 콘텐츠일 수 있거나, 또는 소셜 네트워킹 시스템(160) 또는 다른 컴퓨팅 시스템 상에 저장된 특정 사용자의 계정 또는 정보일 수 있다. 제한이 아닌 예로서, 제 1 사용자는 온라인 소셜 네트워크의 "당신이 알 수 있는 사람들" 기능을 통해 또는 제 1 사용자의 친구들의 리스트를 봄으로써, 온라인 소셜 네트워크의 하나 이상의 제 2 사용자들을 볼 수 있다. 제한이 아닌 예로서, 제 1 사용자는, 자신의 뉴스피드 또는 친구 리스트에서 특정 제 2 사용자와 연관된 오브젝트들을 보기를 자신이 원하지 않는다고 특정할 수 있다. 오브젝트에 대한 프라이버시 세팅들이 오브젝트가 사용자에게 표면화되거나, 사용자에 의해 발견되거나, 또는 사용자에게 보일 수 있게 하지 않으면, 오브젝트는 검색 결과들로부터 배제될 수 있다. 본 개시 내용은 특정 방식으로 프라이버시 세팅들을 강제하는 것을 설명하지만, 본 개시 내용은 임의의 적절한 방식으로 프라이버시 세팅들을 강제하는 것을 고려한다.
특정 실시예들에서, 사용자와 연관된 동일한 타입의 상이한 오브젝트들은 상이한 프라이버시 세팅들을 가질 수 있다. 사용자와 연관된 상이한 타입들의 오브젝트들은 상이한 타입들의 프라이버시 세팅들을 가질 수 있다. 제한이 아닌 예로서, 제 1 사용자는, 제 1 사용자의 상태 업데이트들이 공개적이지만, 제 1 사용자에 의해 공유된 임의의 이미지들은 온라인 소셜 네트워크 상에서 제 1 사용자의 친구들에게만 보이도록 특정할 수 있다. 제한이 아닌 다른 예로서, 사용자는 상이한 타입들의 엔티티들, 이를테면, 개별적인 사용자들, 친구들의 친구들, 팔로어들, 사용자 그룹들 또는 기업 엔티티들에 대해 상이한 프라이버시 세팅들을 특정할 수 있다. 제한이 아닌 다른 예로서, 제 1 사용자는, 제 1 사용자에 의해 포스팅된 비디오들이 제 1 사용자의 고용주에게 보이지 않게 하면서, 이 비디오들을 볼 수 있는 사용자들의 그룹을 특정할 수 있다. 특정 실시예들에서, 상이한 사용자 그룹들 또는 사용자 인구통계에 대해 상이한 프라이버시 세팅들이 제공될 수 있다. 제한이 아닌 예로서, 제 1 사용자는, 제 1 사용자와 동일한 대학교에 다니는 다른 사용자들은 제 1 사용자의 사진들을 볼 수 있지만, 제 1 사용자의 가족 멤버들인 다른 사용자들은 그러한 동일한 사진들을 볼 수 없다고 특정할 수 있다.
특정 실시예들에서, 소셜 네트워킹 시스템(160)은 특정 오브젝트-타입의 각각의 오브젝트에 대한 하나 이상의 디폴트 프라이버시 세팅들을 제공할 수 있다. 디폴트로 세팅되는 오브젝트에 대한 프라이버시 세팅은 그 오브젝트와 연관된 사용자에 의해 변화될 수 있다. 제한이 아닌 예로서, 제 1 사용자에 의해 포스팅된 모든 이미지들은 제 1 사용자의 친구들에게만 보이는 디폴트 프라이버시 세팅을 가질 수 있고, 특정 이미지에 대해, 제 1 사용자는 친구들 및 친구들의 친구들에게 보이도록 이미지에 대한 프라이버시 세팅을 변화시킬 수 있다.
특정 실시예들에서, 프라이버시 세팅들은, 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)이 임의의 목적을 위해 사용자와 연관된 특정 오브젝트들 또는 정보를 수신, 수집, 로깅 또는 저장할 수 있는지 여부를 제 1 사용자가 (예컨대, 옵트 아웃함으로써, 옵트 인하지 않음으로써) 특정하도록 할 수 있다. 특정 실시예들에서, 프라이버시 세팅들은, 제 1 사용자가 특정 애플리케이션들 또는 프로세스들이 사용자와 연관된 특정 오브젝트들 또는 정보에 액세스하거나, 이를 저장하거나, 또는 이를 사용할 수 있는지 여부를 특정하도록 할 수 있다. 프라이버시 세팅들은, 오브젝트들 또는 정보가 특정 애플리케이션들 또는 프로세스들에 의해 액세스, 저장 또는 사용되게 하는 것에 대해 제 1 사용자가 옵트 인 또는 옵트 아웃하도록 할 수 있다. 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)은, 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)이 임의의 다른 목적들을 위해 그 정보에 액세스하지 않으면서, 제 1 사용자에게 특정 기능 또는 서비스를 제공하기 위해서 그러한 정보에 액세스할 수 있다. 그러한 오브젝트들 또는 정보에 액세스하거나, 이를 저장하거나 또는 이를 사용하기 전에, 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)은, 존재하는 경우, 어떤 애플리케이션들 또는 프로세스들이 오브젝트 또는 정보에 액세스하거나, 이를 저장하거나 또는 이를 사용할 수 있는지를 임의의 그러한 액션을 허용하기 전에 특정하는 프라이버시 세팅들을 제공하도록 사용자에게 촉구할 수 있다. 제한이 아닌 예로서, 제 1 사용자는 온라인 소셜 네트워크와 관련된 애플리케이션(예컨대, 메시징 앱)을 통해 제 2 사용자에게 메시지를 송신할 수 있고, 그러한 메시지들이 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)에 의해 저장되지 않아야 한다는 프라이버시 세팅들을 특정할 수 있다.
특정 실시예들에서, 사용자는 제 1 사용자와 연관된 특정 타입들의 오브젝트들 또는 정보가 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)에 의해 액세스될 수 있는지, 저장될 수 있는지 또는 사용될 수 있는지를 특정할 수 있다. 제한이 아닌 예로서, 제 1 사용자는 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)을 통해 제 1 사용자에 의해 전송된 이미지들이 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)에 의해 저장되지 않을 수 있다는 것을 특정할 수 있다. 제한이 아닌 다른 예로서, 제 1 사용자는 제 1 사용자로부터 특정 제 2 사용자로 전송된 메시지들이 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)에 의해 저장되지 않을 수 있다는 것을 특정할 수 있다. 제한이 아닌 또 다른 예로서, 제 1 사용자는 특정 애플리케이션을 통해 전송된 모든 오브젝트들이 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)에 의해 저장될 수 있다는 것을 특정할 수 있다.
특정 실시예들에서, 프라이버시 세팅들은 제 1 사용자가 제 1 사용자와 연관된 특정 오브젝트들 또는 정보가 특정 클라이언트 시스템들(130) 또는 제 3 자 시스템들(170)로부터 액세스될 수 있는지 여부를 특정하도록 할 수 있다. 프라이버시 세팅들은, 오브젝트들 또는 정보가 특정 디바이스(예컨대, 사용자의 스마트 폰 상의 전화번호부)로부터, 특정 애플리케이션(예컨대, 메시징 앱)으로부터 또는 특정 시스템(예컨대, 이메일 서버)으로부터 액세스되게 하는 것에 대해 제 1 사용자가 옵트 인 또는 옵트 아웃하도록 할 수 있다. 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)은 각각의 디바이스, 시스템 또는 애플리케이션에 대한 디폴트 프라이버시 세팅들을 제공할 수 있고, 그리고/또는 제 1 사용자는 각각의 콘텍스트에 대한 특정 프라이버시 세팅을 특정하도록 촉구될 수 있다. 제한이 아닌 예로서, 제 1 사용자는 사용자에게 근접한 식당들 또는 다른 장소들에 대한 추천들을 제공하도록 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)의 위치-서비스 특징을 활용할 수 있다. 제 1 사용자의 디폴트 프라이버시 세팅들은, 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)이 위치-기반 서비스들을 제공하기 위해 제 1 사용자의 클라이언트 시스템(130)으로부터 제공된 위치 정보를 사용할 수 있지만, 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)은 제 1 사용자의 위치 정보를 저장하지 않거나 또는 이를 임의의 제 3 자 시스템(170)에 제공하지 않을 수 있다는 것을 특정할 수 있다. 이어서, 제 1 사용자는 사진들을 지오-태그(geo-tag)하기 위해서 위치 정보가 제 3 자 이미지-공유 애플리케이션에 의해 사용될 수 있게 하도록 프라이버시 세팅들을 업데이트할 수 있다.
특정 실시예들에서, 프라이버시 세팅들은 사용자가 오브젝트들이 액세스될 수 있는 하나 이상의 지리적 위치들을 특정하도록 할 수 있다. 오브젝트들에 대한 액세스 또는 액세스 거부는 오브젝트들에 액세스하려고 시도하는 사용자의 지리적 위치에 의존할 수 있다. 제한이 아닌 예로서, 사용자는 오브젝트를 공유할 수 있고, 동일한 도시의 사용자들만이 오브젝트에 액세스하거나 또는 오브젝트를 볼 수 있다는 것을 특정할 수 있다. 제한이 아닌 다른 예로서, 제 1 사용자는 오브젝트를 공유할 수 있고, 오브젝트가 제 1 사용자가 특정 위치에 있는 동안에만 제 2 사용자들에게 보이도록 특정할 수 있다. 제 1 사용자가 특정 위치를 떠나면, 오브젝트는 더 이상 제 2 사용자들에게 보이지 않을 수 있다. 제한이 아닌 다른 예로서, 제 1 사용자는 오브젝트가 제 1 사용자로부터 임계 거리 내에서 제 2 사용자들에게만 보이도록 특정할 수 있다. 제 1 사용자가 후속하여 위치를 변화시키면, 오브젝트에 대한 액세스를 갖는 원래의 제 2 사용자들은 액세스를 잃을 수 있는 반면, 새로운 그룹의 제 2 사용자들은 그들이 제 1 사용자의 임계 거리 내에 올 때 액세스를 얻을 수 있다.
특정 실시예들에서, 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)은 사용자-인증 또는 경험-개인화 목적들을 위해 사용자의 개인 또는 생체인식 정보를 입력들로서 사용할 수 있는 기능성들을 가질 수 있다. 사용자는 온라인 소셜 네트워크 상에서의 자신의 경험을 향상시키기 위해 이들 기능성들을 사용하도록 옵트할 수 있다. 제한이 아닌 예로서, 사용자는 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)에 개인 또는 생체인식 정보를 제공할 수 있다. 사용자의 프라이버시 세팅들은, 그러한 정보가 인증과 같은 특정 프로세스들에 대해서만 사용될 수 있다는 것을 특정할 수 있고, 그러한 정보가 임의의 제 3 자 시스템(170)과 공유되지 않거나 또는 소셜 네트워킹 시스템(160) 또는 어시스턴트 시스템(140)과 연관된 다른 프로세스들 또는 애플리케이션들에 사용되지 않을 수 있다는 것을 추가로 특정할 수 있다. 제한이 아닌 다른 예로서, 소셜 네트워킹 시스템(160)은 사용자가 온라인 소셜 네트워크에 음성-프린트 레코딩들을 제공하기 위한 기능성을 제공할 수 있다. 제한이 아닌 예로서, 사용자가 온라인 소셜 네트워크의 이러한 기능을 활용하기를 원하면, 사용자는 온라인 소셜 네트워크 상에서 상태 업데이트를 제공하기 위해 자신만의 음성의 음성 레코딩을 제공할 수 있다. 음성-입력의 레코딩은 사용자에 의해 어떤 워드들이 발화되었는지를 결정하기 위해 사용자의 음성 프린트와 비교될 수 있다. 사용자의 프라이버시 세팅은, 그러한 음성 레코딩이 음성-입력 목적들을 위해서만(예컨대, 사용자를 인증하기 위해, 음성 메시지들을 전송하기 위해, 온라인 소셜 네트워크의 음성-동작되는 특징들을 사용하기 위해서 음성 인식을 개선하기 위해) 사용될 수 있다는 것을 특정할 수 있고, 그러한 음성 레코딩이 임의의 제 3 자 시스템(170)과 공유되지 않거나 또는 소셜 네트워킹 시스템(160)과 연관된 다른 프로세스들 또는 애플리케이션들에 의해 사용되지 않을 수 있다는 것을 추가로 특정할 수 있다. 제한이 아닌 다른 예로서, 소셜 네트워킹 시스템(160)은 사용자가 온라인 소셜 네트워크에 참조 이미지(예컨대, 얼굴 프로파일, 망막 스캔)를 제공하기 위한 기능성을 제공할 수 있다. 온라인 소셜 네트워크는 (예컨대, 사용자를 인증하고, 사진들에서 사용자를 태그하기 위해) 나중에 수신된 이미지 입력과 참조 이미지를 비교할 수 있다. 사용자의 프라이버시 세팅은, 그러한 이미지가 제한된 목적(예컨대, 인증, 사진들에서 사용자를 태그하는 것)을 위해서만 사용될 수 있다는 것을 특정할 수 있고, 그러한 이미지가 임의의 제 3 자 시스템(170)과 공유되지 않거나 또는 소셜 네트워킹 시스템(160)과 연관된 다른 프로세스들 또는 애플리케이션들에 의해 사용되지 않을 수 있다는 것을 추가로 특정할 수 있다.
시스템들 및 방법들
도 15는 예시적인 컴퓨터 시스템(1500)을 예시한다. 특정 실시예들에서, 하나 이상의 컴퓨터 시스템들(1500)은 본원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 수행한다. 특정 실시예들에서, 하나 이상의 컴퓨터 시스템들(1500)은 본원에서 설명되거나 또는 예시된 기능성을 제공한다. 특정 실시예들에서, 하나 이상의 컴퓨터 시스템들(1500) 상에서 실행되는 소프트웨어는 본원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 수행하거나 또는 본원에서 설명되거나 또는 예시된 기능성을 제공한다. 특정 실시예들은 하나 이상의 컴퓨터 시스템들(1500)의 하나 이상의 부분들을 포함한다. 본원에서, 컴퓨터 시스템에 대한 언급은 적절한 경우 컴퓨팅 디바이스를 포함할 수 있고, 그 반대도 가능하다. 게다가, 컴퓨터 시스템에 대한 언급은 적절한 경우 하나 이상의 컴퓨터 시스템들을 포함할 수 있다.
본 개시 내용은 임의의 적절한 수의 컴퓨터 시스템들(1500)을 고려한다. 본 개시 내용은 임의의 적절한 물리적 형태를 취하는 컴퓨터 시스템(1500)을 고려한다. 제한이 아닌 예로서, 컴퓨터 시스템(1500)은 임베디드 컴퓨터 시스템, SOC(system-on-chip), SBC(single-board computer) 시스템(이를테면, 예컨대, COM(computer-on-module) 또는 SOM(system-on-module)), 데스크톱 컴퓨터 시스템, 랩톱 또는 노트북 컴퓨터 시스템, 대화형 키오스크, 메인프레임, 컴퓨터 시스템들의 메시, 모바일 전화, PDA(personal digital assistant), 서버, 태블릿 컴퓨터 시스템, 또는 이들 중 둘 이상의 조합일 수 있다. 적절한 경우, 컴퓨터 시스템(1500)은 하나 이상의 컴퓨터 시스템들(1500)을 포함하거나; 단일형 또는 분산형이거나; 다수의 위치들에 걸쳐 있거나; 다수의 기계들에 걸쳐 있거나; 다수의 데이터 센터들에 걸쳐 있거나; 또는 하나 이상의 네트워크들 내의 하나 이상의 클라우드 컴포넌트들을 포함할 수 있는 클라우드에 상주할 수 있다. 적절한 경우, 하나 이상의 컴퓨터 시스템들(1500)은 본원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 실질적인 공간적 또는 시간적 제한 없이 수행할 수 있다. 제한이 아닌 예로서, 하나 이상의 컴퓨터 시스템들(1500)은 본원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 실시간으로 또는 배치(batch) 모드로 수행할 수 있다. 적절한 경우, 하나 이상의 컴퓨터 시스템들(1500)은 본원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 상이한 시간들에서 또는 상이한 위치들에서 수행할 수 있다.
특정 실시예들에서, 컴퓨터 시스템(1500)은 프로세서(1502), 메모리(1504), 스토리지(1506), I/O(input/output) 인터페이스(1508), 통신 인터페이스(1510) 및 버스(1512)를 포함한다. 본 개시 내용은 특정 어레인지먼트로 특정 수의 특정 컴포넌트들을 갖는 특정 컴퓨터 시스템을 설명 및 예시하지만, 본 개시 내용은 임의의 적절한 어레인지먼트로 임의의 적절한 수의 임의의 적절한 컴포넌트들을 갖는 임의의 적절한 컴퓨터 시스템을 고려한다.
특정 실시예들에서, 프로세서(1502)는 명령들, 이를테면, 컴퓨터 프로그램을 구성하는 명령들을 실행하기 위한 하드웨어를 포함한다. 제한이 아닌 예로서, 명령들을 실행하기 위해, 프로세서(1502)는 내부 레지스터, 내부 캐시, 메모리(1504) 또는 스토리지(1506)로부터 명령들을 리트리브(또는 페치)하고; 그들을 디코딩 및 실행하며; 이어서, 하나 이상의 결과들을 내부 레지스터, 내부 캐시, 메모리(1504) 또는 스토리지(1506)에 기록할 수 있다. 특정 실시예들에서, 프로세서(1502)는 데이터, 명령들 또는 어드레스들을 위한 하나 이상의 내부 캐시들을 포함할 수 있다. 본 개시 내용은 적절한 경우 임의의 적절한 수의 임의의 적절한 내부 캐시들을 포함하는 프로세서(1502)를 고려한다. 제한이 아닌 예로서, 프로세서(1502)는 하나 이상의 명령 캐시들, 하나 이상의 데이터 캐시들 및 하나 이상의 TLB(translation lookaside buffer)들을 포함할 수 있다. 명령 캐시들 내의 명령들은 메모리(1504) 또는 스토리지(1506) 내의 명령들의 사본들일 수 있고, 명령 캐시들은 프로세서(1502)에 의한 그러한 명령들의 리트리벌을 가속화할 수 있다. 데이터 캐시들 내의 데이터는, 동작하도록 프로세서(1502)에서 실행되는 명령들에 대해 메모리(1504) 또는 스토리지(1506) 내의 데이터의 사본들; 프로세서(1502)에서 실행되는 후속 명령들에 의한 액세스를 위해 또는 메모리(1504) 또는 스토리지(1506)에 기록하기 위해 프로세서(1502)에서 실행된 이전 명령들의 결과들; 또는 다른 적절한 데이터일 수 있다. 데이터 캐시들은 프로세서(1502)에 의한 판독 또는 기록 동작들을 가속화할 수 있다. TLB들은 프로세서(1502)에 대한 가상-어드레스 번역을 가속화할 수 있다. 특정 실시예들에서, 프로세서(1502)는 데이터, 명령들 또는 어드레스들을 위한 하나 이상의 내부 레지스터들을 포함할 수 있다. 본 개시 내용은 적절한 경우 임의의 적절한 수의 임의의 적절한 내부 레지스터들을 포함하는 프로세서(1502)를 고려한다. 적절한 경우, 프로세서(1502)는 하나 이상의 ALU(arithmetic logic unit)들을 포함하고; 멀티-코어 프로세서이거나; 또는 하나 이상의 프로세서들(1502)을 포함할 수 있다. 본 개시 내용은 특정 프로세서를 설명 및 예시하지만, 본 개시 내용은 임의의 적절한 프로세서를 고려한다.
특정 실시예들에서, 메모리(1504)는 프로세서(1502)가 실행할 명령들 또는 프로세서(1502)가 동작할 데이터를 저장하기 위한 메인 메모리를 포함한다. 제한이 아닌 예로서, 컴퓨터 시스템(1500)은 스토리지(1506) 또는 다른 소스(이를테면, 예컨대, 다른 컴퓨터 시스템(1500))로부터 메모리(1504)로 명령들을 로딩할 수 있다. 이어서, 프로세서(1502)는 메모리(1504)로부터 내부 레지스터 또는 내부 캐시로 명령들을 로딩할 수 있다. 명령들을 실행하기 위해, 프로세서(1502)는 내부 레지스터 또는 내부 캐시로부터 명령들을 리트리브하고 이들을 디코딩할 수 있다. 명령들의 실행 동안 또는 실행 후에, 프로세서(1502)는 하나 이상의 결과들(중간 또는 최종 결과들일 수 있음)을 내부 레지스터 또는 내부 캐시에 기록할 수 있다. 이어서, 프로세서(1502)는 그러한 결과들 중 하나 이상을 메모리(1504)에 기록할 수 있다. 특정 실시예들에서, 프로세서(1502)는 (스토리지(1506) 또는 다른 곳과 대조적으로) 하나 이상의 내부 레지스터들 또는 내부 캐시들 또는 메모리(1504) 내의 명령들만을 실행하고, (스토리지(1506) 또는 다른 곳과는 대조적으로) 하나 이상의 내부 레지스터들 또는 내부 캐시들 또는 메모리(1504) 내의 데이터에 대해서만 동작한다. (어드레스 버스 및 데이터 버스를 각각 포함할 수 있는) 하나 이상의 메모리 버스들은 프로세서(1502)를 메모리(1504)에 연결할 수 있다. 버스(1512)는 아래에서 설명되는 바와 같이 하나 이상의 메모리 버스들을 포함할 수 있다. 특정 실시예들에서, 하나 이상의 MMU(memory management unit)들은 프로세서(1502)와 메모리(1504) 사이에 상주하며, 프로세서(1502)에 의해 요청된 메모리(1504)에 대한 액세스들을 가능하게 한다. 특정 실시예들에서, 메모리(1504)는 RAM(random access memory)을 포함한다. 이 RAM은 적절한 경우 휘발성 메모리일 수 있다. 적절한 경우, 이 RAM은 DRAM(dynamic RAM) 또는 SRAM(static RAM)일 수 있다. 게다가, 적절한 경우, 이 RAM은 단일-포트 또는 멀티-포트 RAM일 수 있다. 본 개시내용은 임의의 적절한 RAM을 고려한다. 적절한 경우, 메모리(1504)는 하나 이상의 메모리들(1504)을 포함할 수 있다. 본 개시 내용은 특정 메모리를 설명 및 예시하지만, 본 개시 내용은 임의의 적절한 메모리를 고려한다.
특정 실시예들에서, 스토리지(1506)는 데이터 또는 명령들을 위한 대용량 스토리지를 포함한다. 제한이 아닌 예로서, 스토리지(1506)는 HDD(hard disk drive), 플로피 디스크 드라이브, 플래시 메모리, 광 디스크, 광 자기 디스크, 자기 테이프, 또는 USB(Universal Serial Bus) 드라이브 또는 이들 중 둘 이상의 조합을 포함할 수 있다. 적절한 경우, 스토리지(1506)는 제거가능 또는 제거불가능(또는 고정) 매체를 포함할 수 있다. 적절한 경우, 스토리지(1506)는 컴퓨터 시스템(1500)의 내부 또는 외부에 있을 수 있다. 특정 실시예들에서, 스토리지(1506)는 비-휘발성 고체-상태 메모리이다. 특정 실시예들에서, 스토리지(1506)는 ROM(read-only memory)을 포함한다. 적절한 경우, 이 ROM은 마스크-프로그래밍된 ROM, PROM(programmable ROM), EPROM(erasable PROM), EEPROM(electrically erasable PROM), EAROM(electrically alterable ROM), 또는 플래시 메모리, 또는 이들 중 둘 이상의 조합일 수 있다. 본 개시 내용은 임의의 적절한 물리적 형태를 취하는 대용량 스토리지(1506)를 고려한다. 적절한 경우, 스토리지(1506)는 프로세서(1502)와 스토리지(1506) 사이의 통신을 가능하게 하는 하나 이상의 스토리지 제어 유닛들을 포함할 수 있다. 적절한 경우, 스토리지(1506)는 하나 이상의 스토리지들(1506)을 포함할 수 있다. 본 개시 내용은 특정 스토리지를 설명 및 예시하지만, 본 개시 내용은 임의의 적절한 스토리지를 고려한다.
특정 실시예들에서, I/O 인터페이스(1508)는 컴퓨터 시스템(1500)과 하나 이상의 I/O 디바이스들 사이의 통신을 위한 하나 이상의 인터페이스들을 제공하는 하드웨어, 소프트웨어, 또는 양자 모두를 포함한다. 적절한 경우, 컴퓨터 시스템(1500)은 이들 I/O 디바이스들 중 하나 이상을 포함할 수 있다. 이들 I/O 디바이스들 중 하나 이상은 개인과 컴퓨터 시스템(1500) 사이의 통신을 가능하게 할 수 있다. 제한이 아닌 예로서, I/O 디바이스는 키보드, 키패드, 마이크로폰, 모니터, 마우스, 프린터, 스캐너, 스피커, 스틸 카메라, 스타일러스, 태블릿, 터치 스크린, 트랙볼, 비디오 카메라, 다른 적절한 I/O 디바이스, 또는 이들 중 둘 이상의 조합을 포함할 수 있다. I/O 디바이스는 하나 이상의 센서들을 포함할 수 있다. 본 개시 내용은 임의의 적절한 I/O 디바이스들 및 이들에 대한 임의의 적절한 I/O 인터페이스들(1508)을 고려한다. 적절한 경우, I/O 인터페이스(1508)는 프로세서(1502)가 이들 I/O 디바이스들 중 하나 이상을 구동하는 것을 가능하게 하는 하나 이상의 디바이스 또는 소프트웨어 드라이버들을 포함할 수 있다. 적절한 경우, I/O 인터페이스(1508)는 하나 이상의 I/O 인터페이스들(1508)을 포함할 수 있다. 본 개시 내용은 특정 I/O 인터페이스를 설명 및 예시하지만, 본 개시 내용은 임의의 적절한 I/O 인터페이스를 고려한다.
특정 실시예들에서, 통신 인터페이스(1510)는 컴퓨터 시스템(1500)과 하나 이상의 다른 컴퓨터 시스템들(1500) 또는 하나 이상의 네트워크들 사이의 통신(이를테면, 예컨대, 패킷-기반 통신)을 위한 하나 이상의 인터페이스들을 제공하는 하드웨어, 소프트웨어, 또는 양자 모두를 포함한다. 제한이 아닌 예로서, 통신 인터페이스(1510)는 이더넷 또는 다른 유선-기반 네트워크와 통신하기 위한 NIC(network interface controller) 또는 네트워크 어댑터, 또는 무선 네트워크, 이를테면, WI-FI 네트워크와 통신하기 위한 WNIC(wireless NIC) 또는 무선 어댑터를 포함할 수 있다. 본 개시 내용은 임의의 적절한 네트워크 및 이를 위한 임의의 적절한 통신 인터페이스(1510)를 고려한다. 제한이 아닌 예로서, 컴퓨터 시스템(1500)은 애드 혹 네트워크, PAN(personal area network), LAN(local area network), WAN(wide area network), MAN(metropolitan area network), 또는 인터넷의 하나 이상의 부분들, 또는 이들 중 둘 이상의 조합과 통신할 수 있다. 이들 네트워크들 중 하나 이상의 네트워크들의 하나 이상의 부분들은 유선 또는 무선일 수 있다. 예로서, 컴퓨터 시스템(1500)은 WPAN(wireless PAN)(이를테면, 예컨대, BLUETOOTH WPAN), WI-FI 네트워크, WI-MAX 네트워크, 셀룰러 전화 네트워크(이를테면, 예컨대, GSM(Global System for Mobile Communications) 네트워크), 또는 다른 적절한 무선 네트워크, 또는 이들 중 둘 이상의 조합과 통신할 수 있다. 적절한 경우, 컴퓨터 시스템(1500)은 이들 네트워크들 중 임의의 네트워크에 대한 임의의 적절한 통신 인터페이스(1510)를 포함할 수 있다. 적절한 경우, 통신 인터페이스(1510)는 하나 이상의 통신 인터페이스들(1510)을 포함할 수 있다. 본 개시 내용은 특정 통신 인터페이스를 설명 및 예시하지만, 본 개시 내용은 임의의 적절한 통신 인터페이스를 고려한다.
특정 실시예들에서, 버스(1512)는 컴퓨터 시스템(1500)의 컴포넌트들을 서로 연결하는 하드웨어, 소프트웨어, 또는 양자 모두를 포함한다. 제한이 아닌 예로서, 버스(1512)는 AGP(Accelerated Graphics Port) 또는 다른 그래픽 버스, EISA(Enhanced Industry Standard Architecture) 버스, FSB(front-side bus), HT(HYPERTRANSPORT) 상호연결부, ISA(Industry Standard Architecture) 버스, INFINIBAND 상호연결부, LPC(low-pin-count) 버스, 메모리 버스, MCA(Micro Channel Architecture) 버스, PCI(Peripheral Component Interconnect) 버스, PCIe(PCI-Express) 버스, SATA(serial advanced technology attachment) 버스, VLB(Video Electronics Standards Association local) 버스, 또는 다른 적절한 버스, 또는 이들 중 둘 이상의 조합을 포함할 수 있다. 적절한 경우, 버스(1512)는 하나 이상의 버스들(1512)을 포함할 수 있다. 본 개시 내용은 특정 버스를 설명 및 예시하지만, 본 개시 내용은 임의의 적절한 버스 또는 상호연결부를 고려한다.
본원에서, 컴퓨터 판독가능 비-일시적 저장 매체 또는 매체는 적절한 경우 하나 이상의 반도체-기반 또는 다른 IC(integrated circuit)들(이를테면, 예컨대, FPGA(field-programmable gate array)들 또는 ASIC(application-specific IC)들), HDD(hard disk drive)들, HHD(hybrid hard drive)들, 광 디스크들, ODD(optical disc drive)들, 광 자기 디스크들, 광 자기 드라이브들, 플로피 디스켓들, FDD(floppy disk drive)들, 자기 테이프들, SSD(solid-state drive)들, RAM-드라이브들, SECURE DIGITAL 카드들 또는 드라이브들, 임의의 다른 적절한 컴퓨터-판독가능 비-일시적 저장 매체, 또는 이들 중 둘 이상의 임의의 적절한 조합을 포함할 수 있다. 적절한 경우, 컴퓨터 판독가능 비-일시적 저장 매체는 휘발성, 비-휘발성, 또는 휘발성과 비-휘발성의 조합일 수 있다.
기타
본원에서, "또는"은 명시적으로 달리 표시되거나 또는 문맥에 의해 달리 표시되지 않는 한 포괄적이며 그리고 배타적이지 않다. 그러므로, 본원에서, "A 또는 B"는, 명시적으로 달리 표시되거나 또는 문맥에 의해 달리 표시되지 않는 한, "A, B, 또는 양자 모두"를 의미한다. 게다가, "및"은 명시적으로 달리 표시되거나 또는 문맥에 의해 달리 표시되지 않는 한 공동 및 각자(joint and several) 양자 모두이다. 그러므로, 본원에서, "A 및 B"는, 명시적으로 달리 표시되거나 또는 문맥에 의해 달리 표시되지 않는 한, "공동으로 또는 각자, A 및 B"를 의미한다.
본 개시 내용의 범위는 당업자가 이해할 수 있는, 본원에서 설명되거나 또는 예시된 예시적인 실시예들에 대한 모든 변화들, 대체들, 변형들, 변경들 및 수정들을 포함한다. 본 개시 내용의 범위는 본원에서 설명되거나 또는 예시된 예시적인 실시예들로 제한되지 않는다. 게다가, 본 개시 내용은 특정 컴포넌트들, 엘리먼트들, 특징, 기능들, 동작들 또는 단계들을 포함하는 것으로 본원에서 개개의 실시예들을 설명 및 예시하지만, 이들 실시예들 중 임의의 실시예는 당업자가 이해할 수 있는 본원의 어딘가에 설명되거나 또는 예시된 컴포넌트들, 엘리먼트들, 특징들, 기능들, 동작들 또는 단계들 중 임의의 것의 임의의 조합 또는 치환(permutation)을 포함할 수 있다. 더욱이, 첨부된 청구항들에서, 특정 기능을 수행하도록 적응되거나, 배열되거나, 가능하거나, 구성되거나, 인에이블링되거나, 동작 가능하거나, 또는 동작하는 장치 또는 시스템 또는 장치 또는 시스템의 컴포넌트에 대한 참조는, 그 장치, 시스템 또는 컴포넌트가 그렇게 적응되거나, 배열되거나, 가능하거나, 구성되거나, 인에이블링되거나, 동작 가능하거나, 또는 동작하는 한, 그것 또는 그 특정 기능이 활성화되든, 턴 온되든, 또는 잠금 해제되든 간에, 그 장치, 시스템, 컴포넌트를 포함한다. 부가적으로, 본 개시 내용은 특정 장점들을 제공하는 것으로서 특정 실시예들을 설명하거나 또는 예시하지만, 특정 실시예들은 이들 장점들 중 일부 또는 전부를 제공할 수 있거나 또는 아무것도 제공하지 않을 수 있다.

Claims (20)

  1. 방법으로서,
    하나 이상의 컴퓨팅 시스템들에 의해,
    제 1 사용자와 연관된 선행적 트리거(proactive trigger)들과 연관된 하나 이상의 입력들을 수신하는 단계;
    하나 이상의 선행적 정책들에 기반하여 상기 제 1 사용자가 선행적 제안들을 수신할 자격이 있는지 여부를 결정하는 단계;
    상기 제 1 사용자와 연관된 사용자 콘텍스트 데이터 및 상기 하나 이상의 입력들에 기반하여 하나 이상의 선행적 제안들을 생성하는 단계;
    상기 제 1 사용자와 연관된 태스크 이력 데이터에 기반하여 상기 선행적 제안들 중 하나 이상을 선택하는 단계; 및
    상기 제 1 사용자와 연관된 클라이언트 시스템에, 선행적 콘텐츠를 상기 제 1 사용자에게 제공하기 위한 명령들을 전송하는 단계로서, 상기 선행적 콘텐츠는 선택된 선행적 제안들을 포함하는, 상기 명령들을 전송하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 선행적 콘텐츠의 전달 스케줄을 결정하는 단계를 더 포함하며, 상기 선행적 콘텐츠를 상기 제 1 사용자에게 제공하기 위한 명령들을 전송하는 단계는 상기 전달 스케줄에 기반하는, 방법.
  3. 제 2 항에 있어서,
    상기 전달 스케줄은 상기 제 1 사용자와 연관된 상기 사용자 콘텍스트 데이터, 상기 제 1 사용자와 연관된 사용자 메모리, 또는 지식 그래프 중 하나 이상에 기반하여 결정되는, 방법.
  4. 제 1 항에 있어서,
    상기 하나 이상의 선행적 제안들 각각은 제안된 조사(survey), 제안된 질의 또는 제안된 태스크 중 하나 이상을 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 하나 이상의 입력들은 제 1 태스크의 완료의 하나 이상의 표시들을 포함하고, 상기 하나 이상의 선행적 제안들 각각은 후속 조사, 후속 질문 또는 후속 태스크 중 하나 이상을 포함하는, 방법.
  6. 제 5 항에 있어서,
    제시된 선행적 콘텐츠에 응답하여, 상기 클라이언트 시스템으로부터, 상기 제 1 사용자로부터의 사용자 입력을 수신하는 단계;
    상기 사용자 입력에 응답하여 제 2 태스크를 실행하는 단계; 및
    상기 제 1 태스크, 및 상기 제 2 태스크의 실행에 기반하여, 하나 이상의 업데이트된 선행적 제안들을 생성하는 단계를 더 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 하나 이상의 입력들은 하나 이상의 멀티모달(multimodal) 신호들을 포함하고, 각각의 멀티모달 신호는 날짜, 시간, 위치, 시각 신호, 사운드 신호, 엔티티 업데이트 또는 사용자 콘텍스트 중 하나 이상에 기반하는, 방법.
  8. 제 7 항에 있어서,
    하나 이상의 업데이트된 멀티모달 신호들을 수신하는 단계; 및
    상기 업데이트된 멀티모달 신호들에 기반하여 하나 이상의 업데이트된 선행적 제안들을 생성하는 단계를 더 포함하는, 방법.
  9. 제 1 항에 있어서,
    상기 하나 이상의 선행적 제안들을 생성하는 단계는 복수의 선행적 제안들을 포함하는 미리 결정된 제안 리스트에 액세스하는 단계를 포함하는, 방법.
  10. 제 9 항에 있어서,
    상기 미리 결정된 제안 리스트는, 상기 제 1 사용자와 연관된 상기 태스크 이력 데이터, 상기 제 1 사용자와 연관된 사용자 메모리, 또는 지식 그래프 중 하나 이상에 기반하여 생성되는, 방법.
  11. 제 1 항에 있어서,
    상기 제 1 사용자가 선행적 제안들을 수신할 자격이 있는지 여부를 결정하는 단계는, 상기 제 1 사용자와 연관된 상기 사용자 콘텍스트 데이터, 상기 제 1 사용자와 연관된 상기 태스크 이력 데이터, 또는 상기 제 1 사용자와 연관된 사용자 메모리 중 하나 이상에 추가로 기반하는, 방법.
  12. 제 1 항에 있어서,
    상기 선행적 제안들 중 하나 이상을 선택하는 단계는, 상기 제 1 사용자와 연관된 상기 사용자 콘텍스트 데이터, 상기 제 1 사용자와 연관된 사용자 메모리, 또는 지식 그래프 중 하나 이상에 추가로 기반하는, 방법.
  13. 제 1 항에 있어서,
    상기 하나 이상의 입력들에 기반하여 상기 제 1 사용자와 연관된 초기 인텐트(intent)를 결정하는 단계; 및
    상기 초기 인텐트에 기반하여 상기 제 1 사용자와 연관된 후속 인텐트를 결정하는 단계를 더 포함하며,
    상기 하나 이상의 선행적 제안들을 생성하는 단계는 상기 후속 인텐트에 추가로 기반하는, 방법.
  14. 제 13 항에 있어서,
    상기 후속 인텐트를 결정하는 단계는 기계-학습 모델에 기반하고, 상기 기계-학습 모델은 복수의 인텐트 쌍(intent-pair)들과 연관된 데이터에 기반하여 트레이닝되며, 상기 복수의 인텐트 쌍들과 연관된 데이터는 상기 초기 인텐트와 상기 후속 인텐트 사이의 인텐트 쌍과 연관된 데이터를 포함하는, 방법.
  15. 소프트웨어를 구현하는 하나 이상의 컴퓨터-판독가능 비-일시적 저장 매체로서,
    상기 소프트웨어는, 실행될 때,
    제 1 사용자와 연관된 선행적 트리거들과 연관된 하나 이상의 입력들을 수신하고;
    하나 이상의 선행적 정책들에 기반하여 상기 제 1 사용자가 선행적 제안들을 수신할 자격이 있는지 여부를 결정하고;
    상기 제 1 사용자와 연관된 사용자 콘텍스트 데이터 및 상기 하나 이상의 입력들에 기반하여 하나 이상의 선행적 제안들을 생성하고;
    상기 제 1 사용자와 연관된 태스크 이력 데이터에 기반하여 상기 선행적 제안들 중 하나 이상을 선택하고;
    상기 제 1 사용자와 연관된 클라이언트 시스템에, 선행적 콘텐츠를 상기 제 1 사용자에게 제공하기 위한 명령들을 전송하도록 동작가능하며,
    상기 선행적 콘텐츠는 선택된 선행적 제안들을 포함하는, 컴퓨터-판독가능 비-일시적 저장 매체.
  16. 제 15 항에 있어서,
    상기 소프트웨어는 추가로, 실행될 때, 상기 선행적 콘텐츠의 전달 스케줄을 결정하도록 동작가능하며, 상기 선행적 콘텐츠를 상기 제 1 사용자에게 제공하기 위한 명령들을 전송하는 것은 상기 전달 스케줄에 기반하는, 컴퓨터-판독가능 비-일시적 저장 매체.
  17. 제 16 항에 있어서,
    상기 전달 스케줄은 상기 제 1 사용자와 연관된 상기 사용자 콘텍스트 데이터, 상기 제 1 사용자와 연관된 사용자 메모리, 또는 지식 그래프 중 하나 이상에 기반하여 결정되는, 컴퓨터-판독가능 비-일시적 저장 매체.
  18. 시스템으로서,
    하나 이상의 프로세서들; 및
    상기 프로세서들에 의해 실행가능한 명령들을 포함하는, 상기 프로세서들에 연결된 비-일시적 메모리를 포함하며,
    상기 프로세서들은, 상기 명령들을 실행할 때,
    제 1 사용자와 연관된 선행적 트리거들과 연관된 하나 이상의 입력들을 수신하고;
    하나 이상의 선행적 정책들에 기반하여 상기 제 1 사용자가 선행적 제안들을 수신할 자격이 있는지 여부를 결정하고;
    상기 제 1 사용자와 연관된 사용자 콘텍스트 데이터 및 상기 하나 이상의 입력들에 기반하여 하나 이상의 선행적 제안들을 생성하고;
    상기 제 1 사용자와 연관된 태스크 이력 데이터에 기반하여 상기 선행적 제안들 중 하나 이상을 선택하고;
    상기 제 1 사용자와 연관된 클라이언트 시스템에, 선행적 콘텐츠를 상기 제 1 사용자에게 제공하기 위한 명령들을 전송하도록 동작가능하며,
    상기 선행적 콘텐츠는 선택된 선행적 제안들을 포함하는, 시스템.
  19. 제 18 항에 있어서,
    상기 프로세서들은 추가로, 상기 명령들을 실행할 때, 상기 선행적 콘텐츠의 전달 스케줄을 결정하도록 동작가능하며, 상기 선행적 콘텐츠를 상기 제 1 사용자에게 제공하기 위한 명령들을 전송하는 것은 상기 전달 스케줄에 기반하는, 시스템.
  20. 제 19 항에 있어서,
    상기 전달 스케줄은 상기 제 1 사용자와 연관된 상기 사용자 콘텍스트 데이터, 상기 제 1 사용자와 연관된 사용자 메모리, 또는 지식 그래프 중 하나 이상에 기반하여 결정되는, 시스템.
KR1020227016523A 2019-10-18 2020-10-16 어시스턴트 시스템들을 위한 선행적 콘텐츠 생성 KR20220083789A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962923342P 2019-10-18 2019-10-18
US62/923,342 2019-10-18
US202063044270P 2020-06-25 2020-06-25
US63/044,270 2020-06-25
US17/006,260 US20210117214A1 (en) 2019-10-18 2020-08-28 Generating Proactive Content for Assistant Systems
US17/006,260 2020-08-28
PCT/US2020/056188 WO2021077043A1 (en) 2019-10-18 2020-10-16 Generating proactive content for assistant systems

Publications (1)

Publication Number Publication Date
KR20220083789A true KR20220083789A (ko) 2022-06-20

Family

ID=75490913

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227016523A KR20220083789A (ko) 2019-10-18 2020-10-16 어시스턴트 시스템들을 위한 선행적 콘텐츠 생성

Country Status (6)

Country Link
US (1) US20210117214A1 (ko)
EP (1) EP4046097A1 (ko)
JP (1) JP2022551788A (ko)
KR (1) KR20220083789A (ko)
CN (1) CN114930363A (ko)
WO (1) WO2021077043A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102518520B1 (ko) * 2022-07-19 2023-04-05 주식회사 엠브이아이 시각장애인의 디지털 정보격차를 해소하기 위한 클라우드 기반의 경영 관리 시스템

Families Citing this family (32)

* Cited by examiner, † Cited by third party
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
DE112014000709B4 (de) 2013-02-07 2021-12-30 Apple Inc. Verfahren und vorrichtung zum betrieb eines sprachtriggers für einen digitalen assistenten
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
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
US20180336275A1 (en) 2017-05-16 2018-11-22 Apple Inc. Intelligent automated assistant for media exploration
US11715042B1 (en) 2018-04-20 2023-08-01 Meta Platforms Technologies, Llc Interpretability of deep reinforcement learning models in assistant systems
US11676220B2 (en) 2018-04-20 2023-06-13 Meta Platforms, Inc. Processing multimodal user input for assistant systems
US11886473B2 (en) 2018-04-20 2024-01-30 Meta Platforms, Inc. Intent identification for agent matching by assistant systems
US11010436B1 (en) 2018-04-20 2021-05-18 Facebook, Inc. Engaging users by personalized composing-content recommendation
US11307880B2 (en) 2018-04-20 2022-04-19 Meta Platforms, Inc. Assisting users with personalized and contextual communication content
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
US11170777B2 (en) * 2019-05-06 2021-11-09 Google Llc Proactive caching of assistant action content at a client device to enable on-device resolution of spoken or typed utterances
US11328729B1 (en) * 2020-02-24 2022-05-10 Suki AI, Inc. Systems, methods, and storage media for providing presence of modifications in user dictation
US11245648B1 (en) * 2020-07-31 2022-02-08 International Business Machines Corporation Cognitive management of context switching for multiple-round dialogues
US11783827B2 (en) * 2020-11-06 2023-10-10 Apple Inc. Determining suggested subsequent user actions during digital assistant interaction
US20220147547A1 (en) * 2020-11-12 2022-05-12 International Business Machines Corporation Analogy based recognition
US20220156299A1 (en) * 2020-11-13 2022-05-19 International Business Machines Corporation Discovering objects in an ontology database
CN112765477B (zh) * 2021-03-05 2022-03-25 北京百度网讯科技有限公司 信息处理、信息推荐的方法和装置、电子设备和存储介质
CN113297359B (zh) * 2021-04-23 2023-11-28 阿里巴巴新加坡控股有限公司 交互信息的方法以及装置
CN113222031B (zh) * 2021-05-19 2022-04-12 浙江大学 基于联邦个性化学习的光刻热区检测方法
US11593819B2 (en) * 2021-06-09 2023-02-28 Maplebear Inc. Training a model to predict likelihoods of users performing an action after being presented with a content item
WO2022266209A2 (en) * 2021-06-16 2022-12-22 Apple Inc. Conversational and environmental transcriptions
KR20240012449A (ko) * 2021-07-13 2024-01-29 엘지전자 주식회사 증강현실과 혼합현실에 기반한 경로 안내 장치 및 경로안내 시스템
US20230027628A1 (en) * 2021-07-26 2023-01-26 Microsoft Technology Licensing, Llc User context-based enterprise search with multi-modal interaction
CN113591459B (zh) * 2021-08-10 2023-09-15 平安银行股份有限公司 地址标准化处理方法、装置、电子设备及可读存储介质
US12020690B1 (en) * 2021-09-29 2024-06-25 Amazon Technologies, Inc. Adaptive targeting for proactive voice notifications
US12045568B1 (en) 2021-11-12 2024-07-23 Meta Platforms, Inc. Span pointer networks for non-autoregressive task-oriented semantic parsing for assistant systems
US20230350928A1 (en) * 2022-04-28 2023-11-02 Knowbl LLC Systems and methods for implementing a virtual agent performing context and query transformations using unsupervised machine learning models
US11868736B1 (en) * 2022-11-09 2024-01-09 Moonbeam, Inc. Approaches to deriving and surfacing insights into conversations in virtual environments and systems for accomplishing the same
US11983329B1 (en) 2022-12-05 2024-05-14 Meta Platforms, Inc. Detecting head gestures using inertial measurement unit signals
US12112001B1 (en) 2023-03-14 2024-10-08 Meta Platforms, Inc. Preventing false activations based on don/doff detection for assistant systems

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9865260B1 (en) * 2017-05-03 2018-01-09 Google Llc Proactive incorporation of unsolicited content into human-to-computer dialogs

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102518520B1 (ko) * 2022-07-19 2023-04-05 주식회사 엠브이아이 시각장애인의 디지털 정보격차를 해소하기 위한 클라우드 기반의 경영 관리 시스템
WO2024019199A1 (ko) * 2022-07-19 2024-01-25 주식회사 엠브이아이 시각장애인의 디지털 정보격차를 해소하기 위한 클라우드 기반의 경영 관리 시스템

Also Published As

Publication number Publication date
CN114930363A (zh) 2022-08-19
JP2022551788A (ja) 2022-12-14
EP4046097A1 (en) 2022-08-24
WO2021077043A1 (en) 2021-04-22
US20210117214A1 (en) 2021-04-22

Similar Documents

Publication Publication Date Title
US11823289B2 (en) User controlled task execution with task persistence for assistant systems
US20210117214A1 (en) Generating Proactive Content for Assistant Systems
US11159767B1 (en) Proactive in-call content recommendations for assistant systems
US11658835B2 (en) Using a single request for multi-person calling in assistant systems
US11567788B1 (en) Generating proactive reminders for assistant systems
US11809480B1 (en) Generating dynamic knowledge graph of media contents for assistant systems
US20220279051A1 (en) Generating Proactive Reminders for Assistant Systems