用 R 中的一个唯一单词替换单词列表
Replace a list of words with one unique word in R
我正在使用 R 进行文本分析,并且有一个数据集(文本语料库),其中包含关于不同水果的各种句子。例如:“apple”、“banana”、“orange”、“梨”,等等
由于某人写的是 "apples" 还是 "bananas" 与分析无关,我想用一个特定的词替换所有不同的水果,例如“allfruits ".
我考虑过使用正则表达式,但我面临两个问题;
1) 我想避免为每种水果使用单独的代码行。因此,有没有一种方法可以定义我可以使用的列表或向量,以便该函数用一个特定的词替换该列表(苹果、香蕉、梨等)中的 所有单词单词“allfruits”?
2) 我想避免 不是 水果但包含与水果相同的字符串的单词(例如单词“appletini”)被函数替换。
示例:
如果我有一句话说:“Apple是我最喜欢的水果,appletini是我最喜欢的饮料。我也喜欢香蕉!"
我希望发生以下情况:allfruits 是我最喜欢的水果,appletini 是我最喜欢的饮料。我也喜欢allfruits!
我不确定是否可以使用 gsub 函数来编写它。因此,非常感谢所有帮助。
谢谢!
str <- "Apple is my favourite fruit, appletini is my favourite drink. I also like bananas!"
gsub("(\bapples?\b)|(\bbananas?\b)", "allfruits", str, ignore.case = T)
\b
表示boundary,也就是一个单词的结尾(标点符号,space,后面什么都没有...)
|
表示 或
()
定义了一个组
s?
表示如果可能 s
allfruits
可以扩展为包含任何要替换的词:
allfruits = c("apple", "banana" , "orange", "pear")
replacement = "allfruits"
text = "Apple is my favourite fruit, appletini is my favourite drink. I also like bananas!"
gsub(paste0("\b(", paste0(allfruits, collapse="|"), ")[s]?\b"), replacement, text, ignore.case = TRUE)
Returns
[1] "allfruits is my favourite fruit, appletini is my favourite drink. I also like allfruits!"
正则表达式:
\b
- wordboundary
(", paste0(allfruits, collapse="|"), ")
- 所有水果名称由 |
(或) 分隔
s?
- 可选字母 's'
\b
- wordboundary
ignore.case = TRUE
- 忽略大小写
我正在使用 R 进行文本分析,并且有一个数据集(文本语料库),其中包含关于不同水果的各种句子。例如:“apple”、“banana”、“orange”、“梨”,等等
由于某人写的是 "apples" 还是 "bananas" 与分析无关,我想用一个特定的词替换所有不同的水果,例如“allfruits ".
我考虑过使用正则表达式,但我面临两个问题;
1) 我想避免为每种水果使用单独的代码行。因此,有没有一种方法可以定义我可以使用的列表或向量,以便该函数用一个特定的词替换该列表(苹果、香蕉、梨等)中的 所有单词单词“allfruits”?
2) 我想避免 不是 水果但包含与水果相同的字符串的单词(例如单词“appletini”)被函数替换。
示例: 如果我有一句话说:“Apple是我最喜欢的水果,appletini是我最喜欢的饮料。我也喜欢香蕉!" 我希望发生以下情况:allfruits 是我最喜欢的水果,appletini 是我最喜欢的饮料。我也喜欢allfruits!
我不确定是否可以使用 gsub 函数来编写它。因此,非常感谢所有帮助。
谢谢!
str <- "Apple is my favourite fruit, appletini is my favourite drink. I also like bananas!"
gsub("(\bapples?\b)|(\bbananas?\b)", "allfruits", str, ignore.case = T)
\b
表示boundary,也就是一个单词的结尾(标点符号,space,后面什么都没有...)|
表示 或()
定义了一个组s?
表示如果可能s
allfruits
可以扩展为包含任何要替换的词:
allfruits = c("apple", "banana" , "orange", "pear")
replacement = "allfruits"
text = "Apple is my favourite fruit, appletini is my favourite drink. I also like bananas!"
gsub(paste0("\b(", paste0(allfruits, collapse="|"), ")[s]?\b"), replacement, text, ignore.case = TRUE)
Returns
[1] "allfruits is my favourite fruit, appletini is my favourite drink. I also like allfruits!"
正则表达式:
\b
- wordboundary(", paste0(allfruits, collapse="|"), ")
- 所有水果名称由|
(或) 分隔
s?
- 可选字母 's'\b
- wordboundaryignore.case = TRUE
- 忽略大小写