我知道关于局部匹配有很多问题,我已经读了很多,但是我仍然没有设法使用R提取我需要的东西。
简而言之,我的问题是我有一个超过一百万行的西班牙语三元组的数据集,我只想查找那些有动词的数据集。为了简化操作,我添加了一行西班牙语最常见的500个动词,以尝试将它们与三字母组匹配。
我有一个这样的数据集:
data <- data_frame(trigrams= c("no veo que", "no me gusta", "si habla de", "la mesa de", "el caso que"), fequency=c(112, 345, 578), verb=c("hablar", "gustar", "leer"))
第三列中的动词(“动词”)是不定式,我想将它们与第一列中的动词(“ trigram”)进行部分匹配。我认为,在这种情况下,能够使用for循环来迭代要部分匹配超过一百万个三字组的500个动词是理想的。
所以在这种情况下: “ gustar”应部分匹配“ no me gusta”,没有任何内容应匹配“ el caso que”之类的无动词卦。
我真的希望这是有道理的,我以前从未使用过如此大量的数据,而且对于正则表达式我还太陌生,无法自己真正解决这个问题。
答案 0 :(得分:0)
我认为这种使用stringr
的方法可能会对您有所帮助。您可能必须进行一些修改才能在dataframe
中使用它。基本上,我们必须将每个动词(例如“ hablar”)转换为诸如'hablar*'
之类的模式,然后执行str_extract()
-
library(dplyr)
library(stringr)
trigrams <- c("no veo que", "no me gusta", "si habla de", "la mesa de", "el caso que")
verb <- c("hablar", "gustar", "leer")
# loop through verbs for each verb compare all possible matches in the trigrams vector
# convert the nested list into a vector
result <- lapply(paste(verb,"*", sep = ""),str_extract, string = trigrams) %>%
unlist(.)
# filter out na values
result <- result[!is.na(result)]
result
#> [1] "habla" "gusta"
由reprex程序包(v0.2.0)于2018-09-16创建。