【发布时间】:2013-02-05 18:14:09
【问题描述】:
我正在寻找一种算法,甚至是一种算法空间来处理验证短文本(电子邮件)是否与已知模板匹配的问题。编码可能是 python 或 perl,但这很灵活。
问题来了:
有权访问生产数据的服务器需要能够发送将到达 Internet 的电子邮件:
Dear John Smith,
We received your last payment for $123.45 on 2/4/13. We'd like you to be aware of the following charges:
$12.34 Spuznitz, LLC on 4/1
$43.21 1-800-FLOWERS on 4/2
As always, you can view these transactions in our portal.
Thank you for your business!
显然,某些电子邮件内容会有所不同 - 称呼(“John Smith”)、“2013 年 2 月 4 日 123.45 美元”以及打印出交易的行。其他部分(“我们收到了您的最后一笔付款”)非常静态。我希望能够匹配文本的静态部分并量化动态部分是否在某些合理的范围内(例如,我可能知道要打印的最多交易行是 5 行)。
因为我担心数据泄露,所以我想确保与此模板不匹配的电子邮件永远不会消失 - 我想检查电子邮件并隔离任何与我预期不符的邮件。所以我需要自动化这个模板匹配并阻止任何离匹配足够远的电子邮件。
所以问题是,我在哪里寻找过滤机制?贝叶斯过滤试图验证特定消息和非特定语料库之间的足够相似性,这是一种相反的问题。 Perl 的 Template 模块之类的东西非常匹配——但用于输出,而不是用于输入或比较。简单的“差异”类型比较不能很好地处理有限的动态信息。
如何测试这些外发电子邮件是否“像鸭子一样嘎嘎”?
【问题讨论】:
-
只匹配正则表达式有什么问题?
-
您可以找到电子邮件至非常和模板之间的最长公共子序列(甚至在待验证的电子邮件和另一封电子邮件之间)。所有电子邮件的结果应该相同或几乎相同。奖励:如果您隔离电子邮件,它会准确找到您需要检查的部分。
-
使用基于语法的解析器生成器。
标签: python perl validation templates text