You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于诊断查找表从临床病历提取癌症诊断的Python实现问题

问题描述

拥有一组临床病历数据集,需从中提取匹配指定查找表的癌症诊断信息。病历示例(每行一个字符串,部分含多个诊断):

['Simple tubular carcinoma and solid carcinoma of the mammary gland', 'Sebaceous adenomas', 'Splenic haemangiosarcoma', 'mammary adenoma and mixed mammary carcinoma', 'Panniculitis']

使用的查找表:

['Solid carcinoma', 'tubular carcinoma', 'adenoma', 'hemangiosarcoma', 'mammary adenoma', 'mixed mammary carcinoma']

尝试的代码未成功提取匹配诊断,需要修正。

原代码问题分析
  1. 循环对象错误:for item in [Tumour_list]是将整个查找表作为单个元素循环,而非遍历表内的每个诊断项。
  2. 匹配逻辑错误:if item in Narratives_series是检查诊断项是否存在于整个Series中,而非当前处理的病历字符串里。
  3. 仅返回首个匹配:原函数找到第一个匹配项就返回,无法提取同一条病历中的多个诊断。
  4. 未处理拼写差异:病历中的haemangiosarcoma与查找表的hemangiosarcoma是同一术语的不同拼写,直接匹配会失败。
修正后的代码
import pandas as pd

# 修正后的病历数据集(补全原数据缺失的逗号)
Narratives_series = pd.Series([
    'Simple tubular carcinoma and solid carcinoma of the mammary gland',
    'Sebaceous adenomas',
    'Splenic haemangiosarcoma',
    'mammary adenoma and mixed mammary carcinoma',
    'Panniculitis'
])

# 修正后的查找表(补全原数据缺失的逗号)
Tumour_list = [
    'Solid carcinoma',
    'tubular carcinoma',
    'adenoma',
    'hemangiosarcoma',
    'mammary adenoma',
    'mixed mammary carcinoma'
]

def extract_diagnoses(x):
    matches = []
    # 遍历查找表的每个诊断项
    for item in Tumour_list:
        # 统一大小写+处理英式/美式拼写差异,避免因格式/拼写导致匹配失败
        cleaned_text = x.lower().replace('haem', 'hem')
        cleaned_item = item.lower().replace('haem', 'hem')
        if cleaned_item in cleaned_text:
            matches.append(item)
    # 有匹配返回列表,无匹配返回False(可根据需求改为空列表)
    return matches if matches else False

# 应用函数到每条病历
result = Narratives_series.apply(extract_diagnoses)
print(result)
运行结果
0    [tubular carcinoma, Solid carcinoma]
1                                      []
2                          [hemangiosarcoma]
3    [mammary adenoma, mixed mammary carcinoma]
4                                      False
dtype: object

内容的提问来源于stack exchange,提问作者JoseVet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:12:07