Come funzionano i "riconoscitori di intenti"?


11

Amazon Alexa , Nuance's Mix e Facebook Wit.ai utilizzano tutti un sistema simile per specificare come convertire un comando di testo in un intento, ovvero qualcosa che un computer potrebbe capire. Non sono sicuro di quale sia il nome "ufficiale" per questo, ma lo chiamo "riconoscimento intento". Fondamentalmente un modo per passare da "per favore imposta le mie luci al 50% di luminosità" su lights.setBrightness(0.50).

Il modo in cui sono specificati è facendo in modo che lo sviluppatore fornisca un elenco di "espressioni di esempio" che sono associate a un intento e facoltativamente taggate con posizioni di "entità" (sostanzialmente parametri). Ecco un esempio da Wit.ai:

esempio wit.ai

La mia domanda è: come funzionano questi sistemi? Dal momento che sono tutti molto simili suppongo che ci sia un lavoro fondamentale che tutti usano. Qualcuno sa di cosa si tratta?

È interessante notare che Houndify utilizza un sistema diverso che è più simile a regex: ["please"] . ("activate" | "enable" | "switch on" | "turn on") . [("the" | "my")] . ("lights" | "lighting") . ["please"]. Suppongo che sia integrato nella ricerca del raggio del loro sistema di riconoscimento vocale, mentre Alexa, Wit.ai e Mix sembrano avere sistemi Speech-> Text e Text-> Intent separati.

Modifica: ho trovato un punto di partenza - Un meccanismo per l'interazione uomo - robot tramite comandi vocali informali . Usa qualcosa chiamato Analisi semantica latente per confrontare le espressioni. Lo leggerò. Almeno mi ha dato un punto di partenza nella rete di citazioni.

Modifica 2: LSA sta essenzialmente confrontando le parole usate (Bag of Words) in ogni paragrafo del testo. Non vedo come possa funzionare molto bene in questo caso in quanto perde totalmente l'ordine delle parole. Anche se forse l'ordine delle parole non ha molta importanza per questo tipo di comandi.

Modifica 3: Argomento nascosto I modelli di Markov sembrano essere interessanti.


Questo post spiega in dettaglio la classificazione degli intenti: mrbot.ai/blog/natural-language-processing/…
znat,

Questo sembra usare il metodo "bag of words" che ho citato nella mia domanda. Fondamentalmente basta aggiungere la parola vettori nella frase. Non può essere così come funziona però. Le interfacce di Wit e Nuance mostrano che riconoscono le entità che un sacco di parole non può fare facilmente. Anche un sacco di parole perde tutto l'ordinamento, quindi qualcosa come "Imposta un allarme per le 5 e 10 precedenti" sarebbe indistinguibile da "Imposta una sveglia per le 10 e 5 precedenti". Ci deve essere qualcosa di più in corso.
Timmmm,

L'estrazione di entità è un altro problema in cui la sequenza è importante. Se disponi di molti dati un Rnn funzionerà, in set di dati più piccoli, frequenti nei chatbot, i campi casuali condizionali funzionano molto bene
znat,

Ok, quindi ... Sto cercando una risposta più dettagliata di "un RNN funzionerà". La maggior parte dei moderni sistemi di apprendimento delle sequenze utilizza le RNN in modo da sembrare scontato.
Timmmm,

gli intenti riguardano il significato generale delle frasi (media dei vettori) e le entità riguardano l'apprendimento del contesto (parole circostanti) in cui appaiono. Rnn o CRF sono solo algoritmi che possono essere utilizzati perché apprendono dalle sequenze. Se vuoi imparare in dettaglio, guarda il codice sorgente di Rasa
znat,

Risposte:


4

Sebbene non risponda direttamente alla tua domanda, potresti essere interessato al campo della risposta automatica alle domande . Per rispondere alle domande di testo in linguaggio naturale devono prima essere comprese, il che si sovrappone al problema.

Una buona risorsa è il corso di Jurafsky e Manning . In particolare, le sezioni sulla semantica e sulla risposta alle domande possono aiutare con ciò che stai cercando. Ci sono video di lezioni di accompagnamento disponibili su YouTube qui .


Trovo la prima parte della tua risposta molto divertente ma istruttiva.
Diego,

Forse sarebbe meglio come commento poiché, come ammetti, non risponde alla domanda.
kbrose,

2

Questo post ha un approccio. Fondamentalmente usano un sacco di parole: convertono le parole in vettori sparsi e poi le sommano.

Sembra funzionare abbastanza bene, ma uno dei maggiori difetti è che la risposta è indipendente dall'ordine delle parole, quindi non puoi fare domande come "Quanti chili in una sterlina" a meno che tu non le faccia un caso speciale.

Comunque ho scritto un messaggio con Alexa ed è abbastanza insensibile alle modifiche all'ordine delle parole, quindi forse usano qualcosa di simile.


Curioso: che vantaggio hanno i vettori sparsi rispetto a Naive Bayesian? Entrambi per me risolvono i problemi linearmente separabili con l'ingenua ipotesi bag-of-word
Angad
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.