Classificando produtos como proibidos ou aprovados usando a mineração de texto

Classificação do produto como Banido ou Aprovado com base em informações textuais disponíveis contra ele.

Ashutosh Singh Blocked Unblock Seguir Seguindo 2 de janeiro Classificação de produtos como Aprovado ou Rejeitado com base em seu conteúdo.

Deixe-me começar com alguns fatos que estabeleci sobre meus encontros limitados com problemas baseados em aprendizado de máquina – 'Você não consegue encontrar o melhor ajuste como não há nenhum, apenas continue tentando – essa é a chave' e 'dados são a melhor opção de investimento você tem – gasta muito tempo com isso '.

Chegando ao problema em questão – identificar conteúdo 'banido' no Indiamart, uma plataforma online que atrai milhões de usuários todos os dias. Por 'banido' quero dizer o conteúdo que não é permitido de acordo com o quadro legal atual no país e o que é mais – é dinâmico. Por exemplo: Uma jaqueta feita de couro de vaca é um produto 'banido' enquanto uma cadeira giratória executiva de estofamento de couro não é.

Antes de seguir em frente, vamos nos apossar do que é um produto no contexto da Indiamart

Este é um produto. Temos mais de 60 milhões desses produtos conosco.

Nota: Eu vou estar usando o produto no contexto do conteúdo do artigo. Um produto aqui nada mais é do que uma descrição do conteúdo disponível para um determinado item. Um produto tem um título, uma descrição, uma imagem do item que você está vendendo, seu preço etc.

Entendendo o problema

Tivemos que classificar nossos produtos (novos e existentes) como aprovados ou banidos com base nas informações disponíveis.

Por exemplo, qualquer produto que menciona sais narcóticos precisa ser marcado como "proibido" e removido do conteúdo principal.

O desafio baseado em palavras-chave

Em nossa abordagem atual, marcamos um produto como proibido ou aprovado com base na correspondência de palavra-chave, ou seja, temos uma lista de palavras-chave proibidas e se essa palavra-chave existir no nome do produto, marcamos como banido ou marcá-lo como aprovado.

Isso levou a que certos produtos relevantes fossem classificados como proibidos, embora devessem ter sido aprovados, por exemplo. "Gato" está presente na nossa lista de palavras-chave proibidas, por isso produtos como "peças de presente de gato de madeira", "CAT Bulldozer" etc. foram banidos, o que levou à perda de um bom conteúdo.

Resolvendo o enigma 'Cat Vs Cat'

'Cat' – o animal e a máquina

Um classificador baseado em texto supervisionado que foi treinado usando exemplos previamente rotulados serviu para nós. O objetivo desse classificador era categorizar um produto em um dos dois rótulos 'Banido' ou 'Aprovado' .eg dos rótulos usados para treinamento

_label_Aprovado dell mouse sem fio cor preta

_label_Banned couro de vaca jaqueta preta

Nós alimentamos a máquina com um conjunto existente de produtos rotulados como 'Banidos' ou 'Aprovados' para que eles construíssem um relacionamento para que ele pudesse prever se um produto deveria ser aceito ou rejeitado. Em seguida, um novo conjunto de produtos foi alimentado novamente na máquina e foi perguntado se esse produto deveria ser aceito ou rejeitado.

Conseguimos capturar melhor a intenção e o contexto do produto desta vez – um bulldozer CAT ou uma escavadeira CAT não foi "banido", enquanto a "jaqueta de pele de gato" foi banida.

A descrição e as especificações disponíveis em relação aos produtos (que não estavam sendo consideradas no serviço de palavras-chave existente) também foram usadas para treinar e testar o modelo.

A máquina de teste: o que está sob o capô

Fluxo de Processo para o Problema

Usamos o fastText para treinar nosso modelo. O fastText é uma biblioteca de código aberto do Facebook para uma aprendizagem eficiente de representações de palavras e classificação de sentenças.

Caso você seja iniciante no fastText e enfrente problemas ao executá-lo, consulte este tutorial em vídeo .

Dados de treinamento: um arquivo com as linhas de dados rotuladas. Todos os produtos tinham essencialmente um dos dois rótulos 'Banido' ou 'Aprovado' e o corpus estava todo o conteúdo disponível contra o produto.

Comando de Treinamento:

 ~ / fastText / fasttext.exe supervisionado -input ~ / Training_Files / training_file.txt -output ~ / Model_path / model.bin -lr 0,8 -apoch 5 -minn 4 -thread 4 -wordNgram 2 lrUpdateRate 100; 

Nota: Os hiper-parâmetros usados aqui foram selecionados depois de executar o ajuste de hiper-parâmetros que permite obter parâmetros que ajudarão você a obter uma precisão aprimorada para o seu caso de uso. Estes podem variar dependendo do conjunto de dados em consideração

Precisão e recall

 P @ 1: 0,987 
R @ 1: 0,987

Testando o modelo:

 ~ / fastText / fasttext.exe predizer-prob ~ / Model_path / model.bin - 1; 

Você terá algo assim em sua tela de saída

 imart @ DESKTOP-CFGCP74 ~ 
$ fastText / fasttext.exe predizer-prob ~ / Caminho_do_modelo / model4mo1.bin - 1
deca durabolin nandrolene decatonate bottle
__label__Banned 0.995814

A validação cruzada K Folding foi usada para validar o modelo.

Um exemplo interessante: os telemóveis da Samsung que não são proibidos enquanto as suas falsas contrapartes são proibidas. O modelo pode detectar esses casos? Vamos testar

 imart @ DESKTOP-CFGCP74 ~ 
$ fastText / fasttext.exe predizer-prob ~ / Caminho_do_modelo / model4mo1.bin / model4mo1.bin - 1
telefone celular samsung
__label__ Aprovado 1.00001
celular Samsung clone
__label__ Banido 1.00002

Limpeza de Dados: O Master Stroke

No aprendizado de máquina, ' Garbage In é Garbage Out ', certifique-se de executar as operações de dados necessárias antes de usar seus dados para treinar o modelo – aqui convertemos dados inteiros em XML removidos e minúsculos, tags HTML como <li> </ li> , <ui> </ ui> etc., símbolos especiais e palavras-chave relevantes para o caso de uso.

E quanto ao produto Images?

Uma imagem do produto com muito texto.

Texto extraído usando OCR ? Complexo Mutimineras B, Com Antioxidantes Cápsulas Minreal Promove Metabolismo De Energia Suporta Saúde Do Coração Ria

Alguns produtos têm imagens com texto escrito neles. Extrair esse texto e inserir isso no modelo também nos ajudou a categorizar melhor o produto como 'Banido' ou 'Aprovado'. OCR ( Optical Character Recognition) foi usado aqui para extrair os dados relevantes da imagem.

O que é o OCR?

OCR significa Reconhecimento Óptico de Caracteres . Usando o OCR, podemos digitalizar imagens e documentos contendo textos e convertê-los em documentos que podem ser editados.

Aplicativo de digitalização de imagens usando o OCR

No nosso caso, o OCR nos ajuda a extrair texto das imagens do produto, mais importante nos casos em que não há informações textuais disponíveis no Nome do produto, Descrição do produto e Especificação.

A API do Google Cloud Vision e o Tesseract podem ser explorados para isso.

A estrada adiante

A partir de agora, o modelo é preciso para todos os produtos 85/100 que estão sendo testados por ele quando combinamos os resultados com um auditor humano. Outro fato que eu sou capaz de reunir é que " o mundo real não é tão facilmente classificado como tendemos a acreditar ", o uso de um ser humano sempre será necessário para determinar "áreas cinzentas" que requerem um toque humano. Eu estou trabalhando na redução dessas áreas cinzas e em breve virá com um artigo de acompanhamento.

Vikram Varshney , Ayush Gupta, obrigado pela sua contribuição contínua.