あっという間の十年ブログ【Ruby篇】

"詮ずるところ#{プログラミング}は、ただ年月長く倦まずおこたらずして、はげみつとむるぞ肝要にて、学びやうは、いかやうにてもよかるべく、さのみかかはるまじきことなり。いかほど学びかたよくても、おこたりてつとめざれば、功はなし。また、人々の才と不才とによりて、その功いたく異なれども、才不才は、生まれつきたることなれば、力に及びがたし。されど、大抵は、不才なる人といへども、おこたらずつとめだにすれば、それだけの功は有る物なり。" - 本居宣長

duo

DUOの英文一覧が載ってるサイトを見つけてきました。perlの練習がてら英文を分解して単語ごとの出現回数を見てみようと思います。


まずperl正規表現でゴミを掃除して改行します。
ところどころ空白行が残っていたのでエクセルで消しました。(空白行だけを一気に削除

s/[\d]+\.\s|[^a-zA-Z|'|-]/\n/g;

(初めてのPerlの練習問題6.6.2を参考に)各単語が何回出現したかを表示します。ファイル操作している以外練習問題とほぼ同じ。

use strict;
use warnings;
use utf8;

open(FILE, "count.txt");
chomp(my @words = <FILE>);
close(FILE);

open(FILE, ">count.txt");

my (%count, $word);

foreach $word (@words) {
        $word =~ tr/[A-Z]/[a-z]/; #小文字に統一
	$count{$word} += 1;
}

foreach $word (keys %count) {
	print FILE "$word($count{$word})\n"; #FILEハンドルを忘れてハマった
}

close(FILE);

実行すると、

エクセルで降順に並び替え、

結果が出ました。


ちなみに、1億の単語から抽出したというこちらのサイトによると、
the, of, and, to, a, in, that, it, is, was, i, for, on, you, he
の順に出現頻度が高いようです。。