This is not what you ask for, but I would still like to showcase the loop fusion and substring features.
julia> ngram(s::AbstractString,n) = [SubString(s,i:i+n-1) for i=1:length(s)-n+1]
ngram (generic function with 1 method)
julia> s = ["apple"
"orange"
"pear"
"honeycrisp apple"
];
julia> ngram.(s,2)
4-element Array{Array{SubString{String},1},1}:
["ap", "pp", "pl", "le"]
["or", "ra", "an", "ng", "ge"]
["pe", "ea", "ar"]
["ho", "on", "ne", "ey", "yc", "cr", "ri", "is", "sp", "p ", " a", "ap", "pp", "pl", "le"]
julia> ngram.(s,3)
4-element Array{Array{SubString{String},1},1}:
["app", "ppl", "ple"]
["ora", "ran", "ang", "nge"]
["pea", "ear"]
["hon", "one", "ney", "eyc", "ycr", "cri", "ris", "isp", "sp ", "p a", " ap", "app", "ppl", "ple"]
And if you really want array of characters:
julia> function split_char(s)
s= collect.(s)
end
split_char (generic function with 1 method)
julia> bigrams = ngram.(s,2)
4-element Array{Array{SubString{String},1},1}:
["ap", "pp", "pl", "le"]
["or", "ra", "an", "ng", "ge"]
["pe", "ea", "ar"]
["ho", "on", "ne", "ey", "yc", "cr", "ri", "is", "sp", "p ", " a", "ap", "pp", "pl", "le"]
julia> split_char.(bigrams)
4-element Array{Array{Array{Char,1},1},1}:
[['a', 'p'], ['p', 'p'], ['p', 'l'], ['l', 'e']]
[['o', 'r'], ['r', 'a'], ['a', 'n'], ['n', 'g'], ['g', 'e']]
[['p', 'e'], ['e', 'a'], ['a', 'r']]
[['h', 'o'], ['o', 'n'], ['n', 'e'], ['e', 'y'], ['y', 'c'], ['c', 'r'], ['r', 'i'], ['i', 's'], ['s', 'p'], ['p', ' '], [' ', 'a'], ['a', 'p'], ['p', 'p'], ['p', 'l'], ['l', 'e']]