Alexa da Amazon , Mix da Nuance e Wit.ai do Facebook usam um sistema semelhante para especificar como converter um comando de texto em uma intenção - ou seja, algo que um computador entenderia. Não sei ao certo qual é o nome "oficial" para isso, mas o chamo de "reconhecimento de intenção". Basicamente, uma maneira de passar de "defina minhas luzes para 50% de brilho" para lights.setBrightness(0.50)
.
A maneira como eles são especificados é solicitando que o desenvolvedor forneça uma lista de "declarações de amostra" associadas a uma intenção e opcionalmente identificadas com os locais de "entidades" (basicamente parâmetros). Aqui está um exemplo do Wit.ai:
Minha pergunta é: como esses sistemas funcionam? Como todos eles são muito parecidos, presumo que exista algum trabalho seminal que todos utilizem. Alguém sabe o que é isso?
Curiosamente Houndify usa um sistema diferente, que é mais parecido com expressões regulares: ["please"] . ("activate" | "enable" | "switch on" | "turn on") . [("the" | "my")] . ("lights" | "lighting") . ["please"]
. Suponho que isso esteja integrado à busca por feixe do sistema de reconhecimento de voz, enquanto Alexa, Wit.ai e Mix parecem ter sistemas separados de Fala-> Texto e Texto-> Intenção.
Edit: Encontrei um ponto de partida - Um Mecanismo de Interação Humano-Robô através de Comandos Informais de Voz . Ele usa algo chamado Análise Semântica Latente para comparar enunciados. Eu vou ler sobre isso. Pelo menos, me deu um ponto de partida na rede de citações.
Edit 2: O LSA está comparando essencialmente as palavras usadas (Bag of Words) em cada parágrafo do texto. Não vejo como ele pode funcionar muito bem nesse caso, pois perde totalmente a ordem das palavras. Embora talvez a ordem das palavras não importe muito para esses tipos de comandos.
Editar 3: Tópico oculto Os modelos de Markov parecem interessantes.