如何为大型数据集提取ngram特征以在R中进行讽刺检测?

时间:2019-03-24 23:56:27

标签: r machine-learning

我正在使用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)

0 个答案:

没有答案