image

Accede a bootcamps ilimitados y a más de 650 cursos

50
%OFF
Article image
Carlos Lima
Carlos Lima11/01/2025 18:48
Compartir

Visão Geral para Curiosos: Processamento Natural de Linguagem

    Sumário

    • O mínimo sobre PNL
    • Python
    • NLP com Python
    • spacy
    • tokenização
    • lemmatização
    • tagging
    • parsing
    • NER
    • Doc Object
    • Quais métodos de Feature Engineering Usar?
    • Limpeza
    • BOW
    • TF-IDF
    • Treinamento

    Resumo: Este artigo trata brevemente sobre a evolução histórica e motivações para o processamento naturalmente de Linguagem, há também a intenção de mostrar brevemente a suas aplicações usando Python e a ferramente spacy.

    O mínimo que você precisa saber sobre NLP com Python

    Linguagem Natural refere-se somente a linguagens criadas e desenvolvidas pelo ser humano, não sendo válido linguagens sintéticas, como a programação. Na internet dados textuais estão, em geral, na sua forma desestruturada. Surge assim um dilema, como analisar este conteúdo? Como afirma (Sarkar, 2019) embora haja um grande desenvolvimento nos algoritmos de Machine Learning, são usados majoritariamente para dados estruturados e numéricos, como analisar este tipo de conteúdo possui benefícios, como: avaliação de satisfação do cliente, analisar se uma determinada sentença é ofensiva ou não, tradução. É preciso um campo de estudo que unifique a computação, Inteligência Artificial e a Linguagem natural.

    O PNL tem suas raízes em 1940, durante a segunda guerra mundial, momento em que a humanidade reconhece a necessidade de tarefas como a tradução e o quanto treinar máquinas para isto seria útil. Desde seu início, foi identificado por parte dos especialistas que a tarefa de ensinar máquinas a linguagem natural seria complexo, em especial, a sintaxe associada a ela, por exemplo, as duas sentenças abaixo possuem sentidos diferentes, embora as palavras estejam apenas em uma ordem diferente. Como as máquinas poderiam distinguir isto?

    i) O gato come o rato.

    ii) O rato come o gato.

    Para solucionar esse dilema, desenvolve-se então um subcampo que engloba conceitos da computação, linguagem natural e inteligência artificial, nomeado PLN (Processamento Natural de Linguagem).

    Python

    Anteriormente vimos a diferença entre Linguagem Natural e Processamento de Linguagem Natural, agora vamos definir quais ferramentas utilizaremos, a começar pela Linguagem de Programação. Python é uma linguagem de interpretação  e scripting criada por Guido Van Rossum, no final da década de 80, porém  usando os princípios da orientação a objetos e os blocos básicos da linguagem (construtores) ela pode ser usada como qualquer outra linguagem orientada a objetos. eg. Java, C/C ++. Como afirma (Ramalho, 2015) uma das suas maiores qualidades do Python é ser uma linguagem consistente, quer dizer, depois de usar algumas vezes, você começa a  supor, corretamente, o padrão de uso. Foi desenvolvida para ser uma linguagem de alto nível e  para múltiplos propósitos. Essa característica nos permitirá concentrar nossos esforços nos nossos dados e nas etapas referentes a adequação dos mesmos aos modelos de machine learning, uma vez que o Python possui bibliotecas consolidadas para a análise de textos.

    NLP com Python

    Agora que definimos a linguagem como qualidades que possam contribuir com a análise de textos, precisamos entender como Python pode ser usado para Processamento Natural de linguagem e de quais ferramentas dispomos. Por ser uma linguagem com múltiplos propósitos Python possui bibliotecas para centenas de tarefas entre as quais a análise de texto o que a torna uma excelente ferramentas para prototipagem. Algumas dessas bibliotecas aparecem abaixo:

    • NLTK
    • Gensim
    • spaCy

    Por simplicidade, vamos selecionar uma delas e discutir seus elementos. Esteja ciente de que os métodos podem mudar mas em sua essência elas desempenham o mesmo corpo de tarefas.

    spaCy

    O objetivo da biblioteca spaCy assim como as outras é ajustar o conteúdo de modo que computadores possam compreender. Por essa razão, por exemplo, elas oferecem ferramentas que performam as etapas da Fig.1

    image

    Tokenização

    Tokenização é a operação mais básica no processamento natural de linguagem, é geralmente uma das primeiras etapas e todas as outras mantém dependência de que o texto seja transformado em token. Consiste em fragmentar o texto em partes que podem ser tratadas de forma discreta, de modo o texto é formatado de modo que se torne compreensível as máquinas.

    image

    Lemmatization

    Processo que simplifica a estrutura da palavra, levando-o a sua forma “pura”, ou a forma como se encontra no dicionário. 

    image

    Tagging

    Outro recurso importante na compreensão de textos e que é disponibilizado pelo spaCy é o Tagging. Tagging permite conhecer a classificação gramatical de cada elemento da frase.

    Parsing

    Parsing possibilita a extração de verbos relevantes à sua aplicação. Digamos por exemplo que o seu objetivo seja a construção de uma ferramenta que permita a classificação de bilhetes quanto ao local desejado e quanto ao fato de ser ida ou volta. O cliente começa fazendo um cadastro no site, essas informações são então repassadas ao nosso modelo e o texto passa por todas as etapas mencionadas até Parsing. Em Parsing, na sentença:  “Eu tinha um voo para Flórida, só de ida”. O verbo que está em sua forma no passado seria identificado como o verbo “ter”. Esse tipo de informação pode fornecer pistas do que é crucial para que a necessidade do cliente seja atendida.

    NER

    NER é a sigla para Named Entity Recognition. A sua aplicação depende do contexto no qual está inserido os seus dados, mas no caso mencionado anteriormente você poderia usar essa estratégia também incluída em ferramentas como Spacy para identificar Países, Pessoas e inclusive organizações. Novamente, esse corpo de ferramentas possibilita chegar às partes primordiais do nosso texto e extrair o que realmente importa.

    Objeto

    Ao final de todas essas etapas e suas transformações, você terá um Doc Objet com o qual poderá interagir e desse modo construir suas aplicações considerando as sutilezas do que pretendo fazer com o texto que acabou de ser processado. Este formato lhe trará flexibilidade e a opção de realizar outras tarefas avançadas além é claro de ser um formato que pode ser reconhecido por outros modelos de Machine Learning.

    Quais métodos de Feature Engineering aplicar em texto?

    Assim como com dados tabulares, precisamos aplicar transformações nas features, este processo pode aprimorar a performance dos modelos ou mesmo assegurar que o conteúdo será compreendido pelo modelo, para texto geralmente aplicamos os seguintes transformações:

    • limpeza do texto
    • bag of words
    • tf-idf
    • stop words

    Vamos nos aprofundar em cada uma destas etapas e em como aplicá-las usando Python.

    3.1 Limpeza

    Esta função irá remover caracteres inconvenientes ou emoticons presentes no texto, comum em mensagens extraídas de redes sociais. Haverá também uma padronização em relação ao tamanho do texto.

    3.2 Bag Of Words

    Quando lidamos com dados numéricos precisamos transformar a informação em um vetor numérico, com palavras que não são diferentes. Nesse caso, aplicamos uma estratégia chamada BOW, consiste em:

    • criamos um token para a palavra
    • um vetor para cada ‘documento’ e conta a ocorrência das palavras

    doci: O sol é belo.

    docii: O sol é doce.

    dociii: O sol é sol.

    O: 3

    Sol: 4

    é: 3

    belo: 1

    doce: 1

    [1, 1, 1, 0, 0]

    [1, 1, 1, 0, 1]

    [2, 1, 1, 0, 0]

    3.3 tf-idf

    É possível que algumas palavras possuam alta frequência e ainda assim seja irrelevante para a análise, para quantificar essa importância usamos uma estratégia chamada tf-idf, term frequency inverse document frequency.

    O tf-idf controla o peso das frequências e pode ser computado como o produto da frequência do termo pelo inverso da frequência do documento.

    Treinamento

    Após todas as etapas acima, podemos construir um pipeline usando o sklearn para unificar todos os processos que vão do tratamento a transformação do conteúdo textual para selecionarmos um modelos capaz de fazer as previsões.

    Leitura Complementar

    https://cs.stanford.edu/people/eroberts/courses/soco/projects/2004-05/nlp/overview_history.html

    http://arxiv.org/pdf/2010.04543v1

    https://hg.python.org/peps/file/tip/pep-0020.txt

    Python Success Stories | Python.org

    https://www.python.org/about/apps/

    https://wiki.python.org/moin/Applications

    https://paperswithcode.com/paper/toxic-language-detection-in-social-media-for

    https://www.mendeley.com/guides/apa-citation-guide/

    https://davidbpython.com/advanced_python/slides/handout-71-3.html

    https://docs.python.org/3/reference/datamodel.html

    https://hackernoon.com/what-you-need-to-know-about-pythons-data-model

    https://www.youtube.com/watch?v=z11P9sojHuM

    https://www.nltk.org/book/

    https://medium.com/turing-talks/uma-an%C3%A1lise-de-dom-casmurro-com-nltk-343d72dd47a7

    https://github.com/dipanjanS/text-analytics-with-python/tree/master/New-Second-Edition

    https://www.phoenix.edu/blog/scripting-vs-programming-languages.html#:~:text=Scripting%20languages%20are%20generally%20interpreted,the%20compiler%20before%20being%20executed.

    https://docs.python.org/3/library/index.html

    https://www.nltk.org/book/ch05.html

    https://colab.research.google.com/drive/1JsJ81nPtjH1W56xjJN7FVqGporMcWvkA?usp=sharing

    https://spacy.io/universe/category/books

    https://mlarchive.com/natural-language-processing/tokenization-the-cornerstone-for-nlp-tasks/

    https://en.wikipedia.org/wiki/Lemmatization

    Nota do autor

    • Seja paciente sobre possíveis erros gramaticais, a julgar pela recorrência deles você sabe o quanto eu usei o ChatGPT ou qualquer outra ferramenta para escrever o mesmo.
    • Este trabalho levou tempo para ser pesquisado e filtrado, escrever é uma tarefa nobre e árdua. Pretendo separar momento para no futuro entregar artigos com referências e em pt-br.
    • Se tiver interesse no uso da ferramenta spacy há o artigo meu no MEDIUM com uma breve introdução a ferramenta.
    • Em caso de dúvidas, deixe nos comentários abaixo (farei o possível para responder a tempo).

    Você também pode me encontrar aqui, ou me seguir na DIO para conteúdo dessa natureza:

    Compartir
    Comentarios (0)