20

Volevo scrivere un programma per fare domande sul tempo. Quali sono gli algoritmi e le tecniche che dovrei iniziare a guardare.Come procedere con l'attività NLP per il riconoscimento di intent e slot

ex: Ci sarà il sole questo fine settimana a Chicago. Volevo sapere l'intento = query meteo, data = questo fine settimana, posizione = chicago.

L'utente può esprimere la stessa query in molte forme.

Mi piacerebbe risolvere qualche forma vincolata e cercare idee su come iniziare. La soluzione deve essere abbastanza buona.

risposta

24

Dal momento che l'input è nella forma in linguaggio naturale, il modo migliore per iniziare a guardarlo, prima analizzando la struttura della frase. ed eseguendo la frase tramite NER (Named Entity Recognizer).

L'analisi della frase consente di formulare regole come, alcuni tipi di dipendenza ti danno sempre l'intento. L'esecuzione del NER ti consentirà di identificare luoghi e date. Se non è semplice elaborare regole per classificare l'intento, si può anche usare un classificatore per fare lo stesso usando il vettore di caratteristiche formulato dalla frase di input. In effetti, alcuni dei parser messi fuori possono andare a formulare il vettore di funzionalità.

Per il software di entrambe esiste da Stanford NLP Group

Può essere che si può guardare in:

Una volta che si analizza la frase, si ha l'intenzione e l'altro le informazioni richiedono di rispondere alla domanda.

Es: Ho preso la tua frase "Sarà soleggiato questo fine settimana a Chicago." e lo passò attraverso Online Stanford NER Tagger. Che mi ha dato quanto segue:

Will it be sunny this <DATE>weekend</DATE> in <LOCATION>Chicago</LOCATION> 

Ora avete identificato la data e il luogo.

Spero che questo aiuti. So che la risposta è abbastanza generica e potrebbe essere utile all'inizio.

+0

grazie per aver utilizzato l'inglese normale! mi ha aiutato anche molto! –

+0

Ottimo punto di partenza. Anche se in realtà sono interessato a input di linguaggio non naturale (azioni, eventi, sequenze, oggetti) ... e lo faccio senza euristica. –

+2

Sulla base delle spiegazioni trovate in questo post, sembra che l'intento sia un prodotto del parsing NLU. Ma deve esserci stata un'etichettatura di intenti da qualche parte nel processo prima che il parser sia in grado di classificare l'intento. Qualche idea se l'etichettatura è un processo manuale o può essere completamente automatizzata attraverso alcune conoscenze linguistiche? – bhomass

10

Penso che questa API sia esattamente quello che stai cercando. È facile e fantastico da usare.

https://wit.ai/

3

Inoltre, https://www.luis.ai/ è una buona implementazione di un quadro NLP. Hanno un'API e un SDK nuget. Li stiamo usando da un po 'ora. Erano più economici rispetto alle altre opzioni che abbiamo visto. vale a dire wit.ai.

Quindi ri vostro esempio -

ex: ci sarà sole questo fine settimana a Chicago -> sarebbe mappare un intento LUIS chiamato WeatherQuery. data -> si assocerebbe a un'entità LUIS dataTempo preimpostato posizione -> chicago -> si assocerebbe a un'entità LUIS pre-costruita -> geografia o indirizzo penso.