r - 用 R 中的一个唯一单词替换单词列表
问题描述
我正在使用 R 进行文本分析,并拥有一个数据集(文本语料库),其中包含有关不同水果的各种句子。例如:“苹果”、“香蕉”、“橙子”、“梨子”等。
由于某人写的是“苹果”还是“香蕉”与分析无关,我想用一个特定的词替换所有不同的水果,例如“ allfruits ”。
我考虑过使用正则表达式,但我面临两个问题;
1)我想避免每种水果都有单独的代码行。因此,有没有办法定义我可以使用的列表或向量,以便该函数用一个特定的单词“ allfruits ”替换该列表中的所有单词(苹果、香蕉、梨等)?
2) 我想避免那些不是水果但包含与水果相同的字符串的单词(例如单词“appletini”)被函数替换。
示例:如果我有一句话说:“ Apple是我最喜欢的水果,appletini是我最喜欢的饮料。我也喜欢香蕉! ”我想发生以下情况:allfruits是我最喜欢的水果,appletini 是我最喜欢的饮料。我也喜欢所有水果!
我不确定是否可以使用 gsub 函数来编写它。因此,非常感谢所有帮助。
谢谢!
解决方案
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)
退货
[1] "allfruits is my favourite fruit, appletini is my favourite drink. I also like allfruits!"
正则表达式:
\\b
- 词界(", paste0(allfruits, collapse="|"), ")
- 所有水果名称由|
(或)分隔s?
- 可选字母's'\\b
- 词界ignore.case = TRUE
- 忽略大小写
推荐阅读
- apt - 如何在我的系统中找出默认的包管理器?
- python - 在主窗口中显示文件的内容
- elasticsearch - 如何在 Elasticsearch 查询中优先考虑文档
- xsd - XML 的向量限制
- nativescript - 如何知道事件是否在 Nativescript Vue 中停止?
- python - 如何在没有活动登录用户会话的情况下在 IE 11 上运行 Selenium 测试自动化
- go - Helm go sdk 从外部位置安装图表
- spring-boot - Keycloak (OAuth2 IdP) - 对 Spring 引导应用程序中的第一个用户访问做出反应
- javascript - 如何检查不可变映射的所有键是否都有值
- postgresql - 更新 Postgres 中作为主键的部分(订单号)