Você está visualizando atualmente O que é processamento de Linguagem Natural?

O que é processamento de Linguagem Natural?

Nesse artigo nosso objetivo é mostrar a você com exemplos simples o que é o processamento de linguagem natural e como esse “braço” da ciência da computação pode revolucionar a forma com que você interage com os computadores.

Primeiramente, precisamos definir de onde veio esse termo: “processamento de linguagem natural”. As linguagens naturais são na verdade a forma mais comum que o ser humano utiliza para se comunicar. Línguas naturais podem variar muito em todo o globo de acordo com várias influências etnográficas e também fatores sociais. Nesse humilde blog usamos o português como lingua natural principal, mas sabemos que existem milhares de linguagens no mundo.

A internet tornou a divulgação de textos escritos em linguagens naturais muito popular e atualmente milhares e milhares de linhas são publicadas na rede todos os dias. Com tantos dados disponíveis os cientistas começaram a perceber a necessidade de processar esses dados de alguma forma, então cientistas começaram a trabalhar em técnicas de descoberta de conhecimento e Mineração de Dados (Knowledge Discovery and Data Mining). Essa é uma área interdisciplinar focada em metodologias para extrair conhecimentos úteis a partir de dados.

Apesar de muito promissora essa área possui muitos desafios bastante complexos. Vamos para um exemplo prático, imagine que você possui o seguinte trecho de texto:

Bom dia Sr. Machado, gostariamos de avisar que nossos produtos estão em promoção. Veja alguns itens que são do seu interesse: Smartphone – R$ 1590,00; SmartTv – R$ 2950,00; Notebook – R$6905,00.

Equipe do magazine aluízia.

Considerando o texto acima, seria possível extrair para um array as promoções disponíveis, tabular e processar essas infomações? Claro que sim!

Certo, mas e o restante do texto, não traz nenhuma informação? Por exemplo, ao fim do texto temos o nome da loja… seria possível reconhecer entidades nomeadas? É possível identificar quem é o destinatário da mensagem (Sr. Machado)?

Pois é… como eu disse… muitos desafios.

O desafio de extrair conhecimento de dados consiste na alta variação da forma que as informações estão dispostas na Web. Para tentar compreender estas informações o KDD utiliza de pesquisas em estatísticas, bancos de dados, reconhecimento de padrões, aprendizado de máquinas, visualização de dados, otimização e computação de alto desempenho, para fornecer soluções inteligentes para mineração de dados importantes e aplica-los em diversas áreas, por exemplo a área de business intelligence.  

A descoberta do conhecimento possibilitou a manipulação de dados que estavam em uma espécie de “Cemitério de Dados”, ou seja, dados que não podiam ser processados com as metodologias já conhecidas. Este fenômeno permitiu que as empresas que armazenam grandes massas de dados de clientes, vendas, transações, entre outras utilizem estes dados como base para extração de padrões e identificação de novas informações.   

Nosso blog adora postar sobre processamento de linguagem natural. Veja mais sobre esse assunto aqui.

História

A história do PLN começou na década de 1950, quando Alan Turing publicou o artigo “Computing Machinery and Intelligence”, que propunha o que agora é chamado de teste de Turing como critério de inteligência. Em 1954, a experiência de Georgetown envolveu a tradução automática de mais de sessenta frases russas para o inglês. Os autores alegaram que dentro de três ou cinco anos a tradução automática se trataria de um problema resolvido.

No entanto, os avanços reais foram muito mais lentos do que o previsto e, após o relatório ALPAC em 1966, que constatou que a pesquisa de dez anos não conseguiu satisfazer as expectativas, o financiamento para este estudo em tradução automática foi reduzido drasticamente. Poucas pesquisas em tradução automática foram conduzidas até o final dos anos 80, quando os primeiros sistemas estatísticos de tradução foram desenvolvidos.

Alguns sistemas de PLN bem sucedidos desenvolvidos nos anos 60 foram SHRDLU, um sistema de linguagem natural que trabalhava em “blocks worlds” com vocabulário restrito e ELIZA, uma simulação de um psicoterapeuta escrita por Joseph Weizenbaum entre 1964 e 1966. Usando pouca informação sobre o pensamento ou a emoção humana, ELIZA criava, em alguns casos, interações surpreendentemente humanas.

Quando o “paciente” excedia a base de conhecimento do programa, ELIZA fornecia uma resposta genérica, por exemplo, respondendo a “Minha cabeça dói” com “Por que você diz que sua cabeça dói?”. Durante a década de 1970, muitos programadores começaram a escrever “ontologias conceituais”, que estruturaram a informação do mundo real em dados compreensíveis por computadores.

Exemplos são MARGIE (SCHANK, 1975), SAM (CULLINGFORD, 1978), PAM (WILENSKY, 1978), TaleSpin (MEEHAN, 1976), QUALM (LEHNERT, 1977), Politics (CARBONELL, 1979) e Plot Units (LEHNERT, 1981). Neste período, muitos chatterbots foram escritos, como PARRY, Racter e Jabberwacky. Até a década de 1980, a maioria dos sistemas de PLN se baseava em conjuntos complexos de regras manuscritas. A partir do final dos anos 1980, no entanto, houve uma revolução no PLN com a introdução de algoritmos de aprendizagem automática (aprendizado de máquina) para o processamento de linguagem.

Isto foi devido tanto ao aumento constante do poder computacional (Lei de Moore) quanto à diminuição gradual da dominância das teorias da linguística chomskyanas (como a gramática gerativa), cujos fundamentos teóricos desestimularam o tipo de corpus linguístico que está subjacente à abordagem da aprendizagem automática ao processamento da linguagem. Alguns dos algoritmos de aprendizado de máquinas mais antigos, como as árvores de decisão, produziam sistemas de regras rígidas então semelhantes às regras existentes na escritas à mão. No entanto, a marcação de partes da fala (part-of-speech tagging) introduziu o uso de modelos ocultos de Markov para o PLN e, cada vez mais, a pesquisa se concentrava em modelos estatísticos, que tomam decisões suaves e probabilísticas baseadas na atribuição de pesos reais aos recursos que compõem dados de entrada.

Os modelos de linguagem de cache, sobre os quais muitos sistemas de reconhecimento de fala agora dependem, são exemplos de tais modelos estatísticos. Esses modelos são geralmente mais robustos quando dados informações desconhecidas, especialmente entrada que contém erros (como é muito comum para dados do mundo real) e produzem resultados mais confiáveis quando integrados em sistemas maiores que compreendem múltiplas tarefas. Muitos dos sucessos iniciais notáveis ocorreram no campo da tradução automática, devido especialmente ao trabalho de pesquisa da IBM, que desenvolveu modelos estatísticos mais elaborados.

Estes sistemas foram capazes de tirar proveito de corpora textuais multilíngues existentes produzidos pelo Parlamento do Canadá e a União Europeia como resultado de leis que exigem a tradução de todos os processos governamentais em todas as línguas oficiais dos países. No entanto, a maioria dos sistemas dependia de corpora desenvolvido especificamente para tarefas implementadas por esses sistemas, o que era (e muitas vezes continua sendo) uma grande limitação no sucesso dos mesmo.

Como resultado, uma grande quantidade de pesquisa passou de quantidades de dados limitadas a métodos de aprendizagem mais eficazes. Pesquisas recentes têm se concentrado cada vez mais em algoritmos de aprendizagem semi-supervisionados e sem supervisão. Esses algoritmos são capazes de aprender com dados que não foram anotados manualmente com as respostas desejadas ou usando uma combinação de dados anotados e não anotados.

Geralmente, esta tarefa é muito mais trabalhosa do que a aprendizagem supervisionada e normalmente produz resultados menos precisos para uma quantidade específica 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 muitas vezes pode compensar os resultados inferiores.  

Trechos adaptados da wikipedia

Processamento de Linguagem Natural (PLN)  

Outro problema que merece destaque é que boa parte do conhecimento na Web atualmente é expresso por linguagem natural. Com o crescimento exponencial de conteúdo despejado na rede diariamente, torna-se necessário que sejam desenvolvidas técnicas estatísticas e linguísticas capazes de extrair padrões de textos escrito em linguagem natural. O processamento da linguagem natural (PNL) é um campo de ciência da computação, inteligência artificial e linguística computacional, relacionado com as interações entre computadores e linguagens humanas (naturais) com o objetivo de processar grandes corpus de linguagem natural.

Os maiores desafios PLN envolvem compreensão e geração de linguagem natural (freqüentemente de formas lógicas formais, legíveis por máquina), conexão da linguagem e percepção de máquina, gerenciando sistemas de diálogo humano-computador, ou alguma combinação deles.   Existem duas possíveis abordagens para a realização da PLN. São elas os algoritmos linguísticos e os estatísticos. 

Algoritmos linguísticos   Estes algoritmos têm como principal característica exploração das regras linguísticas do idioma para extração de possíveis padrões. Um dos algoritmos mais importantes e utilizados é a classificação dos termos de uma sentença de acordo com sua função na sentença, esta técnica é denominada Part-of-Speech Tagging (POS tagging). Ainda é possível combinar diversas técnicas linguísticas para extrair relações de um texto. Por exemplo, é bastante comum a identificação de relações por meio do POS tagging localizando sentenças estruturadas por Sujeito, Verbo e Predicado.  

Algoritmos estatísticos   Os algoritmos estatísticos consideram a frequência das palavras e a sua posição no texto como informações básicas que podem mostrar possíveis relações. Um dos algoritmos mais simples utilizados neste campo é o de Term Frequency. Este algoritmo consiste na contagem e processamento da frequência dos termos em uma sentença. A premissa básica para sua utilização é que se um termo aparece diversas vezes em um texto é muito provável que este termo represente bem o conteúdo do texto. 

Vinicius dos Santos

Apenas um apaixonado por Ciência da Computação e a forma com que ela pode transformar vidas!

Este post tem um comentário

Deixe um comentário

dezoito − nove =