Python 周报,提供有价值的 Python 及行业相关信息。
如果你发现了有价值的信息、文章和工具等,可以到 Issues 里提给我,记得写上推荐的理由。也欢迎提出意见和建议。
文章和教程
人工智能本科学位的完整四年课程计划
现在已经离开学校一段时间了,我有很多时间来思考某些课程对我在人工智能和机器学习领域的职业准备有多好。最终,我决定发表自己的想法,并为四年制人工智能本科学位设计完整的课程。
这些课程旨在为人工智能和计算机科学领域的新手提供广度和深度。该课程的灵感主要来自于我所修的课程,反映了我认为当今成功从事人工智能事业必不可少的技能。
虽然你可以通过单个 Coursera 课程获得一些 AI 知识,但我在这里的重点是发展对这些概念的实际应用的深刻概念理解。对领域的透彻了解确实需要时间,快捷方式不起作用,因此这就是为什么此列表适合希望从基础知识系统地开始学习的人们的原因。
- 第一年:建立基础
- 第二年:探索领域,构建系统知识
- 第三年:深入学习高级课程
- 第四年:真实经验至关重要
实用 Python 编程
《Python Cookbook》作者 David Beazley 放出了一份 Python 教程,适合有其他语言基础想快速上手 Python 的科学家、工程师和程序员,这本教程预计需要花费 25-35 小时的学习时间,包含 130 个上手的代码练习。教程的目的是涵盖 Python 编程的基础方面,重点是脚本编写,数据操作和程序组织。在教程结束时,学生应该能够自己开始编写有用的 Python 程序,或者能够理解和修改其同事编写的 Python 代码。
可能的中文翻译版本正在进行:实用 Python 编程中文版
超现代 Python
2020年新的一年标志着 Python 2 和 Python 3 10年并存的终结。在此期间,Python的格局已发生了巨大变化:现在,许多新工具和最佳实践改善了 Python 开发人员的体验。但是,由于遗留支持的限制,它们采用的方法比较滞后。
这个系列文章是有关现代 Python 工具的指南,重点放在简单性和简约性上。它将带领你逐步创建完整且最新的Python项目结构,包括单元测试,静态分析,类型检查,文档,持续集成和交付。
这个指南面向热衷于从一开始就学习最佳实践的初学者,以及经验丰富的 Python 开发人员,他们的工作流程受到传统工具箱所需的模板和解决方法影响。
这个系列文章包含六个部分:
Django 的缓存和扩展
缓存是与数据库索引一起扩展的最重要方面。如果做对了,使用其中任何一种都可以达到99%的速度改进。作者使用 Django 已经超过6年,他将分享在扩展到数百万用户上经验,这些技术和见解不仅限于 Python 或 Django,它们是通用的。对于本教程,django 的内置内存缓存就足够了,你无需设置 Redis 或内存缓存服务器。
如何编写可安装的 Django 应用
在 Django 框架中,项目是指特定网站的配置文件和代码的集合。Django 将业务逻辑分组为所谓的应用程序,这是 Django 框架的模块。关于如何构建你的项目以及其中的应用程序的文档很多,但是当打包可安装的 Django 应用程序时,却很难找到信息。
在本教程中,你将学习如何从 Django 项目中提取应用程序并将其打包以使其可安装。打包应用后,你可以在PyPI上共享它,以便其他人可以通过 pip 安装来获取它。
在本教程中,你将学习:
- 编写独立应用程序与在项目内部编写应用程序之间有什么区别;
- 如何创建
setup.cfg
文件以发布 Django 应用; - 如何在 Django 项目之外引导 Django,以便你可以测试你的应用;
- 如何使用
tox
跨多个版本的 Python 和 Django 测试; - 如何使用
Twine
将可安装的 Django 应用发布到 PyPI。
用于网络 I/O 的 Python 中的并发──同步,线程,多进程和异步IO
在本文中,我们来看看在 Python 中执行批量 HTTP 请求的一些方法以及我们可以使用的一些工具。主要,我们将研究以下几种方式:
- 使用
requests
模块同步执行; - 使用
multiprocessing
模块并行执行; - 使用
threading
模块多线程执行; - 基于
asyncio
模块的事件循环。
使用 Python 和 Redis 轻松进行 API 请求缓存
Redis 是一个快速,轻量级的内存数据库,具有其他持久性选项。在这里,缓存可以使你免于冗余的 API 请求,并且还可以大大缩短响应时间。缓存过程:
- 使用键值数据结构在 Redis 中缓存 API 响应;
- 在记录上设置超时;
- 如果记录存在,则从缓存服务新请求;
- 如果未缓存响应,则仅向 API 发送新请求,然后将该响应添加到缓存。
在 Wikipedia 上使用 BERT 构建问答系统
这是一个使用 PyTorch 和 Hugging Face 构建基于 IR 的问答系统的高级代码演练。包括以下部分:
- 安装库并设置环境;
- 在 SQuAD 数据集上训练 Transformer 风格模型;
- 了解 Hugging Face 的
run_squad.py
训练脚本和输出; - 使用完整的维基百科文章作为问题的上下文。
在这篇文章的结尾,我们将有一个基于 IR 的有效 QA 系统,其中 BERT 作为文档阅读器,而 Wikipedia 的搜索引擎作为文档检索器。这是一个有趣的玩具模型,但也暗示了潜在的实际使用。
NLP 中数据增强的可视化调查
与“计算机视觉”中使用图像数据增强是一种标准做法不同,在NLP中,文本数据的增强非常少见。这是因为对图像进行细微的操作(例如将图像旋转几度或将其转换为灰度)不会改变其语义。 语义上不变的转换的存在是使增强成为计算机视觉研究中必不可少的工具包的原因。
作者很好奇是否有尝试为 NLP 开发增强技术的方法,并探讨了现有文献。在这篇文章中,作者将基于他的发现概述当前用于文本数据增强的方法。
简化语言技术,从构思到部署
自然语言处理(NLP)的诞生通常得到著名图灵测试的认可:人类可以将人类对话与计算机对话区分开吗?七十年后,NLP 领域继续取得巨大进步。基于规则的,统计的以及最近基于神经网络的方法已经解决了分析,组织和生成人类语言的尝试。
eBay 的独特之处在于它在许多语言和类别中无与伦比的库存,以及用户生成的输入和查询。对于一家全球电子商务公司而言,NLP 仍然是其业务的核心,例如:
- 语言表示模型,可提高搜索的相关性和排名;
- 连接买家和卖家的机器翻译,即使他们说不同的语言;
- 命名实体识别(NER),可在查询中提取产品特征和品牌名称;
- 拼写更正,可指导客户选择预期的商品。
在 eBay 和 NLP 研究社区中,已经通过几种不同的编程语言和工具包来处理这些任务。值得注意的是,基于 Python 的工具包在最近几年中获得了最大的关注。
如何使用 Python 构建唇彩搜索引擎
如何以及为什么要构建唇彩搜索引擎。
项目,软件包和代码
dry-python/returns: 使你的函数返回有意义,类型注释且安全的内容!
benbusby/whoogle-search:自托管,无广告,尊重隐私的 Google 元搜索引擎。
获取 Google 搜索结果,但不包含任何广告,javascript,AMP 链接,cookie 或 IP 地址跟踪。一键式轻松部署为 Docker 应用程序,并使用单个配置文件进行自定义。可以快速简便地实现为台式机和移动设备上的主要搜索引擎替代品。
rrebase/knboard:使用 React 和 Django 构建的看板,类似于 Trello。
fengsp/django-grpc-framework:Django gRPC 框架是受 djangorestframework 启发而构建 gRPC 服务的工具包。
书籍
《高性能 Python(第二版)》
你的 Python 代码可能能正确运行,但是你需要使其运行得更快。此扩展版本针对 Python 3 进行了更新,向你展示了如何查找性能瓶颈并显著提高大数据量程序中的代码速度。通过探索设计选择背后的基本理论,《高性能 Python》可帮助你更深入地了解 Python 的实现。
你如何利用多核架构或集群,或者构建一个可以在不损失可靠性的情况下进行伸缩的系统?经验丰富的 Python 程序员将学习许多问题的具体解决方案,以及了解使用高性能 Python 进行社交媒体分析,生产化机器学习等的公司的战争故事。
- 更好地掌握 NumPy,Cython 和分析器;
- 了解 Python 如何抽象底层计算机架构;
- 使用性能分析来查找 CPU 时间和内存使用方面的瓶颈;
- 通过选择适当的数据结构来编写高效的程序;
- 加快矩阵和矢量计算;
- 使用工具将 Python 编译为机器代码;
- 并发管理多个 I/O 和计算操作;
- 转换多进程代码以在本地或远程集群上运行;
- 使用 Docker 之类的工具更快地部署代码。
《高性能 Python(第二版)中的代码可以在这里找到。
CPython Internals ── Python 3 解释器指南
作者 Anthony Shaw 是 CPython 贡献者和 PyCon 演讲者。 他拥有计算机科学方面的经验,并拥有8年以上使用 Python 的经验。Anthony 还是 Python 软件基金会的会员,也是开源Apache基金会的成员。在本书中,你将了解到 CPython 内部原理的关键概念,以及它们在进行操作时如何通过可视化解释进行工作。
事实证明,CPython 是最流行的 Python 运行时,是用人类可读的 C 和 Python 代码编写的,CPython 解释器抽象了底层 C 平台和你的操作系统的复杂性。它使跨平台的线程变得简单明了,它承担了 C 语言中的内存管理之苦,并且使其变得简单。简而言之,CPython 为你提供了使用 Python 舒适而强大的语法编写可扩展和高性能应用程序的平台。通过“窥视” Python 运行时,你将加深技巧并成为真正的 Pythonista。与真正掌握 Python 相比,你将更向前迈进一步,从而使你能够编写既美观又惯用的代码,而且又快速又高效。
关注我们
RSS 订阅:PythonWeekly RSS