ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OpenMed 多语言临床关系抽取实战:基于 CMeIE 44 谓词与印地语子集的确定性关系解码

OpenMed 多语言临床关系抽取实战:基于 CMeIE 44 谓词与印地语子集的确定性关系解码 OpenMed 多语言临床关系抽取实战基于 CMeIE 44 谓词与印地语子集的确定性关系解码【免费下载链接】openmedLocal-first healthcare AI: clinical NER HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 languages, Apple MLX Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmedOpenMed 提供一套确定性deterministic的多语言临床关系抽取能力在中文zh与印地语hi两种语言上从已经抽取好的 NER 实体跨度spans出发抽取疾病—治疗病因并发症等临床关系全程不运行也不训练第二个 NER 模型。候选层基于字符偏移character offsets而非空白分词因此无需额外分词器即可覆盖无空格书写的汉语与天城文Devanagari随后这些带类型的有向边会被送入与其它关系后端共享的受限 span-graph 解码器完成筛选。读完本文你将掌握extract_relations()的调用方式、CMeIE 44 个中文谓词与印地语 8 个关系族的规范标签体系、断言assertion传播规则以及如何在per_language粒度上评测中印关系抽取的 strict / relaxed F1。一、核心思路不新增 NER只做跨度之上的关系解码多语言关系抽取的关键设计原则记录在 multilingual-relations.md 中并在源码 openmed/clinical/relations/multilingual.py 的模块 docstring 里再次强调版本化注册表把 44 个 CMeIE 谓词和一个聚焦的印地语子集映射到 OpenMed 规范关系标签。抽取复用已有 NER 跨度构造与书写体系无关script-agnostic的字符偏移候选并把选择工作委托给共享的 span-graph 解码器。这意味着输入只有两样东西原文文本 一批带label与字符偏移start/end的 NER 跨度不做第二个命名实体识别、不做词级 tokenize中英文之间不存在共享的空格边界假设天然适配中文字间无空格与印地语Devanagari 连续书写。最小可用示例原文档给出的最小示例可以直接运行依赖openmed.clinical包from openmed.clinical import extract_relations text 肺炎使用阿莫西林治疗。 spans [ {label: CONDITION, start: 0, end: 2}, {label: MEDICATION, start: 4, end: 8}, ] relations extract_relations(text, spans, languagezh) print(relations[0].to_dict())输出保留关系的两个参数head / tail及其原始字符偏移to_dict()返回确定性的字典表示。由 multilingual.py 可知每个关系对象MultilingualRelation携带type、head、tail、score、language、source_relation、assertion_status以及一条固定的advisory提示——关系抽取是辅助性支持assistive support临床使用前必须经过人工验证。extract_relations()的完整签名与参数含义见 multilingual.py参数默认值说明text—原始临床文本spans—已有 NER 跨度含字符偏移language—zhCMeIE 清单或hi印地语子集min_score0.5确定性候选的最低得分门槛asserted_onlyTrue为真时剔除 refuted否定与 conditional条件/假设关系语言代码经过归一化_language_code()会把zh-CN、zh_CN等写法折叠为zh见 multilingual.py所以传入languagezh或languagehi之外的注册语言会抛出ValueError并列出受支持语言。二、版本化注册表CMeIE 44 谓词与印地语子集注册表版本由MULTILINGUAL_RELATION_REGISTRY_VERSION标记当前为1源码 multilingual.py 与单测 test_multilingual_relations.py 均断言其为1。版本号机制保证未来谓词集演进不会破坏基于旧版本抽取的下游管线。2.1 中文完整覆盖 CMeIE 44 个谓词中文注册表保留 CMeIE 官方 schema 中全部 44 个不同谓词并映射为稳定的 lower-snake-case 规范标签。注意 CMeIE 定义了 53 个主语-谓语-宾语schema原因在于部分谓词允许多种实体类型配对如drug_treatment的宾语既可以是药物也可以是其他治疗但去重后的不同谓词只有 44 个。注册表只包含标签与类型兼容性信息——OpenMed 不捆绑 CMeIE 语料数据边界与评测格式以官方 CBLUE 基准为准。完整映射表与 multilingual.py 中CMEIE_RELATION_MAPPING的插入顺序一致CMeIE predicateCanonical labelCMeIE predicateCanonical label预防prevention内窥镜检查endoscopic_examination病理分型pathology_type病史history阶段stage筛查screening相关导致causes遗传因素genetic_factor就诊科室care_department多发群体prevalent_population相关转化transforms_to发病机制pathogenesis辅助治疗adjuvant_treatment发病率incidence相关症状associated_symptom病理生理pathophysiology化疗chemotherapy发病年龄onset_age鉴别诊断differential_diagnosis药物治疗drug_treatment放射治疗radiation_treatment多发地区prevalent_region临床表现clinical_manifestation发病部位affected_body_site手术治疗surgical_treatment发病性别倾向sex_predisposition治疗后症状post_treatment_symptom转移部位metastasis_site实验室检查laboratory_test死亡率mortality侵及周围组织转移的症状tissue_invasion_symptom外侵部位external_invasion_site影像学检查imaging_test传播途径transmission_route病因etiology预后状况prognosis辅助检查auxiliary_examination多发季节prevalent_season高危因素high_risk_factor预后生存率survival_rate组织学检查histological_examination并发症complication风险评估因素risk_assessment_factor同义词synonym对应的实体类型边界由源码CMEIE_ENTITY_TYPES定义疾病、症状、检查、药物、部位、手术治疗、其他治疗、预后、流行病学、社会学、其他见 multilingual.py。2.2 印地语聚焦合成临床 fixture 覆盖的关系族印地语子集覆盖了随仓库发布的合成临床 fixture 所涉及的关系族共 8 个Hindi relationCanonical labelदवा उपचारdrug_treatmentशल्य उपचारsurgical_treatmentरोकथामpreventionनैदानिक अभिव्यक्तिclinical_manifestationकारणetiologyजटिलताcomplicationप्रयोगशाला जांचlaboratory_testइमेजिंग जांचimaging_test2.3 类型兼容性约束每个规范关系标签都绑定主语标签集合 → 宾语标签集合的兼容矩阵见_TYPE_COMPATIBILITYmultilingual.py。几个有代表性的约束drug_treatment主语为疾病类CONDITION宾语仅限MEDICATIONaffected_body_site宾语仅限BODY_SITEsurgical_treatment宾语为PROCEDURE或OTHERsex_predisposition宾语为GENDER或OTHERonset_age宾语为AGE或OTHERcauses、associated_symptom、complication等疾病间关系的宾语为疾病/微生物/其他条件实体。这些约束会在解码阶段以SpanGraphConstraints.type_compatibility的形式传入共享解码器从结构上杜绝疾病—药物被错误标成causes这类非法配对。三、候选构造字符偏移、cue 与句内窗口3.1 不依赖空白分词的候选层build_relation_candidates()candidate.py明确注释构建有界图候选无需词级分词word tokenization。它对每个实体对计算字符距离_character_distance并用RelationCandidateRule中的cues触发词与实体标签过滤。关键参数candidate.pymax_character_distance默认96个字符超出即不生成候选max_sentence_distance默认0即只在同一句内生成候选传正数可开启有界的文档级配对每个规则要求至少一个 cue且 head/tail 标签集合非空。单测 test_multilingual_relations.py 验证了中文候选生成的偏移保持性对肺炎使用阿莫西林治疗。节点偏移精确保持为(0, 2)与(4, 8)且drug_treatment候选的character_distance元数据为2。3.2 每种语言的 cue 触发词_CUES_BY_LANGUAGEmultilingual.py为中文与印地语分别维护触发词表某个谓词若无专属 cues则回退到源谓词本身cues cue_mapping.get(canonical_relation, (source_relation,))。中文若干代表性 cues关系中文 cuesprevention预防、防止、疫苗drug_treatment药物治疗、使用、服用、给予、用药surgical_treatment手术治疗、手术、切除术、切除clinical_manifestation临床表现、表现为、症状为etiology病因、由于、引起、所致complication并发症、并发laboratory_test实验室检查、化验、检测imaging_test影像学检查、影像、CT、MRI印地语侧对应रोकथाम / बचाव / टीका预防、दवा से उपचार / इलाज药物治疗、लक्षण临床表现、के कारण病因、सीटी / एमआरआई影像学检查等。3.3 共享 span-graph 解码器候选边typed edges随后进入openmed.core.decoding.decode_span_graph()约束包括allowed_edge_labels仅注册表中的规范关系标签type_compatibility上文的类型兼容矩阵min_edge_score来自extract_relations(min_score…)。测试 test_multilingual_relations.py 用patch(..., wrapsdecode_span_graph)断言extract_relations恰好调用一次共享解码器且对阑尾炎需要手术切除。正确解码出surgical_treatment——这证明多语言关系抽取与其它关系后端走的是同一套解码逻辑只是候选与约束不同。四、断言传播否定、假设与不确定性如何被处理4.1 语言对应的 ConText cue 包中文抽取使用中文 ConText cue 包印地语抽取使用印地语 cue 包经resolve_span_context(..., languagecode)解析见 multilingual.py。缺失 cue 时默认视为 recent近期、certain确定、affirmed肯定尤其重要的一点是英文风格的记录标记不会否定一条中文或印地语关系——对应 fixture 明确声明 An English record marker must not negate a Chinese relation 且为zero_tolerance 陷阱。4.2 断言状态与默认过滤断言状态在 assertion_filter.py 定义并复用同一套 ConText 轴状态触发条件默认输出confirmed两参数均被肯定保留possible任一参数不确定uncertain保留供复核conditional任一参数为假设/条件hypothetical默认剔除refuted任一参数被否定negated默认剔除状态优先级为 refuted conditional possible confirmed。当asserted_onlyTrue默认时refuted 与 conditional 关系被从事实集中剔除用asserted_onlyFalse可以取回全部关系并查看其assertion_status。测试 test_multilingual_relations.py 验证对未见肺炎使用阿莫西林治疗。默认返回空元组关系被正确否定而asserted_onlyFalse时保留的关系标记为refuted。RelationAssertion还映射 FHIRverificationStatusconfirmed→confirmed、refuted→refuted、conditional/possible→provisional并支持生成不含原文、只含偏移与内容哈希的审计条目to_audit_entry()见 assertion_filter.py便于对接审计追踪与 FHIR 导出。五、评测与金标准合成 fixture 与 per_language F15.1 合成 fixtures多语言关系的金标准 fixtures 全部为合成数据metadata.synthetic: true存放于relations_zh.jsonlrelations_indic.jsonl每条 fixture 的结构以relation-zh-drug-treatment为例{ id: relation-zh-drug-treatment, schema_version: 1, language: zh, text: 肺炎使用阿莫西林治疗。, entities: [ {id: condition, start: 0, end: 2, label: CONDITION, text: 肺炎}, {id: medication, start: 4, end: 8, label: MEDICATION, text: 阿莫西林} ], relations: [ {id: relation, type: drug_treatment, head: condition, tail: medication, scope: sentence} ], traps: [], metadata: {synthetic: true, category: relation_gold, schema_version: 1, registry_version: 1} }fixture 还支持zero_tolerance 陷阱traps例如relation-zh-english-no-assertion的 trap 断言英文记录标记不得否定中文关系任何违反都会直接判定失败RELATION_TRAP_KINDS包括assertion与temporal见 openmed/eval/suites/relations.py。5.2 评测入口与 per_language 指标run_relation_benchmark()与ModelScorecard在relation_extraction.per_language下报告strict 与 relaxed F1两者均在 openmed/eval/init.py 导出strict/relaxed 的差异定义于 openmed/eval/relation_metrics.py即关系参数匹配的严格与宽松模式。这意味着中文与印地语的性能不会被聚合进一个笼统的关系分数里隐藏掉——任何回归都能在语言粒度上被精确定位。金标准加载与评分链路load_multilingual_relation_fixtures()读取上述两个 jsonl →score_relation_fixtures()按语言分组打分 → 输出metrics.by_language[zh|hi].strict.f1等指标见 openmed/eval/suites/relations.py。仓库内的提交级测试 test_multilingual_relations.py 断言金标准覆盖语言恰为[hi, zh]两种语言的strict F1 均不低于 0.60的下限所有 fixture 均为合成数据且文本中不得出现mimic / i2b2 / n2c2 / snomed / umls等受保护语料标记同一文件从测试层面杜绝了把真实受保护语料混入金标准的可能。六、典型应用场景与注意事项6.1 适用场景中文电子病历的疾病—治疗/检查关系抽取复用已有中文 NER 输出CONDITION、MEDICATION、PROCEDURE、LAB_TEST 等标签零额外模型成本获得 44 类关系印地语临床文本覆盖 8 个高频关系族适合资源受限的本地化部署本地优先local-first管线整个流程确定性、无云端依赖符合 OpenMed 医疗数据不出网络的部署形态。6.2 注意事项辅助性质MultilingualRelation.to_dict()自带 advisory 字段明确提示临床使用前必须验证抽取结果语言边界仅支持zh与hi其他语言调用relation_type_mapping()会抛出ValueError可用available_multilingual_relation_languages()查询注册语言见 multilingual.py句内默认max_sentence_distance0默认只配对同一句内的实体跨句关系需显式提升该窗口语料边界注册表只携带标签与类型兼容信息不包含 CMeIE 语料本体评测请以官方 CBLUE 基准的数据边界为准。6.3 快速自检命令如需在本地快速验证多语言关系抽取可直接运行单元测试套件python -m pytest tests/unit/clinical/test_multilingual_relations.py -v它会覆盖注册表映射完整性44 个中文谓词 8 个印地语关系、字符偏移保持、共享解码器复用、非英语上下文断言、中文否定传播以及 per_language strict F1 下限等关键行为。【免费下载链接】openmedLocal-first healthcare AI: clinical NER HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 languages, Apple MLX Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表