对电子邮件的优先级列表进行排名

时间:2013-01-31 18:27:10

标签: python machine-learning regression ranking

我正在尝试在Python中生成一个简单的电子邮件排名程序(类似于优先收件箱)。根据从发件人收到的电子邮件的频率,例如,有一个50%的培训集,其中发件人的频率被计算,然后是50%的测试集,根据培训排序顺序(所以电子邮件发送大量邮件的发件人排名很高。

我编写了一些Python代码来接收电子邮件并从每个地址中提取“发件人”地址。我已将此信息放在显示最常见电子邮件发件人的列表中(以下列表中的示例摘录)。

 //(Email address, frequency of emails received from this sender)//Not Code
 ('tester1@csmining.org', 244)
 ('tester2@csmining.org', 162)
 ('tester3@csmining.org', 154)
 ('tester4@csmining.org', 75)
 ('tester5@csmining.org', 50)

我知道可以有效地使用多种机器学习算法来训练和测试我的数据,以满足我的需求。但是,我不确定哪些可以用来给我最好的结果?

2 个答案:

答案 0 :(得分:3)

仅基于发件人的排名绝不是一个好主意。对于我自己,我订阅了来自github commit的电子邮件通知。每天,由于我的同事的代码提交,我收到了数百封电子邮件。

这绝不是一个简单的问题,即使Gmail优先收件箱也不能很好地完成我的体验。良好的电子邮件优先级排名或评分系统需要良好的功能。我将建议以下功能开始。见The Learning Behind Gmail Priority Inbox

  • 社交功能。发件人或发件人域名;
  • 线程功能。这封电子邮件是否处于活动状态?线程中此电子邮件的序列号是多少?谁是cc'ed用户?
  • 时间功能。收到这封电子邮件的时间是如果您可以访问所有者的回复,则可能需要跟踪所有者回复所需的时间。
  • 内容功能。这是垃圾邮件过滤中使用的词袋模型。
  • 行为。这是电子邮件帐户所有者对电子邮件的回复方式。它回复了吗?或者从未读过?或立即删除?或存档到不同的文件夹?标签?如果回复,您可能也想进行一些内容分析。答复的长度也可能是一个很好的功能。

对于回归模型,Gmail使用线性逻辑回归来保持学习和预测的可扩展性。

最后,与Gmail一样,您可以通过向用户提供标记重要电子邮件的选项,让用户帮助您改进系统。

进一步阅读:

答案 1 :(得分:1)

我的理解是,您希望将电子邮件归类为重要或不重要。因此,首先您必须手动将每个电子邮件标记为重要或不重要。然后,您需要定义每封电子邮件的功能并提取它们。在您的情况下,您要考虑的一个功能是发件人。所以你最终会获得如下数据:

('tester1@csmining.org', important)
('tester1@csmining.org', normal)
('tester1@csmining.org', important)
('tester1@csmining.org', normal)
('tester1@csmining.org', normal)
('tester2@csmining.org', normal)
('tester3@csmining.org', important)
('tester4@csmining.org', important)
('tester5@csmining.org', normal)
...

然后您可以应用学习算法(如线性回归,逻辑回归等),您将能够在测试集上测试结果。 问题是任何算法都会最终将来自发件人X的电子邮件分类为重要或正常(可能基于训练集中来自该发件人的重要/正常消息的比率)。为了获得更有意义的结果,您需要从数据中提取更多功能,例如消息中的特定单词,发送时间等等。