File: README

package info (click to toggle)
ruby-unf-ext 0.0.7.7-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, trixie
  • size: 5,472 kB
  • sloc: cpp: 14,118; lisp: 1,180; ruby: 94; makefile: 4
file content (98 lines) | stat: -rw-r--r-- 4,487 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
[概要]
・DAWG(Direct Acyclic Word Graph)によるマップの実装
・入力キーセットを静的に受け取り、各キーに一意なIDをマッピングする
 ・入力キーセットはソート済みであり、かつ各キーはユニークでなければならない
 ・キーのID == 先頭から数えたキーの出現位置、となる  ※ 先頭のキーのID値は0となる
・数千万程度のキーセットをCommon Lispで比較的手軽に扱えるようにするのが目的
 ・2~4GBのメモリを積んでいる32bitマシンで
・masterからSBCLへの依存性を排除したブランチ


[バージョン]
・0.2.2


[依存パッケージ]
・dict-0.0.2
 ・ポータブルなハッシュテーブル
 ・https://github.com/sile/dict


[インストール]
> (require :asdf)
> (require :asdf-install)
> (asdf-install:install "cl-dawg-VERSION.tar.gz")


[API]
###
# dawg
 メインパッケージ

####
# dawg:build (&key input output byte-order show-progress) => t
 キーセットファイル※1からDAWGインデックスファイル※2を作成する。
 = input: 入力キーセットファイルのパス名 or キーセットが格納されたリスト (必須)
 = output: 出力DAWGインデックスファイルのパス名 (必須)
 = byte-order: インデックスファイルのバイトオーダーを指定する。:native or :big or :little
        デフォルトは :native                
 = show-progress: 作成時の進捗表示を行うかどうか。デフォルトはnil

※1: キーセットが昇順に改行区切りで格納されているファイル
※2: 正確にはDAWGをDoubleArray形式で保存したインデックスファイル

####
# dawg:load (index-path &key byte-order) => dawg:dawg
 DAWGインデックスファイルからDAWG(DoubleArray形式)を読み込む。
 = index-path: build関数で作成したDAWGインデックスファイル
 = byte-order: インデックスファイルのバイトオーダーを指定する。:native or :big or :little
        デフォルトは :native                

###
# dawg:member? (key dawg &key start end) => boolean
 キーがDAWGに含まれているかどうかを判定する。
 = key: 対象のキー文字列。(simple-array character)型でなければならない
 = dawg: DAWG
 = start: キー文字列内の開始位置
 = end: キー文字列内の終端位置

###
# dawg:get-id (key dawg &key start end) => (or null fixnum)
 キーに紐付くIDを取得する。
 キーがDAWG内に存在しない場合はnilを返す。
 = key: 対象のキー文字列。(simple-array character)型でなければならない
 = dawg: DAWG
 = start: キー文字列内の開始位置
 = end: キー文字列内の終端位置
 
###
# dawg:each-common-prefix ((match-id match-end) 
                           (key dawg &key start end) 
                           &body body)
 入力キーに対して共通接頭辞検索を行う。
 入力キーの接頭辞部分にマッチするDAWG内の各キーに対して、body部分の処理が実行される。
 ※ return関数を使うことで、途中でループを抜けることが可能
 = match-id: 入力キーの接頭辞部分にマッチしたキーのID値
 = match-end: 入力キー内のマッチした部分の終端位置
 = key: 入力キー文字列。(simple-array character)型でなければならない
 = start: キー文字列内の開始位置
 = end: キー文字列内の終端位置
 = body: マッチの度に実行される式

###
# dawg:each-predictive ((match-id)
                        (key dawg &key start end) 
                        &body body)
 入力キーが接頭辞となる全ての要素を走査する。
 各走査で要素のIDを受け取り、body部分の処理が実行される。
 ※ return関数を使うことで、途中でループを抜けることが可能
 = match-id: 入力キーが接頭辞となる要素のID値
 = key: 入力キー文字列。(simple-array character)型でなければならない
 = start: キー文字列内の開始位置
 = end: キー文字列内の終端位置
 = body: マッチの度に実行される式


[注意事項]
・DAWGのキー内の文字にヌル文字を含めることは出来ない
 ・DoubleArray中で(CHECK配列の初期値として)特別扱いしているため