Introdução ao Processamento de Linguagem Natural — Natural Language Processing(NLP)

Nina Pinheiro
May 2 · 9 min read

O que é processamento de linguagem natural?

O Processamento de Linguagem Natural (PLN) — Natural Language Processing (NLP) é uma vertente da Inteligência Artificial que estuda a capacidade e as limitações de uma máquina em entender a linguagem dos seres humanos. Ou seja, é uma interface entre a linguagem homem-máquina. Dessa forma, o objetivo do PLN é fornecer aos computadores a capacidade de entender e compor textos.

Desafios:

Entender um texto muitas vezes pode ser bem desafiador, sobretudo por causa da ambiguidade da linguagem natural. Os seres humanos não têm tanta dificuldade em desvendar os duplos-sentidos porque têm algo chamado conhecimento cultural comum e experiência anterior. Para as máquinas, prova ser uma tarefa difícil reconhecer a presença de ambiguidades. O desafio torna-se mais evidente quando lembramos que, muitas vezes, é necessário entender situações mais complexas como: reconhecer o contexto, tonalidade da voz falada, extrair informações, interpretar os sentidos, analisar os sentimentos, realizar análise sintática, semântica, lexical e morfológica. Podemos observar um exemplo resumido das tarefas de NLP sendo ilustrado em uma pirâmide em diferentes níveis (FIGURA 1).

Figura 1: “Natural Language Processing Pyramid” — Pirâmide que ilustra algumas tarefas de NlP. Fonte: Nlpforhackers (2021).

Aplicações

Isto posto, vemos o processamento de linguagem natural como uma ferramenta estabelecendo uma ponte humano-computador. Dessa forma, é relevante, pois pode possibilitar que os computadores realizem tarefas de forma mais rápida e ajude na produtividade e automação de tarefas, uma vez que o computador é muito mais rápido em ler e analisar milhares de palavras do que um ser humano, o que pode ser útil na hora de encontrar padrões, por exemplo, em alguns documentos. Além disso, há outras aplicações possíveis que estão vinculadas a esta área, tais como:

Análise de sentimentos: Pode possibilitar a identificação de opiniões subjetivas. O efeito disso é poder permitir que uma grande volumetria de dados textuais possam ser analisados em relação aos sentimentos e opiniões presentes nesses textos. Um exemplo clássico é a análise de sentimentos no Twitter sobre o governo Bolsonaro podendo propiciar uma análise a respeito dos sentimentos e opiniões predominantes na população sobre o atual governo;

Revisão de contratos: Alguns modelos podem ser capazes de identificar erros comuns em um volume de contratos. Isso pode facilitar o trabalho de um advogado no sentido de realizar análises de contratos com o objetivo de aconselhar seu cliente a assinar ou não a um documento e, assim, negociar melhores cláusulas.

Tradução de máquina: Traduz textos de um idioma para outro, automaticamente, facilitando a leitura de alguns livros e documentos.

Descoberta investigativa: Identifica padrões textuais em e-mails, por exemplo, a fim de ajudar na detecção e resolução de crimes.

Texto preditivo: quando você começa a digitar e o Google já ‘prevê’ o que você está querendo digitar. Isso é um modelo de geração de linguagem de pesquisa que usa o NLP.

Chatbots: Software usado para facilitar a comunicação com o cliente. Este aplicativo consegue interpretar e interagir com os clientes.

Limpeza de dados /Pré-Processamento:

Para modelar a língua e possibilitar que a máquina a entenda, são necessários pré-processamentos que abstraem e estruturam a língua, deixando apenas o que é informação relevante. Esse pré-processamento reduz o vocabulário e torna os dados menos esparsos, característica conveniente para o processamento computacional, uma vez que os conjuntos de documento de texto são representados por um grande número de características. Essas características podem ser irrelevantes ou redundantes no processo de classificação do texto. Dessa forma, o objetivo do pré-processamento é extrair de textos uma representação estruturada e manipulável por algoritmos de classificação que identifique o subconjunto mais significativo para a coleção de texto (Rezende e outros (2011)), ou seja, obter uma representação com qualidade melhor do que a inicial.

Um dos primeiros passos que se realiza é a tokenização, que é utilizada para decompor o documento em cada termo que o compõe. Assim, cada termo é chamado de “token”. Para delimitar cada termo, geralmente são usados quebras de linhas, espaço em branco, símbolos como “|”, entre outros. Neste exemplo abaixo (FIGURA 2), verifica-se que há 5 tokens “eu”, “gosto”,”de”,”aprender” e “@#”

Figura 2: “Palavras Tokenizadas” — Presença de 5 tokens na frase. Fonte: Autoria Própria.

Neste exemplo, o separador foi o espaço. Após a tokenização, geralmente é realizada a limpeza de dados, uma etapa em que são descartados os caracteres especiais. É importante ter em mente que, de modo geral, os caracteres especiais (,. %:’$#&!?) podem não trazer ganhos para o modelo e podem até atrapalhar, por isso é importante removê-los. A exceção ocorre quando precisamos desse caractere para identificar algo lógico no nosso texto, por exemplo o “$” é utilizado para demonstrar valores monetários. Neste último exemplo, a maneira mais simples de extrair esses dados no meio do texto seria utilizando expressões regulares. De modo geral, expressões regulares (ou regex) são códigos utilizados para extrair dados específicos no meio de um texto buscando por padrões.

A próxima etapa é a remoção de Stopwords, que são elementos do texto que geralmente tem “pouca informação”, ou seja, não apresentam uma semântica significativa. Alguns exemplos comuns são artigos, preposições, verbos auxiliares. No exemplo acima “eu/gosto/de/aprender/, com este procedimento ficaria “eu/gosto/aprender”.

Bag of words

Após essa etapa, é necessário realizar a transformação do texto em uma informação numérica, uma vez que o texto é um tipo de dado não estruturado, ou seja, um tipo de dado que não está organizado de uma maneira pré-definida. Isso é necessário pois o computador ainda não é capaz de processar símbolos discretos, operando em linguagem essencialmente matemática. Existem algumas técnicas, como o bag of words (BOW) — saco de palavras — um modelo de representação em que é desconsiderada a gramática, o contexto e a ordem das palavras. Uma das suas implementações é indicar se um determinado termo aparece em um determinado documento (TABELA 1).

Tabela 1 — Exemplo de uma tabela que ilustra dois documentos e o total de palavras.Fonte: Autoria Própria.

Tabela 2 — Exemplo de uma tabela que ilustra o funcionamento do BOW.Fonte: Autoria Própria.

Neste exemplo, verifica-se que a palavra “verde” aparece no documento A, representado por 1, enquanto que no documento B é ausente, representado por 0. Outra técnica comum é o TF-IDF, uma medida estatística que avalia a relevância de uma palavra em um documento presente em uma coleção de documentos (corpus).

TFIDF

Diferente do BOW que avalia apenas as frequências dos termos, o TFIDF leva em consideração também um fator de ponderação (IDF). Ou seja, essa técnica avalia a frequência local e a frequência geral deste determinado termo e também um fator de ponderação de forma para que aqueles que mais aparecem nos documentos tenham uma representatividade menor. É calculado pelo produto do termo da frequência (TF) e pelo termo da frequência inversa (IDF);O “Term Frequency” (TF) calcula a frequência que um termo aparece no documento. Dessa forma,quanto maior for a frequência, maior será a importância do termo.

Fórmula:

TF = (Ocorrências de palavras no documento d / número total de palavras no documento d)

Tabela 3 — Exemplo de uma tabela que ilustra dois documentos e o total de palavras.

Tabela 4 — Exemplo de uma tabela que calcula o TF.Fonte: Autoria Própria.

Podemos observar que existem no total dois documentos, o “A” e o “B”. Verifica-se que nas colunas estão as palavras do documento, enquanto nas linhas os cálculos que envolvem o TF. Por exemplo, no documento “A” aparecem 4 palavras no total e aparece uma única vez a palavra “verde”. Dessa forma, será 1/4.

Enquanto, o Inverse Document Frequency (IDF), calcula a frequência com que o termo aparece em todos os documentos da coleção. Dessa maneira, quanto maior for a frequência nos documentos, menor será a importância do termo;

Fórmula:

IDF(w,D) = (Número total de documentos presente no corpus/número de documentos contendo a palavra analisada)

Tabela 5 — Exemplo de uma tabela que calcula o IDF. Fonte: Autoria Própria.

O IDF foi calculado pelo logaritmo neperiano entre o número total de documentos que existem sobre a quantidade de documentos nos quais a palavra aparece. Neste exemplo, há 2 documentos e a palavra “verde” aparece em apenas um documento, logo o cálculo será ln(2/1) = 0,69

Após calcular o TF e o IDF, faz-se o produto TFIDF = TF*IDF

Tabela 6 — Exemplo de uma tabela que calcula o TFIDF. Fonte: Autoria Própria.

Assim, para calcular o TFIDF do documento A, calcula-se o produto do TF(A) e IDF(A) . Por exemplo, para a palavra “verde” será TF = 1/7 vezes IDF = 0,69. O produto será 0.09.

Word Embeddings

Uma outra técnica utilizada são os “Word Embeddings”, que são vetores contendo números reais representando palavras ou documentos em um espaço vetorial predefinido. Cada palavra é mapeada para um vetor e os valores do vetor são ajustados por uma rede neural. Durante este aprendizado as palavras são treinadas e definidas de acordo com o contexto no qual são inseridas e não de forma individual. O efeito disso é que os embeddings são capazes de capturar conhecimento morfológico, sintático e semântico, diferentemente do que ocorre com as outras técnicas citadas. Essa capacidade dos Word Embeddings para modelar o contexto das palavras, capturando regularidades linguísticas tão importantes como a semântica, permite que localizemos palavras próximas no espaço vetorial usando aritméticas simples, tal como a medida de similaridade cosseno. Dessa forma, palavras semelhantes são representadas por vetores quase semelhantes colocados muito próximos em um espaço vetorial. Existem diferentes processos de criação de Word Embeddings como o “GloVE”, “Word2Vec, FastText e entre outros.

Tabela 7 — Exemplo de uma tabela que calcula Word Embeddings.Fonte: Autoria Própria.

Na Tabela 3 pode-se verificar um exemplo em que os textos passaram pela etapa de alguns pré-processamentos como: a eliminação de stopwords e também pelo cálculo dos Words Embeddings. Então, pode-se verificar que as palavras “manga” apresentam diferentes significados inseridos em contextos diferentes. No documento “A” o significado é de fruta, enquanto no segundo exemplo é de uma parte de camisa. Embora apresentem significados diferentes, ainda assim existem similaridades, pois é a mesma palavra. Contudo, “manga” apresenta mais alta similaridade com camisa também (0.09), pois está associada a uma parte da camisa. Além disso, outra observação que podemos analisar é que azul e verde são similares e, portanto, apresentam valores similares. Dessa forma, esta técnica apresenta como vantagem permitir uma análise de cunho morfológico, sintático bem como semântico, possibilitando distinguir diferentes significados, como a palavra polissêmica “manga” colocada na tabela acima.

Agradecimentos — Muito obrigada pela gentileza por revisarem e pelas sugestões. Muito aprendizado com vocês !

Revisores:

Matheus Jorge — https://www.linkedin.com/in/matheus-jorge-69bb6715b/

Luis — https://medium.com/@luisfredgs

Jailson — https://www.linkedin.com/in/jailsonr/

Gabriel Pádua — www.linkedin.com/in/gabriel-pádua

Códigos de NLP: https://github.com/Nina-pinheiro/Data-Science-Python/tree/master/files

Para quem me conhece, uma poesia nunca é demais =)

Referencias:

Bird, Steven, Ewan Klein, and Edward Loper. Natural language processing with Python: analyzing text with the natural language toolkit. “ O’Reilly Media, Inc.”, 2009.

Goldberg, Yoav. “Neural network methods for natural language processing.” Synthesis lectures on human language technologies 10.1 (2017): 1–309.

Pereira, Daniel Bastos, and Ivandré Paraboni. “A language modelling tool for statistical NLP.” Anais do V Workshop em Tecnologia da Informação e da Linguagem Humana–TIL. 2007.

REZENDE, S. O.; MARCACINI, R. M.; MOURA; M. F. O uso da Mineração de

Textos para Extração e Organização Não Supervisionada de

Conhecimento. Revista de Sistemas de Informação da FSMA, n.7, p. 7

Santos, Diana. “What is natural language? Differences compared to artificial languages, and consequences for natural language processing.” (2006).

Nogoseke, Luís Felipe. “Aplicação de differentiable neural computers na resolução de problemas de processamento de linguagem natural.”

Thanaki, Jalaj. Python natural language processing. Packt Publishing Ltd, 2017.

https://www.sas.com/pt_br/insights/analytics/processamento-de-linguagem-natural.html

https://www.tableau.com/pt-br/learn/articles/natural-language-processing-examples

https://medium.com/botsbrasil/o-que-%C3%A9-o-processamento-de-linguagem-natural-49ece9371cff

https://weni.ai/blog/processamento-de-linguagem-natural-o-que-e/

https://dataml.com.br/pre-processamento-de-texto-para-nlp-e-fundamentos/

<http://www.fsma.edu.br/si/edicao7/FSMA_SI_2011_1_Principal_3.pdf>.

Data Hackers

Blog oficial da comunidade Data Hackers

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store