- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:単語の出現頻度を求めるプログラム)
単語の出現頻度を求めるプログラム
このQ&Aのポイント
- 英文がいっぱいの書籍『book.eng』に現れる単語の出現頻度を求めるプログラムを作成したいです。
- 具体的な作業は以下の通りです。1.ファイルから一行読み出す。2.読み出した行を単語に分解する。3.単語をキーとして連想配列を用いたカウンターを増加させる。4.すべての行を読み終わったら、キーを用いて結果を出力します。
- 注意すべきなのは、『AND』、『And』、『and』はすべて同じ単語として扱いたいことです。そのため、一行をすべて小文字に変換しておくことが望ましいです。正規表現を引数として渡せるようにし、出力を整形したいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「単語を切り分ける正規表現」というのがよくわからんのですが(英文なら空白で区切ればよいのでは?)、とりあえずたたき台としては my %counts; while (<>) { chomp; my @words = /\s+/, $_; foreach my $word (@words) { $counts{lc $word}++; } } printf "%15s: %5s\n", "word", "count" foreach my $word (sort keys %counts) { printf "%15s:, %5d\n", $word, %counts{$word}; } こんな感じ? #実行してません。 ところで > $input =~ tr/[A-Z]/[a-z]/; tr の引数は正規表現ではないので、ブラケットは余計です。 同じ文字に置換することになるので結果はおかしくはなりませんが。
お礼
参考になりました。。有り難うございます。。 (^^)