我怎样才能把一个词分成二元词,包括重复的词?
How can I split a word into bi-grams, including repeated ones?
我正在尝试将单词拆分为二元语法。我正在使用 qlcMatrix
包,但它只有 returns 个不同的二元语法。例如,对于单词 "detected"
,它只 returns "te"
一次。
这是我使用的命令
test_domain <- c("detected")
library("qlcMatrix", lib.loc="~/R/win-library/3.2")
bigram1 <- splitStrings(test_domain, sep = "", bigrams = TRUE, left.boundary = "", right.boundary = "")$bigrams
这是我得到的结果:
bigram1
# [1] "ec" "ed" "de" "te" "ct" "et"
你可以在没有包的情况下做到这一点:
test_domain <- c("detected")
temp <- strsplit(test_domain ,'')[[1]]
sapply(1:(length(temp)-1), function(x){paste(temp[x:(x+1)], collapse='')})
# [1] "de" "et" "te" "ec" "ct" "te" "ed"
另一种使用基数 R
的方法是使用 mapply
和 substr
:
nc <- nchar("detected")
mapply(function(x, y){substr("detected", x, y)}, x=1:(nc-1), y=2:nc)
# [1] "de" "et" "te" "ec" "ct" "te" "ed"
我正在尝试将单词拆分为二元语法。我正在使用 qlcMatrix
包,但它只有 returns 个不同的二元语法。例如,对于单词 "detected"
,它只 returns "te"
一次。
这是我使用的命令
test_domain <- c("detected")
library("qlcMatrix", lib.loc="~/R/win-library/3.2")
bigram1 <- splitStrings(test_domain, sep = "", bigrams = TRUE, left.boundary = "", right.boundary = "")$bigrams
这是我得到的结果:
bigram1
# [1] "ec" "ed" "de" "te" "ct" "et"
你可以在没有包的情况下做到这一点:
test_domain <- c("detected")
temp <- strsplit(test_domain ,'')[[1]]
sapply(1:(length(temp)-1), function(x){paste(temp[x:(x+1)], collapse='')})
# [1] "de" "et" "te" "ec" "ct" "te" "ed"
另一种使用基数 R
的方法是使用 mapply
和 substr
:
nc <- nchar("detected")
mapply(function(x, y){substr("detected", x, y)}, x=1:(nc-1), y=2:nc)
# [1] "de" "et" "te" "ec" "ct" "te" "ed"