SigParser menggunakan ML.NET untuk mendeteksi email "non-manusia"

Pelanggan
SigParser

Produk & jasa
ML.NET
Office 365

Industri
Perangkat Lunak / Telekomunikasi

Ukuran Organisasi
Kecil (<100 karyawan)

Negara/wilayah
Amerika Serikat

SigParser adalah API dan layanan yang mengotomatiskan proses penambahan dan pemeliharaan sistem manajemen hubungan pelanggan (CRM) yang membosankan (seringkali mahal). SigParser mengekstrak informasi kontak, seperti nama, alamat email, dan nomor telepon, dari tanda tangan email dan memberi umpan semua informasi tersebut sebagai kontak ke dalam sistem atau database CRM.

Aplikasi SigParser memungkinkan Anda memberikan email sampel dan mempratinjau metadata yang dapat ditentukan tentang email.

Masalah bisnis

Ketika SigParser memproses email untuk perusahaan, banyak email yang bukan manusia (misalnya, buletin, pemberitahuan pembayaran, pengaturan ulang kata sandi, dan sebagainya). Informasi pengirim dari jenis email ini tidak boleh muncul dalam daftar kontak atau didorong ke sistem CRM. Dengan demikian, SigParser memutuskan untuk menggunakan pembelajaran mesin untuk memprediksi apakah pesan email "terlihat seperti spam."

Ambil email pemberitahuan berikut dari forum sebagai contoh. Pengirim email ini bukan kontak yang seharusnya muncul di CRM, sehingga model pembelajaran mesin memprediksi bahwa "isSpammyLookingEmailMessage" adalah benar:

Contoh email berasal dari alamat email noreply dan telah menghasilkan informasi tentang pemberitahuan yang belum dibaca dll.

SigParser mengklasifikasikan contoh email sebagai 'pesan email yang terlihat spam', menggunakan model ML.NET mereka

Mengapa ML.NET?

Saat tim di SigParser memutuskan untuk memanfaatkan pembelajaran mesin, mereka awalnya mencoba menggunakan R;. Namun, mereka kesulitan dalam pemeliharaan dan integrasi dengan API mereka, yang dibuat dengan .NET Core.

Paul Mendoza, CEO dan pendiri SigParser, mengatakan bahwa R " terlalu berjauhan dengan proses pengembangan. Dengan R, kami menghasilkan semua konstanta, lalu kami menyalin dan menempelkannya ke .NET dan mencoba modelnya dan mempelajarinya jika tidak berhasil. Kemudia, harus mengulanginya. Ini terlalu lambat."

Jadi, mereka beralih ke ML.NET untuk membawa semuanya ke dalam satu aplikasi.

Dengan ML.NET, kami dapat melatih model dan segera mengujinya di dalam kode kami. Ini membuat pengiriman perubahan baru lebih cepat karena semua alat tergabung di satu tempat."

Paul Mendoza, CEO dan pendiri SigParser

Dampak ML.NET

Dampak perpindahan ke ML.NET dari R telah menjadi peningkatan produktivitas 10x. Selain itu, hingga SigParser dipindahkan ke R, mereka hanya menggunakan satu model pembelajaran mesin. Sejak konversi ke ML.NET, mereka kini memiliki 6 model pembelajaran mesin untuk berbagai aspek penguraian email. Peningkatan ini telah terjadi karena kini memungkinkan ML.NET untuk bereksperimen dengan cepat dengan ide pembelajaran mesin baru dan menampilkan hasil dalam aplikasi dengan cepat.

Arsitektur solusi

Pemrosesan data

SigParser pertama kali menggunakan himpunan data Enron yang terkenal untuk melatih model mereka, tetapi ketika mereka menyadari bahwa itu sudah cukup usang, mereka akhirnya melabeli beberapa ribu email di akun email mereka sendiri (sesuai dengan kepatuhan GDPR) sebagai manusia atau bukan manusia dan menggunakan ini sebagai himpunan data pelatihan.

Fitur pembelajaran mesin

Model ML.NET SigParser memiliki dua Fitur (digunakan untuk membuat prediksi "IsHumanE-mail"):

  • HasUnsubscribes —True jika email memiliki "berhenti berlangganan" atau "tolak" dalam isi email
  • EmailBodyCleaned —Menormalkan isi email HTML untuk membuat bahasa email agnostik dan menghapus informasi pengidentifikasi pribadi

Algoritma pembelajaran mesin

Kedua Fitur ini dimasukkan ke dalam algoritme FastTree Biner, yang merupakan algoritma untuk skenario klasifikasi, dan outputnya adalah prediksi apakah email dikirim dari "manusia nyata" atau dari sumber otomatis. Saat ini, SigParser memproses jutaan email per bulan dengan model ML.NET ini.


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);
}

SigParser menggunakan transformasi dan algoritma data ML.NET untuk beberapa solusi pembelajaran mesin, termasuk model deteksi spam yang disebutkan di atas, yang telah memungkinkan mereka untuk secara otomatis mengekspor informasi kontak yang benar ke database pelanggan dari tanda tangan email, melewati kebutuhan akan entri data kontak manual yang memakan waktu dan rentan kesalahan.

Siap untuk memulai?

Tutorial langkah demi langkah kami akan membantu Anda menjalankan ML.NET di komputer.

Mulai