KR20190049886A - 언어 모델을 사용한, 메시지들에서 수신되는 이미지들에 대한 자동적인 제안 응답들 - Google Patents

언어 모델을 사용한, 메시지들에서 수신되는 이미지들에 대한 자동적인 제안 응답들 Download PDF

Info

Publication number
KR20190049886A
KR20190049886A KR1020197011687A KR20197011687A KR20190049886A KR 20190049886 A KR20190049886 A KR 20190049886A KR 1020197011687 A KR1020197011687 A KR 1020197011687A KR 20197011687 A KR20197011687 A KR 20197011687A KR 20190049886 A KR20190049886 A KR 20190049886A
Authority
KR
South Korea
Prior art keywords
responses
user
word
image
implementations
Prior art date
Application number
KR1020197011687A
Other languages
English (en)
Other versions
KR102050334B1 (ko
Inventor
아리엘 퍽스만
비베크 라마바잘라
닝 예
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20190049886A publication Critical patent/KR20190049886A/ko
Application granted granted Critical
Publication of KR102050334B1 publication Critical patent/KR102050334B1/ko

Links

Images

Classifications

    • G06F17/2785
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • G06F17/276
    • G06F17/2881
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/216Parsing using statistical methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/274Converting codes to words; Guess-ahead of partial word inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/289Phrasal analysis, e.g. finite state techniques or chunking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • G06F40/35Discourse or dialogue representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/55Rule-based translation
    • G06F40/56Natural language generation
    • G06K9/481
    • 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/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • G06N3/0445
    • 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/045Combinations of networks
    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/20Scenes; Scene-specific elements in augmented reality scenes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/35Categorising the entire scene, e.g. birthday party or wedding scene

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)
  • Machine Translation (AREA)

Abstract

구현들은 수신되는 메시지들에 포함된 이미지들에 대한 자동적인 응답 제안들에 관한 것이다. 일부 구현들에서, 컴퓨터에서 구현되는 방법은, 제1 사용자에 의해 제1 메시지 내에서 포스팅된 이미지를 검출하는 단계, 및 이미지를 나타내는 특징 벡터를 결정하기 위해 이미지를 프로그래밍 방식으로(programmatically) 분석하는 단계를 포함한다. 방법은 특징 벡터에 기반하여 제1 메시지에 대한 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하고, 각각의 제안 응답은 제1 메시지에 대한 대화식 회답이다. 제안 응답들을 생성하는 단계는 이전 이미지들에 대한 이전 응답들을 이용하여 트레이닝된 모델을 사용하여 특징 벡터에 대해 워드 시퀀스들과 연관된 확률들을 결정하는 단계, 및 연관된 확률들에 기반하여 워드 시퀀스들 중 하나 이상을 선택하는 단계를 포함한다. 제안 응답들은 선택된 워드 시퀀스들에 기반하여 결정된다. 방법은, 제안 응답들이 하나 이상의 제안들로서 메시징 애플리케이션에서 제2 사용자에게 렌더링되게 한다.

Description

언어 모델을 사용한, 메시지들에서 수신되는 이미지들에 대한 자동적인 제안 응답들
[0001] 본 출원은 2017년 1월 25일자로 출원되고 발명의 명칭이 "AUTOMATIC SUGGESTED RESPONSES TO IMAGES RECEIVED IN MESSAGES USING LANGUAGE MODEL"인 미국 특허 출원 번호 제15/415,506호를 우선권으로 주장하며, 이 미국 특허 출원은 인용에 의해 그 전체가 본원에 포함된다.
[0002] 디지털 모바일 디바이스들의 인기와 편리성뿐만 아니라 인터넷 통신들의 광범위한 사용으로 인해 사용자 디바이스들 사이의 통신들이 유비쿼터스화되었다. 예컨대, 사용자들은 일반적으로 자신들의 디바이스들을 사용하여 텍스트 메시지들, 채팅 메시지들, 이메일 등으로 다른 사용자들에게 전자 메시지들을 전송한다. 사용자들은 다른 사용자들에게로의 메시지들에서 이미지들을 전송하여, 수신하는 사용자들에게 시각적 콘텐츠를 제공할 수 있다.
[0003] 본원에서 제공되는 배경 설명은 본 개시내용의 맥락을 일반적으로 제시하려는 목적을 위한 것이다. 본 출원에서 이름이 언급된 발명자들의 연구(work)는, 그 연구가 출원 당시 선행 기술로서 달리 자격을 갖추지 않을 수 있는 상세한 설명의 양상들뿐만 아니라 본 배경기술에 설명된 정도까지, 본 개시내용에 대한 선행 기술로서 명시적으로든 묵시적으로든 인정되지 않는다.
[0004] 본 출원의 구현들은 수신되는 메시지들에 포함된 이미지들에 대한 자동적인 응답 제안들에 관한 것이다. 일부 구현들에서, 컴퓨터에서 구현되는 방법은, 제1 사용자에 의해 제1 메시지 내에서 포스팅된(posted) 이미지를 검출하는 단계, 및 이미지를 나타내는 특징 벡터(feature vector)를 결정하기 위해 이미지를 프로그래밍 방식으로(programmatically) 분석하는 단계를 포함한다. 방법은 특징 벡터에 기반하여 제1 메시지에 대한 하나 이상의 제안 응답(suggested response)들을 프로그래밍 방식으로 생성하고, 하나 이상의 제안 응답들 각각은 제1 메시지에 대한 대화식 회답(conversational reply)이다. 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 단계는 이전 이미지들에 대한 이전 응답들을 이용하여 트레이닝된 모델을 사용하여 특징 벡터에 대해 워드 시퀀스(word sequence)들과 연관된 확률들을 결정하는 단계, 및 워드 시퀀스들과 연관된 확률들에 기반하여 워드 시퀀스들 중 하나 이상의 워드 시퀀스들을 선택하는 단계를 포함한다. 하나 이상의 제안 응답들은 하나 이상의 선택된 워드 시퀀스들에 기반하여 결정된다. 방법은 하나 이상의 제안 응답들이 하나 이상의 제안들로서 메시징 애플리케이션에서 제2 사용자에게 렌더링되게 한다.
[0005] 방법의 다양한 구현들 및 예들이 설명된다. 예컨대, 일부 구현들에서, 하나 이상의 제안 응답들을 제공하는 단계는 하나 이상의 제안 응답들을 메시징 애플리케이션에서 렌더링하기 위한 커맨드를 송신하는 단계를 포함한다. 일부 구현들에서, 확률들은 저장된 어휘(vocabulary) 내의 각각의 워드가 하나 이상의 워드 시퀀스들 중 하나의 워드 시퀀스 내에서 다음 워드가 될 확률을 포함하고, 하나 이상의 워드 시퀀스들을 선택하는 단계는 결정된 확률들 중 하나 이상의 가장 높은 확률들과 연관된 하나 이상의 워드 시퀀스들의 개수를 선택하는 단계를 포함한다. 일부 구현들에서, 모델은 컨디셔닝 언어 모델(conditioned language model)이고, 그리고 워드 시퀀스들과 연관된 확률들을 결정하는 단계는 특징 벡터를 컨디셔닝 언어 모델에 입력하는 단계를 포함한다. 일부 예들에서, 컨디셔닝 언어 모델은 LSTM(long-short term memory) 네트워크를 사용한다. 일부 구현들은 빔 탐색 기법(beam search technique)을 사용하여 하나 이상의 워드 시퀀스들을 선택한다. 일부 구현들에서, 하나 이상의 워드 시퀀스들 각각은 특징 벡터 및 워드 시퀀스 내에 포함된 워드 임베딩 인코딩 워드(word embedding encoding word)들로서 모델에 의해 사용된다.
[0006] 추가의 예시적인 구현들에서, 하나 이상의 워드 시퀀스들은 이전 응답들로부터 결정된 어휘 내의 복수의 워드들로부터 결정되고, 그리고 확률들을 결정하는 단계는 각각의 워드 시퀀스에 대해, 어휘 내의 각각의 워드가 워드 시퀀스 내에서 다음 워드가 될 확률을 반복적으로 결정하는 단계를 포함한다. 일부 예들에서, 이전 응답들은 이전 이미지들에 대한 더 큰 세트의 응답들로부터 선택되고, 이전 응답들은 그 더 큰 세트의 응답들의 다른 이전 응답들보다 이전 이미지들의 특정 콘텐츠에 대해 더 특정하다.
[0007] 추가의 예시적인 구현들에서, 모델은 컨디셔닝 언어 모델이고, 그리고 하나 이상의 워드 시퀀스들을 선택하는 단계는, 반복적으로, 특징 벡터 및 이전 워드 시퀀스를 컨디셔닝 언어 모델에 공급하여, 특징 벡터 및 이전 워드 시퀀스에 기반하여 새로운 워드 시퀀스들의 세트 및 새로운 워드 시퀀스들과 연관된 확률들을 결정하는 단계 ― 새로운 워드 시퀀스들 중 하나 이상은 이전 워드 시퀀스에 대해 적어도 하나의 추가의 워드를 가짐 ―; 및 새로운 워드 시퀀스들과 연관된 확률들에 기반하여 새로운 워드 시퀀스들의 세트의 서브세트를 선택하고 그리고 선택된 서브세트의 하나의 워드 시퀀스를 다음 반복을 위한 이전 워드 시퀀스로서 선택하는 단계를 포함한다.
[0008] 추가의 예시적인 구현들에서, 방법은, 제2 사용자가 제안 응답을 선택 시에, 제안 응답을 제1 메시지에 대한 메시지 응답으로서 포스팅하는 단계를 더 포함한다. 일부 구현들에서, 방법은 하나 이상의 워드 시퀀스들 각각이 워드 시퀀스들의 화이트리스트(whitelist)에 존재하는지 여부를 체크하는 단계를 더 포함하고, 선택된 하나 이상의 워드 시퀀스들은 화이트리스트 상에 존재한다. 일부 구현들은 제2 사용자에 의해 제공된 이전 메시지 응답과의 유사성에 기반하여 가중된 적어도 하나의 워드 시퀀스를 선택한다. 일부 구현들에서, 컨디셔닝 언어 모델은 제1 언어에 특정한 제1 컨디셔닝 언어 모델로서 제공되고, 그리고 방법은 제2 언어에 특정한 제2 컨디셔닝 언어 모델을 제공하는 단계, 제1 메시지가 수신되는 메시지 대화에 대한 언어가 제1 언어임을 결정하는 단계, 및 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 단계에서 제1 컨디셔닝 언어 모델이 사용되도록 선택하는 단계를 포함한다.
[0009] 일부 구현들에서, 시스템은 메모리, 및 메모리에 액세스하도록 구성되고 그리고 동작들을 수행하도록 구성된 적어도 하나의 프로세서를 포함하고, 그 동작들은 제1 사용자에 의해 제1 메시지 내에서 포스팅된 이미지를 검출하는 동작, 및 이미지를 나타내는 특징 벡터를 결정하기 위해 이미지를 프로그래밍 방식으로 분석하는 동작을 포함한다. 동작들은 특징 벡터에 기반하여 제1 메시지에 대한 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작을 포함하고, 하나 이상의 제안 응답들 각각은 제1 메시지에 대한 대화식 회답이고, 그리고 워드 시퀀스 내에 배열된 하나 이상의 워드들을 갖는다. 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작은, 하나 이상의 제안 응답들 중 각각의 제안 응답에 대해, 특징 벡터에 기반하여 그리고 워드 시퀀스 내의 하나 이상의 이전 워드들에 기반하여 워드 시퀀스 내에 배열된 하나 이상의 워드들 중 각각의 워드를 반복적으로 결정하는 동작을 포함한다. 동작들은 하나 이상의 제안 응답들이 하나 이상의 제안들로서 메시징 애플리케이션에서 제2 사용자에게 렌더링되게 하는 동작을 포함한다.
[0010] 시스템의 다양한 구현들 및 예들이 설명된다. 예컨대, 일부 구현들에서, 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작은 이전 이미지들에 대한 이전 응답들을 포함하는 데이터에 기반하여 하나 이상의 워드 시퀀스들과 연관된 확률들을 결정하는 동작을 포함한다. 일부 구현들에서, 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작은 하나 이상의 워드 시퀀스들과 연관된 확률들에 기반하여 하나 이상의 제안 응답들을 선택하는 동작을 포함한다. 일부 구현들에서, 워드 시퀀스들의 확률들을 결정하는 동작은 이전 이미지들에 대한 이전 응답들을 포함하는 데이터를 사용하여 트레이닝된 컨디셔닝 언어 모델을 사용하는 동작을 포함하고, 컨디셔닝 언어 모델은 입력으로서 수신된 특징 벡터에 의해 컨디셔닝되고, 그리고 LSTM(long-short term memory) 네트워크를 사용한다.
[0011] 일부 구현들에서, 비-일시적 컴퓨터 판독가능 매체에는 소프트웨어 명령들이 저장되고, 그 소프트웨어 명령들은 프로세서에 의해 실행될 때, 프로세서로 하여금, 동작들을 수행함으로써 제안 콘텐츠를 자동으로 제공하게 한다. 그 동작들은 이미지를 수신하는 동작 및 이미지를 나타내는 특징 벡터를 결정하기 위해 이미지를 프로그래밍 방식으로 분석하는 동작을 포함한다. 동작들은 특징 벡터에 기반하여 이미지에 대한 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작을 포함하고, 하나 이상의 제안 응답들 각각은 이미지에 대한 대화식 회답이고, 그리고 워드 시퀀스 내에 배열된 하나 이상의 워드들을 갖는다. 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작은, 하나 이상의 제안 응답들 중 각각의 제안 응답에 대해, 특징 벡터 및 워드 시퀀스 내의 하나 이상의 이전 워드들에 기반하여 워드 시퀀스 내에 배열된 하나 이상의 워드들 중 각각의 워드를 반복적으로 결정하는 동작을 포함한다. 동작들은 하나 이상의 제안 응답들이 하나 이상의 제안들로서 애플리케이션에서 사용자에게 렌더링되도록 출력하는 동작을 포함한다.
[0012] 컴퓨터 판독가능 매체의 다양한 구현들은, 예컨대, 제안 응답들이 메시징 애플리케이션에서 렌더링되는 것을 포함하고, 일부 구현들에서, 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작은, 이전 이미지들에 대한 이전 응답들을 포함하는 데이터에 기반하여 트레이닝되고 그리고 입력으로서 수신된 특징 벡터에 의해 컨디셔닝된 컨디셔닝 언어 모델을 사용하여 하나 이상의 제안 응답들과 연관된 확률들을 결정하는 동작 ― 컨디셔닝 언어 모델은 LSTM(long-short term memory) 네트워크를 사용함 ―; 및 하나 이상의 제안 응답들과 연관된 확률들에 기반하여 하나 이상의 제안 응답들을 선택하는 동작을 포함한다.
[001] 도 1은 본원에서 설명되는 하나 이상의 구현들에 사용될 수 있는 예시적인 시스템들 및 네트워크 환경의 블록도이고;
[002] 도 2는 일부 구현들에 따른, 이미지를 포함하는 메시지에 대한 제안 응답들을 제공하기 위한 예시적인 방법을 예시하는 흐름도이고;
[003] 도 3은 일부 구현들에 따른, 이미지를 나타내는 특징 벡터에 기반하여 하나 이상의 제안 응답들을 생성하기 위한 예시적인 방법을 예시하는 흐름도이고;
[004] 도 4는 일부 구현들에 따른, 하나 이상의 설명된 제안 응답 특징들을 구현할 수 있는 예시적인 모듈을 예시하는 블록도이고;
[005] 도 5는 일부 구현들에 따른, 컨디셔닝 언어 모델의 하나 이상의 특징들을 구현할 수 있는 아키텍처의 예를 예시하는 블록도이고;
[006] 도 6-11은 일부 구현들에 따른, 이미지들에 대한 결정된 제안 응답들의 예들을 예시하는 그래픽 일러스트레이션들이고; 그리고
[007] 도 12는 본원에서 설명되는 하나 이상의 구현들에 사용될 수 있는 예시적인 디바이스의 블록도이다.
[0013] 본원에서 설명되는 하나 이상의 구현들은 수신되는 메시지들에 포함된 이미지들에 대한 자동적인 응답 제안들에 관한 것이다. 일부 구현들에서, 메시징 애플리케이션에서 콘텐츠를 자동적으로 제안하는 것은 제1 사용자에 의해 메시지 내에서 포스팅된 이미지를 검출하는 것, 및 이미지를 나타내는 특징 벡터를 결정하기 위해 이미지를 프로그래밍 방식으로 분석하는 것을 포함한다. 특징 벡터는 메시지에 대한 하나 이상의 제안 응답들을 생성하는 데 사용되며, 제안 응답들은 제1 메시지에 대한 대화식 회답들이다. 예컨대, 일부 구현들에서, 컨디셔닝 언어 모델은 이전 이미지들에 대한 이전 응답들을 포함하는 트레이닝 데이터에 기반하여 특징 벡터에 대해 워드 시퀀스들과 연관된 확률들을 결정하도록 트레이닝된다. 워드 시퀀스들 중 하나 이상은 확률들에 기반하여 선택되고, 제안 응답들은 선택된 워드 시퀀스들에 기반한다. 제안 응답들은 출력되는데, 예컨대 하나 이상의 제안들로서 메시징 애플리케이션에서 제2 사용자에게 렌더링된다.
[0014] 다양한 특징들이 설명된다. 예컨대, 제안 응답들 각각은 워드 시퀀스 내에 배열된 하나 이상의 워드들을 가질 수 있고, 각각의 제안 응답에 대해, 워드 시퀀스의 각각의 워드는 특징 벡터에 기반하여 그리고 워드 시퀀스 내의 하나 이상의 이전 워드들에 기반하여 반복적으로 결정될 수 있다. 제안 응답들은 워드들이 워드 시퀀스들 내에서 다음 워드들이 될 확률들에 기반하여 선택될 수 있는데; 예컨대, 제안 응답들은, 시퀀스 내에서, 어휘의 워드들 중 그들의 컴포넌트 워드(component word)들일 확률들이 가장 높은 것으로 결정된 워드 시퀀스들일 수 있다. 예컨대, 하나 이상의 워드 시퀀스들은 트레이닝 데이터에 기반하는 어휘 내의 워드들의 세트, 예컨대 이전 메시지 이미지들 및 그러한 이미지들에 대한 이전 응답들을 포함하는 트레이닝 메시지 데이터의 세트로부터 획득된 워드들의 세트로부터 결정될 수 있다. 일부 예들에서, 트레이닝 데이터는, 트레이닝 데이터 내의 이전 응답들이, 필터링된 다른 이전 응답들보다 이전 이미지들의 특정 콘텐츠에 대해 더 특정하도록 필터링될 수 있다.
[0015] 다양한 예들에서, 컨디셔닝 언어 모델은 LSTM(long-short term memory) 네트워크를 사용할 수 있다. 워드 시퀀스들은 빔 탐색 기법을 사용하여 선택될 수 있다. 일부 예들에서, 시스템은 하나 이상의 워드 시퀀스들 각각이 워드 시퀀스들의 화이트리스트에 존재하는지 여부를 체크하여서, 화이트리스트 상에 존재하는 워드 시퀀스들이 제안 응답들이 되기에 적격(eligible)일 수 있다. 일부 구현들에서, 제안 응답들의 출력 후에, 제2 사용자가 제안 응답을 선택하는 경우, 선택된 제안 응답은 제1 메시지 및 이미지에 대한 메시지 응답으로서 제1 사용자에게 전송된다. 일부 구현들에서, 하나 이상의 워드 시퀀스들은, 현재-수신된 이미지와 유사한 이전 이미지를 수신한 것에 대한 응답으로 제2 사용자에 의해 제공된 이전 메시지 응답과의 유사성에 기반하여 제안 응답들로서의 선택을 위해 가중된다. 일부 구현들에서, 다수의 컨디셔닝 언어 모델들이 제공될 수 있으며, 각각의 언어 모델은 상이한 언어와 연관된다. 제1 메시지가 수신되는 메시지 대화의 검출된 언어에 기반하여 이미지에 대한 제안 응답들을 결정하기 위해, 특정 컨디셔닝 언어 모델이 선택될 수 있다. 일부 구현들에서, 하나 이상의 메시지 응답들은, 예컨대 획득된 이미지와 관련된 정보에 대한, 봇(bot)들에 대한 요청들 또는 커맨드들이도록 결정될 수 있다.
[0016] 본원에서 설명되는 하나 이상의 특징들은, 제안 응답들이, 메시지에서 수신된 이미지에 대한 응답으로 자동적으로 제공되는 것을 가능하게 하며, 제안 응답들은 수신된 이미지의 콘텐츠에 대한 메시지 응답들로서 적합하고 관련이 있다. 예컨대, 본원에서 설명되는 특징들은, 사용자가 메시지 응답들을 생성하는 것처럼, 이미지들 내의 특정 콘텐츠에 대한 적합한 반응들을 포함할 수 있는 제안 응답들을 제공할 수 있다. 이는, 사용자들이 메시지 대화들에서 자신들의 응답들을 결정하는 데 있어서 사용자들에게 더 융통성있는 옵션들을 제공하며, 다르게는 메시지에 적절히 응답할 수 없는 사용자에게 옵션들을 제공할 수 있다.
[0017] 예컨대, 메시지 대화 동안의 다양한 시간들에서, 사용자들은 수신된 메시지들에 대해 적절한 응답들로 응답하기에 충분한 주의(attention) 및/또는 집중(focus)을 제공하지 못할 수 있고, 그리고/또는 그러한 적절한 응답들을 생성하기 위한 상세한 사용자 입력을 사용자 디바이스에 제공하지 못할 수 있다. 일부 예들에서, 사용자는 활동을 수행중일 수 있거나, 또는 적합한 응답들이 가능하지 않거나 또는 사용자가 제공하기가 더 어려운 환경에 있을 수 있다. 본원에서 설명되는 하나 이상의 특징들은 유리하게, 이미지에 대한 응답으로 자동적인 메시지 제안들을 사용자에게 제공한다. 예컨대, 하나 이상의 자동적인 메시지 응답들은 사용자 디바이스들 사이의 메시징 대화에서 수신된 이미지에 기반하여 자동적으로 제안되고, 사용자는 단순히, 그 제안들로부터 대화에 포스팅하기 위한 원하는 응답을 선택할 수 있다. 메시지 제안들은 수신된 이미지와 관련이 있고, 사용자로 하여금 감소된 사용자 입력 및 감소된 시간으로 디바이스 상에서 응답들을 작성(compose)하여, 수신된 이미지들에 대해 단순하고 신속하게 응답하게 함으로써, 그렇지 않았다면, 가능한 응답들의 큰 세트를 디스플레이하는 데 필요했을 디바이스 자원들의 소비를 감소시키고 그리고/또는 사용자로부터 추가된 입력을 인에이블 및 프로세싱하여 응답들을 작성하거나, 제안 응답들을 철저하게 탐색하거나, 편집하거나 또는 완료하고 그리고/또는 전자 디바이스들을 통해 유지되는 대화들에 다른 방식으로 참여하는 데 필요한 디바이스 자원들의 소비를 감소시킨다. 결과적으로, 하나 이상의 설명된 구현들의 기술적 효과는, 디바이스에서 구현되는 대화들에서의 응답들의 생성 및 송신이, 결과들을 획득하는 데 있어서 더 적은 컴퓨테이셔널 시간 및 자원들의 소비로 달성되는 것이다. 예컨대, 설명되는 기법들 및 특징들의 기술적 효과는 설명된 기법들 또는 특징들 중 하나 이상을 제공하지 않는 시스템과 비교하여, 메시지 응답들을 디스플레이, 생성, 및 전송하는 데 활용되는 시스템 프로세싱 자원들의 소비를 감소시키는 것이다.
[0018] 종래의 기법들은, 예컨대, 이미지 내의 하나 이상의 오브젝트들 또는 특징들을 인식하는 것에 기반하여, 예컨대, 이미지가 사과를 포함함을 인식하는 것에 대한 응답으로, 이미지들에 대한 제안 응답들을 결정할 수 있고, 그러한 인식에 대응하는 제안 응답이 제공될 수 있다. 그러나, 많은 그러한 기법들은, 예컨대 어떤 오브젝트도 인식되지 않는 이미지들에 대해서는 제안을 제공하는 것에 실패할 수 있다. 또한, 이러한 기법들 중 일부는, 예컨대 오브젝트 인식이 오류이거나 또는 불완전한 경우, 부정확한 제안들을 제공할 수 있다. 부가적으로, 이미지에서 하나보다 많은 오브젝트, 예컨대 사과와 칼이 인식되는 경우, 그러한 기법들 중 일부는, 오브젝트들을 나열하는 단순한 응답들, 예컨대 "사과와 칼", 또는 사용자가 선택할 가능성이 없는 응답들을 생성할 수 있다.
[0019] 본원에서 설명되는 기법들은 이러한 그리고 다른 결함들을 극복한다. 예컨대, 본 기법들은 보다 더 다양한 그리고/또는 보다 고품질의 제안 응답(들)을 제공할 수 있다. 예컨대, 본원에서 설명되는 기법들은 획득된 이미지의 픽셀들로부터 직접적으로 결정된 이미지 특징 벡터를 트레이닝된 뉴럴 네트워크에 공급하여 응답들을 생성한다. 그러한 뉴럴 네트워크는, 이미지 내의 오브젝트들을 구체적으로 인식할 필요 없이, 임의의 타입의 이미지에 대한 응답들을 제공할 수 있다. 또한, 이미지 픽셀들에 기반하여 트레이닝된 모델의 사용은, 오브젝트들을 인식하고 그러한 오브젝트들과 연관된 미리 정의된 라벨들을 사용하는 것에 의존하는 기법들보다 응답들에 있어서 더 넓은 다양성을 허용할 수 있다. 예컨대, 일부 구현들에서, 어휘 ― 그 어휘로부터 제안 응답들의 워드들이 선택됨 ― 는 다수의 언어들로부터의 워드들, 사전에 있는 워드들이 아닐 수 있는 인간의 표현들(예컨대, "aww", "!!!" 등), 다른 타입들의 심볼들(예컨대, 이모지(emoji)들, 스티커(sticker)들 등), 상이한 이미지, 또는 조합을 포함할 수 있다. 부가적으로, 본원에서 설명되는 기법들은 사용자에 의해 선택될 가능성이 더 많은 응답 제안들을 제공할 수 있는데, 왜냐하면, 그 응답 제안들은 인식된 이미지 특징들에 기반하여 구성된 응답 제안들보다 더 자연스러울 수 있기 때문이다. 따라서, 설명되는 기법들 및 특징들의 다른 기술적 효과는, 설명되는 기법들 또는 특징들 중 하나 이상을 제공하지 않는 시스템, 예컨대, 잠재적으로 관련이 있는 제안 응답들의 더 큰 세트를 디스플레이하기 위해 그리고/또는 사용자가 송신할 응답들을 지정, 선택, 편집, 또는 생성하는 데 필요한 사용자로부터의 입력을 수신하기 위해 부가적인 컴퓨테이셔널 자원들을 필요로 하는 종래의 콘텐츠 인식 기법들을 사용하는 시스템과 비교하여, 메시지 응답들을 생성 및 전송하는 데 활용되는 시스템 프로세싱 자원들의 소비의 감소이다.
[0020] 설명된 기법들은 추가의 장점들을 제공한다. 예컨대, 일부 구현들에서 응답들의 화이트리스트의 사용은 특정 타입들의 응답들이 제안들로부터 제거되게 하여, 응답 제안들이 사용자에 의해 선택될 가능성이 더 높아지게 한다. 게다가, 일부 구현들에서, 본원에서 설명되는 기법들은 빔 탐색을 활용하는데, 빔 탐색은 유리하게, 컴퓨테이셔널 자원들의 감소된 사용으로, 이미지 특징 벡터에 기반하여 더 많은 수의 가능한 워드 시퀀스들을 평가(evaluate)할 수 있다. 일부 구현들에서, 설명된 기법들은, 이미지 특징 벡터에 기반하여, 이미지가 제안들을 제공하기에 적격이 아님을 결정할 수 있고, 응답들을 생성하기 위한 컴퓨테이셔널 단계들을 수행하지 않을 수 있고, 그에 따라, 컴퓨테이셔널 자원들을 절약할 수 있다. 사용자들이 그러한 데이터의 사용을 허가하는 일부 구현들에서, 언어 모델은 추가의 트레이닝 데이터 및 사용자 선택들에 기반하여, 예컨대 주기적으로 재트레이닝될(retrained) 수 있고, 따라서, 그러한 재트레이닝에 기반하여 개선된 제안들을 제공할 수 있다.
[0021] 본원에서 논의된 소정의 구현들이 사용자들에 관한 개인 정보(예컨대, 사용자 데이터, 사용자 소셜 네트워크에 관한 정보, 사용자의 위치 및 그 위치에서의 시간, 사용자의 생체인식 정보, 사용자의 활동들 및 인구학적 정보)를 수집하거나 사용할 수 있는 상황들에서, 사용자들에게는, 정보가 수집되는지 여부, 개인 정보가 저장되는지 여부, 개인 정보가 사용되는지 여부, 및 사용자에 관한 정보가 어떻게 수집되고, 저장되고, 사용되는지를 제어할 하나 이상의 기회들이 제공된다. 즉, 본원에서 논의된 시스템들 및 방법들은 관련이 있는 사용자들로부터 그렇게 하도록 명시적 인가를 수신할 때 특별히 사용자 개인 정보를 수집, 저장 및/또는 사용한다. 예컨대, 프로그램들 또는 특징들이 프로그램 또는 특징에 관련이 있는 다른 사용자들 또는 특정 사용자에 관한 사용자 정보를 수집할지 여부에 대한 제어가 사용자에게 제공된다. 개인 정보가 수집되어야 하는 각각의 사용자에게는, 정보가 수집되는지 여부에 관한 그리고 정보의 어느 부분들이 수집되어야 하는지에 관한 허가 또는 인가를 제공하도록, 그 사용자에 관련이 있는 정보 수집에 대한 제어를 가능하게 하는 하나 이상의 옵션들이 제시된다. 예컨대, 통신 네트워크를 통해 하나 이상의 그러한 제어 옵션들이 사용자들에게 제공될 수 있다. 게다가, 소정의 데이터는 그 소정의 데이터가 저장되거나 사용되기 전에, 개인 식별가능 정보가 제거되도록 하나 이상의 방식들로 처리될 수 있다. 일 예로서, 어떤 개인 식별가능 정보도 결정될 수 없도록, 사용자의 아이덴티티가 처리될 수 있다. 다른 예로서, 사용자의 특정 위치가 결정될 수 없도록, 사용자의 지리적 위치가 더 큰 구역으로 일반화될 수 있다.
[0022] 본원에서 언급되는 "이미지"는 하나 이상의 픽셀 값들(예컨대, 컬러 값들, 휘도 값들 등)을 갖는 픽셀들을 갖는 디지털 이미지이다. 이미지는 스틸 이미지 또는 단일 이미지일 수 있거나, 또는 일련의 이미지들, 예컨대 비디오 프레임들의 비디오 시퀀스 내의 프레임에 포함된 이미지, 또는 상이한 타입의 시퀀스 또는 애니메이션의 이미지들 내의 이미지일 수 있다. 예컨대, 본원에서 설명되는 구현들은 단일 이미지들, 비디오 시퀀스들의 이미지들, 또는 애니메이션화된 이미지들(예컨대, 시네마그래프(cinemagraph)들 또는 다른 애니메이션들)에 사용될 수 있다.
[0023] 도 1은, 자동적인 보조 에이전트들, 예컨대, 봇들을 인에이블하고 일부 실시예들에서는 이들을 제공하는 메시징 서비스들을 제공하기 위한 예시적인 환경(100)의 블록도를 예시한다. 예시적인 환경(100)은 메시징 서버(101), 하나 이상의 클라이언트 디바이스들(115a, 115n), 서버(135), 응답 제안 생성기(150), 및 네트워크(140)를 포함한다. 사용자들(125a-125n)은 개개의 클라이언트 디바이스들(115a, 115n)과 연관될 수 있다. 서버(135)는 예컨대, 메시징 서비스들을 제공하는 당사자(party)와는 상이한 당사자에 의해 제어되는 제3자(third-party) 서버일 수 있다. 다양한 구현들에서, 서버(135)는 아래에서 추가로 상세히 설명되는 바와 같이 봇 서비스들을 구현할 수 있다. 일부 구현들에서, 환경(100)은 도 1에 도시된 하나 이상의 서버들 또는 디바이스들을 포함하지 않을 수 있거나 또는 도 1에 도시되지 않은 다른 서버들 또는 디바이스들을 포함할 수 있다. 도 1 및 나머지 도면들에서, 참조 번호 뒤의 문자, 예컨대 "115a"는 그 특정 참조 번호를 갖는 엘리먼트에 대한 참조를 나타낸다. 후속 문자가 없는 텍스트의 참조 번호, 예컨대 "115"는 그 참조 번호를 갖는 엘리먼트의 구현들에 대한 일반적 참조를 나타낸다.
[0024] 예시된 구현에서, 메시징 서버(101), 클라이언트 디바이스들(115), 서버(135), 및 응답 생성기(150)는 네트워크(140)를 통해 통신가능하게 커플링된다. 다양한 구현들에서, 네트워크(140)는 유선 또는 무선인 종래의 타입일 수 있고, 스타 구성, 토큰 링 구성 또는 다른 구성들을 포함하는 많은 상이한 구성들을 가질 수 있다. 게다가, 네트워크(140)는 로컬 영역 네트워크(LAN; local area network), 광역 네트워크(WAN; wide area network)(예컨대, 인터넷) 및/또는 다수의 디바이스들이 통신할 수 있게 하는 다른 상호연결된 데이터 경로들을 포함할 수 있다. 일부 구현들에서, 네트워크(140)는 피어-투-피어 네트워크일 수 있다. 네트워크(140)는 또한, 다양한 상이한 통신 프로토콜들에서 데이터를 전송하기 위한 원격통신 네트워크의 부분들에 커플링되거나 이를 포함할 수 있다. 일부 구현들에서, 네트워크(140)는 단문 메시징 서비스(SMS; short messaging service), 멀티미디어 메시징 서비스(MMS; multimedia messaging service), 하이퍼텍스트 전송 프로토콜(HTTP; hypertext transfer protocol), 다이렉트 데이터 연결, 이메일 등을 통하는 것을 포함하여 데이터를 전송 및 수신하기 위해 Bluetooth® 통신 네트워크들, Wi-Fi® 또는 셀룰러 통신 네트워크를 포함한다. 도 1이 클라이언트 디바이스들(115), 메시징 서버(101), 및 서버(135)에 커플링된 하나의 네트워크(140)를 예시하지만, 실제로 하나 이상의 네트워크들(140)이 이러한 엔티티들에 커플링될 수 있다.
[0025] 메시징 서버(101)는 프로세서, 메모리 및 네트워크 통신 능력들을 포함할 수 있다. 일부 구현들에서, 메시징 서버(101)는 하드웨어 서버이다. 일부 구현에서, 메시징 서버(101)는 가상화된 환경에 삽입(implant)될 수 있는데, 예컨대, 메시징 서버(101)는 하나 이상의 다른 가상 기계들을 포함할 수 있는 하드웨어 서버 상에서 실행되는 가상 기계일 수 있다. 메시징 서버(101)는 신호 라인(102)을 통해 네트워크(140)에 통신가능하게 커플링된다. 신호 라인(102)은 유선 연결, 이를테면, 이더넷, 동축 케이블, 광섬유 케이블 등 또는 무선 연결, 이를테면, Wi-Fi, 블루투스 또는 다른 무선 기술일 수 있다. 일부 구현들에서, 메시징 서버(101)는 네트워크(140)를 통해 클라이언트 디바이스들(115a-115n), 서버(135), 응답 생성기(150), 및 봇(113) 중 하나 이상에 데이터를 전송하고 그로부터 데이터를 수신한다. 일부 구현들에서, 메시징 서버(101)는 사용자(예컨대, 사용자들(125) 중 임의의 사용자)가 다른 사용자들 및/또는 봇과 메시지들을 교환하는 것을 가능하게 하는 클라이언트 기능을 제공하는 메시징 애플리케이션(103a)을 포함할 수 있다. 메시징 애플리케이션(103a)은 서버 애플리케이션, 클라이언트-서버 애플리케이션의 서버 모듈, 또는 분산형 애플리케이션(예컨대, 하나 이상의 클라이언트 디바이스들(115) 상에 대응하는 클라이언트 메시징 애플리케이션(103b)이 있음)일 수 있다.
[0026] 메시징 서버(101)는 또한, 메시징 서버(101)를 통해 교환되는 메시지들, 하나 이상의 봇들의 데이터 및/또는 구성, 콘텐츠 분류기(130)에 의해 제공되는 정보, 및 하나 이상의 사용자들(125)과 연관된 사용자 데이터 모두를, 그러한 데이터를 저장하기 위한 개개의 사용자로부터의 명시적 허가 시에 저장할 수 있는 데이터베이스(199)를 포함할 수 있다. 일부 실시예들에서, 메시징 서버(101)는 하나 이상의 보조 에이전트들, 예컨대, 봇들(107a 및 111)을 포함할 수 있다. 다른 실시예들에서, 보조 에이전트들은 메시징 서버(101) 상에서가 아니라 클라이언트 디바이스들(115a-n) 상에 구현될 수 있다.
[0027] 메시징 애플리케이션(103a)은 사용자들(125) 및 하나 이상의 봇들(105, 107a, 107b, 109a, 109b, 111 및 113) 사이에서 메시지들의 교환을 가능하게 하기 위해 프로세서에 의해 동작가능한 코드 및 루틴들일 수 있다. 일부 구현들에서, 메시징 애플리케이션(103a)은 필드-프로그램가능 게이트 어레이(FPGA; field-programmable gate array) 또는 주문형 집적 회로(ASIC; application-specific integrated circuit)를 포함하는 하드웨어를 사용하여 구현될 수 있다. 일부 구현들에서, 메시징 애플리케이션(103a)은 하드웨어와 소프트웨어의 조합을 사용하여 구현될 수 있다.
[0028] 다양한 구현들에서, 클라이언트 디바이스들(115)과 연관된 개개의 사용자들이 메시지들의 저장에 대한 동의를 제공할 때, 데이터베이스(199)는 하나 이상의 클라이언트 디바이스들(115) 사이에서 교환되는 메시지들을 저장할 수 있다. 일부 구현들에서, 클라이언트 디바이스들(115)과 연관된 개개의 사용자들이 메시지들의 저장에 대한 동의를 제공할 때, 데이터베이스(199)는 하나 이상의 클라이언트 디바이스들(115)과 상이한 디바이스, 예컨대, 다른 클라이언트 디바이스, 메시징 서버(101), 및 서버(135) 등 상에 구현되는 하나 이상의 봇들 사이에서 교환되는 메시지들을 저장할 수 있다. 하나 이상의 사용자들이 동의를 제공하지 않는 구현들에서, 그러한 사용자들에 의해 수신되고 전송되는 메시지들은 저장되지 않는다.
[0029] 일부 구현들에서, 메시지들은, 예컨대 오직 메시지의 전송자와 수신자만이 암호화된 메시지들을 볼 수 있도록 암호화될 수 있다. 일부 구현들에서, 메시지들은 저장된다. 일부 구현들에서, 데이터베이스(199)는 하나 이상의 봇들, 예컨대 봇(107a), 봇(111) 등의 데이터 및/또는 구성을 추가로 저장할 수 있다. 일부 구현들에서, 사용자(125)가 사용자 데이터(이를테면, 소셜 네트워크 데이터, 연락처 정보, 이미지들 등)의 저장에 대한 동의를 제공한 경우, 데이터베이스(199)는 또한, 그러한 동의를 제공한 개개의 사용자(125)와 연관된 사용자 데이터를 저장할 수 있다.
[0030] 일부 구현들에서, 메시징 애플리케이션(103a/103b)은, 사용자(125)가 새로운 봇들을 생성하는 것을 가능하게 하는 사용자 인터페이스를 제공할 수 있다. 이러한 구현들에서, 메시징 애플리케이션(103a/103b)은, 사용자가 생성한 봇들이 메시징 애플리케이션(103a/103b)의 사용자들 사이의 대화들에 포함되는 것을 가능하게 하는 기능을 포함할 수 있다.
[0031] 응답 생성기(150)는, 프로세서, 메모리 및 네트워크 통신 능력들을 포함할 수 있다. 일부 구현들에서, 응답 생성기(150)는 하드웨어 서버이다. 응답 생성기(150)는 신호 라인(152)을 통해 네트워크(140)에 통신가능하게 커플링된다. 신호 라인(152)은 유선 연결, 이를테면, 이더넷, 동축 케이블, 광섬유 케이블 등, 또는 무선 연결, 이를테면, Wi-Fi, 블루투스 또는 다른 무선 기술일 수 있다. 일부 구현들에서, 응답 생성기(150)는 네트워크(140)를 통해 메시징 서버(101) 및 클라이언트 디바이스들(115a-115n) 중 하나 이상에 데이터를 전송하고 그로부터 데이터를 수신한다. 응답 생성기(150)가 하나의 서버인 것으로 예시되지만, 다수의 응답 생성기들(150)이 가능하다. 일부 구현들에서, 응답 생성기(150)는 환경(100)의 하나 이상의 다른 컴포넌트들, 예컨대 메시징 서버(101), 클라이언트 디바이스(115a), 서버(135), 콘텐츠 서버(154) 등에 포함될 수 있다.
[0032] 응답 생성기(150)는 특정 이미지에 대한 회답으로 하나 이상의 제안 응답들을 결정 및 제공한다. 예컨대, 제안 응답들은 메시징 서버(101) 및/또는 하나 이상의 클라이언트 디바이스들(115)의 메시징 애플리케이션에 제공될 수 있다. 응답 생성기는 기계 학습을 사용할 수 있는데, 예컨대 제안 응답들을 결정하기 위해 기계 학습을 활용하는 컨디셔닝 언어 모델을 사용할 수 있다. 예컨대, 응답 생성기는 메시징 애플리케이션 콘텍스트 내에서의 이미지들 및 그 이미지들에 대한 정확한, 실제, 및/또는 원하는 응답들의 트레이닝 데이터(예컨대, 메시지 트레이닝 데이터)를 사용하여 트레이닝될 수 있고, 이어서, 응답 생성기는 자신이 수신한 새로운 이미지들에 대한 응답들을 결정할 수 있다. 예컨대, 컨디셔닝 언어 모델은 합성 데이터, 예컨대, 사용자 정보를 사용하지 않고서 컴퓨터에 의해 자동적으로 생성된 데이터를 사용하여 트레이닝될 수 있다. 일부 구현들에서, 컨디셔닝 언어 모델은, 트레이닝을 위해 사용자 데이터를 활용하는 것에 대한 허가들이, 메시지 데이터를 제공하는 사용자들로부터 명시적으로 획득된 샘플 데이터, 예컨대 샘플 메시지 데이터에 기반하여 트레이닝될 수 있다. 예컨대, 샘플 데이터는 수신된 메시지들 및 그 수신된 메시지들에 대해 전송되었던 응답들을 포함할 수 있다. 샘플 데이터에 기반하여, 모델은 수신된 메시지들에 대한 응답들을 예측할 수 있고, 이어서, 그 응답들이 제안 응답들로서 제공될 수 있다. 일부 구현들에서, 응답 생성기(150)는, 응답들의 워드들이 반복적으로, 예컨대 한 번에 하나의 워드씩 결정되는 워드 시퀀스들로서 응답들을 결정하기 위해, LSTM(Long Short Term Memory) 네트워크를 사용할 수 있다.
[0033] 일부 구현들은 또한, 하나 이상의 특징들에 대해 검출된 이미지 특징들, 예컨대 제안 응답들의 랭킹들을 사용할 수 있다. 예컨대, 이미지 특징들은 사람들(사람들의 아이덴티티를 결정함이 없이), 동물들, 오브젝트들(예컨대, 물품들, 차량들 등), 특정 기념물들, 풍경 특징들(예컨대, 나뭇잎, 산들, 호수들, 하늘, 구름들, 일출 또는 일몰, 건물들, 다리들 등), 날씨 등을 포함할 수 있다. 이미지 특징들을 검출하기 위해, 다양한 이미지 인식 및 검출 기법들(예컨대, 트레이닝 이미지들에 기반하는 기계 학습, 참조 이미지들 내의 참조 특징들과의 비교 등)이 사용될 수 있다.
[0034] 응답 생성기(150)는 메시징 서버(101)를 관리하는 동일한 당사자(same party)에 의해 관리될 수 있거나, 또는 제3자(third-party)에 의해 관리될 수 있다. 일부 구현들에서, 응답 생성기(150)는 봇들을 호스팅(host)한다. 봇들은 제안들을 제공하기 위한 특정 기능들을 수행하는 컴퓨터 프로그램들일 수 있는데, 예컨대, 예약 봇(reservation bot)은 예약들을 수행하고, 자동-회답 봇(auto-reply bot)은 회답 메시지 텍스트를 생성하고, 스케줄링 봇(scheduling bot)은 캘린더 약속들을 자동적으로 스케줄링하는 식이다. 응답 생성기(150)는 제안 응답들로서 하나 이상의 봇들을 메시징 애플리케이션(103)에 제공하거나 참조할 수 있다. 예컨대, 봇에 대한 코드는 메시징 애플리케이션(103)에 통합될 수 있거나, 또는 메시징 애플리케이션(103)은 응답 생성기(150)에서 구현된 봇에 대한 요청들을 전송할 수 있다. 일부 구현들에서, 메시징 애플리케이션(103)은, 응답 생성기(150)에 봇 커맨드들을 제공하고 봇 커맨드들에 기반하여 제안들을 수신함으로써, 사용자(125)와 응답 생성기(150) 사이에서 중개자(intermediary)로서 역할을 한다.
[0035] 일부 구현들에서, 콘텐츠 서버(154)가, 예컨대 하드웨어 서버로서 환경(100)에서 제공될 수 있고, 프로세서, 메모리 및 네트워크 통신 능력들을 포함할 수 있다. 콘텐츠 서버(154)는 하나 이상의 네트워크 연결들(156)을 통해 네트워크(140)에 커플링될 수 있다. 일부 구현들에서, 콘텐츠 분류기는 메시징 애플리케이션(103)에 정보를 제공할 수 있다. 예컨대, 콘텐츠 서버(154)는 전자 백과사전, 지식 그래프, 하나 이상의 데이터베이스들, 소셜 네트워크 애플리케이션(예컨대, 소셜 그래프(social graph), 친구들을 위한 소셜 네트워크, 사업체를 위한 소셜 네트워크 등), 장소 또는 위치(예컨대, 식당, 자동차 대리점 등)에 대한 웹사이트, 맵핑 애플리케이션(예컨대, 방향들을 제공하는 웹사이트) 등을 유지할 수 있다. 예컨대, 콘텐츠 서버(154)는 메시징 애플리케이션(103)으로부터 정보에 대한 요청을 수신하고, 탐색을 수행하고, 그리고 그 요청에 따라 정보를 제공할 수 있다. 일부 구현들에서, 콘텐츠 서버(154)는 이미지들 내의 특정 타입들의 콘텐츠의 분류기들을 포함할 수 있고, 이미지의 콘텐츠(예컨대, 픽셀들)에서 특정 클래스들 중 임의의 특정 클래스가 검출되는지 여부를 결정할 수 있다. 일부 예들에서, 메시징 애플리케이션(103)은 콘텐츠 서버(154)에 의해 액세스되는 맵핑 애플리케이션에게 드라이빙 방향들 또는 추정된 도착 시간을 요청할 수 있다.
[0036] 일부 구현들에서, 사용자가 그러한 데이터의 사용에 동의하는 경우, 콘텐츠 서버(154)는, 메시징 애플리케이션(103)이 대응하는 소셜 네트워크 프로파일을 이용하여 이미지 내의 사람을 식별하기 위해 사용할 수 있는 사용자의 프로파일 정보 또는 프로파일 이미지들을 메시징 애플리케이션(103)에 제공할 수 있다. 다른 예에서, 콘텐츠 서버(154)는, 제공된 사용자 데이터에 대한 사용자 동의가 획득된 경우, 메시징 애플리케이션(103)에 의해 사용되는 메시지들에서 식별되는 엔티티들과 관련된 정보를 메시징 애플리케이션(103)에 제공할 수 있다. 예컨대, 콘텐츠 서버(154)는, 이미지들에서 식별된 랜드마크들에 관한 정보를 제공하는 전자 백과사전, 메시지들에서 식별되는 구매 엔티티들에 대한 정보를 제공하는 전자 쇼핑 웹사이트, 메시지에서 식별되는 사용자로부터의 여행 일정표를 사용자 동의 하에 제공하는 전자 캘린더 애플리케이션, 메시지 내의 엔티티가 방문될 수 있는 인근 위치들에 관한 정보를 제공하는 맵핑 애플리케이션, 메시지에서 언급된 요리가 서빙되는 식당에 대한 웹사이트 등을 포함하거나 액세스할 수 있다. 일부 구현들에서, 콘텐츠 서버(154)는 정보를 획득하기 위해 응답 생성기(150)와 통신할 수 있다. 콘텐츠 서버(154)는 요청된 정보를 응답 생성기(150)에 제공할 수 있다.
[0037] 일부 구현들에서, 응답 생성기(150) 및/또는 콘텐츠 서버(154)는, 예컨대 이러한 모듈들에 의해 사용되거나 유지되는 데이터베이스들을 업데이트하기 위해, 메시징 애플리케이션(103)으로부터 정보를 수신할 수 있다. 예컨대, 콘텐츠 서버(154)가 식당에 관한 웹사이트를 유지하는 경우, 메시징 애플리케이션(103)은 식당에 관한 업데이트된 정보, 이를테면, 그 식당에서 사용자가 좋아하는 요리를 콘텐츠 서버(154)에 제공할 수 있다.
[0038] 클라이언트 디바이스(115)는, 메모리 및 하드웨어 프로세서를 포함하는 컴퓨팅 디바이스, 예컨대, 카메라, 랩톱 컴퓨터, 태블릿 컴퓨터, 모바일 텔레폰, 웨어러블 디바이스, 모바일 이메일 디바이스, 휴대가능 게임 플레이어, 휴대가능 뮤직 플레이어, 판독기 디바이스, 머리 장착형 디스플레이, 또는 네트워크(140)에 무선으로 액세스할 수 있는 다른 전자 디바이스일 수 있다.
[0039] 예시된 구현에서, 클라이언트 디바이스(115a)는 신호 라인(108)을 통해 네트워크(140)에 커플링되고, 클라이언트 디바이스(115n)는 신호 라인(110)을 통해 네트워크(140)에 커플링된다. 신호 라인들(108 및 110)은 유선 연결들, 예컨대, 이더넷 또는 무선 연결들, 이를테면, Wi-Fi, 블루투스, 또는 다른 무선 기술일 수 있다. 클라이언트 디바이스들(115a, 115n)은 사용자들(125a, 125n)에 의해 각각 액세스된다. 도 1의 클라이언트 디바이스들(115a, 115n)은 예로서 사용된다. 도 1이 2개의 클라이언트 디바이스들(115a 및 115n)을 예시하지만, 본 개시내용은 하나 이상의 클라이언트 디바이스들(115)을 갖는 시스템 아키텍처에 적용된다.
[0040] 일부 구현들에서, 클라이언트 디바이스(115)는, 사용자(125)에 의해 착용되는 웨어러블 디바이스일 수 있다. 예컨대, 클라이언트 디바이스(115)는, 클립(예컨대, 손목밴드)의 일부, 장신구의 일부, 또는 안경의 일부로서 포함될 수 있다. 다른 예에서, 클라이언트 디바이스(115)는 스마트워치일 수 있다. 다양한 구현들에서, 사용자(125)는 디바이스의 디스플레이를 통해 메시징 애플리케이션(103a/103b)으로부터의 메시지들을 볼 수 있고, 디바이스의 스피커 또는 다른 출력 디바이스를 통해 메시지들에 액세스할 수 있는 식이다. 예컨대, 사용자(125)는 스마트워치 또는 스마트 손목밴드의 디스플레이를 통해 메시지들을 볼 수 있다. 다른 예에서, 사용자(125)는, 클라이언트 디바이스(115)에 커플링되거나 그 일부인 헤드폰들(도시되지 않음), 클라이언트 디바이스(115)의 스피커, 클라이언트 디바이스(115)의 햅틱 피드백 엘리먼트 등을 통해 메시지들에 액세스할 수 있다.
[0041] 일부 구현들에서, 메시징 애플리케이션(103b)은 클라이언트 디바이스(115a) 상에 저장된다. 일부 구현들에서, 메시징 애플리케이션(103b)(예컨대, 씬-클라이언트(thin-client) 애플리케이션, 클라이언트 모듈 등)은 클라이언트 디바이스(115a) 상에 저장된 클라이언트 애플리케이션일 수 있으며, 대응하는 메시징 애플리케이션(103a)(예컨대, 서버 애플리케이션, 서버 모듈 등)은 메시징 서버(101) 상에 저장된다. 예컨대, 메시징 애플리케이션(103b)은, 클라이언트 디바이스(115a) 상에서 사용자(125a)에 의해 생성되는 메시지들을 메시징 서버(101) 상에 저장된 메시징 애플리케이션(103a)에 송신할 수 있다.
[0042] 일부 구현들에서, 메시징 애플리케이션(103a)은 메시징 서버(101) 상에 저장된 독립형 애플리케이션일 수 있다. 사용자(125a)는 클라이언트 디바이스(115a) 상의 브라우저 또는 다른 소프트웨어를 사용하여 웹 페이지를 통해 메시징 애플리케이션(103a)에 액세스할 수 있다. 일부 구현들에서, 클라이언트 디바이스(115a) 상에 구현되는 메시징 애플리케이션(103b)은, 메시징 서버(101) 상에 포함되는 것들과 동일하거나 유사한 모듈들을 포함할 수 있다. 일부 구현들에서, 메시징 애플리케이션(103b)은, 예컨대 피어-투-피어 구성으로, 또는 하나 이상의 클라이언트 디바이스들(115)이 다른 클라이언트 디바이스들(115)과의 메시지들의 교환을 가능하게 하는 기능을 포함하는 다른 구성으로, 독립형 클라이언트 애플리케이션으로서 구현될 수 있다. 이러한 구현들에서, 메시징 서버(101)는 제한된 메시징 기능(예컨대, 클라이언트 인증, 백업 등)을 포함하거나 메시징 기능을 포함하지 않을 수 있다. 일부 구현들에서, 메시징 서버(101)는 하나 이상의 봇들, 예컨대 봇(107a) 및 봇(111)을 구현할 수 있다.
[0043] 서버(135)는, 프로세서, 메모리, 및 네트워크 통신 능력들을 포함할 수 있다. 일부 구현들에서, 서버(135)는 하드웨어 서버이다. 서버(135)는 신호 라인(128)을 통해 네트워크(140)에 통신가능하게 커플링된다. 신호 라인(128)은 유선 연결, 이를테면, 이더넷, 동축 케이블, 광섬유 케이블 등 또는 무선 연결, 이를테면, Wi-Fi, 블루투스, 또는 다른 무선 기술일 수 있다. 일부 구현들에서, 서버(135)는 네트워크(140)를 통해 클라이언트 디바이스들(115) 및 메시징 서버(101) 중 하나 이상에 데이터를 전송하고 그로부터 데이터를 수신한다. 서버(135)가 하나의 서버인 것으로 예시되어 있지만, 다양한 구현들은 하나 이상의 서버들(135)을 포함할 수 있다. 서버(135)는 서버 애플리케이션들 또는 서버 모듈들로서 하나 이상의 봇들, 예컨대 봇(109a) 및 봇(113)을 구현할 수 있다.
[0044] 다양한 구현들에서, 서버(135)는, 메시징 서버(101)를 관리하는 동일한 엔티티, 예컨대 메시징 서비스들의 제공자의 일부일 수 있다. 일부 구현들에서, 서버(135)는, 예컨대 메시징 애플리케이션(103a/103b)을 제공하는 엔티티와 상이한 엔티티에 의해 제어되는 제3자 서버일 수 있다.
[0045] 일부 구현들에서, 서버(135)는 봇들을 제공하거나 호스팅한다. 봇은, 예컨대 메시징 애플리케이션(103a/103b)을 통해, 주로 텍스트를 통하여 사용자들이 상호작용하는, 하나 이상의 컴퓨터들 상에 구현되는 자동화된 서비스이다. 봇들은 아래에서 더 상세하게 설명된다.
[0046] 일부 구현들에서, 메시징 애플리케이션(103a/103b)은, 사용자 인터페이스를 통해, 예컨대 버튼 또는 다른 사용자 인터페이스 엘리먼트로서 하나 이상의 제안들, 예컨대 제안 응답들을 사용자들(125)에게 제공할 수 있다. 제안 응답들은, 예컨대, 사용자가 응답을 타이핑할 필요성을 감소시키거나 또는 제거함으로써, 더 신속한 상호작용을 가능하게 할 수 있다. 제안 응답들은, 예컨대, 클라이언트 디바이스가 텍스트 입력 기능이 없을 때(예컨대, 키보드 또는 마이크로폰을 포함하지 않는 스마트워치), 사용자들이 신속하게 그리고 용이하게 메시지에 응답하는 것을 가능하게 할 수 있다. 제안 응답들은 또한, 예컨대, 사용자가 (예컨대, 터치스크린 상의 대응하는 사용자 인터페이스 엘리먼트를 선택함으로써) 제안 응답을 선택할 때, 사용자들이 메시지들에 신속하게 응답하는 것을 가능하게 할 수 있다. 제안 응답들은 응답들을 생성하도록 트레이닝된 예측 모델들, 예컨대 기계 학습 모델들을 사용하여 생성될 수 있다.
[0047] 예컨대, 메시징 애플리케이션(103a/103b)은, 메시징 애플리케이션(103)과의 사용자 상호작용을 향상시킬 수 있는 기계 학습, 예컨대, 심층 학습 모델을 구현할 수 있다. 예컨대, 응답 생성기(150)는 메시징 애플리케이션(103a/103b)에 제안들을 제공하기 위해 기계 학습을 활용할 수 있다. 일부 구현들에서, 기계 학습은, 예컨대 응답 생성기(150)를 사용함이 없이, 환경(100)의 하나 이상의 다른 컴포넌트들 상에서 구현될 수 있다. 기계-학습 모델들은 합성 데이터, 예컨대, 사용자 정보를 사용하지 않고서 컴퓨터에 의해 자동적으로 생성된 데이터를 사용하여 트레이닝될 수 있다. 일부 구현들에서, 기계-학습 모델들은, 예컨대 샘플 데이터 ― 샘플 데이터에 대해 트레이닝을 위해 사용자 데이터를 활용하는 것에 대한 허가들이 사용자들로부터 명확히 획득되었음 ― 에 기반하여 트레이닝될 수 있다. 예컨대, 샘플 데이터는 수신된 메시지들 및 그 수신된 메시지들에 대해 전송되었던 응답들을 포함할 수 있다. 샘플 데이터에 기반하여, 기계-학습 모델은 수신된 메시지들에 대한 응답들을 예측할 수 있고, 이어서, 그 응답들이 제안 응답들로서 제공될 수 있다. 사용자 상호작용은, 예컨대, 수신된 메시지 및 사용자의 콘텍스트에 기반하여 커스터마이징된 응답들의 선정을 제공하여, 수신된 메시지에 대한 응답을 작성하기 위한 사용자에 대한 부담을 감소시킴으로써 향상된다. 예컨대, 사용자들이 동의를 제공한 경우, 제안 응답들은 사용자의 이전 활동, 예컨대, 대화에서의 조기의(earlier) 메시지들, 상이한 대화들에서의 메시지들 등에 기반하여 커스터마이징될 수 있다. 예컨대, 그러한 활동은 사용자의 상호작용 스타일에 기반하여 사용자에 대한 적합한 제안 응답, 예컨대, 재미있는 응답, 공식적인 응답 등을 결정하는 데 사용될 수 있다. 다른 예에서, 사용자가 하나 이상의 선호하는 언어들 및/또는 로케일(locale)들을 특정하는 경우, 메시징 애플리케이션(103a/103b)은 제안 응답들을 사용자의 선호하는 언어로 생성할 수 있다. 다양한 예들에서, 제안 응답들은 텍스트 응답들, 이미지들, 멀티미디어 등일 수 있다.
[0048] 일부 구현들에서, 이를테면, 컨디셔닝 언어 모델을 사용하는 기계 학습은 응답 생성기(150) 상에서, 그리고/또는 메시징 서버(101) 상에서, 클라이언트 디바이스들(115) 상에서, 메시징 서버(101)와 클라이언트 디바이스들(115) 둘 모두 상에서 등으로 구현될 수 있다. 일부 구현들에서, 간단한 기계 학습 모델은 (예컨대, 클라이언트 디바이스들의 메모리, 저장소, 및 프로세싱 제약들 내에서 모델의 동작을 허가하기 위해) 클라이언트 디바이스(115) 상에서 구현될 수 있고, 복잡한 기계 학습 모델은 메시징 서버(101) 및/또는 응답 생성기(150) 상에서 구현될 수 있다. 만약 사용자가 기계 학습 기법들의 사용에 대한 동의를 제공하지 않는다면, 이러한 기법들은 구현되지 않는다. 일부 구현들에서, 사용자는 선택적으로, 기계 학습이 클라이언트 디바이스(115) 상에서만 구현되는 것에 대한 동의를 제공할 수 있다. 이러한 구현들에서, 기계 학습은 클라이언트 디바이스(115) 상에서 구현될 수 있어서, 기계 학습 모델 또는 그 기계 학습 모델에 의해 사용되는 사용자 정보에 대한 업데이트들이 로컬로 저장되거나 사용되고, 다른 디바이스들, 이를테면, 메시징 서버(101), 서버(135), 또는 다른 클라이언트 디바이스들(115)에는 공유되지 않는다.
[0049] 예컨대, 기계-학습 기법들에 기반하여 제안들을 수신하는 것에 대한 동의를 제공하는 사용자들에 대해, 제안들은 메시징 애플리케이션(103)에 의해 제공될 수 있다. 예컨대, 제안들은 콘텐츠(예컨대, 영화들, 책들 등), 스케줄들(예컨대, 사용자의 캘린더 상에서 이용가능한 시간), 이벤트들/장소들(예컨대, 식당들, 콘서트들 등) 등의 제안들을 포함할 수 있다. 일부 구현들에서, 대화에 참여한 사용자들이 대화 데이터의 사용에 대한 동의를 제공하는 경우, 제안들은 대화 콘텐츠에 기반하는 착신 메시지들에 대한 제안 응답들을 포함할 수 있다. 예컨대, 대화 콘텐츠에 기반하는 제안들에 동의한 2명의 사용자들 중 제1 사용자가 "do you want to grab a bite? How about Italian?"라는 메시지를 전송한 경우, 예컨대 "@assistant lunch, italian, table for 2"라는 응답이 제2 사용자에게 제안될 수 있다. 이러한 예에서, 제안 응답은 봇(심볼 @ 및 봇 핸들 assistant에 의해 식별됨)을 포함한다. 제2 사용자가 이러한 응답을 선택하는 경우, assistant 봇이 대화에 추가되고, 메시지는 봇에 전송된다. 이어서, 봇으로부터의 응답이 대화에 디스플레이될 수 있고, 2명의 사용자들 중 어느 하나는 추가의 메시지들을 봇으로 전송할 수 있다. 이러한 예에서, assistant 봇에는 대화의 콘텐츠에 대한 액세스가 제공되지 않고, 제안 응답들은 메시징 애플리케이션(103)에 의해 생성된다.
[0050] 소정의 구현들에서, 제안 응답의 콘텐츠는, 봇이 대화에 이미 존재하는지 또는 대화에 통합될 수 있는지에 기반하여 커스터마이징될 수 있다. 예컨대, 만약 여행 봇(travel bot)이 메시징 앱에 통합될 수 있음이 결정된다면, 프랑스행 비행 티켓들의 비용에 관한 질의에 대한 제안 응답은 "Let's ask travel bot!"일 수 있다.
[0051] 상이한 구현들에서, 본원에서 설명되는 제안들, 예컨대, 제안 응답들은: 텍스트(예컨대, "Terrific!"), 이모지(예컨대, 웃는 얼굴, 졸린 얼굴 등), 이미지들(예컨대, 사용자의 사진 라이브러리로부터의 사진들), 템플릿의 필드에 사용자 데이터가 삽입된 템플릿들에 기반하여 생성된 텍스트(예컨대, "her number is <Phone Number>", 여기서 만약 사용자가 사용자 데이터에 대한 액세스를 제공한다면, "Phone Number" 필드는 사용자 데이터에 기반하여 채워짐), 링크들(예컨대, URL(Uniform Resource Locator)들), 메시지 스티커들 등 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 제안 응답들은, 예컨대, 컬러들, 폰트들, 레이아웃 등을 사용하여 포맷되고 그리고/또는 스타일링될 수 있다. 예컨대, 영화 추천을 포함하는 제안 응답은 영화에 관한 설명 텍스트, 영화로부터의 이미지, 및 티켓들을 구매하기 위한 링크를 포함할 수 있다. 상이한 구현들에서, 제안 응답들은 상이한 타입들의 사용자 인터페이스 엘리먼트들, 예컨대, 텍스트 박스들, 정보 카드들 등으로서 제시될 수 있다.
[0052] 다양한 구현들에서, 사용자들에게는, 자신들이 제안 응답들을 수신하는지 여부, 자신들이 어떠한 타입들의 제안 응답들을 수신하는지, 제안 응답들의 빈도 등에 걸친 제어가 제공된다. 예컨대, 사용자들은, 제안 응답들 모두를 수신하기를 거부할 수 있거나, 또는 특정 타입들의 제안 응답들을 선정하거나 또는 하루 중 소정의 시간들 동안에만 제안 응답들을 수신하기로 선정할 수 있다. 다른 예에서, 사용자들은 개인화된 제안 응답들을 수신하기로 선정할 수 있다. 이러한 예에서, 기계 학습은 기계 학습 기법들의 사용 및 그들의 데이터의 사용과 관련된 사용자의 선호도들에 기반하여 제안 응답들을 제공하는 데 사용될 수 있다.
[0053] 도 2는 일부 구현들에 따른, 이미지를 포함하는 메시지에 대한 제안 응답들을 제공하기 위한 예시적인 방법(200)을 예시하는 흐름도이다. 일부 구현들에서, 방법(200)은, 예컨대 도 1에 도시된 바와 같은 서버 시스템(102), 예컨대 메시징 서버(101) 상에서 구현될 수 있다. 일부 구현들에서, 방법(200)의 일부 또는 전부는 시스템, 이를테면, 도 1에 도시된 바와 같은 하나 이상의 클라이언트 디바이스들(115) 상에서 그리고/또는 서버 시스템 및 하나 이상의 클라이언트 시스템들 둘 모두 상에서 구현될 수 있다. 설명된 예들에서, 구현 시스템은 하나 이상의 프로세서들 또는 프로세싱 회로, 및 하나 이상의 저장 디바이스들, 이를테면, 데이터베이스 또는 다른 액세스가능 저장소를 포함한다. 일부 구현들에서, 하나 이상의 서버들 및/또는 클라이언트들의 상이한 컴포넌트들이 방법(200)의 상이한 블록들 또는 다른 부분들을 수행할 수 있다.
[0054] 블록(202)에서, 방법(200)의 구현에서(그리고 아래에서 설명되는 도 3의 방법(300)에서의 사용자 데이터의 사용을 포함하여) 사용자 데이터를 사용하는 것에 대한 사용자 동의(예컨대, 사용자 허가)가 획득되었는지 여부가 체크된다. 예컨대, 사용자 데이터는, 예컨대 메시징 애플리케이션(103)을 사용하여 사용자에 의해 전송 또는 수신되는 메시지들, 사용자 선호도들, 사용자 생체인식 정보, 사용자 특성들(아이덴티티, 이름, 나이, 성별, 직업 등), 사용자의 소셜 네트워크 및 연락처들에 관한 정보, 사회적 및 다른 타입들의 행위들 및 활동들, 사용자에 의해 생성되거나 진술된 콘텐츠, 평가(rating)들, 및 의견들, 사용자의 현재 위치, 이력적(historical) 사용자 데이터, 사용자에 의해 생성되고, 수신되고, 그리고/또는 액세스된 이미지들, 사용자가 보거나 공유한 비디오들 등을 포함할 수 있다. 본원에서 설명되는 방법들의 하나 이상의 블록들은 일부 구현들에서 그러한 사용자 데이터를 사용할 수 있다.
[0055] 방법(200)에서 사용될 수 있는 사용자 데이터에 대해 관련이 있는 사용자들로부터 사용자 동의가 획득된 경우, 블록(204)에서, 본원의 방법들의 블록들은 그러한 블록들에 대해 설명된 바와 같이 사용자 데이터의 가능한 사용으로 구현될 수 있다는 것이 결정되며, 방법은 블록(210)으로 계속된다. 사용자 동의가 획득되지 않은 경우, 블록들이 사용자 데이터의 사용 없이 구현되어야 한다는 것이 블록(206)에서 결정되며, 방법은 블록(210)으로 계속된다. 일부 구현들에서, 사용자 동의가 획득되지 않은 경우, 블록들은 사용자 데이터를 사용함이 없이, 합성 데이터 및/또는 일반적인 또는 공개적으로 액세스가능하고 공개적으로 사용가능한 데이터를 이용하여 구현되어야 한다.
[0056] 본원에서 설명되는 구현들은 이미지에 기반하여 메시지 제안들을 제공할 수 있다. 메시지 제안들은 다양한 콘텍스트들에서 제공될 수 있다. 예컨대, 메시지 제안들은, 예컨대 메시징 애플리케이션(103)에 의해 사용자 디바이스들(115) 중 임의의 사용자 디바이스(115)로부터 특정 사용자(예컨대, 사용자(125a))의 클라이언트 디바이스(115a) 상에서 이미지를 수신하는 것에 대한 응답으로 제공될 수 있다. 예컨대, 메시징 애플리케이션(103)은 인스턴트 메시징 애플리케이션, 소셜 네트워크 애플리케이션, 이메일 애플리케이션, 멀티미디어 메시징 애플리케이션 등일 수 있다. 이미지를 전송하고 그리고/또는 수신하는 특정 사용자와 하나 이상의 다른 사용자들로부터의 동의 시에, 메시지 제안들이 생성되어 특정 사용자에게 자동적으로 제공될 수 있다. 예컨대, 메시징 애플리케이션이 인스턴트 메시징 애플리케이션인 경우, 이미지는, 예컨대 2명의 참여자들이 있는 메시징 세션(예컨대, 채팅), 2명보다 많은 참여자들을 포함하는 그룹 메시징 세션 등에서, 특정 사용자(125a)와 하나 이상의 다른 사용자들(125) 사이의 인스턴트 메시징 통신의 부분으로서 수신될 수 있다. 다양한 구현들에서, 사용자들 중 하나 이상은 봇들일 수 있다. 일부 구현들에서, 봇들은 소프트웨어 및/또는 하드웨어로 구현되는 자동화된 에이전트들일 수 있다. 일부 구현들에서, 봇들은 카메라들(예컨대, 보안 카메라들, 웹 카메라들, 감시 카메라들 등), 기기들(예컨대, 스마트 냉장고, 알람 디바이스, 산업 기기 등), 이미징 디바이스들(예컨대, 현미경들, 의료 이미징 디바이스들 등)을 나타내거나 연관될 수 있고, 메시징 애플리케이션(103)을 통해 하나 이상의 이미지들을 전송할 수 있다. 사용자들 중 봇들인 하나 이상의 사용자들을 포함하는 구현들에서, 봇에 의해 생성된 메시지들을 사용하기 위해 봇의 소유자 또는 오퍼레이터로부터 동의가 획득된다. 일부 구현들에서, 동의는 봇, 카메라, 기기 등의 구성 파라미터로서 특정될 수 있고, 봇이 메시징 애플리케이션(103)과 상호작용 시에 메시징 애플리케이션(103)에 제공될 수 있다.
[0057] 일부 구현들에서, 메시지 제안들은 사용자 데이터에 액세스하는 것에 대한 동의를 제공한 그러한 사용자들에게 특정하게 제공될 수 있다. 일부 구현들에서, 메시지 제안들은 자동적으로 또는 사용자 입력에 기반하여 제공될 수 있는데, 예컨대 사용자는 제안들을 요청하기 위한 사용자 인터페이스를 제공받을 수 있다.
[0058] 블록(208)에서, 컨디셔닝 언어 모델이 트레이닝된다. 예컨대, 이 블록은 방법(200)의 다른 블록들을 수행하는 동일한 또는 상이한 시스템에 의해 전처리 단계로서 수행될 수 있고, 방법(200)의 다른 블록들과 상이한 시점에서 수행될 수 있다. 컨디셔닝 언어 모델은 이전의 예측된 워드들(예컨대, 워드 시퀀스들)뿐만 아니라 입력으로서의 이미지 특징 벡터를 제공받을 수 있고, 생성된 응답에서 다음 워드가 될, 어휘 내의 모든 워드들의 확률들을 결정할 수 있다. 일부 구현들에서, 컨디셔닝 언어 모델은 (아래에서 설명되는 바와 같이) 이미지를 나타내는 이미지 특징에 대해 컨디셔닝된 채팅형 응답들(즉, 워드들의 시퀀스들)을 모델링하기 위해 LSTM(long-short term memory) 네트워크를 포함한다. 컨디셔닝 언어 모델을 트레이닝하기 위해 사용되는 트레이닝 데이터는 메시징 대화식 콘텍스트에서의 이미지 및 그 이미지에 대한 응답을 포함하는 다수의 이미지-응답 쌍들을 포함할 수 있다. 일부 구현들에서, 주어진 이미지들에 대한 응답들은 (예컨대, 인간들에 의해) 트레이닝 데이터에 대해 합성적으로(synthetically) 생성될 수 있고, 그리고/또는 응답들은, 사용자들로부터 동의가 획득된 경우, 테스트 또는 실제 메시지 대화 콘텍스트들에서의 메시지들에서 특정 이미지들을 수신하는 것에 대한 사용자들로부터의 실제 응답들의 샘플들로부터 획득될 수 있다. 트레이닝 데이터의 일부 예들은 아래에서 더 상세하게 설명된다.
[0059] 블록(210)에서, 이미지가 획득된다. 다양한 구현들에서, 이미지는 정적 이미지(예컨대, 사진, 이모지, 또는 다른 이미지), 시네마그래프 또는 애니메이션화된 이미지(예컨대, 모션을 포함하는 이미지, 애니메이션 및 오디오를 포함하는 스티커 등), 비디오 등일 수 있다.
[0060] 일부 구현들에서, 이미지는, 메시지 대화 콘텍스트에서 수신된 것으로, 예컨대, 통신 네트워크를 통해 다른 사용자 디바이스로부터 수신된 전자 메시지에 포함된 것으로 검출됨으로써 획득될 수 있다. 일부 구현들에서, 이미지는 하나 이상의 제안 응답들에 대한, 예컨대 애플리케이션 프로그램 인터페이스(API; application program interface)를 통한 애플리케이션 프로그램으로부터의 요청의 부분으로서 수신될 수 있다.
[0061] 일부 추가의 예들에서, 이미지는 하나 이상의 클라이언트 디바이스들(115)에 의해, 또는 메시지들을 전송하는 봇에 의해 전송될 수 있고, 이미지는 네트워크(140)를 통해 클라이언트 디바이스(115)에 의해 수신될 수 있다. 2명의 참여자들이 있는 일-대-일(1:1) 메시징 세션에서, 이미지는 특정 사용자의 클라이언트 디바이스에 의해 수신될 수 있다. 그룹 메시징 세션에서, 이미지는 그룹 메시징 세션의 참여자들의 2개 이상의 클라이언트 디바이스들에 의해 수신될 수 있다. 일부 구현들에서, 이미지는 저장소, 예컨대 클라이언트 디바이스(115)의 로컬 저장소(예컨대, 메모리, 저장 드라이브 등) 및/또는 네트워크(140)를 통해 클라이언트 디바이스에 액세스가능한 원격 저장소(예컨대, 원격 클라이언트 디바이스의 저장 드라이브들, 서버 디바이스, 또는 저장 디바이스)로부터 획득될 수 있다. 일부 구현들에서, 이미지는, 사용자에 의해 송신되는 이미지를 포함하는 메시지에 기반하여 메시징 애플리케이션 내에서 포스팅될 수 있다. 예컨대, 메시징 서버는 메시징 애플리케이션(103a) 내에서 이미지를 포스팅할 수 있다. 다른 예에서, 클라이언트 디바이스(115)는 메시징 애플리케이션(103b) 내에서 이미지를 포스팅할 수 있다. 방법은 블록(212)으로 계속될 수 있다.
[0062] 블록(212)에서, 일부 구현들에서, 이미지가 생성된 제안들에 적격인지 여부가 결정된다. 이러한 예시적인 방법에서, 이미지는 생성된 제안들에 적격인 것으로 밝혀졌다고 가정된다. (이미지가 적격이 아닌 것으로 밝혀지는 경우, 예컨대 방법은 중단되거나 또는 다른 이미지를 획득한다). 일부 예들에서, 이미지는, 메시지 제안들이 제공되지 않는, 콘텐츠의 특정 타입들 또는 분류들에 대해 체크된다. 예컨대, 이미지 및/또는 이미지의 메타데이터는 콘텐츠 서버(154)에 전송될 수 있으며, 콘텐츠 서버(154)는, 이미지 콘텐츠가, 메시지 제안들이 제공되지 않는 특정의 미리 정의된 분류들에 포함되는지 여부를 결정할 수 있다. 예컨대, 콘텐츠 서버(154)는 오브젝트 검출 기법들을 사용할 수 있고, 그리고/또는 부적합성(unsuitability)을 표시하는, 이미지의 다른 속성들을 검출할 수 있다. 방법은 블록(214)으로 계속된다.
[0063] 블록(214)에서, 특징 벡터가 결정된다. 특징 벡터는 블록(210)에서 획득된 이미지의 시각적 픽셀 콘텐츠의 압축된 수치 표현(condensed numerical representation)이다. 예컨대, 특징 벡터는, 각각의 차원에 대한 값을 갖는, 특정 개수의 차원들을 갖는 벡터일 수 있다. 일부 구현들에서, 128개의 차원들이 사용될 수 있다. 일부 구현들에서, 특징 벡터는 이미지 픽셀 값들(예컨대, 컬러 값들)에 기반하여 뉴럴 네트워크에 의해 생성될 수 있다.
[0064] 일부 구현들에서, 하나 이상의 특징 벡터들은 이미지 검출 또는 오브젝트 인식 기법들(예컨대, 패턴 매칭, 기계 학습 등)에 기반하여 검출되는 이미지의 특정 부분들, 예컨대 "로컬" 이미지 특징들로부터 결정될 수 있다. 예컨대, 얼굴들(아이덴티티를 갖지 않음), 동물들, 오브젝트들, 풍경 특징들(나뭇잎, 건물들, 하늘, 일몰들 등)을 포함하는 이미지 특징들이 검출될 수 있다. 예컨대, 이미지의 주요 피사체(main subject)가 결정되면, 그 주요 피사체를 묘사하는 이미지의 부분으로부터 특징 벡터가 생성될 수 있다. 일부 구현들에서, 이미지의 주요 피사체의 특징 벡터는 전체 이미지를 대표하는 것으로 간주되어 방법(200)에서 사용될 수 있다. 방법은 블록(216)으로 계속된다.
[0065] 블록(216)에서, 이미지를 나타내는 특징 벡터에 기반하여, 이미지에 대한 하나 이상의 제안 응답들이 생성된다. 일부 구현들에서, 제안 응답들은, 수신된 메시지가 이미지를 포함하는 메시지 대화(예컨대, 사용자 디바이스들 사이에서 전송된 전자 메시지들을 포함하는 대화)에서 수신된 메시지(예컨대, 이미지)에 대해 하나 이상의 대화식 회답들로서 전송될 메시지 제안들이다. 일부 예들에서, 제안 응답들을 결정하기 위해, 하나 이상의 언어 모델들, 예컨대 블록(208)에서 트레이닝된 컨디셔닝 언어 모델에 의한 추론이 사용될 수 있다. 게다가, 컨디셔닝 언어 모델의 출력들에 기반하여 제안 응답들을 결정하기 위해, 상이한 기법들이 사용될 수 있다. 제안 응답들을 생성하는 일부 예시적인 구현들은 도 3-5를 참조하여 아래에서 설명되며, 이들은 빔 탐색 기법 및 LSTM 네트워크를 사용한다. 일부 구현들에서, 제안 응답들을 결정하기 위해 샘플링 기법이 사용될 수 있는데, 예컨대, 다음 워드가 될 확률이 가장 높은 것으로 결정된 워드가 워드 시퀀스에 추가된다.
[0066] 일부 구현들에서, 하나 이상의 제안 응답들은 디바이스에 액세스가능한 하나 이상의 봇들을 호출(invoking)하거나 또는 그 봇들에게 정보를 요청하는 것에 기반하여 생성될 수 있다. 컨디셔닝 언어 모델에 의해 생성된 응답들은 조합되고, 하나 이상의 최상위 제안 응답들을 식별하도록 랭크될(ranked) 수 있다. 제안 응답들은 텍스트(예컨대, 문구들, 워드들 등), 이미지들, 비디오들, 및/또는 다른 타입들의 미디어 콘텐츠일 수 있다. 일부 예시적인 구현들에서, 제안 응답들은 아래에서 설명되는 일부 예들에서 설명되는 바와 같이 텍스트 형태로 생성될 수 있고, 이러한 생성된 텍스트는 다른 타입들의 미디어 콘텐츠(이를테면, 사용자 동의가 획득된 경우, 사용자의 컬렉션 또는 액세스가능 이미지 라이브러리 또는 포토 라이브러리로부터의 이미지들)에서 검출된 개념들(예컨대, 라벨들)에 매칭될 수 있고, 이러한 개념들은 본원에서 설명되는 것과 유사하게 미디어 콘텐츠에서 식별될 수 있다. 이어서, 그러한 매칭된 미디어 콘텐츠는 본원에서 설명되는 바와 같이 메시지 제안들로서 제공될 수 있다. 방법은 블록(218)으로 계속된다.
[0067] 블록(218)에서, 최상위-랭크된 제안 응답들 중 하나 이상이 사용자에게 제공된다. 예컨대, 최상위-랭크된 제안 응답들은 사용자에 의해 사용되는 클라이언트 디바이스(115)의 디스플레이 디바이스 상에 디스플레이될 수 있다. 일부 예들에서, 수신된 메시지에서 이미지가 획득된 경우, 이미지는 메시징 인터페이스에서 디스플레이될 수 있고, 최상위-랭크된 제안 응답들은 이미지와 연관하여, 예컨대 이미지의 일 측 상에 디스플레이될 수 있다. 다양한 구현들에서, 특정 개수(예컨대, 3개, 10개 등)의 최상위-랭크된 제안 응답들이 디스플레이될 수 있다. 일부 구현들에서, 제시되는 제안 응답들의 개수는 사용자에 의해, 예컨대 사용자 입력 및/또는 저장된 사용자 선호도들을 통해 결정될 수 있다. 일부 구현들에서, 최상위-랭크된 제안 응답들 중 하나 이상은 하나 이상의 제안 응답들을 요청한 요청 디바이스 또는 애플리케이션, 예컨대 방법(200)을 수행하는 동일한 시스템 또는 상이한 시스템 상의 애플리케이션에 제공된다(예컨대, 송신됨). 방법은 블록(220)으로 계속된다.
[0068] 블록(220)에서, 일부 구현들에서, 디스플레이되는 최상위-랭크된 제안 응답들 중 하나 이상의 최상위-랭크된 제안 응답들의 선택이 수신된다. 예컨대, 그 선택은 사용자 디바이스에서 (예컨대, 입력 디바이스, 이를테면, 사용자 터치를 수신하는 터치스크린 또는 트랙패드, 음성 커맨드를 수신하는 마이크로폰, 사용자 조작을 수신하는 버튼, 마우스, 또는 조이스틱 등을 통해) 사용자에 의해 제공되는 사용자 입력에 기반할 수 있다. 일부 예들에서, 사용자는 터치스크린 상에서 한번의 탭(single tap)을 입력하여 연관된 제안 응답을 선택함으로써, 응답을 수동으로 입력하는 것과 비교하여 사용자 입력의 양을 감소시킬 수 있다. 일부 구현들에서, 제안 응답들 중 하나 이상은, 예컨대 사용자 선호도들, 사용자 콘텍스트(예컨대, 사용자 동의가 획득된 경우, 지리적 위치, 시간 또는 날짜 등), 또는 다른 미리 정의된 조건들에 기반하여 (사용자 입력 없이) 자동적으로 선택될 수 있다.
[0069] 일부 구현들에서, 블록(220)은, 예컨대 클라이언트 디바이스에 연결된 입력 디바이스를 통해 선택을 수신하는 클라이언트 디바이스에 의해 구현될 수 있다. 일부 구현들은, 예컨대 하나 이상의 다른 디바이스들(예컨대, 클라이언트 디바이스들 및/또는 서버 디바이스들)을 통해, 또는 클라이언트 디바이스 또는 다른 디바이스에서 사용자에 의해 사용되는 입력 디바이스로부터 직접적으로 통신 네트워크를 거쳐 서버 디바이스에 송신되는 선택을 수신하는 서버 디바이스를 사용하여 블록(220)을 구현할 수 있다. 방법은 블록(222)으로 계속된다.
[0070] 블록(222)에서, 일부 구현들에서, 블록(220)에서 선택된 제안 응답(들)이 전송된다(또는 다른 방식으로 출력됨). 예컨대, 선택된 응답(들)은 하나 이상의 메시지들로서 하나 이상의 수신자 디바이스들에 전송될 수 있다. 일부 예들에서, 메시지는 네트워크(140)를 거쳐 메시징 서버(101)를 통해 하나 이상의 다른 클라이언트 디바이스들(115)에 그리고/또는 직접적으로 다른 클라이언트 디바이스들(115)에 송신될 수 있다. 일부 구현들에서, 예컨대, 일-대-일 대화에서, 메시지는 블록(210)에서 획득된 이미지를 전송한 사용자 디바이스에, 예컨대 사용자 디바이스에 의해 수신되는 메시지, 이를테면, 채팅 메시지, 텍스트 메시지, 이메일 메시지 등에서, 전송된다. 일부 구현들에서, 메시지는, 블록(210)에서 획득된 이미지를 전송한 사용자 계정에 대해 구성된 하나 이상의 사용자 디바이스들에 전송된다. 일부 구현들에서, 예컨대 사용자가 하나보다 많은 제안 응답(들)을 선택하는 경우, 선택된 응답들은 별개의 메시지들, 조합된 메시지 등으로서 전송될 수 있다. 일부 구현들에서, 메시지를 출력하기 전에, 선택된 제안 응답이, 예컨대 메시지 작성 인터페이스(message composition interface)에서 편집되도록 허용하는 사용자 인터페이스가 제공될 수 있다. 이어서, 방법은, 일부 구현들에서, 예컨대 다른 이미지가 획득된 경우, 블록(210)으로 되돌아갈 수 있다.
[0071] 도 3은 이미지를 나타내는 특징 벡터에 기반하여 하나 이상의 제안 응답들을 생성하기 위한 예시적인 방법(300)을 예시하는 흐름도이다. 예컨대, 방법(300)은 도 2의 예시적인 방법(200)의 블록(216)을 구현하는 데 사용될 수 있다.
[0072] 일반적인 요약 및 예들에서, 방법(300)은 일부 구현들에서 다음의 특징들을 포함할 수 있다. 첫 번째로, 시작 토큰(start token)이 빔 큐(beam queue) 내로 푸시된다. 또한, 이미지에 대한 특징 벡터는 컨디셔닝 언어 모델에 공급된다. 초기 스테이지(블록(304))에서, 컨디셔닝 언어 모델은 특징 벡터에 기반하여 결정되는 제1 워드로서, 어휘로부터 하나 이상의 워드들을 생성하는데, 예컨대 트레이닝 데이터로서 사용된 이전 응답들로부터 워드들, 이를테면, "pretty", "cute" 및 "neat"를 생성한다. 초기 스테이지에서의 각각의 워드에 대해, 시퀀스를 생성하기 위해 다음 워드를 추가함으로써 하나 이상의 워드 시퀀스들이 결정된다. 예컨대, 초기 워드가 "pretty"인 경우, 각각이 "pretty"로 시작하는 시퀀스들, 예컨대 "pretty woman", "pretty girl", "pretty cool" 등이 결정될 수 있다. 추가의 워드들은 나중의 스테이지들에서 워드 시퀀스에 유사하게 계속 추가될 수 있다. 상이한 워드 시퀀스들은 상이한 길이들을 가질 수 있는데, 예컨대 "pretty good deal"은 사이즈 3의 시퀀스일 수 있다. 프로세스는 초기 스테이지에서 결정된 다른 워드들에 대해 반복될 수 있는데, 예컨대 "cute!", "cute poster", "neat trick"과 같은 식이다(블록들(306-320)). 하나 이상의 제1 워드들에 기반하여 결정된 워드 시퀀스들로부터의 최상위 N개의 시퀀스들이 제안 응답들로서 선택될 수 있다.
[0073] 블록(302)에서, 특징 벡터는 컨디셔닝 언어 모델에 입력되어 모델을 컨디셔닝한다. 예컨대, 특징 벡터는 도 2에 대해 위에서 설명된 바와 같이 획득된 이미지의 압축된 표현(condensed representation)일 수 있다. 컨디셔닝 언어 모델은 트레이닝된 뉴럴 네트워크를 포함할 수 있으며, 트레이닝된 뉴럴 네트워크는, 예컨대 도 2의 블록(208)에 대해 위에서 설명된 바와 같이 이미지들 및 공통 응답들의 트레이닝 데이터를 사용하여 트레이닝되었다. 트레이닝 데이터 응답들은 제안 응답들을 형성하는 데 사용되는 이용가능한 워드들의 어휘를 형성하는 워드들을 포함한다. 예컨대, LSTM(long-short term memory) 뉴럴 네트워크가 사용될 수 있으며, 이미지 특징 벡터는 LSTM의 제1 인스턴스화부(instantiation)에 입력된다. 사용될 수 있는 LSTM 네트워크의 일부 예들은 도 5와 관련하여 아래에서 설명된다. LSTM 네트워크(또는 다른 컨디셔널 언어 모델(conditional language model))는 디바이스의 저장소(예컨대, 메모리)에서 그리고 하나 이상의 하드웨어 프로세서들을 사용하여 구현될 수 있다. 이미지를 나타내는 미리 결정된 특징 벡터를 컨디셔닝 언어 모델에 입력하는 것의 일부 장점들은, 특징 추출기(feature extractor)가 컨디셔널 언어 모델에 배치될 필요가 없어서 컨디셔닝 언어 모델에 대한 더 작은 사이즈 및 잠재적으로 더 신속한 모델 실행을 가능하게 하는 것을 포함한다.
[0074] 블록(304)에서, 초기 워드가 빔 큐 내로 푸시된다. 이러한 예에서, 컨디셔닝 언어 모델의 출력들 및 이미지에 기반하여 응답들을 탐색 및 작성하기 위해, 빔 탐색 기법이 사용된다. 각각의 응답은 "워드 시퀀스"이며, "워드 시퀀스"는 시퀀스, 예컨대 "so cute" 및 "I like it"과 같은 응답에서 발견되는 워드들의 시퀀스에서 제공되는 하나 이상의 워드들일 수 있다. 워드는 하나 이상의 글자(character)들의 스트링일 수 있고, 글자들은 문자(letter)들, 구두점 부호(punctuation mark)들(예컨대, "!" 또는 "?")일 수 있거나, 또는 일부 구현들에서는 아이콘들, 이모지, 심볼들, 또는 다른 글자들일 수 있다.
[0075] 빔 큐 내로 푸시된 초기 워드는 워드 시퀀스들에 대한 워드 생성 프로세스를 개시하는 데 사용된다. 일부 구현들에서, 초기 워드는 프로세스의 시작임을 표시하는 특별한 시작 토큰이다. 예컨대, 컨디셔닝 언어 모델로부터 출력된 응답들은 시작 토큰 및 임의의 종료 토큰(end token)(아래에서 설명됨)을 무시할 수 있다. 일부 구현들에서, 빔 큐는, 최대 사이즈(Q)를 가지며, 최대 사이즈(Q)는 최대 Q 워드 시퀀스들(빔들)이 아래에서 설명되는 바와 같이 프로세싱되어야 함을 표시한다. 예컨대, Q는 10, 20, 또는 다른 숫자일 수 있다.
[0076] 블록(306)에서, 빔 큐 내의 워드 시퀀스가 선택된다. 예컨대, 방법(300)의 첫 번째 반복에서, 선택된 워드 시퀀스는 제1 워드, 이를테면, 위에서 설명된 바와 같은 시작 토큰이다. 나중의 반복들에서, 선택된 워드 시퀀스는 아직 프로세싱되지 않은(예컨대, 아직, 그 워드 시퀀스의 다음 워드를 발견하도록 프로세싱되지 않음) 빔 큐 내의 다음 워드 시퀀스일 수 있다. 일부 구현들에서, 빔 큐 내에 저장된 워드 시퀀스들은 LSTM 뉴럴 네트워크에 의해 생성된 워드-이미지 임베딩(word-image embedding)들이며, 각각의 임베딩은 특징 벡터의 이미지뿐만 아니라 워드 시퀀스 내에 지금까지 포함된 워드들을 압축된 형태로 인코딩하는 숫자들의 벡터이다. 예컨대, 각각의 워드는 특징 벡터와 동일한 수의 차원들을 가질 수 있는 워드 임베딩(word embedding)에 의해 표현될 수 있고(예컨대, 이들은 동일한 공간에 맵핑됨), 워드-이미지 임베딩으로 결합될 수 있다.
[0077] 블록(308)에서, 선택된 워드 시퀀스는 컨디셔닝 언어 모델에 입력된다. 예컨대, 선택된 워드 시퀀스는 컨디셔닝 언어 모델을 제공하는 LSTM 네트워크의 하나의 LSTM(예컨대, 인스턴스화부)에 입력될 수 있다. LSTM 아키텍처의 예가 도 5에 도시된다. 일부 예들에서, 블록(308)의 초기 반복에서, 블록(302)에서 입력된 이미지 특징 벡터는 제1 LSTM(예컨대, 인스턴스화부)에 입력되고, 초기 워드(예컨대, 시작 토큰)가 또한 제1 LSTM에 입력된다. 블록(308)에서의 나중의 반복들에서, 선택된 워드 시퀀스는 선택된 워드 시퀀스에 지금까지 포함된 워드들 및 이미지 특징 벡터를 인코딩하는 임베딩이고, 나중의 LSTM(예컨대, 인스턴스화부)에 입력되며, 이는 워드 시퀀스 내의 다음 워드를 제공한다.
[0078] 블록(310)에서, 컨디셔닝 언어 모델을 사용하여, 워드 시퀀스 내에서 후보 다음 워드가 될 복수의 워드들이 워드들의 어휘로부터 결정되거나 생성되며, 복수의 워드들이, 선택된 워드 시퀀스 내에서 다음 워드가 될 확률들이 결정된다. 예컨대, 선택된 워드 시퀀스가 블록(308)에서 입력된 LSTM은 워드들 및 확률들을 결정한다. 워드들 및 확률들은, 워드들의 어휘를 제공하는 이전 이미지들 및 연관된 이전 응답들을 포함하는 트레이닝 데이터를 사용하여 컨디셔닝 언어 모델의 트레이닝에 기반하여 컨디셔닝 언어 모델에 의해 결정된다. 예컨대, 워드들의 어휘는 컨디셔닝 언어 모델을 트레이닝하는 데 사용된 트레이닝 데이터의 응답들에서 사용된 워드들을 포함한다. 일부 구현들에서, 워드들의 어휘는 많은 수의, 예컨대 수천 개의 워드들을 포함할 수 있다. 일부 구현들에서, 컨디셔닝 언어 모델은, 어휘 내의 모든 워드들이 결정된 확률들을 갖도록, 특정 이미지들에 대한 응답들을 포함하는 트레이닝 데이터로부터의 트레이닝에 기반하는 것과 같이, 이미지 특징 벡터가 주어지면 어휘 내의 각각의 워드가 워드 시퀀스 내에서 다음 워드일 확률을 결정한다.
[0079] 일부 구현들에서, 어휘 워드들의 세트의 서브세트, 예컨대 모든 명사들, 부사들, 또는 어휘 내의 다른 타입들의 워드들, 또는 어휘 워드들의 상이한 선택된 서브세트가 확률들에 대해 결정될 수 있다. 일부 구현들에서, 어휘 워드들의 서브세트는, 예컨대 이전에 전송된 메시지들 및 응답들(그러한 메시지들의 전송자들/수신자들로부터 사용자 동의가 획득된 경우)로부터의 일반적인 사용자 데이터에 기반하여, 그들이 수신된 전자 메시지들에 대한 응답들에서 사용될 그리고/또는 그러한 메시지들에서 수신된 이미지들에 대한 응답들에서 사용될 확률이 높은 것으로(예컨대, 임계 확률 또는 빈도를 초과함) 알려진 워드들의 서브세트일 수 있다. 위에서 설명된 바와 같이, 워드들은 텍스트 워드들, 심볼들(예컨대, 구두점 심볼들, 생략 부호들 등), 이모지 등을 포함할 수 있다. 일부 구현들에서, 워드들은 이미지들(예컨대, "스티커들"), 애니메이션들 등을 포함할 수 있다. 일부 구현들에서, 어휘로부터의 임의의 워드 시퀀스에 대한 가능한 다음 워드들 중 하나는 특별한 종료 토큰, 예컨대 워드 시퀀스의 종료(end)를 표시하도록 지정된 토큰이다. 일부 구현들에서, 각각의 사용된 어휘 워드를 선택된 워드 시퀀스의 말단(end)에 각각 첨부하는 것에 기반하여, 복수의 상이한 워드 시퀀스들이 효과적으로 생성된다.
[0080] 블록(312)에서, 블록(310)에서 결정된 다음 워드들을 포함하는 다수(예컨대, Q)의 워드 시퀀스들은 블록(310)에서 결정된 다음 워드들의 확률들에 기반하여 선정된다. 따라서, Q 워드 시퀀스들은 그들의 다음 워드들에 대한 연관된 확률들에 기반하여 선정된다. 선정된 Q 워드 시퀀스들은 블록(310)에서 결정된 다음 워드들을 선택된 (이전) 워드 시퀀스에 각각 첨부하는 것으로부터 형성된 워드 시퀀스들의 서브세트이다. 예컨대, Q 워드 시퀀스들의 다음 워드들이 블록(310)에서 결정된 바와 같이 가장 높은 확률들을 갖는, Q 워드 시퀀스들이 선정된다. 예컨대, 빔 큐 내의 워드 시퀀스들 각각에 대해 각각의 다음 워드에 대한 확률이 생성되며, 가장 높은 확률들과 연관된 Q 워드 시퀀스들이 선정된다. 예컨대, 각각의 선정된 워드 시퀀스는, 이미지 벡터, 이러한 워드 시퀀스의 이전의 선정된 워드들, 및 이러한 워드 시퀀스의 말단(end)에 이제 임베딩되는 다음 워드를 포함하는 워드 임베딩이다. 일부 경우들에서, 이들은 다음 워드가 종료 토큰인 워드 시퀀스들일 수 있다. 일부 구현들에서, 미리 결정된 확률 임계치를 초과하는 확률들을 갖는 Q 워드 시퀀스들이 선정된다.
[0081] 일부 구현들에서, Q 워드 시퀀스들의 선정은 다른 팩터들에 의해 영향받을 수 있다. 예컨대, 하나의 팩터는, 사용자 ― 그 사용자를 위해 제안 응답들이 생성됨 ― 에 의해 전송된 하나 이상의 이전 메시지 응답들일 수 있다. 일부 예들에서, 생성된 워드 시퀀스들 중 하나 이상이, 메시징 콘텍스트에서 사용자에 의해 제공된 이전 응답과 동일하거나 유사한 경우(예컨대, 동일한 시퀀스에서 동일한 워드들의 퍼센티지 임계치를 가짐), 그러한 유사한 생성된 워드 시퀀스들에 더 높은 가중치가 할당될 수 있다. 예컨대, 더 높은 가중치는 가중된 워드 시퀀스가, 가중된 워드 시퀀스와 동일한 또는 유사한 확률과 연관된 다른 워드 시퀀스들에 비해 더 선택되게 할 수 있다. 사용자 동의가 획득된 경우, 이전 사용자 응답들이, 예컨대 메시지 데이터 저장소, 이를테면, 메시지 애플리케이션 데이터베이스(199)로부터 획득될 수 있다. 일부 구현들에서, 이전 응답이 회답된 이전 이미지가 (예컨대, 메시지 데이터 저장소에서) 이용가능한 경우, 그러한 이전 이미지가 또한 현재 이미지와 비교될 수 있다. 현재 이미지가 이전 이미지와 유사한 경우(예컨대, 그들의 특징 벡터들에서 값들의 퍼센티지 유사성이 있음), 이는 이전 응답이, 현재 이미지와 유사한 이전 이미지에 대해 회답되었다는 것을 표시한다. 결과적으로, 이전 이미지에 대응하는 이전 응답과 유사한 생성된 워드 시퀀스들에는 더 높은 가중치가 할당되어서, 블록(312)에서 선정될 그 유사한 생성된 워드 시퀀스들의 적격성(eligibility)을 증가시킬 수 있다.
[0082] 일부 구현들에서, 사용자 또는 사용자 디바이스에 의해 수신된 또는 전송된 이전 이미지들은 워드 시퀀스들의 선정(예컨대, 블록(312) 및/또는 워드 시퀀스들의 생성(예컨대, 블록(310))에 영향을 미칠 수 있다. 일 예에서, 제안 응답들은, 현재(더 최근에-수신된) 이미지의 콘텍스트에서 이전 이미지를 참조하여 생성 및/또는 가중될 수 있다. 예컨대, 이전 이미지가, 현재 이미지가 수신되기 전에 미리 결정된 시간 기간 내에 수신되었다면, 그러한 제안 응답들이 결정될 수 있다. 일부 예들에서, 이전 이미지가 제1 타입의 오브젝트(예컨대, 셔츠와 같은 의복 물품)를 묘사하는 것으로 결정되고, 그리고 (예컨대, 이미지 오브젝트 인식 기법들, 이미지 태그들 또는 다른 메타데이터 등에 기반하여) 현재 이미지가 또한 동일한 타입의 오브젝트를 묘사하는 경우, 생성된 제안 응답들은 "I liked the other one better" 및/또는 "I like this one better"를 포함할 수 있다.
[0083] 다른 예에서, 제안 응답들은, 서로 임계 시간 기간 내에 전송 또는 수신된 그러한 이전 이미지들의 시리즈 또는 세트에 대한 응답으로 이전에 전송된 이전 응답들에 기반하여 생성 및/또는 가중될 수 있다. 일부 예들에서, 이전 이미지들의 세트와 유사한 또는 대응하는 이미지들의 세트가 현재 수신된 경우(예컨대, 그 이전 이미지들의 세트가, 현재 시간으로부터 임계 시간 기간 내에 수신된 경우), 그러한 제안 응답들이 생성되고 그리고/또는 더 높게 가중될 수 있다. 일부 경우들에서, 하나 이상의 이전 메시지들은 이전 이미지들과 연관될 수 있고(예컨대, 이전 이미지들과 첨부되거나 또는 이전 이미지들을 전송한 임계 시간 기간 내에 전송됨), 그러한 이전 메시지들은 또한 응답 생성 및/또는 가중에서 사용될 수 있다. 일부 예들에서, 몇몇 이전 이미지들은 현재 시간의 임계 시간 기간 내에 사용자에 의해 수신되었을 수 있으며, 그 몇몇 이전 이미지들은 그들의 주제(subject matter)에 있어서 서로 관련되어 있다. 예컨대, 이전 이미지들은 동일한 타입의 오브젝트들(예컨대, 특정 타입들의 의복 물품들)을 묘사할 수 있으며, 이미지에서 묘사된(그리고 하나 이상의 오브젝트 인식 기법들을 사용하여 검출된) 그리고/또는 이미지들의 메타데이터에서 표시된 상이한 특성들(예컨대, 컬러들, 사이즈들, 스타일들 등)을 갖는다. 게다가, 이전 이미지들 중 하나 이상과 연관된 이전 메시지, 이를테면, "which one should I buy?"가 수신되었을 수 있다. 이전 이미지들 및/또는 이전 메시지의 그러한 세트에 대한 이전 응답들은 "the second one", "I like the blue one"(묘사된 물품들 중 하나가 청색인 경우) 등이었을 수 있다. 제안 응답들은, 그러한 이전 메시지들 및 이미지들을 포함하는 트레이닝 데이터에 기반하여, 이미지들의 현재 세트에 대해 생성될 수 있다. 예컨대, 어느 오브젝트를 구매할지를 묻는 수신된 메시지 및/또는 수신된 세트의 이미지들에 대한 응답들로서, "the first one", "the second one", "third one", "the blue one" 등과 같은 제안 응답들이 생성되고 그리고/또는 생성된 제안 응답들에서 더 높게 가중될 수 있다.
[0084] 블록(314)에서, 일부 구현들에서, 선정된 워드 시퀀스들 모두가 화이트리스트 상에 존재하는지 여부가 결정된다. 예컨대, 화이트리스트는 컨디셔닝 언어 모델을 트레이닝하는 데 사용된 트레이닝 데이터에서 제공된 응답들의 서브세트일 수 있다. 화이트리스트는 액세스가능 저장소, 예컨대 환경(100)의 액세스가능 디바이스의 메모리 또는 다른 저장소에 저장될 수 있다. 일부 구현들에서, 화이트리스트는 출력되도록 허용된 응답들을 제공한다. 블록(312)으로부터의 각각의 선정된 워드 시퀀스는 화이트리스트 상의 응답들과 비교될 수 있다. 화이트리스트 상에 존재하지 않는 워드 시퀀스들은 제안 응답들로서 출력되도록 허용되지 않는다. 일부 구현들에서, 예컨대 출력되도록 허용되지 않는 응답들을 제공하는 블랙리스트(blacklist)가 사용될 수 있어서, 블랙리스트 상의 응답들과 매칭되는 선정된 워드 시퀀스들은 출력되도록 허용되지 않는다.
[0085] 블록(314)에서, 선정된 워드 시퀀스들 모두가 화이트리스트 상에서 발견되는 경우, 방법은 아래에서 설명되는 블록(318)으로 계속된다. 블록(314)에서, 선정된 워드 시퀀스들 중 하나 이상이 화이트리스트 상에서 발견되지 않는 경우, 방법은 블록(316)으로 계속되며, 블록(316)에서, 화이트리스트 상에 존재하지 않는 워드 시퀀스들은, 블록(310)에서 컨디셔닝 언어 모델에 의해 결정된 상이한 다음 워드들을 포함하는 다른 워드 시퀀스들로 대체된다. 예컨대, N 최고 확률들 다음에, 그 다음으로 가장 높은 확률들을 갖는 다음 워드를 갖는 워드 시퀀스들이, 화이트리스트 상에 없는 워드 시퀀스들을 대체하도록 선정될 수 있다. 방법은 블록(318)으로 계속된다.
[0086] 블록(318)에서, 선정된 워드 시퀀스들은 빔 큐 내로 푸시된다. 예컨대, 빔 큐 내의 워드 시퀀스들의 조기의(earlier) 버전들로부터 유도된 워드 시퀀스들(예컨대, 조기의 버전들이 더 적은 워드들을 갖는 경우)은 빔 큐 내에서 조기의 버전들 대신에 (예컨대, 일부 구현들에서, 종료 토큰을 갖지 않는 조기의 버전들 대신에) 저장될 수 있다.
[0087] 블록(320)에서, 빔 큐 내의 모든 워드 시퀀스들이 하나 이상의 종결 조건들을 충족하는지 여부가 체크된다. 예컨대, 하나의 종결 조건은 빔 큐 내의 모든 워드 시퀀스들이, 그러한 워드 시퀀스들에 더 이상 워드들이 추가되지 않을 것임을 표시하는, 자신들의 마지막 워드로서 특별한 종료 토큰으로 종료되는 것일 수 있다. 컨디셔닝 언어 모델은 시퀀스의 생성된 다음 워드들 중 하나로서 워드 시퀀스에 대한 종료 토큰을 생성할 수 있다. 다른 종결 조건은, 빔 큐 내의 워드 시퀀스들에 대해 워드 시퀀스들 내에서 워드들의 최대 길이에 도달했다는 것일 수 있다. 종결 조건들의 조합, 예컨대 빔 큐 내의 모든 워드 시퀀스들이 특별한 종료 토큰으로 종료되거나 또는 최대 워드 길이를 갖는 것이 또한 체크될 수 있다.
[0088] 빔 큐 내의 모든 워드 시퀀스들이 하나 이상의 종결 조건들을 충족하는 것은 아닌 경우, 방법은 빔 큐 내의 워드 시퀀스를 선택하기 위해 블록(306)으로 되돌아간다. 일부 구현들에서, 선택된 워드 시퀀스는, 특별한 종료 토큰으로 종료되지 않은, 또는 최대 워드 길이에 도달하지 않은, 또는 일부 다른 종결 조건을 달성하지 않은 워드 시퀀스일 수 있다. 일부 구현들에서, 선택된 워드 시퀀스는, 방금 생성되고(예컨대, 워드가 추가됨) 그리고 마지막 반복에서 빔 큐 내에 저장된 워드 시퀀스들 중 하나일 수 있다.
[0089] 블록(320)에서, 빔 큐 내의 모든 워드 시퀀스들이 하나 이상의 종결 조건들을 충족하는 경우, 방법은 블록(322)으로 계속되며, 블록(322)에서, 빔 큐 내의 워드 시퀀스들은 제안 응답들로서 지정된다. 예컨대, 이러한 워드 시퀀스들, 및 이러한 워드 시퀀스들의 스코어들(아래에서 설명됨)은 제안 응답들로서 플래그되고(flagged) 그리고/또는 저장될 수 있다. 이어서, 방법은 블록(324)으로 계속된다.
[0090] 블록(324)에서, 프로세싱할 하나 이상의 추가의 워드 시퀀스들이 있는지 여부가 체크된다. 예컨대, 다른 선정된 워드 시퀀스들이 프로세싱을 위해 빔 큐 내로 푸시되었기 때문에, 아직 종결 조건을 충족하지 않은 이전 반복으로부터 블록(312)에서 선정된(그리고 블록(314)에서 자격부여된(qualifying)) 하나 이상의 워드 시퀀스들이 있을 수 있다. 프로세싱할 더 많은 워드 시퀀스들이 있는 경우, 방법은 블록(304)으로 계속되어, 프로세싱되지 않은 워드 시퀀스를 (비어 있는(empty)) 빔 큐 내로 푸시하고, 블록들(306-320)의 프로세싱을 반복한다.
[0091] 블록(324)에서 체크되는 바와 같이, 프로세싱할 워드 시퀀스들이 더 이상 없으면, 방법은 블록(326)으로 계속되고, 블록(326)에서, 지정된 워드 시퀀스들은 생성된 제안 응답들로서 출력된다. 예컨대, 출력된 제안 응답들은 도 2의 블록(218)에 제공될 수 있다. 일부 구현들에서, 블록(322)에 대해 위에서 설명된 바와 같이, 빔 탐색은 각각의 워드 시퀀스에 대해 스코어를 생성하고, 워드 시퀀스들은 이러한 스코어에 기반하여 랭크된다. 예컨대, 워드 시퀀스의 스코어는 컨디셔닝 언어 모델에 의해 결정되는 바와 같이, 그 워드 시퀀스 내에 포함된 워드들 중 하나 이상의 워드들의 확률들에 기반할 수 있다. 다양한 구현들에서, 워드 시퀀스의 스코어는 워드 시퀀스에 추가되는 마지막 워드의 확률, 또는 워드 시퀀스 내의 워드들의 확률들의 조합(예컨대, 평균)일 수 있고, 그리고/또는 다른 팩터들에 기반할 수 있다(예컨대, 더 적은 워드들을 갖는 워드 시퀀스들에는 더 많은 워드들을 갖는 워드 시퀀스들보다 더 양호한(예컨대, 더 높은) 스코어가 할당될 수 있고, (예컨대 미리 결정된 리스트로부터의) 특정 워드들을 갖는 워드 시퀀스들에는 리스트 상에 있지 않은 워드들보다 더 높은 스코어가 할당될 수 있는 식임).
[0092] 일부 구현들에서, 워드 시퀀스들은 블록(320)에서, 그들의 스코어들에 기반하여 랭크된 순서로 출력될 수 있어서, 예컨대, 블록(218)이 특정 개수의 최상위-랭크된 제안 응답들을 선택할 수 있다.
[0093] 다른 구현들에서, 컨디셔닝 언어 모델을 사용하여 제안 응답들을 결정하기 위해, 도 3의 블록들의 변형들 또는 다른 방법들이 사용될 수 있다. 예컨대, 일부 구현들은 상이한 사이즈들의 빔 큐, 블록들 중 하나 이상의 블록들의 상이한 순서의 수행, 컨디셔닝 언어 모델로부터 제공된 상이한 워드 시퀀스들을 생성 및 보유하기 위한 상이한 기법들 등을 사용할 수 있다.
[0094] 도 4는 본원에서 설명되는 하나 이상의 제안 응답 특징들을 구현할 수 있는 일 예시적인 모듈(400)을 예시하는 블록도이다. 일부 구현들에서, 메시징 모듈(402)은 메시징 애플리케이션(103)의 컴포넌트일 수 있고, 예컨대 상이한 사용자 디바이스로부터 수신된 메시지의 부분으로서, 도 2에 대해 위에서 설명된 바와 같은 이미지를 획득할 수 있다. 이미지는 메시지 제안 모듈(404)에 전송될 수 있고, 메시지 제안 모듈(404)은 몇몇 상이한 컴포넌트들을 포함할 수 있다. 메시지 제안 모듈(404)의 컴포넌트들 중 일부 또는 전부는, 메시징 애플리케이션(103), 응답 생성기(150), 및/또는 환경(100)에 도시된 시스템의 다른 모듈들 또는 컴포넌트들에서 구현될 수 있다.
[0095] 예컨대, 이미지(예컨대, 이미지 픽셀들)는 메시징 모듈(402)로부터, 도 2를 참조하여 위에서 설명된 특징 벡터 생성기(406)에 전송될 수 있다. 위에서 설명된 바와 같이, 특징 벡터 생성기(406)는 이미지 픽셀들에 기반하여 특징 벡터를 결정하며, 특징 벡터는 이미지를 나타낸다. 특징 벡터 생성기는 다수의 차원들의 특징 벡터를 출력하며, 그 특징 벡터는 응답 생성기(408)에 출력된다.
[0096] 일부 구현들에서, 응답 생성 모듈(408)은 컨디셔닝 언어 모델(410)을 사용함으로써 이미지 특징 벡터에 대한 하나 이상의 제안 응답들을 결정한다. 일부 구현들에서, 응답 생성 모듈(408)(및/또는 컨디셔닝 언어 모델(410))은, 예컨대 화이트리스트 상에 나타나지 않는 몇몇 제안 응답들을 잠재적으로 필터링 아웃(filter out)시키기 위해, 화이트리스트(412)를 사용할 수 있다.
[0097] 일부 구현들에서, 하나 이상의 제안 응답들은 디바이스에 액세스가능한 하나 이상의 봇들을 호출하거나 또는 그 봇들에게 정보를 요청하는 것에 기반하여 생성될 수 있다. 예컨대, 응답 생성 컴포넌트(408)(또는 시스템의 다른 컴포넌트)가, 적합한 제안 응답이 이미지의 콘텐츠에 관련이 있는 특정 정보일 것임을 결정하는 경우, 그 정보를 획득할 수 있는 봇이 결정될 수 있고, 그 봇에 대한 커맨드 및/또는 요청이 제안 응답으로서 생성될 수 있다.
[0098] 일부 구현들에서, 메시지 랭킹 컴포넌트(414)는 응답 생성 모듈(408)에 의해 생성된 제안 응답들을 수신하고 그리고 결합하고 그리고 제안 응답들을 랭크된 순서로 랭크시킨다. 예컨대, 제안 응답들은 계산된 스코어들에 기반하여 랭크될 수 있으며, 스코어는 이미지에 대해 결정된 각각의 제안 응답에 대해 결정될 수 있다. 일부 구현들에서, 스코어는 각각의 제안 응답에 대해 결정될 수 있다. 일부 구현들에서, 스코어들은 위에서 설명된 바와 같이 컨디셔닝 언어 모델에 의해 결정된 확률들에 기반한다. 일부 구현들에서, 스코어들은 제안 응답이 이미지와 관련이 있는 것으로 결정되는 확률에 기반할 수 있으며, 확률은, 예컨대 이력적 메시지 데이터에서의 (그리고/또는 위에서 설명된 바와 같은 트레이닝 데이터에서의) 응답의 발생 빈도에 기반할 수 있다. 이력적 메시지 데이터는 이전 대화들로부터의 데이터 ― 대화의 참여자들이 제안 응답 특징들을 구현하기 위해 그러한 데이터의 사용에 대해 동의를 제공하였음 ― 일 수 있다. 사용자들이 그러한 사용에 대해 허가를 제공하지 않은 경우, 이력적 메시지 데이터는 사용되지 않는다. 일부 구현들에서, 응답 생성 모듈(408)은 응답들에 대한 스코어들을 제공할 수 있으며, 응답들에 대한 스코어들은 메시지 랭킹 컴포넌트(414)에 의해 응답들을 랭크시키는 데 사용될 수 있다. 일부 구현들에서, 응답 생성 모듈(408)은, 도 3에 대해 위에서 설명된 바와 같이, 생성된 제안 응답들의 스코어들 및 랭킹들을 제공할 수 있는데, 예컨대 메시지 랭킹 컴포넌트(414)는 응답 생성 모듈(408) 내에 포함될 수 있다.
[00099] 제안 응답들은 랭크된 순서로 출력될 수 있다. 일부 구현들에서, 봇들에게 정보를 요청하는 제안 응답들은 유사한 팩터들(트레이닝 메시지 데이터에서의 빈도 등)에 기반하여 결정된 하나 이상의 신뢰 스코어들에 기반하여 유사하게 랭크될 수 있고, 그리고/또는 일부 구현들에서, 적어도 하나의 봇-관련 응답은 항상 높이 랭크될 수 있다(예컨대, 봇을 호출하는 응답이 대안적인 제안 응답으로서 사용자에게 제시될 수 있음). 일부 구현들에서, 시스템은 또한, 다이버시티에 기반하여 제안 응답들을 랭크시킬 수 있다. 예컨대, 다수의 가장 높은 랭킹의 제안 응답들이 (예컨대, 참조된 사전들, 시소러스(thesaurus), 또는 다른 기법 및/또는 데이터에 의해 결정된 바와 같이) 워드들, 문자들, 또는 의미론적 의미(semantic meaning)에 있어서 서로 유사한 경우, 랭킹은, 예컨대 유사한 응답들 중 적어도 하나의 응답의 랭크를 낮춤으로써, 제안 응답들의 다이버시티를 증가시키도록 조정될 수 있다.
[00100] 일부 구현들에서, 특정 개수의 최상위-랭크된 제안 응답들이 사용자 디바이스 상에서 디스플레이되도록 또는 다른 방식으로 출력되도록 전송될 수 있다. 하나 이상의 메시지들을 다른 디바이스들에 전송하기 위해, 이러한 제안 응답들 중 하나 이상이 사용자 입력에 의해 선택될 수 있으며, 하나 이상의 메시지들은 선택된 제안 응답들의 콘텐츠를 포함한다. 일부 구현들에서, 선택된 제안 응답이 봇에 대한 커맨드 또는 요청인 경우, 봇이 메시지 대화에 추가될 수 있고, 요청된 정보를 획득하여 대화 인터페이스에서 디스플레이하며, 사용자들은 추가의 메시지들을 봇에 전송할 수 있다.
[00101] 도 5는 본원에서 설명되는 하나 이상의 특징들을 구현할 수 있는 LSTM 아키텍처(500)의 일 예를 예시하는 블록도이다. LSTM 아키텍처(500)는 컨디셔널 언어 모델을 구현하며, 구현된 프로세스의 상이한 스테이지들에서 LSTM 모델 블록의 인스턴스화부들 또는 카피들을 나타내는 다수의 LSTM들(502)을 포함한다.
[00102] 이러한 예에서, 시스템에 대한 트레이닝이 첫 번째로 제공된다. 일부 구현들에서, 트레이닝 데이터는, 필터링되고(예컨대, PMI(pointwise mutual information) 필터링을 통해 필터링됨) 그리고/또는 다른 방식으로 프로세싱되었을 수 있는, 위에서 설명된 바와 같은 이미지-응답 쌍들을 포함할 수 있다. LSTM 모델은, 워드 시퀀스 내의 모든 이전 워드들을 및 이미지 특징 벡터를 포함하는 임베딩이 입력된 후에 워드 시퀀스 내의 다음 워드의 확률들을 출력하도록 트레이닝된다. 트레이닝을 위해, 트레이닝 데이터의 이미지들을 나타내는 이미지 특징 벡터들이 제1 LSTM(506)에 입력된다. 게다가, (추론을 위한 것이 아닌) 트레이닝을 위해, 워드 임베딩들이 LSTM(506) 이후의 LSTM들에 입력되며, 워드 임베딩들은 이미지들에 대응하는 트레이닝 데이터의 응답들에 포함된 개별적인 워드들을 나타낸다. 일부 예들에서, 트레이닝 데이터 응답의 워드들은 한 번에 LSTM들에 입력된다. 일부 예들에서, 워드 ID(예컨대, 워드 ID(514 또는 524))는, 특정 워드를 나타내고 그리고 어휘의 차원 사이즈를 갖는 원-핫 벡터(one-hot vector)일 수 있으며, 이는, 예컨대 이미지 특징 벡터의 차원수(dimensionality)를 갖는 더 낮은 차원수의 벡터인 워드 임베딩(예컨대, 워드 임베딩(516 또는 526))을 생성하기 위해 뉴럴 네트워크에 공급된다.
[00103] 예시적인 트레이닝 프로세스에서, 제1 LSTM(506)은 워드 1에 대한 워드들의 분포를 표시하는 정보를 인코딩하는 값들의 벡터(LSTM 뉴럴 네트워크의 출력, 예컨대 LSTM의 최상위 계층)를 출력하며, 벡터는 소프트맥스 함수(softmax function)(508)에 입력된다. 소프트맥스 함수(508)는 어휘의 워드들이 워드 시퀀스 내에서 다음 워드(워드 1)가 될 확률들을 표시하는 워드 1 확률 분포(510)를 출력한다. 어휘 워드들은 컨디셔닝 학습 모델을 트레이닝하는 데 사용되는 트레이닝 데이터에서 사용된 응답들로부터 비롯된다. 제1 LSTM(506)은 또한, 제2 LSTM(512)에 입력되는 임베딩을 출력하며, 그 임베딩은 이미지 특징 벡터(504)의 표현 및 시퀀스의 이전 워드들을 포함한다. 도 5의 예에서, 샘플 워드 1 ID(514)는, 예컨대 이미지 특징 벡터(504)에 의해 표현되는 이미지에 대한 응답에 포함되는 제1 워드를 나타내는, 제2 LSTM(512)에 입력되는 워드 임베딩(516)으로서 제공된다. LSTM(512)은 소프트맥스 함수(518)에 입력되는 다음 워드(워드 2)에 대한 워드들의 분포를 표시하는 정보를 인코딩하는 값들의 벡터를 출력하며, 소프트맥스 함수(518)는 어휘의 워드들이 워드 시퀀스 내에서 다음 워드(워드 2)가 될 확률들을 표시하는 워드 2 확률 분포(520)를 출력한다. LSTM(512)은 또한, 시퀀스의 이전 워드들 및 이미지 특징 벡터를 나타내는 임베딩을 출력하며, 임베딩은 N 번째 LSTM(522)에 입력된다. N-1 번째 워드 ID(524)는 워드 임베딩(526)으로서 N 번째 LSTM(522)에 제공된다. LSTM(522)은 소프트맥스 함수(528)에 입력되는 결정된 다음 워드(워드 N)에 대한 벡터를 출력하며, 소프트맥스 함수(528)는 어휘의 워드들이 워드 시퀀스 내에서 다음 워드(워드 N)가 될 확률들을 표시하는 워드 N 확률 분포(530)를 출력한다.
[00104] 예시적인 트레이닝 프로세스에서, 결정된 확률들은 LSTM들에 피드백되고 가중치들이 조정되어서, LSTM들은, 예컨대, 트레이닝 데이터의 (이미지 특징 벡터에 의해 표현되는) 이미지에 대응하는 트레이닝 데이터의 응답들에 포함되어 있는 것으로 알려진 입력 워드 1 내지 워드 N-1 임베딩들(516 및 526)에 기반하여, 응답들에서 사용된 워드 시퀀스들에 대해 높은 확률들을 생성한다.
[00105] 런타임(예컨대, 입력 이미지에 기반하여 워드 확률들을 결정하기 위한 추론 프로세싱, 그 예는 도 3에 대해 설명됨) 동안, 컨디셔닝 언어 모델은 이전에 트레이닝되었다. 이미지 특징 벡터(504)에 의해 표현되는 새로운 이미지가 LSTM(506)에 입력된다. LSTM(506)은 이미지 특징 벡터에 기반하여 다음 워드(워드 1)에 대해 어휘의 워드들에 걸쳐 분포를 결정하고 분포에 대한 값들의 벡터를 출력하며, 이는 소프트맥스 함수(508)에 입력된다. 소프트맥스 함수(508)는 어휘의 워드들이 워드 시퀀스 내에서 다음 워드로서 워드 1에 대해 사용될 수 있을 확률들을 표시하는 확률 분포(510)를 결정 및 출력한다. 탐색 방법은, 예컨대 도 3을 참조하여 위에서 설명된 빔 탐색 기법을 사용하여, 이러한 확률들에 기반하여 이러한 워드들 중 하나 이상을 선택할 수 있다.
[00106] 후속 반복에서, 탐색 방법(예컨대, 도 3의 블록(308))은 워드 시퀀스에 대해 선정된 이전 워드 및 특징 벡터를 나타내는 임베딩을 제2 LSTM(512)에 제공한다. LSTM(512)은 임베딩에 기반하여 워드 시퀀스의 다음 워드(워드 2)에 대해 어휘로부터의 워드들의 분포를 결정하고 분포에 대한 값들의 벡터를 출력하며, 이는 소프트맥스 함수(518)에 입력된다. 소프트맥스 함수(518)는 어휘의 워드들이 워드 시퀀스 내에서 다음 워드로서 워드 2에 대해 사용될 수 있을 확률들을 표시하는 확률 분포(520)를 결정 및 출력한다. 탐색 방법은 이러한 확률들에 기반하여 이러한 워드들 중 하나 이상을 선택한다. 후속 반복에서, 탐색 방법은, 워드 시퀀스의 N 번째 워드에 대한 워드 분포를 결정하기 위해, 워드 시퀀스에 대해 선정된 이전 워드들 및 특징 벡터를 나타내는 임베딩을 다음 LSTM(522)에 입력할 수 있고, LSTM(522)은 유사하게, 워드 N에 대한 확률 분포(530)를 생성한다. 탐색 방법은 이러한 확률들에 기반하여 이러한 워드들 중 하나 이상을 선택한다.
[00107] 따라서, 도 5의 LSTM 네트워크는 워드 시퀀스 내의 각각의 다음 워드의 확률을 결정한다. 실제로, LSTM 네트워크는 각각의 워드 시퀀스와 연관된 확률들을 결정하는데, 왜냐하면, 이전 워드들(그들의 확률들에 기반하여 결정됨)이 LSTM 인스턴스화부가 다음 LSTM 인스턴스화부에 제공하는 워드 시퀀스 임베딩에 포함되기 때문이다. 따라서, 워드 시퀀스들로부터 결정된 제안 응답들은 또한, 확률들과 연관된다.
[00108] 컨디셔닝 언어 모델은 위에서 설명된 바와 같은 트레이닝 데이터에 기반하여 트레이닝될 수 있다. 컨디셔닝 언어 모델은, 제안 응답들이 생성될 이미지를 수신하기 전에 트레이닝 데이터에 기반하여 생성될 수 있어서, 이미지를 수신 시에, 제안 메시지(suggested message)들은 기존의 모델을 사용하여 생성될 수 있다.
[00109] 일부 구현들에서, 컨디셔닝 언어 모델의 일부 또는 전부는, 런타임 동안에 수신된 이미지들에 기반하여 그리고 메시지에서 전송하기 위해 사용자(또는 애플리케이션)에 의해 궁극적으로 선택된 또는 다른 사용을 위해 선택된 제안 응답들에 기반하여 업데이트될 수 있다. 예컨대, 수신된 이미지 및 사용자가 선택한 응답은 모델의 트레이닝을 업데이트하는 데 있어서 사용되는 새로운 이미지-응답 쌍으로서 제공될 수 있다.
[00110] 일부 예들에서, 트레이닝 데이터는 이미지들 및 그러한 이미지들에 대한 응답들을 포함하는 메시지 데이터일 수 있다. 예컨대, 메시지 데이터는, 예컨대 어떤 인간 사용자들도 참여자들이 아닌 시뮬레이팅된 대화들에 기반하는 합성 데이터일 수 있다. 일부 구현들에서, 트레이닝 데이터는, 트레이닝 목적들을 위해 그러한 데이터를 제공하는 데 동의한 사용자들에 의해 실제로 교환된 이미지들 및 메시지들을 포함할 수 있다. 트레이닝 데이터는 사용하기 전에, 사용자 식별자들 및 다른 사용자-관련 정보를 제거하도록 처리된다. 예컨대, 일부 구현들에서, 이미지-응답 쌍들은, 수신된 특정 이미지, 및 그 특정 이미지를 수신하는 것에 대한 회답으로 사용자에 의해 선택되어 송신된 응답의 콘텐츠를 식별하는 트레이닝 메시지 데이터로서 획득될 수 있다. 예컨대, 응답들은 대화 동안 메시징 애플리케이션에서 선택되었을 수 있다.
[00111] 일부 구현들에서, 메시지 데이터의 세트로부터 트레이닝 메시지 데이터의 적어도 일부를 결정하기 위해, 시스템은, 메시지들에서 이미지들을 수신하는 것에 대한 회답으로 메시지 데이터의 세트에서 사용자들로부터의 빈번한 이력적 응답들을 결정할 수 있고, 가장 빈번한 응답들 및 이미지들이 시스템에 의해 정리되어(organized) 트레이닝 데이터로서 저장될 수 있다.
[00112] 일부 구현들에서, 메시지 데이터의 세트에서 가장 빈번한 응답들 중 많은 응답들은 제안 응답들을 결정하기에는 다른 덜 빈번한 응답들만큼 적절하지 않을 수 있다. 예컨대, 가장 빈번한 응답들은, 특정 이미지들(예컨대, 특정 타입들의 이미지 콘텐츠)에 대해 특정하지 않을 수 있는 응답들에 의해 지배적일 수 있다. 일부 예들에서, 일반적인 응답, 이를테면, "lol"은 많은 상이한 이미지들 및/또는 많은 상이한 타입들의 이미지 콘텐츠(예컨대, 이미지 특징들)에 대한 가장 빈번한 응답일 수 있고, 임의의 특정 이미지 콘텐츠 또는 타입들의 이미지 콘텐츠에 특정하지 않다. 일부 구현들은 트레이닝 데이터를 위해, 이미지에 대해 더 콘텐츠-특정적인 응답들을 획득하기 위해, 그러한 빈번한 일반적 응답들을 필터링 아웃시킬 수 있다. 예컨대, 이미지들과 응답들 사이에서 통계적 연관성 스코어들이 컴퓨팅될 수 있다. 일부 예들에서, 아래와 같이 각각의 이미지-응답 쌍에 대해 PMI(pointwise mutual information)가 결정될 수 있다:
Figure pct00001
[00113] 특정 연관성 임계치(예컨대, PMI 임계치) 미만의 연관성 스코어(예컨대, PMI)를 갖는 쌍들은 트레이닝 데이터로부터 제거될 수 있다. 일부 예들에서, 연관성 임계치 1이 사용될 수 있다. 필터링 이후의 나머지 쌍들은, 메시지 데이터의 세트에서 이미지 및 응답이 독립적으로 발생할 때, 필터링된 쌍들보다 더 빈번하게 발생하며, 따라서, 이러한 나머지 쌍들의 응답들은 이러한 나머지 쌍들의 이미지 콘텐츠에 대해 더 특정하다(예컨대, 나머지 쌍들은 서로 더 연관된 이미지들 및 응답들을 갖는 반면, 필터링 아웃된 쌍들은 서로 덜 연관된 이미지들 및 응답들을 가짐). 나머지 쌍들은 컨디셔닝 언어 모델을 트레이닝하기 위한 트레이닝 데이터로서 사용되어, 나머지 쌍들에 포함된 이미지들과 유사한 것으로 검출된 새로운 이미지들에 대해 제안 응답들을 생성할 수 있다. 따라서, 트레이닝 데이터는, 트레이닝 데이터 내의 이전 응답들이, 트레이닝 데이터의 필터링 아웃된 다른 더 일반적인 이전 응답들보다 이전 이미지들의 특정 콘텐츠에 더 특정하도록, 필터링될 수 있다.
[00114] 일부 구현들에서, 사용자 동의가 획득된 경우, (예컨대, 이전 응답 데이터에서 표시된 바와 같은) 하나 이상의 응답들에 대한 사용자의 선호도는 모델의 트레이닝을 위한 트레이닝 데이터에서 동일한 또는 유사한 응답들을 가중하는 데 사용될 수 있다. 사용자 선호도는, 예컨대 사용자에 의해 빈번하게 제공된(예컨대, 임계 횟수보다 많이 사용자에 의해 제공됨) 그리고/또는 사용자에 의해 수신되고 그리고 (예컨대, 명시적인 사용자 평가(rating) 또는 긍정적인 리턴 회답(return reply)을 이용하여) 호의적으로 평가된(rated favorably) 응답들에 대해 표시될 수 있다. 예컨대, 동일한 또는 유사한 응답들은 모델의 트레이닝에서 더 큰 바이어스를 가질 수 있어서, 예컨대, 모델이 위에서 설명된 바와 같이 확률들을 생성할 때, 이러한 응답들이 더 큰 확률들 또는 스코어들을 갖게 할 수 있다. 유사한 응답들은, 동일한 워드 루트(word root)들(예컨대, 접미사들 또는 구두점이 없는 워드들)을 갖고 그리고/또는 참조된 데이터베이스들(예컨대, 시소러스, 사전들 등), 지식 그래프들, 또는 모델들에 의해 결정된 것과 동일한 의미론적 의미를 갖는 응답들을 포함할 수 있다.
[00115] 본원에서 설명되는 방법들, 블록들, 및 동작들은 도시되거나 설명된 것과는 상이한 순서로 수행될 수 있고, 그리고/또는 적합한 경우 다른 블록들 또는 동작들과 (부분적으로 또는 완전히) 동시에 수행될 수 있다. 일부 블록들 또는 동작들은 데이터의 일 부분에 대해 수행될 수 있고, 예컨대 데이터의 다른 부분에 대해 나중에 다시 수행될 수 있다. 설명된 블록들 및 동작들 모두가 다양한 구현들에서 수행될 필요는 없다. 일부 구현들에서, 블록들 및 동작들은 방법들에서 여러번, 상이한 순서로, 그리고/또는 상이한 시간들에서 수행될 수 있다.
[00116] 일부 구현들에서, 방법들 중 일부 또는 전부는 시스템, 이를테면, 하나 이상의 클라이언트 디바이스들 상에서 구현될 수 있다. 일부 구현들에서, 본원에서 설명되는 하나 이상의 방법들은, 예컨대 서버 시스템 상에서, 그리고/또는 서버 시스템 및 클라이언트 시스템 둘 모두 상에서 구현될 수 있다. 일부 구현들에서, 하나 이상의 서버들 및/또는 클라이언트들의 상이한 컴포넌트들이 방법들의 상이한 블록들, 동작들, 또는 다른 부분들을 수행할 수 있다.
[00117] 도 6은, 메시징 애플리케이션이 사용자들 사이의 대화를 위해 사용되는 사용자 인터페이스(601)를 디스플레이하는 예시적인 클라이언트 디바이스(600)의 그래픽 표현이다. 이러한 예에서, 제1 사용자 및 제2 사용자는 자신들의 클라이언트 디바이스들을 통해 채팅에 참여하며, 제2 사용자는 클라이언트 디바이스(600)를 동작시키고 있다. 디스플레이된 아이콘(602)에 의해 표현되는 제1 사용자는 사용자 인터페이스에서 디스플레이되는 바와 같은 메시지(604)를 제2 사용자에게 전송한다. 예컨대, 메시지(602)는, 제1 사용자의 사용자 디바이스로부터 네트워크를 통해 제2 사용자에 의해 동작되는 클라이언트 디바이스(600)에 송신되었을 수 있다. 제2 사용자는 사용자 인터페이스에서 디스플레이되는 메시지(606)로 응답한다. 예컨대, 제2 사용자는, 예컨대 디스플레이되는 키보드 또는 다른 입력 디스플레이 또는 디바이스를 통해 사용자 인터페이스(601)에서 메시지(606)를 입력할 수 있다. 응답하여, 제1 사용자는 이미지(608)를 포함하는 메시지를 제2 사용자에게 전송하며, 이미지(608)는 사용자 인터페이스에서, 대화의 이전 메시지들 후에(예컨대, 아래에) 디스플레이된다. 일부 예들에서, 제1 사용자(602)는 인간 사용자이다. 일부 구현들에서, 제1 사용자(602)는 봇일 수 있다.
[00118] 일부 구현들에서, 제1 사용자는 (예컨대, 메시징 애플리케이션(103)이 SMS, 또는 전화 번호들을 활용하는 다른 메시징 애플리케이션을 통해 동작할 때) 전화 번호를 메시징함으로써 또는 (예컨대, 메시징 애플리케이션(103)이 RCS(rich communications services) 또는 다른 채팅 인터페이스를 통해 동작할 때) 연락처 리스트로부터 사용자를 선택함으로써, 제2 사용자에게 메시지들을 전송한다.
[00119] 도 7은 수신된 이미지에 대해 생성된 제안 응답들을 포함하는, 메시징 애플리케이션에서의 대화가 있는, 도 6의 예시적인 클라이언트 디바이스(600) 및 사용자 인터페이스(601)의 그래픽 표현이다. 도 7에 예시된 대화는 도 6의 대화와 동일하다. 도 7에서 확인되는 바와 같이, 메시징 애플리케이션(103)은, 예컨대 도 2에 예시된 방법을 사용함으로써, 사용자 인터페이스(601)에서 디스플레이되는 이미지(608)에 대한 하나 이상의 제안 응답들(710)을 제공한다. 대안적으로, (예컨대, 키보드, 음성 커맨드들 등을 통해) 제1 사용자에게 전송할 텍스트 메시지를 입력하기 위해, 메시지 필드(718)가 제2 사용자에 의해 사용될 수 있다. 이미지(608)를 수신하는 것에 대한 응답으로서, 제안 응답들(710) 중 임의의 제안 응답이 제2 사용자에 의해 선택될 수 있다. 예컨대, 제2 사용자가 이미지(608)를 포함하는 메시지에 응답하기 위해 선택할 옵션들로서 (텍스트 "aww"를 갖는) 제안 응답(712), (텍스트 "cute couple?"을 갖는) 제안 응답(714), 및 (텍스트 "where is that?"를 갖는) 제안 응답(716)이 사용자 인터페이스(601)에서 디스플레이된다. 예컨대, 도 7에서, 제안 응답들(712, 714, 및 716)은 수신된 이미지(608) 아래에 디스플레이되지만, 사용자 인터페이스의 다양한 위치들 중 임의의 위치에(예컨대, 사용자 인터페이스(601)에서 별개의 디스플레이되는 필드 또는 윈도우 등으로 이미지(608) 위에, 측면에, 또는 주변에) 디스플레이될 수 있다.
[00120] 도 7에 도시된 예에서, 이미지(608)는, 본원에서 설명되는 바와 같은 모델의 트레이닝에 기반하여 제안 응답들을 결정하기 위해 컨디셔닝 언어 모델에 의해 프로세싱된다. 제안 응답들(710) 중 하나 이상은, 이미지(608)와 유사한 픽셀들을 묘사하는 이미지들에 대해 사용자들에 의해 제공된 이전 응답들을 포함하는 트레이닝 데이터에 의해 트레이닝된 컨디셔닝 언어 모델에 기반하여 결정될 수 있다. 이미지 픽셀들의 표현에 기반하여 응답들이 직접적으로 결정되기 때문에, 이미지에 적합하고 관련이 있는, 그리고 시스템에 의해 이미지(608)에서 검출된 개념들 또는 묘사된 이미지 특징들에 기반하는 결정된 라벨들로 제한되지 않는 제안 응답들이 결정되고 제시될 수 있다. 이러한 예에서, 제안 응답(712)("aww")은 이전 메시지 데이터에 기반하는 기계 학습 트레이닝 및 이미지 픽셀들에 기반하여 결정된다. 제안 응답(712)은, 라벨들이 결정되고 제안 응답들이, 예컨대 라벨들을 제안 응답들에 관련시키는 데이터에 기반하여 라벨들로부터 결정되는 다른 기법들에 의해서는 결정될 수 없었을 수 있다. 예컨대, 그러한 라벨들은 시스템에 의해 이미지(608)에서 검출된 이미지 특징들을 설명하기 위해 "persons", "man", 및 "woman"을 포함할 수 있고, 그러한 라벨들은 제안 응답, 이를테면, 응답(712) 및/또는 다른 응답들(714 또는 716)을 생성하지 못할 수 있다.
[00121] 도 8, 도 9, 도 10, 및 도 11은, 예컨대 상이한 사용자 디바이스로부터의 메시지에서 수신되는 이미지들에 대해 결정된 제안 응답들의 추가의 예들을 예시하는 그래픽 표현들이다. 이러한 예들에서, 제안 응답들은 메시징 애플리케이션의 사용자 인터페이스들에서 디스플레이될 수 있고, 본원에서 설명되는 하나 이상의 특징들을 사용하여 메시징 애플리케이션에 의해 또는 메시징 애플리케이션에 대해 생성될 수 있다.
[00122] 도 8은 수신된 이미지(802), 및 이미지(802)에 기반하여 컨디셔닝 언어 모델을 사용하여 결정되고 그리고 이미지(802)에 대한 회답으로 제2 사용자에 의한 선택을 위해 사용자 인터페이스(800)에서 제시되는 제안 응답들(804)을 디스플레이하는 사용자 인터페이스(800)를 예시한다. 이러한 예에서, 제안 응답들은 제안 응답(806)("beautiful"), 제안 응답(808)("pretty"), 및 제안 응답(810)("where is that?")을 포함한다. 선택된 응답(들)을 통신 네트워크를 통해 제1 사용자에게 전송하기 위해 응답들(806, 808, 및 810) 중 하나 이상이 선택될 수 있다(예컨대, 선택된 제안 응답이 전송되는 것을 제2 사용자가 확인(confirm)하도록 요청하는 확인 프롬프트(confirmation prompt)가 디스플레이될 수 있음). 대안적으로, 제1 사용자에게 전송할 텍스트 메시지를 입력하기 위해 메시지 필드(812)가 제2 사용자에 의해 사용될 수 있다. 응답들(806, 808, 및 810)은 이미지 픽셀들에 기반하여 직접적으로 결정되는 적합한 응답들일 수 있다. 예컨대, 응답(806)은, 이미지에서 묘사된 개념들 및 검출된 이미지 특징들에 기반하여 결정된 라벨들, 이를테면, "lake", "sky" 및 "trees"에 기반하여 제안 응답들이 결정되는 다른 기법들에 의해서는 결정될 수 없었을 수 있다.
[00123] 도 9는 유사하게, 수신된 이미지(902), 및 이미지(902)에 기반하여 컨디셔닝 언어 모델을 사용하여 결정되고 그리고 이미지(902)에 대한 회답으로 제2 사용자에 의한 선택을 위해 사용자 인터페이스(900)에서 제시되는 제안 응답들(904)을 디스플레이하는 사용자 인터페이스(900)를 예시한다. 이러한 예에서, 제안 응답들은 제안 응답(906)("looks like fun"), 제안 응답(908)("whee"), 및 제안 응답(910)("fun!")을 포함한다. 선택된 응답(들)을 통신 네트워크를 통해 제1 사용자에게 전송하기 위해 응답들(906, 908, 및 910) 중 하나 이상이 제2 사용자에 의해 선택될 수 있다. 대안적으로, 제1 사용자에게 전송할 텍스트 메시지를 입력하기 위해 메시지 필드(912)가 제2 사용자에 의해 사용될 수 있다. 응답들(906, 908, 및 910)은 이미지 픽셀들에 기반하여 직접적으로 결정되는 적합한 응답들일 수 있다. 예컨대, 응답(906)은, 이미지에서 묘사된 개념들 및 검출된 이미지 특징들에 기반하여 이미지에 대해 결정된 라벨들, 이를테면, "persons", "man", "woman", 및 "trees"에 기반하여 제안 응답들이 결정되는 다른 기법들에 의해서는 결정될 수 없었을 수 있다.
[00124] 도 10은 유사하게, 수신된 이미지(1002), 및 이미지(1002)에 기반하여 컨디셔닝 언어 모델을 사용하여 결정되고 그리고 이미지(1002)에 대한 회답으로 제2 사용자에 의한 선택을 위해 사용자 인터페이스(1000)에서 제시되는 제안 응답들(1004)을 디스플레이하는 사용자 인터페이스(1000)를 예시한다. 이러한 예에서, 제안 응답들은 제안 응답(1006)("those are cute"), 제안 응답(1008)("I like it"), 및 제안 응답(1010)("available in red?")을 포함한다. 선택된 응답(들)을 통신 네트워크를 통해 제1 사용자에게 전송하기 위해 응답들(1006, 1008, 및 1010) 중 하나 이상이 제2 사용자에 의해 선택될 수 있다. 대안적으로, 제1 사용자에게 전송할 텍스트 메시지를 입력하기 위해 메시지 필드(1012)가 제2 사용자에 의해 사용될 수 있다. 응답들(1006, 1008, 및 1010)은 이미지 픽셀들에 기반하여 직접적으로 결정되는 적합한 응답들일 수 있다. 예컨대, 응답(1006)은, 이미지에서 묘사된 개념들 및 검출된 이미지 특징들에 기반하여 이미지에 대해 결정된 라벨들, 이를테면, "clothing" 및 "pants"에 기반하여 제안 응답들이 결정되는 다른 기법들에 의해서는 결정될 수 없었을 수 있다.
[00125] 도 11은 유사하게, 수신된 이미지(1102), 및 이미지(1102)에 기반하여 컨디셔닝 언어 모델을 사용하여 결정되고 그리고 이미지(1102)에 대한 회답으로 제2 사용자에 의한 선택을 위해 사용자 인터페이스(1100)에서 제시되는 제안 응답들(1104)을 디스플레이하는 사용자 인터페이스(1100)를 예시한다. 이러한 예에서, 제안 응답들은 제안 응답(1106)("You look great"), 제안 응답(1108)("she loves you!"), 및 제안 응답(1110)("lucky guy")을 포함한다. 선택된 응답(들)을 통신 네트워크를 통해 제1 사용자에게 전송하기 위해 응답들(1106, 1108, 및 1110) 중 하나 이상이 제2 사용자에 의해 선택될 수 있다. 대안적으로, 제1 사용자에게 전송할 텍스트 메시지를 입력하기 위해 메시지 필드(1112)가 제2 사용자에 의해 사용될 수 있다. 응답들(1106, 1108, 및 1110)은 이미지 픽셀들에 기반하여 직접적으로 결정되는 적합한 응답들일 수 있다. 예컨대, 응답(1106)은, 이미지에서 묘사된 개념들 및 검출된 이미지 특징들에 기반하여 이미지에 대해 결정된 라벨들, 이를테면, "persons", "woman", "man", 및 "kiss"에 기반하여 제안 응답들이 결정되는 다른 기법들에 의해서는 결정될 수 없었을 수 있다.
봇 구현들
[00126] 봇은, 예컨대 메시징 애플리케이션(103a/103b)을 통해, 주로 텍스트를 통하여 사용자들이 상호작용하는, 하나 이상의 컴퓨터들 상에 구현되는 자동화된 서비스이다. 봇은, 봇이 다양한 메시징 애플리케이션들의 사용자들과 상호작용할 수 있도록 봇 제공자에 의해 구현될 수 있다. 일부 구현들에서, 메시징 애플리케이션(103a/103b)의 제공자는 또한 하나 이상의 봇들을 제공할 수 있다. 일부 구현들에서, 메시징 애플리케이션(103a/103b)의 제공자에 의해 제공되는 봇들은, 예컨대 다른 제공자들에 의해 제공되는 다른 메시징 애플리케이션들에 그 봇들이 포함될 수 있도록 구성될 수 있다. 봇은, 다른 모드들에 비해 몇몇 장점들을 제공할 수 있다. 예컨대, 봇은, 클라이언트 디바이스 상에 애플리케이션을 설치할 필요 없이 또는 웹사이트에 액세스함이 없이 사용자가 새로운 서비스(예컨대, 택시 예약 서비스, 식당 예약 서비스 등)를 시도하는 것을 가능하게 할 수 있다. 또한, 사용자는 텍스트를 통해 봇과 상호작용할 수 있는데, 이는, 웹사이트, 소프트웨어 애플리케이션, (예컨대, IVR(interactive voice response) 서비스에 대한) 텔레폰 콜, 또는 서비스와 상호작용하는 다른 방식들을 사용하는 데 요구되는 것과 비교하여 최소의 학습을 요구하거나 학습을 요구하지 않는다. 메시징 서비스 또는 애플리케이션 내에 봇을 통합하는 것은 또한, 사용자들이 다른 사용자들과 협업하여 메시징 서비스 내에서 다양한 태스크들, 이를테면, 여행 계획, 쇼핑, 이벤트들을 스케줄링하는 것, 정보를 획득하는 것 등을 완수하는 것을 가능하게 할 수 있고 그리고 그 태스크들을 완수하기 위해 다양한 애플리케이션들(예컨대, 택시 예약 애플리케이션, 식당 예약 애플리케이션, 캘린더 애플리케이션 등) 또는 웹사이트들 사이에서 스위칭하는 것과 같은 번거로운 동작들을 제거할 수 있다.
[00127] 봇은 정보를 제공하거나 또는 메시징 애플리케이션(103) 내에서 특정 액션들을 수행하기 위해 메시징 애플리케이션(103a/103b)을 통해 하나 이상의 사용자들(예컨대, 사용자들(125a-n) 중 임의의 사용자)과 상호작용하도록 구성된 컴퓨터 프로그램 또는 애플리케이션(예컨대, 소프트웨어 애플리케이션)으로서 구현될 수 있다. 일 예로서, 정보 검색 봇(information retrieval bot)은 인터넷 상에서 정보를 탐색하고 메시징 앱 내에서 가장 관련이 있는 탐색 결과를 제시할 수 있다. 다른 예로서, 여행 봇은, 예컨대, 메시징 앱 내에서 여행 및 호텔 티켓들의 구매를 가능하게 하고, 메시징 앱 내에서 호텔 예약들을 수행하고, 메시징 앱 내에서 렌트 카 예약들을 수행하는 것 등을 함으로써 메시징 애플리케이션(103)을 통해 여행 어레인지먼트들을 수행하기 위한 능력을 가질 수 있다. 다른 예로서, 택시 봇(taxi bot)은, 예컨대, 별개의 택시 예약 앱을 호출하거나 불러옴(call)이 없이, (사용자(125)가 위치 정보에 대한 액세스를 허가한 경우, 택시 봇에 의해 클라이언트 디바이스(115)로부터 획득된) 사용자의 위치로 택시를 부르기 위한 능력을 가질 수 있다. 다른 예로서, 코치/가정교사 봇(coach/tutor bot)은, 예컨대, 시험에 나올 가능성이 있는 질문들을 묻고 사용자의 응답들이 정확한지 또는 부정확한지에 대한 피드백을 제공함으로써 메시징 앱 내에서 몇몇 주제로 사용자를 가르치기 위해 사용자를 지도할 수 있다. 다른 예로서, 게임 봇은 메시징 앱 내에서 사용자와 같은 편에서 또는 상대 편에서 게임을 플레이할 수 있다. 다른 예로서, 상업 봇(commercial bot)은, 예컨대, 상인의 카탈로그로부터 제품 정보를 검색(retrieving)하고 메시징 앱을 통한 구매를 가능하게 함으로써 특정 상인으로부터의 서비스들을 제공할 수 있다. 다른 예로서, 인터페이스 봇은, 메시징 앱의 사용자가 원격 디바이스 또는 운송수단과 채팅하고, 그들로부터 정보를 검색하고, 그리고/또는 그들에게 명령들을 제공하도록, 원격 디바이스 또는 운송수단과 인터페이싱할 수 있다.
[00128] 봇의 능력들은 사용자의 의도를 이해하는 것 및 그 의도로 실행하는 것을 포함할 수 있다. 사용자의 의도는 사용자의 대화 및 그 콘텍스트를 분석 및 이해함으로써 이해될 수 있다. 봇은 또한, 시간의 경과에 따라 전개되는 대화에 기반하여 대화의 콘텍스트 변화 또는 사용자들의 감정들 및/또는 의도들의 변화를 이해할 수 있다. 예컨대, 만약 사용자 A가 커피 미팅을 제안하지만 사용자 B가 자신은 커피를 좋아하지 않는다고 언급한다면, 봇은 커피에 대한 네거티브 감정 스코어를 사용자 B에게 할당할 수 있고, 미팅을 위해서는 커피 숍을 제안하지 않을 수 있다.
[00129] 메시징 애플리케이션(103a/103b)의 사용자들과 통신할 수 있는 봇들을 구현하는 것은 많은 장점들을 제공할 수 있다. 통상적으로, 사용자는 활동들, 이를테면, 요금들을 지불하는 것, 음식을 주문하는 것, 티켓들을 예약하는 것 등을 수행하기 위해 소프트웨어 애플리케이션 또는 웹사이트를 활용할 수 있다. 그러한 구현들에 대한 문제점은 다수의 활동들을 수행하기 위해 다수의 소프트웨어 애플리케이션들 및 웹사이트들을 설치 또는 사용하도록 사용자에게 요구된다는 것이다. 예컨대, 사용자는, (예컨대, 공공 기업으로부터의) 공과금 요금을 지불하고, 영화 티켓들을 구입하고(예컨대, 티켓팅 서비스 제공자로부터의 티켓 예약 애플리케이션), (예컨대, 개개의 식당들로부터) 식당 예약들을 수행하기 위해 상이한 소프트웨어 애플리케이션들을 설치해야 할 수 있거나, 또는 각각의 활동에 대해 개개의 웹사이트를 방문할 필요가 있을 수 있다. 그러한 구현들에 대한 다른 문제점은 사용자가, 복잡한 사용자 인터페이스, 예컨대, 다수의 사용자 인터페이스 엘리먼트들, 이를테면, 윈도우들, 버튼들, 체크박스들, 다이얼로그 박스들 등을 사용하여 구현된 사용자 인터페이스를 학습할 필요가 있을 수 있다는 것이다.
[00130] 결과적으로, 하나 이상의 설명된 구현들의 장점은 단일 애플리케이션이, 별개의 웹사이트에 액세스하거나 또는 소프트웨어 애플리케이션들을 설치 및 실행하도록 요구되지 않으면서 사용자가 임의의 수의 당사자들과의 상호작용을 수반하는 활동들을 수행하는 것을 가능하게 하는 것이며, 이는, 클라이언트 디바이스 상의 메모리, 저장소, 및 프로세싱 자원들의 소비를 감소시키는 기술적 효과를 갖는다. 설명된 구현들의 장점은 사용자가, 예컨대, 복잡한 사용자 인터페이스를 학습할 필요 없이 그러한 활동들을 완료하는 것을 대화식 인터페이스가 더 용이하고 더 신속하게 만드는 것이며, 이는, 컴퓨테이셔널 자원들의 소비를 감소시키는 기술적 효과를 갖는다. 설명된 구현들의 다른 장점은 봇들을 구현하는 것이, 다양한 참여 엔티티들이 더 낮은 비용으로 사용자 상호작용을 제공하는 것을 가능하게 할 수 있다는 것이며, 이는, 사용자 상호작용을 가능하게 하기 위해 배치되는 컴퓨테이셔널 자원들, 이를테면, 통신 서버, 하나 이상의 웹 서버들 상에 호스팅된 웹사이트, 이메일 서버 상에 호스팅된 고객 지원 이메일 등 중 하나 이상을 사용하여 구현된 수신자-부담 번호에 대한 필요성을 감소시키는 기술적 효과를 갖는다. 설명된 특징들의 다른 기술적 효과는 통신 네트워크들에 걸쳐 사용자 태스크들을 완료하기 위해 요구되는 시스템 프로세싱 및 송신 자원들의 소비의 문제점의 감소이다.
[00131] 본원의 소정의 예들이 봇과 하나 이상의 사용자들 사이의 상호작용을 설명하지만, 다양한 타입들의 상호작용들, 이를테면, 봇과 사용자(125) 사이의 일대일 상호작용, (예컨대, 그룹 메시징 대화 내에서의) 2명 이상의 사용자들과 봇 사이의 일대다 상호작용들, 다수의 봇들과 사용자 사이의 다대일 상호작용들, 및 다수의 봇들과 다수의 사용자들 사이의 다대다 상호작용들이 가능하다. 또한, 일부 구현들에서, 봇은 또한, 메시징 애플리케이션(103)을 통해, 봇들 사이의 직접 통신을 통해, 또는 조합을 통해 다른 봇(예컨대, 봇들(107a/107b, 109a/109b, 111, 113 등))과 상호작용하도록 구성될 수 있다. 예컨대, 식당 예약 봇은 테이블을 예약하기 위해 특정 식당에 대한 봇과 상호작용할 수 있다.
[00132] 소정의 실시예들에서, 봇은 사용자와 대화식으로 상호작용하기 위해 자연 언어를 사용하도록 대화식 인터페이스를 사용할 수 있다. 소정의 실시예들에서, 봇은, 예컨대 "the location of restaurant R is L"과 같은 템플릿을 사용하여, 식당 주소에 대한 요청에 대한 응답으로, 템플릿-기반 포맷을 사용하여 사용자와 상호작용할 문장들을 생성할 수 있다. 소정의 경우들에서, 사용자는 봇 상호작용 포맷, 예컨대 봇이 자연 언어를 사용하여 사용자와 상호작용할 것인지 여부, 봇이 템플릿-기반 상호작용들을 사용할 것인지 여부 등을 선택하는 것이 가능해질 수 있다.
[00133] 봇이 자연 언어를 사용하여 대화식으로 상호작용하는 경우들에서, 봇의 상호작용들의 콘텐츠 및/또는 스타일은: 자연 언어 프로세싱을 사용하여 결정된 대화의 콘텐츠, 대화들에서 사용자들의 아이덴티티들, 및 하나 이상의 대화식 콘텍스트들(예컨대, 사용자의 상호작용들에 대한 이력적 정보, 소셜 그래프에 기반하는 대화의 사용자들 사이의 연결들), 외부 조건들(예컨대, 날씨, 교통), 사용자의 스케줄들, 사용자들과 연관된 관련된 콘텍스트 등 중 하나 이상에 기반하여 동적으로 변할 수 있다. 이러한 경우들에서, 봇의 상호작용들의 콘텐츠 및 스타일은 대화에 참여한 사용자들이 동의를 제공한 그러한 팩터들에만 기반하여 변화된다.
[00134] 일 예로서, 만약 대화의 사용자들이 (예컨대, 속어 용어(slang term)들 또는 이모지들이 없거나 최소한인) 형식 언어(formal language)를 사용하는 것으로 결정된다면, 봇은 또한 형식 언어를 사용하여 그 대화 내에서 상호작용할 수 있고, 그 반대도 가능하다. 다른 예로서, 만약 대화의 사용자가 (현재 및/또는 과거 대화들에 기반하여) 이모지들의 과중 사용자인 것으로 결정된다면, 봇은 또한 하나 이상의 이모지들을 사용하여 그 사용자와 상호작용할 수 있다. 다른 예로서, 대화의 두 사용자들이 (예컨대, 사용자들 사이에, 예컨대 사용자들이 친구들의 친구들의 친구들임을 나타내는 2개 이상의 중간 노드(intermediate node)들을 갖는) 소셜 그래프에 원격으로 연결되어 있다고 결정된다면, 봇은 그 대화에서 보다 형식적인 언어를 사용할 수 있다. 대화에 참여한 사용자들이, 팩터들, 이를테면, 사용자의 소셜 그래프, 스케줄들, 위치, 또는 사용자들과 연관된 다른 콘텍스트를 봇이 활용하는 것에 대한 동의를 제공하지 않은 경우들에서, 봇의 상호작용의 콘텐츠 및 스타일은 그러한 팩터들의 활용을 요구하지 않는 디폴트 스타일, 예컨대 중립 스타일(neutral style)일 수 있다.
[00135] 또한, 일부 구현들에서, 하나 이상의 봇들은 사용자와의 앞뒤 대화에 관여하는 기능을 포함할 수 있다. 예컨대, 사용자가, 예컨대 "@moviebot Can you recommend a movie?"를 입력함으로써 영화들에 관한 정보를 요청하는 경우, 봇 "moviebot"은 "Are you in the mood for a comedy?"로 응답할 수 있다. 이어서, 사용자는 응답할 수 있는데, 예컨대 "nope"으로 응답할 수 있고, 이에 대해 봇은 "OK. The sci-fi movie entitled Space and Stars has got great reviews. Should I book you a ticket?"으로 응답할 수 있다. 이어서, 사용자는 "Yeah, I can go after 6 pm. Please check if Steve can join"을 표시할 수 있다. 봇이 그들의 연락처들에 관한 정보에 액세스하는 것에 대한 사용자의 동의에 따라 그리고 봇으로부터 메시지들을 수신하는 것에 대한 친구인 Steve의 동의에 따라, 봇은 사용자의 친구인 Steve에게 메시지를 전송하고 적절한 시간에 영화 티켓들을 예약하기 위한 추가의 액션들을 수행할 수 있다.
[00136] 소정의 실시예들에서, 대화에 참여한 사용자는, 예컨대, 봇 이름 또는 봇 핸들(bot handle)(예컨대, taxi, @taxibot, @movies 등)을 타이핑함으로써, 음성 커맨드(예컨대, "invoke bankbot" 등)를 사용함으로써, 사용자 인터페이스 엘리먼트(예컨대, 봇 이름 또는 핸들로 라벨링된 버튼 또는 다른 엘리먼트)의 활성화에 의한 식으로, 특정 봇 또는 특정 태스크들을 수행하는 봇을 호출하는 것이 가능해질 수 있다. 일단 봇이 호출되면, 사용자(125)는 다른 사용자들(125)에게 메시지들을 전송하는 것과 유사한 방식으로 메시징 애플리케이션(103a/103b)을 통해 봇에 메시지를 전송할 수 있다. 예컨대, 택시를 부르기 위해, 사용자는 "@taxibot get me a cab"을 타이핑할 수 있고; 호텔 예약들을 수행하기 위해, 사용자는 "@hotelbot book a table for 4 at a Chinese restaurant near me"를 타이핑할 수 있다.
[00137] 소정의 실시예들에서, 봇은 특별히 호출되지 않은 채로 메시징 대화 내에서 정보 또는 액션들을 자동적으로 제안할 수 있다. 즉, 사용자들은 봇을 특별히 호출할 필요가 없을 수 있다. 이러한 실시예들에서, 봇은, 지속적으로 또는 개별 시점들에서 대화의 분석 및 이해에 의존할 수 있다. 특정 사용자 요구들을 이해하고 언제 봇에 의해 보조(assistance)가 제안되어야 하는지를 식별하기 위해 대화의 분석이 사용될 수 있다. 일 예로서, 봇은 만약 (예컨대, 사용자가 다른 사용자에게 질문을 하는 것에 기반하여, 다수의 사용자들이 그들이 어떤 정보를 갖지 않음을 표시하는 것에 기반하여) 사용자가 정보를 필요로 한다고 결정된다면, 어떤 정보에 대해 탐색하고 대답을 제안할 수 있다. 다른 예로서, 만약 다수의 사용자들이 중국 음식을 먹는 것에 관심을 표명했다고 결정된다면, 봇은 선택적인 정보, 이를테면, 사용자들 근처의 중국 식당들의 웹사이트들에 대한 링크들, 평가(rating)들, 위치들을 포함하여, 그 중국 식당들의 세트를 사용자들에게 자동적으로 제안할 수 있다.
[00138] 소정의 실시예들에서, 봇을 자동적으로 호출하거나 사용자가 봇을 명시적으로 호출하기를 기다리기보다는, 하나 이상의 봇들을 호출하기 위해 메시징 대화에서 하나 이상의 사용자들에게 자동적인 제안이 이루어질 수 있다. 이러한 실시예들에서, 대화는 지속적으로 또는 개별 시점들에서 분석될 수 있으며, 특정 사용자 요구들을 이해하고 대화 내에서 언제 봇이 제안되어야 하는지를 식별하기 위해 대화의 분석이 사용될 수 있다.
[00139] 봇이 특별히 호출되지 않은 채로 메시징 대화 내에서 정보 또는 액션들을 자동적으로 제안할 수 있는 실시예들에서, 그러한 기능은, 예컨대, 만약 메시징 대화에 참여한 하나 이상의 사용자들이 봇이 사용자의 대화의 분석을 수행하는 것에 대한 동의를 제공하지 않는다면, 디스에이블된다. 또한, 그러한 기능은 또한 사용자 입력에 기반하여 일시적으로 디스에이블될 수 있다. 예컨대, 대화가 개인적이라고 사용자들이 표시할 때, 봇이 활성화되도록 사용자들이 입력을 제공할 때까지 대화식 콘텍스트의 분석은 일시 중단된다. 또한, 분석 기능이 디스에이블되었다는 표시들이, 예컨대 사용자 인터페이스 엘리먼트를 이용하여, 대화의 참여자들에게 제공될 수 있다.
[00140] 다양한 구현들에서, 봇은 다양한 구성들로 구현될 수 있다. 예컨대, 도 1에 도시된 바와 같이, 봇(105)은 클라이언트 디바이스(115a) 상에서 구현된다. 이러한 예에서, 봇은 클라이언트 디바이스(115a)에 로컬인 소프트웨어 애플리케이션의 모듈일 수 있다. 예컨대, 만약 사용자가 클라이언트 디바이스(115a) 상에 택시 부르기 애플리케이션(taxi hailing application)을 설치하였다면, 봇 기능이 택시 부르기 애플리케이션에 모듈로서 통합될 수 있다. 이러한 예에서, 사용자는, 예컨대 메시지 "@taxibot get me a cab"를 전송함으로써, 택시 봇을 호출할 수 있다. 메시징 애플리케이션(103b)은 자동적으로, 택시 부르기 애플리케이션의 봇 모듈이 기동되게(launched) 할 수 있다. 이러한 방식으로, 사용자가 메시징 애플리케이션(103)을 통해 봇과의 대화에 참여할 수 있도록 봇이 클라이언트 디바이스 상에서 로컬로 구현될 수 있다.
[00141] 도 1에 도시된 다른 예에서, 봇(107a)은 클라이언트 디바이스(115a) 상에서 구현되는 것으로 도시되고, 봇(107b)은 메시징 서버(101) 상에서 구현되는 것으로 도시된다. 이러한 예에서, 봇은, 예컨대, 클라이언트-서버 컴퓨터 프로그램으로서 구현될 수 있고, 봇 기능의 부분들은 봇(107a)(서버 모듈) 및 봇(107b)(클라이언트 모듈) 각각에 의해 제공된다. 예컨대, 만약 봇이 핸들 @calendar를 갖는 스케줄링 봇이라면, 사용자(115a)는 "@calendar remind me to pick up laundry in the evening"을 타이핑함으로써 리마인더를 스케줄링할 수 있고, 이는 봇(107b)(클라이언트 모듈)에 의해 핸들링될 수 있다. 이러한 예를 계속하면, 만약 사용자(115a)가 봇에게 "check if Jim is free to meet at 4"라고 말한다면, 봇(107a)(서버 모듈)은 메시지들을 교환하기 위해 사용자 Jim(또는 Jim의 스케줄링 봇)과 연락할 수 있고, 사용자(115a)에게 응답을 제공할 수 있다.
[00142] 다른 예에서, 봇(109a)(서버 모듈)은 서버(135) 상에서 구현되고, 봇(109b)(클라이언트 모듈)은 클라이언트 디바이스들(115) 상에서 구현된다. 이러한 예에서, 봇 기능은 메시징 서버(101)와 별개인 서버(135) 및 클라이언트 디바이스들(115) 상에서 구현되는 모듈들에 의해 제공된다. 일부 구현들에서, 봇은, 예컨대, 모듈들이 다수의 클라이언트 디바이스들 및 서버들(예컨대, 클라이언트 디바이스들(115), 서버(135), 메시징 서버(101) 등)에 걸쳐 분산되는 분산형 애플리케이션으로서 구현될 수 있다. 일부 구현들에서, 봇은 서버 애플리케이션, 예컨대, 메시징 서버(101) 상에서 구현되는 봇(111) 및 서버(135) 상에서 구현되는 봇(113)으로서 구현될 수 있다.
[00143] 상이한 구현들, 이를테면, 클라이언트-전용, 서버-전용, 클라이언트-서버, 분산형 등은 상이한 장점들을 제공할 수 있다. 예컨대, 클라이언트-전용 구현들은 봇 기능이 로컬로, 예컨대 네트워크 액세스를 이용하지 않으면서 제공되는 것을 가능하게 하며, 이는 소정의 콘텍스트들에서, 예컨대, 사용자가 네트워크 커버리지 영역 외부에 있거나 또는 낮은 또는 제한된 네트워크 대역폭을 갖는 임의의 영역에 있을 때 유리할 수 있다. 하나 이상의 서버들, 이를테면, 서버-전용, 클라이언트-서버, 또는 분산형 구성들을 포함하는 구현들은 클라이언트 디바이스 상에서 로컬로 제공하는 것이 가능하지 않을 수 있는 소정의 기능, 예컨대 금융 거래들, 티켓 예약들 등을 가능하게 할 수 있다.
[00144] 봇들이 메시징 애플리케이션(103)과 별개인 것으로 도 1이 도시하고 있지만, 일부 구현들에서, 하나 이상의 봇들은 메시징 애플리케이션(103)의 일부로서 구현될 수 있다. 봇들이 메시징 애플리케이션(103)의 일부로서 구현되는 구현들에서, 봇들을 구현하기 전에 사용자 허가가 획득된다. 예컨대, 봇들이 메시징 애플리케이션(103a/103b)의 일부로서 구현되는 경우, 메시징 애플리케이션(103a/103b)은 소정의 활동들을 수행할 수 있는 봇들, 예컨대, 착신 및 발신 메시지들을 번역하는 번역 봇, 사용자의 캘린더 상의 이벤트들을 스케줄링하는 스케줄링 봇 등을 제공할 수 있다. 이러한 예에서, 사용자의 특정 허가 시에만 번역 봇이 활성화된다. 만약 사용자가 동의를 제공하지 않는다면, 메시징 애플리케이션(103a/103b) 내의 봇들은 구현되지 않는다(예컨대, 디스에이블됨, 제거됨 등). 만약 사용자가 동의를 제공한다면, 봇 또는 메시징 애플리케이션(103a/103b)은 특정 기능, 예컨대 번역, 스케줄링 등을 제공하기 위해, 메시징 애플리케이션(103a/103b)을 통해 사용자들 사이에서 교환되는 메시지들의 제한된 사용을 수행할 수 있다.
[00145] 일부 구현들에서, 사용자들(125) 및 메시징 애플리케이션(103a/103b)의 제공자와 별개인 제3자들이, 특정 목적들을 위해 메시징 애플리케이션(103a/103b)을 통해 사용자들(125)과 통신할 수 있는 봇들을 제공할 수 있다. 예컨대, 택시 서비스 제공자는 택시 봇을 제공할 수 있고, 티켓팅 서비스는 이벤트 티켓들을 예약할 수 있는 봇을 제공할 수 있고, 뱅크 봇은 금융 거래들을 수행하기 위한 능력을 제공할 수 있는 식이다.
[00146] 메시징 애플리케이션(103)을 통해 봇들을 구현하는 데 있어서, 봇들은 특정 사용자 인가 시에만 사용자들과 통신하도록 허가된다. 예컨대, 만약 사용자가 봇을 호출한다면, 봇은, 예컨대 봇을 호출하는 사용자의 액션에 기반하여 회답할 수 있다. 다른 예에서, 사용자는 사용자와 연락할 수 있는 특정 봇들 또는 봇들의 타입들을 표시할 수 있다. 예컨대, 사용자는 여행 봇들이 그 사용자와 통신하게 허가할 수 있지만, 쇼핑 봇들에 대해서는 인가를 제공하지 않을 수 있다. 이러한 예에서, 메시징 애플리케이션(103a/103b)은 여행 봇들이 사용자와 메시지들을 교환하게 허가할 수 있지만, 쇼핑 봇들로부터의 메시지들은 필터링하거나 또는 거부할 수 있다.
[00147] 또한, 일부 기능(예컨대, 택시를 부르는 것, 비행 예약을 수행하는 것, 친구와 연락하는 것 등)을 제공하기 위해, 봇들은 사용자에게 봇이 사용자 데이터, 이를테면, 위치, 결제 정보, 연락처 리스트 등에 액세스하게 허가하도록 요청할 수 있다. 그러한 인스턴스들에서, 봇에게 액세스를 허가하거나 또는 거부하기 위한 옵션들이 사용자에게 제시된다. 사용자가 액세스를 거부하는 경우, 봇은 메시지, 예컨대 "Sorry, I am not able to book a taxi for you"를 통해 응답할 수 있다. 또한, 사용자는 제한된 기준으로 정보에 대한 액세스를 제공할 수 있는데, 예컨대 사용자는 봇의 특정 호출(invocation) 시에만 택시 봇이 현재 위치에 액세스하도록 허가할 수 있지만, 그렇지 않은 경우에는 허가하지 않을 수 있다. 상이한 구현들에서, 사용자는 봇이 액세스할 수 있는 정보의 타입, 양, 및 단위(granularity)를 제어할 수 있고, 그리고 언제든지 그러한 허가들을 변경할 수 있는 능력이 (예컨대, 사용자 인터페이스를 통해) 사용자에게 제공된다. 일부 구현들에서, 사용자 데이터는, 예컨대, 개인 식별가능 정보를 제거하는 것, 특정 데이터 엘리먼트들로 정보를 제한하는 것 등을 위해, 봇이 그러한 데이터에 액세스할 수 있기 전에 프로세싱될 수 있다. 또한, 사용자들은 메시징 애플리케이션(103a/103b) 및 하나 이상의 봇들에 의한 사용자 데이터의 사용을 제어할 수 있다. 예컨대, 사용자는 금융 거래들을 수행하는 능력을 제공하는 봇이 거래가 완료되기 전에 사용자 인가를 요구하도록 특정할 수 있는데, 예컨대, 봇은 메시지 "Tickets for the movie Space and Starts are $12 each. Shall I go ahead and book?" 또는 "The best price for this shirt is $125, including shipping. Shall I charge your credit card ending 1234?" 등을 전송할 수 있다.
[00148] 일부 구현들에서, 위에서 설명된 시스템들(예컨대, 도 2-11에 대해 설명된 시스템들)에 의해 생성된 하나 이상의 제안 응답들은 봇을 호출하거나 또는 봇에 커맨딩(예컨대, 봇에게 정보를 요청함)하는 데 사용되는 메시지들일 수 있다. 예컨대, 시스템은, 수신된 이미지가 봇에 의해 제공되는 하나 이상의 기능들 및/또는 정보에 의해 지원될 콘텐츠를 포함하는지 여부를 결정할 수 있다. 일부 예들에서, 대화의 제1 사용자는, "Guess where?"라고 말하는 텍스트 메시지를 제2 사용자에게 전송할 수 있다. 이어서, 제1 사용자는 이미지를 제2 사용자의 디바이스에 전송한다. 시스템은, "guess"라는 워드를 포함하는 문구가, 제안 응답이 이미지 콘텐츠와 관련된 정보를 찾는 것에 대한 요청일 수 있음을 표시한다는 것을 결정할 수 있다. (다른 워드들, 이를테면, "where", "what" 등이 또한, 그러한 요청을 표시할 수 있다). 응답하여, 시스템은 관련있는 정보를 제공할 수 있는 적합한 봇에 대한 요청 또는 커맨드인 제안 응답을 생성할 수 있다. 예컨대, 제안 응답은 이미지에서 묘사된 위치의 이름을 제공하기 위한 맵핑 봇(mapping bot)에 대한 요청일 수 있다(예컨대, 봇이 웹 탐색들, 맵들 및 지도책들, 수신된 이미지의 지리적 위치 메타데이터 등을 사용하여 그러한 정보를 결정할 수 있는 경우). 일부 구현들에서, (예컨대, 사용자 동의가 획득된 경우, 하나 이상의 이미지 검출 또는 인식 기법들을 사용하여) 이미지에서 검출된 특정 타입들의 이미지 콘텐츠에 적합한 타입들의 봇들을 결정하기 위해, (사용자 동의가 획득된 경우) 트레이닝 메시지 데이터가 사용될 수 있고, 그리고/또는 규칙-기반 문법들은, 이미지 콘텐츠의 타입들 및/또는 이미지 콘텐츠에서 검출된 개념들에 기반하여 제안 응답에서 어느 타입들의 봇들을 호출할지를 결정할 수 있다.
[00149] 일부 구현들에서, 봇-관련 제안 응답이 가능한 응답으로서 사용자에게 디스플레이되고 사용자가 그 제안을 선택하는 경우, 예컨대 봇 이름으로 표현되는 봇이 메시지 대화 및 메시징 인터페이스에 추가될 수 있다. 봇은 대화에서 요청된 정보를 결정하여, 예컨대, 메시징 사용자 인터페이스에서 제1 및 제2 사용자들 둘 모두에게로의 메시지들로서 출력할 수 있다.
[00150] 다른 예에서, 제1 사용자는, 제2 사용자에게 외국어인 텍스트를 묘사하는 이미지를 전송한다. 시스템은, 적합한 제안 응답이, 이미지 내의 텍스트를 번역하고 그리고 번역된 텍스트를 메시지 대화 인터페이스 내에서 출력하기 위한 언어 봇(language bot)에 대한 요청임을 결정할 수 있다.
[00151] 다른 예에서, 제1 사용자는 음식 아이템(food item)을 묘사하는 이미지를 전송한다. 시스템은, 적합한 제안 응답이, 음식 아이템에 통상적으로 또는 특별하게 포함된 재료들 및/또는 칼로리들을 결정하고 그리고 그 정보를 메시지 대화 인터페이스 내에서 출력하기 위해 (예컨대, 인터넷 상의) 하나 이상의 액세스가능 데이터 소스들을 체크하기 위한 봇에 대한 요청임을 결정할 수 있다.
[00152] 본원에서 설명되는 구현들은 일반적으로 메시징 애플리케이션들에 관한 것이다. 소정의 구현들은 메시징 애플리케이션 내에서 사용자에게 제안 응답들을 자동적으로 제공하기 위해 사용자 정보 및/또는 하나 이상의 메시징 대화들의 이미지 콘텐츠를 자동적으로 (예컨대, 사용자 개입 없이) 분석할 수 있다. 소정의 예들에서, 자동적인 제안 응답들은 메시징 애플리케이션에서 응답하기 위해 사용자에 의해 선택될 수 있고 그리고/또는 사용자를 대신하여 하나 이상의 적합한 응답들로서 자동적으로 전송될 수 있다. 소정의 다른 예들에서, 제안들은 특정 비-메시징 기능을 메시징 애플리케이션에 자동적으로 통합시킬 수 있다.
[00153] 전술한 설명이 이미지를 수신하는 것에 대한 응답으로 제안 응답들을 제공하기 위한 기법들을 포함하지만, 제안 응답들은 대화에서 수신되는 임의의 타입의 미디어 콘텐츠에 대한 응답으로 제공될 수 있다. 예컨대, 그러한 콘텐츠는 스티커들(예컨대, 채팅 애플리케이션에서), 애니메이션화된 이미지들(예컨대, 시네마그래프들, GIF 이미지들 등), 및 비디오들을 포함할 수 있다. 또한, 전술한 설명이 제안 응답들을 텍스트 응답들로서 설명하지만, 예컨대 수신된 이미지의 분석에 기반하여 다른 타입들의 응답들이 또한 제안될 수 있다. 예컨대, 다른 응답들은 제안 이미지(suggested image), 제안 스티커(suggested sticker), 제안 애니메이션화된 이미지(suggested animated image)(예컨대, 시네마그래프, GIF 이미지 등) 및 제안 비디오(suggested video) 중 하나 이상을 포함할 수 있다. 이러한 제안들을 제공하기 위해, 제안 모듈(304)은 예컨대, 텍스트를 포함하는 제안 응답들을 참조하여 위에서 설명된 바와 같이, 수신된 아이템(예컨대, 텍스트, 이미지, 비디오, 스티커, 애니메이션화된 이미지 등)에서 식별된 개념들과, 상이한 타입들의 응답들의 개념들의 비교를 수행하고, 적절한 응답을 선택할 수 있다. 사용자들이 동의를 제공한 상이한 구현들에서, 응답의 타입은 콘텍스트에 기반하여 선택되거나 우선순위화될 수 있는데, 예컨대 착신 스티커에 대한 응답으로 스티커가 제안 응답으로서 선택될 수 있고, 착신 이미지에 대한 응답으로 비디오가 제안 응답으로서 선택될 수 있는 식이다.
[00154] 소정의 구현들은 인간 사용자들 및/또는 채팅 봇(chat bot)들과의 메시징을 가능하게 한다. 소정의 구현들에서, 채팅 봇이 메시징 대화에 참여하고 있는지 여부에 기반하여 자동적인 메시지 제안들이 커스터마이징될 수 있다. 일부 예들에서, 채팅 봇이 메시징 대화에서 부재(absent)인 경우, 제1 세트의 자동적인 메시지 제안들이 제공될 수 있는 한편, 채팅 봇이 메시징 대화에서 존재하는 경우, 제2 세트의 자동적인 제안 메시지들이 제공될 수 있으며, 제1 및 제2 세트의 응답들은 적어도 부분적으로 상이하다. 예컨대, 이러한 구현들은 채팅 봇이 뒤따르는 대화식 규칙들을 이용할 수 있고, 규칙들에 기반하여 사용자에게 메시지들을 제안할 수 있다. 이는, 사용자들이, 채팅 봇들에 의해 용이하게 이해되는 언어 및 포맷으로 채팅 봇들과 통신하는 데 있어서 가질 수 있는 난제들을 완화시킬 수 있다.
[00155] 일부 구현들은, 사용자의 위치와 관련된 지역, 시장, 및 국가 중 적어도 하나에서의 다른 메시지들에 기반하여 하나 이상의 트렌딩 응답(trending response)들(예컨대, 많은 상이한 사용자들에 의해 전송된 대중적인 메시지 콘텐츠를 포함하는 메시지 응답들)을 결정하는 것을 포함할 수 있다. 하나 이상의 결정된 제안 응답들은 하나 이상의 트렌딩 응답들을 포함할 수 있다. 일부 구현들에서, 제안 응답들 중 하나 이상을 생성하고 프리젠테이션을 결정하기 위해, 사용자 콘텍스트, 예컨대 지리적 위치, 휴일 또는 이벤트 등이 사용될 수 있다.
[00156] 일부 구현들에서, 하나 이상의 제안 응답들을 결정하는 것은 사용자를 위한 개인화된 모델을 개발하기 위해 기계 학습을 사용하는 것에 기반할 수 있다. 제안 응답들을 결정하는 것은 사용자의 선호도들 및/또는 통신들에서의 사용자의 이전 액션들에 기반할 수 있다(그러한 액션들 및 데이터의 사용에 대한 사용자 동의가 획득된 경우). 예컨대, 사용자 선호도들은 메시지 제안들에 포함될 수 있는 특정 워드들을 표시하는 화이트리스트 및/또는 메시지 제안들에 포함될 수 없는 특정 워드들을 표시하는 블랙리스트를 포함할 수 있다. 사용자 동의가 획득된 경우, 메시지 제안들은 구두점 사용, 이모지 사용, 또는 이전의 경우들에서 사용자에 의해 제공된 다른 콘텐츠 중 하나 이상에 기반하여 메시지 제안들이 생성되거나 수정될 수 있다.
[00157] 제안 응답들을 제공하는 데 사용되는 모델들, 예컨대 위에서 설명된 바와 같은 컨디셔닝 언어 모델은 클라이언트 디바이스(115) 및/또는 서버, 예컨대 서버(101) 및/또는 응답 생성기(150)에 의해 구현될 수 있다. 일부 구현들에서, 대화들은, 대화의 참여자들의 클라이언트 디바이스들만이 대화 콘텐츠에 액세스할 수 있도록 암호화될 수 있다. 이러한 구현들에서, 개개의 클라이언트 디바이스에 의해 구현되는 모델들은 제안 응답들을 제공하는 데 사용될 수 있고, 서버에 의해 구현되는 모델들은 사용되지 않는다. 예컨대, 서버에 의해 구현되는 모델들의 사용에 대해 사용자가 동의를 제공하지 않는 경우, 클라이언트 디바이스에 의해 구현되는 모델들이 또한 사용될 수 있다. 일부 구현들에서, 클라이언트 구현 모델들은 서버 구현 모델들에 기반하거나 또는 서버 구현 모델들로부터 유도될 수 있다. 일부 구현들에서, 예컨대, 클라이언트 디바이스가 클라이언트 모델들을 구현할 능력이 부족한 경우, 서버 모델들이 사용될 수 있고, 클라이언트 모델들은 사용되지 않을 수 있다. 일부 구현들에서, 클라이언트 모델과 서버 모델의 조합이 사용될 수 있다.
[00158] 본 문서에서 설명되는 예들이 영어로 예시되는 개념들을 활용하지만, 제안들은 임의의 언어, 예컨대 클라이언트 디바이스(115)에 대해 구성된 언어, 로케일(locale) 또는 다른 지리적 위치, 사용자 선호도에 기반하여 선택된 언어 등으로 제공될 수 있다. 일부 구현들에서, 대화의 콘텍스트의 분석에 대해 사용자들이 동의를 제공한 경우, 사용자가 참여하는 다양한 대화들에서 (예컨대, 최근의 메시지들에서) 사용된 언어가 검출될 수 있고, 메시지 제안들은 그 언어로 제공될 수 있다.
[00159] 일부 구현들에서, 본원에서 설명되는 하나 이상의 특징들에 따라, 다수의 컨디셔닝 언어 모델들이 저장되고, 트레이닝되고, 활용될 수 있다. 일부 예들에서, 각각의 컨디셔닝 언어 모델은 특정 인간이 사용하는 언어의 워드들 및 응답들을 이용하여 트레이닝되고 사용될 수 있다. 예컨대, 제1 컨디셔닝 언어 모델은 구체적으로 영어 응답들을 이용하여 트레이닝될 수 있고, 제2 컨디셔닝 언어 모델은 구체적으로 힌디어(Hindi) 응답들을 이용하여 트레이닝될 수 있다. 일부 구현들에서, 다수의 이용가능한 컨디셔닝 언어 모델들 중 하나가, 현재 사용자 메시징 대화들에 대해 결정된 언어에 기반하여 런타임 동안 사용하기 위해 선택될 수 있다. 예컨대, 사용자 동의가 획득된 경우, 사용자의 현재 대화 내의 이전 메시지들(예컨대, 현재 메시지 이전의 미리 결정된 시간량 내의 메시지들, 또는 전송된 마지막 메시지들의 미리 결정된 개수 내의 메시지들)이 (예컨대, 메시징 애플리케이션 데이터베이스(199)로부터) 검색될 수 있고, 예컨대 사용된 워드들에 기반하여 그리고 액세스가능한 저장소로부터의 언어 데이터에 액세스하여 대화의 언어가 시스템에 의해 검출될 수 있다. 검출된 언어가 이용가능한 컨디셔닝 언어 모델의 언어와 매칭되는 경우, 매칭된 컨디셔닝 언어 모델이, 본원에서 설명된 바와 같이 이미지에 대한 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 데 사용하기 위해 선택된다.
[00160] 일부 구현들에서, 특정 이미지에 대한 응답들을 생성하기 위해, 다수의 컨디셔닝 언어 모델들이 사용될 수 있다. 예컨대, 수신된 이미지는 제1 컨디셔닝 언어 모델 및 제2 컨디셔닝 언어 모델에 입력될 수 있고, 두 모델들 모두로부터의 응답들이 결과적인 세트의 제안 응답들에서 사용된다. 일부 구현들에서, 다수의 언어들에 대한 응답들을 제공하기 위해 단일 컨디셔닝 언어 모델이 트레이닝되고 사용될 수 있는데, 예컨대 다수의 언어들로 제공된 응답들이 컨디셔닝 언어 모델의 트레이닝에서 사용된다.
[00161] 도 12는 본원에서 설명되는 하나 이상의 특징들을 구현하기 위해 사용될 수 있는 예시적인 디바이스(1200)의 블록도이다. 일 예에서, 디바이스(1200)는 클라이언트 디바이스, 예컨대, 도 1에 도시된 클라이언트 디바이스들(115) 중 임의의 클라이언트 디바이스를 구현하는 데 사용될 수 있다. 대안적으로, 디바이스(1200)는 서버 디바이스, 예컨대 도 1의 메시징 서버(101), 개념 식별자(120), 및 콘텐츠 분류기(130)를 구현할 수 있다. 디바이스(1200)는 위에서 설명된 바와 같은 임의의 적절한 컴퓨터 시스템, 서버, 또는 다른 전자 또는 하드웨어 디바이스일 수 있다.
[00162] 본원에서 설명되는 하나 이상의 방법들은, 임의의 타입의 컴퓨팅 디바이스 상에서 실행될 수 있는 독립형 프로그램, 웹 브라우저 상에서 실행되는 프로그램, 모바일 컴퓨팅 디바이스(예컨대, 셀 폰, 스마트 폰, 태블릿 컴퓨터, 웨어러블 디바이스(손목시계, 암밴드, 장신구, 헤드웨어, 가상 현실 고글 또는 안경, 증강 현실 고글 또는 안경 등), 랩톱 컴퓨터 등) 상에서 실행되는 모바일 애플리케이션("앱")에서 실행될 수 있다. 일 예에서, 클라이언트/서버 아키텍처가 사용될 수 있고, 예컨대, (클라이언트 디바이스로서) 모바일 컴퓨팅 디바이스는 사용자 입력 데이터를 서버 디바이스에 전송하며, 출력을 위해(예컨대, 디스플레이를 위해) 최종 출력 데이터를 서버로부터 수신한다. 다른 예에서, 모든 컴퓨테이션들은 모바일 컴퓨팅 디바이스 상의 모바일 앱(및/또는 다른 앱들) 내에서 수행될 수 있다. 또 다른 예에서, 컴퓨테이션들은 모바일 컴퓨팅 디바이스와 하나 이상의 서버 디바이스들 사이에서 분리될 수 있다.
[00163] 일부 구현들에서, 디바이스(1200)는 프로세서(1202), 메모리(1204) 및 입력/출력(I/O; input/output) 인터페이스(1206)를 포함한다. 프로세서(1202)는, 프로그램 코드를 실행하고 디바이스(1200)의 기본 동작들을 제어하기 위한 하나 이상의 프로세서들 및/또는 프로세싱 회로들일 수 있다. "프로세서"는 데이터, 신호들 또는 다른 정보를 프로세싱하는 임의의 적절한 하드웨어 및/또는 소프트웨어 시스템, 메커니즘 또는 컴포넌트를 포함한다. 프로세서는, 범용 중앙 프로세싱 유닛(CPU; central processing unit), 다수의 프로세싱 유닛들, 기능을 달성하기 위한 전용 회로, 또는 다른 시스템들을 가지는 시스템을 포함할 수 있다. 프로세싱은 특정 지리적 위치로 제한될 필요가 없거나, 또는 일시적 제한들을 갖는다. 예컨대, 프로세서는 "실시간", "오프라인", "배치 모드" 등에서 자신의 기능들을 수행할 수 있다. 프로세싱의 부분들은 상이한 (또는 동일한) 프로세싱 시스템들에 의해, 상이한 시간들에서 그리고 상이한 위치들에서 수행될 수 있다. 컴퓨터는 메모리와 통신하는 임의의 프로세서일 수 있다.
[00164] 메모리(1204)는, 통상적으로 프로세서(1202)에 의한 액세스를 위해 디바이스(1200)에 제공되며, 프로세서에 의한 실행을 위한 명령들을 저장하는 데 적절하고 프로세서(1202)와 별개로 로케이팅되고 그리고/또는 프로세서(1202)와 통합되는 임의의 적절한 프로세서-판독가능 저장 매체, 이를테면, 랜덤 액세스 메모리(RAM; random access memory), 판독-전용 메모리(ROM; read-only memory), 전기적 소거가능 판독-전용 메모리(EEPROM; Electrical Erasable Read-only Memory), 플래시 메모리 등일 수 있다. 메모리(1204)는, 운영 시스템(1208), 메시징 애플리케이션(1216) 및 다른 애플리케이션들(1214), 이를테면, 데이터 디스플레이 엔진, 웹 호스팅 엔진, 이미지 디스플레이 엔진, 통지 엔진, 소셜 네트워킹 엔진 등을 포함하는, 프로세서(1202)에 의해 서버 디바이스(1200) 상에서 동작하는 소프트웨어를 저장할 수 있다. 일부 구현들에서, 메시징 애플리케이션(1216)은, 프로세서(1202)가, 본원에서 설명된 기능들, 예컨대, 도 2의 방법의 일부 또는 전부를 수행하는 것을 가능하게 하는 명령들을 포함할 수 있다. 예컨대, 메시징 애플리케이션(1216)은 본원에서 설명된 바와 같은 메시지 제안들을 제공할 수 있다. 일부 구현들에서, 메시징 애플리케이션(1216)은 하나 이상의 모듈들, 이를테면, 특징 벡터 생성기(1216A), 응답 생성기(1216B), 및 사용자 상호작용 모듈(1216C)을 포함할 수 있고, 그리고/또는 이러한 모듈들은 디바이스(1200)와 통신하는 다른 애플리케이션들 또는 디바이스들에서 구현될 수 있다. 애플리케이션들 중 하나 이상은, 예컨대, 사용자 입력에 대한 응답으로 디스플레이되는 사용자 인터페이스를 제공하여, 선택가능한 옵션들 또는 제어들 및 선택된 옵션들에 기반하는 데이터를 디스플레이할 수 있다. 다른 애플리케이션들 또는 엔진들(1214)은 또한 또는 대안적으로, 예컨대 이미지 편집 애플리케이션들, 미디어 디스플레이 애플리케이션들, 통신 애플리케이션들, 웹 호스팅 엔진 또는 애플리케이션 등에 포함될 수 있다. 본원에서 개시된 하나 이상의 방법들은, 예컨대, 임의의 타입의 컴퓨팅 디바이스에서 실행될 수 있는 독립형 컴퓨터 프로그램, 웹 페이지들을 갖는 웹 애플리케이션, 모바일 컴퓨팅 디바이스에서 실행되는 모바일 애플리케이션("앱") 등으로서, 몇몇 환경들 및 플랫폼들에서 동작할 수 있다.
[00165] 메모리(1204) 내의 임의의 소프트웨어는 대안적으로, 임의의 다른 적절한 저장 위치 또는 컴퓨터-판독가능 매체 상에 저장될 수 있다. 게다가, 메모리(1204)(및/또는 다른 연결된 저장 디바이스(들))는 본원에서 설명되는 특징들에서 사용되는 하나 이상의 메시지들, 하나 이상의 분류체계(taxonomy)들, 전자 백과사전, 사전들, 시소러스들, 메시지 데이터, 문법들, 사용자 선호도들, 및/또는 다른 명령들 및 데이터를 저장할 수 있다. 메모리(1204) 및 임의의 다른 타입의 저장소(자기 디스크, 광학 디스크, 자기 테이프 또는 다른 유형적인 매체들)는 "저장소" 또는 "저장 디바이스들"로 고려될 수 있다.
[00166] I/O 인터페이스(1206)는 서버 디바이스(1200)를 다른 시스템들 및 디바이스들과 인터페이싱하는 것을 가능하게 하기 위한 기능들을 제공할 수 있다. 인터페이싱된 디바이스들은 디바이스(1200)의 일부로서 포함될 수 있거나, 또는 디바이스(1200)와 별개이고 디바이스(1200)와 통신할 수 있다. 예컨대, 네트워크 통신 디바이스들, 저장 디바이스들(예컨대, 메모리 및/또는 데이터베이스(106)), 및 입력/출력 디바이스들은 I/O 인터페이스(1206)를 통해 통신할 수 있다. 일부 구현들에서, I/O 인터페이스는 디바이스들, 이를테면, 입력 디바이스들(키보드, 포인팅 디바이스, 터치스크린, 마이크로폰, 카메라, 스캐너, 센서들 등) 및/또는 출력 디바이스들(디스플레이 디바이스, 스피커 디바이스들, 프린터, 모터 등)을 인터페이싱하도록 연결될 수 있다.
[00167] I/O 인터페이스(1206)에 연결될 수 있는 인터페이싱된 디바이스들의 일부 예들은, 본원에서 설명된 바와 같은 콘텐츠, 예컨대, 이미지들, 비디오 및/또는 출력 애플리케이션의 사용자 인터페이스를 디스플레이하는 데 사용될 수 있는 디스플레이 디바이스(1220)를 포함할 수 있다. 디스플레이 디바이스(1220)는 로컬 연결들(예컨대, 디스플레이 버스)을 통해 그리고/또는 네트워킹된 연결들을 통해 디바이스(1200)에 연결될 수 있으며, 임의의 적절한 디스플레이 디바이스일 수 있다. 디스플레이 디바이스(1220)는 임의의 적절한 디스플레이 디바이스, 이를테면, LCD, LED, 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치스크린, 3-D 디스플레이 스크린, 또는 다른 시각적 디스플레이 디바이스를 포함할 수 있다. 예컨대, 디스플레이 디바이스(1220)는 모바일 디바이스 상에 제공된 평면 디스플레이 스크린, 고글 디바이스에 제공된 다수의 디스플레이 스크린들, 또는 컴퓨터 디바이스를 위한 모니터 스크린일 수 있다.
[00168] I/O 인터페이스(1206)는 다른 입력 및 출력 디바이스들과 인터페이싱할 수 있다. 일부 예들은 이미지들을 캡처할 수 있는 하나 이상의 카메라들을 포함한다. 일부 구현들은 (예컨대, 캡처된 이미지들, 음성 커맨드들 등의 부분으로서) 사운드를 캡처하기 위한 마이크로폰, 사운드를 출력하기 위한 오디오 스피커 디바이스들, 또는 다른 입력 및 출력 디바이스들을 제공할 수 있다.
[00169] 예시의 용이함을 위해, 도 12는 프로세서(1202), 메모리(1204), I/O 인터페이스(1206) 각각에 대한 하나의 블록, 및 소프트웨어 블록들(1208, 1214, 및 1216)을 도시한다. 이러한 블록들은 하나 이상의 프로세서들 또는 프로세싱 회로들, 운영 시스템들, 메모리들, I/O 인터페이스들, 애플리케이션들 및/또는 소프트웨어 모듈들을 나타낼 수 있다. 다른 구현들에서, 디바이스(1200)는 도시된 컴포넌트들 모두를 갖지는 않을 수 있고 그리고/또는 본원에서 도시된 것들 대신에 또는 이들 외에도 다른 타입들의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다. 일부 컴포넌트들이 본원의 일부 구현들에서 설명된 바와 같은 블록들 및 동작들을 수행하는 것으로 설명되었지만, 환경(100), 디바이스(1200), 유사한 시스템들, 또는 그러한 시스템과 연관된 임의의 적절한 프로세서 또는 프로세서들의 임의의 적절한 컴포넌트 또는 컴포넌트들의 조합이 설명된 블록들 및 동작들을 수행할 수 있다.
[00170] 본원에서 설명된 방법들은 컴퓨터 상에서 실행될 수 있는 컴퓨터 프로그램 명령들 또는 코드에 의해 구현될 수 있다. 예컨대, 코드는 하나 이상의 디지털 프로세서들(예컨대, 마이크로프로세서들 또는 다른 프로세싱 회로)에 의해 구현될 수 있고, 비-일시적 컴퓨터 판독가능 매체(예컨대, 저장 매체), 이를테면, 반도체 또는 고체 상태 메모리, 자기 테이프, 제거가능 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 플래시 메모리, 강성 자기 디스크(rigid magnetic disk), 광학 디스크, 고체-상태 메모리 드라이브 등을 포함하는 자기, 광학, 전자기, 또는 반도체 저장 매체를 포함하는 컴퓨터 프로그램 제품 상에 저장될 수 있다. 프로그램 명령들은 또한, 예컨대 서버(예컨대, 분산형 시스템 및/또는 클라우드 컴퓨팅 시스템)로부터 전달되는 서비스형 소프트웨어(SaaS; software as a service) 형태의 전자 신호에 포함되고 그리고 그러한 전자 신호로서 제공될 수 있다. 대안적으로, 하나 이상의 방법들은 하드웨어(로직 게이트들 등)로, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 예시적인 하드웨어는 프로그램가능 프로세서들(예컨대, 필드-프로그램가능 게이트 어레이(FPGA; Field-Programmable Gate Array), 복합 프로그램가능 로직 디바이스(Complex Programmable Logic Device)), 범용 프로세서들, 그래픽스 프로세서들, 주문형 집적 회로(ASIC; Application Specific Integrated Circuit)들 등일 수 있다. 하나 이상의 방법들은 시스템 상에서 실행되는 애플리케이션의 컴포넌트 또는 그의 일부로서, 또는 다른 애플리케이션들 및 운영 시스템과 함께 실행되는 애플리케이션 또는 소프트웨어로서 수행될 수 있다.
[00171] 비록 상세한 설명이 특정 구현들에 대해 설명되었지만, 이들 특정 구현들은 단지 예시적이며, 제한적이지 않다. 예들에서 예시된 개념들은 다른 예들 및 구현들에 적용될 수 있다.
[00172] 본원에서 논의된 소정의 구현들이 사용자들에 관한 개인 정보(예컨대, 사용자 데이터, 사용자 소셜 네트워크에 관한 정보, 사용자의 위치 및 시간, 사용자의 생체인식 정보, 사용자의 활동들 및 인구학적 정보)를 수집하거나 사용할 수 있는 상황들에서, 사용자들에게는, 정보가 수집되는지 여부, 개인 정보가 저장되는지 여부, 개인 정보가 사용되는지 여부, 및 사용자에 관한 정보가 어떻게 수집되고, 저장되고, 사용되는지를 제어할 수 있는 하나 이상의 기회들이 제공된다. 즉, 본원에서 논의된 시스템들 및 방법들은 관련이 있는 사용자들로부터 그렇게 하도록 명시적 인가를 수신할 때 특별히 사용자 개인 정보를 수집, 저장 및/또는 사용한다. 게다가, 소정의 데이터는, 그 소정의 데이터가 저장되거나 사용되기 전에, 개인 식별가능 정보가 제거되도록 하나 이상의 방식들로 처리될 수 있다. 일 예로서, 어떤 개인 식별가능 정보도 결정될 수 없도록, 사용자의 아이덴티티가 처리될 수 있다. 다른 예로서, 사용자의 특정 위치가 결정될 수 없도록, 사용자의 지리적 위치가 더 큰 구역으로 일반화될 수 있다.
[00173] 본 개시내용에서 설명된 기능적 블록들, 동작들, 특징들, 방법들, 디바이스들, 및 시스템들이 당업자들에게 알려진 바와 같은 시스템들, 디바이스들, 및 기능적 블록들의 상이한 조합들에 통합되거나 이들로 분할될 수 있다는 것을 주목한다. 임의의 적절한 프로그래밍 언어 및 프로그래밍 기법들은 특정 구현들의 루틴들을 구현하는데 사용될 수 있다. 절차적 또는 객체 지향적과 같은 상이한 프로그래밍 기법들이 이용될 수 있다. 루틴들은 단일 프로세싱 디바이스 또는 다수의 프로세서들 상에서 실행될 수 있다. 비록 단계들, 동작들 또는 컴퓨테이션들이 특정 순서로 제시될 수 있지만, 순서는 상이한 특정 구현들로 변경될 수 있다. 일부 구현들에서, 본 명세서에서 순차적인 것으로 도시된 다수의 단계들 또는 동작들은 동시에 수행될 수 있다.

Claims (22)

  1. 메시징 애플리케이션에서 콘텐츠를 자동적으로 제안하는, 컴퓨터에서 구현되는 방법으로서,
    제1 사용자에 의해 제1 메시지 내에서 포스팅된(posted) 이미지를 검출하는 단계;
    상기 이미지를 나타내는 특징 벡터(feature vector)를 결정하기 위해 상기 이미지를 프로그래밍 방식으로(programmatically) 분석하는 단계;
    상기 특징 벡터에 기반하여 상기 제1 메시지에 대한 하나 이상의 제안 응답(suggested response)들을 프로그래밍 방식으로 생성하는 단계 ― 상기 하나 이상의 제안 응답들 각각은 상기 제1 메시지에 대한 대화식 회답(conversational reply)이고, 상기 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 단계는,
    이전 이미지들에 대한 이전 응답들을 이용하여 트레이닝된 모델을 사용하여 상기 특징 벡터에 대해 워드 시퀀스(word sequence)들과 연관된 확률들을 결정하는 단계, 및
    상기 워드 시퀀스들과 연관된 확률들에 기반하여 상기 워드 시퀀스들 중 하나 이상의 워드 시퀀스들을 선택하는 단계를 포함하고, 상기 하나 이상의 제안 응답들은 상기 선택된 하나 이상의 워드 시퀀스들에 기반하여 결정됨 ―; 및
    상기 하나 이상의 제안 응답들이 하나 이상의 제안들로서 상기 메시징 애플리케이션에서 제2 사용자에게 렌더링되게 하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  2. 제1 항에 있어서,
    상기 특징 벡터는 상기 이미지의 시각적 픽셀 콘텐츠의 압축된 수치 표현(condensed numerical representation)인,
    컴퓨터에서 구현되는 방법.
  3. 제1 항 또는 제2 항에 있어서,
    상기 하나 이상의 제안 응답들을 제공하는 단계는 상기 하나 이상의 제안 응답들을 상기 메시징 애플리케이션에서 렌더링하기 위한 커맨드를 송신하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  4. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 확률들은 저장된 어휘(vocabulary) 내의 각각의 워드가 상기 하나 이상의 워드 시퀀스들 중 하나의 워드 시퀀스 내에서 다음 워드가 될 확률을 포함하고,
    상기 하나 이상의 워드 시퀀스들을 선택하는 단계는 상기 결정된 확률들 중 하나 이상의 가장 높은 확률들과 연관된 하나 이상의 워드 시퀀스들의 개수를 선택하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  5. 제1 항 내지 제4 항 중 어느 한 항에 있어서,
    상기 모델은 컨디셔닝 언어 모델(conditioned language model)이고, 그리고
    상기 워드 시퀀스들과 연관된 확률들을 결정하는 단계는 상기 특징 벡터를 상기 컨디셔닝 언어 모델에 입력하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  6. 제5 항에 있어서,
    상기 컨디셔닝 언어 모델은 LSTM(long-short term memory) 네트워크를 사용하는,
    컴퓨터에서 구현되는 방법.
  7. 제5 항 또는 제6 항에 있어서,
    상기 컨디셔닝 언어 모델은 트레이닝된 뉴럴 네트워크를 포함하는,
    컴퓨터에서 구현되는 방법.
  8. 제1 항 내지 제7 항 중 어느 한 항에 있어서,
    상기 하나 이상의 워드 시퀀스들을 선택하는 단계는 빔 탐색 기법(beam search technique)을 사용하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  9. 제1 항 내지 제8 항 중 어느 한 항에 있어서,
    상기 하나 이상의 워드 시퀀스들 각각은 상기 특징 벡터 및 상기 워드 시퀀스 내에 포함된 워드 임베딩 인코딩 워드(word embedding encoding word)들로서 상기 모델에 의해 사용되는,
    컴퓨터에서 구현되는 방법.
  10. 제1 항 내지 제9 항 중 어느 한 항에 있어서,
    상기 하나 이상의 워드 시퀀스들은 상기 이전 응답들로부터 결정된 어휘 내의 복수의 워드들로부터 결정되고,
    상기 워드 시퀀스들과 연관된 확률들을 결정하는 단계는 각각의 워드 시퀀스에 대해, 상기 어휘 내의 각각의 워드가 상기 워드 시퀀스 내에서 다음 워드가 될 확률을 반복적으로 결정하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  11. 제1 항 내지 제10 항 중 어느 한 항에 있어서,
    상기 이전 응답들은 상기 이전 이미지들에 대한 더 큰 세트의 응답들로부터 선택되고, 상기 이전 응답들은 상기 더 큰 세트의 응답들의 다른 이전 응답들보다 상기 이전 이미지들의 특정 콘텐츠에 대해 더 특정한,
    컴퓨터에서 구현되는 방법.
  12. 제1 항 내지 제11 항 중 어느 한 항에 있어서,
    상기 모델은 컨디셔닝 언어 모델이고, 그리고
    상기 하나 이상의 워드 시퀀스들을 선택하는 단계는, 반복적으로,
    상기 특징 벡터 및 이전 워드 시퀀스를 상기 컨디셔닝 언어 모델에 공급하여, 상기 특징 벡터 및 상기 이전 워드 시퀀스에 기반하여 새로운 워드 시퀀스들의 세트 및 상기 새로운 워드 시퀀스들과 연관된 확률들을 결정하는 단계 ― 상기 새로운 워드 시퀀스들 중 하나 이상은 상기 이전 워드 시퀀스에 대해 적어도 하나의 추가의 워드를 가짐 ―, 및
    상기 새로운 워드 시퀀스들과 연관된 확률들에 기반하여 상기 새로운 워드 시퀀스들의 세트의 서브세트를 선택하고 그리고 상기 선택된 서브세트의 하나의 워드 시퀀스를 다음 반복을 위한 이전 워드 시퀀스로서 선택하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  13. 제1 항 내지 제12 항 중 어느 한 항에 있어서,
    상기 제2 사용자가 제안 응답을 선택 시에, 상기 제안 응답을 상기 제1 메시지에 대한 메시지 응답으로서 포스팅하는 단계를 더 포함하는,
    컴퓨터에서 구현되는 방법.
  14. 제1 항 내지 제13 항 중 어느 한 항에 있어서,
    상기 하나 이상의 워드 시퀀스들 각각이 워드 시퀀스들의 화이트리스트(whitelist)에 존재하는지 여부를 체크하는 단계를 더 포함하고,
    상기 선택된 하나 이상의 워드 시퀀스들은 상기 화이트리스트 상에 존재하는,
    컴퓨터에서 구현되는 방법.
  15. 제1 항 내지 제14 항 중 어느 한 항에 있어서,
    상기 하나 이상의 워드 시퀀스들을 선택하는 단계는 상기 제2 사용자에 의해 제공된 이전 메시지 응답과의 유사성에 기반하여 가중된 적어도 하나의 워드 시퀀스를 선택하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  16. 제5 항, 제6 항, 또는 제7 항 중 어느 한 항에 있어서,
    상기 컨디셔닝 언어 모델을 제1 언어에 특정한 제1 컨디셔닝 언어 모델로서 제공하는 단계;
    제2 언어에 특정한 제2 컨디셔닝 언어 모델을 제공하는 단계;
    상기 제1 메시지가 수신되는 메시지 대화에 대한 언어가 상기 제1 언어임을 결정하는 단계; 및
    상기 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 단계에서 상기 제1 컨디셔닝 언어 모델이 사용되도록 선택하는 단계를 더 포함하는,
    컴퓨터에서 구현되는 방법.
  17. 메시징 애플리케이션에서 콘텐츠를 자동적으로 제안하는 시스템으로서,
    메모리; 및
    상기 메모리에 액세스하도록 구성되고 그리고 동작들을 수행하도록 구성된 적어도 하나의 프로세서를 포함하며,
    상기 동작들은,
    제1 사용자에 의해 제1 메시지 내에서 포스팅된 이미지를 검출하는 동작;
    상기 이미지를 나타내는 특징 벡터를 결정하기 위해 상기 이미지를 프로그래밍 방식으로 분석하는 동작;
    상기 특징 벡터에 기반하여 상기 제1 메시지에 대한 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작 ― 상기 하나 이상의 제안 응답들 각각은 상기 제1 메시지에 대한 대화식 회답이고, 그리고 워드 시퀀스 내에 배열된 하나 이상의 워드들을 갖고,
    상기 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작은, 상기 하나 이상의 제안 응답들 중 각각의 제안 응답에 대해, 상기 특징 벡터에 기반하여 그리고 상기 워드 시퀀스 내의 하나 이상의 이전 워드들에 기반하여 상기 워드 시퀀스 내에 배열된 하나 이상의 워드들 중 각각의 워드를 반복적으로 결정하는 동작을 포함함 ―; 및
    상기 하나 이상의 제안 응답들이 하나 이상의 제안들로서 상기 메시징 애플리케이션에서 제2 사용자에게 렌더링되게 하는 동작을 포함하는,
    메시징 애플리케이션에서 콘텐츠를 자동적으로 제안하는 시스템.
  18. 제17 항에 있어서,
    상기 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작은 이전 이미지들에 대한 이전 응답들을 포함하는 데이터에 기반하여 상기 하나 이상의 워드 시퀀스들과 연관된 확률들을 결정하는 동작을 포함하는,
    메시징 애플리케이션에서 콘텐츠를 자동적으로 제안하는 시스템.
  19. 제18 항에 있어서,
    상기 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작은 상기 하나 이상의 워드 시퀀스들과 연관된 확률들에 기반하여 상기 하나 이상의 제안 응답들을 선택하는 동작을 포함하는,
    메시징 애플리케이션에서 콘텐츠를 자동적으로 제안하는 시스템.
  20. 제18 항 또는 제19 항에 있어서,
    상기 워드 시퀀스들의 확률들을 결정하는 동작은 이전 이미지들에 대한 이전 응답들을 포함하는 데이터를 사용하여 트레이닝된 컨디셔닝 언어 모델을 사용하는 동작을 포함하고,
    상기 컨디셔닝 언어 모델은 입력으로서 수신된 특징 벡터에 의해 컨디셔닝되고, 그리고 LSTM(long-short term memory) 네트워크를 사용하는,
    메시징 애플리케이션에서 콘텐츠를 자동적으로 제안하는 시스템.
  21. 소프트웨어 명령들이 저장된 비-일시적 컴퓨터 판독가능 매체로서,
    상기 소프트웨어 명령들은 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 동작들을 수행함으로써 제안 콘텐츠를 자동적으로 제공하게 하고,
    상기 동작들은,
    이미지를 수신하는 동작;
    상기 이미지를 나타내는 특징 벡터를 결정하기 위해 상기 이미지를 프로그래밍 방식으로 분석하는 동작;
    상기 특징 벡터에 기반하여 상기 이미지에 대한 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작 ― 상기 하나 이상의 제안 응답들 각각은 상기 이미지에 대한 대화식 회답이고, 그리고 워드 시퀀스 내에 배열된 하나 이상의 워드들을 갖고,
    상기 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작은, 상기 하나 이상의 제안 응답들 중 각각의 제안 응답에 대해, 상기 특징 벡터에 기반하여 그리고 상기 워드 시퀀스 내의 하나 이상의 이전 워드들에 기반하여 상기 워드 시퀀스 내에 배열된 하나 이상의 워드들 중 각각의 워드를 반복적으로 결정하는 동작을 포함함 ―; 및
    상기 하나 이상의 제안 응답들이 하나 이상의 제안들로서 애플리케이션에서 사용자에게 렌더링되도록 출력하는 동작을 포함하는,
    비-일시적 컴퓨터 판독가능 매체.
  22. 제21 항에 있어서,
    상기 제안 응답들은 메시징 애플리케이션에서 렌더링되고, 그리고
    상기 하나 이상의 제안 응답들을 프로그래밍 방식으로 생성하는 동작은,
    이전 이미지들에 대한 이전 응답들을 포함하는 데이터에 기반하여 트레이닝되고 그리고 입력으로서 수신된 특징 벡터에 의해 컨디셔닝된 컨디셔닝 언어 모델을 사용하여 상기 하나 이상의 제안 응답들과 연관된 확률들을 결정하는 동작 ― 상기 컨디셔닝 언어 모델은 LSTM(long-short term memory) 네트워크를 사용함 ―, 및
    상기 하나 이상의 제안 응답들과 연관된 확률들에 기반하여 상기 하나 이상의 제안 응답들을 선택하는 동작을 포함하는,
    비-일시적 컴퓨터 판독가능 매체.
KR1020197011687A 2017-01-25 2017-10-17 언어 모델을 사용한, 메시지들에서 수신되는 이미지들에 대한 자동적인 제안 응답들 KR102050334B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/415,506 US10146768B2 (en) 2017-01-25 2017-01-25 Automatic suggested responses to images received in messages using language model
US15/415,506 2017-01-25
PCT/US2017/057044 WO2018140099A1 (en) 2017-01-25 2017-10-17 Automatic suggested responses to images received in messages using language model

Publications (2)

Publication Number Publication Date
KR20190049886A true KR20190049886A (ko) 2019-05-09
KR102050334B1 KR102050334B1 (ko) 2019-11-29

Family

ID=60268457

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197011687A KR102050334B1 (ko) 2017-01-25 2017-10-17 언어 모델을 사용한, 메시지들에서 수신되는 이미지들에 대한 자동적인 제안 응답들

Country Status (6)

Country Link
US (1) US10146768B2 (ko)
EP (1) EP3516537A1 (ko)
JP (1) JP6625789B2 (ko)
KR (1) KR102050334B1 (ko)
CN (2) CN117149970A (ko)
WO (1) WO2018140099A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210007128A (ko) * 2019-07-10 2021-01-20 주식회사 인텔로이드 대화 데이터베이스를 이용한 대화문장 추천 방법 및 그것이 적용된 음성대화장치
WO2021050776A1 (en) * 2019-09-12 2021-03-18 Nec Laboratories America, Inc. Contextual grounding of natural language phrases in images

Families Citing this family (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10255566B2 (en) 2011-06-03 2019-04-09 Apple Inc. Generating and processing task items that represent tasks to perform
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
EP4138075A1 (en) 2013-02-07 2023-02-22 Apple Inc. Voice trigger for a digital assistant
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
US10791216B2 (en) 2013-08-06 2020-09-29 Apple Inc. Auto-activating smart responses based on activities from remote devices
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9966065B2 (en) 2014-05-30 2018-05-08 Apple Inc. Multi-command single utterance input method
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
US10740384B2 (en) 2015-09-08 2020-08-11 Apple Inc. Intelligent automated assistant for media search and playback
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10331312B2 (en) 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
CN108781175B (zh) 2015-12-21 2021-09-21 谷歌有限责任公司 用于消息交换题绪的自动建议的方法、介质及系统
EP3395019B1 (en) 2015-12-21 2022-03-30 Google LLC Automatic suggestions and other content for messaging applications
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US11769193B2 (en) * 2016-02-11 2023-09-26 Ebay Inc. System and method for detecting visually similar items
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
US10387461B2 (en) 2016-08-16 2019-08-20 Google Llc Techniques for suggesting electronic messages based on user activity and other context
CN110268423A (zh) 2016-08-19 2019-09-20 莫维迪乌斯有限公司 用于深度学习模型的分布式训练的系统和方法
US10015124B2 (en) * 2016-09-20 2018-07-03 Google Llc Automatic response suggestions based on images received in messaging applications
WO2018057536A1 (en) 2016-09-20 2018-03-29 Google Llc Bot requesting permission for accessing data
US10547574B2 (en) 2016-09-20 2020-01-28 Google Llc Suggested responses based on message stickers
US10416846B2 (en) 2016-11-12 2019-09-17 Google Llc Determining graphical element(s) for inclusion in an electronic communication
CN108075959B (zh) * 2016-11-14 2021-03-12 腾讯科技(深圳)有限公司 一种会话消息处理方法和装置
US10608967B2 (en) * 2017-01-10 2020-03-31 International Business Machines Corporation Ensuring that all users of a group message receive a response to the group message
TWI754694B (zh) * 2017-03-21 2022-02-11 香港商阿里巴巴集團服務有限公司 通訊方法及裝置
US10581765B2 (en) * 2017-04-03 2020-03-03 Microsoft Technology Licensing, Llc Conversation bot discovery and response fusion
US10333868B2 (en) * 2017-04-14 2019-06-25 Facebook, Inc. Techniques to automate bot creation for web pages
US10491548B2 (en) * 2017-04-17 2019-11-26 Facebook, Inc. Techniques to configure bot flow
US11003839B1 (en) 2017-04-28 2021-05-11 I.Q. Joe, Llc Smart interface with facilitated input and mistake recovery
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK201770429A1 (en) 2017-05-12 2018-12-14 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770411A1 (en) 2017-05-15 2018-12-20 Apple Inc. MULTI-MODAL INTERFACES
US10303715B2 (en) 2017-05-16 2019-05-28 Apple Inc. Intelligent automated assistant for media exploration
US20180336892A1 (en) 2017-05-16 2018-11-22 Apple Inc. Detecting a trigger of a digital assistant
WO2018212822A1 (en) 2017-05-16 2018-11-22 Google Inc. Suggested actions for images
US10404636B2 (en) 2017-06-15 2019-09-03 Google Llc Embedded programs and interfaces for chat conversations
US10348658B2 (en) 2017-06-15 2019-07-09 Google Llc Suggested items for use with embedded applications in chat conversations
US11121991B2 (en) * 2017-07-03 2021-09-14 Mycelebs Co., Ltd. User terminal and search server providing a search service using emoticons and operating method thereof
US10650095B2 (en) 2017-07-31 2020-05-12 Ebay Inc. Emoji understanding in online experiences
US10771529B1 (en) 2017-08-04 2020-09-08 Grammarly, Inc. Artificial intelligence communication assistance for augmenting a transmitted communication
WO2019077013A1 (en) * 2017-10-18 2019-04-25 Soapbox Labs Ltd. METHODS AND SYSTEMS FOR PROCESSING AUDIO SIGNALS CONTAINING VOICE DATA
US10599391B2 (en) * 2017-11-06 2020-03-24 Google Llc Parsing electronic conversations for presentation in an alternative interface
US10305766B1 (en) * 2017-11-07 2019-05-28 Amazon Technologies, Inc. Coexistence-insensitive presence detection
EP3486850A1 (en) * 2017-11-17 2019-05-22 Orange Method for generating an sms message and equipment for implementing the method
CN110301117B (zh) * 2017-11-24 2022-10-21 微软技术许可有限责任公司 用于在会话中提供响应的方法和装置
US10810322B2 (en) * 2017-12-05 2020-10-20 Microsoft Technology Licensing, Llc Sharing user information with and between bots
US10891526B2 (en) 2017-12-22 2021-01-12 Google Llc Functional image archiving
US11024307B2 (en) * 2018-02-08 2021-06-01 Computime Ltd. Method and apparatus to provide comprehensive smart assistant services
JP6818706B2 (ja) * 2018-02-13 2021-01-20 日本電信電話株式会社 情報提供装置、情報提供方法、およびプログラム
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US11886473B2 (en) 2018-04-20 2024-01-30 Meta Platforms, Inc. Intent identification for agent matching by assistant systems
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
US11010179B2 (en) 2018-04-20 2021-05-18 Facebook, Inc. Aggregating semantic information for improved understanding of users
US11288299B2 (en) * 2018-04-24 2022-03-29 International Business Machines Corporation Enhanced action fulfillment using classification valency
US11610239B2 (en) * 2018-05-03 2023-03-21 Disney Enterprises, Inc. Machine learning enabled evaluation systems and methods
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US10860804B2 (en) 2018-05-16 2020-12-08 Microsoft Technology Licensing, Llc Quick text classification model
US10867130B2 (en) * 2018-05-31 2020-12-15 Microsoft Technology Licensing, Llc Language classification system
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
DK179822B1 (da) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
US11658926B2 (en) * 2018-06-27 2023-05-23 Microsoft Technology Licensing, Llc Generating smart replies involving image files
US11062084B2 (en) 2018-06-27 2021-07-13 Microsoft Technology Licensing, Llc Generating diverse smart replies using synonym hierarchy
RU2712101C2 (ru) * 2018-06-27 2020-01-24 Общество с ограниченной ответственностью "Аби Продакшн" Предсказание вероятности появления строки с использованием последовательности векторов
US10721190B2 (en) * 2018-07-31 2020-07-21 Microsoft Technology Licensing, Llc Sequence to sequence to classification model for generating recommended messages
USD950587S1 (en) 2018-08-31 2022-05-03 Zoox, Inc. Display screen or portion thereof having a graphical user interface
US20200081939A1 (en) * 2018-09-11 2020-03-12 Hcl Technologies Limited System for optimizing detection of intent[s] by automated conversational bot[s] for providing human like responses
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11188719B1 (en) 2018-10-22 2021-11-30 Wells Fargo Bank, N.A. Predictive text system
US10755099B2 (en) * 2018-11-13 2020-08-25 Adobe Inc. Object detection in images
WO2020157731A1 (en) 2019-02-03 2020-08-06 International Business Machines Corporation Performing multi-objective tasks via primal networks trained with dual networks
US10956474B2 (en) * 2019-03-14 2021-03-23 Microsoft Technology Licensing, Llc Determination of best set of suggested responses
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
USD913313S1 (en) 2019-04-22 2021-03-16 Facebook, Inc. Display screen with an animated graphical user interface
USD914051S1 (en) 2019-04-22 2021-03-23 Facebook, Inc. Display screen with an animated graphical user interface
USD912697S1 (en) 2019-04-22 2021-03-09 Facebook, Inc. Display screen with a graphical user interface
USD912693S1 (en) 2019-04-22 2021-03-09 Facebook, Inc. Display screen with a graphical user interface
USD914058S1 (en) 2019-04-22 2021-03-23 Facebook, Inc. Display screen with a graphical user interface
USD930695S1 (en) 2019-04-22 2021-09-14 Facebook, Inc. Display screen with a graphical user interface
USD913314S1 (en) 2019-04-22 2021-03-16 Facebook, Inc. Display screen with an animated graphical user interface
USD914049S1 (en) 2019-04-22 2021-03-23 Facebook, Inc. Display screen with an animated graphical user interface
US11554322B2 (en) * 2019-04-26 2023-01-17 Sony Interactive Entertainment LLC Game controller with touchpad input
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US10817142B1 (en) 2019-05-20 2020-10-27 Facebook, Inc. Macro-navigation within a digital story framework
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US10757054B1 (en) 2019-05-29 2020-08-25 Facebook, Inc. Systems and methods for digital privacy controls
US11388132B1 (en) * 2019-05-29 2022-07-12 Meta Platforms, Inc. Automated social media replies
EP3977472A1 (en) 2019-05-31 2022-04-06 PAIGE.AI, Inc. Systems and methods for processing images of slides to automatically prioritize the processed images of slides for digital pathology
DK201970511A1 (en) 2019-05-31 2021-02-15 Apple Inc Voice identification in digital assistant systems
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. USER ACTIVITY SHORTCUT SUGGESTIONS
US11468890B2 (en) 2019-06-01 2022-10-11 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
USD914705S1 (en) 2019-06-05 2021-03-30 Facebook, Inc. Display screen with an animated graphical user interface
USD924255S1 (en) 2019-06-05 2021-07-06 Facebook, Inc. Display screen with a graphical user interface
USD914739S1 (en) 2019-06-05 2021-03-30 Facebook, Inc. Display screen with an animated graphical user interface
USD912700S1 (en) 2019-06-05 2021-03-09 Facebook, Inc. Display screen with an animated graphical user interface
USD917533S1 (en) 2019-06-06 2021-04-27 Facebook, Inc. Display screen with a graphical user interface
USD916915S1 (en) 2019-06-06 2021-04-20 Facebook, Inc. Display screen with a graphical user interface
USD918264S1 (en) 2019-06-06 2021-05-04 Facebook, Inc. Display screen with a graphical user interface
USD914757S1 (en) 2019-06-06 2021-03-30 Facebook, Inc. Display screen with an animated graphical user interface
US11238221B2 (en) * 2019-06-19 2022-02-01 Microsoft Technology Licensing, Llc Language profiling service
US11176330B2 (en) * 2019-07-22 2021-11-16 Advanced New Technologies Co., Ltd. Generating recommendation information
US11429778B2 (en) * 2019-08-29 2022-08-30 Rovi Guides, Inc. Systems and methods for generating personalized content
US11567788B1 (en) 2019-10-18 2023-01-31 Meta Platforms, Inc. Generating proactive reminders for assistant systems
US11861674B1 (en) 2019-10-18 2024-01-02 Meta Platforms Technologies, Llc Method, one or more computer-readable non-transitory storage media, and a system for generating comprehensive information for products of interest by assistant systems
CN111385188A (zh) * 2019-11-22 2020-07-07 百度在线网络技术(北京)有限公司 对话元素的推荐方法、装置、电子设备和介质
US11295368B2 (en) * 2019-11-22 2022-04-05 Stubhub, Inc. Interactive and personalized ticket recommendation
US11361762B2 (en) * 2019-12-18 2022-06-14 Fujitsu Limited Recommending multimedia based on user utterances
US10841251B1 (en) * 2020-02-11 2020-11-17 Moveworks, Inc. Multi-domain chatbot
CN111563575B (zh) * 2020-05-06 2021-06-29 陈永聪 一种模仿人类智能的机器智能实现方法
US11043220B1 (en) 2020-05-11 2021-06-22 Apple Inc. Digital assistant hardware abstraction
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11209964B1 (en) * 2020-06-05 2021-12-28 SlackTechnologies, LLC System and method for reacting to messages
US11610065B2 (en) 2020-06-12 2023-03-21 Apple Inc. Providing personalized responses based on semantic context
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
US20220108079A1 (en) * 2020-10-06 2022-04-07 Sap Se Application-Specific Generated Chatbot
JP7132576B2 (ja) * 2020-10-30 2022-09-07 ソプラ株式会社 セキュリティidの会話文検索システム
US11563706B2 (en) 2020-12-29 2023-01-24 Meta Platforms, Inc. Generating context-aware rendering of media contents for assistant systems
US11809480B1 (en) 2020-12-31 2023-11-07 Meta Platforms, Inc. Generating dynamic knowledge graph of media contents for assistant systems
US11792141B2 (en) * 2021-01-12 2023-10-17 Meta Platforms Technologies, Llc Automated messaging reply-to
US11861315B2 (en) 2021-04-21 2024-01-02 Meta Platforms, Inc. Continuous learning for natural-language understanding models for assistant systems
US11743215B1 (en) 2021-06-28 2023-08-29 Meta Platforms Technologies, Llc Artificial reality messaging with destination selection
CN113878584A (zh) * 2021-10-29 2022-01-04 广东电网有限责任公司 一种变电站智能机器人及控制方法
CN114398135A (zh) * 2022-01-14 2022-04-26 北京字跳网络技术有限公司 交互方法、装置、电子设备、存储介质和程序产品
US11983329B1 (en) 2022-12-05 2024-05-14 Meta Platforms, Inc. Detecting head gestures using inertial measurement unit signals
US11962546B1 (en) 2023-03-03 2024-04-16 Microsoft Technology Licensing, Llc Leveraging inferred context to improve suggested messages
US11947902B1 (en) 2023-03-03 2024-04-02 Microsoft Technology Licensing, Llc Efficient multi-turn generative AI model suggested message generation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8391618B1 (en) * 2008-09-19 2013-03-05 Adobe Systems Incorporated Semantic image classification and search
US8423577B1 (en) * 2008-07-21 2013-04-16 Sprint Communications Company L.P. Providing suggested actions in response to textual communications
KR20150037935A (ko) * 2012-07-30 2015-04-08 마이크로소프트 코포레이션 컨텍스트를 이용한 문자열 예측 생성 기법

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7283992B2 (en) 2001-11-30 2007-10-16 Microsoft Corporation Media agent to suggest contextually related media content
US7512580B2 (en) 2005-08-04 2009-03-31 Sap Ag Confidence indicators for automated suggestions
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8082151B2 (en) 2007-09-18 2011-12-20 At&T Intellectual Property I, Lp System and method of generating responses to text-based messages
US20090119584A1 (en) 2007-11-02 2009-05-07 Steve Herbst Software Tool for Creating Outlines and Mind Maps that Generates Subtopics Automatically
US8195656B2 (en) * 2008-02-13 2012-06-05 Yahoo, Inc. Social network search
US20090282114A1 (en) 2008-05-08 2009-11-12 Junlan Feng System and method for generating suggested responses to an email
US9782527B2 (en) 2009-05-27 2017-10-10 Tc1 Llc Monitoring of redundant conductors
US8635223B2 (en) 2009-07-28 2014-01-21 Fti Consulting, Inc. System and method for providing a classification suggestion for electronically stored information
US9929982B2 (en) 2010-04-08 2018-03-27 Microsoft Technology Licensing, Llc Designating automated agents as friends in a social network service
US20170098122A1 (en) * 2010-06-07 2017-04-06 Affectiva, Inc. Analysis of image content with associated manipulation of expression presentation
US8688698B1 (en) 2011-02-11 2014-04-01 Google Inc. Automatic text suggestion
US8589407B2 (en) * 2011-06-17 2013-11-19 Google Inc. Automated generation of suggestions for personalized reactions in a social network
US9245253B2 (en) * 2011-08-19 2016-01-26 Disney Enterprises, Inc. Soft-sending chat messages
US9727880B2 (en) * 2011-10-25 2017-08-08 Microsoft Technology Licensing, Llc Predicting user responses
CN106408252B (zh) * 2012-06-22 2019-11-29 谷歌有限责任公司 呈现针对当前位置或时间的信息
US9191786B2 (en) 2012-06-27 2015-11-17 At&T Intellectual Property I, L.P. Method and apparatus for generating a suggested message to be sent over a network
KR20140011073A (ko) 2012-07-17 2014-01-28 삼성전자주식회사 텍스트 추천 방법 및 장치
US20140088954A1 (en) 2012-09-27 2014-03-27 Research In Motion Limited Apparatus and method pertaining to automatically-suggested emoticons
US10691743B2 (en) 2014-08-05 2020-06-23 Sri International Multi-dimensional realization of visual content of an image collection
US9244905B2 (en) 2012-12-06 2016-01-26 Microsoft Technology Licensing, Llc Communication context based predictive-text suggestion
US20140164506A1 (en) 2012-12-10 2014-06-12 Rawllin International Inc. Multimedia message having portions of networked media content
US20140237057A1 (en) 2013-02-21 2014-08-21 Genesys Telecommunications Laboratories, Inc. System and method for processing private messages in a contact center
US8825474B1 (en) 2013-04-16 2014-09-02 Google Inc. Text suggestion output using past interaction data
US9177318B2 (en) 2013-04-22 2015-11-03 Palo Alto Research Center Incorporated Method and apparatus for customizing conversation agents based on user characteristics using a relevance score for automatic statements, and a response prediction function
US10599765B2 (en) 2013-06-27 2020-03-24 Avaya Inc. Semantic translation model training
US10162884B2 (en) 2013-07-23 2018-12-25 Conduent Business Services, Llc System and method for auto-suggesting responses based on social conversational contents in customer care services
CN104144108B (zh) * 2013-09-30 2017-07-25 腾讯科技(深圳)有限公司 一种消息响应方法、装置及系统
US8996639B1 (en) 2013-10-15 2015-03-31 Google Inc. Predictive responses to incoming communications
CN103593340B (zh) * 2013-10-28 2017-08-29 余自立 自然表达信息处理方法、处理及回应方法、设备及系统
US10565268B2 (en) 2013-12-19 2020-02-18 Adobe Inc. Interactive communication augmented with contextual information
US9661067B2 (en) 2013-12-23 2017-05-23 24/7 Customer, Inc. Systems and methods for facilitating dialogue mining
US9817813B2 (en) 2014-01-08 2017-11-14 Genesys Telecommunications Laboratories, Inc. Generalized phrases in automatic speech recognition systems
US20150207765A1 (en) 2014-01-17 2015-07-23 Nathaniel Brantingham Messaging Service with Conversation Suggestions
US10095748B2 (en) 2014-03-03 2018-10-09 Microsoft Technology Licensing, Llc Personalized information query suggestions
US9213941B2 (en) 2014-04-22 2015-12-15 Google Inc. Automatic actions based on contextual replies
WO2015183699A1 (en) * 2014-05-30 2015-12-03 Apple Inc. Predictive messaging method
WO2016003469A1 (en) 2014-07-03 2016-01-07 Nuance Communications, Inc. System and method for suggesting actions based upon incoming messages
US9569728B2 (en) 2014-11-14 2017-02-14 Bublup Technologies, Inc. Deriving semantic relationships based on empirical organization of content by users
US20160179816A1 (en) 2014-12-22 2016-06-23 Quixey, Inc. Near Real Time Auto-Suggest Search Results
KR101634086B1 (ko) * 2015-01-19 2016-07-08 주식회사 엔씨소프트 감정 분석을 통한 스티커 추천 방법 및 시스템
US9883358B2 (en) * 2015-05-08 2018-01-30 Blackberry Limited Electronic device and method of determining suggested responses to text-based communications
US10909329B2 (en) * 2015-05-21 2021-02-02 Baidu Usa Llc Multilingual image question answering
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US10504509B2 (en) 2015-05-27 2019-12-10 Google Llc Providing suggested voice-based action queries
US10445425B2 (en) 2015-09-15 2019-10-15 Apple Inc. Emoji and canned responses
KR102427833B1 (ko) 2015-11-30 2022-08-02 삼성전자주식회사 사용자 단말장치 및 디스플레이 방법
US20170171117A1 (en) 2015-12-10 2017-06-15 International Business Machines Corporation Message Suggestion Using Dynamic Information
CN108781175B (zh) 2015-12-21 2021-09-21 谷歌有限责任公司 用于消息交换题绪的自动建议的方法、介质及系统
EP3395019B1 (en) 2015-12-21 2022-03-30 Google LLC Automatic suggestions and other content for messaging applications
US10831802B2 (en) 2016-04-11 2020-11-10 Facebook, Inc. Techniques to respond to user requests using natural-language machine learning based on example conversations
US9866693B2 (en) 2016-05-06 2018-01-09 Genesys Telecommunications Laboratories, Inc. System and method for monitoring progress of automated chat conversations
US20170344224A1 (en) 2016-05-27 2017-11-30 Nuance Communications, Inc. Suggesting emojis to users for insertion into text-based messages
US10515393B2 (en) * 2016-06-30 2019-12-24 Paypal, Inc. Image data detection for micro-expression analysis and targeted data services
CN111555954B (zh) 2016-07-08 2023-04-07 艾赛普公司 自动响应用户的请求

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8423577B1 (en) * 2008-07-21 2013-04-16 Sprint Communications Company L.P. Providing suggested actions in response to textual communications
US8391618B1 (en) * 2008-09-19 2013-03-05 Adobe Systems Incorporated Semantic image classification and search
KR20150037935A (ko) * 2012-07-30 2015-04-08 마이크로소프트 코포레이션 컨텍스트를 이용한 문자열 예측 생성 기법

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
F. Lardinois, All brings Google's smarts to messaging, https://techcrunch.com/2016/09/20/allo-brings-googles-smarts-to-messaging/ (201609) *
Kannan et al., Smart Replay: Automated Response Suggestions for Email, Conf. 22nd ACM SIGKDD pp.955-965 (201608) *
Khandelwal, Hey Allo! Meet Google's AI-powered Smart Messaging App, The Hacker News (2016.05) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210007128A (ko) * 2019-07-10 2021-01-20 주식회사 인텔로이드 대화 데이터베이스를 이용한 대화문장 추천 방법 및 그것이 적용된 음성대화장치
WO2021050776A1 (en) * 2019-09-12 2021-03-18 Nec Laboratories America, Inc. Contextual grounding of natural language phrases in images

Also Published As

Publication number Publication date
CN117149970A (zh) 2023-12-01
US20180210874A1 (en) 2018-07-26
CN110178132A (zh) 2019-08-27
JP6625789B2 (ja) 2019-12-25
US10146768B2 (en) 2018-12-04
KR102050334B1 (ko) 2019-11-29
EP3516537A1 (en) 2019-07-31
WO2018140099A1 (en) 2018-08-02
CN110178132B (zh) 2023-09-19
JP2019536135A (ja) 2019-12-12

Similar Documents

Publication Publication Date Title
KR102050334B1 (ko) 언어 모델을 사용한, 메시지들에서 수신되는 이미지들에 대한 자동적인 제안 응답들
US11303590B2 (en) Suggested responses based on message stickers
US10862836B2 (en) Automatic response suggestions based on images received in messaging applications
US11336467B2 (en) Bot permissions
KR102197448B1 (ko) 봇 상호작용
CN110709869B (zh) 用于在聊天对话中与嵌入式应用一起使用的建议项目
CN107846350B (zh) 一种语境感知网络聊天的方法、计算机可读介质和系统
US10992609B2 (en) Text-messaging based concierge services
US20180260384A1 (en) Conversational agent
US11836204B1 (en) Social collaboration platform for facilitating recommendations

Legal Events

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