タグ

2015年5月24日のブックマーク (3件)

  • データ言語の設計と処理 : 字句解析と構文解析を分離しよう

    コンパイラの技術でデータ言語を処理しよう プログラムを記述する言語がプログラム言語ですから、データを記述する言語はデータ言語です。 そこで、コンパイラの技術を応用して、データ言語の 処理をバグなく短期間に作成するための考え方を説明します。 第一段階 : 字句解析でグループにまとめる 例として次のようなC言語のコードを考えてみます。人間であれば 変数に数値を代入しているとすぐに分かりますが、コンピュータには分かりません。 最初に必要な作業は、valueをひとかたまりにして変数であると認識し、 23.45をひとりかたまりにして数値であると認識することです。これが字句解析です。 第二段階 : 構文解析で構造を知る 変数名と数値のほかに、等号とセミコロンも一文字だけでひとつの意味のある要素です。したがって、 字句解析の結果として、次のように四つの要素があることが分かります。このような字句解析の結果

  • groongaの全文検索処理の流れ - 2011-10-20 - ククログ

    groongaにデータを登録して、インデックスを更新すると全文検索をすることができます。ここでは、groongaが内部でどのような処理をして全文検索をしているかを説明します。 前提 まず、以下のように「Yes good」と「Hey good」という文書が登録されているとします。 このとき、「Yes good」で検索したらどうなるかを説明します。 トークナイズ まず、入力の「Yes good」をトークナイズします。このとき使用するトークナイザーは使用する転置インデックスと同じものです。転置インデックスが使用するトークナイザーは語彙表(lexcion)を見ればわかります。今回はTokenDelimitトークナイザーですね。 TokenDlimitは空白区切りでトークナイズするトークナイザーなので「Yes good」は「Yes」と「good」にトークナイズされます。 転置インデックスの参照 トー

    groongaの全文検索処理の流れ - 2011-10-20 - ククログ
  • groonga/mroongaのトークナイザー(tokenizer)の挙動を追ってみる - Y-Ken Studio

    トークナイズ機能は、全文検索機能に無くてはならない機能です。 欧米圏であれば、最低限スペース区切りに対応していれば実用的に使えます。 しかし、中国語、日語、韓国語への対応をする場合には、CJK対応言われる実装が必要です。 汎用的な分かち書き(トークナイズ)方法としては、n-gram方式があり、uni-gramやbi-gram、tri-gramが有名です。 n-gramは汎用ではありますが、機械的に分解するが故に精度があまり高くなく、語彙の部分一致検索でしかありません。 そこで、品詞毎にトークナイズの出来る、MeCabやJumanといった形態素解析エンジンの出番となります。 mroongaでは、groonga-tokenizer-mecabというパッケージを追加することで、形態素解析エンジンのMeCabに対応します。 その他、Bigramの独自拡張にも対応しているようなので、それぞれどのよ

    groonga/mroongaのトークナイザー(tokenizer)の挙動を追ってみる - Y-Ken Studio