R语言中如何将长字符串分割为连续双词短语?
生成连续双词短语的R实现方法
基础R解决方案(无需额外包)
针对你的需求,不用str_split,可以通过拆分单词向量后滑动拼接的方式实现:
string <- "A B C D E F" # 将字符串拆分为单个单词的向量 words_vector <- unlist(strsplit(string, " ")) # 生成连续双词组合 bigrams <- paste(words_vector[-length(words_vector)], words_vector[-1], sep = " ") # 输出结果 bigrams
运行后会得到:
[1] "A B" "B C" "C D" "D E" "E F"
代码说明
strsplit(string, " ")按空格拆分字符串,得到一个列表,unlist()把它转为便于操作的向量。words_vector[-length(words_vector)]取向量中除最后一个元素外的所有单词,words_vector[-1]取除第一个元素外的所有单词,两者位置一一对应,用paste()拼接就生成了连续的双词短语。
用tidytext包实现(适合文本分析场景)
如果后续需要做更多文本分析工作,推荐用tidytext包的unnest_tokens函数,专门处理n元短语:
library(tidytext) library(dplyr) # 构造数据框并提取双词短语 tibble(text = string) %>% unnest_tokens(bigram, text, token = "ngrams", n = 2) %>% pull(bigram)
这段代码同样会输出你需要的连续双词短语,且能无缝衔接tidyverse生态的后续分析操作。
内容的提问来源于stack exchange,提问作者swediot
相关产品推荐
相关产品推荐

