MeSH(Medical Subject Headings):由 NLM 提供的标准化医学主题词。
UMLS(Unified Medical Language System):整合了多个医学词表(如 MeSH、SNOMED CT、ICD 等),为每个概念提供一个 CUI(Concept Unique Identifier)。
作用:
UMLS 数据库中:
MRCONSO.RRF:概念名称表
列有:
CUI
LAT
SAB
STR
TTY
步骤:
下载 UMLS Metathesaurus(需注册 NLM 账号)
导入 MRCONSO.RRF 表
对每个 MeSH 实体:
SELECT CUI, STR FROM MRCONSO WHERE STR = 'Alzheimer Disease' AND SAB='MSH' AND LAT='ENG';
得到对应 CUI 和同义词列表
from pymedtermino.snomedct import * from pymedtermino.umls import * from pymedtermino.mesh import * # 初始化 MeSH from pymedtermino import * from pymedtermino.umls import * term = MeSHConcept("D000544") # MeSH ID cuis = term.umls_cuis() # 获取对应 UMLS CUI print(cuis)
优点:
不用直接操作 RRF
可以直接获取同义词和跨词表映射
from quickumls import QuickUMLS matcher = QuickUMLS('/path/to/quickumls') matches = matcher.match("Alzheimer Disease is a neurodegenerative disorder", best_match=True) for m in matches: print(m[0]['cui'], m[0]['term'])
可直接从文本抽取 MeSH 实体的 CUI
支持同义词、大小写、词形变化匹配
String Search
映射到 CUI 后,你可以:
获取所有同义词(从 MRCONSO 同一个 CUI 的不同 STR)
生成实体别名表
在文本匹配时覆盖更多形式
示例:
# 对 D000544 (Alzheimer Disease) cui = 'C0002395' synonyms = MRCONSO[MRCONSO['CUI']==cui]['STR'].tolist() # synonyms = ['Alzheimer Disease', 'Alzheimer's Disease', 'AD', ...]
MeSH 实体 → 查询 UMLS → 获取 CUI → 获取同义词 → 构建扩展词表 → 文本匹配
优势:
统一术语,避免多种表达导致漏匹配
可直接用于实体关系抽取或共现分析
💡 小结