並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 77件

新着順 人気順

trieの検索結果1 - 40 件 / 77件

  • Tx: Succinct Trie Data Structure

    English 概要 TxはコンパクトなTrieを構築するためのライブラリです.従来のTrieの実装(darts等)に比べ1/4〜1/10の作業領域量で辞書を保持することができ、数億〜十億キーワードなど大規模な辞書を扱うことが可能です.Trieは文字列からなるキー集合を処理するデータ構造で、キーが辞書に含まれているかのみではなく、キーのPrefixが含まれているかを高速に求めることができます.内部データ構造にはSuccinct Data StructureであるLevel-Order Unary Degree Sequence (LOUDS)を利用しています. ダウンロード Txはフリーソフトウェアです.BSD ライセンスに従って本ソフトウェアを使用,再配布することができます. tx-0.12.tar.gz: HTTP Archives tx-0.11.tar.gz: HTTP tx

    • 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 を非常に高速に行うことが

      • 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

        • 最近のtrieの話(xbwなど) - Preferred Networks Research & Development

          ブログの更新がとまっていましたが、また少しずつ更新してきたいと思います。 今回はtrie(トライ)の最近の話をしたいと思います。 trieはキー集合を扱うためのデータ構造の一種です。例えば、単語集合からなる辞書であったり、クロールしたURL情報を扱ったり、最近だと、KVS(Key Value Store)のようにキーを介してデータを保存、読み込みをしたりと様々な場面で利用されます。 同じようにキー集合を格納するデータ構造としてハッシュを利用する方法があります。キーからハッシュ値を計算し、その場所に文字列へのポインタを格納しておくデータ構造です。ハッシュを利用した場合とtrieを利用した場合の一番の大きな違いは、trieの場合だと、ある文字列から始まるキーを全て列挙する、いわゆる接頭辞探索ができることです。例えば”te”で始まる文字列を網羅的に調べることができます。木をたどって、”te”の下

            最近のtrieの話(xbwなど) - Preferred Networks Research & Development
          • オープンソースのTrieライブラリまとめ - nokunoの日記

            最近、趣味で開発しているStaKKのためにTrieライブラリを書いているのですが、参考にするためオープンソースのTrieライブラリについて調べました。簡潔データ構造を用いたものが中心です。 @hillbig氏によるもの tx LOUDSによる圧縮でメモリ使用量を削減したTrieライブラリ。 関連記事:Tx: Succinct Trie Data Structure Engineering the LOUDS Succinct Tree Representation - 射撃しつつ前転ux txの改良版。tailの圧縮によりtxの1/2くらいのサイズになるらしい。要チェック。 関連記事:ux... - ny23の日記id:s-yata 氏によるもの taiju LOUDSを含む簡潔データ構造を用いた大規模Trieライブラリ。sumire-triesインメモリの簡潔データ構造を実装した大規模T

            • algorithm - Patricia Trie (Radix Trie) を JavaScript で : 404 Blog Not Found

              2012年01月21日21:45 カテゴリTipsLightweight Languages algorithm - Patricia Trie (Radix Trie) を JavaScript で スマホ手袋 5本指全てタッチできる smarttouch 5105 ミドリ安全 寒いのでこれをしたまま書きました。 dankogai/js-trie-patricia - GitHub 404 Blog Not Found:Algorithm - 連想配列の実装としてのハッシュはオワコン? Trieが連想配列の代わりになるというのを体でも納得しておきたかったので。 はじめてのTrie というわけで早速作ってみましょう。あっけにとられるほど簡単です。ここではObject、つまり連想配列で分岐点を実現するというある意味本末転倒なことをしていますが、JSならばしかたがない。 var Trie =

                algorithm - Patricia Trie (Radix Trie) を JavaScript で : 404 Blog Not Found
              • TRIE-Optimized Regexp : 404 Blog Not Found

                2005年09月11日07:06 カテゴリLightweight Languages TRIE-Optimized Regexp これをPerlで直接使えたらうれしいよね>おおる きまぐれ日記: はてなキーワードを高速に付与 そこで、はてなキーワードを TRIE を使って付与するプログラムを作ってみました。 というわけで、やってみました。 最初はDartsのXSを作ろうとしたのだけど、どうもtemplateばりばりのC++コードとXSは相性が悪い。でもTrieを作るだけなら、Perlでもそこそこ出来るし、実際Regexp::OptimizerやRegexp::Assembleのようなモジュールもある。ただこれらはTrie以外のOptimizeもしてしまうので、ちょっと重たいというわけで、mk_trie_regexp.plというScriptをサクっと書いてみました。 使い方は簡単。/usr/

                  TRIE-Optimized Regexp : 404 Blog Not Found
                • Suffix Trieを使って文字列マッチングする - $shibayu36->blog;

                  文字列マッチングを行うためのアルゴリズムとして、Suffix Trieを使った探索というものがある。これはテキストからSuffix Trieという構造を作り、パターンをつかってそれを辿ることで、パターンの長さmに対して、O(m)の計算量で探索できるものである。 今回はJavaでSuffix Trieを使った探索をしてみた。 トライ木とパトリシア 先にトライ木とパトリシアについて紹介。 今回Suffix Trieという構造を調べていると、同じような構造としてSuffix Treeというものが出てきて混乱した。よく調べてみると、Suffixの集合をトライ木という構造で実装したものがSuffix Trieで、パトリシアという構造で実装したものがSuffix Treeらしい。 トライ木はnodeを連結していって、その枝に1文字を割り当てて辿れるようにした構造。トライ木は枝に1文字しか割り当てない構

                    Suffix Trieを使って文字列マッチングする - $shibayu36->blog;
                  • JavaでTrieデータ構造を実装する

                    WEB+DB PRESS vol.42の特集「アルゴリズム&データ構造」でもとりあげられていたTrie(とらい; p34-37)について調べてみたので、忘れないようにメモです。 Trie(s)というのは単語を辞書のなかから見つけ出すときに人がふつうに行っている探し方のアルゴリズムです。例えば、poolならまず、pのところに行って、次にoのところに行って、、、つまり、p -> o -> o -> lと探していきます。続いてprizeを見つけるとしたら、p -> r -> i -> z -> eですが、先頭の文字が同じpなので、pの付近からはずれたところから始めたりはしません。この二つの単語の場合pをprefixと見なすのがTrieです。poolとpoleだったらprefixはpoにのびていきます。prefixがのびていけばいくほど候補は減っていきます。ちょうどIDEのメソッド補完機能のように

                      JavaでTrieデータ構造を実装する
                    • Try For Trie | PDF

                      What is Scribd?AcademicProfessionalCultureHobbies & CraftsPersonal GrowthAll Documents

                        Try For Trie | PDF
                      • PerlのRegexp::TrieをRubyに移植した - Islands in the byte stream

                        GitHub - gfx/ruby-regexp_trie: Optimized Regexp builder with Trie (a Ruby port of Perl's Regexp::Trie) # Gemfile gem 'regexp_trie' これははてなキーワードやWikipediaのリンクのように、ある程度の量のテキストに対して大量のキーワードをマッチさせるときに、最適化した正規表現を生成するライブラリです。 はてなキーワード*1をとあるブログエントリ*2にマッチさせるための簡単なベンチマークもあります。 example/benchmark.rb 結果: $ bundle exec example/benchmark.rb (snip) user system total real Regexp raw 4.270000 0.030000 4.300000 ( 4.3

                          PerlのRegexp::TrieをRubyに移植した - Islands in the byte stream
                        • 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 を非常に高速に行うことが

                          • John Resig - JavaScript Trie Performance Analysis

                            After my last post discussing dictionary lookups in JavaScript the unanimous consensus seemed to be that utilizing Trie would result in additional space savings and yield performance benefits. A Trie is a relatively simple data structure. At its simplest form you’re building a tree-like structure where each final leaf results in a complete word. This allows for some very efficient use of file size

                            • DSIRNLP#1で発表しました「TRIEにトライ!〜今日からはじめるTRIE入門〜」 - EchizenBlog-Zwei

                              昨日開催された「第1回 データ構造と情報検索と言語処理勉強会(DSIRNLP)」に発表者として参加しました。主催者の@overlastさん、発表者の皆さん、ボランティアの皆さん、会場を提供してくださったミクシィさん、そして発表を聞いてくださった皆さん。どうもありがとうございました。 また発表スライドについては@overlastさん、@uchumikさん、@machyさん、@nokunoさんにチェックして頂きました。特に@uchumikさん、@machyさんより頂いた意見のおかげでスライドの質が向上しました。ありがとうございました。 発表スライド: (scribdのembedがうまくいかなかったので暫定的にリンクおいておきます) TRIEにトライ!〜今日からはじめるTRIE入門〜 本記事では質疑応答でフォローしきれなかった部分を中心に、私の発表の補足的なものを書いて行きます。 会のまとめ的な

                                DSIRNLP#1で発表しました「TRIEにトライ!〜今日からはじめるTRIE入門〜」 - EchizenBlog-Zwei
                              • Ruby: ruby-regexp_trie gemで文字列リストを効果的な正規表現に変換する|TechRacho by BPS株式会社

                                @gfxさん作のruby-regexp_trie gemを使うと、Rubyで文字列の配列から凝縮された正規表現を楽に生成できることを知りました😍。 リポジトリ: gfx/ruby-regexp_trie: Fast keyword matching with the Trie algorithm (a Ruby port of Perl's Regexp::Trie) 文字列リストを単に|でつなげるだけならRuby標準のRegexp.unionでもできますが、文字列リストが巨大になってくると単純連結では効率が低下します。 以下説明のために、わざとソート順を崩したaryを用います。 ary = %w( YMS-15 MSM-10 YMS-14 MAN-07 MSN-02 MSM-07S MA-05 MSM-07 MSM-04F MSM-03 MS-X16 MAN-03 MS-X10 MS-

                                  Ruby: ruby-regexp_trie gemで文字列リストを効果的な正規表現に変換する|TechRacho by BPS株式会社
                                • Big Sky :: trie_tree書いてみた。

                                  trieなんたらが話題になってたのでなんとなく書いてみた。 ベンチとかはやってない。 404 Blog Not Found:Algorithm - 連想配列の実装としてのハッシュはオワコン? そのデータ構造は、君の魂を差し出すに足るものかい? 連想配列( Associative array )がコレクション( Collection )、すなわち数多のデータ構造をまとめるデータ構造としての覇... http://blog.livedoor.jp/dankogai/archives/51765855.html #include <stdio.h> #include <stdlib.h> typedef struct _trie { char c; unsigned int n; struct _trie** next; void* value; } trie; trie* trie_new()

                                    Big Sky :: trie_tree書いてみた。
                                  • 海風に揺れる一輪のTRIEライブラリ erikaを作ってみたよ - EchizenBlog-Zwei

                                    注意:この記事の内容は古いものです。 最新版のerika-trieは erika-trie(実用版)とキーワード抽出ツールerika_extractを作ったよ - EchizenBlog-Zwei うっかり手が滑って自分で☆つけてしまいましたが自画自賛してるわけではないです・・・。 をご参照ください。 最近TRIE(トライ)に対する興味が高まってきたので勉強のためにライブラリを作っていた。一応完成したので公開しておく。普通のTRIEとLOUDSによるTRIEの二つを実装した。 名前はerika。もしくはerika-trie。以前作ったCompressed Suffix Arrayのライブラリがtsubomiだったので、今回はerikaにした。コードはGoogleCodeのtsubomiと同じところにおいてある。というかtsubomiの付属品状態。開発はlinuxで行ったが特に環境に依存した

                                      海風に揺れる一輪のTRIEライブラリ erikaを作ってみたよ - EchizenBlog-Zwei
                                    • marisa-trieを使ってみた - nokunoの日記

                                      id:s-yata さんの新作trieライブラリが公開されていたので使ってみました。環境はMac OS Xです。やた@はてな日記 marisa-trie - Project Hosting on Google Code インストール普通にGoogle Codeからダウンロードしてインストールします。 $ wget http://marisa-trie.googlecode.com/files/marisa-0.0.1.tar.gz $ tar xfz marisa-0.0.1.tar.gz $ cd marisa-0.0.1/ $ ./configure $ make $ sudo make install 動作確認Wikipedia N-gram(nokunoの日記)よりbigramを格納し、marisa-predictによって前方一致検索を行いました。 $ cat bigram.txt

                                      • HAMT(Hash Array Mapped Trie) - sileのブログ

                                        『Ideal Hash Trees』*1という論文を(必要なところだけ、だいたい)読み終わったので、そのメモ等。 概要 AMT(Array Mapped Trie)という基盤的なデータ構造を使って、ideal(nearly ideal)なHash Treesを作ろう、というような話。 AMTの応用例として、以下のようなものが説明されている。 Hash Array Mapped Trie(HAMT) ハッシュマップ 各種操作がO(1) ハッシュテーブルの初期サイズを(あまり)気にする必要がない 要素が増えた場合のリサイズのコストが小さい*2 リサイズ不要な実装も可能だがその場合はO(log N)に。※ Nは要素数。今回の実装はこっち。 成功検索時、キーの比較は一回しか生じない ただし、キーのハッシュ値の計算処理は(異なるハッシュ関数で)複数回行われることがある。 Clojureの組み込みのハ

                                          HAMT(Hash Array Mapped Trie) - sileのブログ
                                        • marisa-trie における rank/select の実装 - やた@はてな日記

                                          概要 rank/select は簡潔データ構造(Succinct Data Structures)の核になる関数です.ビット列の k ビット目までに含まれる 0, 1 の数を求めるのが rank,k 番目の 0, 1 の位置(Index)を求めるのが select であり,ビット列の密度(1 の割合)によって,いろいろな実装があります. marisa-trie では,0, 1 の割合が極端に偏らないビット列を想定するとともに,32-bit 環境における性能の劣化を防ぐために,64-bit 整数を使わないようにしました.そのため,ほとんどの部分は以前に開発したライブラリからの流用ですが,新しく書き直した部分もあります.ちなみに,索引のサイズはビット列の長さ n bits に対して (1/4)n bits です. 基本 ビット列の実装 ビット列の格納には 32-bit 整数の配列を使っています

                                            marisa-trie における rank/select の実装 - やた@はてな日記
                                          • Trie が提供すべき操作について検討してみる

                                            nokuno さんの記事「オープンソースのTrieライブラリまとめ」あたりを参考に、まず既存の Trie ライブラリ群がどのような API を提供しているのかを調査し、その上でこれから Trie を実装する場合に、どのような操作・API を提供すべきかを検討した結果のメモです。 記事にあるすべての Trie 実装を確認するのはしんどいので、代表的な感じのものを適当にピックアップしてみました。 Tx ... 岡野原さんによる簡潔データ構造を利用した Trie の実装。 prefixSearch() ... prefix search。Trie に格納されている文字列の中で、対象文字列の接頭辞としてもっとも長く一致する文字列を探し出す。common prefix search で列挙される文字列のうち、長さが最長のものと同じ。 commonPrefixSearch() ... common p

                                              Trie が提供すべき操作について検討してみる
                                            • GolangでTrie木を車輪の再発明した話 - KAYAC Engineers' Blog

                                              こんにちは! Tech KAYAC Advent Calendar 2020 4日目を担当する荒賀(@ken39arg) です。 近況報告 毎年このアドベントカレンダーの場をかりて、趣味の長距離スポーツの結果を報告して承認欲求を満たしていたのですが、 昨年サブスリーを達成して今年はサブエガ1を目指していたフルマラソンの大会は中止となり、夏の趣味であるOWS2の大会も軒並み中止となってしまいました。 その代わりに今年は2018年に買って未クリアだったゼルダをプレイし、ハイラルの平和をなんとか今年中に取り戻せるように努力をしております。 Trie木が必要になった経緯 さて、アドベントカレンダーだからツリー → ツリーといえば我々の世界では木構造 → 木構造といえばトライ木ということではなく、 今年した仕事でTrie木を実装する機会があったので、その時の気づきを書いてみようかと思います。 今年ユ

                                                GolangでTrie木を車輪の再発明した話 - KAYAC Engineers' Blog
                                              • 人生で何度目かのダブル配列TRIEを書いた - Qiita

                                                概要 人は人生に何度かTRIEを書くという.そんなわけで,何度目かのTRIEでsudachiのdarts-cloneをクローンしてみました.TRIEの記事は沢山あるので,ここではGoに移植してみて気づいた事をいくつか共有していきたいと思います. 今回の成果物: https://github.com/ikawaha/dartsclone darts-clone 元ネタはこちら.Java版とPython版があります. https://github.com/WorksApplications/Sudachi/tree/develop/src/main/java/com/worksap/nlp/dartsclone https://github.com/WorksApplications/SudachiPy/tree/develop/sudachipy/dartsclone 本家は https:/

                                                  人生で何度目かのダブル配列TRIEを書いた - Qiita
                                                • すごいTrie - Qiita

                                                  「to」がキーで「7」がバリューです。これを trie で表すと下図のようになります。 Trie - Wikipediaより引用 ノードの中に書かれている「tea」や「in」がキーであり、ノードの下に書かれている「3」や「5」がキーに対応する値です。 あるノードのキーは、その親ノードのキーに、親ノードから伸びる有向辺に書かれている文字を、付け足した文字列です。実際には、ノードには直接キーが保存されず、そのノードに到達するまでの辺のラベルの列がキーになってます。 接頭辞がノードと対応するので prefix tree とも呼ばれます。 計算量 計算量は色々な表現をすることが可能ですが、ノードの分岐は高々アルファベットの種類数なのでこれを定数とすれば、$ m $を文字列の長さとして以下の操作が$ O(m) $で出来ます。(アルファベットの種類数を考慮すると$\log$が付きます。) 文字列の検索

                                                    すごいTrie - Qiita
                                                  • GitHub - c9s/r3: libr3 is a high-performance path dispatching library. It compiles your route paths into a prefix tree (trie). By using the constructed prefix trie in the start-up time, you may dispatch your routes with efficiency

                                                    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                      GitHub - c9s/r3: libr3 is a high-performance path dispatching library. It compiles your route paths into a prefix tree (trie). By using the constructed prefix trie in the start-up time, you may dispatch your routes with efficiency
                                                    • 逆FizzBuzz問題をTrieでトライ - Homoiconic Days

                                                      なにやら巷で逆FizzBuzz(Inverse FizzBuzz)問題というのが流行ってるらしい。 逆FizzBuzz問題 (Inverse FizzBuzz) - 猫とC#について書くmatarilloの雑記 F#で逆FizzBuzz問題 - Bug Catharsis わぁいInverse Fizzbuzz解けたよー - 這い寄るゆろよろ・アンド・ライジングフォース日記 Inverse Fizzbuzz - scalaとか・・・ Shipper: すみませんが問題をもう一度教えてもらえますか? Google: あるリストが与えられたときに、FizzBuzzを実行するとそのリストを出力するような最短の連続数列を求めよ。 逆FizzBuzz問題 (Inverse FizzBuzz) - 猫とC#について書くmatarilloの雑記 「ここまで短く書けるよ!」という向きは他でもいろいろとやら

                                                        逆FizzBuzz問題をTrieでトライ - Homoiconic Days
                                                      • cedar - C++ implementation of efficiently-updatable double-array trie

                                                        cedar - C++ implementation of efficiently-updatable double-array trie About Cedar implements an updatable double-array trie [1,2,3], which offers fast update/lookup for skewed queries in real-world data, e.g., counting words in text or mining conjunctive features in a classifier. Its update and lookup speed is comparable to (hard-to-serialize) hash-based containers (std::unordered_map) or modern c

                                                        • Trie

                                                          トライ( Trie )とは, 自然言語処理やコンパイラ,フィルタリングなどに用いられている木構造です. 二分探索木などとは異なり,文字単位で探索が進行するので, 入力文字列の前方部分と一致するキーを列挙したり, どの文字まで探索に成功していたかという情報を取得したりできます. また,キー数の増加によって検索速度が遅くなりにくいという特徴もあります. トライは文字列を格納するのに適した木構造です. トライの節( Node )あるいは 枝( Arc )には 文字が付与されていて( Label ), 根( Root )から 葉( Leaf )への 経路( Path )上の文字を連結することにより, 登録されている文字列を復元することができます. 例えば,三つの文字列 "bird", "bison", "cat" を登録したトライは以下のようになります. 図中の節についている番号は,すべての節を一

                                                          • Trieではてなキーワード自動リンク - odz buffer

                                                            pytstを使ってはてなキーワード自動リンク。全部 Unicode でやりたかったけど、pytst が unicode オブジェクトを扱えないらしくとりあえず、内部は全部 UTF-8 の str で。 例のdartsを使ったやつと違って一応大文字小文字を区別しないマッチングをするようにしてある。 ちなみにこの間抽出したのを使って 400KBytes くらいのファイルに試したら Perl ではてなキーワード自動リンクAPIの正規表現版をそのまま使ったやつの10倍くらい早かった。 import urllib import tst class KeywordAutoLinkCallback: def __init__(self, original_text): self.buffer = "" self.original_text = original_text self.offset = 0

                                                              Trieではてなキーワード自動リンク - odz buffer
                                                            • Trie TreeならびにDouble Array Trie Treeを用いたパフォーマンスの検証

                                                              2. 1 はじめに ブログなどの大量のテキストデータが蓄積される CGM サイトでは、必然的にシステムや プログラムの中でも文字列処理の回数が多くなる。そのため効率的なアルゴリズムの採用 は、サイトのプログラム処理速度、ひいては対ユーザのページレスポンスタイムに関わる 重要な事案となる。 今回は、文字列の全文一致検索や前方一致検索処理において効率的なアルゴリズムとして 知られる「トライ木」についてそのパフォーマンスの検証を行った。 2 TrieTree について 2.1 アルゴリズムの内容 以下、トライ木についての解説を wikipedia より引用する。 トライ木(Trie)とは、順序付き木構造 (データ構造)の一種。プレフィックス木 (Prefix Tree)とも呼ばれる。キーが文字列である連想配列の実装構造として使 われる。2 分探索木と異なり、各ノードに個々のキーが格納されるのでは

                                                                Trie TreeならびにDouble Array Trie Treeを用いたパフォーマンスの検証
                                                              • erika-trie(実用版)とキーワード抽出ツールerika_extractを作ったよ - EchizenBlog-Zwei

                                                                先日まで勉強のためにerika-trieというLOUDSを用いたトライ木を作っていた。ある程度考えがまとまったので実用版を作り始めた。 erika-trie(実用版)はmarisa-trieやtx/ux/rx等と同等の操作を備えたトライ木。またerika-trieを用いてテキストからキーワードを高速に抽出するためのツールerika_extractが付属している。 DSIRNLP#1で発表しました「TRIEにトライ!〜今日からはじめるTRIE入門〜」 - EchizenBlog-Zwei 海風に揺れる一輪のTRIEライブラリ erikaを作ってみたよ - EchizenBlog-Zwei erika-trie: succinct trie library - Google Project Hosting はじめに。なんとなくツールをerika-trieにしたのだが、意味のない名前というのもア

                                                                  erika-trie(実用版)とキーワード抽出ツールerika_extractを作ったよ - EchizenBlog-Zwei
                                                                • DASTrie: Static Double Array Trie

                                                                  Static Double Array Trie (DASTrie) Introduction Trie is a data structure of ordered tree that implements an associative array. Looking up a record key (usually a string) is very efficient, which takes O(1) with respect to the number of stored records n. Trie is also known for efficient prefix matching, where the retrieved key strings are the prefixes of a given query string. Double-array trie, whi

                                                                  • Fast and Easy Levenshtein distance using a Trie

                                                                    Only the last row changes. We can avoid a lot of work if we can process the words in order, so we never need to repeat a row for the same prefix of letters. The trie data structure is perfect for this. A trie is a giant tree, where each node represents a partial or complete word. Here's one with the words cat, cats, catacomb, and catacombs in it (courtesy of zwibbler.com). Nodes that represent a w

                                                                    • GitHub - pytries/marisa-trie: Static memory-efficient Trie-like structures for Python based on marisa-trie C++ library.

                                                                      You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                        GitHub - pytries/marisa-trie: Static memory-efficient Trie-like structures for Python based on marisa-trie C++ library.
                                                                      • GitHub - dcjones/hat-trie: An efficient trie implementation.

                                                                        Hat-Trie This a ANSI C99 implementation of the HAT-trie data structure of Askitis and Sinha, an extremely efficient (space and time) modern variant of tries. The version implemented here maps arrays of bytes to words (i.e., unsigned longs), which can be used to store counts, pointers, etc, or not used at all if you simply want to maintain a set of unique strings. For details see, Askitis, N., & Si

                                                                          GitHub - dcjones/hat-trie: An efficient trie implementation.
                                                                        • marisa-trie の PopCount を改良しました - やた@はてな日記

                                                                          簡潔ビットベクトルの基本操作である rank/select において重要な役割を果たす PopCount を改良することにより,marisa-trie (Google Code Archive - Long-term storage for Google Code Project Hosting.) を少しだけ高速化することができました.成果は Subversion からソースコードをダウンロードしてビルドすることにより確認できます. 一つ目の改良点は SSE4.2 で追加された popcnt 命令です.その名の通り,PopCount 専用の CPU 命令であり,PopCount を高速に実現できます.ただし,現状では使える CPU が限られているため,configure に --enable-popcnt を指定してビルドしたときだけ有効になるようにしています. 二つ目の改良点は pop

                                                                            marisa-trie の PopCount を改良しました - やた@はてな日記
                                                                          • marisa-trie の解説まとめ - やた@はてな日記

                                                                            どのような読者を想定しているのか甚だ疑問な連載と化していましたが,とりあえず,今までの記事をまとめておきます. marisa-trie における rank/select の実装 http://d.hatena.ne.jp/s-yata/20110118/1295288559 rank/select の索引については,ブロック単位で rank/select の値を保存するという基本的な構造を使用しています.後は,PopCount の使い方を少し工夫してみたり,あらかじめ計算しておいたテーブルを使って効率化してみたりという内容です.rank/select の効率は検索時間に対する影響が大きいので,とても大事なところです. 世の中には二種類の文字列がある… http://d.hatena.ne.jp/s-yata/20110127/1296061436 0 を終端とする文字列と,始点と長さにより

                                                                              marisa-trie の解説まとめ - やた@はてな日記
                                                                            • GitHub - couchbase/forestdb: A Fast Key-Value Storage Engine Based on Hierarchical B+-Tree Trie

                                                                              You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                                GitHub - couchbase/forestdb: A Fast Key-Value Storage Engine Based on Hierarchical B+-Tree Trie
                                                                              • GitHub - usethesource/capsule: The Capsule Hash Trie Collections Library

                                                                                You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                                  GitHub - usethesource/capsule: The Capsule Hash Trie Collections Library
                                                                                • Hash array mapped trie - Wikipedia

                                                                                  This article may be too technical for most readers to understand. Please help improve it to make it understandable to non-experts, without removing the technical details. (October 2019) (Learn how and when to remove this message) A hash array mapped trie[1] (HAMT) is an implementation of an associative array that combines the characteristics of a hash table and an array mapped trie.[1] It is a ref