0

ご存じのように、Perl のモジュールText::Ngramsは Ngrams 分析を提供します。Ngram と頻度の配列を取得する次の関数があります。

get_ngrams(orderby=>'ngram|frequency|none',onlyfirst=>NUMBER,out=>filename|handle,normalize=>1)

ただし、最後の Ngram のみが表示されます。たとえば、次のコードでは 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) を同時に取得するにはどうすればよいですか?

4

1 に答える 1