Successfully reported this slideshow.
Pythonで
ブックマーク検索エンジンを
   作ってみた。

   ニコ生Pythonユーザー会
       (PyNLUG)
         かわ
本日のアジェンダ

• ニコ生Pythonユーザー会(co116049)について
• 自己紹介
• Pythonでブックマーク検索エンジン
  o  OpenID
  o 検索システム
  o 今後の展開




            200...
ニコ生Pythonユーザー会(co116049)

ニコニコ生放送界隈で、Pythonを愛好するゆる〜い集まり。



参加資格
• ニコニコ動画のアカウント登録している方(必須)
• Pythonを愛してやまない(任意)
• Pythonって...
ニコ生Pythonユーザー会(co116049)

参加方法
http://com.nicovideo.jp/community/co116049 にアクセス

                                         ...
ニコ生Pythonユーザー会(co116049)


参加特典
• コミュニティで放送ができる(ただしプレミア会員のみ)
• 誰かが放送されると、マイページに表示される

                       以上




      ...
自己紹介

HatenaID: kawa1128
Twitter: @kawa1128
ニコ生コミュニティ:co70366
                                 
     http://com.nicovideo....
自己紹介

主な使用言語(利用頻度順):
 Perl  Python C/C++ Ruby




                2009/12/26 プログラミング生放送勉強会 第2回
自己紹介

      自分のブックマークを整理したい!

              ↓
自分がブックマークしたということは、自分にとって、重要?

             ↓
        ちょっと検索してみよう

          ...
ブックマーク検索エンジン
結論
自分のブックマークをブックマークを一ヶ所で管理して、検索
 すれば、自分得?

検索エンジンにも興味あるし、作ってしまおう!!


類似サービス

・はてなのブックマーク(はてぶ)

→気にしない、気にしない。検...
ブックマーク検索エンジン
OpenID

・OpenID(オープンアイディー)とはウェブサイトによらず使用で
 きる認証システムの標準、およびそこで使用される識別子である。
                    (by Wikipedia 日...
ブックマーク検索エンジン
OpenIDの仕組み

1. End User(サイト利用者)がConsumer(自サイト)にアクセス
– Consumerに対して、End UserはIdentifierを渡す
– Consumerは受け取ったIde...
ブックマーク検索エンジン
OpenIDの仕組み 




              2009/12/26 プログラミング生放送勉強会 第2回
ブックマーク検索エンジン
OpenIDの例 はてなを利用した例
 1. OpenID認証を利用したサイトに対して、はてなの
    Identifier(http://www.hatena.ne.jp/kawa1128/)を渡す。
 2. 受け...
ブックマーク検索エンジン
OpenIDの例 はてなを利用した例
 受け取る情報
  openid.sig               xNttUpcaC57H/3vRPM= 
  openid.return_to         http://...
ブックマーク検索エンジン
OpenIDの例 Pythonコード例
 import openid.consumer.consumer
 import openid.store.filestore
 import openid.extensions...
ブックマーク検索エンジン
検索エンジン

  • 自分最適化                  
     (いまんとこスケールさせることは考えない)
  • そもそも、自分で登録するんだからノイズが少ない
    ので、スコアリングロジックは...
ブックマーク検索エンジン
検索エンジンのしゅるい

  • 形態素解析を利用したもの
    o 検索精度は割と高め
    o ディスク容量は中程度
    o Indexingに時間はかかる



  • N-gram方式を利用したもの
 ...
ブックマーク検索エンジン
クローラーとインデクサ

  • リンクの深さ 5段くらい?
  • 一度クロールしても、しばらくして、ブックマーク
    に新たに追加された場合再度クロール。それ以外の
    場合際クロールはしない。
  • 認...
ブックマーク検索エンジン
インデクサ & サーチャー

  1.スクレイピングして単語に分解。
  2.単語を単語DBに登録
  3.出現位置と、URLをロケーションDBに登録




          2009/12/26 プログラミング生...
ブックマーク検索エンジン
DB構成

 UserDB                   BookMarkDB                URLDB
 ----------------------   -------------------...
ブックマーク検索エンジン
宣伝!




      http://bs.kawa1128.jp/

      絶賛公開予定!!!!




         2009/12/26 プログラミング生放送勉強会 第2回
ブックマーク検索エンジン
宣伝!




      http://bs.kawa1128.jp/

      絶賛公開予定!!!!

                 未定!!




         2009/12/26 プログラミング...
この子たちのために完成せず。




    2009/12/26 プログラミング生放送勉強会 第2回
ブックマーク検索エンジン
そのた

  詳細は、はてなダイアリーでかいていこうと思うの
  で、そちらを参照くださいませ。

  → http://d.hatena.ne.jp/kawa1128/

  その他、個人的なことは

  → htt...
最後までお聞きくださり
ありがとうございました。




 2009/12/26 プログラミング生放送勉強会 第2回
Upcoming SlideShare
Loading in …5
×

Pythonで検索エンジン2

2,849 views

Published on

Published in: Business
  • Be the first to comment

Pythonで検索エンジン2

  1. 1. Pythonで ブックマーク検索エンジンを 作ってみた。 ニコ生Pythonユーザー会 (PyNLUG) かわ
  2. 2. 本日のアジェンダ • ニコ生Pythonユーザー会(co116049)について • 自己紹介 • Pythonでブックマーク検索エンジン o  OpenID o 検索システム o 今後の展開 2009/12/26 プログラミング生放送勉強会 第2回
  3. 3. ニコ生Pythonユーザー会(co116049) ニコニコ生放送界隈で、Pythonを愛好するゆる〜い集まり。 参加資格 • ニコニコ動画のアカウント登録している方(必須) • Pythonを愛してやまない(任意) • Pythonってよく分かんないけど、何か好き(任意) • Python大嫌い(任意) • ニシキヘビを飼っている(狩っているでも可) 2009/12/26 プログラミング生放送勉強会 第2回
  4. 4. ニコ生Pythonユーザー会(co116049) 参加方法 http://com.nicovideo.jp/community/co116049 にアクセス ←クリック 2009/12/26 プログラミング生放送勉強会 第2回
  5. 5. ニコ生Pythonユーザー会(co116049) 参加特典 • コミュニティで放送ができる(ただしプレミア会員のみ) • 誰かが放送されると、マイページに表示される                        以上 2009/12/26 プログラミング生放送勉強会 第2回
  6. 6. 自己紹介 HatenaID: kawa1128 Twitter: @kawa1128 ニコ生コミュニティ:co70366                                    http://com.nicovideo.jp/community/co70366 WEB:http://www.kawa1128.jp/ ニコ生での活動: • Python放送(メイン) • 気まぐれに歌う • 時々ピアノを弾く • 自分で撮った写真のスライドショー(延々30分) 2009/12/26 プログラミング生放送勉強会 第2回
  7. 7. 自己紹介 主な使用言語(利用頻度順):  Perl  Python C/C++ Ruby 2009/12/26 プログラミング生放送勉強会 第2回
  8. 8. 自己紹介 自分のブックマークを整理したい! ↓ 自分がブックマークしたということは、自分にとって、重要? ↓ ちょっと検索してみよう ↓ あれ、このページってこないだ「お気に入り」に入れなかっ たっけ? 2009/12/26 プログラミング生放送勉強会 第2回
  9. 9. ブックマーク検索エンジン 結論 自分のブックマークをブックマークを一ヶ所で管理して、検索 すれば、自分得? 検索エンジンにも興味あるし、作ってしまおう!! 類似サービス ・はてなのブックマーク(はてぶ) →気にしない、気にしない。検索エンジン作ってみたいよ! どうせなら、いろんな人に使って欲しいよね第2回 2009/12/26 プログラミング生放送勉強会
  10. 10. ブックマーク検索エンジン OpenID ・OpenID(オープンアイディー)とはウェブサイトによらず使用で きる認証システムの標準、およびそこで使用される識別子である。                    (by Wikipedia 日本語 版) ・自分でユーザー認証とかしなくても、他のところがやってくれる ↓ 自分でパスワードの管理をしなくてすむ。 ただし、ユーザー管理の必要はある。 利用例)ATND: http://atnd.org/ 2009/12/26 プログラミング生放送勉強会 第2回
  11. 11. ブックマーク検索エンジン OpenIDの仕組み 1. End User(サイト利用者)がConsumer(自サイト)にアクセス – Consumerに対して、End UserはIdentifierを渡す – Consumerは受け取ったIdentifierを元にIdentity Provider(実際に認 証するサイト)をDiscoveryする。 – End Userは、Identity Providerで、認証をする。 – Identity Providerから、Consumerにリダイレクトされてくる。  2009/12/26 プログラミング生放送勉強会 第2回
  12. 12. ブックマーク検索エンジン OpenIDの仕組み  2009/12/26 プログラミング生放送勉強会 第2回
  13. 13. ブックマーク検索エンジン OpenIDの例 はてなを利用した例 1. OpenID認証を利用したサイトに対して、はてなの Identifier(http://www.hatena.ne.jp/kawa1128/)を渡す。 2. 受け取ったら、Identiferをライブラリに渡して、Discoveryする 。 3. Discoveryした結果、認証するためのページのURIを得る。 4. そこにリダイレクトさせるように、HTTP Status 301をクライア ントにかえす。(この際に認証後にリダイレクトするページを 渡しておく) 5. クライアントのブラウザが認証するサイトを表示する。 6. 認証する。 7. Identify Providerから、リダイレクトされてくる。 8. 認証完了 2009/12/26 プログラミング生放送勉強会 第2回
  14. 14. ブックマーク検索エンジン OpenIDの例 はてなを利用した例 受け取る情報 openid.sig  xNttUpcaC57H/3vRPM=  openid.return_to  http://www.kawa1128.jp/test/openid/verify.cgi? janrain_nonce=2009-12- 23T15%3A14%3A08ZKCFGIu&openid1_claimed_id=http %3A%2F%2Fwww.hatena.ne.jp%2Fkawa1128%2F  janrain_nonce  2009-12-23T15:14:08ZKCFGIu  openid.response_nonce 2009-12-23T15:14:13ZmLDjrU  openid.claimed_id  http://www.hatena.ne.jp/kawa1128/  openid.mode  id_res  openid1_claimed_id http://www.hatena.ne.jp/kawa1128/  openid.signed  mode,claimed_id,identity,return_to,response_nonce,assoc_ handle  openid.identity  http://www.hatena.ne.jp/kawa1128/  openid.assoc_handle  1260465265:cPZRiL75:bf7e6ec7eb  2009/12/26 プログラミング生放送勉強会 第2回
  15. 15. ブックマーク検索エンジン OpenIDの例 Pythonコード例 import openid.consumer.consumer import openid.store.filestore import openid.extensions.sreg auth_uri = 'http://www.hatena.ne.jp/kawa1128/' openidsession = dict() store = openid.store.filestore.FileOpenIDStore("./store") consumer= openid.consumer.consumer.Consumer(openidsession, store) request = consumer.begin(auth_uri) urlroot = "http://www.kawa1128.jp" urlredirect = request.redirectURL(urlroot, urlroot + '/test/openid/verify.cgi') print 'Status: 301 Moved' print 'Location: ', urlredirect print  2009/12/26 プログラミング生放送勉強会 第2回
  16. 16. ブックマーク検索エンジン 検索エンジン • 自分最適化                    (いまんとこスケールさせることは考えない) • そもそも、自分で登録するんだからノイズが少ない ので、スコアリングロジックは単純に! • でも、技術的追求はしたいよね。 • 形態素解析とかは、むりだけどね。 というわけで、  DBとしてSQLite3を利用  形態素解析器として、MeCabを利用。 2009/12/26 プログラミング生放送勉強会 第2回
  17. 17. ブックマーク検索エンジン 検索エンジンのしゅるい • 形態素解析を利用したもの o 検索精度は割と高め o ディスク容量は中程度 o Indexingに時間はかかる • N-gram方式を利用したもの o 検索漏れがない o Indexingが早い o ディスク容量は結構使う 2009/12/26 プログラミング生放送勉強会 第2回
  18. 18. ブックマーク検索エンジン クローラーとインデクサ • リンクの深さ 5段くらい? • 一度クロールしても、しばらくして、ブックマーク に新たに追加された場合再度クロール。それ以外の 場合際クロールはしない。 • 認証とかされているとお手上げ。 • 一度インデックシングした情報は消さない • できれば、キャッシュとして、クロールしたページ は残しておきたい。 2009/12/26 プログラミング生放送勉強会 第2回
  19. 19. ブックマーク検索エンジン インデクサ & サーチャー 1.スクレイピングして単語に分解。 2.単語を単語DBに登録 3.出現位置と、URLをロケーションDBに登録 2009/12/26 プログラミング生放送勉強会 第2回
  20. 20. ブックマーク検索エンジン DB構成 UserDB BookMarkDB URLDB ---------------------- ----------------------- ---------------------- openid user_id URL user_id url_id url_id date WordDB LocationDB ----------------------- ---------------------- word url_id word_id word_id position 2009/12/26 プログラミング生放送勉強会 第2回
  21. 21. ブックマーク検索エンジン 宣伝! http://bs.kawa1128.jp/ 絶賛公開予定!!!! 2009/12/26 プログラミング生放送勉強会 第2回
  22. 22. ブックマーク検索エンジン 宣伝! http://bs.kawa1128.jp/ 絶賛公開予定!!!! 未定!! 2009/12/26 プログラミング生放送勉強会 第2回
  23. 23. この子たちのために完成せず。 2009/12/26 プログラミング生放送勉強会 第2回
  24. 24. ブックマーク検索エンジン そのた 詳細は、はてなダイアリーでかいていこうと思うの で、そちらを参照くださいませ。 → http://d.hatena.ne.jp/kawa1128/ その他、個人的なことは → http://www.kawa1128.jp/ Twitterで聞いてもおk → @kawa1128 で! 2009/12/26 プログラミング生放送勉強会 第2回
  25. 25. 最後までお聞きくださり ありがとうございました。 2009/12/26 プログラミング生放送勉強会 第2回

×