KR102226243B1 - 메시지 교환 스레드를 사용한 효율적인 검색 촉진 - Google Patents

메시지 교환 스레드를 사용한 효율적인 검색 촉진 Download PDF

Info

Publication number
KR102226243B1
KR102226243B1 KR1020187034857A KR20187034857A KR102226243B1 KR 102226243 B1 KR102226243 B1 KR 102226243B1 KR 1020187034857 A KR1020187034857 A KR 1020187034857A KR 20187034857 A KR20187034857 A KR 20187034857A KR 102226243 B1 KR102226243 B1 KR 102226243B1
Authority
KR
South Korea
Prior art keywords
message exchange
exchange thread
participant
attributes
search query
Prior art date
Application number
KR1020187034857A
Other languages
English (en)
Other versions
KR20190003709A (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 KR20190003709A publication Critical patent/KR20190003709A/ko
Application granted granted Critical
Publication of KR102226243B1 publication Critical patent/KR102226243B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3329Natural language query formulation or dialogue systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/243Natural language query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24575Query processing with adaptation to user needs using context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06Q50/50
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L13/00Speech synthesis; Text to speech systems
    • G10L13/08Text analysis or generation of parameters for speech synthesis out of text, e.g. grapheme to phoneme translation, prosody generation or stress or intonation determination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/10Multimedia information
    • H04L51/16
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/216Handling conversation history, e.g. grouping of messages in sessions or threads

Abstract

메시지 교환 스레드를 사용하여 효율적인 검색을 용이하게 하기 위한 기술이 제공된다. 이러한 기술은, 스레드의 참가자와 관련된 개인 보조 모듈이 액세스가능한 제 1 메시지 교환 스레드의 참가자 기여 메시지에 기초하여, 상기 제 1 메시지 교환 스레드의 적어도 제 1 참가자의 하나 이상의 속성들을 결정하는 단계, 상기 개인 보조 모듈에 의해서, 상기 제 1 참가자와 관련된 상기 하나 이상의 속성들을 저장하는 단계; 상기 개인 보조 모듈에 의해서, 상기 제 1 메시지 교환 스레드의 콘텐츠 혹은 상기 개인 보조 모듈과 관련된 상기 참가자를 포함하는 제 2 메시지 교환 스레드의 콘텐츠에 적어도 일부 기초하여 검색 질의를 형성하는 단계, 상기 개인 보조 모듈에 의해서, 상기 검색 질의에 응답하는 콘텐츠를 획득하는 단계; 및 상기 개인 보조 모듈에 의해서, 상기 응답 콘텐츠와 관련된 하나 이상의 메시지들을 상기 제 1 또는 제 2 메시지 교환 스레드에 통합하는 단계를 포함한다. 검색 질의는 제 1 참가자의 저장된 속성들에 기초하여 선택된 아이템들을 포함한다.

Description

메시지 교환 스레드를 사용한 효율적인 검색 촉진
본 발명은 메시지 교환 스레드를 사용하여 효율적인 검색을 용이하는 기술에 관한 발명이다.
개인 보조 모듈들(personal assistant modules)은 스마트 폰, 태블릿, 차량 내비게이션 시스템 및 스마트 시계와 같은 컴퓨팅 디바이스에 설치되어 사용자가 자연어 명령을 내릴 수 있는 사용자 친화적인 인터페이스를 제공하는 소프트웨어 프로세스들이다. 사용자는 종종 자신의 목소리를 사용하여 자연어 명령을 발행하지만, 개인 보조 모듈들은 다양한 형식의 텍스트 및/또는 이미지 입력과 같은 다른 양식에도 응답할 수 있다. 사용자는 텍스트 메시징, 온라인 채팅(예컨대, 인스턴트 메신저, 인터넷 릴레이 채팅 등), 소셜 네트워크 스레드, 대화식 음성 응답 등과 같은 다양한 기술을 사용하여 구현된 메시지 교환 스레드를 통해 개인 보조 모듈들과 및/또는 서로 통신할 수 있다. 진행중인 메시지 교환 스레드는 텍스트, 오디오, 또는 참가자 또는 개인 보조 모듈에 의해 메시지 교환 스레드에 통합되는 그림 등과 같은 다른 데이터로 한정될 수 있다.
일반적으로 본 발명은 메시지 교환 스레드를 사용하여 효율적인 검색을 용이하게 하는 방법, 디바이스 및 컴퓨터 판독가능 매체(일시적 및 비-일시적)에 관한 것이다. 예를 들어, 상기 방법, 디바이스 및 컴퓨터 판독가능 매체는 메시지 교환 스레드 참가자들의 속성을 결정할 수 있고, 그리고 검색 질의의 효율적인 형성을 위해 또는 검색 질의에 응답하여 리턴되는 콘텐츠(예를 들어, 검색 결과)를 바이어 싱하기 위해 이들 속성들을 사용할 수 있다. 다음의 설명으로부터 알 수 있는 바와 같이, 검색 질의는 저장된 하나 이상의 속성들에 기초하여 선택된 하나 이상의 아이템들을 자동으로 포함할 수 있기 때문에 효율적으로 형성될 수 있으며, 이들 아이템들을 수동으로 제공하기 위한 사용자-디바이스 상호작용(및 관련된 계산 리소스)에 대한 필요성을 감소시킨다. 또한, 하나 이상의 속성들에 기초하여 선택된 하나 이상의 아이템을 검색 질의에 포함시킴으로써, 사용자가 검색 결과들을 개량하거나 추가 검색(및 관련된 계산 리소스들의 지출)을 수행할 필요를 감소시킬 수 있다. 유사하게, 속성들에 기초하여 검색 질의에 응답하여 리턴되는 콘텐츠를 바이어 싱함으로써, 검색 결과들과의 상호작용 분량 및 검색 결과들의 개량(관련된 계산 리소스의 소모)의 분량이 감소될 수 있다. 이와 같이, 속성들이, 검색 질의에 아이템들을 포함시키는데 사용되는지 또는 검색 질의에 응답하는 콘텐츠를 바이어싱하는데 사용되는지에 관계없이, 검색 프로세스의 전체적인 효율성이 개선될 수 있다.
사용자가 자신의 개인 보조 모듈과의 여러 개의 대화 흐름에 참여한다라고 가정하자. 이러한 대화들은 다른 사용자(또는 "참가자")를 포함할 수도 있고 포함하지 않을 수도 있다. 하나 이상의 대화에서, 사용자와 개인 보조 모듈은, 예를 들어, 적당한 식당을 고르기 위하여 여러 메시지들을 교환할 수 있다. 그 과정에서, 사용자 및/또는 다른 참가자는 향후에 유사한 대화들에 적용될 수 있는, 선호도들 및 초이스들을 암시적으로 또는 명시적으로 표현할 수 있다. 예를 들어, 참가자는 요리 선호도("나는 채식주의자이다"), 비용 선호도("너무 멋진 것은 없어"(Nothing too fancy)), 시간 선호도("나는 8시에 한가하다"(I'm free at 8)) 기타 등등을 나타낼 수 있다.
다양한 구현예에서, 이러한 상호작용은 개인 보조 모듈과 관련된 참가자를 대신하여 저장될 수 있다. 일부 구현예에서, 이러한 상호작용은, 해석될 수도 있고 및/또는 주석이 첨부될 수 있으며, 일부 경우에는 이러한 대화가 발생했을 때의 하나 이상의 참가자들의 시간 및/또는 위치와 관련될 수도 있다. 이러한 정보는 나중에, 후속 대화 흐름을 향상시키는데 사용될 수 있다. 예를 들어, 이전에 프랑스 요리에 관심을 표명한 참가자가 "배고프다"고 말하는 경우, 개인 보조 모듈은 "좋아, 프랑스 음식 다시 먹을거야?" 라고 대답할 수 있으며, 그리고 달리 표시될 수 있는 대안들의 더 넓은 세트 대신에 적절히 제한된 옵션 세트를 제시할 수 있다. 예를 들어, 관련된 언급들에 대하여, 개인 보조 모듈과 관련된 참가자의 관련 히스토리를 검색함으로써 이러한 것이 달성될 수 있다. 예를 들어, 요리 선호도가 언급된 모든 사례들에 대해서 검색이 수행될 수 있다. 그 결과들은 다양한 신호들에 기초하여 좁혀질 수 있는바, 가령, 이러한 요리 선호도가 언급되었던 위치, 이러한 요리 선호도가 언급되었던 시간, 기타 등등에 기초하여 좁혀질 수 있다. 예를 들어, 참가자가 저녁 식사 옵션(dinner options)을 검색한다면, 저녁 식사 메시지(dinner messages)/선호도들이 아침 식사를 위해 사용될 수 있다. 메시지들은, 그들의 현재 위치 또는 그 근방에서 이전에 언급된 것들로 유사하게 좁혀질 수 있다. 예를 들어, 참가자의 선호도들은 여행 중일 때와 고향에서(at home versus when traveling) 서로 다를 수 있다.
일부 구현예에서, 개인 보조 모듈은 메시지 교환 스레드의 콘텐츠로부터, 메시지 교환 스레드의 콘텐츠에 기초하여, 이들이 연관된 참가자 및/또는 다른 참가자의 속성들을 결정할 수 있다. 이들 결정된 속성들 및/또는 속성들을 전달하는 메시지들은 개인 보조 모듈에 의해서 메시지 교환 스레드를 보강할 때 후속 사용을 위해 저장될 수 있다. 개인 보조 모듈이 나중에 지식 시스템의 하나 이상의 구성 요소에 대해 검색 질의를 공식화하거나 및/또는 제출하도록 지시(또는 다른 방식으로 자극)될 때, 검색 질의는, 메시지 교환 스레드로부터의 콘텐츠(예컨대, "어디서 음식을 먹어야하지?(Where should we eat?)") 및 저장된 참가자 속성들에 기초하여 선택된 하나 이상의 아이템들(예컨대, 참가자 A는 돈이 모자르다고 전에 말했으므로, 중간 가격("$$") 또는 저렴한 가격("$")의 레스토랑만을 검색하도록 질의를 형성한다) 둘다를 이용하여 형성될 수 있다.
추가적으로 또는 대안적으로, 저장된 참가자 속성들은, 검색 질의를 형성하는 것 대신에, 응답 콘텐츠를 바이어싱하는데 사용될 수 있다. 예를 들어, 전술한 지식 시스템의 하나 이상의 구성요소들은, 응답 콘텐츠를 클라이언트 디바이스로 반환하기 전에, 저장된 참가자 속성들에 기초하여 결과들을 바이어싱할 수 있다. 또는, 일부 구현예에서, 개인 보조 모듈은, 저장된 참가자 속성들에 기초하여, 지식 시스템으로부터 수신된 응답 콘텐츠를 바이어싱할 수 있다.
일례로서, 메시지 교환 스레드의 제 1 참가자가 제 2 참가자에게(또는 복수의 다른 참가자들에게) "나는 중국 음식을 좋아하지 않는다" 라고 말한다고 가정하자. 이러한 메시지 교환 스레드에 액세스할 수 있는(예를 들어, 참가할 수 있는) 개인 보조 모듈은 이러한 언급으로부터 상기 스레드의 적어도 하나의 참가자가 중국 음식을 좋아하지 않는다는 것을 추론할 수 있다(개인 보조 모듈은 IVR 기반의 구현예들에서 여러 참가자들을 구별할 수 있는 능력을 가질수도, 가지지 못할 수도 있음). 개인 보조 모듈은 이러한 속성을 저장할 수 있다. 소정의 시간이 경과한 후, 또는 심지어 동일하거나 유사한 참가자들과의 후속 메시지 교환 스레드에서, 참가자가 "봇(BOT), 근처에 우수하고 가격이 싼 점심 먹을데가 어디야?(BOT, what's a good and cheap lunch spot nearby?)" 라고 질문하는 경우, 개인 보조 모듈은 중국 식당을 배제한 검색 질의를 공식화할 수 있다. 추가적으로 또는 대안적으로, 개인 보조 모듈은 스레드 내의 참가자의 요청으로부터 오로지(exclusively) 형성된 검색 질의를 제출할 수 있으며, 중국 레스토랑과 관련된 결과들을 폐기하거나 또는 적어도 낮은 순위를 할당하도록 그 결과들을 바이어싱할 수 있다.
일부 구현예에서, 다음의 동작들을 포함하는 방법이 제공되는바, 상기 방법은, 하나 이상의 프로세서들에 의해 동작되는 개인 보조 모듈(personal assistant module)에 의해서, 상기 개인 보조 모듈이 액세스가능한 제 1 메시지 교환 스레드의 참가자 기여 메시지(participant-contributed message)에 기초하여, 상기 제 1 메시지 교환 스레드의 적어도 제 1 참가자의 하나 이상의 속성들을 결정하는 단계를 포함한다. 상기 개인 보조 모듈은 상기 제 1 메시지 교환 스레드의 참가자와 관련되며, 그리고 상기 방법은, 상기 개인 보조 모듈에 의해서, 상기 제 1 참가자와 관련된 상기 하나 이상의 속성들을 저장하는 단계; 상기 개인 보조 모듈에 의해서, 상기 제 1 메시지 교환 스레드의 콘텐츠 혹은 상기 개인 보조 모듈과 관련된 상기 참가자를 포함하는 제 2 메시지 교환 스레드의 콘텐츠에 적어도 일부 기초하여 검색 질의를 형성하는 단계를 포함한다. 상기 검색 질의는 상기 제 1 참가자의 저장된 하나 이상의 속성들에 기초하여 선택된 아이템들을 또한 포함하며, 상기 방법은, 상기 개인 보조 모듈에 의해서, 상기 검색 질의에 응답하는 콘텐츠를 획득하는 단계; 및 상기 개인 보조 모듈에 의해서, 상기 응답 콘텐츠와 관련된 하나 이상의 메시지들을 상기 제 1 또는 제 2 메시지 교환 스레드에 통합하는 단계를 더 포함한다.
본 방법 및 본 명세서에 개시된 기술의 다른 구현예들은 각각 다음 특징들 중 하나 또는 그 이상을 선택적으로 포함할 수 있다.
일부 실시예에서, 개인 보조 모듈과 관련된 상기 참가자는 제 1 참가자이다.
일부 실시예에서, 개인 보조 모듈은 상기 제 1 참가자와는 다른, 상기 제 1 메시지 교환 스레드의 제 2 참가자와 관련된다.
일부 실시예에서, 상기 통합하는 단계는, 하나 이상의 스피커를 통해, 상기 응답 콘텐츠와 관련된 하나 이상의 메시지들을 컴퓨터 생성 스피치로서 청각적으로 렌더링하는 단계를 포함한다.
일부 실시예에서, 상기 통합하는 단계는, 상기 응답 콘텐츠와 관련된 하나 이상의 그래픽 요소들을 디스플레이 상에 시각적으로 렌더링하는 단계를 포함한다.
일부 실시예에서, 상기 통합하는 단계는, 상기 제 1 또는 제 2 메시지 교환 스레드의 적어도 하나의 참가자에 의해 동작되는 적어도 하나의 메시지 교환 클라이언트가, 상기 제 1 또는 제 2 메시지 교환 스레드의 트랜스크립트 내에 하나 이상의 그래픽 요소들을 삽입할 것을 요청하는 단계를 포함한다. 상기 트랜스크립트는 상기 적어도 하나의 메시지 교환 클라이언트의 그래픽 사용자 인터페이스에 디스플레이되며, 상기 하나 이상의 그래픽 요소들은 상기 응답 콘텐츠와 관련된다. 일부 실시예에서, 상기 하나 이상의 그래픽 요소들은 상기 응답 콘텐츠를 전달하는 텍스트 및/또는 상기 응답 콘텐츠를 전달하는 하나 이상의 이미지들을 포함한다.
일부 실시예에서, 상기 참가자 기여 메시지는 상기 제 1 메시지 교환 스레드의 하나의 참가자로부터 다른 참가자로 전달된다. 일부 실시예에서, 상기 결정하는 단계는, 상기 참가자 기여 메시지에 기초하여 상기 하나 이상의 속성들을 유추하는 단계를 포함한다.
일부 실시예에서, 상기 하나 이상의 속성들은 상기 제 1 사용자의 선호도를 포함한다.
일부 실시예에서, 상기 형성하는 단계는, 상기 하나 이상의 속성들과 관련된 검색 결과들을 캡처하도록 상기 검색 질의를 형성한다.
일부 실시예에서, 상기 형성하는 단계는, 상기 하나 이상의 속성들과 관련된 검색 결과들을 제외하도록 상기 검색 질의를 형성한다.
일부 실시예에서, 다음의 동작들을 포함하는 방법이 제공되며, 상기 방법은, 개인 보조 모듈이 액세스가능한 제 1 메시지 교환 스레드의 참가자 기여 메시지에 기초하여 상기 제 1 메시지 교환 스레드의 적어도 제 1 참가자의 하나 이상의 속성들을 결정하는 단계를 포함한다. 상기 개인 보조 모듈은 상기 제 1 메시지 교환 스레드의 제 2 참가자와 관련되고, 상기 방법은 또한, 상기 제 1 참가자와 관련된 상기 하나 이상의 속성들을 저장하는 단계; 상기 제 1 메시지 교환 스레드의 콘텐츠 혹은 상기 제 2 참가자를 포함하는 제 2 메시지 교환 스레드의 콘텐츠로부터 검색 질의를 형성하는 단계; 상기 검색 질의에 응답하는 복수의 아이템들을 획득하는 단계를 포함한다. 상기 복수의 아이템들은 상기 하나 이상의 속성들에 적어도 일부 기초하여 순위가 할당되며, 상기 방법은 또한, 상기 복수의 아이템들과 관련된 하나 이상의 메시지들을 상기 순위에 적어도 일부 기초하여, 상기 제 1 또는 제 2 메시지 교환 스레드에 선택적으로 통합하는 단계를 포함한다.
본 방법 및 본 명세서에 개시된 기술의 다른 구현예들은 각각 다음 특징들 중 하나 또는 그 이상을 선택적으로 포함할 수 있다.
일부 실시예에서, 상기 선택적으로 통합하는 단계는 하나 이상의 스피커를 통해, 상기 응답 콘텐츠와 관련된 하나 이상의 메시지들을 컴퓨터 생성 스피치로서 청각적으로 렌더링하는 것을 포함한다.
일부 실시예에서, 상기 선택적으로 통합하는 단계는 상기 응답 콘텐츠와 관련된 하나 이상의 그래픽 요소들을 디스플레이 상에 시각적으로 렌더링하는 것을 포함한다.
일부 실시예에서, 상기 선택적으로 통합하는 단계는 상기 제 1 또는 제 2 메시지 교환 스레드의 적어도 하나의 참가자에 의해 동작되는 적어도 하나의 메시지 교환 클라이언트가, 상기 제 1 또는 제 2 메시지 교환 스레드의 트랜스크립트 내에 하나 이상의 그래픽 요소들을 삽입할 것을 요청하는 것을 포함한다. 상기 트랜스크립트는 상기 적어도 하나의 메시지 교환 클라이언트의 그래픽 사용자 인터페이스에 디스플레이되며, 상기 하나 이상의 그래픽 요소들은 상기 복수의 아이템들과 관련된다. 일부 실시예에서, 상기 하나 이상의 그래픽 요소들은 상기 하나 이상의 메시지들을 전달하는 텍스트 및/또는 상기 하나 이상의 메시지들을 전달하는 하나 이상의 이미지들을 포함한다.
일부 실시예에서, 다음의 동작들을 포함하는 방법이 제공될 수 있으며, 상기 방법은, 적어도 제 1 및 제 2 참가자 간의 제 1 메시지 교환 스레드의 참가자 기여 메시지에 기초하여, 제 1 참가자의 하나 이상의 속성들을 결정하는 단계; 상기 제 1 참가자와 관련된 하나 이상의 속성들을 저장하는 단계; 상기 제 1 메시지 교환 스레드의 콘텐츠 또는 상기 제 2 참가자를 포함하는 제 2 메시지 교환 스레드의 콘텐츠에 적어도 일부 기초하여 검색 질의를 형성하는 단계, 상기 검색 질의는 상기 저장된 하나 이상의 속성들에 기초하여 선택된 하나 이상의 아이템들을 더 포함하며; 상기 검색 질의에 응답하여 콘텐츠를 획득하는 단계; 및 상기 응답 콘텐츠와 연관된 데이터를 상기 제 2 참가자에게 제공하는 단계를 포함한다.
다른 구현예들은 전술한 방법들 중 하나 이상과 같은 방법을 수행하도록 프로세서에 의해 실행가능한 명령들을 저장하는 비-일시적 컴퓨터 판독가능한 저장 매체를 포함할 수 있다. 또 다른 구현예는 앞서 설명된 방법들 중 하나 이상과 같은 방법을 단독으로 또는 집합적으로 수행하는 하나 이상의 모듈 또는 엔진을 구현하기 위해 메모리 및 메모리에 저장된 명령을 실행하도록 동작가능한 하나 이상의 프로세서들을 포함하는 시스템을 포함할 수 있다.
다음을 유의해야 하는바, 본 명세서에 상세하게 설명된 전술한 개념들 및 추가적인 개념들의 모든 조합들이, 본 명세서에 개시된 주제의 일부로서 고려될 수 있다. 예를 들어, 본 명세서의 끝 부분에 있는 청구된 주제의 모든 조합들은 본 명세서에 개시된 주제의 일부로서 고려된다.
도 1은 다양한 구현들에 따라, 하나 이상의 그래픽 요소들이 메시지 교환 스레드에 통합될 수 있는 환경을 도시한다.
도 2, 도 3, 도 4 및 도 5는 다양한 구현들에 따라 메시지 교환 스레드 참가자들의 속성을 결정하고 이들 속성들을 나중에 사용하는 예들을 각각 도시한다.
도 6은 다양한 구현들에 따라, 메시지 교환 스레드 참가자들의 속성을 결정하고 이러한 속성들을 나중에 사용하는 예시적인 방법을 도시한 흐름도이다.
도 7은 컴퓨터 시스템의 예시적인 아키텍처를 개략적으로 도시한다.
도 1은 메시지 교환 스레드 참가자들의 속성들을 결정하고 이러한 속성들을 나중에 사용하기에 적합한 환경을 도시한다. 예시적인 환경은 복수의 클라이언트 디바이스들(1061-N) 및 지식 시스템(102)을 포함한다. 지식 시스템(102)은 예를 들어 네트워크를 통해 통신하는 하나 이상의 컴퓨터들로 구현될 수 있다. 지식 시스템(102)은 본 명세서에 서술된 시스템, 구성 요소 및 기술이 구현될 수 있고 및/또는 본 명세서에 서술된 시스템, 구성 요소 및 기술이 인터페이스할 수 있는 정보 검색 시스템의 예이다.
사용자는 클라이언트 디바이스(106)를 통해 지식 시스템(102)과 상호작용할 수 있다. 각각의 클라이언트 디바이스(106)는 근거리 통신망(LAN) 또는 광역 통신망(WAN)(예컨대, 인터넷)과 같은 하나 이상의 네트워크(110)를 통해 지식 시스템(102)에 연결된 컴퓨터일 수 있다. 각각의 클라이언트 디바이스(106)는 예를 들어 데스크톱 컴퓨팅 디바이스, 랩탑 컴퓨팅 디바이스, 태블릿 컴퓨팅 디바이스, 이동 전화 컴퓨팅 디바이스, 참가자의 차량 컴퓨팅 디바이스(예를 들어, 차량 내 통신 시스템, 차량 내 엔터테인먼트 시스템, 차량 내 네비게이션 시스템), 독립형 음성 명령 디바이스, 또는 컴퓨팅 디바이스를 포함하는 참가자의 웨어러블 기기(예를 들어, 컴퓨팅 디바이스를 갖는 참가자의 시계, 컴퓨팅 디바이스를 갖는 참가자의 안경)가 될 수 있다. 추가적인 및/또는 대안적인 클라이언트 디바이스가 제공될 수 있다. 참가자는 참가자가 소유하거나 소유하지 않을 수 있고, 참가자의 온라인 계정과 연관될 수도 있고 그렇지 않을 수도 있는, 컴퓨팅 디바이스들의 조정된 "생태계(ecosystem)"를 집합적으로 형성하는 복수의 컴퓨팅 디바이스들을 운영할 것이다. 그러나, 간결성을 위해, 본 개시에서 설명된 예들은 단일 클라이언트 디바이스(106)를 운영하는 참가자에 초점을 맞출 것이다.
각각의 클라이언트 디바이스(106)는 메시지 교환 클라이언트(107) 및/또는 개인 보조 모듈(personal assistant module)(109)과 같은 다양한 상이한 어플리케이션들을 동작시킬 수 있다. 메시지 교환 클라이언트(107)는 다양한 형태로 존재할 수 있다. 일부 구현예에서, 메시지 교환 클라이언트(107)는 단문 메시징 서비스("SMS") 및/또는 멀티미디어 메시징 서비스("MMS") 클라이언트, 온라인 채팅 클라이언트(예를 들어, 인스턴트 메신저, 인터넷 릴레이 채팅, 또는 "IRC"등), 소셜 네트워크와 관련된 메시징 어플리케이션, 개인 보조 모듈(109) 등과 통신하기 위해 사용되는 인터페이스 등을 포함할 수 있다. 일부 구현예에서, 메시지 교환 클라이언트(107)는 웹 브라우저(도시되지 않음)에 의해 렌더링된 웹 페이지 내에 구현될 수 있다. 다양한 경우에 있어서, 메시지 교환 스레드의 참가자에 의해 운영되는 2 개의 클라이언트 디바이스들(106)은 서로 다른 메시지 교환 클라이언트들(107)을 구동할 수 있다(그럼에도 불구하고 공통 통신 프로토콜을 사용하여 통신을 용이하게 하는). 예를 들어, 클라이언트 디바이스(1061)는 설치된 하나의 벤더에 의해 배포된 하나의 SMS 어플리케이션을 가질 수 있고, 클라이언트 디바이스(106N)는 설치된 다른 벤더에 의해 배포된 다른 하나의 SMS 어플리케이션을 가질 수 있다.
배경 기술 부분에서 설명한 바와 같이, 개인 보조 모듈들(personal assistant modules)(109)은 소정의 클라이언트 컴퓨팅 디바이스에 설치되어 자연어 명령을 내릴 수 있는 사용자 친화적인 인터페이스를 사용자에게 제공하는 소프트웨어 프로세스들의 형태를 취할 수 있다. 개인 보조 모듈(109)은 개인 보조 모듈(109)을 활성화하도록 선택된 하나 이상의 코드 워드를 사용자가 말하는 것과 같은 다양한 자극에 의해 호출되거나 "각성" 될 수 있다. 본원에 기재된 다양한 구현예에서, 사용자는 예를 들어 음성 입력, 텍스트 입력 등을 사용하여 메시지 교환 스레드에서 개인 보조 모듈(109)과 통신할 수 있다. 또한, 개인 보조 모듈(109)은 다수의 클라이언트 디바이스들(106) 상에서 동작하고 다수의 참가자들에 의해 제어되는 다수의 메시지 교환 클라이언트들(107)을 포함하는 메시지 교환 스레드에 참가할 수 있다. 예를 들어, 그리고 이하에서 보다 상세히 설명되는 바와 같이, 개인 보조 모듈(109)은 메시지 교환 스레드에 기여하는 하나 이상의 참가자들에 의한 하나 이상의 메시지들에 응답하여, 메시지 교환 스레드에 콘텐츠를 자동으로 선택 및 통합시킬 수 있다.
클라이언트 디바이스(106) 및 지식 시스템(102) 각각은 데이터 및 소프트웨어 어플리케이션의 저장을 위한 하나 이상의 메모리, 데이터에 액세스하고 어플리케이션을 실행하기 위한 하나 이상의 프로세서 및 네트워크를 통한 통신을 용이하게 하는 다른 구성요소들을 포함할 수 있다. 클라이언트 디바이스(106) 및/또는 지식 시스템(102)에 의해 수행되는 동작들은 다수의 컴퓨터 시스템들에 분산될 수 있다. 지식 시스템(102)은 예를 들어, 네트워크를 통해 서로 결합되는 하나 이상의 위치들에 있는 하나 이상의 컴퓨터들 상에서 실행되는 컴퓨터 프로그램들로서 구현될 수 있다.
다양한 구현예에서, 지식 시스템(102)은 메시지 교환 엔진(120), 하나 이상의 개인 보조 엔진(122), 인덱싱 엔진(124), 정보 엔진(128), 순위 엔진(134) 및 대안적인 질의 제안 엔진(136)을 포함할 수 있다. 일부 구현예에서, 엔진들(120, 122, 124, 128, 134 및/또는 136) 중 하나 이상이 생략될 수도 있다. 일부 구현예에서, 하나 이상의 엔진들(120, 122, 124, 128, 134 및/또는 136)의 전부 또는 양상들 결합될 수도 있다. 일부 구현예에서, 하나 이상의 엔진들(120, 122, 124, 128, 134 및/또는 136)은 지식 시스템(102)과 별개의 구성 요소로 구현될 수 있다. 일부 구현예에서, 하나 이상의 엔진들(120, 122, 124, 128, 134 및/또는 136) 또는 그것의 임의의 동작 부분은 클라이언트 디바이스(106)에 의해 실행되는 구성요소에서 구현될 수 있다.
다양한 구현에서, 메시지 교환 엔진(120)은 다수의 참가자들에 의해 제어되는 다수의 클라이언트 디바이스들(106) 상에서 동작하는 다수의 메시지 교환 클라이언트들(107) 간의 메시지 교환 스레드를 용이하게 하도록 구성될 수 있다. 일부 구현예에서, 메시지 교환 엔진(120)은, 참가자들이 메시지 교환 스레드에서 서로 교환하는 메시지들 및 다른 콘텐츠의 글로벌 "트랜스크립트(transcript)"를 유지할 수 있다. 본 명세서에서 사용된 바와 같이, "트랜스크립트"는 메시지 교환 스레드에서 하나 이상의 참가자들에 의해서 교환 및/또는 보여지는 텍스트, 이미지, 사운드 및/또는 애플릿의 라이브 레코드를 지칭할 수 있다. 일부 구현에서, 메시지 교환 스레드의 트랜스크립트는 참가자들이 대화함에 따라 실시간으로 또는 거의 실시간으로 업데이트될 수 있다. 하나의 참가자가 개인 보조 모듈(109)과 통신하는 경우, 트랜스크립트는 개인 보조 모듈(109)에 의해 국부적으로 및/또는 개인 보조 엔진(122)에 의해 원격으로 유지될 수 있다.
다양한 구현예에서, 개인 보조 엔진(122)은 예를 들어, 인덱스(123)에 저장될 수 있는 다양한 온라인 음향/언어, 문법 및/또는 동작 모델에 의존하는 음성 기반의 질의 프로세서를 사용하여 음성 입력을 처리하기 위한 보완적인 기능을 포함할 수 있다. 다음을 유의해야 하는바, 일부 구현예에서, 특히 대부분의 클라이언트 디바이스들(106)은 리소스-제한적인 디바이스들이므로, 개인 보조 엔진(122)은 각 클라이언트 디바이스(106)에 대해 로컬인 것보다 더 복잡하고 리소스-집중형인 음성 프로세싱 기능을 구현할 수 있다. 또한, 다음을 유의해야 하는바, 본원에서 소정 액션이 개인 보조 모듈(109)에 의해 수행되는 것으로 서술되는 경우, 이는 개인 보조 엔진(122)에 의해 수행되는 액션의 하나 이상의 양상을 포함할 수도 있고 포함하지 않을 수도 있다.
일부 구현예에서, 다수의 개인 보조 엔진들(122)이 채용될 수 있고, 이들 각각은 하나 이상의 개별 개인 보조 모듈들(109)의 온라인 상대방(counterpart)으로서의 역할을 한다. 예를 들어, 일부 구현예에서, 사용자의 생태계의 각각의 클라이언트 디바이스들(106)은, 사용자와 관련된 개인 보조 모듈(109)의 인스턴스를 동작하도록 구성될 수 있다(예를 들어, 사용자의 선호도로 구성되고, 동일한 상호작용 히스토리와 연관되는 등). 개인 보조 엔진(122)의 하나의, 사용자 중심 온라인 인스턴스는, 사용자가 그 시간에 어떤 디바이스를 조작하고 있는지에 따라, 개인 보조 모듈(109)의 이들 다수의 인스턴스들 각각에 액세스 가능할 수 있다.
일부 구현예에서, 온라인 및 오프라인 기능 둘다가 지원될 수 있는바, 예를 들어, 클라이언트 디바이스(106)가 온라인 서비스와 통신할 때마다 온라인 기능이 이용되는 반면에, 연결성이 존재하지 않는 경우 오프라인 기능이 이용될 수 있다. 다른 구현예에서, 상이한 액션들 또는 액션 도메인들이 온라인 및 오프라인 기능에 할당될 수 있으며 그리고, 다른 구현예에서는 오프라인 기능이 특정 음성 입력을 적절히 처리하지 못할 때에만 온라인 기능이 사용될 수도 있다. 그러나 다른 구현에서는 보완적인 온라인 기능이 사용되지 않을 수도 있다.
다양한 구현예에서, 개인 보조 모듈(109) 및/또는 개인 보조 엔진(122)은, 나중에 사용하기 위해, 참가자들간에 교환된 메시지 및/또는 이러한 메시지들로부터 학습된 참가자들에 대한 속성들을 저장할 수 있다. 예를 들면, 개인 보조 모듈(109)은 자신이 액세스한(예컨대, 관여한) 메시지 교환 스레드들의 하나 이상의 참가자들의 하나 이상의 속성들을 메모리에 저장할 수 있으며, 상기 메모리는 각각의 클라이언트 디바이스(106)에 대해 로컬이다. 개인 보조 엔진(122)은 자신이 액세스한(예컨대, 메시지 교환 엔진 120 등을 통해 관여한) 메시지 교환 스레드들의 하나 이상의 참가자들의 하나 이상의 속성들을 인덱스(123)에 저장할 수 있다. 추가적으로 또는 대안적으로, 개인 보조 모듈(109) 및/또는 개인 보조 엔진(122)은 메시지 그 자체를 예컨대, 인덱스(123)에 저장할 수 있다. 일부 구현예에서, 이들 메시지들은 예컨대, 타임 스탬프, 메시지가 메시지 교환 스레드에 기여되었던 위치, 메시지의 주제, 기타 등등으로 주석될 수 있다. 이들 저장된 메시지들 및 주석들(경우에 따라서는 메타 데이터)은 나중에, 참가자와 그의 개인 보조 모듈(109) 간의 대화 흐름을 개선하는데 이용되거나, 및/또는 다수의 참가자들(개인 보조 모듈(109)과 연관된 참가자를 포함함) 사이의 대화를 개선하는데 이용될 수 있다.
인덱싱 엔진(124)은 지식 시스템(102)에 의한 사용을 위해 인덱스(126)를 유지할 수 있다. 인덱싱 엔진(124)은 예를 들어 종래의 및/또는 다른 인덱싱 기술을 사용하여, 문서를 프로세싱하고 인덱스(126)의 인덱스 엔트리들을 업데이트한다. 예를 들어, 인덱싱 엔진(124)은 월드 와이드 웹(World Wide Web)과 같은 하나 이상의 자원을 크롤링하고, 이러한 크롤링을 통해 액세스된 문서를 인덱스할 수 있다. 다른 예로서, 인덱싱 엔진(124)은 하나 이상의 문서와 관련된 정보를 그러한 문서를 제어하는 웹 마스터와 같은 하나 이상의 리소스로부터 수신하고 그리고 이러한 정보에 기초하여 문서를 인덱스할 수 있다. 문서는 문서 주소와 관련된 임의의 데이터이다. 문서는 웹 페이지, 워드 프로세싱 문서, PDF(portable document format) 문서, 이미지, 전자 메일, 캘린더 항목, 비디오 및 웹 피드 등을 포함한다. 각각의 문서는 예를 들어, 텍스트, 이미지, 비디오, 사운드, 내장 정보(예컨대, 메타 정보 및/또는 하이퍼 링크), 및/또는 임베디드 명령어(예컨대, JavaScript와 같은 ECMAScript 구현들)를 포함한다.
정보 엔진(128)은 지식 시스템(102)에 의한 사용을 위해, 비-문서-특정 정보(non-document-specific information)에 대한 액세스를 포함하거나 또는 액세스를 용이하게 하는 다른 인덱스(130)를 유지할 수 있다. 예를 들어, 지식 시스템(102)은 특정 정보를 찾는 것처럼 보이는 검색 질의들에 응답하여 정보를 반환하도록 구성될 수 있다. 만일, 참가자가 "로날드 레이건의 생일"을 검색한다면, 지식 시스템(102)은 정보 엔진(128)으로부터 그 날짜, 즉 "1911년 2월 6일"을 수신할 수 있다. 이러한 정보는 인덱싱 엔진(124)으로부터 수신된 문서들과는 별개인 검색 결과의 일부로서 참가자에게 반환될 수 있다. 다양한 구현에서, 인덱스(130) 자체가 정보를 포함할 수도 있으며, 또는 이것은 온라인 백과 사전, 연감(almanacs) 등과 같은 하나 이상의 다른 정보 소스에 링크될 수 있다. 다양한 구현에서, 인덱스(126) 또는 인덱스(130)는, 질의들(또는 질의 용어들)와 문서 및/또는 정보 간의 매핑들을 포함할 수 있다.
본 명세서에서, 용어 "데이터베이스" 및 "인덱스"는 임의의 데이터 집합을 지칭하기 위해 광범위하게 사용될 것이다. 데이터베이스 및/또는 인덱스의 데이터는 임의의 특정 방식으로 구조화될 필요가 없으며, 그리고 하나 이상의 지리적 위치에 있는 저장 디바이스들에 저장될 수 있다. 따라서, 예를 들어, 인덱스들(123, 126 및 130)은 다수의 데이터 집합들을 포함할 수 있으며, 각각의 데이터 집합은 다르게 구성되고 액세스될 수 있다.
순위 엔진(134)은 예를 들어 종래의 및/또는 다른 정보 검색 기술을 사용하여 검색 질의에 응답하는 문서 및 다른 정보를 식별하기 위해 인덱스(126 및/또는 130)를 사용할 수 있다. 순위 엔진(134)은 예를 들어 하나 이상의 랭킹 신호를 사용하여, 검색 질의에 응답하여 식별된 문서 및 다른 정보에 대한 점수를 계산할 수 있다. 각각의 랭킹 신호는 문서 또는 정보 자체에 관한 정보, 문서 또는 정보와 검색 질의 간의 관계 및/또는 문서 또는 정보와 검색을 수행하는 참가자 간의 관계를 제공할 수 있다.
대안적인 질의 제안 엔진(136)은 대안적인 질의 제안(도시되지 않음)의 데이터베이스 및/또는 클라이언트 디바이스(106)의 사용자에 관한 정보(예를 들어, 검색 히스토리, GPS 위치, 사용자 속성들) 등과 같은 하나 이상의 신호들 및/또는 다른 정보를 이용하여, 임의의 검색 결과들과 함께 클라이언트 디바이스(106)에 제공할 대안적인 질의 제안들을 생성할 수 있다. 사용자가 검색 질의의 연속적인 문자들을 타이핑함에 따라, 대안적인 질의 제안 엔진(136)은 사용자에게 유용한 결과를 산출할 수 있는 대안적인 질의들을 식별할 수 있다. 예를 들어, 클라이언트 디바이스(106)가 시카고에 위치하고 있으며, "restaur" 라는 문자를 입력받는다고 가정하자. 대안적인 질의 제안 엔진(136)은, 클라이언트 디바이스(106)가 시카고에 있음을 나타내는 위치 신호 및 라이브 음악이 있는 레스토랑에 대한 사용자 선호도를 나타내는 검색 히스토리 신호에 기초하여, "라이브 음악이 있는 시카고의 레스토랑(restaurants in Chicago with live music)" 이라는 질의를 제안할 수 있다. 다른 일례로서, "Ronald Reagan's birt"를 타이핑한 사용자의 경우, 대안적인 질의 제안 엔진(136)은, 예컨대, 프리픽스 매칭 기법 등을 이용하여, "로널드 레이건의 생일(Ronald Reagan's birthday)" , "로널드 레이건이 태어난 곳(Ronald Reagan's birthplace)" , "로널드 레이건의 산아 제한 정책(Ronald Reagan's birth control position)" 기타 등등의 대안적인 질의들을 결정하고 제안할 수 있다. 대안적인 질의 제안 엔진(136)은 또한 다른 제안들 가령, 부분적으로 완성된 검색 질의의 스펠링이 보정된 버전들 등을 제공할 수도 있다.
다양한 구현예에서, 개인 보조 모듈(109), 메시지 교환 엔진(120) 및/또는 개인 보조 엔진(122) 등과 같은 클라이언트 디바이스(106) 및/또는 지식 시스템(102)의 다양한 구성요소들은, 제 1 메시지 교환 스레드의 참가자 기여 메시지에 기초하여, 제 1 메시지 교환 스레드의 적어도 제 1 참가자의 하나 이상의 속성들을 결정하도록 구성될 수 있다. 일부 구현예에서, 적어도 하나의 개인 보조 모듈(109)은, 반드시 그런 것은 아니지만, 제 1 메시지 교환 스레드의 참가자와 연관된다. 이들 구성요소들 중 하나 이상은, 제 1 참가자와 관련된 하나 이상의 속성들을 예컨대, 인덱스(123) 및/또는 클라이언트 디바이스(106)에 로컬인 메모리에 저장할 수 있다.
나중에, 동일한 제 1 메시지 교환 동안 또는 동일한 참가자들 중 적어도 일부를 포함하는 제 2 메시지 교환 동안 중 어느 하나에서, 이들 구성요소들 중 하나 이상은 현재 메시지 교환의 콘텐츠에 적어도 일부 기초하여, 검색 질의를 형성할 수 있다. 다양한 구현예들에서, 검색 질의는 제 1 참가자에 대해서 저장된 하나 이상의 속성들에 기초하여 선택된 하나 이상의 아이템들을 더 포함할 수 있다.
검색 질의에 응답하는 콘텐츠는, 예를 들어 인덱싱 엔진(124)으로부터, 정보 엔진(128)으로부터, 또는 심지어 클라이언트 디바이스(106)로부터 로컬적으로 획득될 수 있다(예를 들어, SMS/MMS 히스토리, 캘린더 항목, 사진, 비디오, 게임, 리마인더, 기타 등등). 다음으로, 예를 들어, 개인 보조 모듈(109), 메시지 교환 엔진(120), 메시지 교환 클라이언트(107), 또는 개인 보조 엔진(122)에 의해서, 상기 응답 콘텐츠에 관련된 하나 이상의 메시지들이 현재의 메시지 교환 스레드 내에 통합될 수 있다. 다양한 구현예에서, 검색 질의에 응답하는 콘텐츠는 대안적인 질의 제안 엔진(136)으로부터 리턴된 대안적인 질의 제안들을 더 포함할 수 있다. 일부 구현예에서 , 검색 질의에 응답하는 콘텐츠는 메시지 교환 엔진(120)에 제공되기 전에 순위 엔진(134)에 의해 순위가 매겨질 수 있다.
검색 질의에 응답하는 콘텐츠에 기초하여, 그래픽 요소들(단어, 이미지, 애니메이션, 어플릿), 사운드 등과 같은 상기 응답 콘텐츠와 관련된 다양한 아이템들이 현재의 메시지 교환 스레드에 통합될 수 있다. 통합된 아이템들은 메시지 교환 스레드의 하나 이상의 참가자들에 의해서 인지될 수 있는바, 예를 들어, 진행중인 메시지 교환 스레드의 트랜스크립트를 묘사하는 메시지 교환 클라이언트(107)와 연관된 그래픽 사용자 인터페이스 상에 또는 가청 출력으로서(예를 들어, 개인 보조 모듈(109)로부터의 컴퓨터 생성 스피치) 인지될 수 있다.
아이템들은 다양한 방법들로 다수의 메시지 교환 클라이언트들(107) 사이의 메시지 교환 스레드에 통합될 수 있다. 일부 구현예에서, 메시지 교환 엔진(120), 개인 보조 엔진(122), 또는 개인 보조 모듈(109)은, 메시지 교환 스레드에 참여하는 적어도 하나의 메시지 교환 클라이언트(107)가, 응답 콘텐츠와 연관된 하나 이상의 그래픽 요소들을, 상기 적어도 하나의 메시지 교환 클라이언트(107)의 그래픽 사용자 인터페이스에서 디스플레이되는 진행중인 메시지 교환 스레드의 트랜스크립트 내에 삽입할 것을 요청할 수 있다. 일부 시나리오에서, 그래픽 요소들은, 2 이상의 메시지 교환 클라이언트(107)에 의해 렌더링되는 트랜스크립트들(가령, 메시지 교환 스레드에 참여하는 모든 메시지 교환 클라이언트들(107)에 의해 렌더링되는 트랜스크립트들) 내에 통합될 수 있다. 일부 구현예에서, 메시지 교환 엔진(120)은 응답 콘텐츠를 메시지 교환 클라이언트(107)에 단순히 제공할 수 있으며, 메시지 교환 클라이언트는 메시지 교환 스레드에 어떤 콘텐츠가 통합될지를 선택할 수 있다.
다양한 유형들의 그래픽 요소들이 메시지 교환 스레드에 통합될 수 있다. 일부 구현예에서, 하나 이상의 그래픽 요소는 본 명세서에서 서술된 기술을 사용하여 공식화된 검색 질의에 응답하는 정보를 전달하는 텍스트를 포함할 수 있다. 텍스트 이외에 또는 텍스트 대신에, 다양한 구현예에서, 메시지 교환 스레드에 통합되는 하나 이상의 그래픽 요소들은 검색 질의에 응답하여 콘텐츠를 전달하는 하나 이상의 이미지들을 포함할 수 있다.
많은 경우에 있어서, 검색 질의에 응답하는 정보는, 대화의 흐름을 방해함이 없이 메시지 교환 스레드 내에 용이하게 통합하기에는 너무 다루기 힘들 수 있다(예를 들어, 너무 길거나, 너무 자세하거나 기타 등등). 이러한 경우, 스레드에 통합되기 위해, 전체 응답 정보의 서브 세트가 선택될 수 있다(즉, 전체 응답 정보가 추려질 수 있다). 이러한 서브 세트는 예를 들어, 하나 이상의 응답 문서들(예를 들어, N 개의 가장 높은 순위의 문서들)로부터 추출된 텍스트/이미지의 스니핏들(snippets) 및/또는 정보 엔진(128)에 의해 제공된 정보를 포함할 수 있다.
일부 구현예들에서, 메시지 교환 엔진(120) 및/또는 개인 보조 엔진(122)은 메시지 교환 스레드에 통합하기 위해 서브 세트를 선택할 수 있다(또는 응답 정보를 추려낼 수 있다). 다른 구현예에서, 메시지 교환 엔진(120) 및/또는 개인 보조 엔진(122)은 포괄적인 응답 정보를 클라이언트 디바이스(106)의 하나 이상의 구성 요소들에 제공할 수 있고, 그리고 이들 클라이언트 디바이스 구성요소들이 추려내기(culling)를 수행할 수 있다. 예를 들어, 일부 구현예에서, 메시지 교환 클라이언트(107) 및/또는 개인 보조 모듈(109)은 호스트 클라이언트 디바이스(106)의 스크린 크기에 기초하여 정보를 추려낼 수 있다. 일부 구현예에서, 상위 N 개의 검색 결과들이 메시지 교환 스레드에 통합되기 위해 선택될 수 있다. 여기서, N 이라는 숫자는 예컨대, 스크린 크기, 참가자 선호도 등에 기초하여 선택될 수 있으며, 또는 수동으로 선택될 수도 있다(예를 들어, N은 5, 10, 2, 1 등으로 설정될 수 있다).
텍스트 또는 이미지들이 메시지 교환 스레드에 통합되는지 여부에 관계없이, 다양한 구현예들에서, 그래픽 요소들은 검색 질의에 응답하는 하나 이상의 전자 문서들에 링크될 수 있으며, 따라서, 새로운 리소스(예컨대, 정보를 디스플레이하는 웹 브라우저)로 연결되기 참가자는 그래픽 요소를 선택하기만 하면 된다. 일부 구현예에서, 하나 이상의 그래픽 요소들은 어플리케이션에 링크될 수 있다(상기 어플리케이션은 메시지 교환 클라이언트들(107) 중 적어도 하나를 동작시키는 클라이언트 디바이스(106) 상에 설치되며, 상기 검색 질의에 응답한다). 예를 들어, 참가자가 메시지 교환 스레드에 "아들, 프랭크의 식당에서 저녁먹을 수 있을거야(boy, I could sure go for dinner at Frank's)" 라고 입력한다면, 프랭크의 식당의 위치와 관련된 하나 이상의 그래픽 요소들이 예컨대, 메시지 교환 엔진(120)에 의해 메시지 교환 스레드에 통합될 수 있다. 상기 하나 이상의 그래픽 요소들은 클라이언트 디바이스(106) 상의 하나의 어플리케이션(특히, 프랭크의 식당에서의 예약을 생성할 수 있음)을 오픈하도록 선택될 수 있으며, 및/또는 다른 어플리케이션(프랭크의 식당으로의 방향 및/또는 지도를 디스플레이함)을 오픈하도록 선택될 수 있다.
일부 구현예에서는, 메시지 교환 스레드의 콘텐츠로부터 추출된 질의에 응답하여 대안적인 질의 제안 엔진(136)으로부터 수신된 정보에 기초하여 생성된 하나 이상의 그래픽 요소들이 메시지 교환 스레드에 통합될 수 있다. 예를 들어, 참가자가 메시지 교환 클라이언트(107)를 조작하여 "미국의 제18대 대통령은 누구입니까?(Who was the eighteenth president of the United States?)" 라는 질문을 제기한다고 가정하자. 참가자가 상기 질문을 완료하기 전에, 즉, 다음과 같은 문자들 "who was the eight" 을 타이핑한 이후, 참가자의 이러한 일부만 타이핑된 질문은 지식 시스템(102)으로 제출될 수 있다. 지식 시스템(102)은, 참가자가 현재 타이핑한 것에 대한 잠재적으로 완성된 버전들인 하나 이상의 대안적인 질의 제안들을 대안적인 질의 제안 엔진(136)으로부터 획득할 수 있다. 이러한 완성된 버전들의 수신에 응답하여, 클라이언트 디바이스(106)는, 메시지 교환 클라이언트(107)의 그래픽 사용자 인터페이스의 일부로서, 버튼 등과 같은 하나 이상의 그래픽 요소를 렌더링할 수 있으며, 참가자는 상기 버튼들을 선택하여 자신의 질의를 완성할 수 있다. 예를 들어, 참가자는 다음과 같은 2개의 버튼들이 표시되는 것을 볼 수 있을 것이다: "미국의 제8대 대통령은 누구입니까?(Who was the eighth president of the United States?)" 및 "미국의 제18대 대통령은 누구입니까?(Who was the eighteenth president of the United States?)." 참가자가 대안적인 질의 제안을 선택하고 그리고 선택된 오토-텍스트(auto-text)가 스레드에 디스플레이된 이후에, 일부 구현예들에서는, 다음과 같은 하나 이상의 후속 질문들이 예컨대, 대안적인 질의 제안 엔진(136)에 의해 제공될 수 있다: "그 대통령은 몇년 동안 봉사했습니까?" 또는 "그 대통령의 가장 주목할만한 업적은 무엇입니까?." 이러한 후속 질문들에 대응하는 선택가능한 그래픽 요소들(가령, 버튼들)이 참가자에게 제공될 수 있으며, 이 경우 참가자는 예컨대, 학습 세션의 일부로서 역사에 대하여 다른 사람에게 퀴즈를 낼 수 있다.
일부 구현예에서, 지식 시스템(102)은 예를 들어, 정보 엔진(128) 및/또는 다른 구성요소들이 일부로서, 알려진 엔티티들(예를 들어, 사람, 장소, 사물) 및 알려진 엔티티들 사이의 관련성들에 대한 기록들을 포함하는 소위 지식 베이스를 가질 수 있다. 일부 구현예에서, 이러한 지식베이스는 예를 들어, 인덱스(130)에서 그래프로서 구현될 수 있으며, 상기 그래프에서 노드(node)들은 엔티티들을 나타내고 에지들은 엔티티들 간의 관계를 나타내지만, 반드시 그러한 것은 아니다. 일부 구현예에서, 이러한 지식 베이스로부터의 엔티티들에 대한 정보는 예를 들어, 본원에 기재된 기술을 사용하여 형성된 검색 질의에 응답하여, 지식 시스템(102)의 다양한 구성요소들이 이용할 수 있다.
일부 구현예에서, 지식 베이스는 예를 들어, 메시지 교환 엔진(120) 및/또는 정보 엔진(128)에 의해서 이용되어, 메시지 교환 스레드의 일부로서 2 이상의 참가자들 사이에서 교환된 하나 이상의 메시지들에서 언급된 제 1 엔티티를 식별할 수 있다. 이후, 상기 엔티티와 관련된 검색 질의에 응답하는 정보는 메시지 교환 스레드에 통합될 수 있다. 예를 들어, 사용자가 특정 영화를 언급한다고 가정하자. 상기 영화가 지식 베이스에서 일단 식별되면, 상기 영화에 대한 다양한 정보들 가령, 그 영화의 비평가 점수, 주요 출연자들, 감독, 기타 등등이 예컨대, 개인 보조 모듈(109) 및/또는 개인 보조 엔진(122)에 의해서 메시지 교환 스레드에 기여될 수 있다.
도 2는 스벤(Sven)이라는 참가자("you"라고 지칭됨)에 의해 조작되는 예시적인 클라이언트 디바이스(206)를 나타낸다. 클라이언트 디바이스(206)는 클라이언트 디바이스(206) 상에서 동작하는 메시지 교환 클라이언트(도 2에 구체적으로 도시되지 않음)와 관련된 그래픽 사용자 인터페이스(250)를 포함한다. 그래픽 사용자 인터페이스(250)는 Sven과 다른 두 참가자들(존과 데니스) 사이의 메시지 교환 스레드의 트랜스크립트(252)를 디스플레이한다. 그래픽 사용자 인터페이스(250)는 또한 스벤(Sven)이 예를 들어, 다른 두 참가자들에 의한 이전의 대화들에 응답하여, 텍스트 또는 다른 콘텐츠를 메시지 교환 스레드에 입력하는데 사용할 수 있는 텍스트 입력 필드(254)를 포함한다. 이 일례에서, 존(John)은 이 메시지 교환 스레드에 참여하지 않은 다른 사람들과 함께 "Team Battle" 이라는 게임을 즐겼다고 말했다. 스벤(이것은 스벤의 클라이언트 디바이스이기 때문에 도 2에서는 "you" 라고 표시됨)은 그러한 장르의 게임(예컨대, 밀리터리)을 좋아하지 않는다라고 응답하였다. 다음으로, 데니스는 "정말? 니가 좋아하는 장르는 뭐야?"라고 질문하였다. 스벤은 "나는 판타지/RPG가 좋다"라고 대답했다.
다양한 구현예에서, 이들 하나 이상의 교환된 메시지들, 또는 이들 메시지들로부터 판별된 참가자들에 대한 속성들은, 나중에 사용하기 위해 저장될 수 있다(예를 들어, 인덱스(123)에 및/또는 클라이언트 디바이스 상에 로컬적으로). 예를 들어, 스벤은 "DISLIKES MILITARY GAMES(밀리터리 게임을 싫어함)", "LIKE FANTASY GAMES(판타지 게임을 좋아함)" 및 "LIKES RPG GAMES(RPG 게임을 좋아함)" 이라는 속성들과 관련될 수 있다. 존(John)은, "HAS PLAYED TEAM BATTLE(팀 배틀을 해봤음)" 및 "LIKES MILITARY GAMES(밀리터리 게임을 좋아함)" 등과 같은 속성들과 관련될 수 있다. 이러한 속성들(또는 메시지들 그 자체)은 예를 들어, 스벤(또는, 임의의 다른 참가자들)과 연관된 개인 보조 모듈에 의해서, 메시지 교환 스레드들, 특히 동일한 또는 유사한 참가자들이 수반된 메시지 교환 스레드들에서의 대화 흐름을 향상시키기 위해 나중에 사용될 수 있다.
이러한 것이 어떻게 구현될 수 있는지에 대한 일례가 도 3에 도시되어 있는바, 도 3은 동일한 3명의 참가자들 간의 후속 메시지 교환 스레드의 트랜스크립트(252)를 도시한다. 존(John)은 다른 2명의 사용자들에게 지연된 비행기를 기다리는 동안 무엇을 하고 싶은지를 질문한다. 스벤은 "새로운 게임을 해보자" 라고 말한다. 데니스(Dennis)는 제안들을 요청한다. 스벤의 개인 보조 모듈(도 3의"PAM")은 게임 추천을 위해 예를 들어, 지식 시스템(102)과 관련된 앱 서버에 제출할 검색 질의를 생성함으로써 이에 응답한다. 스벤이 새로운 게임을 해보자고 제안했기 때문에, "TEAM BATTLE"(John이 이전에 플레이해봤다고 표시함)과 같이, 임의의 참가자가 이미 플레이해봤던 게임들을 제외하도록 질의가 공식화(또는 결과가 편향될 수 있음)될 수 있다. 또한, 검색 질의는 "밀리터리 게임"을 제외하도록 공식화될 수 있는데, 왜냐하면 스벤이 이러한 장르의 게임을 좋아하지 않는다고 이전에 표현했기 때문이다. 또한, 검색 질의는 "판타지" 및 "RPG" 게임을 포함하거나 및/또는 이들 게임에 상대적으로 높은 순위를 할당하도록 공식화될 수 있는데, 왜냐하면 스벤이 이러한 장르의 게임들을 좋아한다고 과거에 말했기 때문이다. 결과적으로, 개인 보조 모듈은 여러 개의 판타지/RPG 게임들을 제안하며, 그 다음으로 레이싱 게임(어느 누구도 비호감을 표시하지 않음)을 제안한다. 다양한 실시예에서, 검색 결과에 응답하는 콘텐츠는 인기도, 검색을 촉구한 언급과의 관련성 등과 같은 참가자의 속성 이외의 다양한 신호들에 의해서 순위가 매겨질 수 있다.
도 4는 스벤이라는 참가자에 의해 조작되는 다른 예시적인 클라이언트 디바이스(406)를 도시한다. 이 일례에서 스벤은 그의 개인 보조 모듈(도 4의 "PAM")과 메시지 교환 스레드에 참가하고 있다. 스벤은 그의 개인 보조 모듈에게 그가 저녁을 준비해야한다고 표시한다. 개인 보조 모듈은 스벤의 음식 선호도에 대해 질문한다. 스벤은 자신은 프랑스 음식을 좋아하고, 그의 여자 친구는 태국 음식을 좋아하지만 멕시칸 음식은 좋아하지 않는다라고 대답한다. 개인 보조 모듈은 이러한 진술들을 사용하여 프랑스/태국 퓨전 레시피들을 찾는 검색 질의를 공식화하며, 그리고 응답하는 결과들을 반환한다. 전술한 바와 같이, 이러한 속성들 및/또는 메시지들은 스벤 및/또는 그의 여자 친구와 관련하여 장래의 사용을 위해 저장될 수 있다. 스벤의 여자 친구는 스벤의 소셜 네트워크 프로필 및/또는 스벤의 명시적인 언급들 등과 같은 다양한 방법으로 유추될 수 있다.
도 5는 스벤의 클라이언트 디바이스(406)를 다시 도시하는바, 이번에 스벤은 그의 여자 친구 델리아(Delia)와의 메시지 교환 스레드에 참가하고 있다. 스벤은 델리아에게 발렌타인 데이에 뭘 하고 싶은지를 질문하며, 델리아는 "외식하자" 라고 대답한다. 스벤은 델리아에게 추천들을 요청한다. 스벤의 개인 보조 모듈(도 5의 "PAM")은 검색 질의를 공식화하도록 과거의 메시지들(가령, 도 4에 도시된 것들) 및/또는 스벤 및 델리아에 대해 저장된 속성들을 검색함으로써, 스벤의 요청에 응답한다. 검색 질의는 발렌타인 데이에 식사하기 위한 레스토랑을 찾고 있기 때문에, 저녁 식사(dinner dining)에 대한 과거의 메시지들 및/또는 속성들은 특히나 유용할 수 있다. 델리아가 멕시코 음식을 좋아하지 않으므로 검색 질의는 멕시칸 레스토랑을 제외할 수 있으며, 그 대신 응답 콘텐츠로서 프랑스/태국 퓨전 레스토랑들을 제안으로서 제공한다.
개인 보조 모듈은 도 3 내지 도 5에 도시된 바와 같이, 평문 메시지를 메시지 교환 스레드에 통합하기 위해 본 명세서에 서술된 기술을 사용하는 것으로 제한되지 않는다. 다양한 구현예에서, 개인 보조 모듈은 다른 아이템들을 메시지 교환 스레드에 또한 통합할 수 있다. 예를 들어, 일부 시각-기반 구현예에서, 개인 보조 모듈은 선택가능한 링크들(예컨대, 하이퍼 링크, 아이콘, 기타 등등)을 메시지 교환 스레드에 통합시키는 본원에 설명된 기술들을 활용할 수 있다. 전술한 바와 같이, 이들 선택가능한 링크들은 참가자들에 의해 조작되어 다양한 기능들을 수행할 수 있다. 일부 구현예에서, 대화와 관련된 어플리케이션에 링크하는 선택가능한 링크가 제공될 수 있다. 예를 들어, 도 5에 도시된 바와 같이 프랑스/태국 퓨전 레스토랑을 단순히 제안하는 것이 아니라, 이들 레스토랑들의 웹페이지들로의 선택가능한 링크들이 제공될 수 있다. 추가적으로 또는 대안적으로, 선택가능한 링크들은 대화와 관련된 어플리케이션들로의 링크들이 될 수 있는바, 가령 레스토랑 예약 어플리케이션(클릭하면, 식사하는 사람들의 수와 같은 다양한 데이터 포인트를 미리 채움(prepopulate)), 매핑 어플리케이션(클릭하면, 레스토랑으로의 방향을 제공함) 기타 등등과 같은 어플리케이션들로의 링크들이 될 수 있다. 예를 들어, 도 3의 일례에서는, 제안된 게임들에 추가하여 또는 제안된 게임들 대신에, 어플리케이션 설치자들에 대한 링크들이 제공될 수 있다. 일부 구현예에서, 선택가능한 링크들은 본 명세서 설명된 기술을 사용하여 공식화된 검색 질의에 응답하는 콘텐츠를 통합하는 자동 응답을 포함할 수 있다. 예를 들어, 한 참가자가 다른 참가자에게 "어떤 항공편을 예약했습니까?" 라고 질문한다면, 다른 참가자의 개인 보조 모듈은 예를 들어, 다른 참가자의 이메일로부터 비행 일정 정보(flight itinerary information)를 획득할 수 있다. 다음으로, 상기 다른 참가자에게는 그녀의 비행 일정을 열거하는 버튼이 제시될 수 있다. 상기 버튼을 선택하면, 다른 참가자의 비행 일정을 나타내는 데이터가 스레드에 자동으로 통합될 수 있다.
이제 도 6을 참조하면, 메시지 교환 스레드 참가자들의 속성들을 결정하고 사용하는 방법(600)이 설명된다. 편의상, 흐름도의 동작들은 상기 동작들을 수행하는 시스템을 참조하여 설명된다. 이러한 시스템은 여기에 설명된 다양한 엔진을 포함하는 다양한 컴퓨터 시스템의 다양한 구성 요소를 포함할 수 있다. 또한, 방법(600)의 동작들이 특정 순서로 도시되어 있지만, 이는 제한하려는 것이 아니다. 하나 이상의 동작들이 재정렬, 생략 또는 추가될 수 있다.
블록(602)에서, 시스템은 제 1 메시지 교환 스레드의 하나 이상의 참가자 기여 메시지들에 기초하여, 제 1 참가자의 하나 이상의 속성들을 결정할 수 있다. 예를 들어, 상기 스레드의 하나 이상의 메시지들은 주석이 달릴 수 있다(예컨대, 타임 스탬프, 위치, 메시지에 기여한 참가자 등). 추가적으로 또는 대안적으로, 하나 이상의 속성들이 상기 메시지들과 독립적인 메시지들로부터 추출될 수 있다. 블록(604)에서, 메시지들 및/또는 속성들은 예를 들어, 메시지에 기여한 참가자와 관련되거나 및/또는 메시지가 참조한 참가자와 관련될 수 있다.
블록(606)에서, 동일한 제 1 메시지 교환 스레드 동안 또는 후속하는 제 2 메시지 교환 스레드(즉, "현재" 메시지 교환 스레드) 동안, 하나 이상의 검색 질의들이 현재의 메시지 교환 스레드의 콘텐츠에 적어도 일부 기초하여 공식화될 수 있다. 예를 들어, 참가자는 다른 참가자에게 또는 스레드의 하나 이상의 참가자들과 관련된 개인 보조 모듈에게 질문을 제기할 수 있다. 또는, 참가자는 지식 베이스의 엔티티와 매칭되는 엔티티를 언급할 수 있다. 블록(604)에서 저장된 속성들에 기초하여 선택된 하나 이상의 아이템들을 사용하여 하나 이상의 검색 질의들이 공식화될 수 있다. 예를 들어, 참가자가 엄격한 채식주의자(vegan)라고 언급한다면, 검색 질의는 채식주의(vegan) 레스토랑을 포함하도록 공식화되거나 및/또는 스테이크 하우스를 제외하도록 공식화될 수 있다. 다양한 구현예에서, 다수의 데이터 소스들에 제출되기 위해 다수의 검색 질의들이 형성될 수 있다.
블록(608)에서, 블록(606)에서 형성된 하나 이상의 검색 질의는 지식 시스템(102)의 다양한 구성요소들과 같은 다양한 소스에 제출되거나 및/또는 메시지 교환 스레드의 하나 이상의 참가자들에 의해 조작되는 하나 이상의 클라이언트 디바이스들(106)에 제출될 수 있으며, 그리고 응답 콘텐츠가 획득될 수 있다. 블록(610)에서, 응답 콘텐츠와 관련된 하나 이상의 메시지들이 현재 메시지 교환 스레드에 통합될 수 있다.
도 7은 예시적인 컴퓨터 시스템(710)의 블록도이다. 컴퓨터 시스템(710)은 전형적으로 버스 서브시스템(712)을 통해 다수의 주변 디바이스와 통신하는 적어도 하나의 프로세서(714)를 포함한다. 이들 주변 디바이스는 예컨대, 메모리 서브시스템(725) 및 파일 저장 서브시스템(726)을 포함하는 저장 서브시스템(724), 사용자 인터페이스 출력 디바이스(720), 사용자 인터페이스 입력 디바이스(722) 및 네트워크 인터페이스 서브시스템(716)을 포함한다. 입력 및 출력 디바이스들은 사용자가 컴퓨터 시스템(710)과 상호작용할 수 있게 한다. 네트워크 인터페이스 서브시스템(716)은 외부 네트워크에 인터페이스를 제공하고 다른 컴퓨터 시스템의 대응 인터페이스 디바이스에 연결된다.
사용자 인터페이스 입력 디바이스들(722)은 키보드, 마우스, 트랙볼, 터치 패드 또는 그래픽 태블릿과 같은 포인팅 디바이스, 스캐너, 디스플레이에 통합된 터치 스크린, 음성 인식 시스템과 같은 오디오 입력 디바이스, 마이크로폰, 및/또는 다른 타입의 입력 디바이스를 포함할 수 있다. 일반적으로, "입력 디바이스" 라는 용어의 사용은 컴퓨터 시스템(710) 또는 통신 네트워크 상에 정보를 입력하는 가능한 모든 유형의 디바이스 및 방법을 포함하도록 의도된다.
사용자 인터페이스 출력 디바이스들(720)은 디스플레이 서브시스템, 프린터, 팩스 머신, 또는 오디오 출력 디바이스들과 같은 비-시각적 디스플레이들을 포함할 수 있다. 디스플레이 서브시스템은 음극선관(CRT), 액정 디스플레이(LCD)와 같은 평판 디바이스, 프로젝션 디바이스, 또는 가시적 이미지를 생성하기 위한 다른 메커니즘을 포함할 수 있다. 디스플레이 서브시스템은 또한 오디오 출력 디바이스를 통해 비-시각적 디스플레이를 제공할 수 있다. 일반적으로, "출력 디바이스"라는 용어의 사용은 컴퓨터 시스템(710)으로부터 사용자 또는 다른 기계 또는 컴퓨터 시스템으로 정보를 출력하는 모든 가능한 유형의 디바이스 및 방법을 포함하도록 의도된다.
저장 서브시스템(724)은 여기에 설명된 모듈들의 일부 또는 모든 기능을 제공하는 프로그래밍 및 데이터 구조들을 저장한다. 예를 들어, 저장 서브시스템(724)은 방법(600)의 선택된 양상들을 수행하는 로직 및/또는 메시지 교환 클라이언트(107), 개인 보조 모듈(109), 메시지 교환 엔진(120), 개인 보조 엔진(122), 인덱싱 엔진(124), 정보 엔진(128), 순위 엔진(134) 및/또는 대안적인 질의 제안 엔진(136) 중 하나 이상을 구현하는 로직을 포함할 수 있다.
이러한 소프트웨어 모듈들은 일반적으로 프로세서(714) 단독으로 또는 다른 프로세서와 조합하여 실행된다. 저장 서브시스템(724)에서 사용되는 메모리(725)는 프로그램 실행 중의 명령 및 데이터를 저장하기 위한 주 랜덤 액세스 메모리(RAM)(730) 및 고정 명령이 저장되는 판독 전용 메모리(ROM)(732)를 포함하는 다수의 메모리들을 포함할 수 있다. 파일 저장 서브시스템(726)은 프로그램 및 데이터 파일을 위한 영구 저장소를 제공할 수 있으며, 하드 디스크 드라이브, 관련 이동식 매체와 함께 플로피 디스크 드라이브, CD-ROM 드라이브, 광 드라이브 또는 이동식 매체 카트리지를 포함할 수 있다. 본 구현예들의 특정 기능들을 구현하는 모듈들은 파일 저장 서브시스템(726)에 의해서 저장 서브시스템(724)에 저장되거나 또는 프로세서(들)(714)에 의해 액세스가능한 다른 머신에 저장될 수 있다.
버스 서브시스템(712)은 컴퓨터 시스템(710)의 다양한 컴포넌트들 및 서브시스템들이 의도된 바와 같이 서로 통신하게 하는 메커니즘을 제공한다. 버스 서브시스템(712)은 단일 버스로서 개략적으로 도시되었지만, 버스 서브시스템의 다른 구현예는 다수의 버스를 사용할 수도 있다.
컴퓨터 시스템(710)은 워크 스테이션, 서버, 컴퓨팅 클러스터, 블레이드 서버, 서버 팜, 또는 임의의 다른 데이터 프로세싱 시스템 또는 컴퓨팅 디바이스를 포함하는 다양한 유형일 수 있다. 컴퓨터 및 네트워크의 끊임없이 변화하는 특성으로 인해, 도 7에 도시된 컴퓨터 시스템(710)의 설명은 단지 일부 구현예를 설명하기위한 특정예로서만 의도된 것이다. 도 7에 도시된 컴퓨터 시스템 보다 더 많거나 더 적은 컴포넌트들을 갖는 컴퓨터 시스템(710)의 많은 다른 구성예들도 또한 가능하다.
본 명세서에 기재된 시스템이 사용자들(또는 본 명세서에서는 종종 "참가자"라 함)에 관한 개인 정보를 수집하는 경우, 또는 개인 정보를 이용할 수 있는 경우, 프로그램들 또는 피처들이 사용자 정보(예컨대, 사용자의 소셜 네트워크에 대한 정보, 소셜 액션 또는 소셜 활동들, 직업, 사용자의 선호도 또는 사용자의 현재 지리적 위치)를 수집할 수 있는지의 여부 또는 사용자와 보다 관련성이 있을 수 있는 콘텐츠를 콘텐츠 서버로부터 수신할 수 있는지의 여부 및/또는 어떻게 수신하는지를 제어하는 기회가 사용자들에게 제공될 수 있다. 또한, 소정의 데이터는 개인 식별 정보가 제거될 수 있도록, 저장되거나 사용되기 전에 하나 이상의 방법들로 취급될 수 있다. 예를 들어, 사용자의 신원은 개인 식별 정보가 사용자에 대해 결정될 수 없도록 처리될 수 있으며, 또는 사용자의 특정 지리적 위치가 결정될 수 없도록 지리적 위치 정보가 획득되는 곳(예를 들어, 도시, 우편 번호 또는 주 수준)에 사용자의 지리적 위치가 일반화될 수 있다. 따라서, 사용자는 사용자에 관한 정보 수집 방법 및/또는 사용 방법에 대한 제어권을 가질 수 있다.
비록 여러 구현예들이 본 명세서에 설명 및 예시되었지만, 본 명세서에 설명된 기능을 수행하고 및/또는 결과들 및/또는 하나 이상의 장점들을 획득하기 위한 다양한 다른 수단들 및/또는 구조들이 활용될 수 있으며, 이러한 변형예들 및/또는 수정예들 각각은 본 명세서에서 설명된 구현예들의 범위 내에 속한 것으로 간주된다. 보다 일반적으로는, 본 명세서에 설명된 모든 파라미터들, 치수들, 재료들, 및 구성들은 예시적인 것으로 의도되며 그리고 실제 파라미터들, 치수들, 재료들, 및 구성들은 특정 응용예 또는 응용예들에 의존할 것이다. 해당 기술분야의 당업자는 일상적인 경험만을 사용하여, 본 명세서에서 설명된 특정 구현예에 대한 많은 균등물을 인식할 수 있거나 또는 확인할 수 있을 것이다. 따라서, 전술한 구현예는 단지 일례일 뿐이며, 첨부된 청구 범위 및 그 등가물의 범위 내에서 상기 구현예들이 구체적으로 기술되고 청구된 것과 다르게 실시될 수도 있음을 이해해야 한다. 본 개시 내용의 구현예들은 본원에 서술된 각각의 개별적인 피처들, 시스템들, 물품들, 재료들, 키트들 및/또는 방법들에 관한 것이다. 또한 그러한 피쳐들, 시스템들, 물품들, 재료들, 키트들 및/또는 방법들이 상호 모순되지 않는한, 2 이상의 그러한 피쳐들, 시스템들, 물품들, 재료들, 키트들 및/또는 방법들의 모든 조합은 본 개시의 범위 내에 속할 것이다.

Claims (20)

  1. 컴퓨터로 구현되는 방법으로서,
    하나 이상의 프로세서들에 의해 동작되는 개인 보조 모듈(personal assistant module)에 의해서, 상기 개인 보조 모듈이 액세스가능하며 다수의 인간 참가자들을 포함하는 제 1 메시지 교환 스레드의 인간 참가자 기여 메시지(human participant-contributed message)에 기초하여, 상기 제 1 메시지 교환 스레드의 적어도 제 1 인간 참가자의 하나 이상의 속성들을 결정하는 단계, 상기 개인 보조 모듈은 상기 제 1 메시지 교환 스레드의 제 1 인간 참가자와 관련되며;
    상기 제 1 인간 참가자를 포함하는 미래의 메시지 교환 스레드에서 이용하기 위해, 상기 개인 보조 모듈에 의해 액세스가능한 메모리에, 상기 제 1 인간 참가자의 상기 하나 이상의 속성들을 저장하는 단계;
    상기 개인 보조 모듈에 의해서, 상기 제 1 인간 참가자를 포함하는 제 2 메시지 교환 스레드의 콘텐츠에 적어도 일부 기초하여 검색 질의를 형성하는 단계, 상기 검색 질의는 상기 제 1 인간 참가자의 저장된 하나 이상의 속성들에 기초하여 선택된 아이템들을 또한 포함하며, 상기 제 2 메시지 교환 스레드는 상기 제 1 메시지 교환 스레드와 별개이고, 상기 제 1 메시지 교환 스레드보다 나중에 발생하며;
    상기 개인 보조 모듈에 의해서, 상기 검색 질의에 대한 응답 콘텐츠를 획득하는 단계, 상기 응답 콘텐츠는 상기 제 1 메시지 교환 스레드의 2 이상의 인간 참가자들의 하나 이상의 속성들, 인기도, 및 검색 질의를 촉구한 언급과의 관련성에 기초하여 편향되며(biased); 그리고
    상기 제 2 메시지 교환 스레드의 참가자로서의 상기 개인 보조 모듈에 의해서, 상기 응답 콘텐츠와 관련된 하나 이상의 메시지들을 상기 제 2 메시지 교환 스레드에 자동으로 통합하는 단계
    를 포함하며,
    상기 검색 질의를 형성하는 단계 및 상기 자동으로 통합하는 단계는 상기 제 2 메시지 교환 스레드의 임의의 인간 참가자의 개입없이 수행되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 통합하는 단계는, 하나 이상의 스피커를 통해, 상기 응답 콘텐츠와 관련된 하나 이상의 메시지들을 컴퓨터 생성 스피치로서 청각적으로 렌더링하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  5. 제1항에 있어서,
    상기 통합하는 단계는, 상기 응답 콘텐츠와 관련된 하나 이상의 그래픽 요소들을 디스플레이 상에 시각적으로 렌더링하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  6. 제1항에 있어서,
    상기 통합하는 단계는, 상기 제 2 메시지 교환 스레드의 적어도 하나의 참가자에 의해 동작되는 적어도 하나의 메시지 교환 클라이언트가, 상기 제 2 메시지 교환 스레드의 트랜스크립트 내에 하나 이상의 그래픽 요소들을 삽입할 것을 요청하는 단계를 포함하고, 상기 트랜스크립트는 상기 적어도 하나의 메시지 교환 클라이언트의 그래픽 사용자 인터페이스에 디스플레이되며, 상기 하나 이상의 그래픽 요소들은 상기 응답 콘텐츠와 관련되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  7. 제6항에 있어서,
    상기 하나 이상의 그래픽 요소들은 상기 응답 콘텐츠를 전달하는 텍스트를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  8. 제6항 또는 제7항에 있어서,
    상기 하나 이상의 그래픽 요소들은 상기 응답 콘텐츠를 전달하는 하나 이상의 이미지들을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  9. 제1항에 있어서,
    상기 인간 참가자 기여 메시지는 상기 제 1 메시지 교환 스레드의 하나의 인간 참가자로부터 다른 인간 참가자로 전달되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  10. 제9항에 있어서,
    상기 결정하는 단계는, 상기 인간 참가자 기여 메시지에 기초하여 상기 하나 이상의 속성들을 유추하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  11. 제1항에 있어서,
    상기 하나 이상의 속성들은 상기 제 1 인간 참가자의 선호도를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  12. 제1항에 있어서,
    상기 형성하는 단계는, 상기 하나 이상의 속성들과 관련된 검색 결과들을 캡처하도록 상기 검색 질의를 형성하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  13. 제1항에 있어서,
    상기 형성하는 단계는, 상기 하나 이상의 속성들과 관련된 검색 결과들을 제외하도록 상기 검색 질의를 형성하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  14. 메모리와 하나 이상의 프로세서들을 포함하는 시스템으로서, 상기 메모리는 명령들을 포함하고, 상기 명령들은 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 개인 보조 모듈을 동작하게 하며, 상기 개인 보조 모듈은,
    상기 개인 보조 모듈이 액세스가능하며 다수의 인간 참가자들을 포함하는 제 1 메시지 교환 스레드의 인간 참가자 기여 메시지에 기초하여 상기 제 1 메시지 교환 스레드의 적어도 제 1 인간 참가자의 하나 이상의 속성들을 결정하고, 상기 개인 보조 모듈은 상기 제 1 메시지 교환 스레드의 상기 제 1 인간 참가자와 관련되며;
    상기 제 1 인간 참가자를 포함하는 미래의 메시지 교환 스레드에서 이용하기 위해, 상기 메모리에 상기 제 1 인간 참가자의 상기 하나 이상의 속성들을 저장하고;
    상기 제 1 인간 참가자를 포함하는 제 2 메시지 교환 스레드의 콘텐츠로부터 검색 질의를 형성하고, 상기 검색 질의는 상기 제 1 인간 참가자의 저장된 하나 이상의 속성들에 기초하여 선택된 아이템들을 또한 포함하며, 상기 제 2 메시지 교환 스레드는 상기 제 1 메시지 교환 스레드와 별개이고, 상기 제 1 메시지 교환 스레드보다 나중에 발생하며;
    상기 검색 질의에 응답하는 복수의 아이템들을 획득하고, 상기 복수의 아이템들은 상기 제 1 메시지 교환 스레드의 2 이상의 인간 참가자들의 하나 이상의 속성들, 인기도, 및 검색 질의를 촉구한 언급과의 관련성에 기초하여 편향되며(biased); 그리고
    상기 제 2 메시지 교환 스레드의 참가자로서 행동하는 상기 개인 보조 모듈에 의해서, 상기 복수의 아이템들과 관련된 하나 이상의 메시지들을 상기 제 2 메시지 교환 스레드에 자동으로 통합하도록 구성되며,
    상기 검색 질의를 형성하는 것 및 상기 자동으로 통합하는 것은 상기 제 2 메시지 교환 스레드의 임의의 인간 참가자의 개입없이 수행되는 것을 특징으로 하는 시스템.
  15. 제14항에 있어서,
    상기 자동으로 통합하는 것은,
    하나 이상의 스피커를 통해, 상기 응답 콘텐츠와 관련된 하나 이상의 메시지들을 컴퓨터 생성 스피치로서 청각적으로 렌더링하는 것을 특징으로 하는 시스템.
  16. 제14항에 있어서,
    상기 자동으로 통합하는 것은,
    상기 응답 콘텐츠와 관련된 하나 이상의 그래픽 요소들을 디스플레이 상에 시각적으로 렌더링하는 것을 특징으로 하는 시스템.
  17. 제14항에 있어서,
    상기 자동으로 통합하는 것은,
    상기 제 2 메시지 교환 스레드의 적어도 하나의 참가자에 의해 동작되는 적어도 하나의 메시지 교환 클라이언트가, 상기 제 2 메시지 교환 스레드의 트랜스크립트 내에 하나 이상의 그래픽 요소들을 삽입할 것을 요청하는 것을 포함하고, 상기 트랜스크립트는 상기 적어도 하나의 메시지 교환 클라이언트의 그래픽 사용자 인터페이스에 디스플레이되며, 상기 하나 이상의 그래픽 요소들은 상기 복수의 아이템들과 관련되는 것을 특징으로 하는 시스템.
  18. 제17항에 있어서,
    상기 하나 이상의 그래픽 요소들은 상기 하나 이상의 메시지들을 전달하는 텍스트를 포함하는 것을 특징으로 하는 시스템.
  19. 제17항에 있어서,
    상기 하나 이상의 그래픽 요소들은 상기 하나 이상의 메시지들을 전달하는 하나 이상의 이미지들을 포함하는 것을 특징으로 하는 시스템.
  20. 명령들이 저장된 컴퓨터 판독가능한 저장 매체로서, 상기 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 제1항의 방법을 수행하게 하는 컴퓨터 판독가능한 저장 매체.
KR1020187034857A 2016-05-17 2016-12-28 메시지 교환 스레드를 사용한 효율적인 검색 촉진 KR102226243B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/157,382 2016-05-17
US15/157,382 US20170337284A1 (en) 2016-05-17 2016-05-17 Determining and using attributes of message exchange thread participants
PCT/US2016/068923 WO2017200591A1 (en) 2016-05-17 2016-12-28 Facilitating efficient searching using message exchange threads

Publications (2)

Publication Number Publication Date
KR20190003709A KR20190003709A (ko) 2019-01-09
KR102226243B1 true KR102226243B1 (ko) 2021-03-10

Family

ID=57838523

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187034857A KR102226243B1 (ko) 2016-05-17 2016-12-28 메시지 교환 스레드를 사용한 효율적인 검색 촉진

Country Status (6)

Country Link
US (1) US20170337284A1 (ko)
EP (1) EP3458977A1 (ko)
JP (1) JP6644171B2 (ko)
KR (1) KR102226243B1 (ko)
CN (1) CN109564580A (ko)
WO (1) WO2017200591A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10874951B2 (en) * 2017-04-17 2020-12-29 Facebook, Inc Game channels in messaging applications
US10679627B2 (en) * 2017-07-28 2020-06-09 Bank Of America Corporation Processing system for intelligently linking messages using markers based on language data
US20190385251A1 (en) * 2018-06-14 2019-12-19 International Business Machines Corporation Cognitive alternate vacation booking
USD950587S1 (en) 2018-08-31 2022-05-03 Zoox, Inc. Display screen or portion thereof having a graphical user interface

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275164A1 (en) * 2010-01-18 2013-10-17 Apple Inc. Intelligent Automated Assistant
US20150149182A1 (en) * 2013-11-27 2015-05-28 Sri International Sharing Intents to Provide Virtual Assistance in a Multi-Person Dialog

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004234492A (ja) * 2003-01-31 2004-08-19 Nec Software Tohoku Ltd チャットシステム及び広告提供方法
US7363295B2 (en) * 2004-04-19 2008-04-22 Yahoo! Inc. Techniques for inline searching in an instant messenger environment
US8499248B1 (en) * 2004-04-29 2013-07-30 Paul Erich Keel Methods and apparatus for managing and exchanging information using information objects
US7818350B2 (en) * 2005-02-28 2010-10-19 Yahoo! Inc. System and method for creating a collaborative playlist
US9318108B2 (en) * 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US20080201434A1 (en) * 2007-02-16 2008-08-21 Microsoft Corporation Context-Sensitive Searches and Functionality for Instant Messaging Applications
US20080288349A1 (en) * 2007-02-22 2008-11-20 Weisberg Jonathan S Methods and systems for online interactive communication
WO2012055100A1 (en) * 2010-10-27 2012-05-03 Nokia Corporation Method and apparatus for identifying a conversation in multiple strings
KR101683083B1 (ko) * 2011-09-30 2016-12-07 애플 인크. 가상 비서에서 커맨드 처리를 용이하게 하기 위한 컨텍스트 정보의 이용
US9685160B2 (en) * 2012-04-16 2017-06-20 Htc Corporation Method for offering suggestion during conversation, electronic device using the same, and non-transitory storage medium
CN104813311B (zh) * 2012-12-11 2018-06-05 纽昂斯通讯公司 用于多人的虚拟代理推荐的系统和方法
US20140164953A1 (en) * 2012-12-11 2014-06-12 Nuance Communications, Inc. Systems and methods for invoking virtual agent
US9659298B2 (en) * 2012-12-11 2017-05-23 Nuance Communications, Inc. Systems and methods for informing virtual agent recommendation
US9374327B2 (en) * 2013-01-08 2016-06-21 Vmware, Inc. Intelligent chat system
US10445115B2 (en) * 2013-04-18 2019-10-15 Verint Americas Inc. Virtual assistant focused user interfaces
KR102429833B1 (ko) * 2013-06-07 2022-08-05 애플 인크. 지능형 자동 어시스턴트
US20150248651A1 (en) * 2014-02-28 2015-09-03 Christine E. Akutagawa Social networking event planning
WO2016018039A1 (en) * 2014-07-31 2016-02-04 Samsung Electronics Co., Ltd. Apparatus and method for providing information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275164A1 (en) * 2010-01-18 2013-10-17 Apple Inc. Intelligent Automated Assistant
US20150149182A1 (en) * 2013-11-27 2015-05-28 Sri International Sharing Intents to Provide Virtual Assistance in a Multi-Person Dialog

Also Published As

Publication number Publication date
US20170337284A1 (en) 2017-11-23
JP6644171B2 (ja) 2020-02-12
JP2019520635A (ja) 2019-07-18
WO2017200591A1 (en) 2017-11-23
EP3458977A1 (en) 2019-03-27
KR20190003709A (ko) 2019-01-09
CN109564580A (zh) 2019-04-02

Similar Documents

Publication Publication Date Title
KR102005531B1 (ko) 다중 사용자 메시지 교환 스레드에서 자동화 어시스턴트와의 상호 작용을 위한 제안 제공
JP7419485B2 (ja) 非要請型コンテンツの人間対コンピュータダイアログ内へのプロアクティブな組込み
CN107430626B (zh) 提供建议的基于话音的动作查询
KR102249437B1 (ko) 메시지 분류에 기반한 메시지 교환 스레드의 자동화된 증대
KR102393817B1 (ko) 인간 대 컴퓨터 다이얼로그들에 요청되지 않은 콘텐츠의 사전 통합
KR102215471B1 (ko) 선택가능한 어플리케이션 링크들을 메시지 교환 스레드들에 통합하기
CN107451284B (zh) 用于处理搜索查询的方法、系统和存储介质
AU2012287413B2 (en) Suggesting search results to users before receiving any search query from the users
CN107395485B (zh) 将可选择应用链接并入与个人助理模块的会话中
KR20200007926A (ko) 자동화된 어시스턴트를 통해 대화 세션 재개를 위한 시스템, 방법 및 장치
KR20200006107A (ko) 다수의 코퍼스들로부터 응답 정보 획득
KR102226243B1 (ko) 메시지 교환 스레드를 사용한 효율적인 검색 촉진
JP6530573B1 (ja) メッセージ交換スレッドの拡張
KR102353285B1 (ko) 대화형 어시스턴트 컨텍스트 포함하여 사후 검색 결과를 자율적으로 제공

Legal Events

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