はてなダイアリーキーワードをつくってみたよ

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    はてなダイアリーキーワードをつくってみたよ - Presentation Transcript

    1. はてなダイアリーキーワード をつくってみたよ Tsukasa OISHI
    2. はてなダイアリーキーワードとは ■ はてなダイアリー    株式会社はてなが運営している Web 日記 ■ はてなダイアリーキーワード    はてなユーザが共有するキーワード   ▼ キーワードごとに専用ページがある    ・キーワードの説明    ・関連商品、広告    ・キーワードが最近使われた日記の一覧    ・などなど   ▼ 自動リンク     日記中にキーワードが現れると、専用ページへのリンク    を自動ではる   
    3. はてなダイアリーキーワードをつくりたい ■ 野良ブログでもはてなダイアリーキーワードを使いたい タグやカテゴリを記事ごとに指定するのが メンドくさくなってきた   ▼ はてなの API がある    ・楽チン    ・でもつまんない   ▼ つくってみよう    ・技術者のはしくれだし    ・なによりおもしろそう    ・意地でも Ruby でやってみる (Rubyist だもの )
    4. キーワードの自動リンク ■ 自動リンクの方法   ▼ 日記の保存時に、リンク処理を施してから DB へ     ・パフォーマンスの低下が抑えられる     ・新しいキーワードが登録されたときの対応が大変 ・日記を編集したいときも面倒   ▼ 日記の表示時に、リンク処理を施してから View へ     ・パフォーマンスが低下するかも   ・新しいキーワードが登録されても大丈夫
    5. キーワードを探し出す ■ はてなでの登録キーワード数    228,758 語のキーワード (2008/8/23 16:56) ■ すごく重そう 日記の中から 228,758 語のキーワードのどれが 使われているのかを探し出さなきゃ   
    6. 正規表現 ■ 文章の 検索といえば正規表現 228,758 語のキーワードを探し出す正規表現なんて あるの ?   ▼ あった  ・はてなが用意していた ・ 2730kb の正規表現 ▼ 試してみる    ・ 6000 字程度の文章    ・ 0.810735940933228 秒  
    7. オートマトン ■ 正規表現では遅い  そもそも正規表現の仕組みはどうなっているのだろう    ▼ 非決定性オートマトン (NFA)     /a+/     a ε   ・繰り返しを考慮しなければならないから大変   ・非決定性があるなら決定性もあるはず
    8. 決定性オートマトン(DFA) ■ 決定性オートマトンを考える   ・キーワード検出は一意に状態遷移が決まる 食 べ も の か た す ぎ
    9. 実現方法 ■ 木構造   単純に考えてこれ   ▼ ハッシュ木     ・速そう     ・だけどメモリを食いそう ▼ キーワードの検出     1. キーワード検出のためのハッシュ木を作る     2. 対象の文章を最初から一文字ずつチェック
    10. ハッシュ木 キーワード  : やきにく、やきとり、やきにんにく tree = { “ や” => { “ き” => { “ に” => { “ く” =>“EN”, “ ん” => { “ に” => { “ く” => “EN” } } }, “ と” => { “ り” => “EN” } } } } }
    11. キーワードの検出  「ぼ」「く」「は」 -> 一致せず  「や」 ->  tree.has_key?(“ や” ) #=> true  「き」 ->  tree[“ や” ].has_key?(“ き” ) #=> true  「に」 ->  tree[“ や” ][“ き” ].has_key?(“ に” ) #=> true  「く」 ->  tree[“ や” ][“ き” ][“ に” ].has_key?(“ く” ) #=> true         tree[“ や” ][“ き” ][“ に” ][“ く” ] == “EN” 検出 ! 「が」「す」「き」 -> 一致せず キーワード  やきにく、やきとり、やきにんにく 対象の文章 ぼくはやきにくがすき
    12. 実装 ■ ハッシュのキー  ・ UTF-8 での一文字  ・ Rails だし  ・本当は一バイトごとにしたほうがいい ■ キーワードサーバ  ・通信は Rinda(dRuby) で実現   キーワードサーバ Tuple space [:req, “I love Ruby”] [:req, nil] [:res, “I love <a>Ruby</a>”] [:res, nil]
    13. 結果 ■ 測定  ・はてなのキーワード 228,758 語を使用  ・ 6000 字程度の文章を対象   ▼ 結果   ・ハッシュ木の作成  10.263402 秒   ・メモリの消費量   142Mb   ・キーワードの検出  0.010049 秒   ・キーワードの追加  10e-6 秒 ■ 実際に見てみる http://www.kaeruspoon.net/keywords
    14. 他の方法 ■ double array  ・ MeCab などに使われている  ・新しいキーワードの追加で array が壊れる  ・ググると google の求人広告が !  ・いつか試したい  
    15. おしまい Thanks!

    + tsukasa.oishitsukasa.oishi, 2 years ago

    custom

    622 views, 0 favs, 1 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 622
      • 599 on SlideShare
      • 23 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 1
    Most viewed embeds
    • 23 views on http://okyuu.com

    more

    All embeds
    • 23 views on http://okyuu.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories