gpt4 book ai didi

从数据框中删除停用词

转载 作者:行者123 更新时间:2023-12-05 08:55:03 25 4
gpt4 key购买 nike

我的数据已经在一个数据框中,每行一个标记。我想过滤掉包含停用词的行。

数据框看起来像:

docID <- c(1,2,2)
token <- c('the', 'cat', 'sat')
count <- c(10,20,30)
df <- data.frame(docID, token, count)

我试过以下方法,但出现错误:

library(tidyverse)
library(tidytext)
library(topicmodels)
library(stringr)
data('stop_words')
clean_df <- df %>%
anti_join(stop_words, by=df$token)

错误:

Error: `by` can't contain join column `the`, `cat`, `sat` which is missing from LHS

我该如何解决?

最佳答案

当您设置anti_join() 时,您需要在左侧和右侧说明列名是什么。在 tidytext 的 stop_words 数据对象中,该列称为 word,在您的数据框中,它称为 token

library(tidyverse)
library(tidytext)

docID <- c(1, 2, 2, 2, 3)
token <- c("the", "cat", "sat", "on-the-mat", "with3hats")
count <- c(10, 20, 30, 10, 20)
df <- data_frame(docID, token, count)


clean_df <- df %>%
anti_join(stop_words, by= c("token" = "word"))

clean_df
#> # A tibble: 4 x 3
#> docID token count
#> <dbl> <chr> <dbl>
#> 1 2.00 cat 20.0
#> 2 2.00 sat 30.0
#> 3 2.00 on-the-mat 10.0
#> 4 3.00 with3hats 20.0

请注意,“the”现在消失了,因为它在 stop_words 数据集中。

在评论中,您询问了有关删除包含标点符号或数字的标记的问题。为此,我会使用 filter()(如果愿意,您实际上也可以使用 filter() 来删除停用词。)

clean_df <- df %>%
filter(!str_detect(token, "[:punct:]|[:digit:]"))

clean_df
#> # A tibble: 3 x 3
#> docID token count
#> <dbl> <chr> <dbl>
#> 1 1.00 the 10.0
#> 2 2.00 cat 20.0
#> 3 2.00 sat 30.0

如果您想同时执行这两项操作,请使用管道构建包含两条线的对象。

关于从数据框中删除停用词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47336224/

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