使用tidytext对texto_revision.txt分词时遇check_input错误求助
解决tidytext::unnest_tokens()的输入错误问题
这个错误我之前也碰到过,核心问题是unnest_tokens()对输入列的格式有严格要求——它需要你传入的是单个字符向量(每个单元格是一个独立的字符串),而你的text列显然不符合这个标准。下面一步步帮你排查解决:
第一步:先确认目标列的结构
首先得搞清楚你的text列到底是什么类型,是不是因子、列表或者其他非标准字符类型。运行下面的代码查看数据结构:
# 用base R查看整体结构 str(texto_revision) # 或者用dplyr的glimpse更清晰 library(dplyr) glimpse(texto_revision)
重点看text列的标注:
- 如果显示
Factor:说明列是因子类型,需要转成字符 - 如果显示
List:说明每个单元格是字符向量(不是单个字符串),需要先处理 - 如果是其他非字符类型:也要先转成字符
第二步:针对不同情况处理
情况1:text列是因子类型
因子类型会被unnest_tokens()判定为非有效输入,先转成字符型再分词:
texto_revision <- texto_revision %>% mutate(text = as.character(text)) # 再尝试分词 texto_revision %>% unnest_tokens(word, text)
情况2:text列是列表列(每个单元格是多元素字符向量)
比如你的text列每个单元格是c("这是", "一段", "文本")这种形式,需要先把每个列表元素合并成单个字符串,或者先展开列表:
方法A:合并成单个字符串再分词
texto_revision <- texto_revision %>% mutate(text = sapply(text, paste, collapse = " ")) %>% unnest_tokens(word, text)
方法B:先展开列表再分词
texto_revision %>% unnest(text) %>% # 先把列表列展开成单行一个字符串 unnest_tokens(word, text)
情况3:列名指定错误
有时候可能你要处理的字符列不叫text,比如实际列名是contenido或者review_text,那要替换成正确的列名:
# 把content替换成你实际的字符列名 texto_revision %>% unnest_tokens(word, content)
最后再验证
处理完之后,你可以用class(texto_revision$text)确认列类型是character,再运行分词代码应该就没问题了。
内容的提问来源于stack exchange,提问作者Samir Ricardo Neme Chaves
相关产品推荐
相关产品推荐

