テキストの文があるとしましょう:
$body = 'the quick brown fox jumps over the lazy dog';
その文を「キーワード」のハッシュに入れたいのですが、複数単語のキーワードを許可したいです。単一の単語のキーワードを取得するには、次のものが必要です。
$words{$_}++ for $body =~ m/(\w+)/g;
これが完了すると、次のようなハッシュが得られます。
'the' => 2,
'quick' => 1,
'brown' => 1,
'fox' => 1,
'jumps' => 1,
'over' => 1,
'lazy' => 1,
'dog' => 1
2 語のキーワードを取得するための次のステップは次のとおりです。
$words{$_}++ for $body =~ m/(\w+ \w+)/g;
しかし、それはすべての「他の」ペアを取得するだけです。次のようになります。
'the quick' => 1,
'brown fox' => 1,
'jumps over' => 1,
'the lazy' => 1
1 ワードのオフセットも必要です。
'quick brown' => 1,
'fox jumps' => 1,
'over the' => 1
これを行うには、次よりも簡単な方法はありますか?
my $orig_body = $body;
# single word keywords
$words{$_}++ for $body =~ m/(\w+)/g;
# double word keywords
$words{$_}++ for $body =~ m/(\w+ \w+)/g;
$body =~ s/^(\w+)//;
$words{$_}++ for $body =~ m/(\w+ \w+)/g;
$body = $orig_body;
# triple word keywords
$words{$_}++ for $body =~ m/(\w+ \w+ \w+)/g;
$body =~ s/^(\w+)//;
$words{$_}++ for $body =~ m/(\w+ \w+ \w+)/g;
$body = $orig_body;
$body =~ s/^(\w+ \w+)//;
$words{$_}++ for $body =~ m/(\w+ \w+ \w+)/g;