(require "tiny-segmenter")
(ts:segment "私の名前は中野です。")
;;=> ("私" "の" "名前" "は" "中野" "です" "。")
(setf *str* "tiny-segmenter は
「TinySegmenter: Javascript だけで実装されたコンパクトな分かち書きソフトウェア」を
xyzzy lisp に移植したものです。")
(setf *segmenter* (ts:make-segmenter *str*))
(ts:segmenter-segment-next *segmenter*)
;;=> "tiny"
(ts:segmenter-segment-next *segmenter*)
;;=> "-segmenter"
(ts:segmenter-segment-partial *segmenter* 3)
;;=> (" " "は" "
;; 「")
(ts:segmenter-segment-partial *segmenter* 5)
;;=> ("TinySegmenter" ": " "Javascript" " " "だけ")
(ts:segmenter-segment-partial *segmenter* 10)
;;=> ("で" "実装" "さ" "れ" "た" "コンパクト" "な" "分かち" "書き" "ソフトウェア")
(ts:segmenter-segment-all *segmenter*)
;;=> ("」" "を" "
;; xyzzy" " lisp" " " "に" "移植し" "た" "もの" "です" "。")
tiny-segmenter は TinySegmenter: Javascript だけで実装されたコンパクトな分かち書きソフトウェア を xyzzy lisp に移植したものです。
上記 URL によれば以下のような特徴があります。
tiny-segmenter はライブラリです。
アーカイブをダウンロードします。
<URL:http://miyamuko.s56.xrea.com/xyzzy/archives/tiny-segmenter.zip>
依存モジュールはありません。
tiny-segmenter は以下のパッケージを利用しています。
tiny-segmenter
nickname は ts です。
tiny-segmenter は以下のシンボルを export しています。
なし。
なし。
なし。
tiny-segmenter:segment INPUTINPUT で指定されたオブジェクトを分かち書きしてリストで返します。
; string
(ts:segment "xyzzy の読み方が分かりません。")
;;=> ("xyzzy" " " "の" "読み方" "が" "分かり" "ませ" "ん" "。")
; stream
(with-input-from-string (s "xyzzy の読み方が分かりません。")
(ts:segment s))
; buffer
(ts:segment (find-buffer "*scratch*"))
tiny-segmenter:make-segmenter INPUTINPUT で指定されたオブジェクトを分かち書きする SEGMENTER オブジェクトを返します。
SEGMENTER オブジェクトは INPUT を保持し、以下の関数が呼ばれるたびに 分かち書き処理を進めます。
すべての INPUT を処理した後は、これらの関数は nil を返します。
※注意※
現在のバージョンでは SEGMENTER オブジェクトはクロージャとして実装されていますが、 将来のバージョンで変更する可能性があります。 直接 funcall するのは避けてください。
tiny-segmenter:segmenter-segment-next SEGMENTERSEGMENTER オブジェクトが保持する残りの INPUT を分かち書きして 次の単語を取得します。
(setf *segmenter* (ts:make-segmenter "xyzzy の読み方が分かりません。")) (ts:segmenter-segment-next *segmenter*) ;;=> "xyzzy" (ts:segmenter-segment-next *segmenter*) ;;=> " " (ts:segmenter-segment-next *segmenter*) ;;=> "の"
tiny-segmenter:segmenter-segment-partial SEGMENTER NSEGMENTER オブジェクトが保持する残りの INPUT を分かち書きして N 個の単語のリストを取得します。
(setf *segmenter* (ts:make-segmenter "xyzzy の読み方が分かりません。"))
(ts:segmenter-segment-partial *segmenter* 7)
;;=> ("xyzzy" " " "の" "読み方" "が" "分かり" "ませ")
(ts:segmenter-segment-partial *segmenter* 7)
;;=> ("ん" "。")
(ts:segmenter-segment-partial *segmenter* 7)
;;=> niltiny-segmenter:segmenter-segment-all SEGMENTERSEGMENTER オブジェクトが保持する残りの INPUT すべて分かち書きして 単語のリストを取得します。
(setf *segmenter* (ts:make-segmenter "xyzzy の読み方が分かりません。"))
(ts:segmenter-segment-next *segmenter*)
;;=> "xyzzy"
(ts:segmenter-segment-all *segmenter*)
;;=> (" " "の" "読み方" "が" "分かり" "ませ" "ん" "。")tiny-segmenter:tiny-segmenter-version本ライブラリのバージョンを返します。 バージョンは major.minor.teeny という形式です。
それぞれの番号は必ず 1 桁にするので、以下のように比較することができます
(if (string<= "1.1.0" (tiny-segmenter:tiny-segmenter-version))
'(1.1.0 以降で有効な処理)
'(1.1.0 より前のバージョンでの処理))なし。
tiny-segmenter は工藤拓氏によって開発された JavaScript 版の TinySegmenter を xyzzy lisp に移植したものです。
tiny-segmenter は修正 BSD ライセンスに従って本ソフトウェアを使用、再配布することができます。
tiny-segmenter -- Super compact Japanese tokenizer (c) 2008 Taku Kudo <taku@chasen.org> (c) 2008 MIYAMUKO Katsuyuki <miyamuko@gmail.com> tiny-segmenter is freely distributable under the terms of a new BSD licence. For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt
tiny-segmenter 1.1.0 リリース!
tiny-segmenter 1.0.0 リリース!