我有一个很大的文本正文,我想有效地用它们各自的同义词替换单词(例如用同义词“car”替换所有出现的“automobile”)。但我很难找到一种合适的(有效的方法)来做到这一点。
对于以后的分析,我使用该text2vec
库并希望将该库用于此任务(避免tm
减少依赖关系)。
一种(低效)方式如下所示:
# setup data
text <- c("my automobile is quite nice", "I like my car")
syns <- list(
list(term = "happy_emotion", syns = c("nice", "like")),
list(term = "car", syns = c("automobile"))
)
我的蛮力解决方案是有这样的东西并使用循环来查找单词并替换它们
library(stringr)
# works but is probably not the best...
text_res <- text
for (syn in syns) {
regex <- paste(syn$syns, collapse = "|")
text_res <- str_replace_all(text_res, pattern = regex, replacement = syn$term)
}
# which gives me what I want
text_res
# [1] "my car is quite happy_emotion" "I happy_emotion my car"
我曾经使用MrFlick 的tm
这种方法(使用and )来做到这一点,但我想通过替换更快的.tm::content_transformer
tm::tm_map
tm
text2vec
我想最佳解决方案是以某种方式使用text2vec
s itoken
,但我不确定如何使用。有任何想法吗?