1

我正在尝试用 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)

我知道可以有效地使用许多机器学习算法来训练和测试我的数据以完成我需要的工作。但是,我不确定我可以使用其中哪些来给我最好的结果?

4

2 回答 2

3

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

这从来都不是一个简单的问题,根据我的经验,即使是 Gmail 优先收件箱也做得不好。一个好的电子邮件优先级排名或评分系统需要好的功能。我将建议从以下功能开始。请参阅Gmail 优先收件箱背后的学习

  • 社交功能。发件人或发件人域;
  • 线程功能。此电子邮件是否在活动线程中?这封邮件在线程中的序号是多少?如果有的话,谁是抄送的用户?
  • 时间特征。这封邮件是什么时候收到的?如果您有权访问所有者的回复,则可能需要跟踪所有者回复所需的时间。
  • 内容功能。这是垃圾邮件过滤中使用的词袋模型。
  • 行为。这是电子邮件帐户所有者对电子邮件的响应方式。回复了吗?还是从没读过?还是立即删除?或归档到不同的文件夹?标记?如果回复了,您可能还想进行一些内容分析。回复的长度也可能是一个很好的功能。

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

最后,就像 Gmail 所做的那样,您可以要求用户通过为他们提供标记重要电子邮件的选项来帮助您改进系统。

进一步阅读:

于 2013-01-31T20:44:11.067 回答
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 的电子邮件分类为重要或正常(可能基于训练集中来自该发件人的重要/正常邮件的比率)。为了获得更有意义的结果,您需要从数据中提取更多特征,例如消息中的特定单词、发送时间等。

于 2013-01-31T19:51:41.207 回答