Quanteda基于corpus识别搭配后无法正常词形还原问题咨询
问题根源
操作顺序逻辑错误:调用tokens_compound()后,missing和data已经被合并为单个独立token missing data,后续的tokens_replace()仅支持匹配完整的单个token,无法识别单个token内部的拆分词汇,因此针对单个词的词形还原规则完全失效。
解决方案
你可以继续保留「使用corpus生成搭配」的最优实践,仅调整词形还原与搭配合并的执行顺序,同步对搭配表做词形映射即可:
library(dplyr) library(tibble) library(quanteda) library(quanteda.textstats) # 示例数据与词形映射表(原代码不变) df= c("this column has a lot of missing data, 50% almost!", "I am interested in missing data problems", "missing data is a headache", "how do you handle missing data?") lemmas <- data.frame() %>% rbind(c("missing", "miss")) %>% rbind(c("data", "datum")) %>% `colnames<-`(c("inflected_form", "lemma")) # 步骤1:使用corpus生成搭配(原代码不变,符合官方建议) txtCorpus = corpus(df) docvars(txtCorpus)$text <- as.character(txtCorpus) myPhrases = textstat_collocations(txtCorpus, tolower = FALSE) # 新增:将识别到的搭配转换为词形还原后的匹配pattern collocation_lemma_pattern <- lapply(myPhrases$collocation, function(coll) { # 拆分搭配为单个词汇 single_words <- tokens(coll, remove_punct = T) %>% as.character() %>% tolower() # 逐个映射词形 lemma_words <- lemmas$lemma[match(single_words, lemmas$inflected_form)] lemma_words[is.na(lemma_words)] <- single_words[is.na(lemma_words)] # 转为phrase格式供匹配使用 phrase(paste(lemma_words, collapse = " ")) }) %>% unlist() %>% as.phrases() # 步骤2:调整顺序,先词形还原再合并搭配 txtTokens = tokens(txtCorpus, remove_numbers = TRUE, remove_punct = TRUE, remove_symbols = TRUE, remove_separators = TRUE) %>% tokens_tolower() %>% # 先执行单个词的词形还原 tokens_replace(pattern = lemmas$inflected_form, replacement = lemmas$lemma) %>% # 再用词形还原后的搭配pattern合并短语 tokens_compound(pattern = collocation_lemma_pattern, concatenator = " ") # 步骤3:测试结果(原代码不变) dtm = dfm(txtTokens, remove_padding = TRUE) dfm_feat = as.data.frame(featfreq(dtm)) %>% rownames_to_column(var="feature") %>% `colnames<-`(c("feature", "count")) dfm_feat
运行后你会看到特征表中miss datum的计数为4,符合预期效果。
简化备选方案
如果你的搭配数量较少,也可以直接对合并后的短语token做批量替换,无需调整原有流程顺序:
# 原有流程合并搭配后新增替换规则即可 txtTokens <- tokens_replace(txtTokens, pattern = "missing data", replacement = "miss datum")
内容的提问来源于stack exchange,提问作者Cola4ever
相关产品推荐
相关产品推荐

