Processamento de linguagem natural

O processamento de linguagem natural (NLP) é um subcampo da ciência da computação, engenharia da informação e inteligência artificial relacionado às interações entre computadores e linguagens humanas (naturais), em particular como programar computadores para processar e analisar grandes quantidades de dados em linguagem natural.

Desafios no processamento de linguagem natural freqüentemente envolvem reconhecimento de fala, compreensão de linguagem natural e geração de linguagem natural.

História
A história do processamento de linguagem natural geralmente começou nos anos 1950, embora o trabalho possa ser encontrado em períodos anteriores. Em 1950, Alan Turing publicou um artigo intitulado “Inteligência”, que propôs o que hoje é chamado de teste de Turing como critério de inteligência.

O experimento de Georgetown em 1954 envolveu a tradução totalmente automática de mais de sessenta sentenças russas para o inglês. Os autores afirmaram que dentro de três ou cinco anos, a tradução automática seria um problema resolvido. No entanto, o progresso real foi muito mais lento, e após o relatório da ALPAC em 1966, que descobriu que a pesquisa de dez anos não cumpriu as expectativas, o financiamento para a tradução automática foi drasticamente reduzido. Poucas pesquisas em tradução automática foram conduzidas até o final da década de 1980, quando os primeiros sistemas estatísticos de tradução automática foram desenvolvidos.

Alguns sistemas de processamento de linguagem natural notavelmente bem-sucedidos desenvolvidos na década de 1960 foram o SHRDLU, um sistema de linguagem natural que trabalha em “mundos bloqueados” restritos com vocabulários restritos, e ELIZA, uma simulação de um psicoterapeuta rogeriano, escrito por Joseph Weizenbaum entre 1964 e 1966. Usando quase sem informações sobre o pensamento ou a emoção humana, a ELIZA às vezes proporcionava uma interação surpreendentemente semelhante à humana. Quando o “paciente” excedeu a muito pequena base de conhecimento, ELIZA pode fornecer uma resposta genérica, por exemplo, respondendo a “Minha cabeça está doendo” com “Por que você diz que sua cabeça está doendo?”.

Durante a década de 1970, muitos programadores começaram a escrever “ontologias conceituais”, que estruturavam informações do mundo real em dados compreensíveis por computador. Exemplos são MARGIE (Schank, 1975), SAM (Cullingford, 1978), PAM (Wilensky, 1978), TaleSpin (Meehan, 1976), QUALM (Lehnert, 1977), Política (Carbonell, 1979) e Unidades Plot (Lehnert 1981 ). Durante esse período, muitos chatterbots foram escritos, incluindo PARRY, Racter e Jabberwacky.

Até a década de 1980, a maioria dos sistemas de processamento de linguagem natural era baseada em conjuntos complexos de regras escritas à mão. A partir do final dos anos 80, no entanto, houve uma revolução no processamento de linguagem natural com a introdução de algoritmos de aprendizado de máquina para processamento de linguagem. Isso se deveu tanto ao aumento constante do poder computacional (ver a lei de Moore) quanto à gradual diminuição da dominância das teorias da lingüística de Chomskyan (por exemplo, gramática transformacional), cujos fundamentos teóricos desencorajaram o tipo de linguística de corpus subjacente à abordagem da aprendizagem por máquina. para processamento de linguagem. Alguns dos primeiros algoritmos de aprendizado de máquina usados, como árvores de decisão, produziram sistemas rígidos se-então regras similares às regras escritas à mão existentes. No entanto, a marcação de parte da fala introduziu o uso de modelos ocultos de Markov no processamento de linguagem natural e, cada vez mais, a pesquisa concentrou-se em modelos estatísticos, que tomam decisões suaves e probabilísticas baseadas na agregação de pesos reais aos recursos que compõem a entrada. dados. Os modelos de linguagem de cache nos quais muitos sistemas de reconhecimento de fala agora dependem são exemplos de tais modelos estatísticos. Esses modelos geralmente são mais robustos quando recebem informações não-familiares, especialmente entradas que contêm erros (como é muito comum em dados do mundo real) e produzem resultados mais confiáveis ​​quando integrados em um sistema maior que inclui várias subtarefas.

Muitos dos notáveis ​​sucessos iniciais ocorreram no campo da tradução automática, especialmente devido ao trabalho na IBM Research, onde foram desenvolvidos modelos estatísticos sucessivamente mais complicados. Esses sistemas puderam aproveitar os corpora textuais multilíngues existentes que haviam sido produzidos pelo Parlamento do Canadá e da União Européia como resultado de leis que pediam a tradução de todos os procedimentos governamentais em todas as línguas oficiais dos sistemas de governo correspondentes. No entanto, a maioria dos outros sistemas dependia de corpora especificamente desenvolvidos para as tarefas implementadas por esses sistemas, o que era (e geralmente continua a ser) uma grande limitação no sucesso desses sistemas. Como resultado, uma grande quantidade de pesquisas foi direcionada para métodos de aprendizado mais efetivo a partir de quantidades limitadas de dados.

Pesquisas recentes têm se concentrado cada vez mais em algoritmos de aprendizagem não supervisionados e semi-supervisionados. Esses algoritmos são capazes de aprender com dados que não foram anotados à mão com as respostas desejadas ou usando uma combinação de dados anotados e não anotados. Geralmente, essa tarefa é muito mais difícil do que a aprendizagem supervisionada, e normalmente produz resultados menos precisos para uma determinada quantidade de dados de entrada. No entanto, há uma enorme quantidade de dados não anotados disponíveis (incluindo, entre outras coisas, todo o conteúdo da World Wide Web), que pode compensar os resultados inferiores se o algoritmo usado tiver uma complexidade de tempo suficientemente baixa para seja prático.

Na década de 2010, os métodos de aprendizado de máquina e aprendizado de máquina de estilo de rede neural se tornaram difundidos no processamento de linguagem natural, devido em parte a uma enxurrada de resultados mostrando que tais técnicas podem alcançar resultados de ponta em muitas tarefas de linguagem natural, por exemplo, em modelagem de linguagem, análise e muitos outros. Técnicas populares incluem o uso de encartes de palavras para capturar propriedades semânticas de palavras e um aumento no aprendizado de ponta a ponta de uma tarefa de nível mais alto (por exemplo, perguntas respondidas) em vez de depender de um pipeline de tarefas intermediárias separadas (por exemplo, marcação de part-speech e análise de dependência). Em algumas áreas, essa mudança implicou mudanças substanciais em como os sistemas de PNL são projetados, de modo que abordagens baseadas em redes neurais profundas possam ser vistas como um novo paradigma distinto do processamento estatístico de linguagem natural. Por exemplo, o termo neural machine translation (NMT) enfatiza o fato de que abordagens baseadas em aprendizado profundo para tradução automática aprendem diretamente transformações seqüência a sequência, obviando a necessidade de passos intermediários como alinhamento de palavras e modelagem de linguagem que foram usados ​​em estatística. tradução automática (SMT).

PNL baseado em regras e estatísticas
Nos primeiros dias, muitos sistemas de processamento de linguagem eram projetados por meio da codificação manual de um conjunto de regras, por exemplo, escrevendo gramáticas ou elaborando regras heurísticas para conter. No entanto, isso não é em geral robusto para a variação de linguagem natural.

Desde a chamada “revolução estatística” no final dos anos 80 e meados da década de 90, muitas pesquisas sobre processamento de linguagem natural dependem muito do aprendizado de máquina.

O paradigma de aprendizado de máquina exige, em vez disso, o uso de inferência estatística para aprender automaticamente essas regras através da análise de grandes corpora de exemplos típicos do mundo real (um corpus é um conjunto de documentos, possivelmente com anotações humanas ou de computador). ).

Muitas classes diferentes de algoritmos de aprendizado de máquina foram aplicadas a tarefas de processamento de linguagem natural. Esses algoritmos tomam como entrada um grande conjunto de “recursos” que são gerados a partir dos dados de entrada. Alguns dos primeiros algoritmos usados, como árvores de decisão, produziram sistemas rígidos se-então regras similares aos sistemas de regras escritas à mão que eram então comuns. Cada vez mais, no entanto, a pesquisa tem se concentrado em modelos estatísticos, que tomam decisões suaves e probabilísticas com base na anexação de pesos reais a cada recurso de entrada. Esses modelos têm a vantagem de poder expressar a relativa certeza de muitas respostas possíveis diferentes, em vez de apenas uma, produzindo resultados mais confiáveis ​​quando esse modelo é incluído como componente de um sistema maior.

Sistemas baseados em algoritmos de aprendizado de máquina têm muitas vantagens sobre as regras produzidas manualmente:

Os procedimentos de aprendizagem usados ​​durante o aprendizado de máquina concentram-se automaticamente nos casos mais comuns, ao passo que, ao escrever regras à mão, muitas vezes não é de todo óbvio onde o esforço deve ser direcionado.
Os procedimentos automáticos de aprendizagem podem fazer uso de algoritmos de inferência estatística para produzir modelos robustos a entradas não familiares (por exemplo, contendo palavras ou estruturas que não tenham sido vistas antes) e a entradas erradas (por exemplo, com palavras incorretas ou palavras omitidas acidentalmente). Geralmente, lidar com essas informações normalmente com regras escritas à mão – ou, mais genericamente, criar sistemas de regras escritas à mão que tomam decisões brandas – é extremamente difícil, sujeito a erros e demorado.
Sistemas baseados no aprendizado automático das regras podem se tornar mais precisos simplesmente fornecendo mais dados de entrada. No entanto, sistemas baseados em regras escritas à mão só podem ser mais precisos aumentando a complexidade das regras, o que é uma tarefa muito mais difícil. Em particular, há um limite para a complexidade dos sistemas baseados em regras criadas manualmente, além do qual os sistemas se tornam cada vez mais incontroláveis. No entanto, a criação de mais dados para entrada em sistemas de aprendizado de máquina simplesmente requer um aumento correspondente no número de horas-homem trabalhadas, geralmente sem aumentos significativos na complexidade do processo de anotação.

Principais avaliações e tarefas
A seguir, uma lista de algumas das tarefas mais comumente pesquisadas no processamento de linguagem natural. Observe que algumas dessas tarefas têm aplicativos diretos do mundo real, enquanto outras geralmente servem como subtarefas usadas para ajudar na solução de tarefas maiores.

Embora as tarefas de processamento de linguagem natural estejam intimamente interligadas, elas são freqüentemente subdivididas em categorias por conveniência. Uma divisão grosseira é dada abaixo.

Sintaxe

Indução de gramática
Gere uma gramática formal que descreva a sintaxe de uma linguagem.

Lematização

Segmentação morfológica
Separe as palavras em morfemas individuais e identifique a classe dos morfemas. A dificuldade dessa tarefa depende muito da complexidade da morfologia (ou seja, a estrutura das palavras) da linguagem que está sendo considerada. Inglês tem morfologia bastante simples, especialmente morfologia flexional, e, portanto, muitas vezes é possível ignorar completamente essa tarefa e simplesmente modelar todas as formas possíveis de uma palavra (por exemplo, “abrir, abrir, abrir, abrir”) como palavras separadas. Em idiomas como o turco ou o meitei, uma língua indiana altamente aglutinada, no entanto, tal abordagem não é possível, já que cada entrada de dicionário tem milhares de formas possíveis de palavras.

Marcação de parte da fala
Dada uma sentença, determine a parte da fala para cada palavra. Muitas palavras, especialmente as mais comuns, podem servir como múltiplas partes do discurso. Por exemplo, “livro” pode ser um substantivo (“o livro na mesa”) ou verbo (“reservar um voo”); “set” pode ser um substantivo, verbo ou adjetivo; e “out” pode ter pelo menos cinco partes diferentes do discurso. Algumas linguagens têm mais ambiguidade do que outras. [Duvidoso – discutir] As línguas com pouca morfologia flexional, como o inglês, são particularmente propensas a essa ambigüidade. O chinês é propenso a tal ambiguidade porque é uma linguagem tonal durante a verbalização. Tal inflexão não é facilmente transmitida através das entidades empregadas dentro da ortografia para transmitir o significado pretendido.

Análise
Determine a árvore de análise (análise gramatical) de uma determinada sentença. A gramática das linguagens naturais é ambígua e as sentenças típicas têm múltiplas análises possíveis. De fato, talvez surpreendentemente, para uma sentença típica, pode haver milhares de análises em potencial (a maioria das quais parecerá completamente sem sentido para um ser humano). Existem dois tipos principais de análise, Análise de Dependência e Análise de Grupo Constituinte. A análise de dependência enfoca os relacionamentos entre as palavras em uma frase (marcando coisas como Objetos Primários e predicados), enquanto a análise de grupo se concentra em construir a Árvore de Análise usando uma Gramática Livre de Contexto Probabilística (PCFG).

Quebra de sentença (também conhecida como desambiguação de limite de sentença)
Dado um pedaço de texto, encontre os limites da sentença. Limites de sentença são frequentemente marcados por períodos ou outros sinais de pontuação, mas esses mesmos caracteres podem servir a outros propósitos (por exemplo, abreviações de marcação).

Stemming
Segmentação de palavras
Separe um pedaço de texto contínuo em palavras separadas. Para uma língua como o inglês, isso é bastante trivial, já que as palavras geralmente são separadas por espaços. No entanto, algumas linguagens escritas como chinês, japonês e tailandês não marcam limites de palavras de tal maneira, e nessas línguas a segmentação de texto é uma tarefa significativa que requer conhecimento do vocabulário e da morfologia das palavras na língua. Às vezes, esse processo também é usado em casos como a criação de Bag of Words (BOW) na mineração de dados.

Extração de terminologia
O objetivo da extração de terminologia é extrair automaticamente termos relevantes de um determinado corpus.

Semântica

Semântica lexical
Qual é o significado computacional de palavras individuais no contexto?

Maquina de tradução
Traduzir automaticamente o texto de um idioma humano para outro. Este é um dos problemas mais difíceis, e é um membro de uma classe de problemas coloquialmente denominados “AI-completos”, ou seja, exigindo todos os diferentes tipos de conhecimento que os humanos possuem (gramática, semântica, fatos sobre o mundo real, etc. .), a fim de resolver corretamente.

Reconhecimento de entidade nomeada (NER)
Dado um fluxo de texto, determine quais itens no texto mapeiam nomes próprios, como pessoas ou lugares, e qual é o tipo de cada um desses nomes (por exemplo, pessoa, local, organização). Observe que, embora a capitalização possa ajudar no reconhecimento de entidades nomeadas em idiomas como o inglês, essas informações não podem ajudar a determinar o tipo de entidade nomeada e, em qualquer caso, geralmente são imprecisas ou insuficientes. Por exemplo, a primeira palavra de uma sentença também é capitalizada, e as entidades nomeadas geralmente ocupam várias palavras, apenas algumas delas são capitalizadas. Além disso, muitos outros idiomas em scripts não ocidentais (por exemplo, chinês ou árabe) não têm nenhuma capitalização, e mesmo os idiomas com letras maiúsculas e minúsculas não podem usá-lo consistentemente para distinguir nomes. Por exemplo, o alemão capitaliza todos os substantivos, independentemente de serem nomes, e o francês e o espanhol não capitalizam nomes que servem como adjetivos.

Geração de linguagem natural
Converta informações de bancos de dados de computador ou intenções semânticas em linguagem humana legível.

Compreensão da linguagem natural
Converta pedaços de texto em representações mais formais, como estruturas lógicas de primeira ordem, que são mais fáceis de serem manipuladas pelos programas de computador. O entendimento da linguagem natural envolve a identificação da semântica pretendida a partir da múltipla semântica possível que pode ser derivada de uma expressão de linguagem natural que geralmente toma a forma de notações organizadas de conceitos de linguagem natural. Introdução e criação de metamodelo e ontologia de linguagem são soluções eficientes, porém empíricas. Uma formalização explícita da semântica da linguagem natural sem confusões com premissas implícitas, como suposição de mundo fechado (CWA) versus suposição de mundo aberto, ou Sim / Não subjetivo versus objetivo Verdadeiro / Falso é esperado para a construção de uma base de formalização semântica. .

Reconhecimento óptico de caracteres (OCR)
Dada uma imagem representando o texto impresso, determine o texto correspondente.

Pergunta respondendo
Dada uma questão de linguagem humana, determine sua resposta. Perguntas típicas têm uma resposta específica certa (como “Qual é a capital do Canadá?”), Mas às vezes perguntas abertas também são consideradas (como “Qual é o significado da vida?”). Trabalhos recentes analisaram questões ainda mais complexas.

Reconhecendo a vinculação textual
Dados dois fragmentos de texto, determine se um que é verdadeiro implica o outro, implica a negação do outro ou permite que o outro seja verdadeiro ou falso.

Extração de relacionamento
Dado um pedaço de texto, identifique as relações entre entidades nomeadas (por exemplo, quem é casado com quem).

Análise de sentimentos (ver também análise de sentimentos multimodais)
Extraia informações subjetivas geralmente de um conjunto de documentos, geralmente usando revisões on-line para determinar a “polaridade” de objetos específicos. É especialmente útil para identificar tendências da opinião pública nas mídias sociais, para fins de marketing.

Segmentação e reconhecimento de tópicos
Dado um pedaço de texto, separe-o em segmentos cada um dos quais é dedicado a um tópico e identifique o tópico do segmento.

Desambiguação do sentido da palavra
Muitas palavras têm mais de um significado; temos que selecionar o significado que faz mais sentido no contexto. Para esse problema, normalmente recebemos uma lista de palavras e sentidos de palavras associados, por exemplo, de um dicionário ou de um recurso online como o WordNet.

Discurso

Resumo automático
Produza um resumo legível de um pedaço de texto. Geralmente usado para fornecer resumos de texto de um tipo conhecido, como artigos na seção financeira de um jornal.
Resolução de referência

Dada uma frase ou um pedaço maior de texto, determine quais palavras (“menções”) referem-se aos mesmos objetos (“entidades”). A resolução da anáfora é um exemplo específico dessa tarefa, e está especificamente relacionada à correspondência entre os pronomes e os substantivos ou nomes aos quais eles se referem. A tarefa mais geral da resolução de referência também inclui a identificação dos chamados “relacionamentos de ponte” envolvendo expressões de referência. Por exemplo, em uma frase como “Ele entrou na casa de João pela porta da frente”, “a porta da frente” é uma expressão de referência e a relação de ligação a ser identificada é o fato de a porta ser a porta da frente de John. casa (ao invés de alguma outra estrutura que também possa ser referida).

Análise do discurso
Esta rubrica inclui várias tarefas relacionadas. Uma tarefa é identificar a estrutura do discurso do texto conectado, ou seja, a natureza das relações do discurso entre as sentenças (por exemplo, elaboração, explicação, contraste). Outra tarefa possível é reconhecer e classificar os atos de fala em um trecho de texto (por exemplo, pergunta sim-não, pergunta de conteúdo, declaração, asserção, etc.).

Discurso

Reconhecimento de fala
Dado um som de uma pessoa ou pessoas falando, determine a representação textual do discurso. Este é o oposto do texto para fala e é um dos problemas extremamente difíceis coloquialmente denominados “AI-completos” (ver acima). Na fala natural, quase não há pausas entre palavras sucessivas, e, portanto, a segmentação da fala é uma subtarefa necessária do reconhecimento de fala (ver abaixo). Observe também que, na maioria das línguas faladas, os sons que representam letras sucessivas se misturam em um processo denominado coarticulação, de modo que a conversão do sinal analógico em caracteres discretos pode ser um processo muito difícil.

Segmentação de fala
Dado um clipe de som de uma pessoa ou pessoas falando, separe-a em palavras. Uma subtarefa de reconhecimento de fala e normalmente agrupada com ele.

Text-to-speech
Dado um texto, transforme essas unidades e produza uma representação falada. Text-to-speech pode ser usado para ajudar os deficientes visuais.