Este tutorial é uma valiosa contribuição da nossa comunidade e foi editado pela DataCamp para garantir clareza e precisão.
Quer compartilhar sua experiência? A gente quer te ouvir! Envie seus artigos ou ideias pelo nosso formulário de contribuição da comunidade.
Se você trabalha com dados, provavelmente já sabe a importância de construir um pipeline sólido de limpeza e preparação de dados em qualquer projeto de machine learning. Mas, quando o assunto é dado textual, essa etapa fica ainda mais crítica por causa dos desafios específicos desse tipo de dado. Ruído, erros de ortografia, abreviações, gírias e problemas gramaticais podem comprometer o desempenho dos modelos.
Para garantir que os dados textuais usados em modelos de machine learning sejam precisos, consistentes e livres de erros, um pipeline bem desenhado de limpeza e preparação é essencial. Normalmente, isso envolve tarefas como normalização de texto, tokenização, remoção de stopwords, stemming, lematização e mascaramento de dados.
Embora bibliotecas populares como NLTK, gensim e spaCy ofereçam uma ampla variedade de ferramentas para processamento e limpeza de texto, lidar com dados textuais ainda traz desafios únicos que podem afetar diretamente a performance dos modelos. Esses desafios vão desde normalização de caracteres até mascaramento de dados e muito mais. Embora seja possível resolver esses pontos com as bibliotecas acima, isso costuma exigir tempo e esforço consideráveis.
É aí que o Textacy brilha. O Textacy é uma biblioteca Python que oferece uma forma simples e prática de resolver uma série de problemas comuns ao trabalhar com dados textuais. Embora outras bibliotecas tenham funcionalidades parecidas, o foco do Textacy em questões específicas, como normalização de caracteres e mascaramento de dados, o destaca nesse contexto.
Normalização de caracteres com Textacy
A normalização de caracteres é o processo de converter textos para um formato padrão, algo especialmente importante quando lidamos com dados multilíngues.
Text = ‘ the cafe “Saint-Raphaël” is loca-/nted on Cote d’Azur.’
Caracteres acentuados são um problema comum na normalização de texto e podem impactar bastante a acurácia de modelos de machine learning.
Isso acontece porque as pessoas não usam acentos de forma consistente, o que gera inconsistências nos dados.
Por exemplo, os tokens "Saint-Raphaël" e "Saint-Raphael" podem se referir à mesma entidade, mas sem normalização eles não serão reconhecidos como idênticos. Além disso, textos costumam trazer palavras separadas por hífen, e apóstrofos como os do exemplo acima podem atrapalhar a tokenização. Para todos esses casos, faz sentido normalizar o texto e substituir acentos e caracteres especiais por equivalentes ASCII.
Vamos usar o Textacy para isso, já que ele tem uma boa coleção de funções pré-definidas para resolver o problema de maneira simples e eficiente. A tabela a seguir traz uma seleção das funções de pré-processamento do Textacy que funcionam de forma independente de outras bibliotecas.
|
Função |
Descrição |
|---|---|
|
normalize _hyphentated_words |
Remonta palavras que foram separadas por uma quebra de linha |
|
normalize_quotation_marks |
Substitui vários tipos de aspas estilizadas por um equivalente ASCII |
|
normalize_unicode |
Unifica diferentes códigos de caracteres acentuados em Unicode |
|
remove_accents |
Substitui caracteres acentuados por ASCII |
|
replace_emails |
Substitui e-mails por __EMAIL__ |
|
replace_urls |
Substitui URLs por __URL__ |
text = "The café "Saint-Raphaël" is loca-\nted on Cote dʼAzur."
import textacy
import textacy.preprocessing as tprep
def normalize(text):
text = tprep.normalize_hyphenated_words(text)
text = tprep.normalize_quotation_marks(text)
text = tprep.normalize_unicode(text)
text = tprep.remove_accents(text)
return text
Usar a função normalize acima, baseada nas funções pré-definidas de pré-processamento do Textacy, ajuda a resolver o problema de normalização com mínimo esforço.
print(normalize(text)
Saída:
The cafe Saint-Raphael is located in Cote d' Azure
Mascaramento de dados com Textacy
Dados textuais geralmente contêm não só palavras comuns, mas também vários tipos de identificadores, como URLs, endereços de e-mail ou números de telefone. Às vezes, nosso interesse está justamente nesses itens. Em muitos casos, porém, é melhor remover ou mascarar essas informações, seja por irrelevância, seja por questões de privacidade.
O Textacy oferece funções de substituição bem práticas para mascaramento de dados, como mostrado na tabela acima. Essas funções já vêm prontas, o que facilita mascarar informações sensíveis ou irrelevantes sem precisar escrever expressões regulares personalizadas.
text = "Check out https://spacy.io/usage/spacy-101"print(replace_urls(text))
Saída:
Check out __URL__
Resumo
Neste artigo, mostramos como o Textacy pode simplificar o pré-processamento de dados textuais. Com seu conjunto de funções nativas, o Textacy facilita lidar com desafios comuns de pré-processamento, como normalização de caracteres e mascaramento de dados.
Ao agilizar o pré-processamento, o Textacy abre caminho para você focar nas partes mais complexas e desafiadoras do processamento de linguagem natural. Seja em análise de sentimento, modelagem de tópicos ou qualquer outra tarefa de NLP, o Textacy ajuda a deixar seus dados prontos para análise de forma rápida e eficiente.
Então, da próxima vez que você se deparar com um desafio de pré-processamento, considere usar o Textacy para simplificar seu fluxo de trabalho e economizar tempo e esforço.
Se este guia sobre o Textacy foi útil e você quer se aprofundar em pré-processamento de texto e processamento de linguagem natural, considere se inscrever no curso Natural Language Processing Fundamentals in Python da DataCamp.