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

如何用NLP(NLTK)识别Python DataFrame中的诊断短语组合?

找出最常见的诊断组合解决方案

你不需要用NLTK这类NLP库,因为这本质是结构化数据的组合统计问题,用Python标准库就能高效解决。以下是具体实现步骤:

步骤1:数据预处理(恢复患者-诊断集合)

首先把explode后的表格重新按患者ID分组,去重后得到每个患者的诊断集合(避免同一患者的重复诊断干扰统计):

import pandas as pd
import numpy as np
from itertools import combinations
from collections import Counter

# 生成示例数据(和你提供的一致)
ids = ['id1', 'id2', 'id3','id4','id5'] 
diagnosis = ["Broken Wind","Chronic Nosehair","Corrugated Ankles","Discrete Itching"]
df = pd.DataFrame({'id': ids})
df['diagnosis'] = df['id'].apply(lambda x: np.random.choice(diagnosis, 5).tolist())
df_exploded = df.explode('diagnosis')

# 按ID分组,去重后得到每个患者的诊断集合
patient_diagnoses = df_exploded.groupby('id')['diagnosis'].unique().apply(set).tolist()

步骤2:生成并统计诊断组合

根据需求生成指定长度的组合(比如2元、3元,或所有≥2元的组合),再统计每个组合的出现次数:

示例1:统计所有2元诊断组合

all_2combos = []
for diag_set in patient_diagnoses:
    # 只处理有至少2种诊断的患者
    if len(diag_set) >= 2:
        # 排序后生成组合,确保(A,B)和(B,A)被算作同一组合
        combos = combinations(sorted(diag_set), 2)
        all_2combos.extend(combos)

# 统计频率并降序排序
combo_counts = Counter(all_2combos)
sorted_2combos = sorted(combo_counts.items(), key=lambda x: x[1], reverse=True)

# 输出前5个最常见的组合
print("Top 5 二元诊断组合:")
for combo, count in sorted_2combos[:5]:
    print(f"{', '.join(combo)}: {count} 次")

示例2:统计所有≥2元的诊断组合

如果需要同时查看2元、3元甚至更多元的组合,可调整代码:

all_combos = []
min_length = 2  # 最小组合长度
for diag_set in patient_diagnoses:
    diag_list = sorted(diag_set)
    n = len(diag_list)
    if n >= min_length:
        # 生成从min_length到n的所有长度的组合
        for length in range(min_length, n+1):
            combos = combinations(diag_list, length)
            all_combos.extend(combos)

# 统计并排序
combo_counts = Counter(all_combos)
sorted_combos = sorted(combo_counts.items(), key=lambda x: x[1], reverse=True)

# 输出前10个结果
print("Top 10 诊断组合:")
for combo, count in sorted_combos[:10]:
    print(f"组合({', '.join(combo)}):出现 {count} 次")

关键注意事项

  • 去重处理:必须对每个患者的诊断去重,避免同一患者的重复诊断导致组合统计失真
  • 组合一致性:生成组合前对诊断排序,确保不同顺序的同一组合被归为一类
  • 灵活调整:可根据业务需求修改min_length参数,或指定固定的组合长度(如只统计3元组合)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:46:32