# Entendimento de linguagem natural

Entendimento de linguagem natural ou interpretação de linguagem natural (em inglês, Natural Language Understanding, NLU, Natural Language Interpretation ou NLI) é um subtópico do processamento de linguagem natural em inteligência artificial que lida com a compreensão de leitura por máquina. A compreensão da linguagem natural é considerada um problema IA-difícil (AI-hard).
Há um interesse comercial considerável na área por causa de sua aplicação ao raciocínio automatizado, tradução automática, resposta a perguntas, coleta de notícias, categorização de texto, ativação por voz, arquivamento e análise de conteúdo em larga escala.

## História

O programa STUDENT, escrito em 1964 por Daniel Bobrow para sua dissertação de doutorado no MIT, é uma das primeiras tentativas conhecidas de compreensão da linguagem natural por um computador. Oito anos depois que John McCarthy cunhou o termo inteligência artificial, a dissertação de Bobrow (intitulada Entrada de linguagem natural para um sistema de solução de problemas de computador) mostrou como um computador poderia entender entrada de linguagem natural simples para resolver problemas de álgebra.
Um ano depois, em 1965, Joseph Weizenbaum do MIT escreveu ELIZA, um programa interativo que mantinha um diálogo em inglês sobre qualquer assunto, sendo o mais popular a psicoterapia. ELIZA funcionava através da análise simples e substituição de palavras-chave em frases enlatadas e Weizenbaum evitou o problema de dar ao programa um banco de dados de conhecimento do mundo real ou um léxico rico. Ainda assim, ELIZA ganhou popularidade surpreendente como um projeto de brinquedo e pode ser visto como um precursor inicial dos sistemas comerciais atuais, como os usados pelo Ask.com.
Em 1969, Roger Schank, da Universidade Stanford, introduziu a teoria da dependência conceitual para o entendimento da linguagem natural. Este modelo, parcialmente influenciado pelo trabalho de Sydney Lamb, foi amplamente utilizado pelos alunos de Schank na Universidade Yale, comoRobert Wilensky, Wendy Lehnert e Janet Kolodner.
Em 1970, William A. Woods introduziu a rede de transição aumentada (ATN) para representar a entrada de linguagem natural. Em vez de regras de estrutura frasal, os ATNs usaram um conjunto equivalente de autômatos de estado finito que eram chamadas recursivamente. Os ATNs e seu formato mais geral, chamados de "ATNs generalizados", continuaram a ser usados por vários anos.
Em 1971, Terry Winograd terminou de escrever o SHRDLU para sua tese de doutorado no MIT. O SHRDLU podia entender frases simples em inglês em um mundo restrito de blocos infantis para direcionar um braço robótico para mover itens. A demonstração bem-sucedida do SHRDLU proporcionou um impulso significativo para a continuidade da pesquisa na área. Winograd continuou a ser uma grande influência na área com a publicação de seu livro Language as a Cognitive Process. Em Stanford, Winograd orientaria mais tarde Larry Page, co-fundador do Google.
Nas décadas de 1970 e 1980, o grupo de processamento de linguagem natural da SRI International continuou a pesquisa e o desenvolvimento no campo. Vários esforços comerciais com base na pesquisa foram realizados, por exemplo, em 1982, Gary Hendrix formou a Symantec Corporation originalmente como uma empresa para desenvolver uma interface de linguagem natural para consultas de banco de dados em computadores pessoais. No entanto, com o advento das interfaces gráficas do usuário acionadas por mouses, a Symantec mudou de direção. Vários outros esforços comerciais foram iniciados na mesma época, por exemplo, Larry R. Harris na Artificial Intelligence Corporation e Roger Schank e seus alunos na Cognitive Systems Corp. Em 1983, Michael Dyer desenvolveu o sistema BORIS em Yale, que apresentava semelhanças com o trabalho de Roger Schank e WG Lehnert.
O terceiro milênio viu a introdução de sistemas que usam aprendizado de máquina para classificação de texto, como o Watson da IBM. No entanto, os especialistas discutem o quanto de "compreensão" tais sistemas demonstram: por exemplo, de acordo com John Searle, Watson nem mesmo entendeu as perguntas.
John Ball, cientista cognitivo e inventor da Teoria Patom, apoia essa avaliação. O processamento de linguagem natural fez incursões para aplicativos para apoiar a produtividade humana em serviços e comércio eletrônico, mas em grande parte isso foi possível estreitando o escopo do aplicativo. Existem milhares de maneiras de solicitar algo em uma linguagem humana que ainda desafia o processamento de linguagem natural convencional. "Ter uma conversa significativa com as máquinas só é possível quando combinamos cada palavra com o significado correto com base nos significados das outras palavras na frase - assim como uma criança de 3 anos faz sem suposições."

## Escopo e contexto

O termo genérico "compreensão de linguagem natural" pode ser aplicado a um conjunto diversificado de aplicativos de computador, desde tarefas pequenas e relativamente simples, como comandos curtos emitidos para robôs, até iniciativas altamente complexas, como a compreensão total de artigos de jornal ou trechos de poesia. Muitos aplicativos do mundo real caem entre os dois extremos, por exemplo, a classificação de texto para a análise automática de e-mails e seu roteamento para um departamento adequado em uma empresa não requer um entendimento profundo do texto, mas precisa lidar com um vocabulário muito maior e sintaxe mais diversa do que o gerenciamento de consultas simples a tabelas de banco de dados com esquemas fixos.
Ao longo dos anos, várias tentativas de processar frases em linguagem natural ou frases semelhantes ao inglês apresentadas a computadores ocorreram em níveis variados de complexidade. Algumas tentativas não resultaram em sistemas com entendimento profundo, mas ajudaram na usabilidade geral do sistema. Por exemplo, Wayne Ratliff desenvolveu originalmente o programa Vulcan com uma sintaxe semelhante ao inglês para imitar o computador que fala inglês em Star Trek. Vulcan mais tarde se tornou o sistema dBase, cuja sintaxe fácil de usar efetivamente lançou a indústria de banco de dados de computadores pessoais. Os sistemas com uma sintaxe fácil de usar ou semelhante ao inglês são, no entanto, bastante distintos dos sistemas que usam um léxico rico e incluem uma representação interna (frequentemente como lógica de primeira ordem) da semântica das frases em linguagem natural.
Portanto, a amplitude e a profundidade do "entendimento" almejado por um sistema determinam tanto a complexidade do sistema (e os desafios implícitos) quanto os tipos de aplicativos com os quais ele pode lidar. A "amplitude" de um sistema é medida pelos tamanhos de seu vocabulário e gramática. A "profundidade" é medida pelo grau em que sua compreensão se aproxima da de um falante nativo fluente. Entre os mais estreitos e superficiais, os interpretadores de comandos semelhantes ao inglês requerem complexidade mínima, mas têm uma pequena variedade de aplicações. Sistemas estreitos, mas profundos, exploram e modelam mecanismos de compreensão, mas ainda têm aplicação limitada. Os sistemas que tentam entender o conteúdo de um documento, como um comunicado à imprensa, para além da simples correspondência de palavras-chave, e julgar sua adequação para um usuário, são mais amplos e exigem uma complexidade significativa, mas ainda são um tanto superficiais. Sistemas que são muito amplos e profundos estão além do estado da arte atual.

## Componentes e arquitetura

Independentemente da abordagem usada, a maioria dos sistemas de compreensão de linguagem natural compartilham alguns componentes comuns. O sistema precisa de um léxico da linguagem e um analisador e regras gramaticais para quebrar as sentenças em uma representação interna. A construção de um léxico rico com uma ontologia adequada requer um esforço significativo, por exemplo, o léxico Wordnet exigiu muitos anos de esforço por pessoa.
O sistema também precisa da teoria da semântica para guiar a compreensão. As capacidades de interpretação de um sistema de compreensão de linguagem dependem da teoria semântica que ele usa. As teorias semânticas concorrentes da linguagem têm compensações específicas em sua adequação como base da interpretação semântica automatizada por computador. Elas variam de semântica ingênua ou análise semântica estocástica ao uso de pragmática para derivar significado do contexto. Os analisadores semânticos convertem textos de linguagem natural em representações de significado formal.
Aplicações avançadas de compreensão de linguagem natural também tentam incorporar inferência lógica em sua estrutura. Isso geralmente é obtido mapeando o significado derivado em um conjunto de afirmações em lógica de predicados e, então, usando dedução lógica para chegar a conclusões. Portanto, os sistemas baseados em linguagens funcionais como o Lisp precisam incluir um subsistema para representar asserções lógicas, enquanto os sistemas orientados à lógica, como aqueles que usam a linguagem Prolog, geralmente dependem de uma extensão da estrutura de representação lógica embutida.
A gestão do contexto na compreensão da linguagem natural pode se mostrar especialmente desafiadora. Uma grande variedade de exemplos e contra-exemplos resultou em várias abordagens para a modelagem formal de contexto, cada uma com pontos fortes e fracos específicos.