Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

1万件超の登録を実現したBotノウハウからマッシュアップまで

1,808 views

Published on

第11回ウィキばな
「1万件超の登録を実現したBotノウハウからマッシュアップまで」

http://wikibana.socoda.net/wiki.cgi?%c2%e8%bd%bd%b0%ec%b2%f3Wiki%a4%d0%a4%ca

Published in: Technology
  • Be the first to comment

  • Be the first to like this

1万件超の登録を実現したBotノウハウからマッシュアップまで

  1. 1. 1万件超の登録を実現したBotノウハウからマッシュアップまで 高久雅生 tmasao@acm.org saveMLAKシステム担当 (物質・材料研究機構) 1
  2. 2. 自己紹介 ― わたしとウィキ ―• 独立行政法人物質・材料研究機構(茨城県つくば市) – 科学情報室(主任エンジニア) – 専門図書館の運営(システム面でのサポート対応)• Code4Lib JAPANコアメンバー – 図書館におけるウェブ技術の活用• ウィキ体験 – ウィキペディアン(2003年から; 最近はブレイク中) • ボット経験あり: [[Wikipedia:広域ブロック/rangeblocklist]] – QwikWeb(2006年から) – Pukiwiki, Hiki, (MediaWiki) 2
  3. 3. NIMS図書室 3
  4. 4. 2011‐03‐11  15:44頃 4
  5. 5. 東北関東大震災、saveMLAKとわたし• 2011年3月11日 14:46:会議室で打合せ中• 停電・断水・TX運休により帰宅難民• 筑波大学春日キャンパスだけ通電しているという 情報を得たため、21時頃に筑波大学に移動、宿泊• ひたすら夜を徹して、避難所情報や交通情報を提 供し続けた、つくば市情報システム担当 (@tsukubais )さんのツイートに感動• ARG岡本さんのツイートをきっかけに savelibrary の 活動に参加 – 自分の被災体験+ウィキ経験+Code4Lib JAPAN+… 5
  6. 6. 東北関東大震災、saveMLAKとわたし (2)• 帰宅してすぐにsavelibrary@ウィキの施設情 報 を地図にまとめる作業を開始 3/12 19:26• カーリル のマッシュアップを作成、メンテナン ス – スクレイピング • 施設情報(所在地) + Calil緯度経度 → Google Maps埋め込み (kml) 7 http://twitter.com/#!/tmasao/status/46517451839647744
  7. 7. http://maps.google.co.jp/maps/ms?ie=UTF8&hl=ja&brcurrent=3,0x34674e0fd77f192f:0xf54275d47c665244,0&msa=0&msid=207257696541767388741.00049e3e44f8717e73cf3&z=6 8
  8. 8. http://twitter.com/tmasao/status/46523534608039936 9
  9. 9. http://twitter.com/#!/tmasao/status/47334763756920832 10
  10. 10. Savelibrary時代の地図ボット• @ウィキ編集画面のHTMLから図書館の被災情 報をスクレイピング• カーリル図書館API: – 図書館の名称、都道府県、市町村名など• 図書館の名前と照合してマッチしたものの住所 を取り出して、人手で緯度経度を付与してKML形 式に変換 11
  11. 11. savelibrary時代の地図ボットresult = ( text == formal ) or ( text == short ) or ( text.gsub( /[ ・「」¥(¥)]/, "" ) == formal.gsub( /[ ・「」¥(¥)]/, "" ) ) or ( text.gsub( /¥A.+?県/, "" ) == formal.gsub( /¥A.+?県/, "" ) ) or ( text.gsub( /[市区町村]立?/, "" ) == formal.gsub( /[市区町村]立?/, "" ) ) or ( text.gsub( /¥s*中央図書館¥Z/, "図書館" ) == formal.gsub( /¥s*中央図書館¥Z/, "図書館" ) ) or ( text.gsub( /¥s*付属図書館¥Z/, "附属図書館" ) == formal.gsub( /¥s*付属図書館¥Z/, "附属図書館" ) ) or ( text.gsub( /¥s*(中央|本)館¥Z/, "" ) == formal.gsub( /¥s*(中央|本)館¥Z/, "" ) ) or ( text.gsub( /([市区町村])?立?(中央)?図書館¥Z/, ¥1図書館 ) == formal.gsub( /([市区町村])?立?(中央)?図書館¥Z/, ¥1図書館 ) ) or ( text.gsub( /本館¥Z/,  ) == formal.gsub( /本館¥Z/,  ) ) or ( text.gsub( /公民館[  ]*図書室¥Z/, 公民館 ) == formal.gsub( /公民館[  ]*図書室¥Z/, 公民館 ) ) or ( text.gsub( /[ ・「」¥(¥)]/, "" ).gsub( /学院大学/, 学院 ) == formal.gsub( /[ ・「」¥(¥)]/, "" ).gsub( /学院大学/, 学院 ) ) or ( text.gsub( /ケ/, "ヶ" ) == formal.gsub( /ケ/, "ヶ" ) ) or 12
  12. 12. savelibraryからsaveMLAKへ• このボット用スクレイピングスクリプトを活かし て、移行用データを作成(atwiki2mediawiki.rb) – 都道府県単位から、各図書館施設ページ単位へ – テキストを@ウィキ書式からMediaWikiへ変換 – (@ウィキ上の図書館リストの書式スタイルに揺れ があるのに気付かず、あちこち抜けてしまい、編集 者のみなさんに迷惑かけました…) 13
  13. 13. saveMLAKにおける施設ページ• 図書館、博物館、文書館、公民館• 不特定多数の手によって編集されたページ• 基本情報+αはさまざまな「リスト」データを元に一 括登録 (createpage)• 新規登録以外にも、編集労力・人手を省力化でき ることは多い – 「カテゴリ」(cat) – 「よみ」(check_yomi) – 「緯度経度」(geocode)• MediaWikiは編集・検索等のAPIがある。• Pywikipediabot!!! 14
  14. 14. 一括登録用ボット: createpage.py• 一件一ページ単位の登録• 重複登録を防ぐ、上書き登録を防ぐ• サーバ負荷への対応• 館種ごとに一括登録用データを提供してもらい作業 – 元データリストごとに難しさが違う • 元リスト側でも頻繁に更新が続いている(グーグル避難所情報) • リスト調査後に市町村合併…(公民館名鑑) – M: 85% (4565/5385)  「インターネットミュージアム」由来 – A: 41% (66 / 160) 「国立公文書館リンク集」ほか由来 – K: 91% (5732 / 6278) 「グーグル避難所マップ」、「全国公民 会連合会」• 一括登録されたページの一覧と、すでにページに情報 があるため、重複/上書きを避けて更新しなかったペー ジリストを出力 15
  15. 15. 公民館リストデータの登録• グーグル避難所情報 – http://shelter‐info.appspot.com/maps • (Google Fusion Tables) – 基本情報(名称、住所、緯度経度、電話番号) – 避難者情報(定員、避難者数) – 483箇所• 公民館連合会による『公民館名鑑』調査リスト – 基本情報(名称、住所、電話番号) – 5249箇所 19
  16. 16. 一括登録ボットだけではダメで・・・• 基本情報の抜け – カテゴリ:きちんと付いていないとリスト化できない… – よみ:カテゴリ一覧が悲しいことに – 緯度経度:地図に反映できない• どのページに追記が必要か?という情報が必要 → リストする。• ある程度自動化/省力化が必要 → カテゴリの自動付与:cat.py → Geocoding (Google Maps API)  → よみ入力補助• Pywikipediabot 20
  17. 17. 編集支援ボット (1) 緯度経度情報を住所から自動補完• Google Maps API から自動追記• 自動でGeocodingできないものはリストページ作業 待ちとしてリスト化 – [[利用者:Masao/NoGeocode]] – 市町村合併や住所誤字を除けばおおむね自動化可能• 課題:GMaps APIの利用制限(IPアドレスあたり、 2500件/日まで) 22
  18. 18. 編集支援ボット (2) よみの入力補助• 現状でよみ情報がはいっていない項目を都道府県単位 で一覧化 • [[利用者:Masao/Yomi_check]]./check_yomi.py ‐cat:博物館 ‐inputYomi for SLランド 3Dホラー館那須駅? SLらんど3Dほらーかんなすえき>>> SLランド 3Dホラー館那須駅 <<<‐ |よみ=+ |よみ=SLらんど3DほらーかんなすえきDo you want to accept these changes? ([y]es, [N]o) yYomi for かかみがはら航空宇宙科学博物館? 23…
  19. 19. 活用例(マッシュアップ)• 例: [[津波浸水地域]] – Semantic MediaWiki からのデータ出力機能を利用 • [[特別:問い合わせ]] – saveMLAKのKML出力データを、浸水域マップをした 東京大学生産技術研究所 沢田・竹内研究室の成 果とマッシュアップ他にも、アイデアさえあれば、もっともっと活用できるはず!災害復旧支援を! 24
  20. 20. 25
  21. 21. まとめと今後の課題• MLAK施設リストデータの確保を:オープンデータの必 要性• 次に編集すべきページを推定するための一覧ページ• 情報集約作業のたすけになるよう – 小人さん( 編集者)のための、縁の下の力持ち的なボット を目指して…。MasaoBotは one of them …  – たとえば 、ボットクン(kumo‐botkun) – 「高度に発達した編集者はボットと区別がつかない」• (ソースコード) – http://github.com/masao/saveMLAK/ 26

×