
Classificação de Texto Zero-shot com Hugging Face e Qdrant
13 de julho de 2022
Introdução
Hoje vou mostrar como você pode usar os modelos de Interferência de Linguagem Natural (NLI) do Hugging Face e Qdrant para classificar seu texto em vez de treinar um modelo.

Você pode ter uma grande quantidade de dados para treinar um modelo para classificação, mas não ter recursos computacionais ou tempo suficientes para fazê-lo. É aí que o aprendizado de métricas entra!
Classificação zero-shot significa que os modelos podem classificar rótulos nos quais não foram treinados. Geralmente, a classificação zero-shot é usada onde não temos dados suficientes para criar um classificador. No entanto, atualmente os modelos estão ficando muito maiores e leva muito tempo para treinar modelos.
Portanto, pensei que fazer um tutorial como este permitirá que você crie um classificador em minutos sem treinamento e tenha bons modelos de linha de base!
Dataset
Vou usar o dataset News que contém 120 mil avaliações e contém quatro rótulos: Mundo, Esportes, Negócios e Ciência/Tecnologia. Você pode acessar o dataset aqui. Deixe-me lembrá-lo de que este dataset é apenas para fins de tutorial. Sinta-se à vontade para tentar datasets diferentes e muito maiores!

Para carregar o dataset, vamos usar transformers do Hugging Face.
Modelo
Vou usar o modelo "sentence-transformers/stsb-distilbert-base". Você pode alterar este modelo se quiser. Você pode querer usar um idioma diferente ou um modelo NLI diferente.
Agora que temos nosso modelo e dados, usaremos nosso modelo NLI para extrair características do texto e usar esses vetores para determinar os mais próximos.
Este código levará tempo dependendo do tamanho do seu dataset e memória. Altere o batch_size de acordo com sua memória para acelerar o processo.
Qdrant
Se você já sabe como usar qdrant, pode pular esta etapa.
Temos nossos vetores prontos! Agora precisamos carregá-los no qdrant antes de pesquisar. Qdrant é basicamente um banco de dados de busca vetorial. Você pode pensar no qdrant como Redis para vetores. Em vez de dar uma chave, você dá um vetor e ele retorna os vetores mais próximos e suas cargas úteis.
Se você não tem docker no seu computador, siga este link. Qdrant é um projeto de código aberto e você pode puxar a imagem docker diretamente.
docker pull qdrant/qdrant
Após a conclusão do pull, você pode executar o container qdrant.
Carregar Vetores no Qdrant
Tudo está pronto! Vamos testar nosso modelo.
Classificação
Para pesquisar um texto de entrada, primeiro precisaremos de seu vetor. Então podemos pesquisar vetor com qdrant.
Após isso, você verá as frases mais próximas e seu rótulo. Você pode alterar o limite para obter um número maior ou menor de resultados próximos.

Como você pode ver, encontrou 5 linhas mais próximas e retornou suas cargas úteis. Seus rótulos são 3, que é o rótulo para Tecnologia/Ciência. Você pode tentar diferentes entradas e ver seus resultados!