Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Mão na massa: classificando produtos pela descrição

Resultado

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Código

# Importa e instala o pacote necessário para a classificação zero-shot
!pip install -q -U liqfit sentencepiece 

# Importação das bibliotecas necessárias
from liqfit.pipeline import ZeroShotClassificationPipeline  # Pipeline para classificação zero-shot
from liqfit.models import T5ForZeroShotClassification  # Modelo T5 para classificação zero-shot
from transformers import T5Tokenizer  # Tokenizador da biblioteca Hugging Face
import pandas as pd  # Biblioteca para manipulação de dados em formato de DataFrame

# Carrega o modelo T5 pré-treinado para classificação zero-shot
modelo = T5ForZeroShotClassification.from_pretrained('knowledgator/comprehend_it-multilingual-t5-base')

# Carrega o tokenizador T5 correspondente ao modelo
tokenizador = T5Tokenizer.from_pretrained('knowledgator/comprehend_it-multilingual-t5-base')

# Cria o pipeline de classificação zero-shot, configurando o modelo e o tokenizador
classificador = ZeroShotClassificationPipeline(model=modelo, 
                                               tokenizer=tokenizador,
                                               hypothesis_template='{}',  # Template usado para hipóteses (frases)
                                               encoder_decoder=True)  # Indica que o modelo é do tipo encoder-decoder

# Lê o arquivo CSV com descrições de produtos diretamente de uma URL e carrega em um DataFrame
dados = pd.read_csv('https://raw.githubusercontent.com/alura-cursos/hugging_face/main/Atividades/produtos_descricoes.csv')

# Define as categorias a serem usadas na classificação zero-shot
categorias = ['brinquedos', 'beleza', 'eletrônicos', 'ferramentas', 'cozinha']

# Função para classificar a descrição de um produto em uma das categorias definidas
def categorizar(descricao):
    # Usa o pipeline de classificação para prever a categoria com base na descrição
    resultado = classificador(descricao, categorias, multi_label=False)
    
    # Identifica a categoria com a maior pontuação de confiança
    categoria_max = max(zip(resultado['labels'], resultado['scores']), key=lambda x: x[1])[0]
    
    # Retorna a categoria de maior probabilidade
    return categoria_max

# Aplica a função de categorização a todas as descrições presentes na coluna 'Descrição'
dados['Categoria'] = dados['Descrição'].apply(categorizar)

# Exibe o DataFrame atualizado, agora contendo a coluna 'Categoria'
dados
                                  
1 resposta
solução!

Olá, Mário! Tudo bem?

Sua classificação de produtos está correta! Parabéns por sua dedicação nas atividades propostas pelo instrutor. Você está fazendo um ótimo trabalho!

Em caso de dúvidas, ficamos à disposição :)

Um abraço e bons estudos!