SigParser usa ML.NET para detectar emails "não-humanos"
Cliente
SigParser
Produtos e serviços
ML.NET
Office 365
Setor
Software/Telecomunicações
Tamanho da Organização
Pequena (<100 funcionários)
País/região
EUA
SigParser é uma API e um serviço que automatiza o processo mais tedioso (e geralmente caro) de adicionar e manter sistemas de gerenciamento de relacionamento com o cliente (CRM). SigParser extrai informações de contato, tais como nomes, endereços de email e números de telefone, de assinaturas de email e alimenta todas as informações como contatos em sistemas ou bancos de dados do CRM.
Problema de negócios
Quando o SigParser processa emails para uma empresa, muitos dos emails são não-humanos (por exemplo, boletins informativos, notificações de pagamento, redefinições de senhas etc.). As informações do remetente desses tipos de emails não devem aparecer nas listas de contatos ou ser enviadas por push para um sistema de CRM. Assim, o SigParser decidiu usar o aprendizado de máquina para prever se as mensagens de email são "parecidas com spam."
Veja o seguinte email de notificação de um fórum como exemplo. O remetente deste email não é um contato que deve aparecer em um CRM, portanto, um modelo de aprendizado de máquina prevê que "isSpammyLookingEmailMessage" é verdadeiro:
Por que ML.NET?
Quando a equipe da SigParser decidiu utilizar o aprendizado de máquina, eles originalmente tentaram usar o R; no entanto, eles descobriram que era muito difícil manter e integrar com sua API, que é construída com .NET Core.
Paul Mendoza, CEO e fundador da SigParser, disse que R "estava muito desconectado do processo de desenvolvimento. Com R, estávamos gerando todas as constantes e então copiávamos e colávamos em .NET e então testávamos o modelo para real e descobrir que não funcionou e preciso repetir. Isso foi muito lento."
Portanto, eles se ML.NET para trazer tudo para um aplicativo.
Com o ML.NET, podemos treinar o modelo e testá-lo imediatamente dentro do nosso código. Isso torna o envio de novas alterações mais rápido porque todas as ferramentas estão reunidas em um só lugar."
Impacto do ML.NET
O impacto da migração do R para o ML.NET foi um aumento de 10 vezes na produtividade. Além disso, até o SigParser migrar para o R a empresa somente utilizou um modelo de aprendizado de máquina. Após a conversão para o ML.NET isso mudou, e agora são seis os modelos de aprendizado de máquina para vários aspectos da análise de e-mails. Esse aumento ocorreu porque agora, com o ML.NET, é possível experimentar novas ideias de aprendizado de máquina e mostrar os resultados no aplicativo com rapidez.
Arquitetura da solução
Processamento de dados
A SigParser primeiro usou o conhecido conjunto de dados Enron para treinar seu modelo, mas quando percebeu que ele estava bastante desatualizado, acabou rotulando alguns milhares de emails em suas próprias contas de email (mantendo a conformidade com o GDPR) como humanos ou não humanos e usou isso como um conjunto de dados de treinamento.
Recursos do Machine Learning
O modelo de ML.NET SigParser tem dois Recursos (usados para fazer a previsão "IsHumanE-mail"):
HasUnsubscribes
—Verdadeiro se um email tiver "cancelar assinatura" ou "recusar" no corpo do emailEmailBodyCleaned
—Normaliza o corpo de email HTML para tornar o idioma do email desconhecido e para remover informações de identificação pessoal
Algoritmo de aprendizado de máquina
Essas duas Funcionalidades são inseridas em um algoritmo Binary FastTree, que é um algoritmo para cenários de classificação, e a saída é a previsão de se o email foi enviado de um "humano real" ou de uma fonte automatizada. No momento, SigParser está processando milhões de emails por mês com este modelo de ML.NET.
var mlContext = new MLContext();
var(trainData, testData) = mlContext.BinaryClassification.TrainTestSplit(mlContext.CreateStreamingDataView(totalSampleSet), testFraction:0.2);
var pipeline = mlContext.Transforms.Text.FeaturizeText("EmailBodyCleaned", "EmailHTMLFeaturized")
.Append(mlContext.Transforms.Concatenate("Features", "HasUnsubscribes", "EmailHTMLFeaturized"))
.Append(mlContext.BinaryClassification.Trainers.FastTree(labelColumn: "IsHumanEmail", featureColumn: "Features"));
Console.WriteLine("Fitting data");
var fitResult = pipeline.Fit(trainData);
Console.WriteLine("Evaluating metrics");
var metrics = mlContext.BinaryClassification.Evaluate(fitResult.Transform(testData), label: "IsHumanEmail");
Console.WriteLine("Accuracy: " + metrics.Accuracy);
using (var stream = File.Create(emailParsingPath + "EmailHTMLTypeClassifier.zip"))
{
mlContext.Model.Save(fitResult, stream);
}
O SigParser usa as transformações de dados e algoritmos do ML.NET para várias soluções de aprendizado de máquina, incluindo o modelo de detecção de spam mencionado acima, o que lhes permitiu exportar automaticamente as informações de contato corretas para bancos de dados de clientes a partir de assinaturas de email, contornando a necessidade de entrada manual de dados de contato que é demorada e sujeita a erros.
Pronto para começar?
Nosso tutorial passo-a-passo irá ajudá-lo a usar o ML.NET em seu computador.