gpt4 book ai didi

r - 从向量中查找文本中的匹配单词

转载 作者:行者123 更新时间:2023-12-02 02:35:28 24 4
gpt4 key购买 nike

我得到了一个包含一组较短文本的数据框。我还有一个包含关键字列表的向量。我想添加一个新列,其中每个文本匹配的关键字都添加为新列中的值。

我添加代码来创建数据框的演示版本。

id <- c(1,2,4,5,6,7)
full_text <- c("I like banana", "I ate an apple", "I prefer bananas and apples", "Grapes", "My applepie is tasty", "Fruitsalad")

df <- data.frame(id = id,full_text = full_text)

这给出了以下数据框:

  id                   full_text
1 1 I like banana
2 2 I ate an apple
3 4 I prefer bananas and apples
4 5 Grapes
5 6 My applepie is tasty
6 7 Fruitsalad

然后我有一个包含一些单词的向量。见下文:

keywords <- c("banana", "apple", "grape")

实际上,我想识别在其 df$full_text 中具有一个或多个关键字的观察。如果 df$full_text 包含一个或多个单词,我想将这些关键字添加到名为 key_word 的新列中。这应该给出类似于下面的数据框:

  id                   full_text      key_word
1 1 I like banana banana
2 2 I ate an apple apple
3 4 I prefer bananas and apples banana, apple
4 5 Grapes grape
5 6 My applepie is tasty apple
6 7 Fruitsalad

我最初的策略是尝试将 ifelsegrepl 一起使用,但我无法让它工作。

最佳答案

使用stringrstr_replace_all你可以这样做:

df$keyword <- str_extract_all(tolower(df$full_text),paste(keywords,collapse  = "|")) %>%
lapply(.,function(x) paste(x,collapse = ", ")) %>%
unlist()

paste(keywords,collapse = "|") 是用正则表达式表达“找到我的向量的任何单词”:你使用 | 来表示或

paste(keywords,collapse  = "|")
[1] "banana|apple|grape"

str_extract_all 为您提供一个列表,其中包含为向量的每个条目找到的各种条目:

str_extract_all(tolower(df$full_text),paste(keywords,collapse  = "|"))
[[1]]
[1] "banana"

[[2]]
[1] "apple"

[[3]]
[1] "banana" "apple"

[[4]]
[1] "grape"

[[5]]
[1] "apple"

[[6]]
character(0)

因此,如果您使用 function(x) Paste(x,collapse = ", ") 将它们组合在一起并unlist 列表,您将获得您想要的内容。我添加了 tolower 因为你想用 grape

识别 Grape

关于r - 从向量中查找文本中的匹配单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64388370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com