本当はPython Mini Hack-a-thonでやろうと思ってたネタだったのですが、その前にちょっと準備しておくかーと思ってたらいつのまにか結構やっちゃってたんでまとめておきます。 Whooshとは whooshはPython純正の全文検索エンジンのライブラリです。Javaで書かれた全文検索エンジンであるLuceneの影響をかなり受けています。というか、はっきり言ってLuceneとほぼ同じです。 今回はこのwhooshを使って手元のMLを検索してみる、全文検索ツールを試しに作ってみました。 schemeの作成 Whooshでは検索するためにIndexを作成しますが、それにはまずSchemeを定義します。 Indexにはtitleとかurlとか、ドキュメントそのもの以外の情報も格納できます。Schemeとは、Index中のドキュメントに格納されてるフィールドの定義です。どんなフィールド
lib/trie/double_array.rb at master from tily's ruby-gardening - GitHub Double-Array (ダブル配列) は トライ木を実装するためのアルゴリズムの 1 つで、他の実装よりも高速に TRIE から文字列を検索できるらしい。ChaSen や MeCab で、形態素解析を行うために必要な Common-Prefix Search (共通接頭辞探索) を行うために使われている。これを理解のために Ruby で実装してみた。 基本的な動作確認 ここに書いてある bird, bison, cat の 3 単語で構築した Double-Array の例。 コード: require 'trie/double_array' da = Trie::DoubleArray.new da.build(%w|bird bison cat
先月の29日に、全文検索エンジンgroongaを囲む夕べ #1が開催されました。内容はgroonga本体について、groongaとRubyについて、groongaとMySQLについて、groongaとPostgreSQLについて、とgroonga三昧の内容でした。 groongaとRubyについての資料は以降で紹介します。groongaとPostgreSQLについてはすでに資料が公開されています(textsearch groonga v0.1)。参加できなかった方は参考にしてください。 それでは、groongaとRubyについての資料を簡単な解説付きで紹介します。 Ustreamで配信したものの録画もあります。Ruby枠は49分くらいからです。 リリース情報 開催日当日の29日、groongaの新しいバージョン1.0.4がリリースされました。もちろん、この夕べに合わせたものです。 さらに、
gren - gren is a next grep tool. お久しぶりです、gren 0.2.3 をリリースしました。(大分ブログの更新が滞ってしまいました・・) 今回の売りはgroonga, rroongaを利用して超高速検索モードを搭載したことです。自分のマシン内にファイルデータベースを構築し、それを利用して高速な検索を実現しています。 今までのgrenに加え、新たに mkgrendb ... ファイルデータベースの作成 grendb ... ファイルデータベースを利用した検索 という二つのコマンドラインツールが追加されています。 grenは今までと同じように使えます。現在位置を基点に検索したい時等はgren、ざっくりと全体から探したい時はgrendb、というように用途に応じて使い分けることが可能です。 インストール 0.2からrroongaを必要とするようになり、Windows
文字列を圧縮したまま検索するライブラリです. 文字列の一部を高速に復元することもできます. 圧縮接尾辞配列ライブラリ (2010-08-10版) Direct BWT construction External Memory BWT construction http://code.google.com/p/csalib/ にもあります. 注意: dbwt100717.zipにはバグがありました.Ubuntuでは動かない可能性が高いです. dbwt100730.zipを使ってください. 索引とは,本の索引と同じ意味で,検索を高速に行うためのデータのことです. ただし,本の索引では代表的な言葉のみが登録されていますが,このライブラリの索引は 任意の語が検索できるようになっています. このライブラリの索引は自己索引 (self-index) と呼ばれるもので,索引自体に 元のファイルの情報を全
A fast and simple algorithm for approximate string matching/retrieval SimString is a simple library for fast approximate string retrieval. Approximate string retrieval finds strings in a database whose similarity with a query string is no smaller than a threshold. Finding not only identical but similar strings, approximate string retrieval has various applications including spelling correction, fl
本ウェブサイトは現在工事中です.ソースコード公開は10/24頃を予定しています. 概要 Miniseは最小限必要な機能をサポートした非常にコンパクトな検索エンジンです.検索対象の文章に対し索引を構築し,検索クエリに対する全文検索を行うことができます. 索引の種類として逐次検索,転置ファイル,N-gram,接尾辞配列をサポートしています.また検索結果の取得については定義済みのスコア以外にユーザー定義のスコアを用いたランキングを行うことができます. 主な利用用途として、小〜中規模の検索向けまた,教育用,研究用目的に使われることを想定されております. ダウンロード Miniseはフリーソフトウェアです.修正BSDライセンスに従って本ソフトウェアを使用,再配布することができます. 2009-10-24: Minise 0.01 リリース予定 2009-10-21: ホームページ公開 使い方
研究紹介です。今夏のSPIRE 2009という学会で "A Linear-Time Burrows-Wheeler Transform using Induced Sorting", D. Okanohara, K. Sadakane, SPIRE 2009 pdf(draft) というのを発表します。これは与えられた文字列に対し接尾辞配列を経ないでBurrows-Wheeler変換を直接行うというもので、アルファベットサイズによらず入力長に対して線形時間で行えます。基本的なアイディアは昨年のInduced Sortingによる接尾辞配列の線形時間構築アルゴリズム(いわゆるSAIS)を接尾辞配列を使わないでシミュレートするものです。pushとpop操作だけからなり、そのまま外部記憶上での構築とかにも対応できるようになっています。 Burrows-Wheeler変換(BWT, Block S
以前にk-means++をPerlで書いたのですが、実際に試すデータがなかったのでそのまま放置してました。せっかくなので大きなデータで試してみたいので、今回は下準備としてwikipediaの各キーワードに対し、その特徴を表すデータを抽出したいと思います。そして今回作ったデータを使って、k-meansや階層的クラスタリングなど他の手法をいずれ試してみる予定です。 今回は特徴量としてベタにTFIDFを使うこととします。TFIDFについては、下記のページが詳しいためそちらをご参照ください。 形態素解析と検索APIとTF-IDFでキーワード抽出 tf-idf - Wikipedia まずWikipediaのデータをダウンロードしてきます。以下のページから、「jawiki-latest-pages-articles.xml.bz2」をダウンロードしてください。 http://download.wik
String::Dictionary という Perl のライブラリを作ってみました。 http://github.com/naoya/perl-String-Dictionary/tree/master String::Dictionary は検索エンジンその他を作る時に必要になる「辞書」のためのデータ構造 + API です。辞書は単語の集まりですが、これを配列やハッシュなどで持つのではなく、単語をすべて繋げた一つの大きな文字列として保持することでメモリ領域を節約したものです。単語は単に文字列連結で持つだけでなく、Front Coding で圧縮しています。以下簡単な解説です。 辞書は例えば [0] ・・・ jezebel [1] ・・・ jezer [2] ・・・ jezerit [3] ・・・ jeziah [4] ・・・ jeziel ...という風に単語を配列で持つことで実現でき
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
〒113-0033 東京都文京区本郷7-3-1 東京大学大学院 情報理工学系研究科 コンピュータ科学専攻 e-mail: hillbig (at)is.s.u-tokyo.ac.jp オフィス: 理学部7号館 615号室 +Tel: +81/03 5803 1697 Fax: +81/0 3 5802 8872 自己紹介 2007年4月から東京大学大学院情報理工学系研究科・コンピュータ科学専攻博士課程に在籍し、統計的自然言語処理を中心に研究しています。 研究の興味 大規模なコーパスから得られた統計情報を利用した自然言語処理に関心があり、工学的(データ構造、アルゴリズム)、および理論的(学習理論、情報理論)の両面から研究を行っています。 キーワード 機械学習, 言語モデル、情報検索 簡潔データ構造, 圧縮接尾辞配列/木 データ圧縮、凸最適化 学術関連のEvent(最近12ヶ月) 2007年9
どうぶつの森にハマって、たぬきち商店が早終いする関係で退勤時間もめっさ早くなったmikioです。今回は、Tokyo TyrantのキャッシュとLua拡張を使って超お手軽にリアルタイム検索システムを作る方法について述べます。 ユースケース 高い頻度で更新されるWeb上のテキストをリアルタイムに検索したいと思ったことはありませんか? mixi日記や各種のブログサービスやRSSリーダなどで扱う大量のコンテンツを安価かつ簡単に検索したいと思ったことはありませんか? 私は結構あります。要件を箇条書きすると以下のような感じでしょうか。 最新データの合計100万件くらいを検索できればよく、古いデータは自動的に消えてほしい。 ただし、更新はリアルタイムにして、書いた瞬間に検索結果に反映されてほしい。 サーバ1台で更新1000qpsおよび検索100qpsは処理したい。 再現率よりも精度とリアルタイム性を重視
Static Double Array Trie (DASTrie) という静的ダブル配列のライブラリをリリースしました.ダブル配列の実装はいろいろありますが,このライブラリの特徴を以下に挙げます. C++テンプレートを利用して,std::mapのような連想配列,std::setのような集合を簡単に実装できる. ダブル配列の要素を4バイト,もしくは5バイトで表現し,データベースをコンパクトにする(通常の実装では要素サイズは8バイト). 最小接頭辞トライを実装し,データベースのサイズをコンパクトにする. よくあるダブル配列の実装では,レコードのキーとユニークなIDがトライの中に格納され,レコードのデータは配列などで独自に管理する必要があります.DASTrieはC++のテンプレートで,任意のデータ型をレコードとして使い,レコードをトライの中に格納するので,連想配列として簡単に利用できます.もち
Tree-like Constant Database, or tcdb, is an extension to D. J. Bernstein's cdb file format. tcdb is a hash table that can contain a tree structure whose edges and nodes can be represented as key/value pairs. tcdb is suitable to represent directory structures or sparse matrices. tcdb is also suitable for storing a large number of key/value pairs that have common prefix. Like an original cdb file, a
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く