尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
medspaCy Preprocessor/Postprocessor 双组件完整教程:快速过滤、重命名与删除流水线中的实体
medspaCy Preprocessor/Postprocessor 双组件完整教程快速过滤、重命名与删除流水线中的实体【免费下载链接】medspacyLibrary for clinical NLP with spaCy.项目地址: https://gitcode.com/gh_mirrors/me/medspacymedspaCy Preprocessor/Postprocessor是 medspaCy 临床 NLP 工具库中两个互补的核心组件Preprocessor 在文本进入 spaCy 流水线之前执行破坏性清洗替换、删除文本Postprocessor 则在流水线末尾遍历已识别的实体实现过滤、重命名标签或删除实体。本教程用一份真实出院小结场景带你快速掌握这两个组件的使用方式。一、双组件分工一张图看懂流水线位置 组件执行时机作用对象是否 spaCy 组件Preprocessor预处理器分词之前原始文本字符串❌ 需手动接管 tokenizerPostprocessor后处理器流水线末尾doc.ents实体列表✅ 通过add_pipe加入一句话记忆Preprocessor 改文字Postprocessor 改实体。import medspacy nlp medspacy.load(medspacy_enable[medspacy_pyrush, medspacy_target_matcher, medspacy_sectionizer])二、Preprocessor 预处理流水线前清洗文本spaCy 默认只允许非破坏性处理但很多临床文本需要先动刀统一日期格式、展开缩写、去掉占位符。Preprocessor就是为此设计的它包裹流水线 tokenizer在分词前修改文本。核心用法分三步创建并接管 tokenizer不是add_pipefrom medspacy.preprocess import Preprocessor preprocessor Preprocessor(nlp.tokenizer) nlp.tokenizer preprocessor用PreprocessingRule定义匹配模式 → 替换文本规则from medspacy.preprocess import PreprocessingRule rules [ PreprocessingRule(r\[\*\*[\d]{4}\*\*\], repl2010, desc替换 MIMIC 年份占位符), PreprocessingRule(rdxd, replDiagnosed, desc展开缩写), PreprocessingRule(r\[\*\*[^\]]\], desc删除其余占位符默认替换为空), ] preprocessor.add(rules)正常调用doc nlp(text)即可文本会先被清洗再分词。规则四大参数pattern正则表达式定位要修改的文本repl替换文本默认空字符串即删除callback自定义函数可基于匹配结果做更复杂的整段删除desc规则描述便于维护 提示callback参数非常适合按标题删除整个章节这类大范围文本操作而repl只适合精确的点对点替换。实现源码见 preprocessor.py 与 preprocessing_rule.py。三、Postprocessor 后处理流水线后管理实体经过 NER 和 ConText 等组件后doc.ents中可能混入噪声被否定的实体、无关章节的实体、标签错误的实体。Postprocessor作为流水线最后一个组件逐实体检查条件全部通过则执行动作。上图medspaCy 实体可视化效果——Postprocessor 正是对这类实体做最终过滤与修正1. 三步搭建 Postprocessorfrom medspacy.postprocess import Postprocessor, PostprocessingRule, PostprocessingPattern from medspacy.postprocess import postprocessing_functions postprocessor nlp.add_pipe(medspacy_postprocessor) postprocessor.add(rules) # 加入规则2. 过滤删除实体经典移除患者说明章节实体患者说明patient instructions通常是假设性内容不是患者真实经历应当剔除rules [ PostprocessingRule( patterns[ PostprocessingPattern( conditionlambda ent: ent._.section_category, success_valuepatient_instructions ), ], actionpostprocessing_functions.remove_ent, description删除患者说明章节中的所有实体 ), ]配合visualize_ent(doc)可视化前后对比可以直观看到被过滤掉的实体消失。3. 重命名实体词义消歧ca 既可能是癌症CANCER也可能是肿瘤标志物检查TEST用条件组合 动作模式自动改标签rules [ PostprocessingRule( patterns[ PostprocessingPattern(conditionlambda ent: ent.text.lower() ca), PostprocessingPattern(conditionpostprocessing_functions.sentence_contains, condition_args(lab,)), # 句子中出现 lab ], actionpostprocessing_functions.set_label, kwargs{label: TEST} # 重命名为 TEST ), ]规则模型三层结构与 medspaCy 其他规则组件风格一致PostprocessingRule一组条件 一个动作全部条件通过才执行PostprocessingPattern单个条件检查支持传condition_argsaction内置或自定义函数支持kwargs传参实现源码见 postprocessor.py、postprocessing_rule.py设计说明见 README。四、内置实用函数速查表 postprocessing_functions模块提供开箱即用的条件与动作函数覆盖临床 NLP 最高频的修正场景类型函数用途条件is_negated/is_uncertain判断实体是否被否定/不确定修饰条件is_historical/is_hypothetical/is_family判断历史、假设、家属提及条件sentence_contains/is_preceded_by/is_followed_by基于句内文本或前后窗口词判断条件is_modified_by_category/is_modified_by_text检查 ConText 修饰语动作remove_ent从doc.ents删除实体动作set_label复制实体并改标签重命名动作set_negated/set_uncertain等直接修正修饰属性高频组合示例——删除所有被否定实体rules [ PostprocessingRule( patterns[PostprocessingPattern(conditionpostprocessing_functions.is_negated)], actionpostprocessing_functions.remove_ent, ), ]无肺炎迹象no evidence of pneumonia中的 pneumonia 会被自动过滤只保留真实存在的阳性发现。五、避坑指南 ⚠️Preprocessor 不要add_pipe它不是 spaCy 组件必须直接替换nlp.tokenizer否则流水线不生效。set_label 是复制再替换spaCy 不允许直接修改 span 标签该函数会创建新 span 并尝试复制扩展属性复杂属性可能丢失建议处理后抽查。Postprocessor 建议放流水线最后若放在 NER/ConText 之前实体上还没有修饰属性is_negated等条件全部失效。规则顺序即执行顺序同一实体会依次被各规则检查一旦删除立即跳过后续规则。用 debug 模式排错add_pipe(medspacy_postprocessor, config{debug: True})可打印每个实体的规则判定日志。六、总结需求选择关键 API清洗原始文本日期、缩写、占位符PreprocessorPreprocessingRule(pattern, repl)删除噪声实体Postprocessorremove_ent重命名/改标签Postprocessorset_labelsentence_contains结合 ConText 属性做过滤Postprocessoris_negated等条件函数完整可运行示例见官方 Notebook 08-Preprocessing-Postprocessing.ipynb配合 discharge_summary.txt 出院小结语料上手实践。掌握Preprocessor 清洗 Postprocessor 修正这对组合拳你的 medspaCy 临床 NLP 流水线就能输出干净、可信的实体结果。【免费下载链接】medspacyLibrary for clinical NLP with spaCy.项目地址: https://gitcode.com/gh_mirrors/me/medspacy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

GetQzonehistory:如何把QQ空间历史说说完整归档下来

GetQzonehistory:如何把QQ空间历史说说完整归档下来

GetQzonehistory:如何把QQ空间历史说说完整归档下来 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory GetQzonehistory 是一款开源的QQ空间历史说说导出工具。它通过扫码登录&…

📅 2026/10/29 0:41:08
Cumulus Runtime 升级机制深度揭秘:Parachain 如何与 Relay Chain 协同完成 WASM 升级

Cumulus Runtime 升级机制深度揭秘:Parachain 如何与 Relay Chain 协同完成 WASM 升级

Cumulus Runtime 升级机制深度揭秘:Parachain 如何与 Relay Chain 协同完成 WASM 升级 【免费下载链接】cumulus Write Parachains on Substrate 项目地址: https://gitcode.com/gh_mirrors/cum/cumulus Cumulus 是构建 Substrate Parachain(平行…

📅 2026/10/29 0:41:26
用SimuPy BlockDiagram做闭环控制仿真:PID控制器手把手教程

用SimuPy BlockDiagram做闭环控制仿真:PID控制器手把手教程

用SimuPy BlockDiagram做闭环控制仿真:PID控制器手把手教程 【免费下载链接】simupy A framework for modeling and simulating dynamical systems 项目地址: https://gitcode.com/gh_mirrors/si/simupy SimuPy 是一个开源的 Python 动态系统仿真框架&#x…

📅 2026/9/8 5:12:47
MORE NEWS

更多资讯

📰

营销技能实战拆解:洞察、内容、数据、渠道的组合拳

这些年带团队,陆陆续续面试过很多做营销的年轻人,几乎每个人都会在简历上写“具备良好的市场洞察力”“熟悉主流投放渠道”“擅长内容策划”。但真到了实战里,能扛事儿的往往没几个。问题不在态度,也不在努力程度,而在…

📰

系统接口设计对接方案:协议选型、规范设计与安全验收

简介:围绕系统与外部系统之间如何对接这一工程难题,这份系统接口设计对接方案面向系统架构师、后端开发与集成实施人员,梳理从对接方式选型到接口规范落地的完整思路。内容以SOA体系架构与服务总线为主线,依次说明服务目录标准&am…

📰

蒙泰图像输出方案:从色差到精准输出的全链路解析

1. 从一张打样图说起:这套方案到底在解决什么问题做图像输出这行的人都有一个共同的痛:屏幕上看着完美的一张图,送到设备上打出来,颜色偏了、尺寸歪了、边缘糊了,客户站在旁边皱着眉,你只能一边赔笑一边重新…

📰

QT5 Linux下读写2003 Excel:Excelformat源码修改与中文路径实践

简介:在Linux环境下用Qt5读写Excel 2003(xls)文件时,中文路径是许多开发者的痛点,日文、韩文等非英文路径也同理,根源往往出在wcstombs和mbstowcs两个转换函数对宽字符长度的错误计算上。这份ExcelFormat第…

📰

HC32LXXX MCU晶振匹配实验:负载电容与起振可靠性实测

1. 项目背景与核心问题拆解1.1 为什么晶振匹配实验值得单独拿出来说但凡做过MCU硬件设计的人,大概率都遇到过这样一种情况:板子焊好之后,程序烧进去,跑起来一切正常,但偶尔就是会莫名其妙复位一下,或者串口…

📰

机器学习前置知识配套数据集:从CSV到模型训练全流程指南

简介:面向机器学习入门者的《1. 机器学习前置知识》配套数据集,围绕前置知识章节设计了多个真实业务场景,涵盖电影评分、新闻标题、星巴克门店、股票行情与出行记录等常见数据形态,适合初学者在接触建模算法前,先系统练…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬