SlideShare a Scribd company logo
1 of 57
Download to read offline
Internship
at
Preferred Infrastructure

Sotaro Karasawa (sotarok)
Yet Another PHP Programmer
Agenda
• 目標
• 転置インデックス用ライブラリ libkorakuen
 –   中間発表までのおさらい
 –   新しいアプローチでの実装
 –   実装にあたってのポイント
 –   英語 Wikipedia のインデックス作成
 –   デモ
 –   libkorakuen のこれから
• インターンを終えて


                              Copyright © sotarok @ PFI.
目標
• 転置インデックス用のライブラリをつくる!
 – メモリに乗り切らないような大規模で使える
 – インデックスファイルを圧縮する
 – Sedue で使える




                     Copyright © sotarok @ PFI.
転置インデックス用ライブラリ
libkorakuen
中間発表までのアプローチ


   ⽂書            読み込み



                   libkorakuen
 Temporary
   Index
             On Memory
                             Encoder
               Index



   Index

                                 Copyright © sotarok @ PFI.
中間発表までのアプローチ


   ⽂書                           読み込み



                                    libkorakuen
 Temporary
   Index
                         On Memory
                                                  Encoder
                           Index
             Keyword: Document (Pos, Pos, ...), Document (Pos , ...), ...
             Keyword: Document (Pos, Pos, ...), Document (Pos , ...), ...
   Index
             Keyword: Document (Pos, Pos, ...), Document (Pos , ...), ...
             ...                                     Copyright © sotarok @ PFI.
中間発表までのアプローチ


   ⽂書            読み込み



                   libkorakuen
 Temporary
   Index
             On Memory
                             Encoder
               Index



   Index

                                 Copyright © sotarok @ PFI.
中間発表までのアプローチ


   ⽂書




 Temporary   書き出す         libkorakuen
   Index
                    On Memory
                                    Encoder
                      Index



   Index

                                        Copyright © sotarok @ PFI.
中間発表までのアプローチ


   ⽂書                   読み込み




 Temporary   書き出す         libkorakuen
   Index
                    On Memory
                                    Encoder
                      Index



   Index

                                        Copyright © sotarok @ PFI.
中間発表までのアプローチ


   ⽂書



                   libkorakuen
 Temporary
   Index
             On Memory
                             Encoder
               Index



   Index

                                 Copyright © sotarok @ PFI.
中間発表までのおさらい
• 中間発表時
  – ⼀応インデックスは作れた
  – 10万⽂書程度で実験もOK



ところが...




                    Copyright © sotarok @ PFI.
問題点
• ⼀時インデックスに,Tokyo Cabinet を使っていた




                          Copyright © sotarok @ PFI.
問題点
• ⼀時インデックスに,Tokyo Cabinet を使っていた


   Keyword   Index
  Keyword2   Index
     ...      ...




                          Copyright © sotarok @ PFI.
問題点
• ⼀時インデックスに,Tokyo Cabinet を使っていた


   Keyword   Index   Index2
  Keyword2   Index
     ...      ...




                              Copyright © sotarok @ PFI.
問題点
• ⼀時インデックスに,Tokyo Cabinet を使っていた


   Keyword   Index   Index2   Index3
  Keyword2   Index
     ...      ...




                                Copyright © sotarok @ PFI.
問題点
• ⼀時インデックスに,Tokyo Cabinet を使っていた


   Keyword   Index   Index2   Index3
  Keyword2   Index
     ...      ...


• メモリから⼀時インデックスに書き出すたびに
  Tokyo Cabinet上での「Append」が発⽣
• 巨大なデータを扱うと途中から⼊らなくなる

                                Copyright © sotarok @ PFI.
アプローチを考え直す


  英語のWikipediaすべてが目標




  英語のWikipediaを最低目標とし
   可能な限りスケールする設計
                        Copyright © sotarok @ PFI.
新しいアプローチ
•   MapReduce 的な考え⽅!
•   途中でインデックスを作成せずにすべて読み込む
•   それぞれのファイルをソートする
•   2つずつマージする
•   インデックスを作成する




                      Copyright © sotarok @ PFI.
読み込む
何も考えずにとりあえず読み込む
              On Memory
               keyword id   doc id            pos
  ⽂書
                   1          1                 0
                   2          1                 4
                   3          1               10
libkorakuen        4          2                 0
                   5          2                 8
                   1          2               12
                   6          3                 0
                   ...        ...              ...

                                     Copyright © sotarok @ PFI.
何も考えずにとりあえず読み込む
              On Memory
               keyword id   doc id            pos
  ⽂書
                   1          1                 0
                   2          1                 4
                   3          1               10
libkorakuen        4          2                 0
                   5          2                 8
                   1          2               12
                   6          3                 0
                   ...        ...              ...

                                     Copyright © sotarok @ PFI.
何も考えずにとりあえず読み込む
              On Memory
               keyword id   doc id            pos
  ⽂書
                   1          1                 0
                   2          1                 4
                   3          1               10
libkorakuen        4          2                 0
                   5          2                 8
                   1          2               12
                   6          3                 0
                   ...        ...              ...

                                     Copyright © sotarok @ PFI.
何も考えずにとりあえず読み込む
              On Memory
               keyword id   doc id            pos
  ⽂書
                   1          1                 0
                   2          1                 4
                   3          1               10
libkorakuen        4          2                 0
                   5          2                 8
                   1          2               12
                   6          3                 0
                   ...        ...              ...

                                     Copyright © sotarok @ PFI.
何も考えずにとりあえず読み込む
              On Memory
               keyword id   doc id            pos
  ⽂書
                   1          1                 0
                   2          1                 4
                   3          1               10
libkorakuen        4          2                 0
                   5          2                 8
                   1          2               12
                   6          3                 0
                   ...        ...              ...

                                     Copyright © sotarok @ PFI.
何も考えずにとりあえず読み込む
              On Memory
               keyword id   doc id            pos
  ⽂書
                   1          1                 0
                   2          1                 4
                   3          1               10
libkorakuen        4          2                 0
                   5          2                 8
                   1          2               12
                   6          3                 0
⼀時ファイル
                   ...        ...              ...

                                     Copyright © sotarok @ PFI.
分割された⼀時ファイル

  ⽂書


              keyword id   doc id   pos
                  1          1      0
libkorakuen       2          1      4
                  3          1      10
                  4          2      0
                  5          2      8
                  1          2      12
⼀時ファイル            6          3      0
                  ...        ...    ...

                                          Copyright © sotarok @ PFI.
ソートする
ソートする
                 On Memory
                  keyword id   doc id            pos
     ⽂書
                      1          1                 0
                      2          1                 4
                      3          1               10
   libkorakuen        4          2                 0
                      5          2                 8
                      1          2               12
⼀時ファイル
                      6          3                 0
                      ...        ...              ...

                                        Copyright © sotarok @ PFI.
ソートする
                 On Memory
                  keyword id   doc id            pos
     ⽂書
                      1          1                 0
                      1          2               12
                      2          1                 4
   libkorakuen        3          1               10
                      4          2                 0
                      5          2                 8
⼀時ファイル
                      6          3                 0
                      ...        ...              ...
      ソート済み
      ⼀時ファイル                            Copyright © sotarok @ PFI.
マージする
マージする

                     ソート済み    ソート済み          ソート済み
                    ⼀時ファイル   ⼀時ファイル   ...   ⼀時ファイル
 ⽂書                    1        2              n




      libkorakuen



  マージ済み
 ⼀時ファイル
    1
マージする

                     ソート済み    ソート済み          ソート済み
                    ⼀時ファイル   ⼀時ファイル   ...   ⼀時ファイル
 ⽂書                    3        4              n




      libkorakuen



  マージ済み              マージ済み
 ⼀時ファイル             ⼀時ファイル
    1                  2
マージする

                     ソート済み    ソート済み
                    ⼀時ファイル   ⼀時ファイル
 ⽂書                    n-1      n




      libkorakuen



  マージ済み              マージ済み          マージ済み
 ⼀時ファイル             ⼀時ファイル   ...   ⼀時ファイル
    1                  2              2/n
マージする

 ⽂書




libkorakuen



ひとつの大きな
  マージ済み
 ⼀時ファイル
インデックス作成
インデックス作成
              Keyword Document (Pos, Pos, ...),
                       Document (Pos , ...), ...
                       Document (Pos , ...), ...
 ⽂書
                       Document (Pos , ...), ...
              Keyword Document (Pos, Pos, ...),
                       Document (Pos , ...), ...
libkorakuen            Document (Pos , ...), ...
                       Document (Pos , ...), ...
              Keyword Document (Pos, Pos, ...),
                       Document (Pos , ...), ...
ひとつの大きな
  マージ済み                Document (Pos , ...), ...
 ⼀時ファイル
                       Document (Pos , ...), ...
インデックス作成
                    Keyword Document (Pos, Pos, ...),
              pos            Document (Pos , ...), ...
               0
                             Document (Pos , ...), ...
 ⽂書
                             Document (Pos , ...), ...
                    Keyword Document (Pos, Pos, ...),
              pos            Document (Pos , ...), ...
libkorakuen   122            Document (Pos , ...), ...
                             Document (Pos , ...), ...
                    Keyword Document (Pos, Pos, ...),

ひとつの大きな       pos            Document (Pos , ...), ...
  マージ済み       456            Document (Pos , ...), ...
 ⼀時ファイル
                             Document (Pos , ...), ...
インデックス作成
              インデックス!

 ⽂書




libkorakuen
ポイント
ポイント
• 簡潔で,Sedue にも使いやすそうなAPI
 – ⽂書数分だけ Addして
 – BuildIndexするだけ
 – Search で探す




                           Copyright © sotarok @ PFI.
Add
• 単語の分割やポジションはライブラリの外で
• ⽂書ID(外部で管理してるものでOK)
 – 自動的に内部でIDを振りなおす
• 単語とその出現場所のリスト(vector)
 – 単語IDも⽣成




                          Copyright © sotarok @ PFI.
Search
• 単語をわたす (結果を⼊れるvectorもわたす)
• その単語の出現するドキュメントとポジションが
  得られる




                      Copyright © sotarok @ PFI.
圧縮
• 中間発表からかわらず,Variable Byte Code




                             Copyright © sotarok @ PFI.
Variable Byte Code

3: 00000000 00000000 00000000 00000011

            3: 10000011




                               Copyright © sotarok @ PFI.
Variable Byte Code

3: 00000000 00000000 00000000 00000011

              3: 10000011


       Byte
              ?


                               Copyright © sotarok @ PFI.
圧縮
•   ドキュメントIDのリスト
•   昇順にソートされている
•   前の⽂書との差分に変換
•   差分とった整数をエンコード




                    Copyright © sotarok @ PFI.
英語インデックスの作成
• 単語数: 約 1500 万(たぶん)
• ドキュメント: 約 300万
• 元⽂書: 8.9 GB

• 作成時間: 1:30:37.09
• 作成後インデックス:6.1 GB
 – ドキュメントIDを振りなおしているおかげでほとん
   どがものすごく⼩さい整数 → 圧縮率良



                       Copyright © sotarok @ PFI.
デモ
その他のポイント
• テストケースかきました
 – まだ GetKeywordID, GetDocID しかない




                                    Copyright © sotarok @ PFI.
その他のポイント2
• ライブラリ検証用プログラム (デモしたやつ)
 – ii_search
 – ii_check




                      Copyright © sotarok @ PFI.
これからの libkorakuen
これからの libkorakuen
• Sedue に
• テストケースかきまくる必要性
• ソート/マージ はスレッド使えば並列作業ができ
  るはず




                     Copyright © sotarok @ PFI.
インターンを終えて
成果として
• Tokyo Dystopia を使っていては作れない大きさの
  転置インデックスが作れるライブラリが作成でき
  た




                          Copyright © sotarok @ PFI.
やりたかったのにできなかった
• Sedue への組み込み
• PHP 関連のライブラリ
 – これは趣味でもできそうなので近いうち実装する




                     Copyright © sotarok @ PFI.
その他さまざまな思い
• 技術的なことに関して
 – アルゴリズムやデータ構造を考えてプログラムを
   組むこと
 – ライブラリを利用するか自分で実装するか
 – 実装の背景にある理論や研究
• 技術者として
 – 自分の知らない分野のことを勉強するのは楽しい
 – PHP とか怖くないという自信(何
• まとまらないので近⽇中にブログに書きます!


                     Copyright © sotarok @ PFI.
ありがとうございました
お世話になりました!

More Related Content

Viewers also liked

Heart Attack الازمة القلبية
Heart Attack الازمة القلبيةHeart Attack الازمة القلبية
Heart Attack الازمة القلبية
amr hassaan
 
Ad Words Optimizacion
Ad Words  OptimizacionAd Words  Optimizacion
Ad Words Optimizacion
Juan Pittau
 
Caribbean higher education seen with European eyes
Caribbean higher education seen with European eyesCaribbean higher education seen with European eyes
Caribbean higher education seen with European eyes
Fabio Nascimbeni
 
γραπτές ανακεφαλαιωτικές εξετάσεις γυμνάσιο
γραπτές ανακεφαλαιωτικές εξετάσεις γυμνάσιογραπτές ανακεφαλαιωτικές εξετάσεις γυμνάσιο
γραπτές ανακεφαλαιωτικές εξετάσεις γυμνάσιο
Christos Gotzaridis
 
Saude mental europa oms
Saude mental europa omsSaude mental europa oms
Saude mental europa oms
jsoeiro
 
Optify presentation buzz to bucks
Optify presentation   buzz to bucksOptify presentation   buzz to bucks
Optify presentation buzz to bucks
Optify
 
Vilniaus Universiteto Studijų Tarptautiškumas
Vilniaus Universiteto Studijų TarptautiškumasVilniaus Universiteto Studijų Tarptautiškumas
Vilniaus Universiteto Studijų Tarptautiškumas
Dainius Jakučionis
 
Pictures Of Earth Takeb By Astronaut Sunita Williams
Pictures Of Earth Takeb By Astronaut Sunita WilliamsPictures Of Earth Takeb By Astronaut Sunita Williams
Pictures Of Earth Takeb By Astronaut Sunita Williams
amr hassaan
 

Viewers also liked (16)

Registro anecdótico
Registro anecdóticoRegistro anecdótico
Registro anecdótico
 
سهل وصعب
سهل وصعبسهل وصعب
سهل وصعب
 
Heart Attack الازمة القلبية
Heart Attack الازمة القلبيةHeart Attack الازمة القلبية
Heart Attack الازمة القلبية
 
Dillard check it out
Dillard check it outDillard check it out
Dillard check it out
 
AdWords Gestion
AdWords GestionAdWords Gestion
AdWords Gestion
 
CRC Network | Financial Implications of the CRC on the Private Sector
CRC Network | Financial Implications of the CRC on the Private SectorCRC Network | Financial Implications of the CRC on the Private Sector
CRC Network | Financial Implications of the CRC on the Private Sector
 
7 bills and 7 ways to save
7 bills and 7 ways to save7 bills and 7 ways to save
7 bills and 7 ways to save
 
Ad Words Optimizacion
Ad Words  OptimizacionAd Words  Optimizacion
Ad Words Optimizacion
 
Caribbean higher education seen with European eyes
Caribbean higher education seen with European eyesCaribbean higher education seen with European eyes
Caribbean higher education seen with European eyes
 
Case study: Samenwerking Wikipedia met de Openbare Bibliotheek Oosterhout (Th...
Case study: Samenwerking Wikipedia met de Openbare Bibliotheek Oosterhout (Th...Case study: Samenwerking Wikipedia met de Openbare Bibliotheek Oosterhout (Th...
Case study: Samenwerking Wikipedia met de Openbare Bibliotheek Oosterhout (Th...
 
Internet factbook (diritto_&_politica)
Internet factbook (diritto_&_politica)Internet factbook (diritto_&_politica)
Internet factbook (diritto_&_politica)
 
γραπτές ανακεφαλαιωτικές εξετάσεις γυμνάσιο
γραπτές ανακεφαλαιωτικές εξετάσεις γυμνάσιογραπτές ανακεφαλαιωτικές εξετάσεις γυμνάσιο
γραπτές ανακεφαλαιωτικές εξετάσεις γυμνάσιο
 
Saude mental europa oms
Saude mental europa omsSaude mental europa oms
Saude mental europa oms
 
Optify presentation buzz to bucks
Optify presentation   buzz to bucksOptify presentation   buzz to bucks
Optify presentation buzz to bucks
 
Vilniaus Universiteto Studijų Tarptautiškumas
Vilniaus Universiteto Studijų TarptautiškumasVilniaus Universiteto Studijų Tarptautiškumas
Vilniaus Universiteto Studijų Tarptautiškumas
 
Pictures Of Earth Takeb By Astronaut Sunita Williams
Pictures Of Earth Takeb By Astronaut Sunita WilliamsPictures Of Earth Takeb By Astronaut Sunita Williams
Pictures Of Earth Takeb By Astronaut Sunita Williams
 

Recently uploaded

Recently uploaded (10)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

Internship at PFI