如何在Perl Text::ngrams中获取所有Ngram的数组

如何在Perl Text::ngrams中获取所有Ngram的数组,perl,n-gram,Perl,N Gram,正如您所知,Perl中的模块可以提供Ngrams分析。以下函数用于检索NGRAM和频率阵列 get_ngrams(orderby=>'ngram|frequency|none',onlyfirst=>NUMBER,out=>filename|handle,normalize=>1) 但它只给出了最后的Ngrams。 例如,以下代码不同时给出Uni Gram和Bi Gram: my $ng3 = Text::Ngrams->new( windowsize =>

正如您所知,Perl中的模块可以提供Ngrams分析。以下函数用于检索NGRAM和频率阵列

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)
它显示了两个ngram。但只有它显示结果。我需要数组中的结果


如何通过此数组同时获取所有ngram(Unigram和Bigram)?

您不能同时获取所有不同大小的n-gram,但可以通过多次调用
获取ngram来获取它们。有一个未记录的参数
n
to
get\u ngrams
表示要列出的n克的大小

在你的代码中,如果你说

my @ngramsarray = $ng3->get_ngrams(
  n => 1,
  orderby = >'frequency',
  onlyfirst => 10,
  normalize => 0);
你得到这份名单了吗

('T', 8, 'E', 4, 'X', 2, '_', 2, 'S', 2)