课程介绍与背景
药物靶点发现的重要性
做药物研发的朋友都知道,找到一个靠谱的靶点,基本就成功了一半。靶点说白了,就是药物在体内作用的那个“开关”——可能是某个蛋白、酶或者受体。你把它控制住了,疾病通路就被打断了。
但问题来了:人类基因组里大约有 20000 个蛋白编码基因,其中能被药物安全有效地调控的,真正经过验证的靶点,目前才几百个。我前几年参与过一个抗肿瘤项目,团队花了 8 个月筛选文献,最后发现那个热门靶点早在 2003 年就被报道过安全性问题。白白浪费了时间和经费——这就是靶点发现的痛点。
传统方法怎么找靶点?主要靠实验筛选加人工读文献。一个研究员一天最多精读 5 篇论文,而 PubMed 里光药物相关的文献就超过 2000 万篇。你想想看,这效率完全跟不上。
| 方法 | 效率 | 成本 | 覆盖率 |
|---|---|---|---|
| 人工阅读 | 低(5篇/天) | 高(人力成本) | 低 |
| 关键词搜索 | 中(依赖检索式) | 低 | 有限 |
| 文本挖掘 | 高(千篇/分钟) | 中(开发成本) | 高 |
文本挖掘的作用
文本挖掘,说白了就是让计算机替你读论文,把里面提到的基因、蛋白、化合物、疾病、关系等信息自动抽出来。我最早接触这个方向是在做一个文献计量项目,当时需要统计 10 年内的激酶抑制剂报道。如果靠人工,两个研究生干一个月都搞不定。但用 Python 写了个脚本跑了一夜,所有关系对都出来了。
在药物靶点领域,文本挖掘的核心任务有这几个:
- 命名实体识别(NER)——从句子中找出“EGFR”“imatinib”“non-small cell lung cancer”这类专有名词。
- 关系抽取(RE)——判断实体之间是不是抑制、激活、结合等作用关系。
- 归一化(Normalization)——把同义词(比如“EGF receptor”和“EGFR”)映射到同一个数据库ID上。
- 证据排序——给抽出的候选靶点评分,过滤掉低质量报道。
文本挖掘还有一个隐藏优势:可以跨领域关联。比如一篇论文里提到某化合物在细胞实验中对蛋白 A 有效,另一篇里说蛋白 A 在某种癌症中高表达——这两条信息单独看都没用,但合并起来就是一个潜在的药物-靶点-疾病线索。
PubMed 简介
PubMed 是美国国立医学图书馆(NLM)维护的免费文献数据库,收录了全球 3000 多万条生物医学文献摘要。说白了,这是我们文本挖掘最重要的数据源。
我经常被学员问到:“为什么不直接爬 Web of Science 或 Scopus?” 原因很简单:PubMed 提供了完善的 API(E-utilities),完全免费,没有限速条款(只要你别太暴力)。而且它的 XML 格式非常规范,元数据(MeSH 词、作者、年份、期刊)都标记得很清楚。
下面是一个最基础的查询示例,用 curl 调用 E-utilities 搜索“drug target”相关的文献:
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=drug+target&retmax=10&retmode=json"
返回的 JSON 里包含 PubMed ID(PMID)列表,然后用 efetch 就能拿到详细摘要:
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=12345678,23456789&retmode=xml&rettype=abstract"
为什么要学这个?因为我们后续所有章节的自动化抽取流程,第一步都是从这个 API 开始——下载文献集、解析 XML、抽取出句子、再跑实体识别和关系抽取。你掌握了这个起点,后面的代码才能跑起来。
PubMed 的数据结构也值得了解一下:每条记录包含标题、摘要、作者、期刊、出版年份、MeSH 词、PMID、PMCID 等。其中 MeSH 词是人工标注的受控词表,对提升文本挖掘准确率很有帮助。比如搜索“Neoplasms”而不是“cancer”,能召回更多相关文献。
这张图把本章的核心逻辑串起来了:从 PubMed 文献源出发,经过文本预处理、命名实体识别、关系抽取,最终产出药物-靶点关系库。后续所有章节都是在给这张图的每个环节填细节——怎么下载数据、怎么训练模型、怎么提升准确率。
嗯,这里要注意一点:很多人觉得文本挖掘就是调个包跑一下。但我实际经验告诉我,真正上生产环境的时候,80% 的工作量反而在数据清洗和词典维护上。比如 PubMed 的摘要里经常有基因名被截断或者拼写错误,不做处理的话 recall 会很难看。