【发布时间】:2015-04-13 06:59:49
【问题描述】:
我正在寻找一种从电子邮件中提取数据位的方法。我主要查看主题行和电子邮件正文,并提取客户和订单参考号。
假设我是一家公司,客户可以发送电子邮件至 info@mydomain.com,他们可能会在电子邮件的主题行或正文中添加特定的客户编号或订单参考。但是,它们可能并不总是以最佳格式提供这些参考。我想提取数据,并返回数据有效可能性的概率。
我可以使用某种技术来尝试扫描电子邮件并返回可能的客户编号和/或具有一定概率的订单参考(有点像贝叶斯垃圾邮件过滤)?
我正在考虑某种正则表达式引擎,但这似乎太死板了。我也在查看NUML.net 并想知道它是否可以帮助我,但我有点超出我的深度,因为我不完全确定我需要什么。我遇到过 Levenshtein 算法,但这似乎是匹配两个固定字符串,而不是一个固定字符串和一个模式。
我正在想象一个有点像这样的 API:
// emailMessage is a Mandrill inbound object, in case anybody wonders
EmailScanResult results = EmailScanner.Scan(emailMessage, new {ScanType.CustomerNo, ScanType.OrderReference});
foreach (var result in results)
{
var scanType = result.Type; // I.e. ScanType.CustomerNo
var score = result.Score; // e.g. 1.2
var value = result.Value; // CU-233454345-2321
}
对此的可能输入是多种多样的;例如。对于相同的客户编号:
- DF-232322-AB2323
- df-232322-AB2323
- 232322-ab2323
- 232322AB2323
什么样的算法对这样的任务有用?是否有为此推荐的 .NET 库,您是否知道任何合适的示例?
【问题讨论】:
标签: c# regex machine-learning fuzzy-search