SigParser 會使用 ML.NET 偵測「非人類」電子郵件

客戶
SigParser

產品與服務
ML.NET
Office 365

產業
軟體 / 電信

組織規模
小型 (<100 名員工)

國家/地區
美國

SigParser 是一種 API 和服務,可自動化新增和維護客戶關係管理 (CRM) 系統之冗長 (且通常很昂貴) 流程。SigParser 會從電子郵件簽名中擷取連絡人資訊,例如姓名、電子郵件地址和電話號碼,並作為連絡人將這些資訊摘要至 CRM 系統或資料庫。

SigParser 應用程式可讓您提供範例電子郵件,並預覽它能判斷電子郵件的中繼資料。

商務問題

當 SigParser 處理公司的電子郵件時,許多電子郵件都是非人類的 (例如電子報、付款通知、密碼重設等)。來自這些電子郵件類型的寄件者資訊不應顯示在連絡人清單中,或推送至 CRM 系統。因此,SigParser 決定使用機器學習來預測電子郵件訊息是否為「看起來像垃圾郵件」。

以下列論壇的通知電子郵件做為範例。此電子郵件的寄件者不是應顯示在 CRM 中的連絡人,因此機器學習模型會預測 "isSpammyLookingEmailMessage" 為真:

範例電子郵件來自不會回覆的電子郵件地址,並產生有關未讀取通知等等的資訊。

SigParser 使用其 ML.NET 模型將範例電子郵件分類為「看起來像垃圾郵件的電子郵件」

為什麼要使用 ML.NET?

當 SigParser 的小組決定運用機器學習時,他們原本嘗試使用 R; 不過,他們發現難以維護和整合使用 .NET Core 建置的 API。

SigParser 的 CEO 暨創辦人 Paul Mendoza 表示,「R 就開發程序方面只是不太連貫。使用 R 時,我們會產生所有常數,然後將這些常數複製並貼到 .NET,之後嘗試實際做出模型,但發現不太有用,且必須重複。速度太慢。」

因此,他們轉而使用 ML.NET,將所有內容整合到一款應用程式中。

透過 ML.NET,我們就能為模型定型,然後立即在程式碼中進行測試。這樣可以更快速地傳送新的變更,因為所有工具都集中在一起。」

SigParser 首席執行官兼創辦人Paul Mendoza

ML.NET 的影響

從 R 移到 ML.NET 已具有提高工作力 10 倍以上的影響力。此外,它們在 SigParser 移至 R 之前,只使用一部機器學習模型。自轉換為 ML.NET 後,它們現在已有 6 部機器為電子郵件進行多方面的剖析。這項成長的發生是因為現在可以使用 ML.NET 快速嘗試新的機器學習構想,並在應用程式中快速顯示結果。

解決方案架構

資料處理

SigParser 首先使用已知的 Enron 資料集來訓練其模型,但當他們發現它相當過時時,他們最終在他們自己的電子郵件帳戶中將數千封電子郵件 (符合 GDPR 合規性) 標記為人類或非人類,並用來做為訓練資料集。

Azure Machine Learning 功能

SigParser 的 ML.NET 模型有兩個功能 (用來預測 "IsHumanE-mail"):

  • HasUnsubscribes —如果電子郵件本文中有 "取消訂閱" 或 "退出",則為 True
  • EmailBodyCleaned —將 HTML 電子郵件本文正規化,讓電子郵件語言無法辨識,並移除任何個人識別資訊

機器學習演算法

這兩個特徵會輸入二進位 FastTree 演算法 ,這是分類案例的演算法,輸出是預測電子郵件是從「真人」或自動化來源傳送。目前,SigParser 正在使用這個 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);
}

SigParser 會針對多個機器學習解決方案使用 ML.NET 的資料轉換和演算法,包括上述的垃圾郵件偵測模型,該模型可讓它們從電子郵件簽章自動將正確的連絡人資訊匯出到客戶資料庫,並略過耗時且容易發生錯誤的手動連絡人資料輸入需求。

準備開始了嗎?

我們的逐步教學課程可協助您讓 ML.NET 在電腦上執行。

開始使用