100 Most Common English Words を検証してみる

100 Most Common English Words というページがあります。 このサイトは英語で最も良く使われる単語ベスト 100 を当てるというものですが、なかなか全てを当てるというのは難しく、解答を見て「あ〜、そっかぁ」と納得してしまいます。

さて、Unix 系 OS を触っていると最も目にすることのある英文といえば man ではないでしょうか? もちろん、最近では JM Project で多くの man が翻訳されていますが、全体的に翻訳率が高いとは言い難いものがあります。 そこで、この man page の中のベスト 100 の単語を抜き出してみたいと思います。

抜き出す方法としては以下のようにします。 /usr/share/man/man1 の中身は gzip コマンドで圧縮されていますので、これを zcat で awk に渡します。 各行の各単語についてアルファベット小文字のみを抜き出しカウントします。 これを END ブロックで出力し、sort コマンドで数値ソートさせます。 ここで処理するための awk スクリプトは以下のようなものになります。

#! /usr/bin/gawk -f
# 100_most_common_english_words.awk

{

    for (i = 1; i <= NF; i++) {

        if ($i ~ /^[a-z]+$/) {
            count[$i]++;
        }
    }
}

END {

    for (i in count) {

        print count[i], i;
    }
}

極めてシンプルなスクリプトです。 これを以下のようにして実行します。

$ zcat /usr/share/man/man1/* | \
gawk -f 100_most_common_english_words.awk | \
sort -nr | head -n 100 > top100.txt

トップ 100 の単語が top100.txt の中に格納されていますので、早速解いてみましょう。

173378 the
74148 to
63581 is
59737 a
59372 of
51487 and
41404 in
33568 for
29380 be
23181 that
22542 or
21106 with
20405 are
<snip>

結果は大体半分といったところでしょうか。 さすがに 100 Most Common English Words には日常会話で使われる単語が多いので全問正解とはいきませんでした。

tag_nawk.pngtag_nawk.pngtag_nawk.pngtag_nawk.png