Aplicando o Pré-Processamento de Texto na Prática
Deslize para mostrar o menu
Documentos
Primeiro, antes de prosseguir com um exemplo prático de pré-processamento de texto, é importante compreender os principais componentes de um corpus de texto: documentos.
Um documento é um texto separado dentro de um corpus, por exemplo, um e-mail dentro de um corpus de e-mails.
Essencialmente, todo corpus de texto é um conjunto de documentos, portanto, pré-processar o corpus significa pré-processar cada um dos documentos.
Carregando o Corpus
Anteriormente, utilizamos nosso corpus de texto como variáveis de string. No entanto, em cenários do mundo real, um corpus de texto geralmente é armazenado em arquivos TXT para dados puramente textuais ou em arquivos CSV com múltiplas colunas quando dados adicionais estão associados ao texto.
Neste curso, trabalharemos com arquivos CSV ou TXT, onde cada documento começa em uma nova linha. Portanto, utilizaremos a função read_csv() da biblioteca pandas para carregar um corpus de texto a partir de um arquivo.
123456import pandas as pd corpus = pd.read_csv( 'https://content-media-cdn.codefinity.com/courses/c68c1f2e-2c90-4d5d-8db9-1e97ca89d15e/section_1/chapter_8/example_corpus.txt', sep='\r', header=None, names=['Document']) print(corpus)
Aqui, lemos este arquivo TXT em um DataFrame. Definimos sep='\r' para usar o símbolo de retorno de carro como separador, indicando que cada documento começa em uma nova linha. Utilizamos header=None para que a primeira linha não seja considerada um cabeçalho e especificamos names=['Document'] para nomear a única coluna como 'Document'. Como resultado, teremos um DataFrame com uma única coluna chamada 'Document' contendo 6 documentos (frases).
Pré-processamento do Corpus
Para pré-processar o corpus, primeiro vamos criar uma função para pré-processar cada um dos documentos:
123456789101112131415161718import re from nltk.tokenize import word_tokenize from nltk.corpus import stopwords import nltk nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) def preprocess_document(doc): doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A) doc = doc.lower() doc = doc.strip() tokens = word_tokenize(doc) filtered_tokens = [token for token in tokens if token not in stop_words] doc = ' '.join(filtered_tokens) return doc
def preprocess_document(doc):
Define a função preprocess_document que recebe uma string (documento) doc
como entrada.
doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A)
Remove todos os caracteres de doc exceto caracteres alfabéticos e espaços, tornando a operação
insensível a maiúsculas/minúsculas e apenas ASCII.
doc = doc.lower()
Converte o documento para letras minúsculas para garantir consistência no tratamento de caixa.
doc = doc.strip()
Remove espaços em branco no início e no final do documento.
tokens = word_tokenize(doc)
Tokeniza o documento limpo e em minúsculas em palavras individuais (tokens).
filtered_tokens = [token for token in tokens if token not in stop_words]
Remove as stop words.
doc = ' '.join(filtered_tokens)
Une os tokens filtrados em uma única string, separados por espaços.
return doc
Retorna o documento pré-processado como uma única string.
Agora vamos aplicar essa função ao nosso DataFrame para cada documento e criar uma coluna com os documentos limpos:
123456789101112131415161718192021222324252627import re from nltk.tokenize import word_tokenize from nltk.corpus import stopwords import nltk import pandas as pd nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) def preprocess_document(doc): doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A) doc = doc.lower() doc = doc.strip() tokens = word_tokenize(doc) filtered_tokens = [token for token in tokens if token not in stop_words] doc = ' '.join(filtered_tokens) return doc corpus = pd.read_csv( 'https://content-media-cdn.codefinity.com/courses/c68c1f2e-2c90-4d5d-8db9-1e97ca89d15e/section_1/chapter_8/example_corpus.txt', sep='\r', header=None, names=['Document']) corpus['Cleaned_Document'] = corpus['Document'].apply(preprocess_document) print(corpus)
Como pode ser observado, nosso corpus foi pré-processado com sucesso, então utilizaremos a versão pré-processada desse corpus posteriormente no curso.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo