Pontos Principais
- O Processamento de Linguagem Natural (PLN) é uma forma especializada de aprendizado de máquina adaptada para texto. Como humanos trabalham com texto, muitas vezes de forma verbal, é um bom domínio de problemas para redes neurais;
- O modelo de treinamento de PLN é essencialmente uma rede neural treinada para lidar com problemas e tipos de dados específicos;
- No futuro, PLN permitirá respostas mais automatizadas e uma melhor compreensão das conversas humanas. Comandos para nossos telefones e computadores serão tratados com um alto grau de sofisticação;
- Melhorias na análise de sentimento serão resultantes de melhorias nos dados e nas redes neurais de PLN. Muitas vezes a qualidade dos dados é negligenciada;
- Selecionar a rede neural certa para o problema certo é um desafio. É importante usar o tipo correto de rede neural para o problema em questão.
O livro Processamento de Linguagem Natural com Java - Segunda Edição, de autoria de Richard M Reese e Ashish Singh Bhatia, aborda o tópico Processamento de Linguagem Natural (PLN) e várias ferramentas que os desenvolvedores podem usar em seus aplicativos.
As tecnologias discutidas no livro incluem Apache OpenNLP, Stanford NLP, LingPipe, GATE, UIMA e Apache Lucene Core.
Os autores discutem o modelo de PLN que inclui as seguintes etapas:
- Identificando a tarefa;
- Selecionando um modelo;
- Treinando o modelo;
- Verificando e usando o modelo.
Outros tópicos abordados no livro incluem como encontrar partes de texto, identificar frases, pessoas e coisas, incluindo detecção de partes em um som.
Os autores também discutem Aprendizagem Profunda (deep learning) com Java, bem como classificação de documentos e textos que pode ser usado para detecção de spam e análise de sentimentos. Os frameworks OpenNLP, Stanford API e LingPipe são utilizados para classificar textos.
Reese também produziu vídeo-aulas sobre esse assunto.
O InfoQ conversou com Reese sobre o livro e as vídeo-aulas e como PLN pode ser usada em aplicações corporativas.
InfoQ: Poderia descrever como funciona PLN e como ele se diferencia das técnicas tradicionais de aprendizado de máquina (Machine Learning - ML)?
Richard M Reese: O processamento de linguagem natural em sua forma mais simples pode ser suportado pelo Java core SDK usando várias classes e métodos padrões. No entanto, as tarefas de PLN mais sofisticadas exigem o uso de bibliotecas especializadas. Bibliotecas populares como OpenNLP, Stanford NLP API e LingPipe.
Muitas técnicas de PLN usam redes neurais para implementar uma tarefa de PLN. Os modelos são treinados por meio de amostra de dados e podem ser usados para problemas específicos. Para problemas comuns e linguagens naturais, vários modelos estão disponíveis e podem ser facilmente utilizados por um desenvolvedor. Em situações únicas, os modelos precisam ser treinados usando conjuntos de dados especializados. Mesmo para uma língua como o inglês, existem domínios especializados, como revistas médicas e textuais, que exigem modelos únicos. Dado um modelo treinado, dados semelhantes são submetidos à rede neural que então realiza a análise.
PLN difere do aprendizado de máquina tradicional de várias maneiras. PLN é uma forma especializada de aprendizado de máquina adaptada ao texto. Como os humanos trabalham com texto, muitas vezes de forma verbal, é um bom domínio de problemas para redes neurais. O aprendizado de máquina está relacionado a outras tarefas, como a análise de imagens visuais e a entrada de áudio. Também é útil para suportar a manipulação de objetos comumente usados em aplicativos do tipo robô.
InfoQ: Como funciona o treinamento de modelos para PLN?
Reese: Um modelo de treinamento é essencialmente uma rede neural que foi treinada para lidar com problemas específicos por meio de um tipo específico de dados. Por exemplo, podemos treinar uma rede neural para identificar o sentimento de um texto alimentando ele com os dados que representam o problema. Uma vez treinados, dados semelhantes podem ser fornecidos e a rede neural realizará a análise, possívelmente, com bons resultados.
Existem diferentes tipos de redes neurais que diferem com base no número de camadas utilizadas e no tipo de interconexões. Uma rede neural artificial imita a rede de neurônios encontrados no cérebro, embora eles não sejam tão complexos assim. Os vários pesos atribuídos aos neurônios mudam conforme o modelo é treinado.
InfoQ: Quais são as aplicações corporativas que usam PLN?
Reese: Existem vários cenários que usam o PLN. Por exemplo, atendimento ao cliente pode ser melhorado analisando de forma automática as interações e comentários. Bots de bate-papo (chat bots) estão sendo usados para engajar os clientes e determinar as especificidades de suas preocupações. A análise de sentimentos determinará como um cliente se sente em relação a um produto ou serviço. O direcionamento dos anúncios podem ser influenciados pela análise de comentários que um cliente em potencial faça.
No futuro vamos testemunhar melhorias na capacidade de derivar significado dos meios de comunicação. Isso permitirá respostas mais automatizadas e uma melhor compreensão das conversas humanas. Comandos para nossos telefones e computadores serão tratados com um alto grau de sofisticação.
InfoQ: Como PLN pode ajudar nos casos de uso relacionados à análise de sentimentos?
Reese: Um uso tradicional da análise de sentimentos tem sido determinar se um comentário sobre algo é positivo ou negativo. Com base na análise, os ajustes podem ser feitos no produto ou serviço, ou um usuário pode determinar melhor se um produto é o certo para ele. Serviços como Netflix atualmente oferecem programas ou recomendações de filmes. Pela minha experiência pessoal, eles não são muito precisos. À medida em que as melhorias na análise de sentimento ocorrem e quando várias fontes de feedback vindas dos usuários se tornam disponíveis, essas recomendações são aprimoradas.
Os resultados da análise são determinados pela qualidade do modelo e pela qualidade dos dados. Melhorias na análise de sentimento virão das melhorias na rede neural de PLN e dados. Muitas vezes a qualidade dos dados é negligenciada. Os dados devem ser limpos e colocados no formato adequado antes de serem usados para fins de treinamento e análise.
InfoQ: Como podemos usar PLN para classificar textos e documentos?
Reese: Amostras de dados são utilizados para treinar modelos. Muitas vezes estes conjuntos de dados contêm não apenas o texto a ser classificado, mas também o resultado esperado. Ou seja, se uma mensagem de texto específica for positiva, um atributo positivo será atribuído a ela. Isso é conhecido como aprendizado supervisionado. Com um conjunto de dados suficientemente grande, o modelo pode ser treinado para reconhecer revisões semelhantes, positivas ou negativas. Quanto maior o conjunto de dados, e mais reflexivo o seu conteúdo é para o problema em questão, melhor será a qualidade dos resultados.
Quando o conjunto de dados não contém um atributo especificando o resultado esperado, ele é conhecido como aprendizado não supervisionado. O processo de treinamento irá organizar o que considera como tipos similares de documentos e atribuir tags a eles. É um processo demorado criar conjuntos de dados aos quais foram atribuídos resultados. Evitar esse processo é a principal vantagem dos modelos não supervisionados, embora a classificação seja um processo mais difícil.
InfoQ: Quais são os desafios de PLN?
Reese: Os desafios podem ser encontrados em vários níveis. Na arquitetura da rede neural, no número de camadas e como essas camadas estão interconectadas. Um dos grandes desafios é projetar melhores estruturas de redes neurais.
Selecionar a rede neural certa para o problema certo é outro desafio. O velho ditado sobre o uso do martelo certo para o trabalho certo se encaixa bem aqui. Não queremos usar uma marreta para pendurar uma foto na parede. Da mesma forma, é importante usar o tipo correto de rede neural para o problema em questão.
O modelo treinado deve ser tão bom quanto os dados. Os dados precisam ser abrangentes, corretos e relativamente livres de pontos ruins. A preparação dos dados geralmente é a parte mais demorada e importante do processo.
Outro fator importante é a correta interpretação dos resultados. Às vezes, a saída da análise é representada por um conjunto de números que medem diferentes aspectos dos resultados. Se eles forem interpretados incorretamente, o esforço geral poderá ser de menor valor.
InfoQ: O que é Entendimento em Linguagem Natural (ELN) e Geração de Linguagem Natural (GLN)? Como eles se diferenciam de PLN?
Reese: ELN está preocupado em extrair o significado do texto e produzir dados que reflitam esse significado. Já o GLN por sua vez, envolve a criação de texto que soa e flui naturalmente. O ELN tenta entender o que um humano está dizendo a partir de uma declaração como "Envie a mensagem para Sue". O comando está se referindo a qual mensagem? Como deve ser enviado? Se há múltiplos contatos de Sues, qual deles? Responder essas perguntas nem sempre é fácil para um computador. Os avanços na ELN melhoram a capacidade dos computadores de obter significado do texto.
Quando um computador precisa se comunicar com um usuário, o texto gerado deve ser claro e natural. O tipo antigo de texto mad libs, em que um modelo é preenchido com palavras geralmente escolhidas aleatoriamente, tipifica uma abordagem que não gera o tipo de texto que a maioria das pessoas gostaria de ouvir. Em vez disso, o GLN trabalha para gerar um texto que seja mais agradável ao ouvido humano. ELN e GLN são subcampos da PLN.
InfoQ: Quais são as tendências emergentes acontecendo agora no espaço de PLN?
Reese: É um jogo em constante evolução. Veremos melhorias em ELN / GLN que darão origem a novas capacidades e aplicações. Assistentes pessoais semelhantes a Alexa e Ok Google ajudarão os humanos em todos os tipos de empreendimentos. Mais empresas vão lançar aplicativos de PLN que muitas vezes serão "criados em casa", ou seja, não serão baseados na Amazon ou no Google. Em vez disso, eles podem confiar na tecnologia produzida por outros fornecedores de PLN, como a IBM.
Muitas aplicações de PLN irão incorporar abordagens híbridas, nas quais as técnicas de análise são combinadas com a intervenção humana para fornecer uma resposta mais significativa e satisfatória. Quando as técnicas de PLN atingirem seus limites, um humano irá intervir. As respostas criadas manualmente estão sendo usadas atualmente para domínios de problemas específicos limitados. Por exemplo, assistentes pessoais podem responder apenas a determinados tipos de consultas. As aplicações que aparentemente mais capacitadas, na verdade são estruturadas para lidar com um grande conjunto de interações fortemente definidos.
O processamento de PLN será mais distribuído. Tanto o treinamento quanto os conjuntos de dados podem ser distribuídos em várias plataformas. Os smartphones e dispositivos similares terão funcionalidades de ML incorporadas na forma de processadores especializados. Isso novamente trará novos usos para a tecnologia de PLN. Os dados virão de um conjunto de fontes mais diversificados, à medida que sensores e atuadores se tornarão mais predominantes na sociedade.
Obtenha uma pré-visualização do livro e do vídeo.
Sobre o autor
Richard M. Reese trabalhou na indústria e no meio acadêmico. Por 17 anos, ele trabalhou nas indústrias de telefonia e aeroespacial, atuando em várias funções, incluindo pesquisa e desenvolvimento, desenvolvimento de software, supervisão e treinamento. Ele atualmente leciona na Tarleton State University. Richard escreveu vários livros de Java e também um livro de C Pointer. Ele usa uma abordagem concisa e fácil de entender para ensinar sobre os tópicos abordados. Seus livros de Java cobrem EJB 3.1, atualizações para Java 7 e 8, certificação, programação funcional, jMonkeyEngine e processamento de linguagem natural.