gpt4 book ai didi

R:获取字符串中每个单词排列的内存高效方法

转载 作者:行者123 更新时间:2023-12-05 00:45:49 26 4
gpt4 key购买 nike

我有一个包含单词列表的字符串,我想从中获取所有可能的单词组合。

fruits <- "Apple Banana Cherry"

要获得此输出:
"Apple, Banana, Cherry, Apple Banana, Apple Cherry, Banana Cherry, Apple Banana Cherry"

使用定义的函数 here ,稍作修改:
f1 <- function(str1){
v1 <- strsplit(str1, ' ')[[1]]
paste(unlist(sapply(seq(length(v1)), function(i)
apply(combn(v1, i), 2, paste, collapse=" "))), collapse= ', ')
}

f1(fruits)

当行相对较少时,这可以正常工作,但实际示例在 3,350 行中总共有 93,300 个字符,字符串长度中位数为 25 个字符,导致类似于 this: 的错误。

Error in paste(unlist(sapply(seq(length(v1)), function(i) apply(combn(v1, : result would exceed 2^31-1 bytes



我尝试更改 utils::combnRcppAlgos::comboGeneral在函数中,因为它显然是 quicker ,但还是遇到了同样的问题。有关解决此问题的方法的任何建议?

最佳答案

我们在 中有一个非常有效的矢量化跳跃图和 ngram 函数。量子达 .试试这个,多线程以提高效率(您可以将线程更改为系统的最大值):

library("quanteda")
## Package version: 1.4.3
## Parallel computing: 2 of 12 threads used.
## See https://quanteda.io for tutorials and examples.
##
## Attaching package: 'quanteda'
## The following object is masked from 'package:utils':
##
## View
quanteda_options(threads = 4)

fruits <- "Apple Banana Cherry"
tokens(fruits) %>%
tokens_skipgrams(., n = seq_len(ntoken(.)), skip = 0:ntoken(.), concatenator = " ") %>%
as.character() %>%
paste(collapse = ", ")
## [1] "Apple, Banana, Cherry, Apple Banana, Apple Cherry, Banana Cherry, Apple Banana Cherry"

关于R:获取字符串中每个单词排列的内存高效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55502572/

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