我有一个大数据集(> 100 万行),每一行都是一个多句子文本。例如以下是 2 行的示例:
mydat <- data.frame(text=c('I like apple. Me too','One two. Thank you'),stringsAsFactors = F)
我试图做的是提取每行中的二元词项(“。”将能够分隔 ngram 项)。如果我只是使用 dfm 函数:
mydfm = dfm(mydat$text,toLower = T,removePunct = F,ngrams=2)
dtm = as.DocumentTermMatrix(mydfm)
txt_data = as.data.frame(as.matrix(dtm))
这些是我得到的条款:
"i_like" "like_apple" "apple_." "._me" "me_too" "one_two" "two_." "._thank" "thank_you"
这些是我所期望的,基本上是“。” 被跳过并用于分隔术语:
"i_like" "like_apple" "me_too" "one_two" "thank_you"
相信编写慢循环也可以解决这个问题,但鉴于它是一个巨大的数据集,我更喜欢类似于 quanteda 中的 dfm() 的有效方法来解决这个问题。任何建议,将不胜感激!