"의도 인식 자"는 어떻게 작동합니까?


11

아마존의 Alexa , Nuance 's Mix 및 Facebook의 Wit.ai는 모두 비슷한 시스템을 사용하여 텍스트 명령을 의도로 변환하는 방법, 즉 컴퓨터가 이해할 수있는 방법을 지정합니다. 나는 이것의 "공식적인"이름이 무엇인지 잘 모르겠지만 "의도 인식"이라고 부릅니다. 기본적으로 "조명을 50 % 밝기로 설정하십시오"에서로 전환하는 방법은입니다 lights.setBrightness(0.50).

그들이 지정하는 방법은 개발자가 의도와 연관되고 선택적으로 "엔터티"(기본적으로 매개 변수)의 위치로 태그가 지정된 "샘플 발화"목록을 제공하는 것입니다. 다음은 Wit.ai의 예입니다.

wit.ai 예제

내 질문은 : 이 시스템어떻게 작동합니까? 그것들이 모두 매우 비슷하기 때문에 나는 그들이 사용하는 약간의 일이 있다고 가정합니다. 누구나 그것이 무엇인지 알고 있습니까?

흥미롭게도 Houndify정규 표현식 과 비슷한 다른 시스템을 사용합니다 ["please"] . ("activate" | "enable" | "switch on" | "turn on") . [("the" | "my")] . ("lights" | "lighting") . ["please"]. Alexa, Wit.ai 및 Mix는 별도의 Speech-> Text 및 Text-> Intent 시스템을 가지고있는 것처럼 보이기 때문에 음성 인식 시스템의 빔 검색에 통합되어 있다고 가정합니다.

편집 : 나는 비공식 음성 명령을 통해 인간-로봇 상호 작용을위한 메커니즘을 시작점을 발견했습니다 . 발화를 비교하기 위해 잠재 성 의미 분석이라는 것을 사용합니다. 나는 그것에 대해 읽을 것입니다. 적어도 그것은 인용 네트워크에서 출발점을 주었다.

편집 2 : LSA는 본질적으로 각 텍스트 단락에서 사용 된 단어 (Bag of Words)를 비교합니다. 나는 단어 순서를 완전히 잃어 버리기 때문에이 경우에 어떻게 잘 작동하는지 알 수 없습니다. 어쨌든 단어 순서는 이러한 종류의 명령에별로 중요하지 않습니다.

편집 3 : 숨겨진 주제 마르코프 모델 은 재미있을 것 같습니다.


이 게시물은 의도 분류에 대해 자세히 설명합니다 : mrbot.ai/blog/natural-language-processing/…
znat

이것은 내 질문에서 언급 한 "단어"방법을 사용하는 것으로 보입니다. 기본적으로 문장에 단어 벡터를 추가하십시오. 그래도 작동 방식은 아닙니다. Wit와 Nuance의 인터페이스는 단어가 쉽게 수행 할 수없는 엔티티를 인식 함을 보여줍니다. 또한 단어 모음은 모든 순서를 잃어 버리므로 "10 과거 5에 알람 설정"과 같은 항목은 "5 과거 10에 알람 설정"과 구별 할 수 없습니다. 더 많은 일이있을 것입니다.
Timmmm

개체 추출은 시퀀스가 ​​중요한 또 다른 문제입니다. 데이터가 많으면 Rnn이 작동하고 챗봇에서 자주 발생하는 작은 데이터 집합에서 조건부 임의 필드가 잘 작동합니다.
znat

좋아, "... RNN이 작동 할 것"보다 더 자세한 답변을 찾고 있습니다. 대부분의 최신 시퀀스 학습 시스템은 RNN을 사용하므로 주어진 것처럼 보입니다.
Timmmm

의도는 문장의 일반적인 의미 (벡터의 평균)에 관한 것이며 엔터티는 문장의 문맥 (주변 단어)을 배우는 것에 관한 것입니다. Rnn 또는 CRF는 시퀀스에서 학습하기 때문에 사용할 수있는 알고리즘 일뿐입니다. 자세히 배우고 싶다면 Rasa 소스 코드를 살펴보십시오
znat

답변:


4

귀하의 질문에 직접 답변하지는 않지만 자동 질문 답변 분야에 관심이있을 수 있습니다 . 자연어 텍스트 질문에 대답하려면 먼저 이해해야하며 문제와 겹칩니다.

좋은 자원은 Jurafsky와 Manning과정 입니다. 특히 의미론 및 질문 응답에 대한 섹션이 찾고있는 내용에 도움이 될 수 있습니다. YouTube 에서 제공되는 강의 비디오가 여기에 있습니다 .


나는 당신의 대답의 첫 부분이 매우 재미 있지만 유익한 것을 발견했습니다.
Diego

아마도 이것은 질문에 대답하지 않기 때문에 주석으로 더 좋을 것입니다.
kbrose 2018

2

이 게시물 에는 접근 방식이 있습니다. 기본적으로 그들은 단어의 가방을 사용합니다-단어를 희소 벡터로 변환 한 다음 더합니다.

그것은 꽤 잘 작동하는 것처럼 보이지만 하나의 주요 결함은 대답이 단어 순서와 무관하다는 것입니다. 따라서 특별한 경우를 제외하고는 "파운드의 킬로그램"과 같은 쿼리를 수행 할 수 없습니다.

그러나 Alexa로 텍스트를 작성했으며 단어 순서 변경에 상당히 둔감하므로 비슷한 것을 사용합니다.


궁금-희소 벡터가 Naive Bayesian보다 어떤 이점이 있습니까? 둘 다 순진한 단어 구성 가정에서 선형으로 분리 가능한 문제를 해결합니다
Angad
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.