KR20210099661A - 주석이 달린 자연어 구문들을 생성하는 방법 및 장치 - Google Patents

주석이 달린 자연어 구문들을 생성하는 방법 및 장치 Download PDF

Info

Publication number
KR20210099661A
KR20210099661A KR1020217024438A KR20217024438A KR20210099661A KR 20210099661 A KR20210099661 A KR 20210099661A KR 1020217024438 A KR1020217024438 A KR 1020217024438A KR 20217024438 A KR20217024438 A KR 20217024438A KR 20210099661 A KR20210099661 A KR 20210099661A
Authority
KR
South Korea
Prior art keywords
natural language
phrases
phrase
tagged
language phrases
Prior art date
Application number
KR1020217024438A
Other languages
English (en)
Inventor
이린 쉔
아빅 레이
홍샤 진
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20210099661A publication Critical patent/KR20210099661A/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/169Annotation, e.g. comment data or footnotes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/247Thesauruses; Synonyms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Machine Translation (AREA)

Abstract

장치는 적어도 하나의 태그된 오브젝트(tagged object)를 포함하는 구문(phrase)을 수신하고, 상기 구문에서 각 태그된 오브젝트의 인스턴시에이션(instantiation)들로 인스턴시에이트된(instantiated) 구문들을 생성한다. 상기 장치는 상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈(paraphrase)들로 자연어 구문들의 리스트들을 생성한다. 상기 장치는 각 자연어 구문의 발생들에 기반하여 자연어 구문들의 각 리스트에서 자연어 구문들을 정렬함으로써 자연어 구문들의 정렬된 리스트들을 생성한다. 상기 장치는 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들 또는 상기 자연어 구문들의 정렬된 리스트들에 기반하는 자연어 구문들의 향상된 집합에 주석을 달음으로써 주석이 달린 자연어 구문들을 생성한다.

Description

주석이 달린 자연어 구문들을 생성하는 방법 및 장치
본 개시는 자연어 구문들을 생성하는 것에 관한 것으로, 특히 주석이 달린 자연어 구문들을 생성하는 것에 관한 것이다.
스마트 폰 또는 랩톱 컴퓨터와 같은 전자 디바이스는 알람을 설정하는 것, 일기 예보들을 수신하는 것 또는 뉴스 업데이트들을 리뷰하는 것과 같은 다른 태스크(task)들로 상기 디바이스의 사용자를 돕는 개인 휴대 정보 단말기(personal digital assistant)를 포함할 수 있다. 상기 개인 휴대 정보 단말기는 자연어 이해(natural language understanding: NLU) 엔진을 사용하여 사용자에 의해 말해지거나 또는 사용자에 의한 다른 입력인 구문을 이해할 수 있다. 사용자는 "order a pizza", "where can I buy tacos", 또는 "deliver Korean food"와 같이 음식을 검색하고자 하는 상기 사용자의 의도를 표현하는 다른 구문들을 입력할 수 있다. 따라서, 자연어 이해 엔진은 음식 검색과 같은, 상기 사용자의 의도와 "pizza", "tacos", 및 "Korean food"와 같은 상기 의도 세부 사항들을 이해하는 것이 필요로 된다.
트레이닝(training) 장치는 각 사용자 의도에 대해 많은 수의 자연어 구문들을 사용하고, "pizza" 및 "taco"를 "pizza (@food)" 및 "taco (@food)"로 태그(tag)하고, "large"를 "large (@size)"로 태그하고, "Korean"를 "Korean (@country)"에 태그하는 것과 같이 태그들을 자연어 구문들에 포함되어 있는 단어들에 추가시킴으로써 자연어 이해 엔진을 트레이닝시킬 수 있다. 상기 트레이닝 장치가 "order a pizza (@food)" 및 "order a taco (@food)"와 같은 자연어 구문들을 사용하여 NLU 엔진이 구문의 타입을 이해하도록 충분히 훈련시킬 수 있을 경우, 상기 NLU 엔진은 상기 구문 "order Korean food"를 상기 음식을 검색하는 의도로 이해하는 것과 같이 동일한 타입의 다음 구문을 이해할 수 있다.
하지만, 트레이닝 장치들은 일반적으로 각 사용자 의도에 대한 상기 자연어 구문들의 수동 입력들과 상기 의도 세부사항들에 태그들을 추가하는 수동 입력들에 의존한다. 그와 같은 수동 입력들은 매우 많은 비용이 들고, 사람들은 제한된 수의 자연어 구문들과 태그들만 제공할 수 있다. 예를 들어, 소프트웨어 개발자가 피자, 타코, 한식을 주문하기 위한 구문들은 입력할 수 있지만, 사과들에 대한 구문을 입력하는 것을 잊는다. 따라서, 수동으로 생성된 자연어 구문들은 자연어 구문들의 많은 변형들을 포함할 수 없다. 결과적으로, 제한된, 수동으로 생성된 자연어 구문들에 대해 트레이닝된 NLU 엔진은 사용자의 의도 및/또는 상기 의도 세부 사항들을 이해하는데 실패할 수 있다.
컴퓨터는 자연어 구문들을 생성할 수 있다. 휴먼 크라우드 소싱(human crowdsourcing)은 부자연스럽거나 문법적으로 부정확한 컴퓨터-생성 자연어 구문들을 수동으로 정정하거나 또는 삭제할 수 있으며, 상기 컴퓨터-생성 자연어 구문들에 상기 태그들을 수동으로 입력할 수 있다. 그와 같은 사람의 개입은 상기 컴퓨터-생성 자연어 구문들의 자연스러움의 품질과 문법적 정확성을 향상시킬 수 있지만, 이러한 컴퓨터-생성 자연어 구문들은 각 의도를 표현하는 자연어 구문들의 많은 변형들을 포함하는 것에 여전히 실패할 수 있다. 게다가, 상기 컴퓨터-생성 자연어 구문들의 사용은 부자연스럽거나 또는 문법적으로 부정확한 컴퓨터-생성 자연어 구문들을 수동으로 정정 또는 삭제하고, 또한 상기 컴퓨터-생성 자연어 구문들에 수동으로 태그들을 입력해야 하는 많은 노동 요구 사항으로 인해 스케일러블(scalable)하지 않다.
본 개시의 실시 예들은 주석이 달린 자연어 구문들을 생성하는 방법 및 장치를 제공한다.
일 실시 예에서, 장치는 주석이 달린 자연어 구문들을 생성한다. 상기 장치는 적어도 하나의 태그된 오브젝트(tagged object)를 포함하는 구문(phrase)을 수신하고, 상기 구문에서 각 태그된 오브젝트의 인스턴시에이션(instantiation)들로 인스턴시에이트된(instantiated) 구문들을 생성한다. 상기 장치는 상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈(paraphrase)들로 자연어 구문들의 리스트들을 생성한다. 상기 장치는 각 자연어 구문의 발생들에 기반하여 자연어 구문들의 각 리스트에서 자연어 구문들을 정렬함으로써 자연어 구문들의 정렬된 리스트들을 생성한다. 상기 장치는 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 주석을 달음으로써 주석이 달린 자연어 구문들을 생성한다.
다른 실시 예에서, 방법은 주석이 달린 자연어 구문들을 생성한다. 적어도 하나의 태그된 오브젝트(tagged object)를 포함하는 구문(phrase)이 수신되고, 상기 구문에서 각 태그된 오브젝트의 인스턴시에이션(instantiation)들에 의해 인스턴시에이트된(instantiated) 구문들이 생성된다. 자연어 구문들의 리스트들이 상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈(paraphrase)들에 의해 생성된다. 자연어 구문들의 정렬된 리스트들은 각 자연어 구문의 발생들에 기반하여 자연어 구문들의 각 리스트에서 자연어 구문들을 정렬함으로써 생성된다. 주석이 달린 자연어 구문들은 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 주석을 달음으로써 생성된다.
또 다른 실시 예에서, 컴퓨터 프로그램 제품은 주석이 달린 자연어 구문들을 생성하는 인스트럭션(instruction)들을 포함하는 컴퓨터-리드 가능 프로그램 코드를 포함한다. 상기 프로그램 코드는 적어도 하나의 태그된 오브젝트(tagged object)를 포함하는 구문(phrase)을 수신하고, 상기 구문에서 각 태그된 오브젝트의 인스턴시에이션(instantiation)들로 인스턴시에이트된(instantiated) 구문들을 생성하는 인스트럭션들을 포함한다. 상기 프로그램 코드는 상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈(paraphrase)들로 자연어 구문들의 리스트들을 생성하는 인스트럭션들을 포함한다. 상기 프로그램 코드는 각 자연어 구문의 발생들에 기반하여 자연어 구문들의 각 리스트에서 자연어 구문들을 정렬함으로써 자연어 구문들의 정렬된 리스트들을 생성하는 인스트럭션들을 포함한다. 상기 프로그램 코드는 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 주석을 달음으로써 주석이 달린 자연어 구문들을 생성하는 인스트럭션들을 포함한다.
예를 들어, 서버는 소프트웨어 개발자로부터 구문 "find @food"를 수신하고, "find a pizza", "find a taco", 및 "find an apple"와 같은 인스턴스시에이트된 구문들을 생성한다. 상기 서버는 패러프레이즈 생성기를 사용하여: 1) 자연어 구문들의 pizza 리스트("order a pizza", "what restaurant serves pizzas", "which store sells pizzas", 등); 2) 자연어 구문들의 taco 리스트("order a taco", "what restaurant serves tacos", "which store sells tacos", 등); 및 3) 자연어 구문들의 apple 리스트("order an apple", "what restaurant serves apples", "which store sells apples", 등)를 생성한다.
상기 서버는 자연어 모델의 검색들에서 이들 구문들이 얼마나 자주 발생하는지에 기반하여 이들 리스트들을 정렬하고, 따라서 1) 정렬된 pizza 리스트: i) "order a pizza", ii) "what restaurant serves pizzas", iii) "which store sells pizzas", 등; 2) 정렬된 taco 리스트: i) "what restaurant serves tacos", ii) "order a taco", iii) "which store sells tacos", 등; 및 3) 정렬된 apple 리스트: i) "what store has a sale on apples", ii) "which store sells apples", iii) "order an apple", 등을 생성할 수 있다.
상기 서버는 상기 리스트들에 주석을 달아 1) 주석이 달린 pizza 리스트: i) "order a pizza (@food)", ii) "what restaurant serves pizzas (@food)", iii) "which store sells pizzas (@food)", 등; 2) 주석이 달린 taco 리스트: i) "what restaurant serves tacos (@food)", ii) "order a taco (@food)", iii) "which store sells tacos (@food)", 등; 및 3) 주석이 달린 apple 리스트: i) "what store has a sale on apples (@food)", ii) "which store sells apples (@food)", iii) "order an apple (@food)", 등을 생성한다.
이 요약 부분은 특정 컨셉트들을 소개하기 위해 제공될 뿐이며, 청구된 주제의 핵심적인 또는 필수적인 기능들을 식별하지 않는다. 본 발명의 많은 다른 특징들 및 실시 예들은 첨부 도면들 및 하기의 상세한 설명으로부터 명백해질 것이다.
첨부 도면들은 하나 또는 그 이상의 실시 예들을 도시하고 있자; 하지만, 상기 첨부 도면들은 본 발명을 상기 도시되어 있는 실시 예들로만 제한하는 것으로 취해져서는 안 된다. 하기의 상세한 설명의 리뷰 시, 그리고 도면들을 참조할 때 다양한 측면들 및 이점들이 명백해질 것이다:
도 1은 일 실시 예에 따른 주석이 달린 자연어 구문들을 생성하기 위한 예제 장치의 블록 다이아그램을 도시하고 있다;
도 2는 일 실시 예에 따른 주석이 달린 자연어 구문들을 생성하기 위한 예제 사용자 인터페이스의 프레임을 도시하고 있다;
도 3a 및 도 3b는 일 실시 예에 따를 예제 생성 구문들의 블록 다이아그램을 도시하고 있다;
도 4a 및 도 4b는 일 실시 예에 따른 예제 생성 구문들의 다른 블록 다이아그램을 도시하고 있다;
도 5a, 도 5b, 도 5c, 도 5d, 및 도 5e 는 일 실시 예에 따른 예제 생성 구문들의 또 다른 블록 다이아그램을 도시하고 있다;
도 6a 및 도 6b는 일 실시 예에 따를 예제 생성 구문들의 추가적인 블록 다이아그램을 도시하고 있다;
도 7a, 도 7b, 도 7c, 및 도 7d 는 일 실시 예에 따를 예제 생성 구문들의 또 다른 추가적인 블록 다이아그램을 도시하고 있다;
도 8a, 도 8b, 및 도 8c는 일 실시 예에 따를 예제 생성 구문들의 추가적인 블록 다이아그램을 도시하고 있다;
도 9는 일 실시 예에 따른 주석이 달린 자연어 구문들을 생성하기 위한 방법을 도시하고 있는 플로우차트이다; 및
도 10은 본 주제가 구현될 수 있는 예제 하드웨어 디바이스를 도시하고 있는 블록 다이아그램이다.
하기의 상세한 설명은 하나 또는 그 이상의 실시 예들의 일반적인 원리들을 설명하기 위한 목적으로 이루어지며, 본 명세서에서 청구되는 발명의 컨셉트(concept)들만으로 제한하려는 것을 의미하는 것은 아니다. 또한, 본 명세서에서 설명되는 특정 특징(feature)들은 상기 다양한 가능한 조합들 및 순열들 각각에서 다른 설명되는 특징들과 조합하여 사용될 수 있다. 본 명세서에서 달리 구체적으로 정의되지 않는 한, 모든 용어들에 대해서는 상세한 설명으로부터 내포된 의미들 뿐만 아니라 해당 기술 분야의 당업자들에 의해 이해되고, 및/또는 사전들, 논문들 등에서 정의되고 있는 의미들을 포함하여 가능한 가장 넓은 해석이 주어질 것이다.
용어 "구문(phrase)" 또는 "발화(utterance)"는 일반적으로 동사와 적어도 하나의 명사를 포함하는 단어들을 나타낸다. 용어 "동사(verb)"는 일반적으로 액션(action), 상태 또는 발생을 설명하기 위해 사용되는 단어를 나타내기 위해 사용된다. 용어 "오브젝트(object)"는 일반적으로 컨셉트를 나타내는 단어 또는 단어들의 그룹을 나타내는 데 사용된다. 용어 "태그(tag)"는 일반적으로 단어 또는 단어들의 그룹에 첨부되는 레이블(label)을 나타낸다. 용어 "태그된 오브젝트(tagged object)" 또는 "플레이스 홀더(placeholder)"는 일반적으로 컨셉트를 나타내는 단어 또는 단어들의 그룹을 나타내고, 레이블에 첨부된다.
용어 "어트리뷰트(attribute)"는 일반적으로 어떤 것의 특성으로 간주되는 품질 또는 특징을 나타내기 위해 사용된다. 용어 "선택(selection)"은 일반적으로 어떤 것을 최고 또는 가장 적합한 것으로 선택하는 액션을 나타내기 위해 사용된다. 용어 "인스턴시에이션(instantiation)"은 일반적으로 오브젝트들의 클래스(class)와 같은 추상화 또는 템플릿(template)의 특정 실현의 생성을 나타내기 위해 사용된다. 용어 "인스턴시에이트된 구문(instantiated phrase)"은 일반적으로 단어들의 추상화 또는 템플릿의 특정 실현을 나타내기 위해 사용된다. 용어 "패러프레이즈(paraphrase)"는 일반적으로 누군가에 의해 쓰여지거나 또는 말해진 것의 리워딩(rewording)을 나타낸다.
용어 "리스트(list)"는 일반적으로 연속적으로 쓰여지거나 프린트된 다수의 아이템들을 나타내기 위해 사용된다. 용어 "정렬된 리스트(ordered list)"는 일반적으로, 적합한 방식으로 배열 된, 연속적으로 쓰여지거나 프린트된 다수의 아이템들을 나타내기 위해 사용된다. 용어 "병합된 리스트(merged list)"는 일반적으로 단일 엔티티(entity)를 형성하기 위해 결합된, 연속적으로 쓰여지거나 프린트된 다수의 아이템들을 나타내기 위해 사용된다. 용어 "발생(occurrence)"은 일반적으로 어떤 것이 발생하는 빈도를 나타내기 위해 사용된다. 용어 "인스턴스(instance)" 또는 "필러 단어(filler word)"는 일반적으로 컨셉트의 예제를 나타내기 위해 사용된다.
용어 "자연어 구문(natural language phrase)"은 일반적으로 인간의 의사 소통에 통상적으로 사용되는 단어들의 집합을 나타내기 위해 사용된다. 용어 "태그된 자연어 구문(tagged natural language phrase)"은 일반적으로 의사 소통에 사용되는 단어들의 집합을 나타내기 위해 사용되며, 그에서 하나의 단어는 대체되는 단어를 나타내는 레이블된 단어로 대체된다. 용어 "향상된 집합(enhanced set)"은 일반적으로 속하거나 또는 함께 사용되며, 집합적으로 개선되는 동일한 종류의 다수의 것들을 나타내기 위해 사용된다. 용어 "주석이 달린 자연어 구문(annotated natural language phrase)"은 일반적으로 설명을 위한 코멘트가 추가된 의사 소통을 위해 사용되는 단어들의 집합을 나타내기 위해 사용된다. 용어 "자연어 이해 엔진(natural language understanding engine)" 또는 "NLU"는 일반적으로 함께 동작하여 쓰여진 그리고 말해진 텍스트(text)를 분석하고, 데이터로부터 의미를 도출하고 그에 적절하게 응답하는 모든 장치들 및 소프트웨어를 나타내기 위해 사용된다. 용어 "응답(response)"은 일반적으로 어떤 것에 대한 리액션(reaction)을 나타내기 위해 사용된다.
도 1은 일 실시 예에 따른 주석이 달린 자연어 구문들을 생성하는 장치(100)의 블록 다이아그램을 도시하고 있다. 도 1에 도시되어 있는 바와 같이, 상기 장치(100)는 데이터, 어플리케이션(application)들, 서비스들, 및 다른 자원들이 저장되고 공유 데이터-센터(data-center)들을 통해 전달되고, 상기 엔드 사용자(end user)들에 대한 억세스의 단일 포인트로서 나타나는 클라우드 컴퓨팅 환경(cloud computing environment)을 도시할 수 있다. 상기 장치(100)는 또한 서버들이 다른 클라이언트 사용자들을 위한 자원들 및 서비스들의 저장 및 분포를 제어하는 임의의 다른 타입의 분포 컴퓨터 네트워크 환경을 나타낼 수 있다.
일 실시 예에서, 상기 장치(100)는 제1 호스팅 회사에 의해 제공될 수 있는 제1 클라이언트(client)(102), 제2 클라이언트(104), 및 제 1 서버 (106)와 제2 서버(108)를 포함하는 클라우드 컴퓨팅 장치를 나타낸다. 상기 클라이언트들(102-104) 및 상기 서버들(106-108)은 네트워크(110)를 통해 통신한다. 도 1이 상기 제1 클라이언트(102)를 스마트 폰(102)으로, 상기 제2 클라이언트(104)를 랩톱 컴퓨터(104)로 도시하고 있을 지라도, 상기 클라이언트들(102-104) 각각은 임의의 타입의 컴퓨터일 수 있다. 자연어 서버 (106)로 칭해질 수 있는, 상기 제1 서버(106)는 일 실시 예에서 컴포넌트(component)들(112-138)을 포함한다. 도 1이 2개의 클라이언트들(102-104), 2개의 서버들(106-108), 및 하나의 네트워크(110)를 가지는 상기 장치(100)를 도시하고 있을 지라도, 상기 장치(100)는 임의의 개수의 클라이언트들(102-104), 임의의 개수의 서버들(106-108), 및/또는 임의의 개수의 네트워크들(110)을 포함할 수 있다. 상기 클라이언트들(102-104) 및 상기 서버들(106-108)은 각각 도 10에 도시되어 있는 상기 장치(1000)와 실질적으로 유사할 수 있고, 하기에서 설명될 수 있다.
각각이 더 큰 컴포넌트들로 결합될 수 있고, 및/또는 더 작은 컴포넌트들로 분할될 수 있는, 상기 장치 컴포넌트들(112-138)은 지식 베이스 구성기(knowledge base constructor)(112), 자연어 모델(114), 어근 어휘(root word vocabulary)(116), 컨셉트화기(conceptualizer)(118), 어근 컨셉트화기(root word conceptualizer)(120), 지식 베이스(knowledge base)(122), 언어 생성기(124), 트레이너(trainer)(126), 개인 휴대 정보 단말기(personal digital assistant)(128), 및 NLU 엔진(130)을 포함한다. 상기 언어 생성기(124)는 오거나이저(organizer)(132), 인스턴시에이터(instantiator)(134), 패러프레이즈 생성기(136), 및 주석자(annotator)(138)를 포함할 수 있다. 도 1은 상기 자연어 서버(106) 상에 완전히 상주하는 상기 장치 컴포넌트들(112-138)을 도시하고 있지만, 상기 장치 컴포넌트들(112-138)은 완전히 상기 자연어 서버(106) 상에, 완전히 상기 제 2 서버(108) 상에, 완전히 상기 클라이언트들(102-104) 상에 상주 할 수 있거나, 또는 부분적으로 상기 서버들(106 - 108) 상에, 및 부분적으로 상기 클라이언트들(102 - 104) 상에 임의의 조합으로 상주할 수 있다. 예를 들어, 상기 자연어 서버(106)가 상기 개인 휴대 정보 단말기(128)에서 상기 NLU 엔진(130)을 트레이닝시키기 위해 상기 컴포넌트들(112-138)을 사용한 후, 상기 자연어 서버(106)는 상기 스마트 폰(102)으로 상기 개인 휴대 정보 단말기(128)의 카피(copy)를 제공한다.
상기 장치는 개발자에 의해 입력되는 구문에서 태그된 오브젝트들을 인스턴시에이트하기 위해 사용될 오브젝트들의 소스(source)가 되도록 상기 지식 베이스(122)를 구성할 수 있다. 상기 자연어 서버(106)는 구문을 수신하는 것에 응답하여 상기 지식 베이스(122)의 구성을 개시할 수 있다. 예를 들어, 상기 자연어 서버(106)는 상기 랩톱 컴퓨터(104)의 사용자 인터페이스를 통해 개발자에 의해 입력되었던 상기 구문 "find @food"를 수신한다. 상기 자연어 서버(106)가 상기 구문 "find @food"을 수신한 후, 상기 지식 베이스 구성기(112)는 상기 구문으로부터 상기 태그된 오브젝트 "@food"를 추출하고, 그리고 나서 상기 지식 베이스(122)를 구성하기 위한 기초(basis)로서 상기 오브젝트 "food"를 사용한다.
상기 지식 베이스 구성기(112)는 상기 자연어 모델(114)로부터 어휘를 수신하고, 상기 어휘에 포함되어 있는 어근들을 식별하고, 상기 식별된 어근들을 상기 어근 어휘(116)에 저장할 수 있다. 예를 들어, 상기 지식 베이스 구성기(112)는 상기 자연어 모델(114)로부터 상기 어휘 단어들 "pizza" 및 "pizzas"를 수신하고, 상기 어휘 단어들 "pizza" 및 "pizzas"에 대한 어근 "pizza"을 식별하고, 상기 식별된 어근 "pizza"를 상기 어근 어휘(116)에 저장할 수 있다. 상기 자연어 모델(114) 모델은 일반적으로, 예를 들어 온라인 문서들에 기반하여 트레이닝된 분포 함수(distribution function)를 나타내며, 이는 아마도 이전 단어(들)가 주어질 때 문장에서 다음 단어를 예측하고, 위키피디아(Wikipedia®)와 같은 공중 코퍼스(public corpus)에서 트레이닝될 수 있다.
상기 지식 베이스 구성기(112)는 그리고 나서 상기 컨셉트화기(118)를 사용하여 상기 어근 어휘(116)에 포함되어 있는 모든 어근에 대한 컨셉트들의 리스트들을 식별할 수 있고, 여기서 상기 리스트에 포함되어 있는 컨셉트들은 그들의 확률 순서에 의해 랭크되며(ranked), 그 이후에 상기 컨셉트들의 리스트들은 상기 어근 컨셉트화(120)에 저장된다. 예를 들어, 상기 지식 베이스 구성기(112)는, "pizza"가 상기 컨셉트 "food"로 식별되는 가장 높은 가능성, "pizza"가 상기 컨셉트 "snack"로 식별되는 두 번째로 높은 가능성, 등에 기반하여, 상기 컨셉트화기(118)를 사용하여 상기 어근 어휘(116)에 포함되어 있는 상기 어근 "pizza"에 대한 컨셉트들의 리스트: 1) "food", 2) "snack", 3) "item", 및 4) "dish"를 식별한다. 상기 예제를 계속하면, 상기 지식 베이스 구성기(112)는 상기 컨셉트들의 리스트: 1) "food", 2) "snack", 3) "item", and 4) "dish"를 상기 어근 컨셉트화(120)에 상기 어근 "pizza"에 대한 연관되는 오브젝트들로 저장한다.
상기 지식 베이스 구성기(112)는 상기 어근 컨셉트화(120)에서 컨셉트를 식별하고, 상기 어근 컨셉트화(120)에서 상기 컨셉트와 연관되는 각 어근을 식별하고, 그리고 나서 이러한 연관들을 상기 지식 베이스(122)에 저장함으로써 상기 지식 베이스(122)를 구성할 수 있다. 예를 들어, 상기 지식 베이스 구성기(112)는 상기 어근 컨셉트화(120)에서 상기 컨셉트 "food"를 식별하고, 상기 어근 컨셉트화(120)에서 "pizza", "taco", "apple", 등과 같은 상기 컨셉트 "food"와 연관되는 각 어근을 식별한다. 상기 예제를 계속하면, 상기 지식 베이스 구성기(112)는 상기 어근들 "pizza", "taco", "apple", 등을 상기 컨셉트 "food"의 인스턴스들로서 상기 지식 베이스(122)에 저장한다.
일 실시 예에서, 상기 지식 베이스 구성기(112)가 상기 구문 "find @food"로부터 추출된 상기 태그된 오브젝트 "@food"와 같은, 특정 태그된 오브젝트에 대해서만 상기 지식 베이스(122)를 구성하고 있는 중일 경우, 상기 지식 베이스(122)의 구성은 단일 컨셉트 및 상기 단일 컨셉트의 인스턴스들을 저장한 후에 완료될 수 있다. 대안적으로, 상기 지식 베이스 구성기(112)는 상기 어근 컨셉트화(120)에서 다른 컨셉트를 식별하고, 상기 어근 컨셉트화(120)에서 상기 다른 컨셉트와 연관되는 각 어근을 식별하고, 그리고 나서 이들 다른 연관들을 상기 지식 베이스(122)에 저장함으로써 상기 지식 베이스(122)를 지속적으로 구성할 수 있다. 예를 들어, 상기 지식 베이스 구성기(112)는 상기 어근 컨셉트화(120)에서 상기 컨셉트 "size"를 식별하고, 상기 어근 컨셉트화(120)에서 "large", "medium", "small", 등과 같은 상기 컨셉트 "size"와 연관되는 각 어근을 식별한다. 상기 예제를 계속하면, 상기 지식 베이스 구성기(112)는 상기 어근들 "large", "medium", "small", 등을 상기 컨셉트 "size"의 인스턴스들로서 상기 지식 베이스(122)에 저장한다. 상기 지식 베이스들(122)은 해시 테이블(hash table)을 사용하여 상기 컨셉트 "food"를 상기 컨셉트 "food"의 인스턴스들 "pizza", "taco", 및 "apple"로 매핑하는 것과 같이, 해시 테이블을 사용하여 컨셉트를 상기 컨셉트의 인스턴스들에 매핑할 수 있다.
일부 실시 예들에서, 상기 지식 베이스(122)는 상기 태그된 오브젝트에 대해 구성되어 있고, 상기 자연어 서버(106)는 동일한 태그된 오브젝트를 포함하는 다른 구문들에 대해 동일한 지식 베이스(122)를 재사용할 수 있다. 예를 들어, 상기 지식 베이스(122)가 상기 구문 "find @food"에서 상기 태그된 오브젝트 "@food"에 대해 구성되어 있을 경우, 상기 자연어 서버(106)는 상기 구문 "prepare @food"에 대해 동일한 지식 베이스(122)를 재사용할 수 있다. 상기 지식 베이스(122)가 태그된 오브젝트들의 조합에 대해 구성되어 있을 경우, 상기 자연어 서버(106)는 태그된 오브젝트들의 동일한 조합의 일부 또는 전부를 포함하는 다른 구문들에 대해 동일한 지식 베이스(122)를 재사용할 수 있다. 상기 지식 베이스 구성기(112)는 임의의 태그된 오브젝트를 수신하기 전에, 태그된 오브젝트들의 인스턴스들로서 어근들의 리스트들의 사용을 예상하여, 상기 지식 베이스(122)를 오프라인(off-line)으로 구성할 수 있다.
일 실시 예에서, 상기 지식 베이스 구성기(112)는 컨셉트들 간의 관계들을 식별하고, 이러한 관계들을 오브젝트-어드리뷰트 관계들로서 상기 지식 베이스(122)에 저장할 수 있다. 예를 들어, 상기 지식 베이스 구성기(112)는 상기 컨셉트 "food"가 상기 컨셉트 "size" 및 상기 컨셉트 "ingredient"와 같은 어트리뷰트들을 가진다고 결정한다. 상기 지식 베이스 구성기(112)는 상기 컨셉트 "food"를 상기 지식 베이스(122)에 오브젝트 태그로서 저장하고, 상기 컨셉트 "size" 및 "ingredient"를 상기 오브젝트 태그 "food"에 의존하여 상기 지식 베이스(122)에 어트리뷰트 태그들로 저장한다. 상기 자연어 서버(106)는, 예를 들어, 상기 지식 베이스(122)의 측면들을 구성하거나 또는 제공하기 위해, 그러한 오브젝트-어트리뷰트 페어(pair)들을 포함하는 공개적으로 유용한 InfoBox 템플릿(InfoBox template) Q를 사용할 수 있다.
상기 자연어 서버(106)는 적어도 하나의 태그된 오브젝트를 포함하는 구문을 수신한 후 주석이 달린 자연어 구문들의 생성을 개시할 수 있다. 예를 들어, 상기 자연어 서버(106)는 도 2의 사용자 인터페이스의 프레임(200)에 의해 설명되는 바와 같이, 상기 랩톱 컴퓨터(104)의 사용자 인터페이스를 통해 개발자에 의해 입력되는 상기 구문 "find @food"를 수신한다.
도 2는 일 실시 예에 따른 주석이 달린 자연어 구문들을 생성하기 위한 디바이스의 예제 사용자 인터페이스 스크린의 프레임(200)을 도시하고 있다. 상기 "user says" 윈도우(202)는 개발자가 "find food"와 같은 구문을 어디에서 입력할 수 있는지 식별한다. 상기 개발자는 상기 태그된 구문 "find @food"을 입력할 수 있다. 대안적으로, 상기 개발자는 상기 태그되지 않은 구문 "find food"을 입력할 수 있다. 상기 자연어 서버(106)는 상기 지식 베이스(122)에서 상기 컨셉트 "food"를 인식하고, 그리고 나서 상기 태그되지 않은 구문 "find food"을 상기 태그된 구문 "find @food"로 변환할 수 있다. 상기 개발자의 입력이 수락된 후, 상기 개발자는 "paraphrase"(204)를 선택하여 "find some pizza near my home"(206)과 같은, 상기 개발자가 입력한 상기 구문에 기반하는 주석이 달린 자연어 구문들을 생성할 수 있다.
상기 자연어 서버(106)는 상기 개인 휴대 정보 단말기(128)와 상호 작용할 때, 사람이 "I want to order a pizza."와 같은 문장을 입력하는 것 대신에 "order a pizza"와 같은 불완전한 문장 구문을 입력할 가능성이 더 높기 때문에, 자연어 문장들을 생성하기보다는 불완전한 문장들인 자연어 구문들을 생성할 수 있다. 또한, 상기 NLU 엔진(130)이 "order a pizza"와 같은 불완전한 문장 구문을 이해하도록 충분히 트레이닝된 경우, 상기 NLU 엔진(130)은 "I want to order a pizza."와 같은 상기 불완전 문장 구문을 포함하는 문장을 이해하도록 충분히 트레이닝된다. 이러한 이유들로 인해서, 개발자는 완전한 문장들 또는 불완전한 문장 구문들을 상기 "user says" 윈도우(202)에 입력할 수 있다.
상기 장치는 주석이 달린 자연어 구문들의 상기 "콜드 스타트(cold start)" 생성을 가능하게 한다. 이 능력은 자연어 전문 지식이 없는 "cold start" 개발자와 일부 또는 많은 자연어 구문들이 부족한 "cold start" 데이터 집합을 위해 설계된다. 개발자는 상기 NLU 엔진(130)이 사용자로부터의 많은 다른 구문을 이해하도록 트레이닝시키기 위해 상기 "user says" 윈도우(202)에 많은 다른 타입들의 구문들을 입력할 수 있다. 예를 들어, 개발자는 상기 NLU 엔진(130)을 트레이닝시키기 위해 "book @flight", "rent @car", "reserve @hotel", 및 "find @food" 를 입력하여 주석이 달린 자연어 구문들을 생성할 수 있다. 그 후에, 상기 트레이닝된 NLU 엔진(130)은 사용자가 2개의 샌프란시스코 행 항공권들을 구매하고, 샌프란시스코 공항에서 차량을 렌트하고, 샌프란시스코 시내에 있는 호텔 객실을 예약하고, 상기 호텔에서 멀지 않은 로맨틱한 레스토랑에 테이블을 예약하도록 요청하는 경우를 이해한다.
대안적으로, 제3자 개발자는 상기 NLU 엔진(130)이 사용자로부터의 몇 가지 타입들의 구문들을 이해하도록 훈련시키기 위해 상기 "user says" 윈도우(202)에 몇 가지 관련되는 타입들의 구문들을 입력할 수 있다. 예를 들어, 피자 레스토랑을 위한 제3자 어플리케이션의 제3자 개발자는 상기 NLU 엔진(130)이 배달 또는 테이크-아웃을 위해 상기 피자 레스토랑의 메뉴로부터 아이템들을 주문하도록 요청하는 경우를 이해하도록 구문들을 입력한다.
상기 프레임(200)은 사용자들이 정보를 생성하고, 검색하고, 편집하고, 및 저장하기 위한 명령(command)들을 입력하기 위한 필드들을 포함하는 더 큰 디스플레이 스크린의 일부일 수 있다. 상기 프레임(200)은 샘플(sample)이기 때문에, 상기 프레임(200)은 외형적으로 크게 달라질 수 있다. 예를 들어, 상기 그래픽 이미지들의 상대적인 크기들 및 위치는 본 개시의 실현에 있어 중요하지 않다. 상기 프레임(200)은 임의의 시각적 디스플레이에 의해 표현될 수 있지만, 바람직하게는 컴퓨터 스크린으로 표현된다. 상기 프레임(200)은 또한 보고서로 출력될 수 있고, PDF와 같은 전자 포맷으로 인쇄되거나 저장될 수 있다.
상기 프레임 (200)은 개인용 컴퓨터 장치 및/또는 네트워크의 일부일 수 있고, 상기 네트워크 및/또는 인터넷에 의해 수신되는 장치 데이터로부터 동작될 수 있다. 상기 프레임(200)은 사용자에 의해 탐색될 수 있다. 일반적으로, 사용자는 상기 프레임(200) 상의 상기 그래픽 이미지들을 관리하기 위해 상기 프레임(200) 상의 위치들을 포인트하여 클릭하기 위해(point-and-click) 터치 스크린 입력, 음성 명령, 또는 마우스 입력 디바이스를 사용할 수 있다. 대안적으로, 사용자는 방향 지시자(directional indicator)들, 또는 키보드와 같은 다른 입력 디바이스들을 사용할 수 있다. 상기 프레임(200)이 훨씬 더 많은 양의 그래픽 이미지들을 포함할 수 있기 때문에, 상기 프레임(200)에 의해 표현되는 그래픽 이미지들은 예제들이다. 상기 프레임(200)은 또한 사용자가 정보를 입력할 수 있는 필드들을 포함할 수 있다.
상기 주석이 달린 자연어 구문들의 생성은 하나의 태그된 오브젝트 또는 다수의 태그된 오브젝트들에 기반하여 구문들을 생성함으로써 시작된다. 상기 장치가 자연어 구문들의 정렬된 리스트들을 생성한 후, 상기 장치는 상기 자연어 구문들의 정렬된 리스트들에 주석을 달도록 구성될 수 있다. 대안적으로, 상기 장치는 상기 자연어 구문들의 정렬된 리스트들에 기반하는 자연어 구문들의 향상된 집합을 생성함으로써 계속하고, 그리고 나서 상기 자연어 구문들의 향상된 집합들에 주석을 달도록 구성될 수 있다.
하나의 태그된 오브젝트에 기반하는 자연어 구문들의 생성 및 상기 자연어 구문들의 향상된 집합의 후속 생성이 도 3a 및 도 3b를 참조하여 하기에서 설명된다. 상기 하나의 태그된 오브젝트에 기반하는 자연어 구문들의 생성 및 그와 같은 자연어 구문들의 정렬된 리스트들의 주석이 도 4a 및 도 4b를 참조하여 하기에서 설명된다. 상기 하나의 태그된 어트리뷰트에 기반하는 자연어 구문들의 생성 및 그와 같은 자연어 구문들의 향상된 집합의 후속 생성이 도 5a 내지 도 5e를 참조하여 하기에서 설명된다. 상기 하나의 태그된 어트리뷰트에 기반하는 자연어 구문들의 생성 및 그와 같은 자연어 구문들의 정렬된 리스트들의 주석은 도 6a 및 도 6b를 참조하여 하기에서 설명된다. 상기 다수의 태그된 어트리뷰트들에 기반하는 자연어 구문들의 생성 및 그와 같은 자연어 구문들의 향상된 집합의 후속 생성은 도 7a 내지 도 7d를 참조하여 하기에서 설명된다. 마지막으로, 상기 다수의 태그된 어트리뷰트들에 기반하는 자연어 구문들의 생성 및 그와 같은 자연어 구문들의 정렬된 리스트들의 주석은 도 8a 내지 도 8c를 참조하여 하기에서 설명된다.
도 3a 및 도 3b에 표현되어 있는 상기 자연어 구문들과 같은, 자연어 구문들의 생성은 단일한 태그된 오브젝트를 포함하는 구문을 상기 단일한 태그된 오브젝트의 자연어 인스턴스들과 대체함으로써 시작될 수 있다. 상기 장치는 상기 구문에서 각 태그된 오브젝트의 인스턴시에이션(instantiation)들로 인스턴스에이트된 구문들을 생성한다. 예를 들어, 상기 인스턴시에이터(134)는 상기 지식 베이스(122)에서 컨셉트로 상기 구문 "find @food"(302)에서 "food"를 식별하고, 그리고 나서 상기 지식 베이스(122)에서 "pizza", "taco", and "apple"을 포함하는 "food"의 인스턴스들을 식별한다. 상기 예제를 계속하면, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "find @food"(302)를 인스턴시에이트하여 "find pizza"(304), "find taco"(306) 및 "find apple"(308)과 같은, 인스턴시에이트된 구문들을 생성한다.
도 3a는 상기 예제들을 간략화하기 위한 목적들을 위해, 오직 3개의 인스턴시에이트된 구문들, "find pizza"(304), "find taco"(306) 및 "find apple"(308)만 도시하고 있지만, 상기 인스턴시에이터(134)는 임의의 개수의 인스턴시에이트된 구문들을 생성할 수 있다. 상기 인스턴시에이터(134)는 "food"의 가장 자주 식별되는 30 개의 인스턴스들만을 사용하는 것과 같이, 상기 태그된 오브젝트의 인스턴스들의 개수를 제한할 수 있으며, 이는 결과적으로 상기 인스턴시에이트된 구문들의 개수를 30개의 인스턴스에이트된 구문들과 같이, 상기 태그된 오브젝트의 인스턴스들의 개수로 제한할 것이다.
상기 태그된 오브젝트를 상기 태그된 오브젝트의 인스턴스들로 대체한 후, 상기 구문의 동사는 상기 동사의 자연어 패러프레이즈들로 대체된다. 상기 인스턴시에이트된 구문들의 생성 후에, 상기 장치는 상기 인스턴스에이트된 구문들 각각의 해당하는 패러프레이즈들로 자연어 구문들의 리스트들을 생성한다. 예를 들어, 상기 패러프레이즈 생성기(136)는 "find pizza" (304)를 상기 자연어 pizza 구문들: "order delivery of a pizza", "where is a restaurant that serves pizzas", "what store has a sale on pizzas", ... 의 리스트(310)로서 패러프레이즈한다.
다른 예제에서, 상기 패러프레이즈 생성기(136)는 "find taco"(306)를 상기 자연어 taco 구문들: "order delivery of a taco", "where is a restaurant that serves tacos", "what store has a sale on tacos", ... (312)의 리스트로서 패러프레이즈한다. 또 다른 예제에서, 상기 패러프레이즈 생성기(136)는 "find apple" (308)를 상기 자연어 apple 구문들: "order delivery of an apple", "where is a restaurant that serves apples", "what store has a sale on apples", ... (314)의 리스트로서 패러프레이즈한다. 상기 패러프레이즈 생성기(136)는 상기 언어 생성기(124)의 컴포넌트로서 구현될 수 있거나, 또는 상기 패러프레이즈 데이터베이스(paraphrase database: PPDB)와 같은, 패러프레이징을 위한 외부 소스에 억세스할 수 있다.
도 3a는 상기 예제들을 간략화하기 위한 목적들을 위해, 상기 단어 "find"의, 오직 3개의 인스턴시에이트된 패러프레이즈들, "order delivery of", "where is a restaurant that serves", 및 "what store has a sale on"만 도시하고 있다. 하지만, 상기 패러프레이즈 생성기(136)는 임의의 개수의 패러프레이즈들을 생성할 수 있다. 상기 패러프레이즈 생성기(136)는 패러프레이즈들의 개수를 제한할 수 있다. 예를 들어, 상기 패러프레이즈 생성기(136)는 "find"의 가장 일반적인 30 개의 패러프레이즈들만 사용할 수 있다. 이는 결과적으로 상기 자연어 구문들의 각 리스트에서의 개수를 자연어 구문들의 각 리스트에서 30개의 자연어 구문들로 제한할 것이다.
각 자연어 구문의 발생들은 자주 발생하는 자연어 구문들에 높은 순서가 할당되고 드물게 발생하는 자연어 구문들에 낮은 순서가 할당되도록 계산된다. 상기 장치는 각 자연어 구문의 발생들에 기반하여 각 리스트에서 자연어 구문들을 정렬함으로써 자연어 구문들의 정렬된 리스트들을 생성한다. 예를 들어, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 이런 자연어 구문들이 얼마나 자주 발생하는지에 기반하여, 상기 자연어 pizza 구문들(316)의 리스트를 "1. order delivery of a pizza", "2. where is a restaurant that serves pizzas", "3. which store has a sale on pizzas", 등과 같이 정렬한다.
상기 자연어 모델(114)에서 각 자연어 구문의 발생들은: 1) "order a pizza"에 대해 상기 인터넷을 검색할 때 160만 개의 결과들과 같은 단순 카운트(count)로 계산될 수 있고; 2) 일련의 조건적 확률(conditional probability)들로 계산될 수 있고; 또는 3) 각 자연어 구문의 실제 사용을 추정하는 임의의 다른 방법에 의해 계산될 수 있다. 예를 들어, "order a pizza"에 대한 발생들은 상기 자연어 모델(114)에서 상기 단어들의 시퀀스 "order a"가 주어질 경우 상기 단어 "pizza"의 확률로 곱해지고, 상기 자연어 모델(114)에서 상기 단어 "order"가 주어질 경우 상기 단어 "a"에 의해 곱해지는, 상기 자연어 모델(114)에서 상기 단어 "order"의 확률로서 계산된다. 이런 조건적 확률들의 계산은 그들의 개인 휴대 정보 단말기(128)에 구문들을 입력할 수 있는 각 개인에 의해 상기 자연어 구문이 실제로 얼마나 자주 사용되는지에 대한 추정을 초래한다. 높은 발생 횟수를 가지는 구문들은 상기 NLU 엔진(130)이 사용자로부터 입력되는 후속 자연어 구문들을 이해하도록 트레이닝시키는데 보다 효율적이지만, 이에 반해 발생을 가지지 않거나 또는 낮은 발생 횟수를 가지는 구문들은 덜 효율적이다.
생성된 자연어 구문
Figure pct00001
에 대해서(예를 들어, 상기 생성된 자연어 구문이 "order a pizza"일 경우,
Figure pct00002
= "order",
Figure pct00003
= "a", 및
Figure pct00004
= "pizza"이다), 상기 구문의 발생들은 하기와 같이 계산된다:
Figure pct00005
Figure pct00006
는 상기 자연어 모델(114)로부터 가져온 것이고: 상기 이전 단어들
Figure pct00007
가 주어질 경우 t번째 단어가
Figure pct00008
일 확률이다.
다른 예제에서, 상기 오거나이저(132)는 상기 자연어 모델(14)에서 각 자연어 구문의 발생에 기반하여, 상기 자연어 taco 구문들(318)의 리스트를 "1. where is a restaurant that serves tacos", "2. order delivery of a taco", "3. which store has a sale on tacos", 등과 같이 정렬한다. 또 다른 예제에서, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 각 자연어 구문의 발생들에 기반하여, 상기 자연어 apple 구문들(320)의 리스트를 "1. which store has a sale on apples", "2. where is a store that sells apples", "3. order delivery of an apple", 등과 같이 정렬한다.
상기 패러프레이즈 "where is a restaurant that serves"는 상기 자연어 pizza 구문들(316)의 정렬된 리스트에서 두 번째로 자주 발생하는 구문으로 정렬되는 구문의 일부이며, 상기 자연어 taco 구문들(318)의 정렬된 리스트에서 가장 자주 발생하는 구문으로 정렬되는 구문의 일부이다. 상기 정렬된 리스트들(316, 318)에서 이 높은 순서는 상기 패러프레이즈 "where is a restaurant that serves"가 상기 자연어 모델(114)에서 그 높은 발생들로 인해 문법적으로 정확하다는 것을 추론한다. 상기 자연어 apple 구문들(320)의 상기 정렬된 리스트는 상기 정렬된 리스트들(316, 318)과 다르지만, 상기 패러프레이즈 "where is a restaurant that serves"를 포함하지 않는다. 상기 자연어 apple 구문들(320)의 상기 정렬된 리스트에서 이 패러프레이즈의 부재는 특히 상기 패러프레이즈가 상기 다른 정렬된 리스트들(316, 318)에 의해 문법적으로 정확하다고 추론되었기 때문에 상기 구문 "where is a restaurant that serves apples"가 문법적으로 부정확하다고 추론하지는 않는다. 오히려, 상기 자연어 apple 구문들(320)의 상기 정렬된 리스트에서 이 패러프레이즈의 부재는 상기 구문 "where is a restaurant that serves apples"가 그 드묾으로 인해 부자연스러운 구문이라는 것을 추론한다. 상기 자연어 모델(114)은 사람들이 사과를 서비스하는 레스토랑들을 검색하지 않기 때문에 상기 패러프레이즈 "where is a restaurant that serves"와 상기 인스턴스 "apples"를 조합하는 어떤 발생들도 포함할 수 없다.
각 자연어 구문이 상기 자연어 모델(114)에서 얼마나 자주 발생하는지에 기반하여 각 자연어 구문을 정렬함으로써, 상기 오거나이저(132)는 부자연스럽거나 또는 문법적으로 부정확한 자연어 구문들이 상기 자연어 모델(114)에서 자주 발생하지는 않기 때문에 각 리스트의 하단에 부자연스럽거나 또는 문법적으로 부정확한 자연어 구문들을 정렬한다. 상기 오거나이저(132)가 정렬된 리스트에서 가장 빈번하게 발생하는 30번째 구문들과 같은, 상기 정렬된 리스트들에서 임계 순서 값보다 낮은 순서로 정렬된 자연어 구문들을 삭제할 경우, 상기 오거나이저(132)는 자주 발생하지 않는 임의의 부자연스럽거나 문법적으로 부정확한 자연어 구문들을 삭제한다. 결과적으로, 상기 오거나이저(132)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 부자연스럽거나 문법적으로 부정확한 자연어 구문들을 수동으로 삭제할 필요를 제거한다.
상기 오거나이저(132)는 사람들이 생성하는 상기 자연어 구문들보다 더 자연스럽고 문법적으로 더 정확한 자연어 구문들을 생성함으로써 상기 장치가 예상하지 못한 결과들을 생성하는 것을 가능하게 한다. 상기 장치가 사람들에 의해 생성된 것들과 같이 거의 자연스럽고 또한 거의 문법적으로 정확한 자연어 구문들을 생성했을 경우, 이들 장치-생성 자연어 구문은 사람들이: 1) 수동으로 임의의 자연어 구문들을 리뷰하고; 2) 임의의 부자연스럽거나 문법적으로 부정확한 자연어 구문들을 수동으로 삭제하거나; 또는 3) 임의의 자연어 구문들에 수동으로 주석을 다는 것에 대한 필요의 제거로 인해 보다 효율적으로 생성될 것이다. 하지만, 실험들은 상기 장치-생성 자연어 구문들은 사람들에 의해 생성되는 구문들보다 보다 자연스럽고 보다 문법적으로 정확하다는 것을 지시한다. 상기 실험은 사람들의 그룹들이 1 (부자연스럽거나 또는 문법적으로 부정확한)에서 5(자연스럽거나 또는 문법적으로 정확한)의 스케일(scale)로 상기 장치-생성 자연어 구문들 및 인간-생성 자연어 구문들의 자연스러움과 문법적 정확성을 평가하도록 요구했다. 상기 결과들은 장치-생성 자연어 구문들이 상기 인간-생성 자연어 구문들보다 11% 내지 16% 만큼 더 자연스럽고, 상기 인간-생성 자연어 구문들보다 12% 내지 16% 만큼 더 문법적으로 정확하다고 평가되었다는 것을 나타내었다.
예를 들어, 자연어 전문 지식이 없는 사람은 상기 구문 "where is a restaurant that serves apples"를 생성할 수 있고, 자연어 전문 지식이 없는 사람 리뷰자는 상기 리뷰자가 그와 같은 구문이 자연스럽고 문법적으로 정확하다고 믿을 수 있기 때문에 상기 구문을 승인할 수 있다. 상기 장치가 처음에 상기 구문 "where is a restaurant that serves apples"를 생성하였다고 할지라도, 상기 오거나이저(132)는 각 구문이 자연어 모델(114)에서 얼마나 자주 발생하는지에 기반하여 구문들을 정렬한다. "where is a restaurant that serves"가 상기 동사 "find"의 자주 발생하는 패러프레이즈이고, "apples"가 상기 태그된 오브젝트 "@food"의 자주 발생하는 인스턴스일지라도, 사람들이 사과들을 서비스하는 레스토랑들을 검색하지 않기 때문에 그와 같은 조합이 자연스럽지 않기 때문에 상기 구문 "where is a restaurant that serves apples"은 자주 발생하지 않는다. 따라서, 상기 오거나이저(132)는 그와 같은 부자연스러운 구문의 발생들이 존재하지 않는다고 결정할 수 있고, 따라서 정렬된 리스트에서 낮은 랭킹(ranking)을 초래할 수 있다. 이는 그와 같은 부자연스러운 구문이 삭제되고 이후에 주석이 달리는 자연어 구문들에 존재하지 않는다는 것을 보장한다.
다른 예제에서, 자연어 전문 지식이 없는 사람은 상기 구문 "order a pizza for the delivery"를 생성할 수 있고, 자연어 전문 지식이 없는 사람 리뷰자는 그와 같은 구문이 자연스럽고 문법적으로 정확하다고 믿을 수 있기 때문에 상기 구문을 승인할 수 있다. 상기 장치가 처음에 상기 구문 "order a pizza for the delivery"를 생성하였다고 할지라도, 상기 오거나이저(132)는 각 구문이 자연어 모델(114)에서 얼마나 자주 발생하는지에 기반하여 구문들을 정렬한다. 따라서, 상기 오거나이저(132)는 그와 같은 문법적으로 부정확한 구문의 발생들이 존재하지 않는다고 결정할 수 있고, 따라서 정렬된 리스트에서 낮은 랭킹(ranking)을 초래할 수 있다. 이는 그와 같은 문법적으로 부정확한 구문이 삭제되고 이후에 주석이 달리는 자연어 구문들에 존재하지 않는다는 것을 보장한다.
사람 리뷰자가 자연어 구문을 삭제하기로 또는 삭제하지 않기로 결정할 때, 상기 사람 리뷰자는 상기 구문의 자연스러움 및 문법적 정확성에 대한 주관적인 개인적인 의견에 따라 이런 결정을 한다. 반대로, 상기 오거나이저(132)가 자연어 구문을 삭제할지 여부를 결정할 때, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 상기 구문이 실제로 얼마나 자주 발생하는지에 따라 결정하고, 이는 사람들이 그와 같은 상황에서 사용하지 않는 객관적인 평가이다. 결과적으로, 상기 사람 리뷰자들 및 상기 오거나이저(132)에 의한 상기 리뷰 프로세스들은 예상하지 못한 우수한 결과들을 생성하고, 이는 상기 장치가 상기 인간-생성 자연어 구문들보다 더 자연스럽고 문법적으로 더 정확한 자연어 구문들을 생성하는 것이다.
상기에서 설명한 바와 같이, 도 3a가 상기 예제들을 간략화하기 위한 목적들을 위해서 각 정렬된 리스트에 대해 가장 자주 발생하는 3개의 구문들만을 도시하고 있을 지라도, 각 정렬된 리스트는 임의의 개수의 가장 자주 발생하는 구문들을 포함할 수 있다. 상기 오거나이저(132)는 상기 가장 자주 발생하는 구문들의 개수를, 예를 들어, 자연어 구문들의 각 리스트에서 가장 자주 발생하는 30개의 구문들로 제한할 수 있다.
상기 자연어 구문들의 생성의 이 포인트에서, 상기 자연어 구문들의 정렬된 리스트들에 주석이 달릴 수 있거나, 또는 상기 정렬된 리스트들에 기반하여 자연어 구문들의 향상된 집합이 생성될 수 있고, 따라서 상기 향상된 집합에 대해서는 이후에 주석이 달릴 수 있다. 상기 자연어 구문들의 정렬된 리스트들에 주석을 다는 것이 하기에서 도 4a를 참조하여 추가적으로 설명된다. 도 3a 및 도 3b는 상기 자연어 구문들의 정렬된 리스트들에 기반하는 자연어 구문들의 향상된 집합 및 상기 자연어 구문들의 향상된 집합의 주석에 대해서 도시하고 있다.
상기 자연어 구문들의 향상된 집합을 생성하는 것은 상기 자연어 구문들의 일반화된 버전(version)들이 상기 다른 정렬된 리스트들로부터 병합될 수 있도록 상기 정렬된 리스트들에서 상기 단일 태그된 오브젝트의 인스턴스들을 상기 단일 태그된 오브젝트와 교체함으로써 시작될 수 있다. 상기 장치는 상기 자연어 구문들의 상기 정렬된 리스트들에서 각 태그된 오브젝트의 인스턴스들을 대체하기 위해 상기 구문에서 각 태그된 오브젝트를 사용함으로써 태그된 자연어 구문들의 정렬된 리스트들을 생성한다. 예를 들어, 상기 인스턴시에이터(134)는 인스턴스시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "pizza"로 대체되었다고 결정하고, 상기 태그된 오브젝트 "@food"를 사용하여 상기 자연어 pizza 구문들의 정렬된 리스트에서 "pizza"의 각 인스턴스를 대체한다. 이들 대체들은 태그된 자연어 구문들의 정렬된 리스트(322): "1. order delivery of @food", "2. where is a restaurant that serves @food", "3. which store has a sale on @food", 등을 생성한다.
다른 예제에서, 상기 인스턴시에이터(134)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "taco"로 대체되었다고 결정하고, 상기 태그된 오브젝트 "@food"를 사용하여 상기 자연어 taco 구문들의 정렬된 리스트에서 "taco"의 각 인스턴스를 대체한다. 이들 대체들은 태그된 자연어 구문들의 리스트(324): "1. where is a restaurant that serves @food", "2. order delivery of @food", "3. which store has a sale on @food", 등을 생성한다. 또 다른 예제에서, 상기 인스턴시에이터(134)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "apple"로 대체되었다고 결정하고, 상기 태그된 오브젝트 "@food"를 사용하여 상기 자연어 apple 구문들의 정렬된 리스트에서 "apple"의 각 인스턴스를 대체한다. 이들 대체들은 태그된 자연어 구문들(326): "1. which store has a sale on @food", "2. where is a store that sells @food", "3. order delivery of @food", 등의 정렬된 리스트를 생성한다.
도 3a가 상기 예제들을 간략화하기 위한 목적들을 위해서 각 정렬된 리스트에 대해 3개의 태그된 자연어 구문들만을 도시하고 있을 지라도, 각 정렬된 리스트는 임의의 개수의 태그된 자연어 구문들을 포함할 수 있다. 상기 오거나이저(132)가 각 리스트에서 가장 자주 발생하는 30개의 구문들만 사용하는 것과 같이, 상기 가장 자주 발생하는 구문들의 개수를 제한할 경우, 각 정렬된 리스트에서 상기 태그된 자연어 구문들의 개수는 동일한 개수로 제한될 수 있다.
상기 자연어 구문들의 정렬된 리스트들이 태그된 자연어 구문들로 변환되면, 매치되는(match) 이런 태그된 자연어 구문들 중 일부가 상기 다른 정렬된 리스트들로부터 병합됩니다. 상기 장치는 서로 매치되는 해당하는 태그된 자연어 구문들을 병합함으로써 태그된 자연어 구문들의 병합된 리스트를 생성한다. 예를 들어, 상기 오거나이저(132)는 상기 정렬된 리스트(322)로부터의 "1. order delivery of @food" 를 상기 정렬된 리스트(324)로부터의 "2. order delivery of @food" 및 상기 정렬된 리스트(326)로부터의 "3. order delivery of @food"와 병합하여 상기 병합된 태그된 자연어 구문 "order delivery of @food"를 생성한다.
다른 예제에서, 상기 오거나이저(132)는 상기 정렬된 리스트(322)로부터의 "2. where is a restaurant that serves @food"를 상기 정렬된 리스트(324)로부터의 "1. where is a restaurant that serves @food"와 병합하여 상기 병합된 태그된 자연어 구문 "where is a restaurant that serves @food"를 생성한다.
또 다른 예제에서, 상기 오거나이저(132)는 상기 정렬된 리스트(322)로부터의 "3. which store has a sale on @food"를 상기 정렬된 리스트(324)로부터의 "3. which store has a sale on @food" 및 상기 정렬된 리스트(326)로부터의 "1. what store has a sale on @food"와 병합하여 상기 병합된 태그된 자연어 구문 "which store has a sale on @food"를 생성한다.
상기 오거나이저(132)는 상기 태그된 자연어 구문들 "what store has a sale on @food"와 상기 태그된 자연어 구문들 "what store has sales on @food" 간의 퍼지 매치(fuzzy match)와 같은, 정확하게 매치되지 않는 태그된 자연어 구문들을 매치하는 퍼치 매칭(fuzzy matching)을 사용할 수 있다. 상기 태그된 자연어 구문들(328)의 결과적인 병합된 리스트는 "order delivery of @food", "where is a restaurant that serves @food", "which store has a sale on @food", 및 "where is a store that sells @food"이다. 도 3a가 상기 예제들을 간략화하기 위한 목적들을 위해 상기 병합된 리스트에서 4개의 태그된 자연어 구문들만을 도시하고 있을 지라도, 상기 병합된 리스트는 임의의 개수의 태그된 자연어 구문들을 포함할 수 있다.
상기 태그된 자연어 구문들은 그 자연어 구문들이 얼마나 자주 발행하는지에 기반하여 상기 태그된 자연어 구문들의 병합된 리스트 내에서 정렬된다. 상기 장치는 각 해당하는 자연어 구문의 발생들에 기반하여 상기 태그된 자연어 구문들의 병합된 리스트를 정렬함으로써 태그된 자연어 구문들의 정렬된 리스트를 생성한다. 예를 들어, 상기 오거나이저(132)는 상기 자연어 모델(122)에서 "order delivery of a pizza"의 29번의 발생들, "order delivery of a taco"의 12번의 발생들, "order delivery of an apple"의 3번의 발생들을 카운트하고, 따라서 상기 병합된 구문 "order delivery of @food"의 총 카운트는 45이다.
또 다른 예제에서, 상기 오거나이저(132)는 상기 자연어 모델(122)에서 "where is a restaurant that serves pizzas"의 17번의 발생들 및 "where is a restaurant that serves tacos"의 23번의 발생들을 카운트하고, 따라서 병합된 구문 "where is a restaurant that serves @food"에 대한 총 카운트는 40이다.
또 다른 예제에서, 상기 오거나이저(132)는 상기 자연어 모델(122)에서 "which store has a sale on pizzas"의 7번의 발생들, "which store has a sale on tacos"의 5번의 발생들, 및 "which store has a sale on apples"의 19번의 발생들을 카운트하고, 따라서 상기 병합된 구문 "which store has a sale on @food"에 대한 총 카운트는 33이다. 추가적인 예제에서, 상기 오거나이저(132)는 상기 자연어 모델(122)에서 "where is a store that sells apples"의 11번의 발생들을 카운트하며, 따라서 상기 병합된 구문 "where is a store that sells @food"에 대한 총 카운트는 11이다.
상기 태그된 자연어 구문들의 결과적인 정렬된 리스트(330)는 "1. order delivery of @food" (45의 카운트에 기반하여), "2. where is a restaurant that serves @food" (40의 카운트에 기반하여), "3. which store has a sale on @food" (33의 카운트에 기반하여), "4. where is a store that sells @food" (11의 카운트에 기반하여), 등이다. 상기 선행하는 예제들이 간략화된 예제들의 목적들을 위해 상기 자연어 구문들의 발생들을 나타내는 정수들로 하는 상기 태그된 자연어 구문들의 정렬에 기반할 지라도, 상기 자연어 구문들의 발생들은 소수들 및 분수들과 같은, 임의의 타입의 값으로 나타내질 수 있다.
예를 들어, 상기 각 태그된 자연어 구문의 정렬은 모든 해당하는 자연어 구문들의 발생들을 조합하는 것으로부터의 누적 스코어(score)에 기반할 수 있다. 각 태그된 자연어 구문에 대해서, 상기 스코어는 다음과 같이 계산된다:
Figure pct00009
여기서, m은 동일한 태그된 자연어 구문에 해당하는 자연어 구문들의 개수이며,
Figure pct00010
는 상기 자연어 문장 j의 정확성 확률이다. 비록 도 3a가 상기 예제들을 간략화하기 위한 목적들을 위해 상기 정렬된 리스트에서 4개의 태그된 자연어 구문들만 도시하고 있을 지라도, 상기 정렬된 리스트는 임의의 개수의 태그된 자연어 구문들을 포함할 수 있다.
상기 태그된 자연어 구문들의 정렬된 리스트는 주석이 달릴 자연어 구문들의 향상된 집합을 생성하기 위해 인스턴시에이트된다. 상기 장치는 상기 태그된 자연어 구문들의 정렬된 리스트에서 각 태그된 오브젝트의 인스턴시에이션들로 상기 자연어 구문들의 향상된 집합을 생성한다. 예를 들어, 상기 인스턴시에이터(134)는 상기 리스트(330)에서 "1. order delivery of @food"를 "order delivery of a pizza", "order delivery of a taco", 및 "order delivery of an apple" 로 인스턴시에이트한다.
다른 예제에서, 상기 인스턴시에이터(134)는 상기 리스트(330)에서 "2. where is a restaurant that serves @food"를 "where is a restaurant that serves pizzas", "where is a restaurant that serves tacos", 및 "where is a restaurant that serves apples"로 인스턴시에이트한다.
또 다른 예제에서, 상기 인스턴시에이터(134)는 상기 리스트(330)에서 "3. which store has a sale on @food"를 "which store has a sale on pizzas", "which store has a sale on tacos", 및 "which store has a sale on apples"로 인스턴시에이트한다. 또 다른 예제에서, 상기 인스턴시에이터(134)는 상기 리스트(330)에서 "4. where is a store that sells @food"를 "where is a store that sells pizzas", "where is a store that sells tacos", 및 "where is a store that sells apples"로 인스턴시에이트한다. 상기 자연어 구문들(332)의 결과적인 향상된 집합이 도 3b에 도시되어 있다. 도 3b가 상기 예제들을 간략화하기 위한 목적들을 위해 상기 향상된 집합에서 12개의 자연어 구문들만을 도시하고 있을 지라도, 상기 향상된 집합은 임의의 개수의 자연어 구문들을 포함할 수 있다.
대안적으로, 상기 장치는 상기 태그된 자연어 구문들의 정렬된 리스트에 각 태그된 오브젝트의 인스턴스들을 삽입함으로써 상기 주석이 달린 자연어 구문들을 생성한다. 예를 들어, 상기 인스턴시에이터(134)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "pizza"로 대체되었다고 결정하고, 상기 인스턴스 "pizza"를 "@food" 전에 삽입하여 "order delivery of a pizza @food"를 생성함으로써 상기 리스트(330)에서 "1. order delivery of @food"를 수정한다.
다른 예제에서, 상기 인스턴시에이터(134)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "taco"로 대체되었다고 결정하고, 상기 인스턴스 "taco"를 "@food" 전에 삽입하여 "order delivery of a taco @food"를 생성함으로써 상기 리스트(330)에서 "1. order delivery of @food"를 수정한다.
상기 인스턴시에이터(134)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "apple"로 대체되었다고 결정하고, 상기 인스턴스 "apple"을 "@food" 전에 삽입하여 "order delivery of an apple @food"를 생성함으로써 상기 리스트(330)에서 "1. order delivery of @food"를 수정한다.
상기 자연어 구문들의 향상된 집합에는 상기 NLU 엔진(130)을 트레이닝하기 위해 주석이 달린다. 상기 장치는 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 기반하는 상기 자연어 구문들의 향상된 집합들에 주석을 달음으로써 주석이 달린 자연어 구문들을 생성한다.
일 실시 예에서, 상기 주석자(138)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "pizza"로 대체되었다고 결정하고, 상기 태그된 오브젝트 "@food"를 사용하여 상기 자연어 구문들의 향상된 집합에서 "pizza"에 주석을 달고, 따라서 상기 주석이 달린 자연어 구문 "order delivery of a pizza (@food)"를 생성할 수 있다. 결과적으로, 상기 주석자(138)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고, 임의의 자연어 구문들에 수동으로 주석을 달 필요를 제거한다. 상기 결과적인 주석이 달린 자연어 구문들(334)이 도 3b에 도시되어 있다. 도 3b가 상기 예제들을 간략화하기 위한 목적들을 위해 상기 자연어 구문들의 향상된 집합에서 오직 12개의 주석이 달린 자연어 구문들만 도시하고 있을 지라도, 상기 자연어 구문들의 향상된 집합은 임의의 개수의 주석이 달린 자연어 구문들을 포함할 수 있다.
상기 자연어 구문들에서 각 태그된 오브젝트의 인스턴스들에 주석을 단 후에, 상기 자연어 구문들에서 상기 패러프레이즈된 동사들은 상기 패러프레이즈된 동사로 선택적으로 주석이 달린다. 대안적으로, 다른 프로세스는 상기 구문으로부터의 동사를 다른 시간에 발생하는, 상기 동사의 자연어 패러프레이즈들로 대체한다. 상기 장치는 상기 구문에서의 동사를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 기반하는 상기 자연어 구문들의 향상된 집합에 주석을 달 수 있다.
일 실시 예에서, 상기 주석자(138)는 패러프레이징 기록들을 참조하고, 상기 동사 "find"가 이전에 상기 인스턴스 "order delivery of"로 대체되었다고 결정하고, 상기 태그된 동사 "@find"를 사용하여 상기 자연어 구문들의 향상된 집합에서 "order delivery of"에 주석을 달고, 따라서 상기 주석이 달린 자연어 구문 "order delivery of (@find) a pizza (@food)"을 생성할 수 있다. 결과적으로, 상기 주석자(138)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 임의의 자연어 구문들에 수동으로 주석을 달 필요를 제거한다. 상기 결과적인 주석이 달린 자연어 구문들(336)이 도 3b에 도시되어 있다. 도 3b가 상기 예제들을 간략화하기 위한 목적들을 위해 상기 자연어 구문들의 향상된 집합에서 오직 12개의 주석이 달린 자연어 구문들만 도시하고 있을 지라도, 상기 자연어 구문들의 향상된 집합은 임의의 개수의 주석이 달린 자연어 구문들을 포함할 수 있다.
이 예제는 주석이 달린 자연어 구문, 즉 "order delivery of (@find) a pizza (@food)" 내에서 (@find)와 같은 태그된 단어를 삽입하는 것을 나타내고 있지만, 상기 태그된 단어들은 상기 구문 전에, 상기 구문 다음에, 또는 임의의 다른 타입의 연관으로 상기 구문 내에서 단어들과 연관될 수 있다. 이 예제는 텍스트 밑줄(textual underling)을 사용하여 (@find)와 같은 연관되는 태그된 단어를 주석이 달린 자연어 구문 "order delivery of (@find) a pizza (@food)" 내의 단어들의 그룹에 연관시키지만, 상기 태그된 단어들은 임의의 다른 타입의 연관에 의해 상기 구문에서의 단어들과 연관될 수 있다. 이 예제는 또한 상기 "@" 기호(symbol)를 사용하여 "@food"와 같이 오브젝트에 태그하지만, 상기 태그된 오브젝트들은 임의의 다른 타입의 기호, 특수 문자, 또는 폰트(font)로 태그될 수 있다.
상기 주석이 달린 자연어 구문들은 상기 NLU 엔진(130)을 트레이닝시키는 데 사용될 수 있다. 상기 장치는 상기 주석이 달린 자연어 구문들을 사용하여 NLU 엔진이 사용자로부터의 자연어 구문을 이해하도록 트레이닝시킬 수 있고, 따라서 응답을 가능하게 할 수 있다. 예를 들어, 상기 트레이너(126)는 상기 주석이 달린 자연어 구문들(336)을 사용하여 상기 NLU 엔진(130)을 트레이닝시키고, 상기 자연어 서버(106)는 상기 개인 휴대 정보 단말기(128)의 카피(copy)를 스마트 폰(102)에 제공한다. 상기 예제를 계속하면, 사람은 스마트 폰(102)을 사용하여 상기 구문 "order delivery of a pizza"를 말한다. 상기 NLU 엔진(130)은 상기 구문을 이해하며, 이는 상기 개인 휴대 정보 단말기(128)가 피자 사이즈 및 토핑들, 상기 피자를 만드는 레스토랑, 배달 시간 및 위치와 같은 세부 사항들에 대해 상기 사람에게 프롬프트(prompt)하는 것을 도와준다. 상기 개인 휴대 정보 단말기(128)는 상기 트레이너(126)가 상기 주석이 달린 자연어 구문들(336)을 사용하여 상기 NLU 엔진(130)을 트레이닝했었기 때문에, 상기 사람의 피자 배달 주문을 정확하게 완료한다.
이 예제가 말하기를 통해 사용자와 통신하는 것을 설명할 지라도, 상기 사용자 입력은 음성 언어를 기반으로 하지 않을 수 있으며, 상기 사용자 입력은 실제 또는 가상 키보드, 또는 유사한 대용품들을 통한 텍스트의 타이프된 입력, 터치 및 마우스 제스처(gesture)들, 음성, 및 위의 조합들과 같은 다수의 양식들 중 어느 하나를 통해 제공될 수 있다.
도 3a 및 도 3b는 상기 자연어 구문들의 정렬된 리스트들에 기반하는 자연어 구문들의 향상된 집합 및 상기 자연어 구문들의 향상된 집합의 주석에 대해 도시하고 있다. 이에 반해서, 도 4a는 상기 자연어 구문들의 정렬된 리스트들 및 상기 자연어의 정렬된 리스트들의 주석을 도시하고 있다. 결과적으로, 도 4a에 도시되어 있는 상기 구문들(402-426)은 도 3a에 도시되어 있는 상기 구문들(302-326)과 유사하다.
도 4a 및 도 4b에 도시되어 있는 자연어 구문들과 같은 자연어 구문들의 생성은 구문의 단일한 태그된 오브젝트를 상기 단일한 태그된 오브젝트의 자연어 인스턴스들로 대체함으로써 시작될 수 있다. 상기 장치는 상기 구문에서 각 태그된 오브젝트의 인스턴시에이션들로 인스턴시에이트된 구문들을 생성한다. 예를 들어, 상기 인스턴시에이터(134)는 상기 구문 "find @food"(402)에서 "food"를 상기 지식 베이스(122)에서의 컨셉트로 식별하고, 그리고 나서 "pizza", "taco", 및 "apple"을 포함하는, 상기 지식 데이터베이스(122)에서의 "food"의 인스턴스들을 식별한다. 상기 예제를 계속하면, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "find @food"(402)를 인스턴시에이트하여 "find pizza"(404), "find taco"(406), 및 "find apple"(408)와 같은 인스턴시에이트된 구문들을 생성한다.
상기 인스턴시에이트된 구문들을 생성한 후, 상기 장치는 상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈들로 자연어 구문들의 리스트들을 생성한다. 예를 들어, 상기 패러프레이즈 생성기(136)는 "find pizza"(404)를 상기 자연어 pizza 구문들(410): "order delivery of a pizza", "where is a restaurant that serves pizzas", "which store has a sale on pizzas", 등의 리스트로 패러프레이즈한다.
다른 예제에서, 상기 패러프레이즈 생성기(136)는 "find taco"(406)를 상기 자연어 taco 구문들(412): "order delivery of a taco", "where is a restaurant that serves tacos", "which store has a sale on tacos", 등의 리스트로 패러프레이즈한다.
또 다른 예제에서, 상기 패러프레이즈 생성기(136)는 "find apple"(408)을 상기 자연어 apple 구문들(414): "order delivery of an apple", "where is a restaurant that serves apples", "which store has a sale on apples", 등의 리스트로 패러프레이즈한다.
상기 장치는 각 자연어 구문의 발생들에 기반하여 자연어 구문들의 각 리스트에서 자연어 구문들을 정렬함으로써 자연어 구문들의 정렬된 리스트들을 생성한다. 일 예에서, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 이러한 자연어 구문들이 얼마나 자주 발생하는 지에 기반하여 "1. order delivery of a pizza", "2. where is a restaurant that serves pizzas", "3. which store has a sale on pizzas", 등과 같이 상기 자연어 pizza 구문들(416)의 리스트를 정렬한다.
또 다른 예제에서, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 각 자연어 구문의 발생에 기반하여 "1. where is a restaurant that serves tacos", "2. order delivery of a taco", "3. which store has a sale on tacos", 등과 같이 상기 자연어 taco 구문들(418)의 리스트를 정렬한다.
또 다른 예제에서, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 각 자연어 구문의 발생들에 기반하여 "1. which store has a sale on apples", "2. where is a store that sells apples", "3. order delivery of an apple", 등과 같이 상기 자연어 apple 구문들(420)의 리스트를 정렬한다.
상기 자연어 구문들의 생성시 이 포인트에서, 상기 자연어 구문들의 정렬된 리스트들에 주석이 달릴 수 있다. 대안적으로, 자연어 구문들의 향상된 집합에 주석이 달릴 수 있도록 상기 자연어 구문들의 정렬된 리스트들에 기반하여 상기 자연어 구문들의 향상된 집합이 생성될 수 있다. 상기 자연어 구문들의 정렬된 리스트들에 기반하는 자연어 구문들의 향상된 집합을 생성하는 것 및 상기 자연어 구문들의 향상된 집합에 주석을 다는 것은 상기에서 도 3a 및 도 3b를 참조하여 설명된다. 상기 자연어 구문들의 정렬된 리스트들에 주석을 다는 것은 도 4a를 참조하여 하기에서 바로 설명된다.
상기 자연어 구문들의 정렬된 리스트들에 대해서는 상기 NLU 엔진(130)을 트레이닝시키기 위해 주석이 달릴 수 있다. 상기 장치는 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 주석을 달음으로써 주석이 달린 자연어 구문들을 생성할 수 있다. 예를 들어, 상기 주석자(138)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@food"가 이전에 인스턴스 "pizza"로 대체되었다고 결정하고, 상기 태그된 오브젝트 "@food"를 사용하여 상기 자연어 구문들의 정렬된 리스트에서 "pizza"의 각 인스턴스에 주석을 단다. 이는 상기 주석이 달린 자연어 구문 "order delivery of a pizza (@food)"를 초래한다. 결과적으로, 상기 주석자(138)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 임의의 자연어 구문들에 수동으로 주석을 다는 임의의 필요를 제거한다. 상기 주석이 달린 자연어 구문들(422, 424, 426)의 결과적인 리스트들이 도 4a에 도시되어 있다. 도 4a가 상기 예제들을 간략화하기 위한 목적들을 위해서 주석이 달린 자연어 구문들의 3개의 리스트들 각각에서 4개의 주석이 달린 자연어 구문들만을 도시하고 있을 지라도, 임의의 개수의 주석이 달린 자연어 구문들의 리스트들은 임의의 개수의 주석이 달린 자연어 구문들을 포함할 수 있다.
상기 자연어 구문들에서 각 태그된 오브젝트의 인스턴스들에 주석을 단 후에, 상기 자연어 구문들에서 상기 패러프레이즈된 동사들에 대해 상기 패러프레이즈된 동사로 선택적으로 주석이 달린다. 대안적으로, 다른 프로세스는 상기 구문의 동사를 다른 시간에 발생하는, 상기 동사의 자연어 패러프레이즈들로 대체한다. 상기 장치는 상기 구문에서의 동사를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 주석을 달 수 있다. 예를 들어, 상기 주석자(138)는 패러프레이징 기록들을 참조하고, 상기 동사 "find"가 이전에 상기 인스턴스 "order delivery of"로 대체되었다고 결정하고, 상기 태그된 동사 "@find"를 사용하여 상기 자연어 구문들의 정렬된 리스트들에서 "order delivery of"에 주석을 단다. 이는 상기 주석이 달린 자연어 구문 "order delivery of (@find) a pizza (@food)"을 초래한다. 결과적으로, 상기 주석자(138)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 임의의 자연어 구문들에 수동으로 주석을 달 필요를 제거한다. 상기 결과적인 주석이 달린 자연어 구문들(428, 430, 432)이 도 4a에 도시되어 있다. 도 4a가 상기 예제들을 간략화하기 위한 목적들을 위해 주석이 달린 자연어 구문들의 3개의 리스트들 각각에서 오직 4개의 주석이 달린 자연어 구문들만 도시하고 있을 지라도, 상기 임의의 개수의 주석이 달린 자연어 구문들의 리스트들은 임의의 개수의 주석이 달린 자연어 구문들을 포함할 수 있다.
상기 주석이 달린 자연어 구문들은 상기 NLU 엔진(130)을 효율적으로 트레이닝시키는 데 사용될 수 있다. 상기 장치는 상기 주석이 달린 자연어 구문들을 사용하여 NLU 엔진이 사용자로부터의 자연어 구문을 이해하도록 트레이닝시킬 수 있고, 따라서 응답을 가능하게 할 수 있다. 예를 들어, 상기 트레이너(126)는 상기 주석이 달린 자연어 구문들(428-432)을 사용하여 상기 NLU 엔진(130)을 트레이닝시키고, 상기 자연어 서버(106)는 상기 개인 휴대 정보 단말기(128)의 카피(copy)를 스마트 폰(102)에 제공한다. 상기 예제를 계속하면, 사람은 상기 스마트 폰(102)을 사용하여 상기 구문 "order delivery of a pizza"를 말하고, 상기 NLU 엔진(130)은 상기 구문을 이해하며, 이는 상기 개인 휴대 정보 단말기(128)가 피자 사이즈 및 토핑들, 상기 피자를 만드는 레스토랑, 배달 시간 및 위치와 같은 세부 사항들에 대해 상기 사람에게 프롬프트하는 것을 도와준다. 상기 개인 휴대 정보 단말기(128)는 상기 트레이너(126)가 상기 주석이 달린 자연어 구문들(428-432)을 사용하여 상기 NLU 엔진(130)을 트레이닝했었기 때문에, 상기 사람의 피자 배달 주문을 정확하게 완료한다.
도 4b는 도 4a에 도시되어 있는 상기 주석이 달린 자연어 구문들(422, 424, 426)과 도 3b에 도시되어 있는 상기 주석이 달린 자연어 구문들(334)의 비교를 도시하고 있다. 상기 오거나이저(132)가 상기 정렬된 리스트들(322, 324, 326)을 병합하고, 그리고 나서 상기 병합된 리스트(328)를 정렬하는 것에 기반하여 상기 주석이 달린 자연어 구문들을 생성하였기 때문에, 상기 주석이 달린 자연어 구문들(334)은 상기 정렬된 리스트들(322, 324, 326)의 적합하게-가중된 조합이다. 예를 들어, 상기 정렬된 리스트들(322, 324, 326) 대부분은 상기 동사 "find"의 가장 자주 발생하는 패러프레이즈로서 "order delivery of"를 리스트하지 않지만, 상기 주석이 달린 자연어 구문들(334)은 "order delivery of"를 상기 동사 "find"의 가장 자주 발생하는 패러프레이즈로 리스트한다. "order delivery of"가 상기 구문 "find @food"에 대한 상기 동사 "find"의 가장 자주 발생하는 패러프레이즈이기 때문에, 상기 주석이 달린 자연어 구문들(334)은 상기 패러프레이즈 "order delivery of"에 가장 높은 순서를 할당하고, 이는 상기 동사 "find"의 가장 자주 발생하는 패러프레이즈에 대해 상기 NLU 엔진(130)을 효율적으로 훈련시키는 것을 초래할 것이다. 이와는 대조적으로, 상기 정렬된 리스트들(416, 418, 420)로부터 생성된 상기 주석이 달린 자연어 구문들(422, 424, 426) 대부분은 상기 패러프레이즈 "order delivery of"에 가장 높은 순서를 할당하지는 않는다. 이는 상기 동사 "find"의 가장 자주 발생하는 패러프레이즈에 대해 상기 NLU 엔진(130)을 덜 효율적으로 트레이닝하는 것을 초래할 것이다.
또한, 상기 주석이 달린 자연어 구문들(422, 424, 426)의 리스트들은 상기 패러프레이즈 "order delivery of"가 "an apple"과 자주 조합되지 않았다는 것을 지시하기 때문에, 상기 주석이 달린 자연어 구문들(422, 424, 426)의 리스트들에 대한 트레이닝은 상기 NLU 엔진(130)을 상기 자연어 구문 "order delivery of an apple"에 대해 효율적으로 트레이닝하는 것을 초래하지 않을 것이다. 하지만, 상기 NLU 엔진(130)은, 동사의 특정 패러프레이즈가 태그된 오브젝트의 특정 인스턴스와 조합되어 자주 발생하지 않았을지라도, 상기 구문의 동사의 가장 자주 발생하는 패러프레이즈들 및 상기 구문의 태그된 오브젝트의 가장 자주 발생하는 인스턴스들에서 효율적으로 트레이닝된다. 예를 들어, "order delivery of an apple"를 사용하여 상기 NLU 엔진(130)을 트레이닝하는 것이 효율적이며, 이는 그와 같은 트레이닝이 상기 NLU 엔진(130)이 자주 발생하는 패러프레이즈 "order delivery of"를 이해하고, 별도로 자주 발생하는 인스턴스 "apple"를 이해하는 것을 가능하게 하기 때문이다. 그 결과, 상기 NLU 엔진(130)은 드물게 발생하는 조합들에 대해서도 패러프레이즈들 및 인스턴스들의 조합들을 이해할 수 있다. 따라서, 상기 주석이 달린 자연어 구문들(422, 424, 426)를 사용하는 대신에 상기 주석이 달린 자연어 구문들(334)을 사용하는 것이 상기 NLU 엔진(130)을 트레이닝하는데 보다 효율적이다.
상기 자연어 구문들의 정렬된 리스트들에 주석을 달아 상기 주석이 달린 자연어 구문들(422, 424, 426)을 생성하기 하는 상기 구문들의 신속한 생성은 상기 향상된 구문들의 생성보다 구문들의 보다 효율적인 생성이 되며, 이는 상기 자연어 구문들의 정렬된 리스트들에 기반하여 상기 자연어 구문들의 향상된 집합을 생성하고, 그리고 나서 상기 자연어 구문들의 향상된 집합에 주석을 달아 상기 주석이 달린 자연어 구문들(334)을 생성하는 것이다. 상기에서 나타낸 바와 같이, 상기 자연어 구문들(416, 418, 420)의 정렬된 리스트들의 생성 후에, 상기 구문들의 신속한 생성은 태그된 자연어 구문들의 리스트들을 생성하기 위해 태그된 오브젝트를 사용하여 태그된 오브젝트의 어떤 인스턴스도 대체하지 않고, 또한 태그된 자연어 구문들의 병합된 리스트를 생성하기 위해 어떤 태그된 자연어 구문들도 병합하지 않는다.
또한, 상기 구문들의 신속한 생성은 태그된 자연어 구문들의 정렬된 리스트를 생성하기 위해 태그된 자연어 구문들의 어떤 병합된 리스트도 정렬하지 않으며, 또한 자연어 구문들의 향상된 집합을 생성하기 위해 태그된 오브젝트의 인스턴스들을 사용하여 태그된 자연어 구문들의 어떤 정렬된 리스트도 이니시에이트하지 않는다. 결과적으로, 상기 주석이 달린 자연어 구문들의 신속한 생성은 자연어 구문들의 향상된 집합을 생성하는 것에 기반하는 상기 주석이 달린 자연어 구문들의 생성에 비해 구문들의 보다 효율적인 생성이 된다. 하지만, 상기에서 설명한 바와 같이, 상기 NLU 엔진(130)을 트레이닝시키는 것은 상기 주석이 달린 자연어 구문들(422, 424, 426)의 신속한 생성을 사용하는 것보다 상기 자연어 구문들의 향상된 집합을 생성하는 것에 기반하는 상기 주석이 달린 자연어 구문들(334)의 생성을 사용하는 것이 보다 효율적이다.
상기 주석이 달린 자연어 구문들의 생성은 하나의 태그된 오브젝트 또는 다수의 태그된 오브젝트들에 기반할 수 있고, 상기 주석이 달린 자연어 구문들의 생성은 구문들의 신속한 생성 또는 향상된 구문들의 생성에 기반할 수 있다. 상기 하나의 태그된 오브젝트에 기반하는 향상된 구문들의 생성은 상기에서 도 3a 및 도 3b를 참조하여 설명된다. 상기 하나의 태그된 오브젝트에 기반하는 구문들의 신속한 생성은 또한 도 4a 및 도 4b를 참조하여 상기에서 설명된다. 상기 하나의 태그된 어트리뷰트에 기반하는 향상된 구문들의 생성은 도 5a 내지 도 5e를 참조하여 하기에서 설명된다. 상기 하나의 태그된 어트리뷰트에 기반하는 구문들의 신속한 생성은 도 6a 및 도 6b를 참조하여 하기에서 추가적으로 설명된다.
도 5a 내지 도 5e에 도시되어 있는 상기 구문들(502-536)은 상기 구문들(302-336)이 단일한 태그된 오브젝트에 기반하는 것에 반해 상기 구문들(502-536)이 다수의 태그된 오브젝트들에 기반한다는 것을 제외하고, 도 3a 및 도 3b에 도시되어 있는 상기 구문들(302-336)과 유사하다. 상기 자연어 서버(106)는 적어도 하나의 태그된 오브젝트를 포함하는 구문을 수신한 후에 주석이 달린 자연어 구문들의 생성을 개시한다. 예를 들어, 상기 자연어 서버(106)는 상기 랩톱 컴퓨터(104)의 사용자 인터페이스를 통해 개발자에 의해 입력된 상기 구문 "find @food"(501)를 수신한다.
상기 개발자에 의해 입력된 단일한 태그된 오브젝트에 기반하는 자연어 구문들의 생성을 시작하는 대신에, 상기 장치는 오브젝트를 상기 구문에서 임의의 태그된 오브젝트의 어트리뷰트로 식별할 수 있다. 일 실시 예에서, 상기 인스턴시에이터(134)는 상기 구문 "find @food" (501)로부터 상기 태그된 오브젝트 "@food"를 추출하고, "food"가 상기 지식 베이스(122)의 오브젝트 또는 컨셉트라고 결정하고, 그리고 나서 상기 지식 베이스(122)가 상기 오브젝트 또는 컨셉트 "size" 를 상기 오브젝트 또는 컨셉트 "food"에 대한 어트리뷰트로 식별한다고 결정한다.
오브젝트를 태그된 오브젝트의 어트리뷰트로 식별한, 상기 장치는 상기 오브젝트를 태그된 오브젝트로서 상기 구문에 삽입할 수 있다. 일 실시 예에서, 상기 인스턴시에이터(134)는 상기 오브젝트 "size"를 상기 추가적인 태그된 오브젝트 "@size"로서 상기 구문 "find @food"(501)에 삽입하여 상기 확장된 구문 "find @size @food"(502)의 제1 순열(permutation) 및 상기 확장된 구문 "find @food @size"의 제2 순열로 생성한다. 상기 예제들을 간략화하기 위한 목적들을 위해, 이 실시 예는 도 5a에 도시되어 있지 않다. 상기 인스턴시에이터(134)는 상기 구문에서 상기 태그된 오브젝트 앞 뒤에 상기 추가적인 태그된 오브젝트를 삽입함으로써 2개의 순열들을 생성한다.
보다 복잡한 예제에서, 상기 인스턴시에이터(134)는 상기 지식 베이스(122)가 상기 오브젝트들 "size", "ingredient", "supplier", "delivery time", 및 "delivery location"를 상기 오브젝트 "food"에 대한 어트리뷰트들로서 식별한다고 결정한다. 상기 인스턴시에이터(134)는 그리고 나서 상기 오브젝트들 "size", "ingredient", "supplier", "delivery time", 및 "delivery location"를 상기 추가적인 태그된 오브젝트들 "@size", "@ingredient", "@supplier", "@delivery time", 및 "@delivery location"로서 상기 구문 "find @food"(501)에 삽입하여 상기 확장된 구문 "find @food @size @ingredient @supplier @delivery time @delivery location"의 720개의 순열들을 생성한다.
개발자는 사람들이 처음에 가능한 모든 어트리뷰트들보다 적게 명시할 가능성이 더 높을 수 있다는 상기 개발자의 믿음으로 인해, 상기 확장된 구문에 삽입되는 그와 같은 많은 어트리뷰트들에 기반하여 자연어 구문들을 생성하는 것을 원하지 않을 수 있다. 예를 들어, 대부분의 사람들이 "order delivery of a pizza"이라고 말하고, 상기 피자의 사이즈, 토핑들, 및 배달 구체 사항들에 대해 프롬프트될 확률이 상기 대부분의 사람들이 "order delivery of a large pepperoni pizza from a nearby PizzaMax to my home at 6:00 PM"라고 말할 가능성 보다 높을 수 있다. 따라서, 상기 장치는 상기 태그된 오브젝트의 어트리뷰트들로 식별된 상기 오브젝트들을 출력하고, 상기 식별된 오브젝트들 중 적어도 하나의 선택을 수신하고, 그리고 나서 임의의 선택된 오브젝트들을 추가적인 태그된 오브젝트들로 상기 구문에 삽입할 수 있다. 예를 들어, 상기 인스턴시에이터(134)는 상기 개발자에게 상기 지식 베이스(122)가 상기 오브젝트들 "size", "ingredient", "supplier", "delivery time", 및 "delivery location"를 상기 오브젝트 "food"에 대한 어트리뷰트들로서 식별한다고 알려주고, 상기 오브젝트 "size"에 대한 상기 개발자의 선택을 수신하고, 그리고 나서 상기 오브젝트 "size"를 상기 추가적인 태그된 오브젝트 "@size" 로서 상기 구문 "find @food"(501)에 삽입하여 상기 확장된 구문 "find @size @food"(502)의 제1 순열 및 상기 확장된 구문 find @food @size"의 제2 순열을 생성한다.
다수 개의 식별된 오브젝트들이 선택될 때, 상기 순열들의 개수가 상대적으로 많을 수 있으며, 모든 순열이 자연스러운 자연어 구문을 초래하지는 않을 수 있다. 예를 들어, 개발자가 상기 태그된 오브젝트 "@food"에 대해 상기 어트리뷰트들 "size" 및 "ingredient"를 선택할 경우, 상기 순열들: 1) "find @food @size @ingredient", 2) "find @food @ingredient @size", 3) "find @size @food @ingredient", 4) "find @ingredient @food @size", 5) "find @size @ingredient @food", 및 6) "find @ingredient @size @food"의 개수는 6이다.
다수의 식별된 오브젝트들의 선택이 수신될 경우, 상기 장치는 각 개별적으로 선택된 오브젝트에 기반하여 상기 태그된 오브젝트의 순열들을 출력할 수 있다. 예를 들어, 상기 인스턴시에이터(134)는 상기 오브젝트 "size" 및 상기 오브젝트 "ingredient"의 상기 개발자의 선택을 수신하고, 상기 확장된 구문 "find @size @food"(502)의 제1 순열, 상기 확장된 구문 find @food @size"의 제2 순열, 상기 확장된 구문 "find @ingredient @food"의 제3 순열, 및 상기 확장된 구문 "find @food @ingredient"의 제4 순열을 출력한다. 이들 순열들 각각은 상기 선택된 모든 어트리뷰트들이 아니라, 단일 어트리뷰트만을 포함한다.
각 개별적으로 선택된 오브젝트에 기반하여 상기 태그된 오브젝트의 순열들을 출력한 후, 상기 장치는 각 개별적으로 선택된 오브젝트에 기반하여 임의의 선택된 순열들을 수신할 수 있다. 예를 들어, 상기 인스턴시에이터(134)는 상기 확장된 구문 "find @size @food"(502)의 제1 순열, 상기 확장된 구문 "find @ingredient @food"의 제3 순열, 및 상기 확장된 구문 "find @food @ingredient"의 제4 순열의 상기 개발자의 선택을 수신한다. 이 예제에서, 상기 개발자는 상기 확장된 구문 "find @food @size"의 제2 순열을 선택하지 않았고, 이는 상기 개발자가 그와 같은 순열이 상기 더 자연스러운 구문 "order delivery of a large pizza" 대신에 "order delivery of a pizza that is large"와 같은 자연스럽지 않은 구문들을 생성하는 것을 초래할 것이라고 믿기 때문이다.
다수의 순열들의 선택이 수신될 경우, 상기 장치는 각 선택된 개별적인 어트리뷰트 순열에 기반하여 조합된 어트리뷰트 순열들을 출력할 수 있다. 예를 들어, 상기 인스턴시에이터(134)는 상기 개별적인 어트리뷰트 순열들 "find @size @food"(502), "find @ingredient @food", 및 "find @food @ingredient"의 상기 개발자의 선택을 수신하고, 제1 조합 어트리뷰트 순열 "find @size @ingredient @food", 제2 조합 어트리뷰트 순열 "find @ingredient @size @food", 및 제3 조합 어트리뷰트 순열 "find @size @food @ingredient"를 출력한다.
조합 어트리뷰트 순열들을 출력한 후, 상기 장치는 임의의 선택된 조합 어트리뷰트 순열들을 수신할 수 있다. 예를 들어, 상기 인스턴시에이터(134)는 상기 제1 조합 어트리뷰트 순열 "find @size @ingredient @food", 및 상기 제3 조합 어트리뷰트 순열 "find @size @food @ingredient"의 상기 개발자의 선택을 수신한다. 이 예제에서 상기 개발자는 제2 조합 어트리뷰트 순열 "find @ingredient @size @food"를 선택하지 않았고, 이는 상기 개발자가 그와 같은 순열이 보다 자연스러운 구문들 "order delivery of a large pepperoni pizza", 및 "order delivery of a large pizza with pepperoni" 대신에 "order delivery of a pepperoni large pizza"와 같은, 자연스럽지 않은 구문들을 생성하는 것을 초래할 것이라고 믿기 때문이다.
이 예제가 2개의 선택된 어트리뷰트들에 대한 선택된 순열들을 조합하는 반복 순열 프로세스에 대해 설명하고 있을 지라도, 상기 반복 순열 프로세스는 임의의 개수의 선택된 어트리뷰트들에 대해 선택된 순열들을 조합하는 것을 지속적으로 반복할 수 있다. 예를 들어, 상기 개발자는 상기 태그된 오브젝트 "@food"에 대해 상기 어트리뷰트들 "size", "ingredient", 및 "supplier"를 선택할 수 있고, 상기 인스턴시에이터(134)는 상기 이전에 조합된 어트리뷰트 순열들 "find @size @ingredient @food" 및 "find @size @food @ingredient"의 상기 개발자의 선택을 수신하고, 또한 상기 순열 "find @food @supplier"의 상기 사용자의 선택을 수신한다. 그리고 나서, 상기 인스턴시에이터(134)는 제1 새로운 조합 어트리뷰트 순열 "find @size @ingredient @food @supplier", 제2 새로운 조합 어트리뷰트 순열 "find @size @food @ingredient @supplier", 및 제3 새로운 조합 어트리뷰트 순열 "find @size @food @supplier @ingredient" 를 출력한다. 상기 새로운 조합 어트리뷰트 순열들의 상기 개발자의 선택을 수신한 후, 상기 인스턴시에이터(134)는 상기 개발자의 선택된 어트리뷰트들 모두가 상기 확장된 구문으로 삽입될 때까지 상기 조합 어트리뷰트 순열들을 생성하는 프로세스를 반복한다.
식별된 오브젝트들을 상기 구문에 추가적인 태그된 오브젝트들로 삽입되는 것을 제거하도록 선택하는 것 뿐만 아니라, 상기 개발자가 상기 인스턴시에이터(134)가 식별하지 않은 임의의 보충 오브젝트(supplemental object)들을 상기 구문에 보충 태그된 오브젝트들로서 삽입될, 상기 구문에서 태그된 오브젝트의 어트리뷰트로 식별하지 않는다. 또한, 상기 개발자는 태그된 오브젝트의 임의의 인스턴스를 상기 태그된 오브젝트를 인스턴시에이트하는 것으로부터 보류하도록 선택하고, 또한 태그된 오브젝트를 인스턴시에이트하기 위해 사용되는 보충 인스턴스를 추가하도록 선택할 수 있다.
개발자는 태그된 오브젝트의 어떤 어트리뷰트들이 상기 구문에 삽입되는지를 선택하는 다른 이유들을 가지고 있을 수 있다. 예를 들어, 상기 인스턴시에이터(134)가 상기 개발자에게 상기 지식 베이스(122)가 상기 오브젝트들 "size", "ingredient", "supplier", "delivery time", "delivery location", "reservation location", "reservation time", 및 "number of people for the reservation"을 상기 오브젝트 "food"에 대한 어트리뷰트들로 식별한다고 알려줄 경우, 상기 개발자는 배달 어트리뷰트들이 예약 어트리뷰트들과 호환 불가능함을 인식할 수 있다. 따라서, 상기 개발자는 상기 구문을 확장하기 위해 상기 배달 어트리뷰트들 또는 예약 어트리뷰트들을 선택할 수 있다.
상기 개발자는 또한 다수의 태그된 오브젝트들을 포함하는 구문을 입력할 수도 있다. 예를 들어, 상기 자연어 서버(106)는 상기 랩톱 컴퓨터(104)의 사용자 인터페이스를 통해 개발자에 의해 입력된 상기 구문 "find @size @food"(502)을 수신한다. 간략화 목적들을 위해 상기 생성된 구문들(504-536)이 2개의 태그된 오브젝트들을 포함하는 구문에 기반하고 있을 지라도, 상기 장치는 임의의 개수의 태그된 오브젝트들을 포함하는 구문에 기반하여 상기 구문들(504-536)을 생성할 수 있다.
도 5a 내지 도 5e에 도시되어 있는 상기 자연어 구문들과 같은, 자연어 구문들을 생성하는 것은 구문의 다수의 태그된 오브젝트들을 상기 다수의 태그된 오브젝트들의 자연어 인스턴스들로 대체함으로써 시작될 수 있다. 상기 장치는 상기 구문에서 각 태그된 오브젝트의 인스턴시에이션들로 인스턴시에이트된 구문들을 생성한다.
일 실시 예에서, 상기 인스턴시에이터(134)는 상기 구문 "find @size @food"(502)에서 "size" 및 "food"를 상기 지식 베이스(122)에서의 컨셉트들로 식별하고, 그리고 나서 상기 지식 데이터베이스(122)에서 "large", "medium", "small", "pizza", "taco", 및 "apple"를 포함하는 "size"의 인스턴스들과 "food"의 인스턴스들을 식별한다. 상기 예제를 계속하면, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "find @size @food"(502)를 인스턴시에이트하여 "find large pizza", "find medium pizza", "find small pizza" (504), "find large taco", "find medium taco", "find small taco" (506), 및 "find large apple", "find medium apple", "find small apple"(508)과 같은 인스턴시에이트된 구문들을 생성한다.
일 실시 예에서, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "find @food @size"를 인스턴시에이트하여 "find pizza large", "find pizza medium", "find pizza small", "find taco large", "find taco medium", "find taco small", "find apple large", "find apple medium", 및 "find apple small"와 같은, 인스턴시에이트된 구문들을 생성한다. 다중 어트리뷰트 예제에서, 상기 인스턴시에이터(134)는 "size" 및 "ingredient"의 인스턴스들을 사용하여 상기 구문들 "find @size @food @ingredient" 및 "find @size @ingredient @food"를 인스턴시에이트하여 "find large pepperoni pizza", "find medium bacon pizza", "find small pepperoni pizza", "find large pizza with bacon", "find medium pizza with pepperoni", 및 "find small pizza with bacon"와 같은 인스턴시에이트된 구문들을 생성한다.
다수의 태그된 오브젝트들이 동일한 인스턴스들을 공유할 경우, 상기 인스턴시에이터(134)는 이러한 태그된 오브젝트들 중 어느 하나를 인스턴시에이트 하기 위해 이러한 공유된 인스턴스들을 사용하지 않는다. 예를 들어, 상기 구문이 "find @food @ ingredient"이고, 상기 인스턴시에이터(134)가 (상기 음식 "pizza"에 대해서) "sausage"를 상기 오브젝트 "food"의 자주 발생하는 인스턴스로 식별하고, "sausage"를 상기 오브젝트 "ingredient"의 자주 발생하는 인스턴스로 식별할 경우, 상기 인스턴시에이터(134)는 상기 인스턴스 "sausage"를 사용하여 상기 태그된 오브젝트 "@food" 또는 상기 태그된 오브젝트 "@ingredient"를 인스턴시에이트하지 않는다. 상기 인스턴스 "sausage"가 상기 NLU 엔진(130)을 트레이닝시키는데 사용되는 상기 주석이 달린 자연어 구문들을 생성하기 위해 사용되지 않을 지라도, 상기 NLU 엔진(130)이 충분히 트레이닝된 후에, 상기 NLU 엔진(130)은 상기 어휘 단어 "sausage"에 억세스할 수 있을 것이고, 따라서 사용자들이 말하는 "order delivery of a smoked sausage" 및 "order delivery of a pizza with pepperoni and sausage"를 이해할 수 있다.
도 5a는 상기 예제들을 간략화시키기 위한 목적들을 위해서, 9개의 인스턴시에이트된 구문들 "find large pizza", "find medium pizza", "find small pizza" (504), "find large taco", "find medium taco", "find small taco"(506), 및 "find large apple", "find medium apple", "find small apple" (508)만을 도시하고 있지만, 상기 인스턴시에이터(134)는 임의의 개수의 인스턴시에이트된 구문들을 생성할 수 있다. 상기 인스턴시에이터(134)는 "ingredients"의 가장 자주 식별되는 30개의 인스턴스들 및 "food"의 가장 자주 식별되는 30개의 인스턴스들만 사용하는 것과 같이 인스턴스들의 개수를 제한할 수 있으며, 이는 결과적으로 900개의 인스턴시에이트된 구문들과 같이 인스턴시에이트된 구문들의 개수를 이러한 인스턴스들의 조합들의 개수로 제한할 것이다.
상기 구문의 다수의 태그 오브젝트들을 상기 다수의 태그된 오브젝트들의 인스턴스들로 교체한 후, 상기 구문의 동사는 상기 동사의 자연어 패러프레이즈들과 교체될 수 있다. 상기 인스턴시에이트된 구문들의 생성 후에, 상기 장치는 상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈들로 자연어 구문들의 리스트들을 생성한다.
예를 들어, 상기 패러프레이즈 생성기(136)는 "find large pizza", "find medium pizza", "find small pizza" (504)"를 상기 자연어 pizza 구문들(510): "order delivery of a large pizza", "order delivery of a medium pizza", "order delivery of a small pizza", "where is a restaurant that serves large pizzas", "where is a restaurant that serves medium pizzas", "where is a restaurant that serves small pizzas", 등의 리스트로 패러프레이즈한다.
다른 예제에서, 상기 패러프레이즈 생성기(136)는 "find pizza large", "find pizza medium", "find pizza small"를 상기 food 및 size 간의 단어 결합자(joiner word)들 "that is"의 사용을 통해 "order delivery of a pizza that is large", "order delivery of a pizza that is medium", "order delivery of a pizza that is small"를 포함하는 자연어 pizza 구문들의 리스트로서 패러프레이즈한다. 상기 패러프레이즈 생성기(136)는 다른 단어 결합자들을 사용하여 "order delivery of a large pizza with pepperoni" 및 "order delivery of a spicy taco, hold the jalapenos"와 같은 태그된 오브젝트들의 인스턴스들을 문법적으로 연결할 수 있다.
다른 예제들에서, 상기 패러프레이즈 생성기(136)는 "find large taco", "find medium taco", "find small taco"(506)를 상기 자연어 taco 구문들(512)의 리스트로 패러프레이즈하고, "find large apple", "find medium apple", "find small apple" (508)를 상기 자연어 apple 구문들(514)의 리스트로 패러프레이즈한다. 다중 어트리뷰트 예제에서, 상기 패러프레이즈 생성기(136)는 "find large pepperoni pizza"를 "order delivery of a large pepperoni pizza", "where is a restaurant that serves large pepperoni pizzas", "which store has a sale on large pepperoni pizzas", 등으로 패러프레이즈한다.
도 5a는 상기 예제들을 간략화시키기 위한 목적들을 위해서, 3개의 인스턴시에이트된 페러프레이즈들, "order delivery of", "where is a restaurant that serves", 및 "which store has a sale on"만을 상기 단어 "find"의 패러프레이즈들로서 도시하고 있다. 하지만, 상기 패러프레이즈 생성기(136)는 임의의 개수의 패러프레이즈들을 생성할 수 있다. 상기 패러프레이즈 생성기(136)는 "find"의 가장 일반적인 30개의 패러프레이즈들만을 사용하는 것과 같이, 패러프레이즈들의 개수를 제한할 수 있다. 이는 결과적으로 자연어 구문들의 각 리스트에서의 개수를 패러프레이즈들의 개수, 즉 30개의 자연어 구문들로 제한할 수 있다.
각 자연어 구문들의 발생들은 높은 순서가 자주 발생하는 자연어 구문들에 할당되고 낮은 순서가 드물게 발생하는 자연어 구문들에 할당되도록 계산된다. 상기 장치는 각 자연어 구문의 발생들에 기반하여 자연어 구문들의 각 리스트에서 자연어 구문들을 정렬함으로써 자연어 구문들의 정렬된 리스트들을 생성한다. 예를 들어, 상기 오거나이저(132)는 이들 자연어 구문들이 상기 자연어 모델(114)에서 얼마나 자주 발생되는지에 기반하여 상기 자연어 pizza 구문들(516)의 리스트를 "1. order delivery of a large pizza", "2. order delivery of a medium pizza", "3. where is a restaurant that serves large pizzas", "4. order delivery of a small pizza", "5. where is a restaurant that serves medium pizzas", "6. which store has a sale on large pizzas", 등과 같이 정렬한다. 다른 예제들에서, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 각 자연어 구문의 발생에 기반하여 상기 자연어 taco 구문들(518)의 리스트 및 상기 자연어 apple 구문들(520)의 리스트를 정렬한다. 유사하게, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 각 자연어 구문의 발생에 기반하여 다수의 어트리뷰트 pizza 구문들의 리스트를 정렬할 수 있다.
상기 확장된 구문 "find @size @ food"의 제1 순열의 패러프레이즈들은 "1. order delivery of a large pizza", "2. order delivery of a medium pizza", 및 "4. order delivery of a small pizza"와 같은, 자주 발생하는 자연어 구문들을 초래한다. 대조적으로, 상기 확장된 구문 "find @ food @size"의 제2 순열의 패러프레이즈들은 "order delivery of a pizza that is large", "order delivery of a pizza that is medium", 및 "order delivery of a pizza that is small"와 같은, 거의 발생하지 않는 자연어 구문들을 초래한다. 결과적으로, 상기 패러프레이즈 생성기(136)가 상기 구문의 임의의 순열들을 상기 자연어 모델(114)에서 거의 발생하지 않는 비문법적인 또는 부자연스러운 구문들로 패러프레이즈할 때, 상기 오거나이저(132)는 그러한 구문들을 상기 정렬된 리스트들에서 매우 낮게 정렬하고, 따라서 이런 자주 발생하지 않는 구문들에 대해서는 낮은 우선 순위 또는 우선 순위가 없는 것을 초래한다. 결과적으로, 상기 오거나이저(132)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 상기 구문의 부자연스럽거나 또는 문법적으로 부정확한 순열들로부터 생성된 임의의 부자연스러운 또는 문법적으로 부정확한 자연어 구문들을 수동으로 삭제할 필요를 제거한다.
도 5a가 상기 예제들을 간략화시키기 위한 목적들을 위해서, 각 정렬된 리스트에 대해서 9개의 가장 자주 발생하는 구문들만을 도시하고 있을 지라도, 각 정렬된 리스트는 임의의 개수의 가장 자주 발생하는 구문들을 포함할 수 있다. 상기 오거나이저(132)는 각 리스트에서 가장 자주 발생하는 30개의 구문들만을 사용하는 것과 같이 가장 자주 발생하는 구문들의 개수를 제한할 수 있다.
이 시점에서 자연어 구문들을 생성할 경우, 상기 자연어 구문들의 정렬된 리스트들에 주석이 달릴 수 있거나, 또는 상기 자연어 구문들의 정렬된 리스트들에 기반하여 자연어 구문들의 향상된 집합이 생성될 수 있고, 따라서 상기 향상된 집합은 그 후에 주석이 달릴 수 있다. 상기 자연어 구문들의 정렬된 리스트들에 주석을 다는 것이 하기에서 도 6a 및 도 6b를 참조하여 추가적으로 설명된다. 도 5b 내지 도 5e는 상기 자연어 구문들의 정렬된 리스트들에 기반하여 생성되는 상기 자연어 구문들의 향상된 집합 및 상기 자연어 구문들의 향상된 집합의 주석을 도시하고 있다.
상기 자연어 구문들의 향상된 집합을 생성하는 것은 상기 자연어 구문들의 일반화된 버전들이 상기 다른 정렬된 리스트들로부터 병합될 수 있도록 상기 정렬된 리스트들에서 상기 다수의 태그된 오브젝트들의 인스턴스들을 상기 다수의 태그된 오브젝트들과 교체함으로써 시작될 수 있다. 상기 장치는 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들에서 각 태그된 오브젝트의 인스턴스들을 대체함으로써 태그된 자연어 구문들의 정렬된 리스트들을 생성한다.
예를 들어, 상기 인스턴시에이터(134)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@size"가 이전에 상기 인스턴스 "large"로 대체되었다고 결정하고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "pizza"로 대체되었다고 결정하고, 상기 자연어 pizza 구문들의 정렬된 리스트에서 상기 태그된 오브젝트 "@size"를 사용하여 "large"의 각 인스턴스를 대체하고 상기 태그된 오브젝트 "@food"를 사용하여 "pizza"의 각 인스턴스를 대체한다. 상기 대체들은 태그된 자연어 구문들(522): "1. order delivery of @size @food", "2. order delivery of @size @food", "3. where is a restaurant that serves @size @food", "4. order delivery of @size @food", "5. where is a restaurant that serves @size @food", "6. which store has a sale on @size @food", "7. where is a restaurant that serves @size @food", "8. which store has a sale on @size @food", "9. which store has a sale on @size @food", 등의 정렬된 리스트를 생성한다. 다른 예제들에서, 상기 인스턴시에이터(134)는 상기 태그된 자연어 구문들(524)의 정렬된 리스트 및 상기 태그된 자연어 구문들(526)의 정렬된 리스트를 생성한다. 유사하게, 상기 인스턴시에이터(134)는 태그된 다수의 어트리뷰트 구문들의 정렬된 리스트를 생성할 수 있다.
도 5b가 상기 예제들을 간략화시키기 위한 목적들을 위해서, 태그된 자연어 구문들의 각 정렬된 리스트에 대해서 9개의 태그된 자연어 구문들만을 도시하고 있을 지라도, 태그된 자연어 구문들의 각 정렬된 리스트는 임의의 개수의 태그된 자연어 구문들을 포함할 수 있다. 상기 오거나이저(132)가 각 정렬된 리스트에서 가장 자주 발생하는 30 개의 구문들만을 사용하는 것과 같이, 태그된 자연어 구문들의 각 정렬된 리스트에서 가장 자주 발생하는 구문들의 개수를 제한할 경우, 태그된 자연어 구문들의 각 정렬된 리스트에서 태그된 자연어 구문들의 개수는 동일한 개수로 제한될 것이다.
상기 자연어 구문들의 정렬된 리스트들이 태그된 자연어 구문들로 변환되면, 매치되는 이러한 태그된 자연어 구문들 중 일부가 상기 다른 정렬된 리스트들로부터 병합된다. 상기 장치는 서로 매치되는 해당하는 태그된 자연어 구문들을 병합함으로써 태그된 자연어 구문들의 병합된 리스트를 생성한다.
예를 들어, 상기 오거나이저(132)는 상기 정렬된 리스트(522)로부터의 "1. order delivery of @size @food", "2. order delivery of @size @food", 및 "4. order delivery of @size @food"를 상기 정렬된 리스트(524)로부터의 "4. order delivery of @size @food", "5. order delivery of @size @food", 및 "6. order delivery of @size @food", 및 상기 정렬된 리스트(526)로부터의 "7. order delivery of @size @food", "8. order delivery of @size @food", 및 "9. order delivery of @size @food"와 병합하여 상기 병합된 태그된 자연어 구문 "order delivery of @size @food" 을 생성한다.
다른 예제에서, 상기 오거나이저(132)는 상기 병합된 태그된 자연어 구문 "where is a restaurant that serves @size @food" 및 상기 병합된 태그된 자연어 구문 "which store has a sale on @size @food"를 생성한다. 상기 태그된 자연어 구문들(528)의 결과적인 병합된 리스트는 "order delivery of @size @food", "where is a restaurant that serves @size @food", "which store has a sale on @size @food", "where is a store that sells @size @food", 등이다.
도 5b가 상기 예제들을 간략화시키기 위한 목적들을 위해서, 상기 태그된 자연어 구문들의 병합된 리스트에서 4개의 태그된 자연어 구문들만을 도시하고 있을 지라도, 상기 태그된 자연어 구문들의 병합된 리스트는 임의의 개수의 태그된 자연어 구문들을 포함할 수 있다. 유사하게, 상기 태그된 자연어 구문들의 결과적인 병합된 리스트는 다수의 어트리뷰트들을 포함할 수 있다.
상기 태그된 자연어 구문들은 그들의 자연어 구문들이 얼마나 자주 발생하는지에 기반하여, 상기 태그된 자연어 구문들의 병합된 리스트 내에서 정렬된다. 상기 장치는 각 해당하는 자연어 구문의 발생들에 기반하여 상기 태그된 자연어 구문들의 병합된 리스트를 정렬함으로써 태그된 자연어 구문들의 정렬된 리스트를 생성한다. 예를 들어, 상기 오거나이저(132)는 "order delivery of a large pizza"의 29번의 발생들, "order delivery of a medium pizza"의 23번의 발생들, "order delivery of a small pizza"의 19번의 발생들, "order delivery of a large taco"의 17번의 발생들, "order delivery of a small taco"의 13번의 발생들, 및 order delivery of a medium taco" 의 11번의 발생들을 카운트한다. 상기 예제를 계속하면, 상기 오거나이저(132)는 상기 자연어 모델(122)에서 "order delivery of a small apple"의 7번의 발생들, "order delivery of a large apple"의 5번의 발생들, 및 "order delivery of a medium apple"의 3번의 발생들을 카운트하고, 따라서 상기 병합된 구문 "order delivery of @size @food" 에 대한 총 카운트는 127이다.
다른 예제들에서, 상기 오거나이저(132)는 상기 병합된 구문 "where is a restaurant that serves @size @food"에 대한 총 113의 카운트와, 상기 병합된 구문 "which store has a sale on @size @food"에 대한 총 109의 카운트와, 상기 병합된 구문 "where is a store that sells @size @food"에 대한 총 31의 카운트를 계산한다. 상기 태그된 자연어 구문들(530)의 결과적인 정렬된 리스트는 "1. order delivery of @size @food" (127의 카운트에 기반하여), "2. where is a restaurant that serves @size @food" (113의 카운트에 기반하여), "3. which store has a sale on @size @food" (109의 카운트에 기반하여), "4. where is a store that sells @size @food" (31의 카운트에 기반하여), 등이다.
도 5b가 상기 예제들을 간략화시키기 위한 목적들을 위해서, 상기 태그된 자연어 구문들의 정렬된 리스트에서 4개의 태그된 자연어 구문들만을 도시하고 있을 지라도, 상기 태그된 자연어 구문들의 정렬된 리스트는 임의의 개수의 태그된 자연어 구문들을 포함할 수 있다. 유사하게, 상기 오거나이저(132)는 다수의 어트리뷰트들을 포함하는 태그된 자연어 구문들의 정렬된 리스트를 생성할 수 있다.
상기 태그된 자연어 구문들의 정렬된 리스트는 주석이 달릴 자연어 구문들의 향상된 집합을 생성하기 위해 인스턴시에이트된다. 상기 장치는 상기 태그된 자연어 구문들의 정렬된 리스트에서 각 태그된 오브젝트의 인스턴시에이션들로 상기 자연어 구문들의 향상된 집합을 생성한다. 예를 들어, 상기 인스턴시에이터(134)는 상기 리스트(530)에서 "1. order delivery of @size @food"를 "order delivery of a large pizza", "order delivery of a medium pizza", "order delivery of a small pizza", "order delivery of a large taco", "order delivery of a medium taco", "order delivery of a small taco", "order delivery of a large apple", "order delivery of a medium apple", 및 "order delivery of a small apple"로 인스턴시에이트한다.
다른 예제들에서, 상기 인스턴시에이터(134)는 상기 리스트(530)에서 "2. which store has a sale on @size @food", "3. where is a restaurant that serves @size @food", 및 "4. where is a store that sells @size @food"를 인스턴시에이트한다. 상기 자연어 구문들(532)의 결과적인 향상된 집합이 도 5c에 도시되어 있다. 도 5c가 상기 예제들을 간략화시키기 위한 목적들을 위해서, 상기 자연어 구문들의 향상된 집합에서 오직 36개의 자연어 구문들만을 도시하고 있을 지라도, 상기 자연어 구문들의 향상된 집합은 임의의 개수의 자연어 구문들을 포함할 수 있다. 유사하게, 상기 인스턴시에이터(134)는 각각이 다수의 어트리뷰트들을 포함하는 태그된 자연어 구문들을 인스턴시에이트하여 각각이 다수의 어트리뷰트들을 포함하는 자연어 구문들의 향상된 집합을 생성할 수 있다.
상기 자연어 구문들의 향상된 집합에는 상기 NLU 엔진(130)을 트레이닝시키기 위해 주석이 달릴 수 있다. 상기 장치는 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 기반하는 상기 자연어 구문들의 향상된 집합에 주석을 달음으로써 주석이 달린 자연어 구문들을 생성할 수 있다. 예를 들어, 상기 주석자(138)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@size"가 이전에 상기 인스턴스 "large"와 교체되었다고 결정하고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "pizza"와 교체되었다고 결정하고, 상기 자연어 구문들의 향상된 집합에서 상기 태그된 오브젝트 "@size"를 사용하여 "large"에 주석을 달고 상기 태그된 오브젝트 "@food"를 사용하여 "pizza"에 주석을 달고, 따라서 주석이 달린 자연어 구문 "order delivery of a large (@size) pizza (@food)"를 생성할 수 있다. 결과적으로, 상기 주석자(138)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 임의의 자연어 구문들에 수동으로 주석을 달 필요를 제거한다. 상기 주석이 달린 자연어 구문들(534)의 결과적인 향상된 집합이 도 5d에 도시되어 있다.
도 5d가 상기 예제들을 간략화시키기 위한 목적들을 위해서, 상기 자연어 구문들의 향상된 집합에서 오직 36개의 주석이 달린 자연어 구문들만을 도시하고 있을 지라도, 상기 자연어 구문들의 향상된 집합은 임의의 개수의 주석이 달린 자연어 구문들을 포함할 수 있다. 유사하게, 상기 향상된 집합에서 상기 주석이 달린 자연어 구문들 각각은 다수의 어트리뷰트들을 포함할 수 있다.
상기 자연어 구문들에서 각 태그된 오브젝트의 인스턴스들에 주석을 단 후, 상기 자연어 구문들에서 상기 패러프레이즈된 동사들에는 상기 패러프레이즈된 동사로 선택적으로 주석이 달린다. 대안적으로, 다른 프로세스는 상기 구문의 동사를 상기 동사의 자연어 패러프레이즈들로 대체하고, 이는 다른 시간에 발생한다. 상기 장치는 상기 구문에서 상기 동사를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 기반하는 상기 자연어 구문들의 향상된 집합에 주석을 달 수 있다. 예를 들어, 상기 주석자(138)는 패러프레이징 기록(paraphrasing record)들을 참조하고, 상기 동사 "find"가 이전에 상기 인스턴스 "order delivery of"로 대체되었다고 결정하고, 상기 태그된 동사 "@find"를 사용하여 상기 자연어 구문들의 향상된 집합에서 "order delivery of"에 주석을 달고, 따라서 상기 주석이 달린 자연어 구문 "order delivery of (@find) a large (@size) pizza (@food)"을 생성할 수 있다.
결과적으로, 상기 주석자(138)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 임의의 자연어 구문들에 수동으로 주석을 달 필요를 제거한다. 상기 결과적인 주석이 달린 자연어 구문들(536)이 도 5e에 도시되어 있다. 도 5e가 상기 예제들을 간략화시키기 위한 목적들을 위해서, 상기 자연어 구문들의 향상된 집합에서 오직 36개의 주석이 달린 자연어 구문들만을 도시하고 있을 지라도, 상기 자연어 구문들의 향상된 집합은 임의의 개수의 주석이 달린 자연어 구문들을 포함할 수 있다. 유사하게, 상기 향상된 집합에서 상기 주석이 달린 자연어 구문들 각각은 다수의 어트리뷰트들을 포함할 수 있다.
상기 주석이 달린 자연어 구문들은 상기 NLU 엔진(130)을 트레이닝시키기 위해 사용될 수 있다. 상기 장치는 상기 주석이 달린 자연어 구문들을 사용하여 NLU 엔진이 사용자로부터 자연어 구문을 이해하도록 트레이닝시킬 수 있고, 따라서 응답을 가능하게 할 수 있다. 예를 들어, 상기 트레이너(126)는 상기 주석이 달린 자연어 구문들(536)을 사용하여 상기 NLU 엔진(130)을 트레이닝시키고, 상기 자연어 서버(106)는 상기 스마트 폰(102)으로 상기 개인 휴대 정보 단말기(128)의 카피를 제공한다. 상기 예제를 계속하면, 사람은 상기 스마트 폰(102)을 사용하여 상기 구문 "order delivery of a large pizza"를 말하고, 상기 NLU 엔진(130)은 상기 구문을 이해한다. 이는 상기 개인 휴대 정보 단말기(128)가 상기 사람에게 피자 토핑들, 피자를 만드는 레스토랑, 배달 시간, 및 위치와 같은 구체적인 사항들에 대해 프롬프트하는 것을 돕는다. 상기 개인 휴대 정보 단말기(128)는 상기 트레이너(126)가 상기 주석이 달린 자연어 구문들(536)을 사용하여 상기 NLU 엔진(130)을 트레이닝시켰었기 때문에 상기 사용자의 피자 배달 주문을 정확하게 완료한다.
도 5a 내지 도 5e는 상기 자연어 구문들의 정렬된 리스트에 기반하는 자연어 구문들의 향상된 집합 및 상기 자연어 구문들의 향상된 집합의 주석을 도시하고 있다. 이와 대조적으로, 도 6a 및 도 6b는 상기 자연어 구문들의 정렬된 리스트들 및 상기 자연어 구문들의 정렬된 리스트들의 주석을 도시하고 있다. 결과적으로, 도 6a 및 도 6b에 도시되어 있는 상기 구문들(602-626)은 도 5a 및 도 5b에 도시되어 있는 구문들(502-526)과 실질적으로 유사하다.
도 6a 및 도 6b에 도시되어 있는 상기 자연어 구문들과 같은, 자연어 구문들의 생성은 구문의 다수의 태그된 오브젝트들을 상기 다수의 태그된 오브젝트들의 자연어 인스턴스들로 교체함으로써 시작될 수 있다. 상기 장치는 상기 구문에서 각 태그된 오브젝트의 해당하는 인스턴시에이션들로 인스턴시에이트된 구문들을 생성한다. 예를 들어, 상기 인스턴시에이터(134)는 상기 구문 "find @size @food"(602)에서 "size" 및 "food"를 상기 지식 베이스(122)에서 컨셉트들로 식별하고, 그리고 나서 상기 지식 베이스(122)에서, "large", "medium", "small", "pizza", "taco", 및 "apple"을 포함하는, "size"의 인스턴스들 및 "food"의 인스턴스들을 식별한다. 상기 예제를 계속하면, 상기 인스턴시에이터(134)는 이러한 인스턴스들을 사용하여 상기 구문 "find @size @food"(602)을 인스턴시에이트하여 "find large pizza", "find medium pizza", "find small pizza"(604), "find large taco", "find medium taco", "find small taco"(606), 및 "find large apple", "find medium apple", "find small apple"(608)과 같은 인스턴시에이트된 구문들을 생성한다.
상기 인스턴시에이트된 구문들을 생성한 후, 상기 장치는 상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈들로 자연어 구문의 리스트들을 생성한다. 예를 들어, 상기 패러프레이즈 생성기(136)는 "find large pizza", "find medium pizza", "find small pizza" (604)를 상기 자연어 pizza 구문들: "order delivery of a large pizza", "order delivery of a medium pizza", "order delivery of a small pizza", "where is a restaurant that serves large pizzas", "where is a restaurant that serves medium pizzas", "where is a restaurant that serves small pizzas", ... (610)의 리스트로서 패러프레이즈한다. 다른 예제들에서, 상기 패러프레이즈 생성기(136)는 "find large taco", "find medium taco", 및 "find small taco"(606)를 상기 자연어 taco 구문들(612)의 리스트로서 패러프레이즈하고, "find large apple", "find medium apple", 및 "find small apple"(608)를 상기 자연어 apple 구문들(614)의 리스트로서 패러프레이즈한다. 다중 어트리뷰트 예제에서, 상기 패러프레이즈 생성기(136)는 "find large pepperoni pizza"를 "order delivery of a large pepperoni pizza", "where is a restaurant that serves large pepperoni pizzas", "what store has a sale on large pepperoni pizzas", 등으로 패러프레이즈한다.
상기 장치는 각 자연어 구문의 발생들에 기반하여 자연어 구문들의 각 리스트에서 자연어 구문들을 정렬함으로써 자연어 구문들의 정렬된 리스트들을 생성한다. 예를 들어, 상기 오거나이저(132)는 상기 자연어 pizza 구문들(616)의 리스트를 이런 자연어 구문들이 상기 자연어 모델(114)에서 얼마나 자주 발생하는지에 기반하여 "1. order delivery of a large pizza", "2. order delivery of a medium pizza", "3. where is a restaurant that serves large pizzas", "4. order delivery of a small pizza", "5. where is a restaurant that serves medium pizzas", "6. which store has a sale on large pizzas", 등과 같이 정렬한다. 다른 예제들에서, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 각 자연어 구문의 발생에 기반하여 상기 자연어 taco 구문들(618)의 리스트 및 상기 자연어 apple 구문들(620)의 리스트를 정렬한다. 유사하게, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 각 자연어 구문의 발생에 기반하여 다수의 어트리뷰트 pizza 구문들의 리스트를 정렬할 수 있다.
이 포인트에서, 상기 자연어 구문들의 생성 시에, 상기 자연어 구문들의 정렬된 리스트들에 주석이 달릴 수 있거나, 또는 상기 자연어 구문들의 향상된 집합들이 상기 자연어 구문들의 정렬된 리스트들에 기반하여 생성될 수 있고, 따라서 상기 향상된 집합들에 주석이 달릴 수 있다. 상기 자연어 구문들의 정렬된 리스트들에 기반하는 자연어 구문들의 향상된 집합을 생성하는 것 및 상기 자연어 구문들의 향상된 집합들에 주석을 다는 것이 상기에서 도 5a 내지 도 5e를 참조하여 설명된다. 상기 자연어 구문들의 정렬된 리스트들에 주석을 다는 것이 바로 아래에서 도 6a 및 도 6b를 참조하여 설명된다.
상기 자연어 구문들의 정렬된 리스트들에 대해서는 상기 NLU 엔진(130)을 트레이닝시키기 위해 주석이 달릴 수 있다. 상기 장치는 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 주석을 달음으로써 주석이 달린 자연어 구문들을 생성할 수 있다. 예를 들어, 상기 주석자(138)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@size"가 이전에 상기 인스턴스 "large"로 대체되었고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "pizza"로 대체되었다고 결정하고, 상기 자연어 구문들의 정렬된 리스트들에서 상기 태그된 오브젝트 "@size"를 사용하여 "large"의 각 인스턴스에 주석을 달고 상기 태그된 오브젝트 "@food"를 사용하여 "pizza"의 각 인스턴스에 주석을 단다. 상기 주석들은 상기 주석이 달린 자연어 구문 "order delivery of a large (@size) pizza (@food)"을 생성한다. 유사하게, 상기 주석들은 각각이 다수의 어트리뷰트들을 포함하는 주석이 달린 자연어 구문들을 생성할 수 있다.
결과적으로, 상기 주석자(138)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 임의의 자연어 구문들에 수동으로 주석을 다는 것에 대한 필요를 제거한다. 상기 주석이 달린 자연어 구문들(622, 624, 626)의 결과적인 리스트들이 도 6b에 도시되어 있다. 도 6b가 상기 예제들을 간략화하기 위한 목적들을 위해 주석이 달린 자연어 구문들의 3개의 리스트들 각각에서 오직 12개의 주석이 달린 자연어 구문들만 도시하고 있을 지라도, 주석이 달린 자연어 구문들의 임의의 개수의 리스트들은 임의의 개수의 주석이 달린 자연어 구문들을 포함할 수 있다.
상기 자연어 구문들에서 각 태그된 오브젝트의 인스턴스들에 주석을 달은 후에, 상기 자연어 구문들에서 상기 패러프레이즈된 동사들에 대해서는 상기 패러프레이즈된 동사로 선택적으로 주석이 달린다. 대안적으로, 다른 프로세스가 상기 구문의 동사를 상기 동사의 자연어 패러프레이즈들로 대체하고, 이는 다른 시간에 발생된다. 상기 장치는 상기 구문에서 상기 동사를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 주석을 달 수 있다. 예를 들어, 상기 주석자(138)는 패러프레이징 기록들을 참조하고, 상기 동사 "find"가 이전에 상기 인스턴스 "order delivery of"로 대체되었다고 결정하고, 상기 태그된 동사 "@find"를 사용하여 상기 자연어 구문들의 정렬된 리스트들에서 "order delivery of"에 주석을 달고, 따라서 상기 주석이 달린 자연어 구문 "order delivery of (@find) a large (@size) pizza (@food)"를 생성할 수 있다. 유사하게, 상기 주석들은 각각이 다수의 어트리뷰트들을 포함하는 주석이 달린 자연어 구문들을 생성할 수 있다.
결과적으로, 상기 주석자(138)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 임의의 자연어 구문들에 수동으로 주석을 다는 것에 대한 필요를 제거한다. 상기 결과적인 주석이 달린 자연어 구문들(628, 630, 632)이 도 6b에 도시되어 있다. 도 6b가 상기 예제들을 간략화하기 위한 목적들을 위해 주석이 달린 자연어 구문들의 3개의 리스트들 각각에서 오직 12개의 주석이 달린 자연어 구문들만 도시하고 있을 지라도, 주석이 달린 자연어 구문들의 임의의 개수의 리스트들은 임의의 개수의 주석이 달린 자연어 구문들을 포함할 수 있다.
상기 주석이 달린 자연어 구문들은 상기 NLU 엔진(130)을 효율적으로 트레이닝시키기 위해 사용될 수 있다. 상기 장치는 상기 주석이 달린 자연어 구문들을 사용하여 NLU 엔진이 사용자로부터의 자연어 구문을 이해하도록 훈련시키고, 따라서 응답을 가능하게 할 수 있다. 예를 들어, 상기 트레이너(126)는 상기 주석이 달린 자연어 구문들(628-632)을 사용하여 상기 NLU 엔진(130)을 트레이닝시키고, 상기 자연어 서버(106)는 상기 스마트 폰(102)으로 상기 개인 휴대 정보 단말기(128)의 카피를 제공한다. 상기 예제를 계속하면, 사람은 상기 스마트 폰(102)을 사용하여 상기 구문 "order delivery of a large pizza"을 말하고, 상기 NLU 엔진(130)은 상기 구문을 이해하며, 이는 상기 개인 휴대 정보 단말기(128)가 피자 토핑들, 상기 피자를 만드는 레스토랑, 배달 시간 및 위치와 같은 세부 사항들에 대해 상기 사람에게 프롬프트하는 것을 도와준다. 상기 개인 휴대 정보 단말기(128)는 상기 트레이너(126)가 상기 주석이 달린 자연어 구문들(628-632)을 사용하여 상기 NLU 엔진(130)을 트레이닝했었기 때문에, 상기 사람의 피자 배달 주문을 정확하게 완료한다.
도 7a 내지 도 7d에 도시되어 있는 상기 구문들(702-744)은 상기 구문들(502-536)이 단일한 어트리뷰트에 기반하는 것에 반해 상기 구문들(702-744)이 다수의 어트리뷰트들에 기반한다는 것을 제외하고, 도 5a 내지 도 5e에 도시되어 있는 상기 구문들(502-536)과 유사하다. 상기 자연어 서버(106)는 자연어 구문을 수신한 후에 주석이 달린 자연어 구문들의 생성을 개시할 수 있다. 예를 들어, 상기 자연어 서버(106)는 상기 랩톱 컴퓨터(104)의 사용자 인터페이스를 통해 개발자에 의해 입력된 상기 구문 "order a pizza(702)"를 수신한다.
상기 장치는 상기 자연어 구문에서 오브젝트를 식별하고, 상기 자연어 구문에서 상기 식별된 오브젝트의 임의의 어트리뷰트들을 식별할 수 있다. 예를 들어, 상기 자연어 서버(106)는 상기 자연어 구문 "order a pizza" 에서 "pizza"를 상기 지식 베이스(122)에서 상기 오브젝트 또는 컨셉트 "food"로 식별하고, 그리고 나서 상기 지식 베이스(122)가 상기 오브젝트 또는 컨셉트 "size" 및 상기 오브젝트 또는 컨셉트 "ingredient"를 상기 오브젝트 또는 컨셉트 "food"의 어트리뷰트들로 식별한다고 결정한다. 이 간략화된 예제가 상기 자연어 서버(106)가 상기 자연어 구문 "order a pizza" 에서 식별된 상기 오브젝트 "food"에 대한 2개의 어트리뷰트들 "size" 및 "ingredient"만을 식별하는 것을 도시하고 있을 지라도, 상기 자연어 서버(106)는 상기 오브젝트들 "size", "ingredient", "supplier", "delivery time", 및 "delivery location"와 같은, 임의의 개수의 그와 같은 어트리뷰트들을 상기 오브젝트 "food"와 같은, 오브젝트에 대한 어트리뷰트들로 식별할 수 있다.
오브젝트의 어트리뷰트들을 식별한 상기 장치는 각 어트리뷰트를 태그된 어트리뷰트로서 상기 자연어 구문에서 상기 오브젝트 앞뒤에 삽입할 수 있다. 예를 들어, 상기 자연어 서버(106)는 상기 오브젝트 "size"를 상기 태그된 오브젝트 "@size"로서 상기 구문 "order a pizza"(702)에 삽입하여 상기 확장된 구문의 제1 확장 "order a @size pizza" (704) 및 상기 확장된 구문의 제2 확장 "order a pizza @size"(706)를 생성한다. 다른 예제에서, 상기 자연어 서버(106)는 상기 오브젝트 "ingredient"를 상기 태그된 오브젝트 "@ingredient"로서 상기 구문 "order a pizza"(702)에 삽입하여 상기 확장된 구문의 제3 확장 "order a @ingredient pizza"(708) 및 상기 확장된 구문의 제4 확장 "order a pizza @ingredient"(710)을 생성한다. 상기 자연어 서버(106)는 각 태그된 어트리뷰트를 상기 자연어 구문에서 상기 식별된 오브젝트 앞뒤에 삽입함으로써 확장들을 생성한다. 이런 확장들 각각은 상기 식별된 오브젝트들 모두들 대신에, 단일 어트리뷰트만을 포함한다.
각 개별적인 식별된 어트리뷰트에 기반하여 상기 자연어 구문의 확장들을 생성 및 출력한 후, 상기 장치는 각 개별적인 식별된 어트리뷰트에 기반하는 임의의 선택된 확장들을 수신할 수 있다. 예를 들어, 상기 인스턴시에이터(134)는 상기 확장된 구문의 제1 확장 "order a @size pizza"(704), 상기 확장된 구문의 제3 확장 "order a @ingredient pizza" (708), 및 상기 확장된 구문의 제4 확장 "order a pizza @ingredient" (710)의 상기 개발자의 선택을 수신한다. 이 예제에서, 상기 개발자는 상기 확장된 구문의 제2 확장 "order a pizza @size"(706)을 선택하지 않았고, 이는 상기 개발자가 그와 같은 확장이 보다 자연스러운 구문 "order delivery of a large pizza" 대신에, "order delivery of a pizza that is large"와 같은, 부자연스러운 구문들을 생성하는 것을 초래할 것이라고 믿기 때문이다. 다른 예제에서, 상기 인스턴시에이터(134)는 상기 확장된 구문의 모든 확장들(704-710)의 상기 개발자의 선택을 수신한다. 또 다른 예제에서, 상기 인스턴시에이터(134)는 상기 확장된 구문의 모든 확장들(704-710)을 자동으로 수신한다.
도 7a 내지 도 7d에 도시되어 있는 상기 자연어 구문들과 같은, 자연어 구문들을 생성하는 것은 구문의 태그된 어트리뷰트를 상기 태그된 어트리뷰트의 자연어 인스턴스들로 교체함으로써 시작될 수 있다. 상기 장치는 상기 자연어 구문에서 상기 태그된 어트리뷰트의 인스턴시에이션들로 인스턴시에이트된 구문들을 생성한다. 예를 들어, 상기 인스턴시에이터(134)는 상기 구문 "order a @size pizza" (704)에서 "size"를 상기 지식 베이스(122)에서 컨셉트로 식별하고, 그리고 나서 상기 지식 베이스(122)에서 "large", "medium", 및 "small"를 포함하는, "size"의 인스턴스들을 식별한다. 상기 예제를 계속하면, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "order a @size pizza" (704)를 인스턴시에이트하여 "order a large pizza", "order a medium pizza", "order a small pizza" (712)와 같은, 인스턴시에이트된 구문들을 생성한다. 다른 예제에서, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "order a pizza @size" (706) 를 인스턴시에이트하여 "order a pizza that is large", "order a pizza that is medium", "order a pizza that is small" (714)와 같은, 인스턴시에이트된 구문들을 생성한다. 또 다른 예제에서, 상기 인스턴시에이터(134)는 이들 인스턴스들 및 상기 단어 결합자들 "of a ... size"을 사영하여 상기 구문 "order a pizza @size" (706)를 인스턴시에이트하여 "order a pizza of a large size", "order a pizza of a medium size", 및 "order a pizza of a small size"와 같은, 인스턴시에이트된 구문들을 생성한다. 상기 인스턴시에이터(134)는 단어 결합자들을 사용하여, 예를 들어 "pizza"와 상기 size 어트리뷰트간의 상기 단어 결합자들 "that is"의 사용을 통해, 태그된 어트리뷰트의 인스턴스들을 문법적으로 연결할 수 있다. 상기 단어 결합자들은 상기 자연어 모델(114)를 사용하여 생성된다.
또 다른 예제에서, 상기 인스턴시에이터(134)는 상기 구문 "order a @ingredient pizza" (708)에서 "ingredient"를 상기 지식 베이스(122)의 컨셉트로 식별하고, 그리고 나서 "pepperoni", "bacon", 및 "mushrooms"를 포함하는, 상기 지식 베이스(122)에서의 "ingredient"의 인스턴스들을 식별한다. 상기 예제를 계속하면, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "order a @ingredient pizza" (708)을 인스턴시에이트하여 "order a pepperoni pizza", "order a bacon pizza", "order a mushroom pizza" (716)와 같은 인스턴시에이트된 구문들을 생성한다. 추가적인 예제에서, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "order a pizza @ingredient" (710)을 인스턴시에이트하여 "order a pizza with pepperoni", "order a pizza with bacon", 및 "order a pizza with mushrooms" (718)와 같은 인스턴시에이트된 구문들을 생성한다. 상기 인스턴시에이터(134)는 "pizza"와 상기 ingredient 어트리뷰트간의 단어 결합자들 "with"의 사용을 통해서와 같이, 단어 결합자들을 사용하여 태그된 어트리뷰트의 인스턴스들을 문법적으로 연결할 수 있다.
도 7a는 상기 예제들을 간략화하기 위한 목적들을 위해, 오직 12개의 인스턴시에이트된 구문들만을 도시하고 있지만, 상기 인스턴시에이터(134)는 임의의 개수의 인스턴시에이트된 구문들을 생성할 수 있다. 상기 인스턴시에이터(134)는 "ingredients"의 30개의 가장 자주 식별되는 인스턴스들과 "sizes"개의 가장 자주 발생되는 인스턴스들만을 사용하는 것과 같이 인스턴스들의 개수를 제한할 수 있으며, 이는 결과적으로 상기 인스턴시에이트된 구문들의 개수를 900개의 인스턴시에이트된 구문들과 같이, 이들 인스턴스들의 조합들의 개수로 제한할 것이다.
상기 구문의 태그된 어트리뷰트들을 상기 태그된 어트리뷰트들의 인스턴스들로 대체한 후, 상기 인스턴시에이트된 구문들을 조합함으로써 조합된 인스턴시에이트된 구문들이 생성된다. 상기 인스턴시에이트된 구문들의 생성 후에, 상기 장치는 상기 인스턴시에이트된 구문들을 조합한다. 예를 들어, 상기 자연어 서버(106)는 상기 인스턴시에이트된 구문들 "order a large pizza", "order a medium pizza", 및 "order a small pizza" (712)을 "order a pepperoni pizza", "order a bacon pizza", 및 "order a mushroom pizza" (716) 및 "order a pizza with pepperoni", "order a pizza with bacon", 및 "order a pizza with mushrooms" (718)와 조합하여 상기 조합된 인스턴시에이트된 구문들(720)을 생성한다. 이 예제에서, 상기 조합된 인스턴시에이트된 구문들(720)은 "order a large pepperoni pizza" 및 "order a pizza that is small with mushrooms"를 포함한다. 도 7a는 상기 예제들을 간략화하기 위한 목적들을 위해, 오직 36개의 조합된 인스턴시에이트된 구문들만을 도시하고 있지만, 상기 자연어 서버(106)는 임의의 개수의 조합된 인스턴시에이트된 구문들을 생성할 수 있다.
조합된 인스턴시에이트된 구문들을 가지는, 상기 구문들의 동사는 상기 동사의 자연어 패러프레이즈들과 교체될 수 있다. 상기 인스턴시에이트된 구문들의 조합 후에, 상기 장치는 상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈들로 자연어 구문들의 리스트들을 생성한다. 예를 들어, 상기 패러프레이즈 생성기(136)는 상기 조합된 인스턴시에이트된 구문들(720) "order a large pepperoni pizza", 등을 상기 자연어 구문들의 리스트(722): "order delivery of a large pepperoni pizza", 등, 상기 자연어 구문들의 리스트(724): "which restaurant serves large pepperoni pizzas", 등, 및 상기 자연어 구문들의 리스트(726): "which store sells large pepperoni pizzas", 등으로서 패러프레이즈한다. 다른 예제에서, 상기 패러프레이즈 생성기(136)는 상기 인스턴시에이트된 구문 "find a pizza restaurant near home"을 "get a pizza restaurant near home", "where is a pizza restaurant near home", (where/which/when/why/who 패러프레이징) 및 "I want a pizza restaurant near home" ("I"로 시작하는 구문들)로 패러프레이즈한다. 상기 패러프레이즈 생성기(136)의 목표는 상기 구문의 접두사들인 상기 술어들의 다양성들을 증가시키는 것에 있다.
도 7b는 상기 예제들을 간략화하기 위한 목적들을 위해, 오직 3개의 인스턴시에이트된 패러프레이즈들, "order delivery of"(722) , "which restaurant serves"(724), 및 "which store sells"(726)만을 상기 단어들 "order a"에 대한 패러프레이즈들로 도시하고 있다. 하지만, 상기 패러프레이즈 생성기(136)는 임의의 개수의 패러프레이즈들을 생성할 수 있다. 상기 패러프레이즈 생성기(136)는 "order a"의 30개의 가장 일반적인 패러프레이즈들만을 사용하는 것과 같이, 패러프레이즈들의 개수를 제한할 수 있다.
각 자연어 구문의 발생들은 자주 발생하는 자연어 구문들에 높은 순서가 할당되고, 거의 발생하지 않는 자연어 구문들에 낮은 순서가 할당되도록 계산된다. 상기 장치는 각 자연어 구문의 발생들에 기반하여 상기 자연어 구문들의 리스트에서 자연어 구문들을 정렬함으로써 자연어 구문들의 정렬된 리스트를 생성한다. 예를 들어, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 이들 자연어 구문들이 얼마나 자주 발생하는지에 기반하여 상기 자연어 "order a pizza" 구문들의 리스트(728)를 "1. order delivery of a large pepperoni pizza", "2. which restaurant serves a medium pizza with mushrooms", "3. which store sells a large pepperoni pizza", "4. order delivery of a medium pepperoni pizza", "5. which restaurant serves a large pepperoni pizza", "6. order delivery of a large pizza with bacon", 등과 같이 정렬한다.
상기 조합된 확장된 구문들의 패러프레이즈들은 1. order delivery of a large pepperoni pizza"와 같은 자주 발생하는 자연어 구문들 및 "order delivery of a pizza that is small with mushrooms" 와 같은 거의 발생하지 않는 자연어 구문들을 초래할 것이다. 결과적으로, 상기 패러프레이즈 생성기(136)가 상기 확장된 구문들의 임의의 조합들을 상기 자연어 모델(114)에서 거의 발생하지 않는 비문 법적이거나 부자연스러운 구문들로 패러프레이즈할 때, 상기 오거나이저(132)는 그와 같은 구문들을 상기 정렬된 리스트에서 매우 낮게 정렬하고, 따라서 이들 자주 발생하지 않는 구문들에 대한 낮은 우선 순위 또는 우선 순위 없음을 초래할 수 있다. 결과적으로, 상기 오거나이저(132)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 상기 확장 구문들의 부자연스럽거나 문법적으로 정확하지 않은 조합들로부터 생성되는 임의의 부자연스럽거나 문법적으로 정확하지 않은 자연어 구문들을 수동으로 삭제할 필요를 제거한다.
상기 자연어 구문에 기반하는 정렬된 리스트의 생성 후에, 상기 장치는 다른 자연어 구문에 기반하여 다른 정렬된 리스트를 생성한다. 예를 들어, 상기 자연어 서버(106)는 상기 랩톱 컴퓨터(104)의 사용자 인터페이스를 통해 개발자에 의해 입력된 상기 구문 "order a taco" (730)을 수신한다. 그리고 나서, 상기 자연어 서버(106)는 상기 자연어 "order a pizza" 구문들의 정렬된 리스트(728)를 생성한 동일한 프로세스를 반복하여 상기 자연어 "order a taco" 구문들의 정렬된 리스트(732)를 생성할 수 있다.
대안적인 예제에서, 상기 자연어 서버(106)는 상기 자연어 구문 "order a pizza"(702)에서 "pizza"를 상기 지식베이스(122)에서 상기 오브젝트 또는 컨셉트 "food"의 인스턴스로 식별하고, 그리고 나서 상기 지식베이스(122)가 "taco"를 상기 오브젝트 또는 컨셉트 "food"의 다른 인스턴스로 식별한다고 결정한다. 이 대안적인 예제에 대해서, 상기 자연어 서버(106)는 상기 자연어 "order a pizza" 구문들의 리스트(728)를 생성한 동일한 프로세스를 반복하여 상기 자연어 "order a taco" 구문들의 정렬된 리스트(732)를 생성할 수 있거나, 또는 상기 자연어 서버(106)는 상기 개발자가 상기 해당하는 정렬된 리스트(732)의 생성을 요청하도록 하는 제안으로 상기 구문 "order a taco"(730)를 출력할 수 있다.
도 7c는 상기 예제들을 간략화하기 위한 목적들을 위해, 2개의 정렬된 리스트들 각각에 대한 6개의 가장 자주 발생되는 구문들을 도시하고 있지만, 임의의 개수의 정렬된 리스트들은 임의의 개수의 가장 자주 발생되는 구문들을 포함할 수 있다. 상기 오거나이저(132)는 각 리스트에서 30개의 가장 자주 발생하는 구문들만을 사용하는 것과 같이 가장 자주 발생하는 구문들의 개수를 제한할 수 있다.
상기 자연어 구문들의 생성의 이 포인트에서, 상기 자연어 구문들의 정렬된 리스트들에 주석이 달릴 수 있거나, 또는 상기 자연어 구문들의 정렬된 리스트들에 기반하여 자연어 구문들의 향상된 집합이 생성될 수 있고, 따라서 상기 향상된 집합에 대해서는 이후에 주석이 달릴 수 있다. 상기 자연어 구문들의 정렬된 리스트들에 주석을 다는 것이 하기에서 도 8a 내지 8C에서 추가적으로 설명된다. 도 7c 내지 도 7d는 상기 자연어 구문들의 정렬된 리스트들에 기반하여 생성되는 자연어 구문들의 향상된 집합 및 상기 자연어 구문들의 향상된 집합의 주석에 대해서 도시하고 있다.
상기 자연어 구문들의 향상된 집합을 생성하는 것은 상기 자연어 구문들의 일반화된 버전들이 상기 다른 정렬된 리스트들로부터 병합될 수 있도록 상기 정렬된 리스트들에서 상기 다수의 태그된 오브젝트들의 인스턴스들을 상기 다수의 태그된 오브젝트들과 교체함으로써 시작될 수 있다. 상기 장치는 상기 자연어 구문들의 상기 정렬된 리스트들에서 각 태그된 오브젝트의 인스턴스들을 대체하기 위해 상기 구문에서 각 태그된 오브젝트를 사용함으로써 태그된 자연어 구문들의 정렬된 리스트들을 생성한다.
예를 들어, 상기 인스턴시에이터(134)는 인스턴스시에이션 기록들을 참조하고, 상기 태그된 어트리뷰트 "@size" 가 이전에 상기 인스턴스 "large"로 대체되었다고 결정하고, 상기 태그된 어트리뷰트 "@ingredient" 가 이전에 상기 인스턴스 "pepperoni"로 대체되었다고 결정하고, "pizza"가 상기 오브젝트 "food"의 인스턴스라고 결정하고, 상기 자연어 "order a pizza" 구문들의 정렬된 리스트(728)에서 상기 태그된 오브젝트 "@size"를 사용하여 "large"의 각 인스턴스를 대체하고, 상기 태그된 오브젝트 "@ingredient"를 사용하여 "pepperoni"의 각 인스턴스를 대체하고, 상기 태그된 오브젝트 "@food" 를 사용하여 "pizza"의 각 인스턴스를 대체한다. 상기 대체들은 태그된 자연어 구문들의 정렬된 리스트(734): "1. order delivery of a @size @ingredient @food", "2. which restaurant serves @size @food with @ingredient", "3. which store sells @size @ingredient @food", "4. order delivery of a @size @ingredient @food", "5. which restaurant serves @size @ingredient @food", "6. order delivery of @size @food with @ingredient", 등을 생성한다. 다른 예제에서, 상기 인스턴시에이터(134)는 상기 태그된 자연어 구문들의 정렬된 리스트(736)를 생성한다.
도 7c가 상기 예제들을 간략화하기 위한 목적들을 위해, 태그된 자연어 구문들의 2개의 정렬된 리스트들 각각에 대한 6개의 태그된 자연어 구문들을 도시하고 있을 지라도, 임의의 개수의 태그된 자연어 구문들의 정렬된 리스트들은 임의의 개수의 태그된 자연어 구문들을 포함할 수 있다. 상기 오거나이저(132)가 각 정렬된 리스트에서 30개의 가장 자주 발생하는 구문들을 사용하는 것과 같이, 태그된 자연어 구문들의 각 정렬된 리스트에서 가장 자주 발생하는 구문들을 개수를 제한할 경우, 태그된 자연어 구문들의 각 정렬된 리스트에서 태그된 자연어 구문들의 개수는 동일한 개수가 될 것이다.
상기 자연어 구문들의 정렬된 리스트들이 태그된 자연어 구문들로 변환되면, 상기 매치되는 태그된 자연어 구문들이 상기 다른 정렬된 리스트들로부터 병합된다. 서로 매치되는 해당하는 태그된 자연어 구문들을 병합함으로써 태그된 자연어 구문들의 병합된 리스트를 생성한다. 예를 들어, 상기 오거나이저(132)는 상기 정렬된 리스트(34)로부터의 "1. order delivery of a @size @ingredient @food" 및 "4. order delivery of a @size @ingredient @food"를 상기 정렬된 리스트(736)로부터의 "1. order delivery of a @size @ingredient @food" 및 "4. order delivery of a @size @ingredient @food"와 병합하여 상기 병합된 태그된 자연어 구문 "order delivery of a @size @ingredient @food"를 생성한다.
다른 예제들에서, 상기 오거나이저(132)는 상기 병합된 태그된 자연어 구문 "which restaurant serves @size @ingredient @food", 상기 병합된 태그된 자연어 구문 "order delivery of a @size @food with @ingredient", 및 상기 병합된 태그된 자연어 구문 "which store sells @size @ingredient @food"를 생성한다. 상기 태그된 자연어 구문들의 결과적인 병합된 리스트(738)는 "order delivery of a @size @ingredient @food", "which restaurant serves @size @ingredient @food", "order delivery of a @size @food with @ingredient", "which store sells @size @ingredient @food", "which restaurant serves @size @food with @ingredient", 등이다. 도 7c가 상기 예제들을 간략화하기 위한 목적들을 위해, 상기 태그된 자연어 구문들의 병합된 리스트에서 오직 5개의 태그된 자연어 구문들만을 도시하고 있을 지라도, 상기 태그된 자연어 구문들의 병합된 리스트는 임의의 개수의 태그된 자연어 구문들을 포함할 수 있다.
상기 태그된 자연어 구문들은 상기 태그된 자연어 구문들의 자연어 구문들이 얼마나 자주 발생하는지에 기반하여 상기 태그된 자연어 구문들의 병합된 리스트 내에서 정렬된다. 상기 장치는 각 해당하는 자연어 구문의 발생들에 기반하여 상기 태그된 자연어 구문들의 병합된 리스트를 정렬함으로써 태그된 자연어 구문들의 정렬된 리스트를 생성한다. 예를 들어, 상기 오거나이저(132)는 "order delivery of a large pepperoni pizza"의 29번의 발생들, "order delivery of a large beef taco" 의 23번의 발생들, "order delivery of a medium pepperoni pizza"의 19번의 발생들, 및 "order delivery of a medium beef taco"의 17번의 발생들을 카운트하고, 따라서 상기 병합된 구문 "order delivery of a @size @ingredient @food"에 대한 총 카운트는 88이 된다.
다른 예제들에서, 상기 오거나이저(132)는 상기 병합된 구문 "which restaurant serves @size @ingredient @food"에 대한 65의 총 카운트, 상기 병합된 구문 "order delivery of a @size @food with @ingredient"에 대한 43의 총 카운트, 상기 병합된 구문 "which store sells @size @ingredient @food"에 대한 45의 총 카운트, 상기 병합된 구문 "which restaurant serves @size @food with @ingredient"에 대한 21의 총 카운트를 계산한다. 상기 태그된 자연어 구문들의 결과적인 정렬된 리스트(740)는 "1. order delivery of a @size @ingredient @food" (88의 카운트에 기반하는), "2. which restaurant serves @size @ingredient @food" (65의 카운트에 기반하는), "3. which store sells @size @ingredient @food" (45의 카운트에 기반하는), "4. order delivery of a @size @food with @ingredient" (43의 카운트에 기반하는), "5. which restaurant serves @size @food with @ingredient" (21의 카운트에 기반하는), 등이다. 도 7b가 상기 예제들을 간략화하기 위한 목적들을 위해, 상기 태그된 자연어 구문들의 정렬된 리스트에서 오직 5개의 태그된 자연어 구문들을 도시하고 있을 지라도, 상기 태그된 자연어 구문들의 정렬된 리스트는 임의의 개수의 태그된 자연어 구문들을 포함할 수 있다.
상기 태그된 자연어 구문들의 정렬된 리스트는 주석이 달릴 자연어 구문들의 향상된 집합을 생성하기 위해 인스턴시에이트된다. 상기 장치는 상기 태그된 자연어 구문들의 정렬된 리스트에서 각 태그된 오브젝트의 인스턴시에이션으로 상기 자연어 구문들의 향상된 집합을 생성한다. 예를 들어, 상기 인스턴시에이터(134)는 상기 리스트(740)에서 "1. order delivery of @size @ingredient @food"를 "order delivery of a large pepperoni pizza", "order delivery of a large bacon pizza", "order delivery of a medium pepperoni pizza", "order delivery of a medium bacon pizza", "order delivery of a small pepperoni pizza", "order delivery of a small bacon pizza", "order delivery of a large beef taco", "order delivery of a large chicken taco", "order delivery of a medium beef taco", "order delivery of a medium chicken taco", "order delivery of a small beef taco", "order delivery of a small chicken taco", 등(742)으로 인스턴시에이트한다.
다른 예제들에서, 상기 인스턴시에이터(134)는 상기 리스트(740)에서 "2. which restaurant serves @size @ingredient @food", "3. which store sells @size @ingredient @food", "4. order delivery of a @size @food with @ingredient", 및 "5. which restaurant serves @size @food with @ingredient"를 인스턴시에이트한다. 도 7d가 상기 예제들을 간략화하기 위한 목적들을 위해, 상기 자연어 구문들의 향상된 집합(742)에서 오직 12개의 자연어 구문들을 도시하고 있을 지라도, 상기 자연어 구문들의 향상된 집합은 임의의 개수의 자연어 구문들을 포함할 수 있다.
상기 자연어 구문들의 향상된 집합에 대해서는 상기 NLU 엔진(130)을 트레이닝시키기 위해 주석이 달릴 수 있다. 상기 장치는 상기 구문에서 각 태그 된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 기반하는 상기 자연어 구문들의 향상된 집합에 주석을 달음으로써 주석이 달린 자연어 구문들을 생성할 수 있다. 예를 들어, 상기 주석자(138)는 인스턴시에시션 기록들을 참조하고, 상기 태그된 어트리뷰트 "@size"가 이전에 상기 인스턴스 "large"로 대체되었다고 결정하고, 상기 태그된 어트리뷰트 "@ingredient"가 이전에 상기 인스턴스 "pepperoni"로 대체되었다고 결정하고, "pizza"는 상기 오브젝트 "food"의 인스턴스라고 결정하고, 상기 자연어 구문들의 향상된 집합에서 상기 태그된 어트리뷰트 "@size"를 사용하여 "large"에 주석을 달고, 상기 태그된 어트리뷰트 "@ingredient"를 사용하여 "pepperoni" 에 주석을 달고, 상기 태그된 어트리뷰트 "@food" 를 사용하여 "pizza" 에 주석을 달고, 따라서 상기 주석이 달린 자연어 구문 "order delivery of a large (@size) pepperoni (@ingredient) pizza (@food)" 를 생성할 수 있다. 결과적으로, 상기 주석자(138)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 임의의 자연어 구문들에 수동으로 주석을 다는 것에 대한 필요를 제거한다. 상기 주석이 달린 자연어 구문들의 결과적인 향상된 집합(744)이 도 7d에 도시되어 있다. 도 7d가 상기 예제들을 간략화하기 위한 목적들을 위해, 상기 자연어 구문들의 향상된 집합에서 오직 12개의 주석이 달린 자연어 구문들을 도시하고 있을 지라도, 상기 자연어 구문들의 향상된 집합은 임의의 개수의 주석이 달린 자연어 구문들을 포함할 수 있다.
상기 주석이 달린 자연어 구문들은 상기 NLU 엔진(130)을 트레이닝시키기 위해 사용될 수 있다. 상기 장치는 상기 주석이 달린 자연어 구문들을 사용하여 NLU 엔진이 사용자로부터의 자연어 구문을 이해하도록 트레이닝시킬 수 있고, 따라서 응답을 가능하게 할 수 있다. 예를 들어, 상기 트레이너(126)는 상기 주석이 달린 자연어 구문들(744)을 사용하여 상기 NLU 엔진(130)을 트레이닝시키고, 상기 자연어 서버(106)는 상기 개인 휴대 정보 단말기(128)의 카피를 상기 스마트 폰(102)으로 제공한다. 상기 예제를 계속하면, 사람은 상기 스마트 폰(102)을 사용하여 상기 구문 "order delivery of a large pepperoni pizza" 을 말하고, 상기 NLU 엔진(130)은 상기 구문을 이해한다. 이는 상기 개인 휴대 정보 단말기(128)가 상기 피자를 만드는 레스토랑, 배달 시간 및 위치와 같은 세부 사항들에 대해 상기 사람에게 프롬프트하는 것을 도와준다. 상기 개인 휴대 정보 단말기(128)는 상기 트레이너(126)가 상기 주석이 달린 자연어 구문들(744)을 사용하여 상기 NLU 엔진(130)을 트레이닝했었기 때문에, 상기 사용자의 피자 배달 주문을 정확하게 완료한다.
도 7a 내지 도 7d는 상기 자연어 구문들의 정렬된 리스트들에 기반하는 자연어 구문들의 향상된 집합 및 상기 자연어 구문들의 향상된 집합의 주석을 도시하고 있다. 대조적으로, 도 8a 내지 도 8c는 상기 자연어 구문들의 정렬된 리스트들 및 상기 자연어 구문들의 정렬된 리스트들의 주석을 도시하고 있다. 결과적으로, 도 8a 내지 도 8c에 도시되어 있는 구문들(802-832)은 도 7a 내지 도 7c에 도시되어 있는 구문들(702-732)와 실질적으로 유사하다.
상기 자연어 서버(106)는 자연어 구문을 수신한 후 주석이 달린 자연어 구문들의 생성을 시작한다. 예를 들어, 상기 자연어 서버(106)는 상기 랩톱 컴퓨터(104)의 사용자 인터페이스를 통해 개발자에 의해 입력되는 상기 구문 "order a pizza" (802)를 수신한다.
상기 개발자에 의해 입력된 상기 자연어 구문을 수신한, 상기 장치는 상기 자연어 구문에서 오브젝트를 식별하고, 상기 자연어 구문에서 상기 식별된 오브젝트의 임의의 어트리뷰트들을 식별할 수 있다. 예를 들어, 상기 자연어 서버(106)는 상기 자연어 구문 "order a pizza"에서 "pizza"를 상기 지식 베이스(122)에서 상기 오브젝트 또는 컨셉트 "food"로 식별하고, 그리고 나서 상기 지식 베이스(122)가 상기 오브젝트 또는 컨셉트 "size" 및 상기 오브젝트 또는 컨셉트 "ingredient"를 상기 오브젝트 또는 컨셉트 "food"에 대한 어트리뷰트들로 식별한다고 결정한다.
오브젝트의 어트리뷰트들을 식별한, 상기 장치는 각 어트리뷰트를 태그된 오브젝트로 상기 자연어 구문에 삽입할 수 있다. 예를 들어, 상기 자연어 서버(106)는 상기 오브젝트 "size"를 상기 태그된 오브젝트 "@size"로서 상기 구문 "order a pizza" (802)에 삽입하여 상기 확장된 구문의 제1 순열 "order a @size pizza" (804) 및 상기 확장된 구문의 제2 순열 "order a pizza @size" (806)을 생성한다. 다른 예제에서, 상기 자연어 서버(106)는 상기 오브젝트 "ingredient"를 상기 태그된 오브젝트 "@ingredient" 로서 상기 구문 "order a pizza" (802)에 삽입하여 상기 확장된 구문의 제3 순열 "order a @ingredient pizza" (808) 및 상기 확장된 구문의 제4 순열 "order a pizza @ingredient" (810)을 생성한다.
각 개별적인 식별된 어트리뷰트에 기반하여 상기 자연어 구문의 순열들을 생성 및 출력한 후, 상기 장치는 각 개별적인 식별된 어트리뷰트에 기반하여 임의의 선택된 순열들을 수신할 수 있다. 예를 들어, 상기 인스턴시에이터(134)는 상기 확장된 구문의 제1 순열 "order a @size pizza" (804), 상기 확장된 구문의 제3 순열 "order a @ingredient pizza" (808), 및 상기 확장된 구문의 제4 순열(810)의 상기 개발자의 선택을 수신한다. 이 예제에서, 상기 개발자는 상기 확장된 구문의 제2 순열 "order a pizza @size" (806)을 선택하지 않았는데, 이는 상기 개발자가 그와 같은 순열이 보다 자연스러운 구문 "order delivery of a large pizza" 대신에, "order delivery of a pizza that is large"와 같은 자연스럽지 않은 구문들을 생성하는 것을 초래할 것이라고 믿기 때문이다. 다른 예제에서, 상기 인스턴시에이터(134)는 상기 확장된 구문들의 모든 순열들(804-810)의 상기 개발자의 선택을 수신한다. 또 다른 예제에서, 상기 인스턴시에이터(134)는 자동으로 상기 확장된 구문들의 모든 순열들(804-810)을 수신한다.
도 8a 내지 도 8c에 도시되어 있는 상기 자연어 구문들과 같은 자연어 구문들의 생성은 구문의 태그된 어트리뷰트를 상기 태그된 어트리뷰트의 자연어 인스턴스들로 대체함으로써 시작될 수 있다. 상기 장치는 상기 자연어 구문에서 상기 태그된 어트리뷰트의 인스턴시에이션들로 인스턴시에이트된 구문들을 생성한다. 일 실시 예에서, 상기 인스턴시에이터(134)는 상기 구문 "order a @size pizza" (804)에서 "size"를 상기 지식 베이스(122)에서 컨셉트로 식별하고, 그리고 나서 상기 지식 베이스(122)에서 "large", "medium", 및 "small" 을 포함하는 "size"의 인스턴스들을 식별한다. 상기 예제를 계속하면, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "order a @size pizza" (804)을 인스턴시에이트하여 "order a large pizza", "order a medium pizza", 및 "order a small pizza" (812)와 같은 인스턴시에이트된 구문들을 생성한다. 다른 예제에서, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "order a pizza @size" (806)을 인스턴시에이트하여 "order a pizza that is large", "order a pizza that is medium", 및 "order a pizza that is small" (814)와 같은 인스턴시에이트된 구문들을 생성한다. 상기 인스턴시에이터(134)는 "pizza"와 상기 size 어트리뷰트 간의 상기 단어 결합자들 "that is"의 사용을 통해서와 같이, 단어 결합자들을 사용하여 태그된 어트리뷰트의 인스턴스들을 문법적으로 연결할 수 있다.
또 다른 예제에서, 상기 인스턴시에이터(134)는 상기 구문 "order a @ingredient pizza" (808)에서 "ingredient"를 상기 지식 베이스(122)에서 컨셉트로 식별하고, 그리고 나서 상기 지식 베이스(122)에서 "pepperoni", "bacon", 및 "mushrooms" 를 포함하는 "ingredient"의 인스턴스들을 식별한다. 상기 예제를 계속하면, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "order a @ingredient pizza" (808)을 인스턴시에이트하여 "order a pepperoni pizza", "order a bacon pizza", 및 "order a mushroom pizza" (816)와 같은 인스턴시에이트된 구문들을 생성한다. 추가적인 예제에서, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "order a pizza @ingredient" (810)을 인스턴시에이트하여 "order a pizza with pepperoni", "order a pizza with bacon", "order a pizza with mushrooms"(818)와 같은 인스턴시에이트된 구문들을 생성한다. 상기 인스턴시에이터(134)는 "pizza"와 상기 ingredient 어트리뷰트 간의 상기 단어 결합자들 "with"의 사용을 통해서와 같이, 단어 결합자들을 사용하여 태그된 어트리뷰트의 인스턴스들을 문법적으로 연결할 수 있다.
상기 구문의 태그된 어트리뷰트들을 상기 태그된 어트리뷰트들의 인스턴스들로 교체한 후, 상기 인스턴시에이트된 구문들의 순열들이 조합된다. 인스턴시에이트된 구문들의 생성 후에, 상기 장치는 상기 인스턴시에이트된 구문들의 순열들을 조합한다. 예를 들어, 상기 자연어 서버(106)는 상기 인스턴시에이트된 구문들의 순열들 "order a large pizza", "order a medium pizza", "order a small pizza" (812)과 "order a pepperoni pizza", "order a bacon pizza", 및 "order a mushroom pizza" (816), 및 "order a pizza with pepperoni", "order a pizza with bacon", 및 "order a pizza with mushrooms" (818)을 조합하여 상기 인스턴시에이트된 구문들의 조합된 순열들(820)을 생성한다. 이 예제에서, 상기 인스턴시에이트된 구문들의 조합된 순열들(820)은 "order a large pepperoni pizza" 및 "order a pizza that is small with mushrooms"를 포함한다.
상기 인스턴시에이트된 구문들의 조합된 순열들을 가지는, 상기 구문들의 동사는 상기 동사의 자연어 패러프레이즈들로 대체될 수 있다. 상기 인스턴시에이트된 구문들의 순열들의 조합 후에, 상기 장치는 상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈들로 자연어 구문들의 리스트들을 생성한다. 예를 들어, 상기 패러프레이즈 생성기(136)는 상기 인스턴시에이트된 구문들의 조합된 순열들(820) "order a large pepperoni pizza", 등을 상기 자연어 구문들의 리스트(822): "order delivery of a large pepperoni pizza", 상기 자연어 구문들의 리스트(824): "which restaurant serves large pepperoni pizzas", 및 상기 자연어 구문들의 리스트(826), 등과 같이 패러프레이즈한다.
상기 각 자연어 구문의 발생들은 자주 발생하는 자연어 구문들에 높은 순서가 할당되고 거의 발생하지 않는 자연어 구문들에 낮은 순서가 할당되도록 계산된다. 상기 장치는 각 자연어 구문의 발생들에 기반하여 상기 자연어 구문들의 리스트에서 자연어 구문들을 정렬함으로써 자연어 구문들의 정렬된 리스트를 생성한다. 예를 들어, 상기 오거나이저(132)는 상기 자연어 모델(114)에서 이들 자연어 구문들이 얼마나 자주 발생하는지에 기반하여, 상기 자연어 "order a pizza" 구문들의 리스트(828)를 "1. order delivery of a large pepperoni pizza", "2. which restaurant serves medium pizzas with mushrooms", "3. which store sells large pepperoni pizzas", "4. order delivery of a medium pepperoni pizza", "5. which restaurant serves large pepperoni pizzas", "6. order delivery of a large pizza with bacon", 등과 같이 정렬한다.
상기 확장된 구문들의 조합된 순열들의 패러프레이즈들은 "1. order delivery of a large pepperoni pizza"와 같은 자주 발생하는 자연어 구문들 및 "order delivery of a pizza that is small with mushrooms"와 같이 거의 발생하지 않는 자연어 구문들을 초래한다. 결과적으로, 상기 패러프레이즈 생성기(136)가 상기 확장된 구문들의 임의의 순열들을 상기 자연어 모델(114)에서 거의 발생하지 않는 비문법적이거나 또는 부자연스러운 구문들로 패러프레이즈할 때, 상기 오거나이저(132)는 그와 같은 구문들이 상기 정렬된 리스트에서 매우 낮게 정렬하고, 따라서 이러한 자주 발생하지 않는 구문들에 대한 낮은 우선 순위 또는 우선 순위 없음을 초래할 수 있다. 결과적으로, 상기 오거나이저(132)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 상기 확장된 구문들의 부자연스럽거나 문법적으로 정확하지 않은 순열들로부터 생성되는 임의의 부자연스럽거나 문법적으로 정확하지 않은 자연어 구문들을 삭제할 필요를 제거한다.
상기 자연어 구문에 기반하는 정렬된 리스트의 생성 후에, 상기 장치는 다른 자연어 구문에 기반하여 다른 정렬된 리스트를 생성한다. 예를 들어, 상기 자연어 서버(106)는 상기 랩톱 컴퓨터(104)의 사용자 인터페이스를 통해 개발자에 의해 입력되는 상기 구문 "order a taco" (830)을 수신한다. 그리고 나서, 상기 자연어 서버 (106)는 상기 자연어 "order a pizza" 구문들의 정렬된 리스트(828)를 생성한 동일한 프로세스를 반복하여 상기 자연어 "order a taco" 구문들의 정렬된 리스트(832)를 생성할 수 있다.
대안적인 예제에서, 상기 자연어 서버(106)는 상기 자연어 "order a pizza" (802)에서 "pizza"를 상기 지식베이스(122)에서 상기 오브젝트 또는 컨셉트 "food"의 인스턴스로 식별하고, 그리고 나서 상기 지식베이스(122)가 상기 "taco"를 상기 오브젝트 또는 컨셉트 "food"의 다른 인스턴스로 식별한다고 결정한다. 이 대안적인 예제에 대해서, 상기 자연어 서버(106)는 상기 자연어 "order a pizza" 구문들의 정렬된 리스트(828)를 생성한 동일한 프로세스를 반복하여 상기 자연어 "order a taco" 구문들의 정렬된 리스트(832)를 생성할 수 있거나, 또는 상기 자연어 서버(106)는 상기 개발자가 상기 해당하는 정렬된 리스트(832)를 요청하는 것에 대한 제안으로 상기 구문 "order a taco" (830)을 생성할 수 있다.
상기 자연어 구문들의 생성의 이 포인트에서, 상기 자연어 구문들의 정렬된 리스트들에 주석이 달릴 수 있거나, 또는 상기 자연어 구문들의 정렬된 리스트들에 기반하여 자연어 구문들의 향상된 집합들이 생성될 수 있고, 따라서 상기 향상된 집합들에 대해서는 주석이 달릴 수 있다. 상기 자연어 구문들의 정렬된 리스트들에 기반하여 자연어 구문들의 향상된 집합을 생성하는 것과 상기 자연어 구문들의 향상된 집합에 주석을 다는 것이 도 7a 내지 도 7를 참조하여 상기에서 설명되고 있다. 상기 자연어 구문들의 정렬된 리스트들에 주석을 다는 것이 도 8a 내지 도 8c를 참조하여 하기에서 바로 설명된다.
상기 자연어 구문들의 정렬된 리스트들은 상기 NLU 엔진(130)을 트레이닝시키기 위해 주석이 달릴 수 있다. 상기 장치는 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들에 주석을 달음으로써 주석이 달린 자연어 구문들을 생성할 수 있다. 예를 들어, 상기 인스턴시에이터(134)는 인스턴스시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@size"가 이전에 상기 인스턴스 "large"로 대체되었다고 결정하고, 상기 태그된 오브젝트 "@ingredient"가 이전에 상기 인스턴스 "pepperoni"로 대체되었다고 결정하고, 상기 오브젝트 "pizza"가 상기 오브젝트 또는 컨셉트 "food"의 인스턴스라고 결정하고, 상기 자연어 구문들의 정렬된 리스트들에서 상기 태그된 어트리뷰트 "@size"를 사용하여 "large"의 각 인스턴스에 주석을 달고, 상기 태그된 어트리뷰트 "@ingredient"를 사용하여 "pepperoni"의 각 인스턴스에 주석을 달고, 상기 태그된 오브젝트 "@food"를 사용하여 "pizza"의 각 인스턴스에 주석을 단다. 상기 주석들은 상기 주석이 달린 자연어 구문 "order delivery of a large (@size) pepperoni (@ingredient) pizza (@food)" 을 생성한다.
결과적으로, 상기 주석자(138)는 사람들이 임의의 자연어 구문들을 수동으로 리뷰하고 임의의 자연어 구문들에 수동으로 주석을 다는 것에 대한 필요를 제거한다. 상기 주석이 달린 자연어 구문들의 결과적인 리스트들(834, 836)이 도 8c에 도시되어 있다. 도 8c가 상기 예제들을 간략화하기 위한 목적들을 위해, 주석이 달린 자연어 구문들의 두 개의 리스트들 각각에서 오직 6개의 주석이 달린 자연어 구문들만을 도시하고 있을 지라도, 주석이 달린 자연어 구문들의 임의의 개수의 리스트들은 임의의 개수의 주석이 달린 자연어 구문들을 포함할 수 있다.
상기 주석이 달린 자연어 구문들은 상기 NLU 엔진(130)을 효율적으로 트레이닝시키기 위해 사용될 수 있다. 상기 장치는 상기 주석이 달린 자연어 구문들을 사용하여 NLU 엔진이 사용자로부터의 자연어 구문을 이해하도록 트레이닝시킬 수 있고, 따라서 응답을 가능하게 할 수 있다. 예를 들어, 상기 트레이너(126)는 상기 주석이 달린 자연어 구문들(834, 836)을 사용하여 상기 NLU 엔진(130)을 트레이닝시키고, 상기 자연어 서버(106)는 상기 개인 휴대 정보 단말기(128)의 카피를 상기 스마트 폰(102)으로 제공한다. 상기 예제를 계속하면, 사람은 상기 스마트 폰(102)을 사용하여 상기 구문 "order delivery of a large pepperoni pizza"를 말하고, 상기 NLU 엔진(130)은 상기 구문을 이해하며, 이는 상기 개인 휴대 정보 단말기(128)가 상기 피자를 만드는 레스토랑, 배달 시간 및 위치와 같은 세부 사항들에 대해 상기 사람에게 프롬프트하는 것을 도와준다. 상기 개인 휴대 정보 단말기(128)는 상기 트레이너(126)가 상기 주석이 달린 자연어 구문들(834, 836)을 사용하여 상기 NLU 엔진(130)을 트레이닝했었기 때문에, 상기 사람의 피자 배달 주문을 정확하게 완료한다.
도 9는 일 실시 예에 따른 주석이 달린 자연어 구문들을 생성하는 방법을 도시하고 있는 플로우차트이다. 플로우차트(900)는 도 1의 클라이언트들 (102-104) 및/또는 서버들(106-108)에서, 및/또는 그 사이에서 관련되는 특정 단계들에 대한 플로우차트 블록들로 도시되어 있는 방법 동작들을 도시하고 있다.
적어도 하나의 태그된 오브젝트를 포함하는 구문이 수신된다, 블록 902. 상기 장치는 주석이 달린 자연어 구문들의 생성을 개시한다. 실시 예들에서, 이는 상기 랩톱 컴퓨터(104)의 사용자 인터페이스를 통해 개발자에 의해 입력되는 상기 구문 "find @food"를 수신하는 것을 포함할 수 있다. 다른 예제에서, 개발자로부터 "order a pizza"를 수신한 후, 상기 자연어 서버(106)는 "pizza"를 food의 종류로 인식하고, 상기 태그된 구문 "order @food"를 생성한다.
상기 구문을 수신한 후, 오브젝트는 상기 구문에서 임의의 태그된 오브젝트의 어트리뷰트로서 선택적으로 식별된다, 블록 904. 상기 장치는 상기 구문을 확장하기 위한 어트리뷰트들을 식별할 수 있다. 예를 들어, 그리고 제한 없이, 이는 상기 인스턴시에이터(134)가 상기 구문 "find @food"로부터 상기 태그된 오브젝트 "@food" 를 추출하고, "food"가 상기 지식 베이스(122)에서 오브젝트라고 결정하고, 그리고 나서 상기 지식 베이스(122)이 상기 오브젝트 "size"를 상기 오브젝트 "food"에 대한 어트리뷰트로 식별한다고 결정하는 것을 포함할 수 있다.
오브젝트를 태그된 오브젝트의 어트리뷰트로서 식별한 후에, 상기 오브젝트는 상기 구문에 태그된 오브젝트로서 선택적으로 삽입된다, 블록 906. 상기 장치는 태그된 오브젝트의 임의의 어트리뷰트로 상기 구문을 확장할 수 있다. 일 예로, 그리고 제한 없이, 이는 상기 인스턴시에이터(134)가 상기 구문 "find @food"에 상기 오브젝트 "size"를 상기 추가적인 태그된 오브젝트 "@size"로서 삽입하여 상기 확장된 구문 "find @size @food"를 생성하는 것을 포함할 수 있다.
인스턴시에이트된 구문들은 상기 구문에서 각 태그된 오브젝트의 인스턴스시에이션들에 의해 생성된다, 블록 908. 상기 장치는 각 태그된 오브젝트를 상기 태그된 오브젝트의 자연어 인스턴스들로 대체한다. 실시 예들에서, 이는 상기 인스턴시에이터(134)가 상기 구문 "find @food" (302)에서 "food"를 상기 지식 베이스(122)에서 컨셉트로 식별하고, 그리고 나서 상기 지식 베이스(122)에서 "pizza", "taco", 및 "apple"들을 포함하는 "food"의 인스턴스들로 식별하는 것을 포함할 수 있다. 상기 예제를 계속하면, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "find @food" (302)을 인스턴시에이트하여 "find pizza" (304), "find taco" (306), 및 "find apple" (308)와 같은 인스턴시에이트된 구문들을 생성한다. 다른 예제에서, 상기 인스턴시에이터(134)는 상기 구문 "order a @size pizza" (704)에서 "size"를 상기 지식 베이스(122)에서 컨셉트로 식별하고, 그리고 나서 상기 지식 베이스(122)에서 "large", "medium", 및 "small"를 포함하는 "size"의 인스턴스들로 식별한다. 상기 예제를 계속하면, 상기 인스턴시에이터(134)는 이들 인스턴스들을 사용하여 상기 구문 "order a @size pizza" (704)을 인스턴시에이트하여 "order a large pizza", "order a medium pizza", "order a small pizza"(712)와 같은 인스턴시에이트된 구문들을 생성한다.
개발자에 의해 입력된 상기 자연어 구문을 수신하는 것에 대한 응답으로, 자연어 구문에서의 오브젝트 및 상기 자연어 구문에서의 상기 식별된 오브젝트의 임의의 어트리뷰트들이 선택적으로 식별된다, 블록 910. 상기 장치는 개발자들의 자연어 구문들에서 오브젝트들의 어트리뷰트들을 식별할 수 있다. 예를 들어, 그리고 제한 없이, 이는 상기 자연어 서버(106)가 상기 개발자로부터 수신된 자연어 구문 "order a pizza"에서 "pizza"를 상기 지식 베이스(122)에서 상기 오브젝트 또는 컨셉트 "food"로서 식별하고, 그리고 나서 상기 지식 베이스(122)가 상기 오브젝트 또는 컨셉트 "size" 및 상기 오브젝트 또는 컨셉트 "ingredient"를 상기 오브젝트 또는 컨셉트 "food"에 대한 어트리뷰트들로 식별하는 것을 포함할 수 있다.
오브젝트의 어트리뷰트들을 식별하면, 상기 자연어 구문의 확장들이 각 어트리뷰트를 상기 자연어 구문에서 상기 오브젝트의 앞 뒤에 태그된 오브젝트로 삽입함으로써 선택적으로 생성된다, 블록 912. 상기 장치는 상기 식별된 어트리뷰트들에 기반하여 상기 자연어 구문의 확장들을 생성한다. 일 예로, 그리고 제한 없이, 이는 상기 자연어 서버(106)가 상기 오브젝트 "size"를 상기 태그된 오브젝트 "@size"로서 상기 구문 "order a pizza" (802)에 삽입하여 상기 확장된 구문의 제1 확장 "order a @size pizza" (804) 및 상기 확장된 구문의 제2 확장 "order a pizza @size" (806)을 생성하는 것을 포함할 수 있다. 다른 예제에서, 상기 자연어 서버(106)는 상기 오브젝트 "ingredient"를 상기 태그된 오브젝트 "@ingredient" 로서 상기 구문 "order a pizza" (802)에 삽입하여 상기 확장된 구문의 제3 확장 "order a @ingredient pizza" (808) 및 상기 확장된 구문의 제4 확장 "order a pizza @ingredient" (810)을 생성한다.
조합된 인스턴시에이트된 구문들이 제1 어트리뷰트와 연관되는 인스턴시에이트된 구문의 순열과 제2 어트리뷰트와 연관되는 인스턴시에이트된 구문의 순열과 조합함으로써 선택적으로 생성된다, 블록 914. 상기 장치는 각 어트리뷰트를 사용하여 상기 인스턴시에이트된 구문들의 순열들을 조합한다. 예를 들어, 그리고 제한 없이, 이는 상기 자연어 서버(106)가 상기 인스턴시에이트된 구문들 "order a large pizza", "order a medium pizza", 및 "order a small pizza" (812)의 확장들을 "order a pepperoni pizza", "order a bacon pizza", 및 "order a mushroom pizza" (816), 및 "order a pizza with pepperoni", "order a pizza with bacon", 및 "order a pizza with mushrooms" (818)와 조합하여 상기 인스턴시에이트된 구문들의 조합된 순열들(820)을 생성하는 것을 포함할 수 있다. 이 예제에서, 상기 인스턴시에이트된 구문들의 조합된 순열들(820)은 "order a large pepperoni pizza" 및 "order a pizza that is small with mushrooms"를 포함한다.
상기 인스턴시에이트된 구문들을 생성하면, 자연어 구문들의 리스트들이 상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈들에 의해 생성된다, 블록 916. 상기 장치는 상기 구문의 동사를 상기 동사의 자연어 패러프레이즈들로 대체한다. 예를 들어, 그리고 제한 없이, 이는 상기 패러프레이즈 생성기(136)가 "find pizza" (304)를 상기 자연어 pizza 구문들: "order delivery of a pizza," "where is a restaurant that serves pizzas," "what store has a sale on pizzas," ... 의 리스트(310)로서 패러프레이즈하는 것을 포함할 수 있다. 다른 예제에서, 상기 패러프레이즈 생성기(136)는 상기 조합된 인스턴시에이트된 구문들(720) "order a large pepperoni pizza", 등을 상기 자연어 구문들의 리스트(722): "order delivery of a large pepperoni pizza", 등, 상기 자연어 구문들의 리스트(724): "which restaurant serves large pepperoni pizzas", 등, 및 상기 자연어 구문들의 리스트(726): "which store sells large pepperoni pizzas", 등으로서 패러프레이즈한다.
자연어 구문들의 정렬된 리스트들은 각 자연어 구문의 발생들에 기반하여 자연어 구문들의 각 생성된 리스트에서 자연어 구문들을 정렬함으로써 생성된다, 블록 918. 상기 장치는 높은 순서가 자주 발생하는 자연어 구문들에 할당되고 낮은 순서가 거의 발생하지 않는 자연어 구문들에 할당되도록 각 자연어 구문의 발생들을 계산한다. 실시 예들에서, 이는 상기 오거나이저(132)가 상기 자연어 pizza 구문들의 리스트를 이들 자연어 구문들이 상기 자연어 모델(114)에서 얼마나 자주 발생되는지에 기반하여 "1. order delivery of a pizza", "2. where is a restaurant that serves pizzas", "3. what store has a sale on pizzas", ... (316)와 같이 정렬하는 것을 포함할 수 있다. 다른 예제에서, 상기 오거나이저(132)는 상기 자연어 "order a pizza" 구문들의 리스트(728)를 이들 자연어 구문들이 상기 자연어 모델(114)에서 얼마나 자주 발생되는지에 기반하여 "1. order delivery of a large pepperoni pizza", "2. which restaurant serves a medium pizza with mushrooms", "3. which store sells a large pepperoni pizza", "4. order delivery of a medium pepperoni pizza", "5. which restaurant serves a large pepperoni pizza", "6. order delivery of a large pizza with bacon", 등과 같이 정렬한다.
태그된 자연어 구문들의 정렬된 리스트들은 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트에서 각 태그된 오브젝트들을 대체함으로써 선택적으로 생성된다, 블록 920. 상기 장치는 상기 자연어 구문들의 일반화된 버전들이 상기 다른 정렬된 리스트들로부터 병합될 수 있도록 상기 정렬된 리스트들에서 각 태그된 오브젝트의 인스턴스들을 상기 해당하는 태그된 오브젝트로 대체할 수 있다. 예를 들어, 그리고 제한 없이, 이는 상기 인스턴시에이터(134)가 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "pizza"로 대체되었다고 결정하고, 상기 태그된 오브젝트 "@food"를 사용하여 상기 자연어 pizza 구문들의 정렬된 리스트에서 "pizza"의 각 인스턴스를 대체하는 것을 포함할 수 있다. 이들 대체들은 태그된 자연어 구문들의 정렬된 리스트(322): "1. order delivery of @food", "2. where is a restaurant that serves @food", "3. what store has a sale on @food", 등을 생성한다. 다른 예제에서, 상기 인스턴시에이터(134)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 어트리뷰트 "@size"가 이전에 상기 인스턴스 "large"로 대체되었다고 결정하고, 상기 태그된 어트리뷰트 "@ingredient"가 이전에 상기 인스턴스 "pepperoni"로 대체되었다고 결정하고, "pizza"가 상기 오브젝트 "food"의 인스턴스라고 결정하고, 상기 자연어 "order a pizza" 구문들의 정렬된 리스트(728)에서 상기 태그된 어트리뷰트 "@size"를 사용하여 "large"의 각 인스턴스를 대체하고, 상기 태그된 어트리뷰트 "@ingredient"를 사용하여 "pepperoni"의 각 인스턴스를 대체하고, 상기 태그된 오브젝트 "@food"를 사용하여 "pizza"의 각 인스턴스를 대체한다. 상기 다른 예제를 계속하면, 상기 대체들은 태그된 자연어 구문들의 리스트(734): "1. order delivery of a @size @ingredient @food", "2. which restaurant serves @size @food with @ingredient", "3. which store sells @size @ingredient @food", "4. order delivery of a @size @ingredient @food", "5. which restaurant serves @size @ingredient @food", "6. order delivery of @size @food with @ingredient", 등을 생성한다.
태그된 자연어 구문들의 병합된 리스트는 서로 매치되는 해당하는 태그된 자연어 구문들을 병합함으로써 선택적으로 생성된다, 블록 922. 상기 장치는 매치되는 이들 태그된 자연어 구문들 중 일부를 상기 다른 정렬된 리스트들로부터 병합할 수 있다. 예를 들어, 그리고 제한 없이, 이는 상기 오거나이저(132)가 상기 정렬된 리스트(322)로부터의 "1. order delivery of @food"를 상기 정렬된 리스트(324)로부터의 "2. order delivery of @food" 및 상기 정렬된 리스트(326)로부터의 "3. order delivery of @food"와 병합하여 상기 병합된 태그된 자연어 구문 "order delivery of @food" 을 생성하는 것을 포함할 수 있다. 다른 예제에서, 상기 오거나이저(132)는 상기 정렬된 리스트(734)로부터의 "1. order delivery of a @size @ingredient @food", 및 "4. order delivery of a @size @ingredient @food"를 상기 정렬된 리스트(736)으로부터의 "1. order delivery of a @size @ingredient @food", 및 "4. order delivery of a @size @ingredient @food"와 병합하여 상기 병합된 태그된 자연어 구문 "order delivery of a @size @ingredient @food"을 생성한다.
태그된 자연어 구문들의 정렬된 리스트는 각 해당하는 자연어 구문의 발생들에 기반하여 상기 태그된 자연어 구문들의 병합된 리스트를 정렬함으로써 선택적으로 생성된다, 블록 924. 상기 장치는 상기 태그된 자연어 구문들의 병합된 리스트 내에서 상기 태그된 자연어 구문들을 상기 태그된 자연어 구문들이 얼마나 자주 발생하는지에 기반하여 정렬할 수 있다. 실시 예들에서, 이는 상기 오거나이저(132)가 상기 자연어 모델(122)에서 "order delivery of a pizza"의 29번의 발생들, "order delivery of a taco"의 13번의 발생들, 및 "order delivery of an apple"의 3번의 발생들을 카운트하는 것을 포함할 수 있고, 따라서 상기 병합된 구문 "order delivery of @food" 에 대한 상기 총 카운트는 45이다. 상기 태그된 자연어 구문들의 결과적인 정렬된 리스트(330)는 "1. order delivery of @food" (45의 카운트에 기반하여), "2. where is a restaurant that serves @food" (40의 카운트에 기반하여), "3. what store has a sale on @food" (33의 카운트에 기반하여), "4. what store sells @food" (11의 카운트에 기반하여), 등이다. 다른 예제에서, 상기 오거나이저(132)는 "order delivery of a large pepperoni pizza"의 29번의 발생들, "order delivery of a large beef taco"의 23번의 발생들, "order delivery of a medium pepperoni pizza"의 19번의 발생들, 및 "order delivery of a medium beef taco"의 17번의 발생들을 카운트하고, 따라서 상기 병합된 구문 "order delivery of a @size @ingredient @food"에 대한 총 카운트는 88이다.
자연어 구문들의 향상된 집합은 상기 태그된 자연어 구문들의 정렬된 리스트에서 각 태그된 오브젝트의 인스턴시에이션들에 의해 선택적으로 생성된다, 블록 926. 상기 장치는 상기 태그된 자연어 구문들의 정렬된 리스트를 인스턴시에이트하여 주석이 달릴 자연어 구문들의 향상된 집합을 생성할 수 있다. 예를 들어, 그리고 제한 없이, 이는 상기 인스턴시에이터(134)가 상기 리스트(330)에서 "1. order delivery of @food"를 "order delivery of a pizza", "order delivery of a taco", 및 "order delivery of an apple"로서 인스턴시에이트하는 것을 포함할 수 있다. 다른 예제에서, 상기 인스턴시에이터(134)는 상기 리스트(740)에서 "1. order delivery of @size @ingredient @food"를 "order delivery of a large pepperoni pizza", "order delivery of a large bacon pizza", "order delivery of a medium pepperoni pizza", "order delivery of a medium bacon pizza", "order delivery of a small pepperoni pizza", "order delivery of a small bacon pizza", "order delivery of a large beef taco", "order delivery of a large chicken taco", "order delivery of a medium beef taco", "order delivery of a medium chicken taco", "order delivery of a small beef taco", 및 "order delivery of a small chicken taco", 등(742)으로 인스턴시에이트한다.
주석이 달린 자연어 구문들은 상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들 또는 상기 자연어 구문들의 정렬된 리스트들에 기반하는 상기 자연어 구문들의 향상된 집합에 주석을 달음으로써 생성된다, 블록 928. 상기 장치는 상기 NLU 엔진(130)을 훈련시키기 위해 자연어 구문들에 주석을 단다. 예를 들어, 그리고 제한 없이, 이는 상기 주석자(138)가 인스턴시에이션 기록들을 참조하고, 상기 태그된 오브젝트 "@food"가 이전에 상기 인스턴스 "pizza"로 대체되었다고 결정하고, 상기 태그된 오브젝트 "@food"를 사용하여 상기 자연어 구문들의 향상된 집합에서 "pizza"에 주석을 다는 것을 포함할 수 있고, 따라서 상기 주석이 달린 자연어 구문 "order delivery of a pizza (@food)"을 생성할 수 있다. 다른 예제에서, 상기 주석자(138)는 인스턴시에이션 기록들을 참조하고, 상기 태그된 어트리뷰트 "@size"가 이전에 상기 인스턴스 "large"로 대체되었다고 결정하고, 상기 태그된 어트리뷰트 "@ingredient"가 이전에 상기 인스턴스 "pepperoni"로 대체되었다고 결정하고, "pizza"는 상기 오브젝트 "food"의 인스턴스라고 결정하고, 상기 자연어 구문들의 향상된 집합에서 상기 태그된 어트리뷰트 "@size"를 사용하여 "large"에 주석을 달고, 상기 태그된 오브젝트 "@ingredient"를 사용하여 "pepperoni"에 주석을 달고, 상기 태그된 오브젝트 "@food"를 사용하여 "pizza"에 주석을 달고, 따라서 상기 주석이 달린 자연어 구문 "order delivery of a large (@size) pepperoni (@ingredient) pizza (@food)"을 생성할 수 있다.
상기 주석이 달린 자연어 구문들은 NLU 엔진이 사용자로부터 자연어 구문을 이해하도록 트레이닝시키기 위해 선택적으로 사용되고, 따라서 응답을 가능하게 할 수 있다, 블록 930. 상기 장치는 주석이 달린 자연어 구문들을 사용하여 상기 NLU 엔진(130)을 훈련시킬 수 있다. 실시 예들에서, 이는 상기 트레이너(126)가 상기 주석이 달린 자연어 구문들(336)을 사용하여 상기 NLU 엔진(130)을 트레이닝시키고, 상기 자연어 서버(106)가 상기 개인 휴대 정보 단말기(128)의 카피를 상기 스마트 폰(102)으로 제공하는 것을 포함할 수 있다. 상기 예제를 계속하면, 사람은 상기 스마트 폰(102)을 사용하여 상기 구문 "order delivery of a pizza"를 말하고, 상기 NLU 엔진(130)은 상기 구문을 이해하며, 이는 상기 개인 휴대 정보 단말기(128)가 피자 사이즈 및 토핑들, 상기 피자를 만드는 레스토랑, 배달 시간 및 위치와 같은 세부 사항들에 대해 상기 사람에게 프롬프트하는 것을 도와준다. 다른 예제에서, 상기 트레이너(126)가 상기 주석이 달린 자연어 구문들(774)을 사용하여 상기 NLU 엔진(130)을 트레이닝시키고, 상기 자연어 서버(106)가 상기 개인 휴대 정보 단말기(128)의 카피를 상기 스마트 폰(102)으로 제공한다. 상기 예제를 계속하면, 사람은 상기 스마트 폰(102)을 사용하여 상기 구문 "order delivery of a large pepperoni pizza"를 말하고, 상기 NLU 엔진(130)은 상기 구문을 이해한다. 이는 상기 개인 휴대 정보 단말기(128)가 상기 피자를 만드는 레스토랑, 배달 시간 및 위치와 같은 세부 사항들에 대해 상기 사람에게 프롬프트하는 것을 도와준다.
도 9가 특정 순서로 발생하는 상기 블록들 902-930을 도시하고 있을 지라도, 상기 블록들 902-930은 다른 순서로 발생할 수 있다. 다른 구현들에서, 상기 블록들 902-930 각각은 또한 다른 블록들과 조합하여 실행될 수 있고, 및/또는 일부 블록들은 다른 집합의 블록들로 분할될 수 있다.
본 주제가 구현될 수 있는 예시적인 하드웨어 디바이스가 설명될 것이다. 해당 기술 분야의 당업자들은 도 10에 도시되어 있는 엘리먼트들이 상기 장치 구현에 의존하여 달라질 수 있다는 것을 이해할 것이다. 도 10을 참조하면. 본 명세서에 개시되어 있는 본 주제를 구현하기 위한 예시적인 장치는 프로세싱 유닛(1002), 메모리(1004), 스토리지(1006), 데이터 입력 모듈(1008), 디스플레이 어댑터(1010), 통신 인터페이스(1012), 및 엘리먼트들(1004-1012)을 상기 프로세싱 유닛(1002)에 연결하는 버스(1014)를 포함하는 하드웨어 디바이스(1000)를 포함한다.
상기 버스(1014)는 임의의 타입의 버스 아키텍처를 포함할 수 있다. 예제들은 메모리 버스, 주변 장치 버스, 로컬 버스, 등을 포함한다. 상기 프로세싱 유닛(1002)은 인스트럭션 실행 머신(instruction execution machine), 장치, 또는 디바이스이며, 마이크로 프로세서, 디지털 신호 프로세서, 그래픽 프로세싱 유닛, 주문형 집적 반도체(application specific integrated circuit: ASIC), 필드 프로그램 가능 게이트 어레이(field programmable gate array: FPGA), 등을 포함할 수 있다. 상기 프로세싱 유닛(1002)은 상기 메모리(1004) 및/또는 상기 스토리지 (1006)에 저장되어 있고, 및/또는 상기 데이터 입력 모듈(1008)을 통해 수신된 프로그램 인스트럭션들을 실행하도록 구성될 수 있다.
상기 메모리(1004)는 리드 온니 메모리(read only memory: ROM)(1016) 및 랜덤 억세스 메모리(random access memory: RAM)(1018)를 포함할 수 있다. 상기 메모리(1004)는 상기 디바이스(1000)의 동작 동안 프로그램 인스트럭션들 및 데이터를 저장하도록 구성될 수 있다. 다양한 실시 예들에서, 상기 메모리(1004)는, 예를 들어, 듀얼 데이터 레이트 동기 DRAM(dual data rate synchronous DRAM: DDR SDRAM), 에러 정정 코드 동기 DRAM(error correcting code synchronous DRAM: ECC SDRAM), 또는 RAMBUS DRAM(RDRAM)과 같은 변형들을 포함하는, 정적 랜덤 억세스 메모리(static random access memory: SRAM) 또는 동적 RAM(dynamic RAM: DRAM)과 같은 다양한 메모리 기술들 중 어느 하나를 포함할 수 있다. 상기 메모리(1004)는 또한 비 휘발성 플래시 RAM(nonvolatile flash RAM: NVRAM) 또는 ROM과 같은 비 휘발성 메모리 기술들을 포함할 수 있다. 일부 실시 예들에서, 상기 메모리(1004)는 구체적으로 언급되지 않은 다른 기술들 뿐만 아니라, 상기에서 설명한 바와 같은 기술들의 조합을 포함할 수 있다는 것이 고려된다. 본 주제가 컴퓨터 장치에서 구현될 때, 스타트-업(start-up) 동안과 같이, 상기 컴퓨터 장치 내의 엘리먼트들 간에 정보를 전송하는 것을 돕는 기본 루틴(routine)들을 포함하는 기본 입/출력 장치(basic input/output apparatus: BIOS)(1020)가 상기 ROM(1016)에 저장된다.
상기 스토리지(1006)는 플래시 메모리로부터 리드하고 플래시 메모리에 라이트하기 위한 플래시 메모리 데이터 스토리지 디바이스, 하드 디스크로부터 리드하고 하드 디스크에 라이트하기 위한 하드 디스크 드라이브, 제거 가능 마그네틱 디스크로부터 리드하고 제거 가능 마그네틱 디스크에 라이트하기 위한 마그네틱 디스크 드라이브, 및/또는 CD ROM, DVD, 또는 다른 광 매체들과 같은 제거 가능 광 디스크로부터 리드하고 제거 가능 광 디스크에 라이트하기 위한 광 디스크 드라이브를 포함할 수 있다. 상기 드라이브들 및 상기 드라이브들과 연관되는 컴퓨터-리드 가능 매체들은 상기 하드웨어 장치(1000)에 대한 컴퓨터 리드 가능 인스트럭션들, 데이터 구조들, 프로그램 모듈들 및 다른 데이터의 비 휘발성 스토리지를 제공한다.
본 명세서에서 설명되는 방법들은 컴퓨터-기반 또는 프로세서-포함 머신, 장치, 또는 디바이스와 같은 인스트럭션 실행 머신, 장치 또는 디바이스에 의해 또는 이와 관련되어 사용하기 위해 컴퓨터 리드 가능 매체에 저장되어 있는 실행 가능한 인스트럭션들로 구현될 수 있다는 것에 유의하여야만 한다. 해당 기술 분야의 당업자들은, 일부 실시 예들에 대해서는, 마그네틱 카세트들, 플래시 메모리 카드들, 디지털 비디오 디스크들, 베르누이 카트리지(Bernoulli cartridge)들, RAM, ROM, 등과 같은, 컴퓨터에 의해 억세스 가능한 데이터를 저장할 수 있는 다른 타입들의 컴퓨터 리드 가능 매체들이 사용될 수 있고, 또한 예시적인 동작 환경에서 사용될 수 있다는 것을 인식할 것이다. 여기에서 사용되는 바와 같이, "컴퓨터-리드 가능 매체"는 컴퓨터 프로그램의 실행 가능한 인스트럭션들을 전자, 마그네틱, 광, 및 전자기 포맷 중 하나 또는 그 이상에 저장하기 위한 임의의 적합한 매체들 중 하나 혹은 그 이상을 포함할 수 있고, 따라서 상기 인스트럭션 실행 머신, 장치, 장치, 또는 디바이스는 상기 설명된 방법들을 수행하기 위해 상기 컴퓨터 리드 가능 매체로부터 상기 인스트럭션들을 리드(또는 인출(fetch))할 수 있고, 상기 인스트럭션들을 실행할 수 있다. 종래의 예시적인 컴퓨터 리드 가능 매체의 불완전 리스트는 휴대용 컴퓨터 디스켓; RAM; ROM; 삭제 가능 프로그램 가능 리드 온니 메모리(EPROM 또는 플래시 메모리); 휴대용 컴팩트 디스크(compact disc: CD), 휴대용 디지털 비디오 디스크(digital video disc: DVD), 고화질 DVD(high definition DVD: HD-DVD), 블루-레이(BLU-RAY) 디스크를 포함하는 광 스토리지 디바이스들; 등을 포함한다.
운영 장치(1022), 하나 또는 그 이상의 어플리케이션들 프로그램들(1024), 프로그램 데이터(1026), 및 다른 프로그램 모듈들(1028)을 포함하는, 다수의 프로그램 모듈들이 상기 스토리지(1006), ROM(1016) 또는 RAM (1018)에 저장될 수 있다. 사용자는 데이터 입력 모듈(1008)을 통해 상기 하드웨어 디바이스에(1000)에 명령(command)들 및 정보를 입력한다. 상기 데이터 입력 모듈(1008)은 키보드, 터치 스크린, 포인팅 디바이스, 등과 같은 메커니즘들을 포함할 수 있다. 다른 외부 입력 디바이스들(미도시)이 외부 데이터 입력 인터페이스(1030)를 통해 상기 하드웨어 디바이스(1000)에 연결된다. 예를 들어, 그렇다고 제한되는 것은 아닌, 외부 입력 디바이스들은 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너, 등을 포함할 수 있다. 일부 실시 예들에서, 외부 입력 디바이스들은 비디오 카메라, 스틸 카메라, 등과 같은 비디오 또는 오디오 입력 디바이스들을 포함할 수 있다. 상기 데이터 입력 모듈(1008)은 상기 디바이스(1000)의 하나 또는 그 이상의 사용자들로부터 입력을 수신하고, 그 입력을 상기 버스(1014)를 통해 상기 프로세싱 유닛(1002) 및/또는 상기 메모리(1004)로 전달할 수 있다.
디스플레이(1032)는 또한 상기 디스플레이 어댑터(1010)를 통해 상기 버스(1014)에 연결된다. 상기 디스플레이(1032)는 상기 디바이스(1000)의 출력을 하나 또는 그 이상의 사용자들에게 디스플레이하도록 구성될 수 있다. 일부 실시 예들에서, 예를 들어, 터치 스크린과 같은 주어진 디바이스는 상기 데이터 입력 모듈(1008) 및 디스플레이(1032) 둘 다로서 기능할 수 있다. 외부 디스플레이 디바이스들은 또한 상기 외부 디스플레이 인터페이스(1034)를 통해 상기 버스(1014)에 연결될 수 있다. 도시되어 있지 않은, 스피커들 및 프린터들과 같은 외부 주변 장치 출력 디바이스들이 상기 하드웨어 디바이스(1000)에 연결될 수 있다.
상기 하드웨어 디바이스(1000)는 상기 통신 인터페이스(1012)를 통해 하나 또는 그 이상의 리모트 노드(remote node)들(미도시)에 대한 논리 연결들을 사용하여 네트워크 환경에서 동작할 수 있다. 상기 리모트 노드는 다른 컴퓨터, 서버, 라우터, 피어 디바이스 또는 다른 공통 네트워크일 수 있고, 일반적으로 상기 하드웨어 디바이스(1000)에 관하여 상기에서 설명된 엘리먼트들 중 많은 엘리먼트들 또는 모두를 포함한다. 상기 통신 인터페이스(1012)는 무선 네트워크 및/또는 유선 네트워크와 인터페이스할 수 있다. 무선 네트워크들의 예제들은, 예를 들어, 블루투스(BLUETOOTH) 네트워크, 무선 개인 영역 네트워크, 무선 802.11 로컬 영역 네트워크(local area network: LAN), 및/또는 무선 텔레포니 네트워크(wireless telephony network)(예를 들어, 셀룰러, PCS, 또는 GSM 네트워크)를 포함한다. 유선 네트워크들의 예제들은, 예를 들어, LAN, 광섬유 네트워크, 유선 개인 영역 네트워크, 텔레포니 네트워크, 및/또는 광역 네트워크(wide area network: WAN)를 포함한다. 그와 같은 네트워킹 환경들은 인트라넷(intranet)들, 인터넷, 오피스(office)들, 전사적 컴퓨터 네트워크(enterprise-wide computer network)들 등에서는 아주 일반적이다. 일부 실시 예들에서, 상기 통신 인터페이스(1012)는 상기 메모리(1004)와 다른 디바이스들 간의 직접 메모리 억세스(direct memory access: DMA) 전송들을 지원하도록 구성된 로직을 포함할 수 있다.
네트워크 환경에서, 상기 하드웨어 디바이스(1000)에 관해 설명된 프로그램 모듈들, 또는 그 일부들은, 예를 들어, 서버와 같은 리모트 스토리지 디바이스에 저장될 수 있다. 상기 하드웨어 디바이스(1000)와 다른 디바이스들 간의 통신 링크를 설정하기 위한 다른 하드웨어 및/또는 소프트웨어가 사용될 수 있다는 것이 이해될 것이다.
도 10에 도시되어 있는 상기 하드웨어 디바이스(1000)의 배열은 하나의 가능한 구현일 뿐 다른 배열들도 가능하다는 것이 이해되어야만 할 것이다. 또한, 청구항들에 의해 정의되고, 하기에서 설명되고, 다양한 블록 다이아그램들에 도시되어 있는 다양한 장치 컴포넌트들(및 수단)은 본 명세서에서 설명된 기능성을 수행하도록 구성되는 논리 컴포넌트들을 나타낸다는 것이 이해되어야만 할 것이다. 예를 들어, 이러한 장치 컴포넌트들(및 수단) 중 하나 또는 그 이상은 상기 하드웨어 디바이스(1000)의 배열로 도시되어 있는 컴포넌트들 중 적어도 일부에 의해 전체적으로 또는 부분적으로 실현될 수 있다.
또한, 이들 컴포넌트들 중 적어도 하나는 전자 하드웨어 컴포넌트로서 적어도 구현되고, 따라서 머신을 구성하지만, 상기 다른 컴포넌트들은 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합으로 구현될 수 있다. 보다 구체적으로, 청구항들에 의해 정의되는 적어도 하나의 컴포넌트는, 인스트럭션 실행 머신(예를 들어, 프로세서-기반 또는 프로세서-포함 머신) 및/또는 도 10에 도시되어 있는 컴포넌트들과 같은, 특수 회로들 및 회로 성분(circuitry)(예를 들어, 특수 기능을 수행하기 위해 상호 연결되는 개별 논리 게이트들)과 같은 전자 하드웨어 컴포넌트로 적어도 구현된다.
다른 컴포넌트들은 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합으로 구현될 수 있다. 또한, 여전히 본 명세서에서 설명되어 있는 기능성을 달성하는 동안, 이들 다른 컴포넌트들 중 일부 또는 전부는 조합될 수 있고, 일부는 완전히 생략될 수 있고, 추가적인 컴포넌트들이 추가될 수 있다. 따라서, 본 명세서에서 설명되고 있는 본 주제는 많은 다른 변형들로 구현될 수 있고, 그와 같은 변형들 모두는 청구하고자 하는 범위 내에 존재하는 것으로 고려된다.
상기의 설명들에서, 본 주제는 달리 지시되지 않는 한, 하나 또는 그 이상의 디바이스들에 의해 수행되는 행동(act)들 및 동작들의 상징적 표현들을 참조하여 설명된다. 그와 같이, 때때로 컴퓨터-실행 중인 것으로 언급되는 그와 같은 행동들 및 동작들은 구조화된 형태의 데이터의 상기 프로세싱 유닛에 의한 조작을 포함하는 것으로 이해된다. 이 조작은 상기 데이터를 변환하거나 또는 상기 컴퓨터의 메모리 장치의 위치들에서 상기 데이터를 유지하며, 이는 해당 기술 분야의 당업자들에 의해 잘 이해되는 방식으로 상기 디바이스의 동작을 재구성하거나 또는 변경한다. 데이터가 유지되는 상기 데이터 구조들은 상기 데이터의 형식으로 정의되는 특정 속성들을 가지는 상기 메모리의 물리적 위치들이다. 하지만, 본 주제가 문맥 상에서 설명되지만, 해당 기술 분야의 당업자들이라면 이하에서 설명되는 다양한 행위들 및 동작들이 하드웨어로 구현될 수도 있다는 것을 인식할 수 있으므로 이는 제한하는 것으로 의도되지는 않는다.
상기에서 설명되는 본 주제의 이해를 용이하게 하기 위해, 많은 측면들이 일련의 액션들의 측면들에서 설명된다. 청구항들에 의해 정의되는 이러한 측면들 중 적어도 하나는 전자 하드웨어 컴포넌트에 의해 수행된다. 예를 들어, 상기 다양한 액션들이 특수 회로들 또는 회로 성분에 의해, 하나 또는 그 이상의 프로세서들에 의해 실행되는 프로그램 인스트럭션들에 의해, 또는 둘의 조합에 의해 수행될 수 있다는 것이 인식될 것이다. 일련의 액션들에 대한 본 명세서에서의 설명은 해당 시퀀스를 수행하기 위해 설명되는 특정 순서를 반드시 따라야만 함을 나타내는 것을 의도로 하지는 않는다. 본 명세서에서 설명되는 모든 방법들은 본 명세서에서 달리 지시되거나 문맥 상 명백하게 모순되지 않는 한 임의의 적합한 순서로 수행될 수 있다.
하나 또는 그 이상의 구현들이 일 예로서 그리고 특정 실시 예들의 측면들에서 설명되었지만, 하나 또는 그 이상의 구현들이 상기 개시된 실시 예들로 제한되지 않는다는 것이 이해될 것이다. 반대로, 해당 기술 분야의 당업자들에게 명백한 바와 같이, 다양한 수정들 및 유사한 배열들을 커버하는 것이 의도된다. 따라서, 첨부된 청구항들의 범위는 그와 같은 모든 수정들 및 유사한 배열들을 포함하도록 가장 광범위하게 부여되어야만 한다.

Claims (13)

  1. 장치에 있어서,
    적어도 하나의 태그된 오브젝트(tagged object)를 포함하는 구문(phrase)을 수신하고;
    상기 구문에서 각 태그된 오브젝트의 인스턴시에이션(instantiation)들로 인스턴시에이트된(instantiated) 구문들을 생성하고;
    상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈(paraphrase)들로 자연어 구문들의 리스트들을 생성하고;
    각 자연어 구문의 발생들에 기반하여 자연어 구문들의 각 리스트에서 자연어 구문들을 정렬함으로써 자연어 구문들의 정렬된 리스트들을 생성하고; 및
    상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들과 상기 자연어 구문들의 정렬된 리스트들에 기반하는 자연어 구문들의 향상된 집합 중 하나에 주석을 달음으로써 주석이 달린 자연어 구문들을 생성하도록 구성되는 하나 또는 그 이상의 프로세서들을 포함하는 상기 장치.
  2. 제1항에 있어서,
    상기 다수의 인스트럭션(instruction)들은, 실행될 때, 상기 하나 또는 그 이상의 프로세서들이:
    자연어 구문을 수신하는 것에 대한 응답으로, 상기 자연어 구문에서 오브젝트의 제1 어트리뷰트(attribute) 및 제2 어트리뷰트를 식별하고;
    각 어트리뷰트를 다른 태그된 오브젝트로서 상기 자연어 구문에서 상기 오브젝트의 앞에 삽입하고, 각 어트리뷰트를 추가적인 태그된 오브젝트로 상기 자연어 구문에서 상기 오브젝트의 뒤에 삽입함으로써 상기 각 어트리뷰트에 대한 자연어 구문의 2개의 순열(permutation)들을 생성하고; 및
    상기 제1 어트리뷰트와 연관되는 인스턴시에이트된 구문의 순열을 상기 제2 어트리뷰트와 연관되는 인스턴시에이트된 구문의 순열과 조합함으로써 조합된 인스턴시에이트된 구문들을 생성하는 것을 더 야기할 것인 상기 장치.
  3. 제1항에 있어서,
    상기 다수의 인스트럭션(instruction)들은, 실행될 때, 상기 하나 또는 그 이상의 프로세서들이:
    오브젝트를 상기 적어도 하나의 태그된 오브젝트 중 태그된 오브젝트의 어트리뷰트(attribute)로 식별하고; 및
    상기 오브젝트를 추가적인 태그된 오브젝트로 상기 구문에 삽입하도록 더 야기할 것이며,
    상기 오브젝트를 식별하는 것은 식별된 오브젝트들을 상기 태그된 오브젝트의 어트리뷰트들로 출력하고, 적어도 하나의 식별된 오브젝트의 선택을 수신하는 것을 포함하고, 상기 오브젝트를 삽입하는 것은 상기 적어도 하나의 식별된 오브젝트를 적어도 하나의 추가적인 태그된 오브젝트로 상기 구문에 삽입하는 것을 포함하는 상기 장치.
  4. 제1항에 있어서,
    상기 다수의 인스트럭션(instruction)들은, 실행될 때, 상기 하나 또는 그 이상의 프로세서들이:
    상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트에서 각 태그된 오브젝트의 인스턴스들을 대체함으로써 태그된 자연어 구문들의 정렬된 리스트들을 생성하고;
    서로 매치되는 해당하는 태그된 자연어 구문들을 병합함으로써 태그된 자연어 구문들의 병합된 리스트를 생성하고;
    각 해당하는 자연어 구문의 발생들에 기반하여 상기 태그된 자연어 구문들의 병합된 리스트를 정렬함으로써 태그된 자연어 구문들의 정렬된 리스트를 생성하고; 및
    상기 태그된 자연어 구문들의 정렬된 리스트에서 각 태그된 오브젝트의 인스턴시에이션들로 상기 자연어 구문들의 향상된 집합을 생성하도록 더 야기할 것인 상기 장치.
  5. 제1항에 있어서,
    상기 다수의 인스트럭션(instruction)들은, 실행될 때, 상기 하나 또는 그 이상의 프로세서들이:
    상기 주석이 달린 자연어 구문들을 사용하여 자연어 이해 엔진이 사용자로부터의 자연어 구문을 이해하도록 트레이닝시키고, 따라서 응답을 가능하게 할 수 있도록 더 야기할 것인 상기 장치.
  6. 제1항에 있어서,
    상기 구문은 동사를 포함하고, 주석이 달린 자연어 구문들을 생성하는 것은 상기 동사를 사용하여 상기 자연어 구문들의 정렬된 리스트들 및 상기 자연어 구문들의 정렬된 리스트들에 기반하는 상기 자연어 구문들의 향상된 집합 중 하나에 주석을 다는 것을 포함하는 상기 장치.
  7. 제1항에 있어서,
    상기 자연어 구문들의 정렬된 리스트들을 생성하는 것은 상기 정렬된 리스트들에서 임계 순서 값보다 낮게 정렬된 임의의 자연어 구문들을 삭제하는 것을 포함하는 상기 장치.
  8. 방법에 있어서,
    적어도 하나의 태그된 오브젝트(tagged object)를 포함하는 구문(phrase)을 수신하는 과정;
    상기 구문에서 각 태그된 오브젝트의 인스턴시에이션(instantiation)들로 인스턴시에이트된(instantiated) 구문들을 생성하는 과정;
    상기 인스턴시에이트된 구문들 각각의 해당하는 패러프레이즈(paraphrase)들로 자연어 구문들의 리스트들을 생성하는 과정;
    각 자연어 구문의 발생들에 기반하여 자연어 구문들의 각 리스트에서 자연어 구문들을 정렬함으로써 자연어 구문들의 정렬된 리스트들을 생성하는 과정; 및
    상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트들과 상기 자연어 구문들의 정렬된 리스트들에 기반하는 자연어 구문들의 향상된 집합 중 하나에 주석을 달음으로써 주석이 달린 자연어 구문들을 생성하는 과정을 포함하는 상기 방법.
  9. 제8항에 있어서,
    자연어 구문을 수신하는 것에 대한 응답으로, 상기 자연어 구문에서 오브젝트의 제1 어트리뷰트(attribute) 및 제2 어트리뷰트를 식별하는 과정;
    각 어트리뷰트를 다른 태그된 오브젝트로서 상기 자연어 구문에서 상기 오브젝트의 앞에 삽입하거고, 각 어트리뷰트를 추가적인 태그된 오브젝트로 상기 자연어 구문에서 상기 오브젝트의 뒤에 삽입함으로써 상기 각 어트리뷰트에 대한 자연어 구문의 2개의 순열(permutation)들을 생성하는 과정; 및
    상기 제1 어트리뷰트와 연관되는 인스턴시에이트된 구문의 순열을 상기 제2 어트리뷰트와 연관되는 인스턴시에이트된 구문의 순열과 조합함으로써 조합된 인스턴시에이트된 구문들을 생성하는 과정을 더 포함하는 상기 방법.
  10. 제9항에 있어서,
    오브젝트를 상기 적어도 하나의 태그된 오브젝트 중 태그된 오브젝트의 어트리뷰트(attribute)로 식별하는 과정; 및
    상기 오브젝트를 추가적인 태그된 오브젝트로 상기 구문에 삽입하는 과정을 더 포함하며,
    상기 오브젝트를 식별하는 과정은 식별된 오브젝트들을 상기 태그된 오브젝트의 어트리뷰트들로 출력하고, 적어도 하나의 식별된 오브젝트의 선택을 수신하는 과정을 포함하고, 상기 오브젝트를 삽입하는 과정은 상기 적어도 하나의 식별된 오브젝트를 적어도 하나의 추가적인 태그된 오브젝트로 상기 구문에 삽입하는 과정을 포함하는 상기 방법.
  11. 제8항에 있어서,
    상기 구문에서 각 태그된 오브젝트를 사용하여 상기 자연어 구문들의 정렬된 리스트에서 각 태그된 오브젝트의 인스턴스들을 대체함으로써 태그된 자연어 구문들의 정렬된 리스트들을 생성하는 과정;
    서로 매치되는 해당하는 태그된 자연어 구문들을 병합함으로써 태그된 자연어 구문들의 병합된 리스트를 생성하는 과정;
    각 해당하는 자연어 구문의 발생들에 기반하여 상기 태그된 자연어 구문들의 병합된 리스트를 정렬함으로써 태그된 자연어 구문들의 정렬된 리스트를 생성하는 과정; 및
    상기 태그된 자연어 구문들의 정렬된 리스트에서 각 태그된 오브젝트의 인스턴시에이션들로 상기 자연어 구문들의 향상된 집합을 생성하는 과정을 더 포함하는 상기 방법.
  12. 제8항에 있어서,
    상기 주석이 달린 자연어 구문들을 사용하여 자연어 이해 엔진이 사용자로부터의 자연어 구문을 이해하도록 트레이닝시키고, 따라서 응답을 가능하게 할 수 있는 과정을 더 포함하는 상기 방법.
  13. 제8항에 있어서,
    상기 구문은 동사를 포함하고, 주석이 달린 자연어 구문들을 생성하는 과정은 상기 동사를 사용하여 상기 자연어 구문들의 정렬된 리스트들 및 상기 자연어 구문들의 정렬된 리스트들에 기반하는 상기 자연어 구문들의 향상된 집합 중 하나에 주석을 다는 과정을 포함하는 상기 방법.
KR1020217024438A 2018-05-21 2019-10-29 주석이 달린 자연어 구문들을 생성하는 방법 및 장치 KR20210099661A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862674397P 2018-05-21 2018-05-21
US16/236,886 US11036926B2 (en) 2018-05-21 2018-12-31 Generating annotated natural language phrases
US16/236,886 2018-12-31
PCT/KR2019/014373 WO2020141706A1 (en) 2018-05-21 2019-10-29 Method and apparatus for generating annotated natural language phrases

Publications (1)

Publication Number Publication Date
KR20210099661A true KR20210099661A (ko) 2021-08-12

Family

ID=68533404

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217024438A KR20210099661A (ko) 2018-05-21 2019-10-29 주석이 달린 자연어 구문들을 생성하는 방법 및 장치

Country Status (4)

Country Link
US (1) US11036926B2 (ko)
KR (1) KR20210099661A (ko)
CN (1) CN113228027A (ko)
WO (1) WO2020141706A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11036926B2 (en) * 2018-05-21 2021-06-15 Samsung Electronics Co., Ltd. Generating annotated natural language phrases
CN111401571A (zh) * 2020-04-24 2020-07-10 南京莱科智能工程研究院有限公司 基于交互式数据标注的自学习系统

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070016401A1 (en) 2004-08-12 2007-01-18 Farzad Ehsani Speech-to-speech translation system with user-modifiable paraphrasing grammars
US20160004766A1 (en) * 2006-10-10 2016-01-07 Abbyy Infopoisk Llc Search technology using synonims and paraphrasing
US8972268B2 (en) 2008-04-15 2015-03-03 Facebook, Inc. Enhanced speech-to-speech translation system and methods for adding a new word
JP5126068B2 (ja) 2006-12-22 2013-01-23 日本電気株式会社 文言い換え方法、プログラムおよびシステム
US20080167876A1 (en) * 2007-01-04 2008-07-10 International Business Machines Corporation Methods and computer program products for providing paraphrasing in a text-to-speech system
US20080270119A1 (en) * 2007-04-30 2008-10-30 Microsoft Corporation Generating sentence variations for automatic summarization
US9436759B2 (en) 2007-12-27 2016-09-06 Nant Holdings Ip, Llc Robust information extraction from utterances
US8150676B1 (en) * 2008-11-25 2012-04-03 Yseop Sa Methods and apparatus for processing grammatical tags in a template to generate text
US8880400B2 (en) 2009-03-03 2014-11-04 Mitsubishi Electric Corporation Voice recognition device
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US9600566B2 (en) * 2010-05-14 2017-03-21 Microsoft Technology Licensing, Llc Identifying entity synonyms
US9672204B2 (en) * 2010-05-28 2017-06-06 Palo Alto Research Center Incorporated System and method to acquire paraphrases
CN104484319A (zh) 2010-09-24 2015-04-01 新加坡国立大学 用于自动化文本校正的方法和系统
US9552353B2 (en) * 2011-01-21 2017-01-24 Disney Enterprises, Inc. System and method for generating phrases
US8972240B2 (en) * 2011-05-19 2015-03-03 Microsoft Corporation User-modifiable word lattice display for editing documents and search queries
JP5942559B2 (ja) 2012-04-16 2016-06-29 株式会社デンソー 音声認識装置
WO2015117657A1 (en) 2014-02-06 2015-08-13 Qatar Foundation A query expansion system and method using language and language variants
US9378273B2 (en) * 2014-03-13 2016-06-28 International Business Machines Corporation System and method for question answering by reformulating word problems
US9892208B2 (en) 2014-04-02 2018-02-13 Microsoft Technology Licensing, Llc Entity and attribute resolution in conversational applications
KR102033435B1 (ko) * 2014-11-19 2019-11-11 한국전자통신연구원 자연어 질의응답 시스템과 방법 및 패러프라이즈 모듈
US9335991B1 (en) 2015-09-18 2016-05-10 ReactiveCore LLC System and method for providing supplemental functionalities to a computer program via an ontology instance
US10325026B2 (en) * 2015-09-25 2019-06-18 International Business Machines Corporation Recombination techniques for natural language generation
WO2017061027A1 (ja) * 2015-10-09 2017-04-13 三菱電機株式会社 言語モデル生成装置、言語モデル生成方法とそのプログラム、音声認識装置、および音声認識方法とそのプログラム
KR102450853B1 (ko) 2015-11-30 2022-10-04 삼성전자주식회사 음성 인식 장치 및 방법
KR102267561B1 (ko) 2016-01-28 2021-06-22 한국전자통신연구원 음성 언어 이해 장치 및 방법
JP6671027B2 (ja) * 2016-02-01 2020-03-25 パナソニックIpマネジメント株式会社 換言文生成方法、該装置および該プログラム
US10509862B2 (en) * 2016-06-10 2019-12-17 Apple Inc. Dynamic phrase expansion of language input
KR20180062003A (ko) 2016-11-30 2018-06-08 한국전자통신연구원 음성 인식 오류 교정 방법
CN108009155A (zh) 2017-12-22 2018-05-08 联想(北京)有限公司 数据处理方法及系统和服务器
US10929606B2 (en) * 2017-12-29 2021-02-23 Samsung Electronics Co., Ltd. Method for follow-up expression for intelligent assistance
US11036926B2 (en) * 2018-05-21 2021-06-15 Samsung Electronics Co., Ltd. Generating annotated natural language phrases

Also Published As

Publication number Publication date
US11036926B2 (en) 2021-06-15
WO2020141706A1 (en) 2020-07-09
US20190354578A1 (en) 2019-11-21
CN113228027A (zh) 2021-08-06
EP3877891A1 (en) 2021-09-15

Similar Documents

Publication Publication Date Title
US11657231B2 (en) Capturing rich response relationships with small-data neural networks
US20230142217A1 (en) Model Training Method, Electronic Device, And Storage Medium
US9098489B2 (en) Method and system for semantic searching
CN109726298B (zh) 适用于科技文献的知识图谱构建方法、系统、终端及介质
US9047275B2 (en) Methods and systems for alignment of parallel text corpora
WO2022218186A1 (zh) 个性化知识图谱的生成方法、装置及计算机设备
RU2679988C1 (ru) Извлечение информационных объектов с помощью комбинации классификаторов
KR20100038378A (ko) 지능적인 텍스트 주석을 위한 방법, 시스템 및 컴퓨터 프로그램
US20160224537A1 (en) Method and system for machine-based extraction and interpretation of textual information
US20190392035A1 (en) Information object extraction using combination of classifiers analyzing local and non-local features
US11449687B2 (en) Natural language text generation using semantic objects
WO2001035216A2 (en) Any-to-any component computing system
US11537797B2 (en) Hierarchical entity recognition and semantic modeling framework for information extraction
US20180081861A1 (en) Smart document building using natural language processing
US10977155B1 (en) System for providing autonomous discovery of field or navigation constraints
WO2021129074A1 (zh) 用于处理程序代码中的变量的引用的方法和系统
KR20210099661A (ko) 주석이 달린 자연어 구문들을 생성하는 방법 및 장치
US11443113B2 (en) Sourcing object creation from natural language inputs
US8862609B2 (en) Expanding high level queries
US10929446B2 (en) Document search apparatus and method
US10769386B2 (en) Terminology proposal engine for determining target language equivalents
US11645095B2 (en) Generating and utilizing a digital knowledge graph to provide contextual recommendations in digital content editing applications
US11017172B2 (en) Proposition identification in natural language and usage thereof for search and retrieval
JP5900486B2 (ja) 関連仕様対応付けシステム、関連仕様対応付け方法およびプログラム
WO2016056043A1 (ja) 文章検索方法および文章検索システム

Legal Events

Date Code Title Description
A201 Request for examination