pattern
Python 全栈 Web 挖掘库,内置爬虫、多语言 NLP、机器学习与图可视化,一条 pip 安装
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Python 全栈 Web 挖掘库,内置爬虫、多语言 NLP、机器学习与图可视化,一条 pip 安装
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Pattern 模块架构一览 — 从网页抓取到图网络可视化的完整工具链
2005 年,比利时安特卫普大学艺术中心的 Tom De Smedt 开始了一个有趣的探索:能不能用代码写诗?能不能让机器理解文字背后的情感?作为一个同时拥有艺术背景和编程能力的研究者,他很快意识到,市面上没有一套足够完整、易用、跨语言的 Python 工具,能够把"从网页抓数据→处理文本→训练模型→画图可视化"这个完整流程串起来。
于是,他自己动手写了 Pattern。今天,这个项目已成长为 Python 生态中历史最悠久的 Web 挖掘库之一,在 GitHub 上积累了超过 8854 颗星,被全球研究者和开发者用于学术研究、商业情报和教学实验。
Pattern 并不是单一功能的库,它更像是一个**"数据科学瑞士军刀"**,整合了从网页爬取到机器学习的完整链路:
内置对主流 Web 服务的 API 封装,包括 Google 搜索、Twitter、Wikipedia,无需自己写 OAuth 和请求解析。一个 Twitter() 对象加上几行代码,就能按 hashtag、时间范围抓取推文数据。
from pattern.web import Twitter
twitter = Twitter()
for tweet in twitter.search('#python', start=1, count=100):
print(tweet.text)
Pattern 还自带网页爬虫,能解析 HTML DOM,直接从任意网页提取结构化数据。
这是 Pattern 最核心的模块。支持词性标注(POS Tagging)、n-gram 提取、情感分析(Sentiment Analysis)和 WordNet 语义词典查询。支持 9 种语言:英语、德语、西班牙语、法语、意大利语、荷兰语、俄语、中文(部分)和罗马尼亚语。

图2:意大利语文本词性标注与依存分析示例
from pattern.en import tag, sentiment
text = "Python is wonderfully productive and fast"
print(tag(text))
# [('Python', 'NNP'), ('is', 'VBZ'), ('wonderfully', 'RB'), ...]
print(sentiment(text))
# Sentiment(type='polarity', polarity=0.5, subjectivity=0.6)
提供向量空间模型实现,内置 KNN、SVM、感知机 等分类器,以及 K-means 聚类、LSA 潜在语义分析。对中小规模数据集完全够用,无需引入重型 ML 框架。

图3:SVM 二分类决策边界可视化
将实体和关系建模为图(Graph),计算节点的中心性、PageRank、社区发现,并直接输出可视化结果。内置 Common Sense 常识知识库,可查询概念之间的语义关系。

图4:语义网络图可视化 — 节点大小反映中心性
Pattern 还包含一个 Canvas 图形库,灵感来自 Processing,用 Python 代码绘制粒子系统、参数化曲线和几何图案。这是 Tom De Smedt 艺术背景的直接体现。
极低。 Pattern 的设计哲学是"开箱即用",通过 pip 安装后,所有子模块直接 import:
pip install pattern
from pattern.web import Twitter
from pattern.en import tag
from pattern.vector import KNN
没有 Dockerfile、不需要 GPU、不依赖复杂的科学计算栈(NumPy/SciPy 除外)。代码仓库中附带了 50+ 完整示例,涵盖从 Twitter 情感分类到 Wikipedia 关系图谱的各个场景。
唯一的门槛是:这是一个纯 Python CLI 库,没有 Web 界面,适合愿意写代码的用户。
| 特性 | Pattern | Scrapy | NLTK | spaCy |
|---|---|---|---|---|
| Web 抓取 | ✅ 内置 | ✅ 强大 | ❌ | ❌ |
| NLP 标注 | ✅ 多语言 | ❌ | ✅ | ✅ 更强 |
| 机器学习 | ✅ 基础 | ❌ | ✅ | ❌ |
| 图可视化 | ✅ 内置 | ❌ | ❌ | ❌ |
| 安装难度 | 一条 pip | 配置较多 | 需下载包 | 需模型下载 |
Pattern 的独特定位在于:它是唯一一个把爬虫、NLP、ML、图分析打包在一起的 Python 库。其他库要么专注爬虫(Scrapy),要么专注 NLP(NLTK/spaCy),要么专注图分析(NetworkX),但 Pattern 让你用一个 import 全搞定。
尽管 Pattern 年事已高,它代表了 Python 数据科学生态早期的一种理想主义:做一套无所不包、拿来即用的工具体验。时至今日,它的 GitHub stars 仍在缓慢增长(最近一次 commit 在 2023 年),说明确实有稳定的使用场景——教学、小型研究项目、快速原型验证。在这些场景下,Pattern 依然是最快的启动方式。
如果你的需求是"快速验证一个 NLP 想法"或"抓一批 Twitter 数据做情感分析",Pattern 仍然是值得一试的选择。