[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

darrayに関するhiromarkのブックマーク (9)

  • レコード付き動的ダブル配列の実装も公開 - ny23の日記

    以前トライ(ダブル配列,簡潔データ構造)と STL コンテナ - ny23の日記で比較に使った自作のレコード付き動的ダブル配列 (dda) の実装も公開.以下の論文のアルゴリズムを実装したもの. 矢田晋, 田村雅浩, 森田和宏, 泓田正雄, 青江順一.ダブル配列による動的辞書の構成と評価, 情報処理学会第71回全国大会, 1-263-1-264頁, 2009年3月. レコード付き動的ダブル配列 - ny23の日記から始まり,レコード付き動的ダブル配列 - ny23の日記, レコード付き動的ダブル配列 - ny23の日記, レコード付き動的ダブル配列 - ny23の日記 と二週間かかって書いた僅か360行の c++ ヘッダファイル.動的ダブル配列は上の分類器の学習手法で素性の重みの管理に使っているので,学習手法の実装に同梱した.std::tr1::unordered_map ベースのトライに

    レコード付き動的ダブル配列の実装も公開 - ny23の日記
    hiromark
    hiromark 2010/07/23
    あとで
  • 基本となるDoubleArrayの実装 - sileのブログ

    各種アルゴリズムを試す際のベースとなるような(シンプルな)DoubleArrayが欲しくなったので作成した。 構成など 多分、DoubleArrayとしては一番単純な構成*1。 ※ 以下で云う"ノード"は、"ノードのインデックス"の略のような意味合い 静的構築 各キーを改行区切り('\n')で保持するソート済みのファイルを入力に取り、DoubleArrayを構築する BASE配列とCHECK配列から成る BASE配列: 遷移情報およびキーのIDを保持する配列 BASE[ノード] = 遷移のベースとなるノード => 遷移先ノードは、BASE[ノード] + 遷移文字、で求める BASE[ノード]の値がマイナスの場合は、キーの終端を意味し、そのIDが格納されている => キーのIDは、BASE[ノード] x -1、で求める CHECK配列: 遷移の正当性をチェックするための配列 CHECK[ノー

    基本となるDoubleArrayの実装 - sileのブログ
    hiromark
    hiromark 2010/06/28
    あとでよむ。
  • ダブル配列における動的更新の効率化アルゴリズム | CiNii Research

    タイトル別名 ダブル ハイレツ ニ オケル ドウテキ コウシン ノ コウリツカ アルゴリズム Efficient Dynamic Update Algorithms for a Double-array Structure 自然言語処理 トライ構造はキーの表記文字単位に構成された木構造を用いて検索するキー検索技法の1つであり,自然言語辞書を中心として広く用いられている.このトライ構造を実現するデータ構造として高速性とコンパクト性を満足するダブル配列法があるが,この手法は,キーの更新が頻繁に生じない検索法として確立しているため,動的検索法に比べて追加時間は高速であるとはいえず,また削除で生じる不要なノードや未使用要素により記憶量に無駄が生じていた.論文ではこれらの問題を解決し,ダブル配列を動的検索法として確立するため,未使用要素を連結することで追加処理を高速化する手法,削除時に生じる不要ノ

    hiromark
    hiromark 2009/01/15
    ざーっと読んでみた。「未使用要素リスト法」「不要ノード削除法」
  • これからのDouble Arrayは動的更新に対応するべき - 射撃しつつ前転 改

    Double Arrayのコードなんて1年以上いじってないくせになにを言ってるんだこの口はと言う感じですが、Double Arrayを作るのであれば、動的更新に対応させるべきであると、そう思うわけです。 Double Arrayのメリットは Trieである 速い (Ternary Search Treeとかと比べると)サイズも小さい という感じだった訳ですが、速度はともかく、サイズではTxが使っているようなLOUDSやLOUDS++などの圧縮しちゃう方式に勝てないので、静的な辞書としては、速度が超重要なところ以外ではLOUDSやLOUDS++を使った辞書を使うのがいいのかなと思う訳です。辞書引き以外の部分がボトルネックであることも多いだろうしね。 と言うわけで、簡潔データ構造に比較してDouble Arrayでなにか便利な事ができないかなというと、圧縮をかける方式ではやはり、動的な更新が難

    これからのDouble Arrayは動的更新に対応するべき - 射撃しつつ前転 改
    hiromark
    hiromark 2009/01/15
    ふーむ。
  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

    hiromark
    hiromark 2008/10/10
    "This project provides a clone of the Darts (Double-ARray Trie System). "
  • 最近のDoubleArrayの性能 - 射撃しつつ前転 改

    DoubleArrayの性能に関して、最近は少し改善されているかも知れませんとあるので、具体的にどれぐらい改善されているのか、少し書いてみます。もちろん、現実逃避です。 まず、DoubleArrayがなんなのかというところから説明をします。DoubleArrayは、簡単に言うとTrieを実現するためのデータ構造の一種です。日語ではダブル配列と呼ばれているようです。Trieに関しては横着プログラミング 第6回: chatty: 小うるさい端末あたりを読めば良いでしょうか。要するにTreeを表現するためのデータ構造です。使い道はいろいろありますが、辞書的なものに使われることが多いでしょうか。 Trieを単純に実現しようとすると、すごくたくさんメモリを使ってすごく速い実装をするか、速度を多少犠牲にしてメモリ消費量を削減するかの選択を迫られます。多くの場合はメモリを節約しないと使いものにならない

    最近のDoubleArrayの性能 - 射撃しつつ前転 改
    hiromark
    hiromark 2008/10/06
    あ、わかりやすい。
  • Darts: Double ARray Trie System

    Darts: Double-ARray Trie System はじめに Darts は, Double-Array [Aoe 1989]を構築するための シンプルな C++ Template Library です. Double-Array は Trie を表現するためのデータ構造です. ハッシュ木, デジタルトライ, パトリシア木, Suffix Array による擬似 Trieといった 他の Trie の実装に比べ高速に動作します. オリジナル の Double-Arrayは, 動的に key の追加削除を行えるような 枠組ですが, Darts は ソート済の辞書を一括してDouble-Array に変換することに機能を絞っています. ハッシュのような単純な辞書として使うことも可能ですが, 形態素解析器の辞書に必須の Common Prefix Search を非常に高速に行うことが

    hiromark
    hiromark 2008/09/15
    ダブル配列を構築するための シンプルな C++ Template Library
  • Double-Array

    ダブル配列( Double-Array )は, トライ( Trie )のデータ構造の一種であり, 小さい辞書で高速に検索できるという特長を持っています. 実際に,茶筌( ChaSen )や 和布蕪( MeCab )などの 形態素解析器で利用されているという実績があります. ダブル配列では,配列を使ってトライを表現します. 配列の各要素が BASE, CHECK という二つの整数を持つので,頭文字をとって配列 BC と呼ぶことにします. 以降の説明では,配列 BC の要素 x の BASE, CHECK を それぞれ BC[x].BASE, BC[x].CHECK と記述します. 通常,BASE, CHECK は個別の配列として紹介されますが, 特に分割して考える必要がないので,このような説明にしました. 基的に,配列 BC の各要素は トライの節と一対一で対応します. そのため,対応する

    hiromark
    hiromark 2008/09/15
    ダブル配列の説明。 "ダブル配列では,配列を使ってトライを表現します", "配列構造と同じくらい高速で,リスト構造と同じくらいコンパクトになるとされています"
  • An Implementation of Double-Array Trie

    Contents What is Trie? What Does It Take to Implement a Trie? Tripple-Array Trie Double-Array Trie Suffix Compression Key Insertion Key Deletion Double-Array Pool Allocation An Implementation Download Other Implementations References What is Trie? Trie is a kind of digital search tree. (See [Knuth1972] for the detail of digital search tree.) [Fredkin1960] introduced the trie terminology, which is

    hiromark
    hiromark 2006/02/06
    TRIE の実装についての解説。
  • 1