学生募集‎ > ‎

自然言語処理を学ぶ推薦書籍

自然言語処理を学ぶ推薦書籍を紹介します。2016年4月現在、自然言語処理を勉強したい理工系の学生・エンジニアの人は、以下の本を推薦します。
  1. 自然言語処理(放送大学出版)
  2. 言語処理のための機械学習入門
  3. Python によるデータ分析入門
  4. Python 機械学習プログラミング
  5. (ITエンジニアのための機械学習理論入門)

自然言語処理を勉強したい、非理工系・非エンジニアの人には、以下の本を推薦します。

  1. 自然言語処理の基本と技術
  2. 自然言語処理の基礎

オライリーから出ている「入門 自然言語処理」は特殊な本(詳しい人がこれを使ってレクチャーしてくれるならともかく、独習に向いていない)で、すでに動かなくなったコードも多々あり、訳に難のある章が含まれるので、2016年時点では初学者にはお勧めしません。(それでもどうしても読みたい人は、本家にある Python 3 対応した NLTK Book 英語版のほうを読んでください。英語版は、第2版の出版が2016年上半期に予定されているそうです。)

自然言語処理

自然言語処理の基礎(コロナ社 2010)

なにか1冊で自然言語処理について学びたい人はこの本が最適。薄いのですぐ読める。ところどころ、奥村先生の主張が挟まれていておもしろい。2015年に下記の放送大学テキストが出たので、この本は歴史的役割を終えたと思われる。(ただし、機械学習成分・統計的自然言語処理成分がやや少ないので、非理工系出身の人はこちらの方が読みやすいだろう)

(2015年度首都大小町研で、「自然言語処理の基礎」の輪読会が開催されました)

自然言語処理(放送大学 2015)

放送大学の教科書で、薄い本ながら歴史から最先端の話題も含めコンパクトにまとまっている良書2015年時点の教科書としては決定版(上記「自然言語処理の基礎」と比較して、こちらの方が機械学習の手法に詳しい)。実装には踏み込まないが、新しい手法のアルゴリズムも解説されている。現在の技術で精度がどれくらい、というような話題も書かれている。ラジオ放送を聞くこともできる(本がないと理解困難だと思われるので、本を購入することを強くお勧めする)。

自然言語処理の基本と技術(翔泳社 2016)

小町が監修に関わった自然言語処理の入門書で、一般の人が興味を持つであろう応用から逆算して基本を解説する、というスタンスなので、非専門家をターゲットにしているところが主な特徴。できる限り数式を用いない説明を意識しており、必ずしも自然言語処理の研究・開発をしたいと思っていない人向け。自然言語処理に興味のある学生・エンジニアは上記の「自然言語処理の基礎」あるいは「自然言語処理」を読むことをお勧めする。

(2016年度はこれを教科書にした首都大のオープンユニバーシティ講座を開講予定)

入門自然言語処理(オライリー 2010)

Python で書かれた NLTK (Natural Language Toolkit) というツールキットを使って自然言語処理を学ぶ本。英語版は NLTK Book と言って無料で公開されているので、買う前に内容をチェックしたほうがよい。また、日本語版に追記されている書き下ろしの章は Python による日本語自然言語処理 として公開されている。こちらも、購入前に全文を読むことができる(内容はウェブで読める日本語処理の解説としてはトップクラスに詳しくかつ分かりやすい)ので、買う前に内容を見て、それでも買いたい場合は購入するとよい。オライリーから出ている、かつ「入門」だからと購入する人が多いようだが、萩原さんの書いた(ウェブで読める)「Python による日本語自然言語処理」以外の内容は、あまり分かりやすくない。また、上記リンク先の Python コードは最近ではそのままだと動かないので、コードを試しながら理解する、という使い方ができなくなってしまったのが残念。

(2014年度首都大小町研で、「入門自然言語処理」を用いた自然言語処理の基礎勉強会を行ないました)

人工知能学事典(人工知能学会 2005)

第7章「自然言語処理」が、1項目1-2ページで全25項目について自然言語処理について解説されており、過不足なく自然言語処理全体を概観することができる。刊行から10年が経ち古くなってきているが、第2版の改訂作業が進行中である。

(2013年度首都大小町研で「人工知能学事典」を用いた自然言語処理の基礎勉強会を行ないました)

言語処理学事典(言語処理学会 2009)

人工知能学事典で分からないことがあれば、こちらを参照するとよい。『人工知能学事典』同様、デジタル版がある。

機械学習

言語処理のための機械学習入門(コロナ社 2010)

機械学習を用いた自然言語処理を研究・開発する人の必読書。豊富な演習問題に、それぞれ解説もついているので、独習することもできる。自然言語処理を学習するに当たって必要な線形代数・微分積分の知識がどの程度か知りたい人も、同書を眺めてみるとよい。

(2013年度以降の毎年、首都大小町研で「言語処理のための機械学習入門」を用いた機械学習の基礎勉強会を行なっています)

日本語入力を支える技術(技術評論社 2012)

Ruby 風の疑似コードを用いて日本語入力を題材に機械学習アルゴリズムを解説。実装力がそれなりにある人向け。「言語処理のための機械学習入門」のあと、もしくはそれとあわせて読むとよい。ただし、本格的な自然言語処理の知識を仮定しているので、すでに自然言語処理を学んだことのある人か、あるいは形態素解析レイヤー(単語分割、品詞推定)に興味がある人でないと、読むのは厳しいかもしれない。他の解説は、たとえば 社員数500人の会社としての大学 を参照。

入門機械学習(オライリー 2010)

Rで機械学習をいろいろなタスクに応用するという内容。個々の機械学習アルゴリズムはほとんど説明されていないが、どのようにしたら機械学習を自分のデータに適用できるか、ということを知ることができる。オライリーの本なので読みたがる人が多いが、Rを既に知っているのでRのほうが分かりやすい、というのでなければ先に『Python 機械学習プログラミング』を読んだほうがよい。Rで処理できるのは大規模データとはいいがたい分量なので、実際に機械学習手法を用いて解析したい人は、この本で入門しないほうがよい。

実践機械学習システム(オライリー 2014)

Python を用いていろいろな機械学習システムを実装するという内容。機械学習の理論について深く解説されているわけではないが、言語処理から画像処理まで幅広くカバーされていて、バランスがよい。和訳はこなれているというわけではないが、致命的に読みにくいわけではなく、サンプルコードも一応参考にしてもよいレベル。「Python 機械学習プログラミング」登場前はこれが良かったと思うが、「Python 機械学習プログラミング」のある今、この本を先に読む必要はない。

(2015年度、首都大小町研で「実践機械学習システム」を用いた機械学習の勉強会が開催されました)

ITエンジニアのための機械学習理論入門(技術評論社 2015)

こちらも Python を用いて機械学習の理論を学ぶという内容。そこそこ過不足なく機械学習の理論について解説されており、サンプルコードも配布されているので、実行しながらパラメータの意味を理解したりすることができるのはとてもよい。「言語処理のための機械学習入門」は機械学習とプログラミングをつなぐことができないのが唯一の弱点だったが、それをこの本は補うことができるのでお勧め。ただし、Python の使い方(NumPy や matplotlib、pandas、ipython)は全く解説されないので、以下の「Python によるデータ分析入門」を先に読んだ方がよい。

Python 機械学習プログラミング(インプレス 2016)

機械学習の基本から最新の深層ニューラルネットワークまでカバーしている意欲的な本。scikit-learn 準拠で、線形代数の知識(Python 的には NumPy/SciPy)はそれなりに仮定されているが、数式とコードをちゃんと付き合わせて理解できる、という意味で決定版の良書。英語版は出版社から買えば PDF で購入できるので、リンクを飛んだりできて便利。「言語処理のための機械学習入門」「Python によるデータ分析入門」と合わせて読むとよい。

(2016年度、首都大小町研でこの本の原著である「Python Machine Learning」を用いた機械学習の勉強会が開催されました)

ウェブマイニング

大規模サービス技術入門(技術評論社 2010)

どのようにスケーラブルなウェブサービスを作るか、という内容で、検索エンジンを作る過程で文字列処理や記事の分類タスクなどが登場。大規模化するというのは単にデータを大きくすればいいというわけではなく、情報科学の基礎知識がちゃんと分かった上でないとできない、ということがよく分かる良書。

Google を支える技術(技術評論社 2008)

Google の検索エンジンを支える技術を、公開されている論文の紹介をすることで解説するというコンセプトの本。単なる翻訳ではなく、理解しやすいように丁寧に書かれている。『大規模サービス技術入門』同様、大規模化するに当たっての課題を理解できる。

バッドデータハンドブック(オライリー 2013)

アンソロジー形式の本で、いろいろな内容について書かれているが、現実のデータは人工データとは違い、例外と戦わなければいけないし、大規模化する必要もないのに無闇に大規模化してしまって失敗した、というような教訓が書かれた実例集。ウェブデータをどのようにスクレイピング(ほしい情報をウェブサイトから抽出)するか、といった内容も、体系的ではないがあちこちの章に分散して書かれている。他の解説はたとえば 現実はバッドデータが9割 を参照。

Python によるデータ分析入門 -- NumPy、pandas を使ったデータ処理 (オライリー 2013)

ウェブマイニングというよりデータマイニングや機械学習のテーマだが、NumPy/SciPy という強力な数値計算ライブラリや matplotlib による可視化、pandas によるデータ分析、ipython による操作など、かゆいところに手が届く大変な良書。scikit-learn について紹介されていればデータマイニング・機械学習入門としても完璧であった。他の解説はたとえば 詳しい人が読んでも楽しめる入門書は良書 を参照。

集合知プログラミング(オライリー 2008)

Python で機械学習のアルゴリズムについて解説した本。現実的な設定でコードが豊富に載っているのでお勧め。最近は紹介されているサービスやAPI等ちょっと古いかもしれない。

入門ソーシャルデータ(オライリー 2011)

Python でウェブマイニングに関するいろいろなトピックについて解説した本。翻訳はいまいちだが、コードが豊富に載っているのでお勧め(ただし、コードが読みやす いとは限らないので、Python の入門書を片手に読んだほうがよい。また、この本のプログラミングの仕方は参考にしないほうがよい)。たとえば 『入門ソーシャルデータ』で文書クラスタリングと文書要約を学ぶ を参照。2014年に第2版が出たようなので、もしかしたら改善されているかもしれない。

Comments