1

我知道有很多关于部分匹配的问题,我已经阅读了尽可能多的内容,但我仍然没有设法使用 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”这样的无动词三元组。

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

4

1 回答 1

0

I think this approach using stringr might help you. You might have to do some modifications in order to use it in a dataframe. Basically we have to convert each verb such as "hablar" into a pattern such as 'hablar*' and then do a 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"

Created on 2018-09-16 by the reprex package (v0.2.0).

于 2018-09-17T02:19:35.740 回答