Come elaborare le query in linguaggio naturale?


11

Sono curioso di interrogare il linguaggio naturale. Stanford ha quello che sembra essere un potente set di software per l'elaborazione del linguaggio naturale . Ho anche visto la libreria Apache OpenNLP e l' architettura generale per l'ingegneria del testo .

Esistono moltissimi usi per l'elaborazione del linguaggio naturale e ciò rende difficile da assorbire rapidamente la documentazione di questi progetti.

Puoi semplificare un po 'le cose per me e ad alto livello delineare le attività necessarie per eseguire una traduzione di base di semplici domande in SQL?

Il primo rettangolo sul mio diagramma di flusso è un po 'un mistero.

inserisci qui la descrizione dell'immagine

Ad esempio, potrei voler sapere:

How many books were sold last month?

E vorrei che tradotto in

Select count(*) 
  from sales 
  where 
   item_type='book' and 
   sales_date >= '5/1/2014' and 
   sales_date <= '5/31/2014'

Risposte:


6

L'interrogazione del linguaggio naturale pone molte complessità che possono essere molto difficili da generalizzare. Da un livello elevato, vorrei iniziare provando a pensare alle cose in termini di nomi e verbi.

Quindi, per la frase: quanti libri sono stati venduti il ​​mese scorso?

Inizieresti suddividendo la frase con un parser che restituirà un formato ad albero simile a questo:

inserisci qui la descrizione dell'immagine

Puoi vedere che ci sono libri tematici, una frase verbale composta che indica l'azione passata di vendita, e poi una frase sostantivo in cui hai il focus temporale di un mese.

Possiamo ulteriormente approfondire il tema dei modificatori: "quanti" per i libri e "ultimo" per il mese.

Dopo aver suddiviso la frase, è necessario mappare quegli elementi in linguaggio sql, ad esempio: quanti => conteggi, libri => libro, venduti => vendite, mese => sales_date (intervallo) e così via.

Infine, una volta che hai gli elementi del linguaggio, devi solo inventare una serie di regole su come diverse entità interagiscono tra loro, il che ti lascia con:

Seleziona il conteggio (*) dalle vendite dove item_type = 'book' e sales_date> = '5/1/2014' e sales_date <= '31/05/2014'

Questo è ad alto livello come vorrei iniziare, mentre quasi tutti i passaggi che ho citato sono non banali e in realtà la tana del coniglio può essere infinita, questo dovrebbe darti molti dei punti per collegarti.


1

Trasformare semplici domande in risposte non è affatto semplice .

La prima tecnologia a fare ciò in modo ampiamente trasversale e preciso sarà un grande vincitore.

Tuttavia, ce ne sono alcuni là fuori, che colmano le lacune con "rispondere alle domande" con Intelligenza Artificiale (ad esempio IBM Watson e Amazon Alexa). Ciò richiede la risoluzione delle complessità del linguaggio relative ai dati in questione, cosa c'è negli archivi dati e cosa sono nomi, verbi e pronomi.

Microsoft si è avventurato qui con English Query ma poi si è fermato. Kueri.me è una piattaforma basata su Python che fa quasi la stessa cosa.

Structured Query Languages ​​(SQL) e simili, SOQL, MDX, Hive, Impala e il più recente assume SQL vecchio stile. Non hanno ancora sostituito gran parte di nulla, tutti questi pezzi sono piccole correzioni al più grande "End Goal" e che si trova nell'intelligenza artificiale (AI), in particolare, Machine Learning.

La domanda è:

"Può il computer, capire cosa vuoi."

Non ancora. Ci vogliono linguisti, matematici, ingegneri e altro ancora per contribuire con il loro pezzo di torta in modo che possiamo goderci un po 'di quella dolce torta di intelligenza artificiale e machine learning.


0

Esistono diversi approcci alla creazione di un parser che analizzerebbe il messaggio di testo normale in SQL. Ad esempio, è possibile creare un parser basato sulla grammatica e utilizzare un algoritmo NLP per creare la query strutturata. Se hai già un sacco di messaggi analizzati da un dominio (come l'e-commerce), puoi provare un approccio di Machine Learning e utilizzarlo per ulteriori analisi.

Tuttavia, penso che l'approccio migliore sia quello di combinare un parser basato sulla grammatica per la traduzione da testo a SQL e ML per integrare la grammatica basata su regole fissando la sintassi, sradicando errori di battitura, ecc.

Ulteriori informazioni sui diversi approcci qui .

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.