我有一個單詞列表,看起來像這樣創造二元語法功能:需要加快是從文本列表
[[1]] [1]「快」,「棕」,「狐狸」「跳躍」
[[2]] [1] 「一次」, 「後」, 「午夜」 「沉悶」
[[3]] [1] 「談論」 「烏鴉」 「永不復」
我想要做的是創建一組基於這個列表的bigrams(這是更大,更大的一個例子)。我的代碼在下面,它可以工作。問題是它太慢了。我知道我在bigram_list()中的循環會減慢它的速度,但我無法弄清楚如何在列表中使用lapply。我也懷疑數據表和rbindlist()會有很大的幫助,但我似乎無法讓它們工作。任何幫助將與哈利路亞的合唱團會面。
bigram_list <- function(words, ng) {
tokens <- character()
words_length <- length(words)
for (i in 1:words_length) {
set <- words[[i]] ##current vector of words
end <- length(set)
if (end > 2) {
if (ng == 1) {
nlist <- set[1:(end-1)]
} else {
nlist <- set[2:end]
}
tokens <- c(tokens,nlist)
}
}
return(tokens)
}
make_bigram <- function(words) {
n1s <- character()
n2s <- character()
n1.set <- bigram_list(words, 1)
n1s <- c(n1s, n1.set)
n2.set <- bigram_list(words, 2)
n2s <- c(n2s, n2.set)
bigrams <- data.frame(n1=n1s, n2=n2s)
return(bigrams)
}
你只需要兩個或兩個bigrams的計數? – thie1e 2015-04-01 19:41:44
我需要實際的bigrams。通過使用數據表,我可以在數據框中獲得這些數據後快速地將它們聚合起來。我的最終目標是一系列bigrams及其頻率。 – Branwen 2015-04-02 00:57:17