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

如何按POT分组从医学文本段落中提取指定术语?

解决方案:按POT分组提取指定医学术语到新列

先构造一份可复现的示例数据,方便你对照调试:

library(dplyr)
library(stringr)

# 模拟含POT分组和医学描述的数据集
df <- tibble(
  POT_group = c("POT1", "POT1", "POT2", "POT2", "POT3"),
  description = c(
    "Examination of stomach and antrum shows mild inflammation",
    "Incisura appears normal; stomach mucosa intact",
    "Antrum has ulcerative changes; no issues in incisura",
    "Stomach distended, antrum hyperemic",
    "Incisura with scarring, stomach wall thickened"
  )
)

核心处理步骤

先定义要提取的目标术语,再结合dplyr的分组聚合功能,把每个POT分组下的术语整理到新列:

# 目标术语集合
target_terms <- c("stomach", "antrum", "incisura")

# 提取+分组聚合流程
result_df <- df %>%
  # 从每行描述中提取所有目标术语,生成列表列
  mutate(extracted_terms = str_extract_all(description, regex(paste(target_terms, collapse = "|"), ignore_case = TRUE))) %>%
  # 按POT分组,合并组内所有术语、去重、统一大小写
  group_by(POT_group) %>%
  summarise(
    # 两种输出格式二选一:
    # 1. 保留为列表格式(适合后续进一步处理)
    grouped_terms = list(unique(tolower(unlist(extracted_terms)))),
    # 2. 转为逗号分隔的字符串(适合直接查看)
    # grouped_terms = str_c(unique(tolower(unlist(extracted_terms))), collapse = ", ")
  ) %>%
  ungroup()

关联回原数据(可选)

如果需要让原数据的每一行都带上所属POT分组的术语集合,用left_join关联即可:

final_df <- df %>%
  left_join(result_df, by = "POT_group")

关键说明

  • 用regex(..., ignore_case = TRUE)确保不区分术语大小写(比如提取"Stomach"和"stomach"都算同一个);
  • tolower统一术语格式,避免大小写差异导致的重复项;
  • unique自动去除同一分组内重复出现的术语,保证结果简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:17:11