Como processar consultas de linguagem natural?

11

Estou curioso para consultar a linguagem natural. Stanford possui o que parece ser um forte conjunto de software para processamento de linguagem natural . Também vi a biblioteca Apache OpenNLP e a arquitetura geral para engenharia de texto .

Há uma quantidade incrível de usos para o processamento de linguagem natural e isso dificulta a absorção rápida da documentação desses projetos.

Você pode simplificar um pouco as coisas para mim e, em alto nível, descrever as tarefas necessárias para executar uma tradução básica de perguntas simples no SQL?

O primeiro retângulo no meu fluxograma é um pouco misterioso.

insira a descrição da imagem aqui

Por exemplo, eu posso querer saber:

How many books were sold last month?

E eu gostaria que isso fosse traduzido para

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

Respostas:

6

A consulta em linguagem natural apresenta muitos meandros que podem ser muito difíceis de generalizar. De alto nível, eu começaria tentando pensar nas coisas em termos de substantivos e verbos.

Então, para a frase: quantos livros foram vendidos no mês passado?

Você começaria dividindo a frase com um analisador que retornará um formato de árvore semelhante a este:

insira a descrição da imagem aqui

Você pode ver que há livros de assunto, uma frase verbal composta indicando a ação passada de venda e, em seguida, uma frase substantiva em que você tem o foco no tempo de um mês.

Podemos detalhar ainda mais o assunto dos modificadores: "quantos" para livros e "durar" por mês.

Depois de dividir a frase, você precisa mapear esses elementos para a linguagem sql, por exemplo: quantos => contagem, livros => livro, vendido => vendas, mês => data_de_venda (intervalo) e assim por diante.

Finalmente, uma vez que você tenha os elementos da linguagem, precisará criar um conjunto de regras sobre como diferentes entidades interagem umas com as outras, o que deixa você com:

Selecione a contagem (*) nas vendas em que item_type = 'book' e sales_date> = '5/1/2014' e sales_date <= '31/05/2014'

Este é um nível alto como eu começaria, embora quase todos os passos que mencionei não sejam triviais e realmente a toca do coelho possa ser infinita, isso deve lhe dar muitos pontos para se conectar.

neone4373
fonte
1

Transformar perguntas simples em respostas não é nada simples .

A primeira tecnologia a fazer isso de maneira abrangente e precisa será uma grande vencedora.

No entanto, existem alguns por aí, preenchendo as lacunas com "perguntas respondidas" com Inteligência Artificial (por exemplo, IBM Watson e Amazon Alexa). Isso requer resolver as complexidades da linguagem relacionadas aos dados em questão, o que há nos armazenamentos de dados e o que são substantivos, verbos e pronomes.

A Microsoft se aventurou aqui com a Consulta em inglês , mas parou. O Kueri.me é uma plataforma baseada em Python que faz aproximadamente a mesma coisa.

Linguagens de consulta estruturada (SQL) e similares, SOQL, MDX, Hive, Impala e as mais recentes assumem o SQL à moda antiga. Ainda não substituímos muita coisa, todas essas peças são pequenas correções para o maior "Objetivo Final" e estão na Inteligência Artificial (IA), especificamente no Aprendizado de Máquina.

A questão é:

"Pode o computador, descobrir o que você quer."

Ainda não. São necessários linguistas, matemáticos, engenheiros e muito mais para contribuir com seu pedaço da torta, para que possamos desfrutar de um pouco do doce bolo Artificial Inteligente e Machine Learned.

chave catraca
fonte
0

Existem várias abordagens para criar um analisador que analisa a mensagem de texto sem formatação no SQL. Por exemplo, você pode criar um analisador baseado em gramática e usar um algoritmo de PNL para criar a consulta estruturada. Se você já possui muitas mensagens analisadas de um domínio (como o comércio eletrônico) - você pode tentar uma abordagem de Machine Learning e usá-la para sua análise posterior.

No entanto, acho que a melhor abordagem é combinar um analisador baseado em gramática para tradução de texto para SQL e ML para complementar a gramática baseada em regras, corrigindo a sintaxe, erradicando erros de digitação etc.

Saiba mais sobre as diferentes abordagens aqui .

MicRum
fonte