Как вы знаете, модуль Text::Ngrams в Perl может дать анализ Ngrams. Существует следующая функция для получения массива Ngrams и частот.
get_ngrams(orderby=>'ngram|frequency|none',onlyfirst=>NUMBER,out=>filename|handle,normalize=>1)
Но он дает только последние Ngrams. Например, следующий код не дает ни Uni-Gram, ни Bi-Gram:
my $ng3 = Text::Ngrams->new( windowsize => 2, type=>'byte');
my $text = "test teXT TESTtexT";
$text =~ s/ +/ /g; # replace multiple spaces to single
$text = uc $text; # uppercase all
$ng3->process_text($text);
my @ngramsarray = $ng3->get_ngrams(orderby=>'frequency', onlyfirst=>10, normalize=>0 );
foreach(@ngramsarray)
{
print "$_\n";
}
выход:
T E
4
E X
2
_ T
2
E S
2
S T
2
X T
2
T _
2
T T
1
Однако с помощью функции
to_string(orderby=>'ngram|frequency|none',onlyfirst=>NUMBER,out=>filename|handle,normalize=>1,spartan=>1)
он показывает оба Ngrams. Но только он отображает результат. Мне нужен результат в массиве.
Как получить все Ngrams (Unigram и Bigram) одновременно этим массивом?