SigParser では、ML.NET を使用して、"人間以外" の電子メールを検出しています
SigParser は、顧客関係管理 (CRM) システムに追加して保守する面倒な (多くの場合、コストのかかる) プロセスを自動化する API およびサービスです。SigParser は、メール署名から名前、メール アドレス、電話番号などの連絡先情報を抽出し、そのすべての情報を連絡先として CRM システムまたはデータベースにフィードします。
ビジネスの問題
SigParser で会社のメールを処理する場合、メールの多くは人手によるものではありません (例: ニュースレター、支払い通知、パスワードのリセットなど)。この種類のメールの送信者の情報は、連絡先リストに表示したり、CRM システムにプッシュするべきではありません。したがって、メール メッセージが "スパムのようである" を予測するのに SigParser が機械学習を使用して判断していました。
フォーラムからの次の通知メールを例とします。このメールの送信者は、CRM に存在するはずの連絡先ではないため、機械学習モデルで "isSpammyLookingEmailMessage " が true であると予測されます。
ML.NET を選ぶ理由
SigParser のチームが機械学習を利用しようと考えたとき、当初は R を利用しようとしていましたが、.NET Core でビルドされた API を維持し、統合することが非常に困難であることがわかりました。
SigParser の 創設者兼 CEO である Paul Mendoza は、R "は開発プロセスから切断されすぎていると述べています。R を使用してすべての定数を生成した後、それらをコピーして .NET に貼り付け、実際にモデルを試して、まったく機能せず、また同じことの繰り返しになることを知りました。あまりにも遅すぎたのです。"
そこで、すべてを 1つのアプリケーションにまとめるために、ML.NET を導入しました。
ML.NET を使用すると、モデルのトレーニング後、すぐにコード内でテストすることができます。すべてのツールが一箇所にあるため、新しい変更の発送が高速化されます。"
ML.NET の影響
R から ML.NET に移行した影響は、生産性が 10 倍向上したことです。また、SigParser が R に移行するまでは、1 つの機械学習モデルしか利用していませんでした。ML.NET に移行してからは、メール解析のさまざまな局面で 6 つの機械学習モデルを取得しています。このように生産性が向上したのは、ML.NET を使用することで、新しい機械学習のアイデアをすぐに実験し、その結果をすぐにアプリケーションで示すことができるようになったためです。
ソリューション アーキテクチャ
データ処理
SigParser は、まずよく知られた Enron データセットを使用してモデルをトレーニングしましたが、非常に古いと気付くと、独自のメール アカウントに数千通のメールに、人間または人間以外のラベルを付け (GDPR への準拠を維持するため) し、これをトレーニング データセットとして使用しました。
機械学習機能
SigParser の ML.NET モデルには 2 つの機能 (予測を行うために使用される "IsHumanE-mail") があります。
HasUnsubscribes
—メールに "\unsubscribe" があるか、メール本文に "opt out" がある場合には TrueEmailBodyCleaned
—HTML メール本文を正規化して、メールを language-agnostic にし、個人を特定できる情報をすべて削除します
機械学習アルゴリズム
これら 2 つの特徴は、分類シナリオのアルゴリズムであるバイナリ 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 を実行するのに役立ちます。