Facebookで投稿や写真などをチェックできます。
NILScriptには軽量データベースエンジンSQLiteを扱うクラスが用意されています。 SQLiteには文字列中の単語をインデックス化して高速な全文検索を行うFTS3という機能が用意されていますが、標準搭載されている単語分割処理は文字列を空白文字で分割するだけの簡易的なものなので、そのままでは日本語のテキストをまともに処理できません。 そこで、日本語の文字列を分かち書きする機能を提供する「Segmenter」クラスを新たに用意しました。 アルゴリズム本体はプラグイン方式で追加できるようになっており、現在はTinySegmenter- Javascriptだけで実装されたコンパクトな分かち書きソフトウェアに高速化のための修正を加えたものにSpiderMonkey独自機能を利用したチューニングを加えて作成したプラグインが用意されています。 TinySegmenterは簡易的な物なので、「す
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
TinySegmenterはJavascriptだけ書かれた極めてコンパクトな日本語分かち書きソフトウェアです。 わずか25kバイトのソースコードで、日本語の新聞記事であれば文字単位で95%程度の精度で分かち書きが行えます。 Yahoo!の形態素解析のように サーバーサイドで解析するのではなく、全てクライアントサイドで解析を行うため、セキュリティの 観点から見ても安全です。分かち書きの単位はMeCab + ipadicと互換性があります。 デモ 日本語の文章を入力し、解析ボタンをクリックしてください。 ダウンロード TinySegmenterはフリーソフトウェアです. 修正BSDライセンスに従って本ソフトウェアを使用,再配布することができます. Download TinySegmenter version 0.2 使い方 <script type="text/javascript" src
元の文字列があれば、接尾辞の開始位置を指定することですべての接尾辞を余すことなく得ることができる。この接尾辞を辞書順に並べたときの開始位置の配列が接尾辞配列となる。 "abracadabra"に対する接尾辞配列は、表のように、(11, 8, 1, 4, 6, 9, 2, 5, 7, 10, 3) となる。接尾辞 "a" の開始位置は11で、接尾辞 "abra" の開始位置は8だからである。 "abracadabra"に対して、12番目の接尾辞として空文字を考えることができる。しかし、これは常に先頭に配置されることになるので特に情報を持たないので、省略しても問題ない。 構築法[編集] 接尾辞配列を構築する最も容易な方法は、効率的な比較ソートを利用することである。この場合、回の接尾辞の比較が必要になるが、接尾辞の比較は の時間が必要となる。従って全体的な計算時間は となる。より精巧なアルゴリズ
今回はN-gramでテキストを分解します。N-gram法とは対象の文字列を一定のN文字単位で分解し、それの出現頻度を求める方法です。これによって、検索エンジンに使われる転置インデックスを作成したいと思います。転置インデックスの作成方法にはN-gramの他に形態素解析があります。両者の性能の長短は全文検索 – Wikipediaに詳しく載っています。 Javaソースコード(Make2gram.java) さて、まずは文字列を2単語に切り分けるプログラムを作成しました。データ構造は単純にArrayListで、出現頻度も求めていません。 import java.io.*; import java.util.*; /** * N-gram法 */ public class Make2gram { public static void main(String[] args) { final shor
mal_blue@tumblrでFirefox3に載っているSQLiteに全文検索機能がついたのを知りました。昨年12月にGoogle Japan Blog: Google デベロッパー交流会 ( 第 4 回 )に参加させていただいたとき、Google Gearsの開発者がGoogle Gearsでサポートされているlocal storage(実体はsqliteのデータベースでSQLを使ってデータを読み書きできます)について非ASCIIのfull-text searchをサポートしたいと言われていたのを思い出しました。 その後どうなったかなー、と思ってちょっと検索してみたらGoogle Gearsと直接関係ないけどSQLite Full Text Search with MeCab - mynoteという記事が。この記事はSQLiteのCのAPIにはtokenizerを指定することができて
はじめに† SQLiteの全文検索の拡張FTSは、まだ実験的な段階でfts1, fts2と作っては破棄(?)してきて、今はfts3が最新のようです。(sqlite3.5.1)。ただし、コンパイル済みバイナリの配布は止めてしまったようです。実験段階なので欲しい人は自分でコンパイルしてね♥みたいな。このftsで日本語が使えないとか色々言われているのに加えて、ちょっとプロトタイプをでっち上げるのに必要になりそうな雰囲気なので、日本語でもftsが使えるようにしてみました。 ↑ そもそもの動機† 『SQLite の全文検索を Python から使ってみる (3)』を読んだ。ここでftsのデフォルトの英文用のtokenizer(空白で単語を区切る)で日本語を無理やり使うためにMeCabを使って分かち書きをして、その文字列を挿入し、取り出したあとに連結とかしてた・・・。誰も知らないようだが、実はfts2
2008-03-20 SQLiteで全文検索システムを実装する SQLiteで,掲示板の投稿文に対する日本語全文検索システムを実装することにしました。全文検索はかなり奥が深く,難易度の高い分野です。決して簡単ではありません。 検索対象の情報量が少ないのならさほど苦労しないのですよ。全情報をメモリに読み込んで,逐次検索すればよいのです。ところが全体をメモリに読み込むことができないくらい大容量の情報を扱う場合,なんらかの方法で「索引付け」をしなければ,探し出すのが難しくなってしまいます。 たとえば,「アルファベット順に並んでいない英和辞書」があったとします。これを使って単語を調べなければならないとしたら,どうでしょうか。大変なことになりそうですよね。単語がアルファベットの逆順に並んでいるのならまだ救い様がありそうですが,「てきとー」に並べられている辞書だとしたら,そんなの使い物になりません。
FTS3を使って全文検索してみた。 SQLiteの全文検索というと、昔はFTS1とか2とかのモジュールを使用する方式だったみたいだけど、現在はFTS3なるものがsqlite3.exeとかに含まれているので、得に下準備をすることなく使用できるっぽい。 公式の説明 http://www.sqlite.org/fts3.html 参考にしたサイト http://cast-a-spell.at.webry.info/200806/article_15.html フルテキストサーチする為にやることは以下の3つ。 ・CREATE VIRTUAL TABLE テーブル名 USING fts3 でテーブルを生成する ・INSERTする時に、フルテキスト検索に使いたいカラムに、ヒットさせたいワードを半角スペースで区切りつつ登録 ・MATCHを使って検索する 検索方法とかそれなりに用意されているので、そこそこ
今回は実際にLinuxマシン上にSolr/Luceneをインストールします。インデックスにデータを投入した上で,Solr/Luceneに組み込まれている管理機能の画面から検索を実施するところまでを紹介します。 今回の作業で必要になるモジュール類は以下の通りとなります。 - Solr(Luceneは同こん) - Java SDK(1.5以降) - lucene-ja(N-gram解析機能) - sen(形態素解析機能) なお,今回の作業では日本語解析モジュールを導入しますが,その中で形態素解析モジュール用の辞書の作成が必要になります。形態素解析モジュール用の辞書作成作業では以下のモジュールが必要になります。 - ant(1.7以降) - perl(5.0以降) では,導入作業を進めましょう。 (1)Javaのインストール まず,最新のSolr 1.3ではJava 1.5以上のバージョンが必要
全文検索エンジン「Lucene」は知っていたのですが、 LuceneのHTTPラッパー+拡張機能「Solr」というプロダクトを 最近知りました。 http://lucene.apache.org/solr/ Luceneを使ってみたときの感想は、Javaプログラムに組み込むような イメージでちょっと使い勝手が悪いな~というものです。 Solrはjettyを内蔵しており、単独で全文検索サーバーとして 動作する模様。 また、リクエストはhttp経由で行われるため、別な言語からでも 簡単に利用できそうです。 DebianにJavaをインストールし、Solrの動作確認を行うまでの手順を メモ書きとして残しておきます。 Javaのインストール ここからjdk1.6をダウンロードします。 http://www.j2ee.me/javase/ja/6/download.html 私は手元にjdk-6u1
2008年12月30日 Solr1.3(Jetty)でSenを使えるようにする設定方法 現在、Solr1.3をいろいろいじくる際には、最初からついてくるJettyのExampleをそのまま流用して使っている。 Senの組み込みもできているのだが、あれこれ試行錯誤をしながらセットアップしたので、どれが本当に必要な設定なのか、実はよく分かっていないという状態。が、一度はうまく動いているものを下手に変更して動かなくなるのは避けたい。そんなこんなで「触らぬ神にたたりなし」だったのだが、今後の新規インストールの際に再びハマりそうな気がしたので、Senの組み込みを0からやり直してみた。 参考にさせていただいたのは、いつも参考にさせていただいている下記のページ。ありがとうございます。 日本語形態素解析器Senを導入する その2 lucene-jaのインストール Solrお試し2 普通に読むと、sen.j
solr にはゼロから make できるようにソースファイルがついてきたり、サンプルを実行できるように jetty が同梱されてたりします。 それが原因でディレクトリ構造が複雑になっている気がします。 今回はこのディレクトリ構造を解明したいと思います。 solr は jetty で動かすという前提にすると、example というディレクトリ名が気に入らないのでこれを変更することにします。ただ、example ディレクトリはほとんど jetty に関連するファイルになっているため、example ディレクトリを jetty ディレクトリと名前を変えようと思います。 そうすると、make 前のディレクトリ構造は以下のようになります。 jetty ディレクトリより上のディレクトリは、solr を make するための Makefile (build.xml) やソース群です。 jetty ディレ
はじめに ドキュメントは日々増えて続けています。ドキュメントの数が多くなるほど、目的の情報は見つけにくくなるため、それらのドキュメントを効率よく管理する方法が必要です。その解決策の一つとして、複数のドキュメント(ファイル)をまたいで検索することができる「全文検索サーバー」の導入が挙げられます。 Fessは簡単に導入できる、Javaベースのオープンソース全文検索サーバーです。Fessの検索エンジン部分にはApache Solrを利用しています。Solrは、2億ドキュメントもインデックス可能と言われる非常に高機能な検索エンジンです。一方で、Apache Solrで検索システムを構築しようとする場合、クローラ部分などを自分で実装する必要性があります。Fessではクローラ部分にSeasar Projectから提供されるS2Robotを利用して、ウェブやファイルシステム上の様々な種類のドキュメントを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く