tiny-segmenter - xyzzy Lisp だけで実装されたコンパクトな分かち書きソフトウェア

1 SYNOPSIS

(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" " " "に" "移植し" "た" "もの" "です" "。")

2 DESCRIPTION

tiny-segmenter は TinySegmenter: Javascript だけで実装されたコンパクトな分かち書きソフトウェア を xyzzy lisp に移植したものです。

上記 URL によれば以下のような特徴があります。

3 INSTALL

tiny-segmenter はライブラリです。

3.1 NetInstaller でインストール

  1. NetInstaller で tiny-segmenter をインストールします。

3.2 NetInstaller を使わずにインストール

  1. アーカイブをダウンロードします。

    <URL:http://miyamuko.s56.xrea.com/xyzzy/archives/tiny-segmenter.zip>

  2. アーカイブを展開して、$XYZZY/site-lisp 配下にファイルをコピーします。

4 MODULE

4.1 DEPENDS

依存モジュールはありません。

4.2 PACKAGE

tiny-segmenter は以下のパッケージを利用しています。

4.3 EXPORT

tiny-segmenter は以下のシンボルを export しています。

4.4 CONDITION

なし。

4.5 VARIABLE

なし。

4.6 COMMAND

なし。

4.7 FUNCTION

tiny-segmenter:segment INPUT

INPUT で指定されたオブジェクトを分かち書きしてリストで返します。

; 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 INPUT

INPUT で指定されたオブジェクトを分かち書きする SEGMENTER オブジェクトを返します。

SEGMENTER オブジェクトは INPUT を保持し、以下の関数が呼ばれるたびに 分かち書き処理を進めます。

すべての INPUT を処理した後は、これらの関数は nil を返します。

※注意※

現在のバージョンでは SEGMENTER オブジェクトはクロージャとして実装されていますが、 将来のバージョンで変更する可能性があります。 直接 funcall するのは避けてください。

tiny-segmenter:segmenter-segment-next SEGMENTER

SEGMENTER オブジェクトが保持する残りの 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 N

SEGMENTER オブジェクトが保持する残りの 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)
;;=> nil
tiny-segmenter:segmenter-segment-all SEGMENTER

SEGMENTER オブジェクトが保持する残りの 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 より前のバージョンでの処理))

5 TODO

6 KNOWN BUGS

なし。

7 SEE ALSO

TinySegmenter: Javascript だけで実装されたコンパクトな分かち書きソフトウェア
<URL:http://chasen.org/~taku/software/TinySegmenter/>
Text::TinySegmenter - Super compact Japanese tokenizer - search.cpan.org
<URL:http://search.cpan.org/dist/Text-TinySegmenter/>
TinySegmenterをRubyに移植してみた[Ruby] - d.hatena.zeg.la
<URL:http://d.hatena.ne.jp/zegenvs/20080212/p1>
TinySegmenterをRubyに移植 - llameradaの日記
<URL:http://d.hatena.ne.jp/llamerada/20080224/1203818061>

8 COPYRIGHT

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

9 NEWS

9.1 2008-07-19 / 1.1.0

tiny-segmenter 1.1.0 リリース!

新規機能
非互換を含む変更点
バグ修正
その他

9.2 2008-03-09 / 1.0.0

tiny-segmenter 1.0.0 リリース!