我正在使用R进行文本分析。是否有一种方法可以使用 tm
或 stringi
移除所有非大写字母的单词呢?
如果我有这样的内容:
Albert Einstein went to the store and saw his friend Nikola Tesla ... + 200 pags
转换为
Albert Einstein Nikola Tesla
最好的问候
gsub("\\b[a-z]+\\s+", "", x)
# [1] "Albert Einstein Nikola Tesla"
这只是在查找单词边界 > 小写字母 > 它后面的所有字母 > 它后面的所有空格并将其删除。
虽然在某些情况下,您可能会遇到像don't
这样的单词,需要使用稍微复杂一点的正则表达式。例如:
x <- "if Albert Einstein didn't see his friend Nikola Tesla leavin'"
gsub("\\b[a-z][^ ]*(\\s+)?", "", x)
# [1] "Albert Einstein Nikola Tesla "
只需使用grep
和正则表达式:
words <- 'Albert Einstein went to the store and saw his friend Nikola Tesla'
# split to vector of individual words
vec <- unlist(strsplit(words, ' '))
# just the capitalized ones
caps <- grep('^[A-Z]', vec, value = T)
# assemble back to a single string, if you want
paste(caps, collapse=' ')
(\\s+)?
也被称为\\s*
:) 多余的空格很烦人 - 如果不想把正则表达式搞得一团糟,就不太明显该如何修复。 - eddi