はてなキーワードの言葉を PC に覚えさせる前準備

既にAWK Users JP :: ニコニコ大百科の言葉を PC に覚えさせる前準備にて似たようなことを行っていますが、ここでは gawk の TCP/IP での通信を直接使います。 したがって、今回は gawk, xgawk のみ使えます。 404 Blog Not Found:tips - Mac OS X - には iconv も piconv も入っているMeCabの辞書にはてなキーワードを追加しよう - 不可視点あたりにインスパイヤーされています。

#! /usr/local/bin/gawk -f
# hatena_words.awk
# はてなキーワードから辞書登録用ファイルを作成する
# usage: gawk -f hatena_words.awk

BEGIN {
    FS  = "\t";                 # CSV なのに何故タブ区切り?
    OFS = "\t";                 # MS-IME のタブ区切り形式に変換するため
    ORS = "\r\n";               # /inet を使うときのお約束

    # はてなキーワードの URL
    base_url = "d.hatena.ne.jp";
    file_url = "/images/keyword/keywordlist_furigana.csv";

    # リクエスト先のポート指定とリクエスト
    http_service = "/inet/tcp/0/" base_url "/80";
    http_request = "GET http://" base_url file_url " HTTP/1.0"

    # TCP でのデータの取得
    print http_request          |& http_service;
    print ""                    |& http_service;
    while ((http_service |& getline) 0) {
        # 読みと単語が両方存在する場合
        if ($1 != "" && $2 != "" && NF == 2) {
            yomi = iconv($1, "eucjp", "utf8");
            word = iconv($2, "eucjp", "utf8");
            print yomi, word, "名詞";
        }
    }
    close(http_service);
}

# iconv コマンドを使って文字コードを変換する
#   in:     文字列 (str), 変換前文字コード (from), 変換後文字コード (to)
#   out:    iconv コマンドを使って文字コードを変換された文字列 (str)
function iconv(str, from, to,   iconv_cmd, iconv_exec) {
    iconv_cmd =  "/usr/bin/iconv";
    iconv_exec = "echo '" str "' | " iconv_cmd " -f " from " -t " to;

    iconv_exec | getline str;
    close(iconv_exec);
    return str;
}

iconv コマンドを使って gawk 内で処理をさせていますが、クローズ (close) するのを忘れないでください。 ファイルに関しては勝手にクローズしてくれるようですが、getline を使ったパイプはクローズしてくれません。

実行してみましょう。

$ gawk -f hatena_words.awk
ーーー  ○ー○ー○ー○      名詞
ーーー  ○ー○。  名詞
ぁ      (ぁ    名詞
ぁみにぃ        ぁみにぃ        名詞
ぁみみ  ぁみみ  名詞
ぁゃゃ  ぁゃゃ  名詞
あ      「あ」  名詞
あ      早川桂太郎      名詞
あ      mari    名詞
あ      baycanyons      名詞
あーう゛ぇう゛ぇ        a.v.v   名詞
あーうーおじゃままん    アーウー・オジャママン  名詞
あーういんしょう        アーウィン・ショウ      名詞
あーえすもなこ  ASモナコ        名詞
あーえぬあーまいれーじくらぶ    ANAマイレージクラブ     名詞
あーかーげー    AKG     名詞
あーかーと      アーカート      名詞
あーかーど      アーカード      名詞
あーかーよんなな        AK47        名詞
あーかいう゛    アーカイヴ      名詞
あーかいば      アーカイバ      名詞
<snip>

このように以前AWK Users JP :: ニコニコ大百科の言葉を PC に覚えさせる前準備で出力されたフォーマットと同じ形式で取得できます。

ニコニコ大百科より、はてなキーワードの方が IME に登録しておいて損がなさそうな気がするのは私だけでしょうか?

tag_gawk.pngtag_gawk.png