Hatena::ブログ(Diary)

駄文生産所 このページをアンテナに追加 RSSフィード

2009-06-18

Smalltalkで辞書無しの分かち書き雑感

TinyJapaneseTokenizer for VisualWorksとTinySegmenter for VisualWorksは共にJavaScriptで書かれた簡易な分かち書きプログラム移植したものです。面倒だったんでオリジナルロジックをそのままコピーしています。どっちも作業時間は2〜3時間くらい。

TinySegmenterの方はMeCab開発者の実装ということで、なんとなく精度が良さそうな気がします。コード量も少しだけ多いですしね。

といっても、サンタクロースの例文(あーハルヒだなこれ)だとどっちもどっちな感じですし、まぁ、どちらとも不真面目な用途には十分でしょう。

2009-06-17

Smalltalkで辞書無しの分かち書き - TinyJapaneseTokenizer for VisualWorks Ver.001

辞書使用せずにそこそこの精度で分かち書きができます。

JavaScriptで簡易形態素『解析 その2 』で配布されているJavaScriptコードを、そのままVisualWorks Smalltalk移植したものです。

TinyJapaneseTokenizer new parse: '吾輩は猫である。名前はまだ無い。'
"=> OrderedCollection ('吾輩' 'は' '猫' 'で' 'ある' '。' '名前' 'は' 'まだ' '無い' '。')"


| src ws |
src := 'サンタクロースをいつまで信じていたかなんてことはたわいもない
世間話にもならないくらいのどうでもいいような話だが、それでも
俺がいつまでサンタなどという想像上の赤服じーさんを信じていたかと
言うとこれは確信を持って言えるが最初から信じてなどいなかった。'.
ws := WriteStream on: String new.
(TinyJapaneseTokenizer new parse: src)
	do: [:each | ws nextPutAll: each]
	separatedBy: [ws nextPutAll: '|'].
^ws contents 
"=> 'サンタクロース|を|いつ|まで|信じ|て|いたか|なんて|こと|は|たわい|も|ない|
|世間話|に|も|なら|ないくらい|の|どう|でも|いいような|話|だが|、|それでも|
|俺|が|いつ|まで|サンタ|など|という|想像上|の|赤服|じーさん|を|信じ|て|いたか|と|
|言う|と|これ|は|確信|を|持っ|て|言える|が|最初|から|信じ|て|など|いな|か|った|。'"