You need to enable JavaScript to run this app. 如何用Quanteda识别并剔除含中文内容的数据集行
优惠活动
大模型
产品
解决方案
定价
更多

如何用Quanteda识别并剔除含中文内容的数据集行

问题解答

完全可以通过Quanteda实现该需求,25万条观测的量级处理速度足够,以下是可直接复用的实现方案:


核心实现逻辑

利用Unicode字符属性\p{Han}匹配所有中文汉字(含简繁体),匹配准确率远高于手动指定字符区间,不会出现漏判、误判问题。Quanteda默认依赖的stringi包原生支持该类Unicode匹配,无需额外安装依赖。


可运行代码

library(quanteda)

# 构造示例数据集(你实际使用时替换为自己的数据集即可)
call_id<- c("001","002","003","004","005","012","024")
transcript <- c("All the best and happy birthday",
                "万事如意,生日快乐",
                "See you tomorrow",
                "Nice hearing from you",
                "再相见",
                "玩",
                "恭喜你 ")
df <- as.data.frame(cbind(call_id, transcript))

# 1. 检测transcript列是否包含中文
has_chinese <- stri_detect_regex(df$transcript, "[\\p{Han}]")

# 2. 获取含中文观测的call_id
chinese_call_ids <- df$call_id[has_chinese]

# 3. 剔除含中文的行,得到仅含英文的数据集
df_filtered <- df[!has_chinese, ]

如果你不需要调用Quanteda的其他功能,也可以用base R的正则实现,逻辑完全一致:

has_chinese <- grepl("[\\p{Han}]", df$transcript, perl = TRUE)
df_filtered <- df[!has_chinese, ]

效果验证

用示例数据运行后,输出的df_filtered会保留call_id为001、003、004的3条纯英文观测,其余含中文的条目都会被剔除,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 22:45:03