用R中的一个唯一单词替换单词列表

问题描述 投票:0回答:1

我正在使用R进行文本分析,并且拥有一个数据集(文本语料库),该数据集包含有关不同水果的各种句子。例如:“ 苹果”,“ 香蕉”,“ 橙色”,“ ”,等等

由于分析与某人写的是“苹果”还是“香蕉”无关,所以我想用一个特定的单词替换所有不同的水果,例如“ allfruits”。]]

我曾考虑过使用正则表达式,但面临两个问题;

1)我想避免每种水果使用单独的代码行。因此,有一种方法可以定义我可以使用的列表或向量,以便该函数用一个特定的单词“ allfruits]替换该列表(苹果,香蕉,梨等)中的所有单词

。 >”?

2)我想避免NOT水果但包含与水果相同的字符串的单词(例如单词“ appletini”)被该函数替换。

示例:如果我有一句话说:“ Apple

是我最喜欢的水果,appletini是我最喜欢的饮料。我也喜欢bananas>”!”我想发生以下情况:allfruits是我最喜欢的水果,appletini是我最喜欢的饮料。我也喜欢allfruits

我不确定是否可以使用gsub函数编写此代码。因此,非常感谢所有帮助。

谢谢!

我正在使用R进行文本分析,并且拥有一个数据集(文本语料库),该数据集包含有关不同水果的各种句子。例如:“苹果”,“香蕉”,“橙色”,“梨”等。因为它不是...

str <- "Apple is my favourite fruit, appletini is my favourite drink. I also like bananas!"
gsub("(\\bapple\\b)|(\\bbananas\\b)", "allfruits", str, ignore.case = T)
  • \\b的意思是boundary,即单词的结尾(标点,空格,...之后没有任何内容)
  • |表示OR
  • ()定义一个group
  • 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-忽略cas
    r regex nlp data-cleaning topic-modeling
    1个回答
    0
    投票
    str <- "Apple is my favourite fruit, appletini is my favourite drink. I also like bananas!"
    gsub("(\\bapple\\b)|(\\bbananas\\b)", "allfruits", str, ignore.case = T)
    

    0
    投票

    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)
    
    © www.soinside.com 2019 - 2024. All rights reserved.