• ベストアンサー

一番多い文字の検索

Perlのスクリプトを用いて次のようなCGIプログラムを作ろうとしています。 「ユーザがインプットした文章(何かしらのストーリー)をsubmitして もらい、Perlプログラムを用いて、その文章の中にでてくる最頻出の単語を読み取る。(ここで文章は英語であり、最頻出の単語はa,the など文章の内容に関係のない言葉は排除する。)Perlプログラムで読み取った最頻出の単語を ユーザに表示。」 最頻出の単語を読み取る という部分で 苦戦しているのですが 何がアドバイスをいただけないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

(1) a、theなどいらない単語を削除 (2) 単語がキー、頻度が値となるような連想配列を作ったあと値で降順にソート でいいでしょう。 $bufに文章が入っているとして、例えば次のように。 $buf =~ s/\ba\b//gi; # aを削除 $buf =~ s/\bthe\b//gi; # bを削除 # 単語をカウント foreach(split(/\s+/, $buf)) { $m{$_}++; } # 頻度の高い順に表示 foreach(sort { $m{$b} <=> $m{$a} || $a cmp $b} keys %m) { print "$_: $m{$_}\n"; }

ilnmfay
質問者

お礼

回答ありがとうございます。 うまく、出現回数の多い文字から並びました。 ほんとにありがとうございました。

その他の回答 (1)

回答No.2

あとはNo.1を基本に、英数字以外を空白に置き換えておくとか、行末のハイフンの処理をするなどこまごました処理を好みに応じて追加すればいいかと。

ilnmfay
質問者

お礼

アドバイスありがとうございます。 ただいま、試行錯誤してよいプログラムにしているところです。 回答ありがとうございました。

関連するQ&A