如何在保持收缩的同时拆分R中的单词

How to split words in R while keeping contractions

我正在尝试将字符向量 novel.lower.mid 转换为单个单词的列表。到目前为止,这是我使用的代码:

midnight.words.l <- strsplit(novel.lower.mid, "\W")

这会生成所有单词的列表。然而,它分裂了一切,包括宫缩。单词 "can't" 变成 "can" 和 "t"。我如何确保这些词没有分开,或者函数只忽略撇号?

我们可以使用

library(stringr)
str_extract_all(novel.lower.mid,  "\b[[:alnum:]']+\b")

或者

 strsplit(novel.lower.mid, "(?!')\W", perl=TRUE)

如果您只想让当前的 "\W" 拆分不包含撇号,请否定 \w':

novel.lower.mid <- c("I won't eat", "green eggs and", "ham")
strsplit(novel.lower.mid, "[^\w']", perl=T)
# [[1]]
# [1] "I"     "won't" "eat"  
# 
# [[2]]
# [1] "green" "eggs"  "and"  
# 
# [[3]]
# [1] "ham"