1️⃣ 背景

2️⃣ 映射方式

2.1 通过 UMLS MRCONSO 表直接映射

UMLS 数据库中:

2.2 使用 Python 接口工具

方法 A:PyMedTermino

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)

方法 B:QuickUMLS

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'])

2.3 使用 UMLS API

3️⃣ 同义词扩展

示例:

# 对 D000544 (Alzheimer Disease)
cui = 'C0002395'
synonyms = MRCONSO[MRCONSO['CUI']==cui]['STR'].tolist()
# synonyms = ['Alzheimer Disease', 'Alzheimer's Disease', 'AD', ...]

4️⃣ 实践流程建议

MeSH 实体 → 查询 UMLS → 获取 CUI → 获取同义词 → 构建扩展词表 → 文本匹配

💡 小结

  1. 直接使用 MRCONSO 表(批量、高度灵活)
  2. Python 包:PyMedTermino / QuickUMLS(更方便)
  3. UMLS REST API(在线小规模查询)