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

如何在R语言中从文本中仅保留医学相关术语?

我已将一本医学词典下载至R环境中,代码如下:

url <- "https://archive.org/stream/azfamilymedicalencyclopedia/A-Z%20Family%20Medical%20Encyclopedia_djvu.txt"
destfile <- "A-Z_Family_Medical_Encyclopedia.txt" # 本地保存文件名

download.file(url, destfile)

file_content <- readLines(destfile, encoding = "UTF-8")

我想知道是否可以仅保留其中的医学相关术语,移除其他所有内容?
我了解如何去除停用词,示例代码如下:

library(tm)

all_text <- paste(file_content, collapse = " ")

words <- unlist(strsplit(all_text, "\\W+"))

filtered_words <- words[!tolower(words) %in% stopwords("en")]

filtered_text <- paste(filtered_words, collapse = " ")

但是否存在方法可以仅保留医学/健康领域的专业术语?

提取医学专业术语的R实现方案

当然可以,以下是几种适配你现有工作流程的实用方法:

方法一:基于医学术语词表的精准匹配

这种方法通过预先定义的医学术语词典筛选目标词汇,适配你已有的分词逻辑:

  • 先准备一份权威的医学术语词表(可从医学数据库导出,或使用公开的医学术语集合)
  • 将文本分词后,仅保留出现在词表中的词汇

示例代码:

library(tm)

# 示例医学术语词表(可自行扩展或导入外部词表文件)
medical_terms <- c("hypertension", "diabetes", "asthma", "arthritis", "cardiology", "neurology", "diagnosis", "treatment")

# 沿用你已有的文本处理步骤
all_text <- paste(file_content, collapse = " ")
words <- unlist(strsplit(all_text, "\\W+"))
words_lower <- tolower(words)

# 筛选仅匹配医学术语的词汇
medical_only_words <- words[words_lower %in% medical_terms]
medical_only_text <- paste(medical_only_words, collapse = " ")

方法二:用命名实体识别(NER)自动识别医学实体

通过自然语言处理工具自动识别文本中的医学实体(疾病、药物、症状、解剖结构等),适合大规模文本的自动化处理:
可以使用udpipe包加载医学专用语料模型,实现精准识别:

示例代码:

# 安装并加载所需包
install.packages("udpipe")
library(udpipe)

# 下载并加载英文医学领域的UD模型(若有更细分的模型可替换)
model <- udpipe_download_model(language = "en_ewt")
ud_model <- udpipe_load_model(model$file_model)

# 对文本进行实体标注
annotated_results <- udpipe_annotate(ud_model, x = all_text)
annotated_df <- as.data.frame(annotated_results)

# 筛选医学相关实体(根据模型标注的NER类型,可按需调整)
medical_entities <- annotated_df[annotated_df$ner %in% c("DISEASE", "MEDICATION", "SYMPTOM", "ANATOMICAL_STRUCTURE"), ]$token
# 去重并整理成文本
medical_entities_unique <- unique(medical_entities)
medical_only_text <- paste(medical_entities_unique, collapse = " ")

方法三:使用生物医学专用文本挖掘包

针对医学文本的特性,可以使用专门的R包直接提取术语,比如biotmle(针对生物医学文本挖掘)或pubmed.mineR(基于PubMed语料的术语提取),这类包内置了医学领域的规则和词表,准确率更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 14:53:15