日本語の単語分割

日本語の単語分割処理は、一般に、単語辞書と単語間連接の規則や学習データに基づいて行われます。オープンソースとして有名なものがいくつもあります。
KAKASI - 漢字→かな(ローマ字)変換プログラム
JUMAN - KUROHASHI-KAWAHARA LAB
chasen legacy -- an old morphological analyzer
http://mecab.sourceforge.net/
これらのツールは主に新聞記事のような一般的なテキストが対象です。単語辞書に登録されていない語は未知語として処理されますが、特定分野のテキストを対象として解析精度を保つためには、専門用語や新語などを適宜登録する必要があります。

他方、文字間に単語境界があるかどうかを機械学習の2値分類問題として解く手法があり、ツールも公開されています。
KyTea (京都テキスト解析ツールキット)
次のページではこの手法がとても分かりやすく説明されています。
http://www.ar.media.kyoto-u.ac.jp/members/yoshino/tutorial/word-seg.html
この説明にしたがって必要なファイルMPT-10-01-08.tgz, word2lkytea.rb, lkytea2liblin.rbをダウンロードして、次のようにするとLIBLINEAR用の学習データが生成されます。

$ tar zxf MPT-10-01-08.tgz
$ nkf -s MPT-10-01-08/MPT.word > MPT.word
$ ruby word2lkytea.rb < MPT.word > MPT.lkytea
$ ruby lkytea2liblin.rb < MPT.lkytea > MPT.liblin

LIBLINEAR -- A Library for Large Linear Classification
LIBLINEARは交差検定を行うオプションがあります。例えば5分割の場合は、次のように96.1711%という精度が出力されました。なお、クローズドテストの場合は97.7778%です。

$ train -v 5 MPT.liblin
...*
optimization finished, #iter = 35
Objective value = -1092.015796
nSV = 4944
...*
optimization finished, #iter = 36
Objective value = -1124.372428
nSV = 4944
...*
optimization finished, #iter = 36
Objective value = -1066.812952
nSV = 4835
...*
optimization finished, #iter = 36
Objective value = -1093.273601
nSV = 4886
...*
optimization finished, #iter = 36
Objective value = -1059.786251
nSV = 4935
Cross Validation Accuracy = 96.1711%

ちなみに、LIBSVMの線形カーネルを使った場合は、次のようになりました。

$ svm-train -t 0 -h 0 -v 5 MPT.liblin
(省略)
Cross Validation Accuracy = 95.9472%

以上のツールはいずれもMacPortsで利用することができます(ただし、LIBLINEARは現在登録申請中)。

単語境界については以下をはじめ大変興味深い議論があります。
単語と文字の話 | Preferred Research
「ベイズ階層言語モデルによる教師なし形態素解析」持橋大地, 山田武士, 上田修功. 2009-NL-190
「条件付確率場とベイズ階層言語モデルの統合による半教師あり形態素解析」持橋大地, 鈴木潤, 藤野昭典. NLP2011