Unified Medical Language System

最后发布时间:2025-09-29 17:39:14 浏览量:

1️⃣ 背景

  • MeSH(Medical Subject Headings):由 NLM 提供的标准化医学主题词。

  • UMLS(Unified Medical Language System):整合了多个医学词表(如 MeSH、SNOMED CT、ICD 等),为每个概念提供一个 CUI(Concept Unique Identifier)

  • 作用

    • 统一不同词表、同义词、缩写
    • 方便在文献中识别不同形式的实体
    • 用于下游关系挖掘或知识图谱构建

2️⃣ 映射方式

2.1 通过 UMLS MRCONSO 表直接映射

UMLS 数据库中:

  • MRCONSO.RRF:概念名称表

    • 列有:

      • CUI:概念唯一 ID
      • LAT:语言(ENG/SPA 等)
      • SAB:词表来源(如 MSH = MeSH)
      • STR:概念名称
      • TTY:术语类型(PT=Preferred Term, SY=Synonym)
  • 步骤

    1. 下载 UMLS Metathesaurus(需注册 NLM 账号)

    2. 导入 MRCONSO.RRF 表

    3. 对每个 MeSH 实体:

      SELECT CUI, STR 
      FROM MRCONSO 
      WHERE STR = 'Alzheimer Disease' 
        AND SAB='MSH' 
        AND LAT='ENG';
      
    4. 得到对应 CUI 和同义词列表

2.2 使用 Python 接口工具

方法 A:PyMedTermino

  • 支持 MeSH 与 UMLS 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

  • 可以直接获取同义词和跨词表映射

方法 B:QuickUMLS

  • QuickUMLS 支持快速从文本匹配实体到 UMLS CUI
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

  • 支持同义词、大小写、词形变化匹配

2.3 使用 UMLS API

  • UMLS REST API
  • 可通过 CUIString Search 查询 MeSH 与其他词表映射
  • 适合在线调用,不想下载整个 Metathesaurus

3️⃣ 同义词扩展

  • 映射到 CUI 后,你可以:

  • 获取所有同义词(从 MRCONSO 同一个 CUI 的不同 STR)

  • 生成实体别名表

  • 在文本匹配时覆盖更多形式

示例:

# 对 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(在线小规模查询)
  • 核心目标:把 MeSH 实体标准化到 CUI 并获取同义词