我正在使用R进行讽刺检测项目。该数据是一个平衡的数据集,具有100万行,其中50万讽刺和50万非讽刺注释。在使用R进行ngram特征提取方面需要帮助。
我正在按照下面给出的代码提取二元函数。但是问题在于数据的大小,我想代码的效率也不足以处理如此大的数据。我尝试获取前50K数据。功能正在生成,但是如果我提供大量数据,则会消耗大量时间,而且R也会引发错误,无法分配大小为3.5 GB的向量。 我正在探索R提供的ngram程序包,但找不到与之相关的示例。如果有人可以帮助我,那就太好了。
创建列表:-
ngram_list <- sarcasticTweets[c(0:50000),] %>%
unnest_tokens(bigram,'comment', token="ngrams", n=2)%>%
separate(bigram, c("word1", "word2"), sep = " ") %>%
filter(
!word1 %in% stop_words$word,
!word2 %in% stop_words$word,
!str_detect(word1, pattern = "[[:digit:]]"),
!str_detect(word2, pattern = "[[:digit:]]"),
!str_detect(word1, pattern = "[[:punct:]]"),
!str_detect(word2, pattern = "[[:punct:]]"),
!str_detect(word1, pattern = "(.)\\1{2,}"),
!str_detect(word2, pattern = "(.)\\1{2,}"),
!str_detect(word1, pattern = "\\b(.)\\b"),
!str_detect(word1, pattern = "\\b(.)\\b")
)%>%
unite("bigram", c(word1, word2), sep = " ") %>%
count(bigram) %>%
filter(n >= 3) %>% # filter for bi-grams used 10 or more times
pull(bigram)
特征提取:-
ngram_features <- sarcasticTweets[c(0:50000),] %>%
unnest_tokens(bigram, `comment`, token = "ngrams", n = 2) %>%
filter(bigram %in% ngram_list) %>%
count(ID, bigram) %>%
spread(bigram, n) %>%
map_df(replace_na, 0)