23 de fevereiro de 2021
O senhor trabalha em projetos de PNL? Cansado de procurar sempre as mesmas funções bobas de pré-processamento na Web, como remover acentos de publicações em francês? Cansado de passar horas trabalhando com Regex para extrair eficientemente endereços de e-mail de um corpus? Amale El Hamri mostrará como o NLPretext pode ajudar o senhor!

Medium Tech Blog by Artefact

Visão geral do NLPretext

O NLPretext é composto por 4 módulos: básico, social, token e augmentation.

Cada um deles inclui funções diferentes para lidar com as tarefas mais importantes de pré-processamento de texto.

Pré-processamento básico

O módulo básico é um catálogo de funções transversais que podem ser usadas em qualquer caso de uso. Elas permitem que o senhor manipule:

  • Espaços em branco incorretos em um texto, caracteres de fim de linha
  • Problemas de codificação
  • Caracteres especiais, como símbolos de moeda, números, sinais de pontuação, caracteres latinos e não latinos

  • E-mails e números de telefone
from nlpretext.basic.preprocess import replace_emails
exemplo = “Encaminhei este e-mail para obama@whitehouse.gov”
example = replace_emails(example, replace_with=”*EMAIL*”)
print(example)
# “Encaminhei este e-mail para *EMAIL*”

Pré-processamento social

O social O módulo é um catálogo de funções úteis que podem ser úteis ao processar o data social, como, por exemplo, o senhor:

  • extração/remoção de hashtags

  • Extração/remoção de emojis

  • extração/remoção de menções

  • limpeza de tags html

from nlpretext.social.preprocess import extract_emojis
exemplo = “Eu cuido da minha pele 😀”
exemplo = extract_emojis(exemplo)
print(example) #[‘:grinning_face:’]

Aumento de texto

O módulo de aumento ajuda o senhor a gerar novos textos com base nos exemplos fornecidos, modificando algumas palavras nos exemplos iniciais e mantendo as entidades associadas inalteradas, se houver, no caso de tarefas de NER. Se quiser que as palavras que não sejam entidades permaneçam inalteradas, o senhor pode especificá-las no argumento stopwords. As modificações dependem do método escolhido; as atualmente suportadas pelo módulo são substituições com sinônimos usando o Wordnet ou o BERT da biblioteca nlpaug.

Crie seu pipeline de ponta a ponta

Pipeline padrão

Nossa biblioteca fornece um objeto Preprocessor para canalizar com eficiência todas as operações de pré-processamento.
Se o senhor precisar manter todos os elementos do texto e realizar o mínimo de limpeza, use o pipeline padrão. Ele normaliza espaços em branco e remove caracteres de nova linha, corrige problemas de unicode e remove artefatos recorrentes de data social, como menções, hashtags e tags HTML.

from nlpretext import Preprocessor
text = “Acabei de ter o melhor jantar da minha vida @latourdargent !!! Eu recomendo 😀 #food #paris n”
preprocessor = Preprocessor()
text = preprocessor.run(text) print(text)
# “Acabei de ter o melhor jantar da minha vida!!! Eu recomendo”.”

Pipeline personalizado

Se o senhor tiver uma ideia clara de quais funções de pré-processamento deseja canalizar em seu pipeline de pré-processamento, poderá adicioná-las em seu próprio Preprocessador.

from nlpretext import Preprocessor
from nlpretext.basic.preprocess import (normalize_whitespace, remove_punct, remove_eol_characters, remove_stopwords, lower_text)
from nlpretext.social.preprocess import remove_mentions, remove_hashtag, remove_emoji
text = "Acabei de ter o melhor jantar da minha vida @latourdargent !!! Eu recomendo 😀 #food #paris n"
preprocessor = Preprocessor()
preprocessor.pipe(lower_text)
preprocessor.pipe(remove_mentions)
preprocessor.pipe(remove_hashtag)
preprocessor.pipe(remove_emoji)
preprocessor.pipe(remove_eol_characters)
preprocessor.pipe(remove_stopwords, args=)
preprocessor.pipe(remove_punct)
preprocessor.pipe(normalize_whitespace)
text = preprocessor.run(text) print(text) # "dinner life recommend"

Instalação do NLPretext

Para instalar a biblioteca, execute

pip install nlpretext

O senhor pode encontrar o repositório do github aqui e a documentação da biblioteca aqui

Este artigo foi publicado pela primeira vez no Artefact Tech Blog on Medium.