r语言 - 在三元组列表中查找动词(部分匹配?



我知道有很多关于部分匹配的问题,我已经阅读了尽可能多的内容,但我仍然没有设法使用 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"))

第三列中的动词("动词"(是不定式,我想将它们与第一列中的动词("三元组"(部分匹配。我认为在这种情况下,能够使用 for 循环来迭代 500 个动词是理想的,我想部分匹配我的一百万个三元组。

所以在这种情况下: "Gustar"应该部分匹配"No Me Gusta",没有什么应该匹配像"El Caso Que"这样的无字三元组。

我真的希望这是有道理的,我以前从未处理过这些数据量,而且我对正则表达式太陌生,无法自己真正解决这个问题。

我认为这种使用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"

创建于 2018-09-16 由 reprex 软件包 (v0.2.0(.

最新更新