自然言語処理の教科書はもう全部FSNLP一冊でいいんじゃないかな

自然言語処理の優秀なエンジニア各位にオススメ本を聞くと大抵FSNLP(Foundations of Statistical Natiral Language Processing)という答えが返ってくる。またブログ等でFSNLPを絶賛している方も多い。
私は自然言語処理は長尾本で満足してしまっていたのでFSNLPは読んでいなかったのだけれど、長尾本は現在入手困難ということもあって入手しやすい自然言語処理の教科書があるといいなと思っていたのでFSNLPを読んでみた。
その結果。自然言語処理の教科書はもう全部FSNLP一冊でいいんじゃないかな。という結論に至ったので全力でFSNLPを推薦する記事を書くことにした。

参考:
[を]FSNLP @ytoさん
自然言語処理の定番の教科書まとめ - 生駒日記 @mamorukさん
Perl で自然言語処理 @overlastさん


ざっと読んでみてFSNLPの最も優れている点は自然言語処理の主要な技術を網羅している点ではないかと思った。
ベイズ統計の基礎、エントロピー、KLダイバージェンス、Noisy Channel Model、スムージング、マルコフモデルなど確率的言語モデルで必要そうなものはほぼカバーしている。特にマルコフモデルの箇所ではHMMのパラメータ推定をBaum-Welchアルゴリズムで推定する手法まで解説してあるのはすごい。ここまで書いてある本はあまりない気がする。
また実務で自然言語処理を活用することを考えている人はIV章のApplications and Techniquesを読むだけでも十分に満足できると思う。機械翻訳、情報検索、クラスタリング、カテゴライゼーションの4つの分野を扱っている。情報検索ではベクトル空間モデル、混合モデル、潜在意味解析(LSA,LSI)を、クラスタリングでは階層クラスタリング、k-means(+EMアルゴリズム)を、カテゴライゼーションでは決定木、最大エントロピー法(Log-linear model)、パーセプトロン(perceptron)、kNNをカバーしている。(機械翻訳は詳しくないので説明は省きます。。。)
いずれも基本的な技術の解説にとどまっているが実務で使うには十分すぎる内容だし、世の中にはここに書かれている内容をきちんと説明せずにCRFやSVMなど上位の技術をいきなり説明し始める良くない資料も多いので、まずはFSNLPを読むのが良いと思う。個人的な経験ではベクトル空間モデル、k-means、パーセプトロン(もしくはk-NN)くらい使いこなせれば大抵の問題は解決できるはずだと思っている。
本書は1999年に書かれたものなのでCRFやSVM、LDAといった最新の(っていってももう最新でもないけれど)技術は当然カバーしていないのだけれど、CRFを正しく理解するにはHMMや最大エントロピー法を知っておいたほうがいいし、SVMならパーセプトロンを知っている必要が、LDAはベイズ統計の基礎やKLダイバージェンスなど情報理論の話も必要、と本書の内容がほぼ間違いなく必要になるので、まずはFSNLP読んで余力があったら高度な技術に挑戦したらいいのでは、と思う。
というわけでFSNLPまじぱないです。大抵の場合「ここはFSNLPにまかせよう」でOKなのでは。