quanteda实操:基于标题列关键词筛选语料库子集的解决方案
解决方案
错误根因
你遇到的无法找到titre对象报错,本质是构建语料库时没有将原数据的titre列保留为语料库的文档变量(docvars):如果你仅将文本列的向量传入corpus()函数,语料库不会携带原数据的其他字段,corpus_subset自然无法检索到titre。
步骤1:正确构建带完整元数据的语料库
将整个数据框传入corpus(),仅通过text_field参数指定文本列,原数据的其他列会自动保留为语料库的文档变量:
library(quanteda) library(stringr) # 传入完整数据框,指定Texte为文本列,其他列自动存为docvars text_corp <- corpus(lemma_data_2008, text_field = "Texte") # 可执行以下代码验证titre是否在文档变量中 head(docvars(text_corp))
步骤2:按标题关键词筛选语料
用正则匹配实现忽略大小写、覆盖复数形式的关键词校验,再通过corpus_subset完成筛选:
# 定义匹配规则:词边界匹配,支持单数/复数,忽略大小写 keyword_pattern <- "\\b(migrant|réfugié|asile|migratoire)s?\\b" # 筛选标题匹配关键词的语料 filtered_corp <- corpus_subset(text_corp, str_detect(titre, regex(keyword_pattern, ignore_case = TRUE)))
步骤3:执行后续预处理流程
对筛选后的语料直接执行分词、去停用词、构建dfm、修剪等操作即可:
# 分词,同时移除标点、数字、特殊符号 toks <- tokens(filtered_corp, remove_punct = TRUE, remove_numbers = TRUE, remove_symbols = TRUE) # 移除法语停用词 toks_nostop <- tokens_remove(toks, stopwords(language = "french")) # 构建dfm dfm_raw <- dfm(toks_nostop) # 修剪dfm(示例为保留至少在3篇文档中出现的特征,可按需调整参数) dfm_trimmed <- dfm_trim(dfm_raw, min_docfreq = 3)
内容的提问来源于stack exchange,提问作者Michelle Reddy
相关产品推荐
相关产品推荐

