Introdução
Neste laboratório, exploraremos como trabalhar com dados de texto utilizando o scikit-learn, uma popular biblioteca de aprendizado de máquina em Python. Aprenderemos a carregar dados de texto, pré-processá-los, extrair características, treinar um modelo e avaliar seu desempenho.
Dicas da Máquina Virtual
Após o término da inicialização da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos o problema para você rapidamente.
Carregando os Dados de Texto
Primeiro, precisamos carregar os dados de texto com os quais trabalharemos. Usaremos o conjunto de dados 20 Newsgroups, que contém artigos de notícias de vinte tópicos diferentes. Para carregar o conjunto de dados, podemos usar a função fetch_20newsgroups do scikit-learn.
from sklearn.datasets import fetch_20newsgroups
## Carregar o conjunto de dados
categories = ['alt.atheism', 'soc.religion.christian', 'comp.graphics', 'sci.med']
twenty_train = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=42)
Agora que carregamos os dados, podemos explorar sua estrutura e conteúdo.
Pré-processamento dos Dados de Texto
Antes de usar os dados de texto para aprendizado de máquina, precisamos pré-processá-los. Isso envolve várias etapas, como remover pontuação, converter todo o texto para minúsculas e tokenizar o texto em palavras individuais. Podemos realizar essas etapas de pré-processamento usando o CountVectorizer e o TfidfTransformer do scikit-learn.
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
## Pré-processar os dados de texto
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(twenty_train.data)
tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)
Agora, nossos dados de texto estão pré-processados e prontos para extração de recursos.
Extração de Recursos
Para representar os dados de texto como vetores de recursos, podemos usar a representação de "sacos de palavras". Essa representação atribui um ID inteiro fixo a cada palavra no conjunto de treinamento e conta o número de ocorrências de cada palavra em cada documento. Podemos extrair esses vetores de recursos usando o CountVectorizer do scikit-learn.
from sklearn.feature_extraction.text import CountVectorizer
## Extrair vetores de recursos
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(twenty_train.data)
Agora que extraímos os vetores de recursos, podemos usá-los para treinar nosso modelo.
Treinando o Modelo
Agora que temos nossos vetores de recursos, podemos treinar um modelo para classificar os dados de texto. Neste exemplo, usaremos o algoritmo Multinomial Naive Bayes, um algoritmo popular para classificação de texto.
from sklearn.naive_bayes import MultinomialNB
## Treinar o modelo
clf = MultinomialNB().fit(X_train_tfidf, twenty_train.target)
Agora, nosso modelo está treinado e pronto para previsão.
Avaliando o Modelo
Para avaliar o desempenho do nosso modelo, podemos usar um conjunto de teste separado. Podemos carregar o conjunto de teste usando o mesmo processo do conjunto de treinamento.
twenty_test = fetch_20newsgroups(subset='test', categories=categories, shuffle=True, random_state=42)
Agora podemos pré-processar o conjunto de teste e extrair os vetores de recursos.
X_test_counts = count_vect.transform(twenty_test.data)
X_test_tfidf = tfidf_transformer.transform(X_test_counts)
Finalmente, podemos usar nosso modelo treinado para fazer previsões no conjunto de teste e calcular a precisão.
predicted = clf.predict(X_test_tfidf)
accuracy = np.mean(predicted == twenty_test.target)
Resumo
Neste laboratório, aprendemos a trabalhar com dados de texto utilizando o scikit-learn. Carregamos os dados de texto, pré-processamos-os, extraímos vetores de características, treinamos um modelo e avaliamos seu desempenho. Trabalhar com dados de texto pode ser desafiador, mas o scikit-learn fornece ferramentas e algoritmos poderosos para facilitar o processo.