前置き
突然ですが,皆さん,Wikipediaである単語からある単語へ出来るだけ短かく到達するゲームとかやったことありますよね.
私はありません.
ともかく,如何なる単語に対してもハブのようなものが存在し,7だか14だか以内にはどの単語にも到達することが出来ると聞く.それを本当なのかどうか立証してみようという試みである.
結果論
距離1~2じゃないと運用できないくらいには,思ったより通信で速度が出なかったので,サーバーへの負荷は承知でスレッド化するかなんかしないとだめそう.
ソースコード
Python3で書いた.HTTPリクエストをするときにrequestsを使うと楽そうだったので,それを使わせて頂いた. 幅優先でざざっと流してあげる感じ.
Wikipedia API
Wikipedia APIなるものがあるらしい.強い. 記事からaタグを取ってきて,やるのかなとか思ってたからめっちゃ良さがある.
使い方はQiitaに上がっていた記事がめっちゃわかりやすかった. qiita.com
prop
にlinks
を指定するだけで大体上手くいきそう.pllimit
は最大の500にして(1000でリクエストを送ったらmaxは500ですって返事がきた),plnamespace
には0
を設定した.あとxmlよりjsonの方が個人的には処理しやすいので,format
はjson
艦これ
とかで検索すると,ただのリダイレクトだったりして,困ったけど,queryにredirectsを含めると,自動でリダイレクト先のを出してくれるっぽい.
API:Query/ja - MediaWiki
試してみた
$ py pediwalk.py "Twitter" "Google" search start Twitter -> Google Twitter ---------result--------- Twitter Google
$ py pediwalk.py "Twitter" "Yahoo" search start Twitter -> Yahoo! Twitter 2010 FIFAワールドカップ 2011 FIFA女子ワールドカップ 2011年 2013年 2ちゃんねらー 7月 7月13日 AERA Adobe AIR All About Android BIGLOBE BlackBerry ---------result--------- Twitter BlackBerry Yahoo!
案外遅いぞ. 数字は大体日付っぽいし,後回しにしてもいいかもなぁ.
まとめ
単語距離が確認ができない程度には,だめだった. なんかもっと有用性があるクソプログラムを作りたい.