6月9日

2011/6/9作成

あさー。集計は終わってて結果を見たけど、うーん。まだ単語の切り出しがうまくいってないな。ということで切り出しの正規表現を調整。あと、コメント内のリンクも拾ってしまっているようなので、コメント部分は対象外にするように修正。これで再集計。

そうか。jwaptoolの集計ではリンクの回数を全て計測しているけど、サイト上でリンク元一覧を表示させた場合はページ数になるんだ。だから、同一ページ内で同一記事へのリンクが多数あった場合には乖離が激しくなることになる。ということは、一つの記事でのリンクは一種類につき1回として集計してやれば、サイト上のリンク元数に近くなるはず。

赤リンクとして集計されているのに記事が実在する問題は、履歴を見てみるとどれもデータベースダンプ以降に新規立項されたものばかりだった。なら集計は間違ってないということになるな。ということで、この問題は解決。

色々ほかの事をやっている間もPCは一生懸命処理を続けて、集計完了。呼び出し数に関してはかなり改善されたんじゃないかな。というか、ほぼ大丈夫?あとはプロジェクト間リンクの検出がうまくいってないのを修正する必要があるな。しかし、まだ検出文字列に変なのが混じっているので、検出方法にバグが潜んでいる模様。でも、あと少しで完成という気分になってきた。

赤リンク一覧を眺めてみると、ISO 639に無い言語間リンクがいくつもある。と思ったら、ウィキペディアのISO 639に関するページが古くて最新の規格では掲載されているものもある。でも、最新のにも載ってないのがある。ウィキペディアの各言語版一覧を元に検出パターンを作った方がよさそうだな。

ということで、ウィキペディア各言語版一覧から拾って作ったのが以下のもの。

/^(en|de|fr|it|pl|es|ja|ru|nl|pt|sv|zh|ca|no|uk|fi|vi|cs|hu|tr|id|ko|ro|fa|da|ar|eo|sr|lt|sk|ms|he|vo|bg|sl|war|eu|hr|hi|et|gl|simple|new|th|nn|az|el|roa\-rup|la|ht|tl|ka|te|mk|ceb|nap|sh|pms|br|be\-x\-old|lv|mr|jv|lb|ta|sq|cy|is|bs|be|oc|an|bpy|bn|io|sw|kk|lmo|fy|gu|ml|af|nds|ur|scn|qu|mg|ku|zh\-yue|su|ast|ne|hy|yo|bat\-smg|pnb|ga|cv|wa|kn|am|als|tg|vec|roa\-tara|zh\-min\-nan|tt|yi|bug|gd|os|uz|sah|pam|arz|mi|li|hsb|nah|sco|mn|co|gan|glk|my|ia|bcl|fo|sa|si|fiu\-vro|nds\-nl|vls|tk|bar|ckb|mrj|gv|ilo|map\-bms|dv|nrm|pag|diq|se|rm|mzn|wuu|fur|ug|bo|lij|mt|hif|csb|km|bh|ang|lad|nov|udm|sc|zh\-classical|cbk\-zam|pi|ps|mhr|kv|ksh|frp|rue|hak|kw|nv|pa|so|szl|xal|ie|rw|stq|haw|pdc|koi|ln|krc|to|pcd|crh|ky|ace|ext|myv|gn|ba|eml|ce|arc|pap|ay|kl|bjn|frr|jbo|wo|tpi|or|kab|ty|srn|zea|gag|dsb|ab|lo|ig|mdf|tet|av|kg|mwl|rmy|cu|ltg|lbe|kaa|kbd|sm|mo|na|pfl|got|bm|ik|as|sd|bi|iu|ks|pih|ss|pnt|chr|cdo|ee|ha|ti|bxr|za|om|zu|ve|ts|rn|sg|dz|tum|cr|ch|lg|fj|ny|st|xh|ff|tn|ki|sn|ak|chy|tw|ng|ii|cho|mh|aa|kj|ho|mus|kr|hz|zh\-cn|zh\-tw):/i

念のためにISO 639とマージしてみた。これでどうだ。

/^(aa|aar|ab|abk|ace|ach|ada|ady|ae|af|afa|afh|afr|ain|ak|aka|akk|alb|ale|alg|als|alt|am|amh|an|ang|apa|ar|ara|arc|arg|arm|arn|arp|art|arw|arz|as|asm|ast|ath|aus|av|ava|ave|awa|ay|aym|az|aze|ba|bad|bai|bak|bal|bam|ban|baq|bar|bas|bat|bat\-smg|bcl|be|be\-x\-old|bej|bel|bem|ben|ber|bg|bh|bho|bi|bih|bik|bin|bis|bjn|bla|bm|bn|bnt|bo|bod|bos|bpy|br|bra|bre|bs|bua|bug|bul|bur|bxr|byn|ca|cad|cai|car|cat|cau|cbk\-zam|cdo|ce|ceb|cel|ces|ch|cha|chb|che|chg|chi|chm|chn|cho|chr|chu|chv|chy|ckb|co|cop|cor|cos|cpe|cpf|cpp|cr|cre|crh|crp|cs|csb|cu|cus|cv|cy|cym|cze|da|dak|dan|dar|day|de|del|deu|dgr|din|diq|div|doi|dra|dsb|dua|dum|dut|dv|dyu|dz|dzo|ee|efi|egy|eka|el|ell|elx|eml|en|eng|enm|eo|epo|es|esk|est|et|eu|eus|ewe|ewo|ext|fa|fan|fao|fas|fat|ff|fi|fij|fin|fiu|fiu\-vro|fj|fo|fon|fr|fra|fre|frm|fro|frp|frr|frs|fry|ful|fur|fy|ga|gaa|gag|gan|gay|gd|gem|geo|ger|gez|gil|gl|gla|gle|glg|glk|glv|gmh|gn|goh|gon|gor|got|grb|grc|gre|grn|gu|guj|gv|ha|hai|hak|hat|hau|haw|he|heb|her|hi|hif|hil|him|hin|hit|hmn|hmo|ho|hr|hrv|hsb|ht|hu|hun|hup|hy|hye|hz|ia|iba|ibo|ice|id|ido|ie|ig|ii|iii|ijo|ik|iku|ile|ilo|ina|inc|ind|ine|inh|io|ipk|ira|iro|is|isl|it|ita|iu|ja|jav|jbo|jpn|jpr|jrb|jv|ka|kaa|kab|kac|kal|kam|kan|kar|kas|kat|kau|kaw|kaz|kbd|kg|kha|khi|khm|kho|ki|kik|kin|kir|kj|kk|kl|km|kmb|kn|ko|koi|kok|kom|kon|kor|kos|kpe|kr|krc|kro|kru|ks|ksh|ku|kua|kum|kur|kut|kv|kw|ky|la|lad|lah|lam|lao|lat|lav|lb|lbe|lez|lg|li|lij|lim|lin|lit|lmo|ln|lo|lol|loz|lt|ltg|ltz|lu|lub|lug|lui|lun|luo|lv|mac|mad|mag|mah|mai|mak|mal|man|mao|map|map\-bms|mar|mas|may|mdf|men|mg|mga|mh|mhr|mi|mic|min|mis|mk|mkd|mkh|ml|mlg|mlt|mn|mnc|mni|mno|mo|moh|mol|mon|mos|mr|mri|mrj|ms|msa|mt|mul|mun|mus|mwl|mwr|my|mya|myn|myv|mzn|na|nah|nai|nap|nau|nav|nb|nbl|nd|nde|ndo|nds|nds\-nl|ne|nep|new|ng|nic|niu|nl|nld|nn|nno|no|nob|nog|non|nor|nov|nr|nrm|nso|nub|nv|nwc|ny|nya|nym|nyn|nyo|nzi|oc|oci|oj|oji|ojp|om|or|ori|orm|os|osa|oss|ota|oto|pa|paa|pag|pal|pam|pan|pap|pau|pcd|pdc|peo|per|pfl|phn|pi|pih|pl|pli|pms|pnb|pnt|pol|pon|por|pra|pro|ps|pt|pus|qu|que|raj|rap|rar|rm|rmy|rn|ro|roa|roa\-rup|roa\-tara|roh|rom|ron|ru|rue|rum|run|rus|rw|sa|sad|sag|sah|sai|sal|sam|san|sc|scc|scn|sco|scr|sd|se|sel|sem|sg|sga|sgn|sh|shn|si|sid|simple|sin|sio|sit|sk|sl|sla|slk|slo|slv|sm|sma|sme|smi|smj|smn|smo|sms|sn|sna|snd|so|sog|som|son|sot|spa|sq|sqi|sr|srd|srn|srp|srr|ss|ssa|ssw|st|stq|su|suk|sun|sus|sux|sv|sw|swa|swe|syr|szl|ta|tah|tai|tam|tat|te|tel|tem|ter|tet|tg|tgk|tgl|th|tha|ti|tib|tig|tir|tiv|tju|tk|tkl|tl|tlh|tli|tmh|tn|to|tog|ton|tpi|tr|tru|ts|tsi|tsn|tso|tt|tuk|tum|tup|tur|tut|tw|twi|ty|tyv|udm|ug|uga|uig|uk|ukr|umb|und|ur|urd|uz|uzb|vai|ve|vec|ven|vi|vie|vls|vo|vol|vot|wa|wak|wal|war|was|wel|wen|wln|wo|wol|wuu|xal|xh|xho|yao|yap|yi|yid|yo|yor|za|zap|zea|zen|zh|zh\-classical|zh\-cn|zh\-min\-nan|zh\-tw|zh\-yue|zha|zho|zu|zul|zun):/i

CGI.pmのunescapeHTML()は変換してくれない文字実体参照がある。とりあえず見つけたのでは²とか。しかも変換できないなら放置してくれればいいのに、&と;だけは除去してくれたりするんで使えない。

他にまともなのは無いのかとぐぐったら、HTML::Entitiesというのがあるらしい。coreモジュールじゃないのでportsからインストール。が、うまくアンエスケープできない。うむぅ。もしかして自作しないといけないのか?

言語コードをあそこまで作りこんだら、流石に言語間リンクが赤リンクに混じりこんでくることは、ほぼなくなったかな。よかよか。

赤リンクリストを眺めてて知ったんだけど、[[Google:検索語]]と書けばgoogle検索へのリンクになるんだね。そんな記法、ヘルプに載ってないような気がするんだけど。一体どれだけ隠し機能があるんだぁ。って、MediaWikiのソースを読めってことなんかな。あと、<nowiki>...</nowiki>で囲まれた中はwiki記法は無効なんだね。それも対処しなきゃ。

とりあえずウィキペディアのダンプデータでどれだけの種類の実体参照が使われているのかの調査。つってもワンライナーとsort,uniqを繋げただけだけど。結果、7万種類ほど使われているけど、当然にほとんどが数値文字参照でこれは問題ない。

問題なのは文字実体参照で、試しにCGI.pmのunescapeHTML()で変換してみたけど、ほとんど変換できてないやん。出来てるのって& < > "の基本4種類くらい。役に立たんのー。

しかし、出力した中には謎な文字実体参照も含まれているんだけど。&A;とか&110;とか一体何だ?何に置換すればいいんだ?

デバッグとして集計機能で通常は100件のところを1000件まで出力してみたんだけど、下位にいくと色々問題のあるデータがあるなぁ。まだまだデバッグが必要か。ああしんど。一体いつになったら終われるのやら。

おお、初めてウィキペディアの自分の会話ページにメッセージが来た。厳密には「ようこそ」が初めてだけど、あれは定型文なんで除外して、意味のあるメッセージだと初めて。

で、内容はというと、私が改名提案している「Zynga」について、改名先である「ジンガ」の記事を書いてしまった人からのお詫び。私が改名提案したときは「Zynga」へのリダイレクトだけだったんで問題なかったんだけど、記事の中身が出来ると問題だな。内容的に「ジンガ」を「ジンガ (曖昧さ回避)」に改名して、その後に「Zynga」を「ジンガ」に改名するという段取りかな。提案修正が必要だけど、今日はもう遅いので明日にしよう。


あおやぎのさいと2.0 新人うぃきめでぃあん日記