1 / 22

重複レコードの多い 大規模トライ辞書の圧縮

重複レコードの多い 大規模トライ辞書の圧縮. 矢田 晋 † , 森田 和宏 泓田 正雄,青江 順一 徳島大学工学部 † 学術振興会 特別研究員. はじめに. 重複レコードの多い辞書 レコードを必要としないもの (例:キーワードのリスト) 統計量をレコードとするもの (例: N-gram 言語モデル) etc…. トライ辞書. DAWG 辞書. 圧縮. 木構造. グラフ構造. 検索性能 そのまま. ポイント. どのように有効なのか トライの共通部分木をマージ 重複レコードが多いほど小さくなる どうやって構築するのか

angelo
Télécharger la présentation

重複レコードの多い 大規模トライ辞書の圧縮

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 重複レコードの多い大規模トライ辞書の圧縮 矢田 晋†,森田 和宏 泓田 正雄,青江 順一 徳島大学工学部 †学術振興会 特別研究員 重複レコードの多い大規模トライ辞書の圧縮

  2. はじめに • 重複レコードの多い辞書 • レコードを必要としないもの (例:キーワードのリスト) • 統計量をレコードとするもの (例:N-gram 言語モデル) • etc… トライ辞書 DAWG 辞書 圧縮 木構造 グラフ構造 検索性能 そのまま 重複レコードの多い大規模トライ辞書の圧縮

  3. ポイント • どのように有効なのか • トライの共通部分木をマージ • 重複レコードが多いほど小さくなる • どうやって構築するのか • 整列済みのキー集合から DAWG を構築 • 構築時間は辞書の規模に比例 (トライと同じ) • どのくらい有効なのか • Google N-gram データで実験 • 辞書サイズ:頻度 1/3, 対数頻度 1/5, レコードなし 1/7 応用は限定的 意外と簡単 検索性能は同等 重複レコードの多い大規模トライ辞書の圧縮

  4. DAWG は… 「どのように有効なのか」 重複レコードの多い大規模トライ辞書の圧縮

  5. トライと DAWG トライ (Fredkin 1960) DAWG (Adel’son-Vel’skii and Landis 1962) グラフ構造 共通部分木をマージする • 木構造 • 文字を遷移ラベルとする d # a d a l l # b e # b e d # l l l # c a l l # c a l l # e e l l # 状態数:23 ⇒ 9 遷移数:22 ⇒ 12 bad, ball, bed, bell, call, cell 重複レコードの多い大規模トライ辞書の圧縮

  6. DAWG とレコード 重複レコードなし 重複レコードあり マージできないことがある • まったくマージできない a d d # b e # a l l # l b e d # c a l l # l l # e c a l l # e l l # bad = ■, ball = ■, bed = ■ bell = ■, call = ■, cell = ■ 状態数:23 ⇒ 10 遷移数:22 ⇒ 12 bad = ■, ball = ■, bed = ■ bell = ■, call = ■, cell = ■ 重複レコードの多い大規模トライ辞書の圧縮

  7. DAWG の有効性 • 特長 • 重複レコードの多いトライ辞書の圧縮に有効 • トライと同等の検索性能 • 応用例 はてなキーワードや Wikipedia の記事タイトル デモ (Yoshinaga and Kitsuregawa 2009) 重複レコードの多い大規模トライ辞書の圧縮

  8. DAWG は… 「どうやって構築するのか」– 概要と従来手法 – 重複レコードの多い大規模トライ辞書の圧縮

  9. DAWG の構築方法 • 従来手法 • 基本戦略 • 等価な     をマージ • 実現方法 • 二段階手法:トライをDAWG に変換 • 逐次手法:整列済みのキー集合から DAWG を構築(Daciuk et al. 2000, Ciura and Deorowicz 2001) • 提案手法 • 基本戦略 • 等価な     をマージ 状態 大規模化が難しい 逐次手法で 簡単に実装できる 効率的な実装は 手間がかかる 遷移 重複レコードの多い大規模トライ辞書の圧縮

  10. 二段階手法(状態をマージ) • トライを介して DAWG を構築する • 欠点:作業領域が大きい トライをメモリ上に 展開するため d # a l l # b e d # a d l l # b e # l c a l l # c a l l # e l l # e まずはトライを構築 完成図 重複レコードの多い大規模トライ辞書の圧縮

  11. 二段階手法(状態をマージ) • トライを介して DAWG を構築する • 欠点:作業領域が大きい トライをメモリ上に 展開するため d # a l l # e b e d # a d l l # b e # l l c a l 完成 l # c a l l # e e l l # e トライを DAWG に変換 完成図 重複レコードの多い大規模トライ辞書の圧縮

  12. 逐次手法(状態をマージ) • キーを辞書順に登録 • 確定した順に     をマージ 状態 トライを介さず DAWG を構築 d # a l l # e b e d # a d l l l # b e # l c a l 完成 l # c a l l # e e l l # e キー集合から DAWG を構築 完成図 重複レコードの多い大規模トライ辞書の圧縮

  13. DAWG は… 「どうやって構築するのか」– データ構造と提案手法 – 重複レコードの多い大規模トライ辞書の圧縮

  14. DAWG のデータ構造 隣接行列 (却下) 隣接リスト (採用) メモリ消費が小さい DAWG の構築に最適 • メモリ消費が大きい 0 c, 4 b, 1 1 e, 2 a, 2 2 l, 6 d, 3 3 #, ■ … … a d b e # 1 2 3 DAWG を構築してから別の データ構造に変換できる 0 c l a l # 4 5 6 7 e 重複レコードの多い大規模トライ辞書の圧縮

  15. マージ対象の変更 状態をマージ 遷移をマージ 遷移を個別にマージ • 状態単位でマージ 0 c, 4 b, 1 0 c, 4 b, 1 1 e, 2 a, 2 1 e, 2 a, 2 … … … … これまでの完成図 状態と遷移の置き換え a d b e # a d # l b e l l # c a l l # a l e c e 重複レコードの多い大規模トライ辞書の圧縮

  16. 逐次手法(遷移をマージ) • キーを辞書順に登録 • 確定した順に     をマージ 遷移 視点の切り替え による単純化 d # a l l # a d # b e d # b e l l # l l # a l c e c a l l # 完成 完成図 e l l # 重複レコードの多い大規模トライ辞書の圧縮

  17. うれしいポイント 状態をマージするには 遷移をマージするには Dawg: HashMap<Transition> Transition: Child, Sibling, Label Child: Reference (矢印) Sibling: Reference (矢印) Label: Alphabet (文字) • Dawg: HashMap<State> • State: List<Transition> • Transition: Child, Label • Child: Reference (矢印) • Label: Alphabet (文字) 見つけやすい a a b b c c 等価 等価 d d a a e e 重複レコードの多い大規模トライ辞書の圧縮

  18. DAWG は… 「どのくらい有効なのか」 重複レコードの多い大規模トライ辞書の圧縮

  19. 実験設定 • 実験環境 • Dell Optiplex 760 • CPU: Pentium® Dual-Core 2.50GHz • RAM: 8GB DDR2 SDRAM • OS: 64bit Ubuntu 8.10 Desktop • コーパス • Google N-gramデータ(Kudo and Kazawa 2007) • キー: 約 4 億件の 3-gram • 遷移数の上限:約 4 億 394,482,216 件 作業領域は約 5.6GB 重複レコードの多い大規模トライ辞書の圧縮

  20. 実験結果 トライと同じ 同じ遷移数 キー数 3 倍 すべて登録 5.73μs/key 3.43 μs/key 2.62μs/key 2.15μs/key time コマンドによる構築時間の計測結果 重複レコードの多い大規模トライ辞書の圧縮

  21. 実験結果(レコード) • ランダムに生成したレコードで実験 • キー数は 1 億件に固定 レコード (固有 ID) 約 5.3 億 ハッシュ表 拡張 レコード (頻度) レコード (対数頻度) 重複レコードの多い大規模トライ辞書の圧縮

  22. おわりに • トライの圧縮(DAWG) • 重複レコードが多いほど小さくなる • 検索性能は劣化しない • 簡単に実装できる • 研究成果 • 公開ライブラリ • http://code.google.com/p/darts-clone/ • http://code.google.com/p/dawgdic/ 限定的ながらも 十分に応用可能 BSD ライセンス 重複レコードの多い大規模トライ辞書の圧縮

More Related