3. 环境搭建:Python、Biopython、spaCy 与 transformers 安装
好,我们正式进入实操环节。搞文本挖掘,环境搭不对,后面全是坑。我见过太多人卡在第一步——装了半天,跑起来全是红字报错。
这一章,我带你从头搭一套能用的环境。说白了,就是装 Python、装几个关键库、再验证一遍能不能跑通。你跟着我走,半小时内搞定。
3.1 整体架构预览
在动手之前,先看看我们到底要搭什么。下面这张图,是我做的环境结构图。你一眼就能看明白各层的关系。
图里分四层。最底下是 Python 和虚拟环境。往上走,是 Biopython 这种生物信息学专用库。再往上,是 spaCy 和 transformers。最顶层,才是我们最终要写的抽取管道。
嗯,记住这个分层结构。你后面遇到报错,就知道该去哪一层找原因。
3.2 Python 环境搭建
我个人习惯用 pyenv 管理 Python 版本。为什么?因为不同项目依赖的 Python 版本不同。比如 transformers 有些特性要求 3.9+,你拿 3.7 跑直接就崩。
如果你刚接触,我建议直接用 Anaconda 发行版。它自带 conda 包管理器和一大票数据科学库,省事。
先检查你系统里有没有 Python:
python --version
如果看到版本号,比如 Python 3.9.13,好,系统级 Python 有了。但我强烈建议——不要直接用它。创建一个独立的虚拟环境。
3.2.1 创建虚拟环境
用 conda 的话:
conda create -n pubmed_drug python=3.9
conda activate pubmed_drug
用 venv 也行:
python -m venv pubmed_drug
source pubmed_drug/bin/activate # Linux/Mac
pubmed_drug\Scripts\activate # Windows
激活后,终端前面会多出 (pubmed_drug) 这个提示符。我见过有人忘记激活环境,结果库装到了系统 Python 里,后面跑项目时死活 import 不到。嗯,这一点必须注意。
3.3 核心库安装
环境激活好了,接下来装我们需要的工具。我习惯一次性列好 requirements.txt,然后一把梭。但这里,我拆开讲,方便你理解每个库是干什么的。
3.4 安装 Biopython
Biopython 是我们的「手」——用来抓 PubMed 文献。它的 Entrez 模块可以直接访问 NCBI 数据库。
pip install biopython
验证:
python -c "from Bio import Entrez; print(Entrez.email)"
如果没报错,说明装好了。注意,这里 Entrez.email 其实是空的。你需要自己在代码里设置邮箱。NCBI 要求你提供联系方式,不然请求会被限流甚至封禁。这是规约,不是代码问题。
from Bio import Entrez
Entrez.email = "your.email@example.com"
3.5 安装 spaCy 与下载模型
spaCy 是 NLP 界的瑞士军刀。分词、词性标注、命名实体识别,一条龙。对于生物医学文本,我们还要装它的专用模型。
pip install spacy
装完后,下载通用英文模型:
python -m spacy download en_core_web_sm
如果是生物医学场景,我推荐用 en_ner_bc5cdr_md —— 它专门针对药物和疾病实体进行了训练。
pip install https://s3-us-west-2.amazonaws.com/ai2-s2-scispacy/releases/v0.5.4/en_ner_bc5cdr_md-0.5.4.tar.gz
验证:
python -c "import spacy; nlp = spacy.load('en_core_web_sm'); doc = nlp('Aspirin inhibits COX-2.'); print([(ent.text, ent.label_) for ent in doc.ents])"
你应该能看到 [('Aspirin', 'DRUG'), ('COX-2', 'GENE')] 类似的输出。
3.6 安装 transformers 与 PyTorch
transformers 是 Hugging Face 家的王牌库。它让我们能用预训练的语言模型,比如 BioBERT、PubMedBERT,来做更精准的实体识别。
pip install transformers
transformers 底层依赖深度学习框架。我一般用 PyTorch。安装前,先去 PyTorch 官网根据你的 CUDA 版本选命令。如果你没有 GPU,装 CPU 版本就行:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
验证 transformers:
python -c "from transformers import pipeline; ner = pipeline('ner', model='dmis-lab/biobert-v1.1'); print(ner('Aspirin inhibits COX-2.'))"
第一次运行会下载模型,稍微有点慢。看到结果出来,就表示环境通了。
3.7 工具安装速查表
| 工具/库 | 用途 | 安装命令 | 验证方法 | 避坑要点 |
|---|---|---|---|---|
| Python 3.9+ | 基础运行环境 | conda/venv 创建 | python --version | 别用系统 Python 裸跑 |
| Biopython | PubMed 文献抓取 | pip install biopython | from Bio import Entrez | 必须设 Entrez.email |
| spaCy | 基础 NLP 流水线 | pip install spacy | spacy.load('en_core_web_sm') | 模型和数据要分开下载 |
| SciSpacy (BC5CDR) | 生物医学实体识别 | pip install 指定 URL | 实体识别输出 | 模型较大,要有耐心 |
| transformers | 预训练语言模型 | pip install transformers | pipeline('ner', model=...) | 注意 PyTorch 版本匹配 |
| PyTorch | 深度学习后端 | 官网命令安装 | import torch | CUDA 版本必须对 |
3.8 一次性安装脚本
你可能觉得一个个装麻烦。好,我给你一个 requirements.txt,一步到位:
biopython==1.81
spacy==3.7.2
transformers==4.36.2
torch==2.1.2
scispaCy==0.5.4
en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.7.1/en_core_web_sm-3.7.1-py3-none-any.whl
然后运行:
pip install -r requirements.txt
嗯,这里要特别说明:en-core-web-sm 那一行是指定直接从 GitHub 的模型包安装。这样你就不用再跑 python -m spacy download 了。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
3.9 环境验证脚本
所有东西装完后,跑一遍这个脚本。它能一次性验证所有核心依赖是否正常工作:
# check_env.py
import sys
print(f"Python 版本: {sys.version}")
try:
from Bio import Entrez
print("✅ Biopython: OK")
except ImportError:
print("❌ Biopython: 未安装")
try:
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Aspirin inhibits COX-2.")
print("✅ spaCy: OK")
except Exception as e:
print(f"❌ spaCy: {e}")
try:
from transformers import pipeline
print("✅ transformers: OK")
except ImportError:
print("❌ transformers: 未安装")
try:
import torch
print(f"✅ PyTorch: OK, CUDA 可用: {torch.cuda.is_available()}")
except ImportError:
print("❌ PyTorch: 未安装")
保存为 check_env.py,然后执行:
python check_env.py
如果所有项都打上了绿色对勾,恭喜你,环境搭建完毕。如果某一项挂了,回去检查对应的安装步骤。
- 必须使用虚拟环境,不要污染系统 Python。
- Biopython 的 Entrez 必须设置邮箱,这是使用 NCBI API 的硬性要求。
- spaCy 模型和数据是分开的,pip 安装库之后,还要下载模型文件。
- transformers 的预训练模型会在首次使用时自动下载,确保网络畅通。
- PyTorch 的版本必须与你的 CUDA 驱动兼容,否则默认退回到 CPU 模式。