- ベストアンサー
一番多い文字の検索
Perlのスクリプトを用いて次のようなCGIプログラムを作ろうとしています。 「ユーザがインプットした文章(何かしらのストーリー)をsubmitして もらい、Perlプログラムを用いて、その文章の中にでてくる最頻出の単語を読み取る。(ここで文章は英語であり、最頻出の単語はa,the など文章の内容に関係のない言葉は排除する。)Perlプログラムで読み取った最頻出の単語を ユーザに表示。」 最頻出の単語を読み取る という部分で 苦戦しているのですが 何がアドバイスをいただけないでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
(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"; }
その他の回答 (1)
- laundryload
- ベストアンサー率35% (18/51)
回答No.2
あとはNo.1を基本に、英数字以外を空白に置き換えておくとか、行末のハイフンの処理をするなどこまごました処理を好みに応じて追加すればいいかと。
質問者
お礼
アドバイスありがとうございます。 ただいま、試行錯誤してよいプログラムにしているところです。 回答ありがとうございました。
お礼
回答ありがとうございます。 うまく、出現回数の多い文字から並びました。 ほんとにありがとうございました。