在R中使用udipipe包时出现对象未找到错误的技术求助
问题原因
- 数据框
x中不存在language列,导致执行subset(x, language %in% "english")时触发“对象未找到”错误 upos是udpipe对文本完成词性标注后才会生成的列,你跳过了标注步骤直接调用该列,自然找不到对应的对象
修正方案及代码
1. 处理语言筛选问题
先确认你的Text.csv是否包含language列:
- 如果已有该列,直接执行筛选即可;
- 如果没有,用udpipe自带的语言检测功能为数据添加语言标签:
x <- read.csv("Text.csv", header = TRUE) library(udpipe) library(textrank) # 检测文本语言并添加到数据框 if(!"language" %in% colnames(x)){ x$language <- udpipe_langdetect(x$text)$lang } # 筛选英文文本 comments <- subset(x, language == "english")
2. 执行udpipe词性标注以获取upos列
upos是通用词性标注结果,必须先加载对应语言的udpipe模型并完成文本标注才能得到:
# 下载并加载英文udpipe模型(首次运行会自动下载模型文件) english_model <- udpipe_download_model(language = "english") english_model <- udpipe_load_model(english_model$file_model) # 对筛选出的英文文本进行全标注 annotated_data <- udpipe_annotate(english_model, x = comments$text) annotated_data <- as.data.frame(annotated_data) # 筛选名词类型的标注结果 stats <- subset(annotated_data, upos %in% c("NOUN"))
内容的提问来源于stack exchange,提问作者Manish Mukherjee
相关产品推荐
相关产品推荐

