string

Pattern Matching Pointers (maintained by Stefano Lonardi)

http://www.cs.ucr.edu/~stelo/pattern.html#resources 文字列アルゴリズム、情報検索周辺の学会、本、ソフトウェア

Text algorithms by M. Crochemore and W. Rytter

http://web.njit.edu/~rytter/teaching/texts/book.html 少し古い(1994)文字列アルゴリズムの本。

アナグラム

意外な単語がアナグラムだったりします。 thread HATRED reproduce PROCEDURE thousand HANDOUTS generate TEENAGER process CORPSES PROCESS ruby -e'class String; def sort(); self.split(//).sort.join;end;end; dic={}; ARGV.each{|f| File.open(f).eac…

TSPとしてのいろは歌(文字の都市)

文字2-gram確率の最大化だけを目的としたいろは歌生成は、 文字=都市の巡回セールスマン問題インスタンスに相当する。日本語の音韻的制約(iaはあるけどiuはないとか)を反映した程度の ゆるい文法性しか付与できないと思われる。文字N-gram化することも可…

Algorithms on Strings by Crochemore

出てました。 あまり分厚くない文字列アルゴリズム本。 最近の文字列アルゴリズムの進展は全くついていけなくて、 書籍である程度基礎がためしないとなと思っていたので読んでみる。数ページしか読んでませんが、 この著者って Jewels の人ですね。 amazonで…

Darts -- Double-ARray Trie System

http://www.chasen.org/~taku/software/darts/ suffix array とかの template library つくるのにも参考にできると思う。 NodeType Trie の各ノードの型です. 一般的な C 文字列の検索なら, char 以外に設定する必要はありません. NodeUType Trie の各ノード…

Survey -- Approximate Matching

A Guided Tour to Approximate String Matching

From Suffix Trees to Suffix Vectors

http://www.stringology.org/event/2005/p3.html Suffix Vector 、その後。 ぱっと見では、Review の性格が強そう。

A Taxonomy of Finite Automata Minimization Algorithms - Watson (ResearchIndex)

http://citeseer.ist.psu.edu/35617.html オートマトンの最小化も、奥が深い。

Clarke -- Shortest-substring retrieval and ranking (2000)

http://scholar.google.com/scholar?hl=en&lr=&cluster=2191706408632576091 AND,OR,region algebra のクエリに対して、 データベースの部分文字列(位置)のリストを返す。リスト中の部分文字列は、クエリに適合する極小な部分文字列。 リストは文字列の長…

Gad M. Landau

http://cs.haifa.ac.il/~landau/ Construction of Aho Corasick Automaton in Linear Time for Integer Alphabets など。

The Personal Page of Gonzalo Navarro

http://www.dcc.uchile.cl/~gnavarro/eindex.html 自然言語の全文字列索引付けとか、 あいまい検索とか。

IBM RD 50-1 | An approximation to the greedy algorithm for differential compression

http://www.research.ibm.com/journal/rd/501/agarwal.html Differential compression arose as part of the string-to-string correction problem [2], finding the minimum cost of representing one string in terms of another. 問題: 差分圧縮:参照フ…

Piotr Indyk

http://theory.lcs.mit.edu/~indyk/ 雑音のあるパターンマッチング。 FFTをツールとして、というのが面白そう。

Suffix Tree から Sparse Suffix Tree への変換

Sparse Suffix Tree とは、Krisztian さんの論文[2005-11-02-1]で紹介されている、 単語単位 Suffix Tree のようなもの。 形式的には、文字列と文字列中でのすべての単語の開始位置(区切り記号の位置 -1)が与えられたとき、 単語の開始位置から始まる suff…

Suffix Vector まとめ

Krisztian Monostori さんの博士論文[2005-11-02-1]が原典 suffix tree を格納する形式のひとつ 他の形式: suffix tree は木なので、一般的な木の格納形式が使える suffix tree 特有の冗長性を利用した、より効率的な格納形式がありえる ほかにも冗長性を利…

連結リスト上の Suffix Tree

ふつうの Suffix Tree は、文字列のランダムアクセス性を仮定している。でも、いま考えている選択的アルファベット拡大(文字の連結によるアルファベットへの新文字追加)を 行うには、配列よりも連結リストの方が都合がいい。 連結リストではランダムアクセ…

Suffix Array の構築時間

[2005-11-18-1] の検索は sagrep で行った。 ディレクトリ pyxis:/home/data/documents/suffix_array で、 sagrep "尼崎公害訴訟" yomiuri-2000 | ./get_context.pl とやろうとしたら、yomiuri-2000 を作ったときと Perl のバージョンが違っていて動かなかっ…

アルファベット拡大したSuffix Tree における部分文字列マッチ

拡大されたSuffix Tree は文字単位ではなく単語単位のSuffix Treeとなり、 枝は「単語」でラベルづけされる。 単語は文字列なので、 ノードからノードに枝をたどるときには、 単語数で長さ 1 の枝でも、その文字数分のマッチが必要になる。このため、単語単…

重なりありの連接頻度から、重なりなしの連接頻度への変換

長さ n のランダムな2進列があります。 0の数と1の数が分かっているものとします。 また 00、01、10、11の数も分かっています。 ただし 00 と 11 の数は、重複ありで数えたものです。 これらから、00 または 11 の重複無しでの数を求められますか? 証明、ま…

Suffix Vector 関連論文

Kriszti'an Monostori et al., Suffix vector: space- and time-efficient alternative to suffix trees ACM掲載の論文。短くまとめられているが、わかりにくい。 同氏の博士論文 ドキュメント集合から部分一致チャンクを見つけ出す、というシステム。 その…

Suffix Tree の共通部分木を同一視することによって得られる DAG

Gusfield, "Algorithms on Strings, Trees and Sequences" 7.7.節より。 suffix tree の方で、枝を結んでしまえばいい、ということ。 索引(部分文字列を入力してその出現位置を得る)としての機能は失われるが、 出現回数はわかる。

アルファベット拡大における接尾辞木の更新

Ukkonen のアルゴリズムで付加される Suffix Link を利用する。 Suffix Link は下層から上層のノードに向かう枝であり、 元のノードと先のノードには、 「根から元のノードまでのラベルの先頭を取り除くと、根から先のノードまでのラベルになる」 という関係…

Reconstructing a Suffix Array

http://www.cas.mcmaster.ca/~franek/proceedings/psc05.pdf アルファベットの順序を再定義したときの接尾辞配列の再構築。アルファベットを拡大したときの再構築手法が欲しい。

SuffixTree 構築プログラムの最適化

数Mバイトのデータの木を作るのに、Gバイトに近いメモリを必要とするのを 改善しようと、プロファイラにかけてメモリ使用量の多い変数を探した。 java -agentlib:hprof=cpu=samples,heap=sites,file=sample.prof -Xms20M -Xmx1000M SuffixTree cpu=samples …

Suffix Array を用いた日本語単語分割 (伊東1999)

基本的には、対象文字列の区間と一致している事例データの区間を見つけ、 そこでの分割を真似する、という方法。 対象文字列中の各位置からの部分文字列のうち、事例文字列に現れ、 かつ長さ極大の部分文字列に対する事例での分割を類似度の重みつきで採用す…

Topic #7 -- Tries and suffix trees

http://www.cs.mcgill.ca/~cs251/oldcourses/1997/topic7/trie(トライ)とは、k分位置木 (k-ary position tree) で、辞書(連想配列)へのアクセスを効率化するためのデータ構造である。 辞書は、ある文字列がその辞書に入っているかどうかを調べる機能を持…

PATRICIA

http://www.csse.monash.edu.au/~lloyd/tildealgds/tree/patricia/

Ukkonen's algorithm to construct Suffix Tree

概念 対象文字列の最後尾に1文字増えたとき、接尾辞木を更新する。 ただし、ここでの接尾辞木は終端文字を含まず、葉以外のノードで接尾辞が終わることもあるような木である。 対象文字列にxが追加されたとき、それまでの任意の接尾辞aをaxに変えることがこ…

自然言語的データに対する接尾辞配列の構築

接尾辞配列を直接構築する方法のほとんどは、 全部をソートせず、一部分だけをソートし、 残りは接尾辞同士の関係から順序を決める、というものが多いようだ。 直接構築でないのは、いったん接尾辞木を作る方法。また、自然言語データは、長い部分一致箇所が…