タグ

AC法に関するgologo13のブックマーク (7)

  • 文字列検索アルゴリズムのAho Corasick法をRubyで適当に実装してみる - grafi-note

    Ruby, AlgorithmAho Corasick法は、複数の文字列を高速に検索するアルゴリズムです。簡単に言えばwikipedia:クヌース-モリス-プラット法とwikipedia:トライ木を合わせたようなアルゴリズムで、KMP法ではマッチに失敗した時の位置を表の形で保持しますが、AhoCorasick法ではこれを「failure link」としてトライ木の上に構築します。なお、この木を利用したこのアルゴリズムは決定性有限オートマトンとして機能します。failure linkの指す先は、マッチに失敗した文字列の、先頭の一文字を削った時にマッチする位置に相当します。先頭の一文字を削ってもマッチする位置が無いなら二文字、三文字、と削っていった位置に相当し、何文字削ってもマッチしない場合はルートを指すことになります。検索する際はトライ木同様にルートから一文字ずつノードを辿っていくのですが、

  • Aho Corasick 法 - naoyaのはてなダイアリー

    適当な単語群を含む辞書があったとします。「京都の高倉二条に美味しいつけ麺のお店がある」*1という文章が入力として与えられたとき、この文章中に含まれる辞書中のキーワードを抽出したい、ということがあります。例えば辞書に「京都」「高倉二条」「つけ麺」「店」という単語が含まれていた場合には、これらの単語(と出現位置)が入力に対しての出力になります。 この類の処理は、任意の開始位置から部分一致する辞書中のキーワードをすべて取り出す処理、ということで「共通接頭辞検索 (Common Prefix Search)」などと呼ばれるそうです。形態素解析Wikipediaはてなキーワードのキーワードリンク処理などが代表的な応用例です。 Aho Corasick 法 任意のテキストから辞書に含まれるキーワードをすべて抽出するという処理の実現方法は色々とあります。Aho Corasick 法はその方法のひと

    Aho Corasick 法 - naoyaのはてなダイアリー
  • 構築した辞書を元にAho Corasick法を使ってキーワードを探す - yasuhisa's blog

    どのようなときにAho Corasick法が必要か辞書構築した後の応用先(?)の一つとして、辞書を元にした転置インデックスを作ることがあげられる。「どのキーワードがどの文章に登場したか」が一番簡単な転置インデックスだと思うんだけど、今回は登場した文章のどの位置にあったかまで記録したい(例えばリンクを張る時に使いたいから)。転置インデックス作るときは、通常 形態素解析ベース N-gramベース の2種類が主な手法だと思うんだけど、今回はせっかく構築した辞書をもとに転置インデックスを作りたいので、上の2つではうまくできない。かといって、文章とキーワード総当たりとかやっていたら死ぬので、効率のよい方法が必要。そこでAho Corasick法ですよ、奥さん。はてなキーワードへのリンク処理とかに使われたりします。 入力と出力入力と出力を先に紹介しよう。入力は辞書とこんな感じの文章。 <総説誌名>蛋白

    構築した辞書を元にAho Corasick法を使ってキーワードを探す - yasuhisa's blog
  • Spaghetti Source - 複数パターン検索 (Aho-Corasick)

    説明 複数のパターン文字列からなる集合と長い文字列が与えられる.長い文字列に対してマッチするパターン文字列をすべて求めるアルゴリズムが Aho Corasick である.これは複数パターン文字列をあらかじめ trie に変換してから KMP を実行し,パターンマッチング・オートマトンを構成していることになる. 詳しくは適当な成書や http://www.cs.uku.fi/~kilpelai/BSA05/lectures/slides04.pdf などを参考のこと. 計算量 構築 O(m). 検索 O(n + m). ただし m はパターンの文字列長の総和,n は検索テキスト長. 使い方 struct PMA; を適宜設定のこと. buildPMA(char *p[], int m) 0 ... m-1 の複数の検索パターンから,パターンマッチング・オートマトンを構築する. match(c

  • きまぐれ日記: はてなキーワードを高速に付与

  • 担当授業の頁

    2012年度 2009年度 2008年度 2007年度 計算機数学A 月曜日3 講時 数学科4セメ(マルティメディア教育ICL演習室) 教科書は「和田 秀男, 計算数学, 朝倉書店, ISBN4-254-11442-7-C3341 Y3200E」 です. 館学閲と北青葉山分館に所蔵されています。 前年度の計算機数学Aの内容をしぼって丁寧に解説します. レポート問題 10/15(月)〆切. (1ワード16ビットで、-1, 2の15乗のマイナス, -987を表すビット列を求めよ). 提出者リスト 11/12(月)〆切. 問題, 提出者リスト, 解答例 12/3(月) 〆切. 問題(ヒントを加えました. 11月29日), 解答例. 2/6(水)〆切. 問題(1/28決定版). 事務室にもあります. 前回、前々回のレポート解答例を参考にして下さい.締め切りました. 解答例. 数学講究を是非しま

  • エイホ–コラシック法 - Wikipedia

    エイホ–コラシック法(英: Aho–Corasick algorithm)とは、1975年にアルフレッド・エイホと Margaret J. Corasick が発見した文字列探索アルゴリズムである[1]。 概要[編集] エイホ–コラシック法は、入力テキストについて有限の文字列群(辞書)の各要素を探す辞書式マッチングアルゴリズムの一種である。全パターンのマッチングを一斉に探索するため、そのアルゴリズムの計算量はパターン群の長さに対しても対象テキストの長さに対しても線形であり、さらに見つかったマッチングの数に対しても線形である。全てのマッチングを検出するため、パターン群にサブ文字列があれば、重複して検出される点に注意されたい(つまり、辞書が a, aa, aaa, aaaa で、入力テキストが aaaa の場合など)。 大まかに言えば、このアルゴリズムはトライ木を構築し、サフィックス木的に文字

    エイホ–コラシック法 - Wikipedia
  • 1