Aplicando o Pré-Processamento de Texto na Prática
Documentos
Primeiramente, 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 é uma unidade separada de texto 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, tínhamos 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
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, portanto utilizaremos a versão pré-processada deste 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
Can you explain what each step in the preprocessing function does?
What are stop words and why are they removed?
How can I customize the preprocessing steps for my own dataset?
Awesome!
Completion rate improved to 3.45
Aplicando o Pré-Processamento de Texto na Prática
Deslize para mostrar o menu
Documentos
Primeiramente, 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 é uma unidade separada de texto 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, tínhamos 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
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, portanto utilizaremos a versão pré-processada deste corpus posteriormente no curso.
Obrigado pelo seu feedback!