読者です 読者をやめる 読者になる 読者になる

1400字制限

「その情報量は Twitter のなんと10倍... つまり人類はすべて平等に無価値ということだ」

Wikipedia から「き」で終わる項目を抽出してラッキーマン登場botを作った

ガモウひろしの「ラッキーマン」をご存じだろうか。知らない人はいないだろうから説明はしない。というわけで先日、ラッキーマン登場時の決め台詞「ラッキー クッキー ○○キー」を大量生成するbotを作った。

必要なのは「き」で終わる単語を大量に集めることである。辞書としては Wikipedia を使うといいだろう。Wikipedia はクローリング行為を禁止しているが、代わりにデータのアーカイブが公開されている。日本語版 Wikipedia の最新版のダウンロードはこちら。

Index of /jawiki/latest/

いろんなのがあるけど、今回は項目名が各行にズラズラ書いてあるのが欲しい。 jawiki-latest-all-titles-in-ns0 というのがそれに該当した。157万9808項目あった。

次に「き」で終わる項目だけを抽出する。ひらがなとカタカナについては簡単だ。

$ grep -E "き$\|キ" input.dat

漢字については mecab という形態素分析ツールを使うと良いらしい。

$ sudo apt-get install mecab libmecab-dev mecab-ipadic-utf8 mecab-jumandic-utf8
$ echo 八代亜紀 | mecab
八代 名詞,固有名詞,人名,姓,*,*,八代,ヤシロ,ヤシロ
亜紀 名詞,固有名詞,人名,名,*,*,亜紀,アキ,アキ
EOS

これで下から2行目を見て「き」「キ」で終わってるものを取り出す。

この時点で49,230件。うち3割強の18,545件が「○○駅」だった。このままではラッキーマンが我らが鉄オタみたいになってしまうのでジャンプヒーローのイメージ保護の観点から削除した。

あとは「一字金輪仏頂」のように辞書に載ってない単語だと「頂」を「いただき」と読んでしまってるので、そういうのを grep で見つけて除去。「張敷」など中国人の人名をやたら訓読みするので除去。

この他「キー」「キイ」「key」などは適宜追加し、最終的に31364項目。原作によるとラッキーマンは777個のキーワードから自動的に選択しているとあるが、このbotは候補数において40倍。

ちなみに31364項目のうち最も長いのは「神学校および聖職への受けいれにおける、同性愛傾向を有する人物の召命を吟味するための基準に関する手引き」だった。