タグ

string-searching-algorithmとalgorithmに関するnabinnoのブックマーク (5)

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

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

    Aho Corasick 法 - naoyaのはてなダイアリー
  • 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

  • アルフレッド・エイホ - Wikipedia

    アルフレッド・ヴァイノ・エイホ(Alfred Vaino Aho、1941年8月9日 - )は、カナダ出身の計算機科学者。1995年からニューヨークのコロンビア大学で教授を務めており、2003年には同大学同窓会から Great Teacher Award を授与された。 カナダのトロント大学で応用物理学を学び、アメリカ合衆国のプリンストン大学で電気工学と計算機科学の博士号を取得した。1967年から1991年までベル研究所で研究者として働き、1997年から2002年まで同研究所の計算機科学研究センターの副センター長を務めた。2011年現在、コロンビア大学の計算機科学の教授。1995年から1997年までと、2003年春には同大学計算機科学部門の部門長を務めた。 博士論文で、文脈自由言語のパワーを拡張しつつ決定可能性と閉包特性を保持する indexed grammar[1] と nested-s

    アルフレッド・エイホ - Wikipedia
  • 文字列探索 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "文字列探索" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2023年8月) 文字列探索 (もじれつたんさく) とは、ある文字列の中から、別の文字列(単一の文字列である場合もあれば、数千語から数万語以上の辞書の語彙である場合もある)を探索することである。前者の単一の文字列の探索は英文のテキストエディタ等で必須の機能であり(いわゆるスペルチェックと関連する)、後者は「かな漢字変換」等で必須の機能であるため、これまでさまざまなアルゴリズムが考案されている。 ここでいう文字列とは、ある定まった文字集合の要素を任意に並べた系列のことである。通

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

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

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