如何在DataFrame中为每条推文创建tokens列?已尝试转为tibble
给DataFrame添加分词列的实现方法
以下是几种简洁的实现方式,适用于在已有DataFrame中新增tokens列存储每行推文的分词结果:
方法1:使用tokenizers包(推荐,处理更专业)
先加载依赖包,直接通过tokenize_words生成分词列表列:
library(tokenizers) library(dplyr) # 假设你的数据框名为tweets_df,推文内容列名为text tweets_df <- tweets_df %>% mutate(tokens = tokenize_words(text))
该方法会自动处理小写转换、标点移除,还可通过stopwords参数过滤停用词,比如:
# 过滤英文停用词 tweets_df <- tweets_df %>% mutate(tokens = tokenize_words(text, stopwords = stopwords("en")))
方法2:使用tidytext + purrr
如果习惯用tidytext生态,可结合map函数生成每行的分词列表:
library(tidytext) library(dplyr) library(purrr) tweets_df <- tweets_df %>% mutate(tokens = map(text, ~ { unnest_tokens(tibble(content = .x), word) %>% pull(word) }))
方法3:基础R实现(无需额外包)
用基础函数手动处理分词,适合快速验证:
# 先统一转小写,移除标点,再按空格分词 tweets_df$tokens <- lapply(tolower(tweets_df$text), function(x) { cleaned_text <- gsub("[^a-z0-9\\s]", "", x) strsplit(cleaned_text, "\\s+")[[1]] })
注意:如果之前尝试转tibble时出现异常,大概率是误用了unnest_tokens直接展开行(该函数会把分词拆成多行),而上述方法都是保留每行的分词列表,符合你要在原数据框新增列的需求。
内容的提问来源于stack exchange,提问作者jms206
相关产品推荐
相关产品推荐

