Python 对电子邮件列表进行排名';优先事项

Python 对电子邮件列表进行排名';优先事项,python,machine-learning,regression,ranking,Python,Machine Learning,Regression,Ranking,我试图用Python制作一个简单的电子邮件排名程序(类似于优先级收件箱)。基于从发件人接收电子邮件的频率,例如,有一个50%的培训集,其中发件人的频率被计算,然后有一个50%的测试集,该测试集根据培训的顺序排列(因此,从发送大量邮件的发件人发来的电子邮件排名很高) 我已经编写了一些Python代码来接收电子邮件,并从每个邮件中提取“发件人”地址。我已将此信息放在一个列表中,该列表显示了最常见的电子邮件发件人(下面列表中的示例片段) 我知道许多机器学习算法可以有效地用来训练和测试我的数据,以满足我

我试图用Python制作一个简单的电子邮件排名程序(类似于优先级收件箱)。基于从发件人接收电子邮件的频率,例如,有一个50%的培训集,其中发件人的频率被计算,然后有一个50%的测试集,该测试集根据培训的顺序排列(因此,从发送大量邮件的发件人发来的电子邮件排名很高)

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


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

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


('tester1@csmining.org,重要)
('tester1@csmining.org'正常)
('tester1@csmining.org,重要)
('tester1@csmining.org'正常)
('tester1@csmining.org'正常)
('tester2@csmining.org'正常)
('tester3@csmining.org,重要)
('tester4@csmining.org,重要)
('tester5@csmining.org'正常)
...

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

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


('tester1@csmining.org,重要)
('tester1@csmining.org'正常)
('tester1@csmining.org,重要)
('tester1@csmining.org'正常)
('tester1@csmining.org'正常)
('tester2@csmining.org'正常)
('tester3@csmining.org,重要)
('tester4@csmining.org,重要)
('tester5@csmining.org'正常)
...

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

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

这从来都不是一个容易的问题,根据我的经验,即使是Gmail优先收件箱也做得不好。一个好的电子邮件优先级排序或评分系统需要良好的功能。首先,我建议您使用以下功能。见:

  • 社会特征。发送方或发送方域
  • 螺纹特征。此电子邮件是否处于活动线程中?线程中此电子邮件的序列号是多少?谁是cc'ed用户(如果有)
  • 时间特征。这封电子邮件是什么时候收到的?如果您可以访问所有者的回复,您可能希望跟踪所有者回复所需的时间
  • 内容特性。这是垃圾邮件过滤中使用的单词袋模型
  • 行为。这是电子邮件帐户所有者对电子邮件的响应方式。它回答了吗?还是从不读书?还是立即删除?还是归档到不同的文件夹?标记的如果有回复,您可能还需要做一些内容分析。回复的长度可能也是一个很好的特性
对于回归模型,Gmail使用线性逻辑回归来保持学习和预测的可伸缩性

最后,正如Gmail所做的,你可以要求用户帮助你改进系统,让他们选择标记重要的电子邮件

进一步阅读:


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

这从来都不是一个容易的问题,根据我的经验,即使是Gmail优先收件箱也做得不好。一个好的电子邮件优先级排序或评分系统需要良好的功能。首先,我建议您使用以下功能。见:

  • 社会特征。发送方或发送方域
  • 螺纹特征。此电子邮件是否处于活动线程中?线程中此电子邮件的序列号是多少?谁是cc'ed用户(如果有)
  • 时间特征。这封电子邮件是什么时候收到的?如果您可以访问所有者的回复,您可能希望跟踪所有者回复所需的时间
  • 内容特性。这是垃圾邮件过滤中使用的单词袋模型
  • 行为。这是电子邮件帐户所有者对电子邮件的响应方式。它回答了吗?还是从不读书?还是立即删除?还是归档到不同的文件夹?标记的如果有回复,您可能还需要做一些内容分析。l
     //(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)