当我进行文本分析时,我经常想要知道大量文档中是否包含一组字符串中的任何元素。如果我有数百万个文档(例如推文)和一个长列表的模式,则可能需要很长时间。
我通常使用以下软件包来优化速度:
我通常使用以下软件包来优化速度:
data.table
dtplyr
stringr
有哪些最佳实践可用于优化字符串检测和分析?是否有软件包可以让我优化此类代码?library(data.table)
library(dtplyr)
library(stringr)
my_dt <- data.table(text = c("this is some text", "this is some more text")) #imagine many more strings
my_string <- paste(words, collapse = "|")
lazy_dt(my_dt, immutable = F) %>%
filter(filtered_text = str_detect(text, my_string)) %>%
as.data.table()
我认为直接使用data.table而不是dtplyr实现会提高速度。还有其他方式可以改进这种应用程序的性能吗?
我看了这个问题,希望我能得到一些类似的指导。希望现在问题已经足够具体了。
str_detect(text, my_string)
是您代码的瓶颈。使用纯 data.table / stringi 只会稍微提高速度。一旦问题重新开放,我将发布一个比使用 data.table 更快的答案。在 30000 条记录上,与原始代码相比,我可以获得大约 8 倍的速度提升。 - phiver