根据与同一标签的其他邮件的相似性,为Google Mail中的邮件分配标签。
项目描述
自动排序您的电子邮件
pygmailsorter
是一个Python模块,用于通过Google mail服务的API自动过滤电子邮件。它根据与同一标签的其他邮件的相似性为邮件分配标签。
动机
许多人难以处理不断增加的电子邮件数量,导致数百封未读邮件。由于即使是最先进的搜索引擎在处理大量电子邮件时也有限制,因此保持电子邮件概览的唯一方法是将其归档到文件夹中。手动将电子邮件归档到文件夹是单调乏味的,但大多数人又太懒于创建电子邮件过滤器并保持它们更新。最后,在移动计算时代,大多数人通过智能手机访问他们的电子邮件,排序电子邮件的挑战比以往任何时候都更相关。
解决这个挑战的方案是自动根据给定文件夹中现有电子邮件的相似性过滤电子邮件。这一解决方案已在几篇研究论文中提出,从垃圾邮件过滤1到将电子邮件排序到文件夹的特定情况2。甚至有几个开源原型可用,如3和4。
这基本上是一个针对Google Mail API的具体类似方法。它是一个Python脚本,可以定期执行,例如使用cron任务对用户的电子邮件进行排序。
安装
pygmailsorter
可在conda-forge或pypi仓库中获取,可以使用以下任一方法安装:
conda install -c conda-forge pygmailsorter
或者
pip install pygmailsorter
配置
pygmailsorter
需要两步配置
- 用户必须创建一个Google Mail API凭据文件
credentials.json
,遵循Google Mail API文档。 - 访问SQL数据库,这可以提供为
连接字符串
,或者pygmailsorter
将使用位于当前目录的本地SQLite数据库email.db
。这导致以下连接字符串
:sqlite:///email.db
Python接口
从pygmailsorter
模块导入Gmail
类和函数load_client_secrets_file
from pygmailsorter import Gmail, load_client_secrets_file
初始化pygmailsorter
从Gmail()
类创建一个gmail
对象
gmail = Gmail(
client_config=load_client_secrets_file(
client_secrets_file="/absolute/path/to/credentials.json"
),
connection_str="sqlite:////absolute/path/to/email.db",
)
根据上一节的配置,函数load_client_secrets_file
用于加载credentials.json
文件,并将内容作为Python字典提供给Gmail()
类的client_config
参数。除了client_config
参数外,Gmail()
类还需要连接到SQL数据库,这提供为connection_str
。此外,可以指定email_download_format
为metadata
或full
,其中主要区别是是否存储电子邮件的内容。最后,作为可选参数,可以指定port
,该参数用于通过Web浏览器对Google Mail API进行身份验证,默认为8080
。
同步本地数据库与电子邮件账户
为了减少通信开销,电子邮件存储在本地SQLite数据库中。
gmail.update_database(quick=False)
通过将可选标志quick
设置为True
,仅下载新电子邮件,而忽略现有电子邮件的更改。
生成电子邮件的pandas数据框
从本地SQLite数据库加载所有电子邮件,并将它们组合到一个pandas DataFrame中,以进行进一步的后处理
df = gmail.get_all_emails_in_database()
从电子邮件服务器下载特定标签
从电子邮件服务器下载标签为"MyLabel"
的电子邮件
df = gmail.download_emails_for_label(label="MyLabel")
在这种情况下,电子邮件不存储在本地SQLite数据库中。
使用机器学习过滤电子邮件
为带有标签"MyLabel"
的电子邮件分配新标签
gmail.filter_messages_from_server
label="MyLabel",
recommendation_ratio=0.9,
)
此功能基于上面的download_emails_for_label()
函数。它检查服务器以获取所选标签"MyLabel"
的新电子邮件。然后从本地SQLite数据库重新加载机器学习模型,并尝试预测这些电子邮件的正确标签。recommendation_ratio
定义了实际移动电子邮件所需的确定性水平,0.9
等于90%的确定性。
命令行界面
命令行界面实现了与Python接口相同的功能,它支持以下选项
pygmailsorter -c/--credentials
Google提供的凭据文件路径,例如credentials.json
。pygmailsorter -d/--database
连接到数据库的连接字符串,例如sqlite:///email.db
。pygmailsorter -u/--update
更新本地电子邮件数据库并重新训练机器学习模型。pygmailsorter -l/--label=MyLabel
为带有标签MyLabel
的电子邮件分配新标签。pygmailsorter -p/--port
运行身份验证Web服务器的端口,例如8080
。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分发版
pygmailsorter-0.0.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dec59f48ae02bfee984c8c9918d921bd8a0a002ce9b03f905ff438ec2a3af5da |
|
MD5 | abfb131ac816de3240c8c357d43b6c55 |
|
BLAKE2b-256 | 84da8e0cdde005a589a54d8a24c79bec35a1f26f4f7bf870f76ac72f99d5a1d9 |
pygmailsorter-0.0.6-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2958c81ddbc97548aaf9f90dff0b1d737614ab09a69a30b97260a7165f1d3bc6 |
|
MD5 | 156df36fa5841a1c1378e93afa28b139 |
|
BLAKE2b-256 | 8950fd9f895d1a76bbfa95c973a943e67dd2783a6149d0d8f084beb5ee38f461 |