学習 本・勉強方法 自然言語処理

自然言語処理を勉強する上でおすすめの本をご紹介

2020年9月11日

自然言語処理を独学したいと思っても、なかなかどの本を読めばわからない方も多いと思います。

また、本を買って勉強しようと思ったものの、難しすぎて挫折したという方もいると思います。

ということで、今回は自然言語処理を勉強する上で、個人的に役に立った本についてレベルごとに紹介したいと思います。

多すぎても選びにくくなると思いますので、レベルごとに2~3冊に絞っています。

では、順番にご紹介したいと思います。

機械学習入門編

機械学習についてある程度基礎知識がないと難しいですので、まずは最低限の機械学習の理解をするための本をご紹介します。

どの順番に読んでもいいですが、まずは手を動かすはじめの2冊がオススメです。

[第2版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践 impress top gearシリーズ

Pythonを使った機械学習の定番の本ですね。

機械学習をこれから勉強する!という方に最適です。

非常にわかりやすく、パーセプトロンからしっかりと説明されています。

また理論だけでなく、実際にScikit-Learnなどを使って実装しますので、PythonやScikit-Learnについても理解することができます。

自然言語処理についても、Bag-of-WordsやTF-IDFについては説明されており、本格的に自然言語処理を勉強する前に読んでおくと良いと思います。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

こちらはDeep Learningをメインに扱っているため、サポート・ベクター・マシンや決定木、ランダム・フォレストなどの機械学習テクニックについては触れられていません。

スクラッチで一から作っていくため、内部でどんな動きをしているかというのをしっかりと理解することができます。

説明も非常にわかりやすいので、すらすらと読み進められると思います。

近年の機械学習のブレイクスルーとなっているものは基本的にDeep Learningベースなので、早くDeep Learningを理解したいという人には、これが一番オススメです

畳み込みニューラルネットワークの話が多いので、画像処理分野の基礎をしっかり理解できます。

はじめてのパターン認識

こちらは実装はなく、理論のみです。

その分、理論については上の「Python機械学習プログラミング」よりも深く説明されています。

ただ動かす・作れるというだけでなく、しっかりと基礎的な理論を押さえたい人に向いています。

勉強の順番は色々ありますが、上記の本で手を動かしたあとに読んで、理論をしっかり理解するというのもいいと思います。

自然言語処理入門編

続いて、自然言語処理に入っていきます。

まず、入門レベルで一番のオススメはこちらです。

勤務先でもこの本を使って勉強会をしているグループがありました。

ゼロから作るDeep Learning 2 自然言語処理編

TensorflowやPyTorchなどを使わず、ほぼすべてスクラッチで作るので、細かい部分までしっかりと理解できます。

また、細かい部分まで解説しているとはいえ、説明は非常にわかりやすいので、すらすらと読み進めることができます。

Word2Vec、LSTM、Attentionメカニズムの話題が中心なので、Transformer、BERTなどのモデルの前の仕組みを理解したいという方に最適です。

TransformerやBERTから始めても初めは大丈夫だと思いますが、やはり最終的にはそれ以前のモデルをしっかり理解しておくと新しいモデルの理解もまったく違うと思いますので、一度は読んでおいて損はないと思います。

著者の方に怒られるかもしれませんが、時間がない方は実装せずにざっと目を通すだけでもエッセンスは十分得られると思います。

次は、非常にわかりやすい一冊です。

機械学習・深層学習による自然言語処理入門 ~scikit-learnとTensorFlowを使った実践プログラミング~ (Compass Data Science)

入門編としては非常にわかりやすいと思います。

ただ、かなり初歩的な箇所も多いので、例えばMOOCなどで基礎的な内容を勉強したあとだと、あまり学ぶところはないかもしれません。

ただし、BERTを使った固有表現抽出の方法も載っているのでそれは参考になると思います。

個人的にはMOOCの後に復習用として読むのがオススメです。

次は、ニューラル・ネットワークといった話よりも、もっとファンダメンタルな部分をしっかりと説明している本で、個人的には非常に楽しめた一冊です。

自然言語処理〔改訂版〕 (放送大学教材)

基礎的なところから説明されており、最近の書籍には載っていないような内容に関してしっかりと理解できます。

センチメント分析・文書分類だけでなく、例えば品詞タグ付け(part of speech tagging)、情報抽出(Information Extraction)をするのであれば必須となってくる基礎知識が載っています。

また、自然言語処理の歴史や、日本語、英語における構文の特徴など、非常に参考になりますし、読んでいて楽しいです。

必ずしも入門者が読んだ方が良いというわけではなく、個人的には一通り学習してから、こういった内容も勉強する方が良いかなと思います

LSTMやWord2Vec、Transformer、BERTなどを理解している人でも、勉強になると思います。

自然言語処理発展編

自然言語処理の基礎的な部分は理解しているという方向けの、少し発展した話題が載っている本です。

ただし、入門編に紹介した本を読んでから出ないと理解不可能というわけではまったくなく、どれもわかりやすく書かれていますので、いきなりこちらで入っていくというのでも全然大丈夫だと思います

まずは一番のオススメです。

つくりながら学ぶ!PyTorchによる発展ディープラーニング

自然言語処理に関してはTransformerとBERTを理解したい人向けです。

自然言語処理に特化した本ではないので、自然言語処理についてはTransformerとBERTが最後に載っているだけです。

ただ、丁寧に説明がされており、何と言ってもBERTまで自分で実装するので、今使われている技術の重要な部分を理解することができます。

ついでに画像認識分野やPyTorchも学ぶことができます。

やはり自分で手を動かして理解するのが一番早く、しっかり理解することができますね。

個人的には一番オススメの一冊です。

次は、しっかりと理論を把握しておきたい人向けです。

深層学習による自然言語処理(機械学習プロフェッショナルシリーズ)

初学者には難しいので、いきなり読むと挫折するリスクが高いですが、ある程度学習した上で読むとそこまで難解ではなく、ちょっと上級レベルの知識を得ることができます。

理論的な背景もしっかり書いてあるので、ある程度使い方とかは理解していて、理論をしっかり理解したい方には最適です

発展編の最後は、とうとう出ましたBERTに関する書籍です。

BERTによる自然言語処理入門 ―Transformersを使った実践プログラミング―

この本の出現により、おすすめ度は『つくりながら学ぶ!PyTorchによる発展ディープラーニング』と同順位になりました。

こちらの本はどちらかというと“BERTを使う”ことに重点が置かれています。

2章でさらっと自然言語処理の歴史について振り返り、そこから最後までBERTの説明です。

BERTのモデルの説明もありますが、基本的にはHuggingfaceのTransformersとPyTorch Lightningを使ったファインチューニングの方法がほとんどです。

日本語のデータセットを使って、文章分類や固有表現抽出、文章校正を行いますので、実際にBERTを使ってみたいう人には最適だと思います。

この本で手を動かして、何度も作っては直しを繰り返せば、かなりの力がついていると思います(いわゆる写経ですね)。

また、BERTを理解できれば、RoBERTa、ALBERT、T5、BART、ELECTRAなど、その後のモデルも理解しやすいので、早めに読んでおくと良いでしょう。

テーマ別書籍のご紹介

今までは、どちらかというと自然言語処理全般に関するオススメ書籍をご紹介しましたが、ここでは特定の領域に特化した書籍をご紹介したいと思います。

これらの本の内容を理解することで、情報抽出やチャットボットなど実際にアプリケーションを作るための知識が得られると思います。

形態素解析

こちらはSentence-Pieceを開発した方による本で、形態素解析について非常に詳しく説明されています。

若干ややこしい部分もありますが、説明が丁寧で例を交えてわかりやすく解説されていますので、とりあえず概要を把握したいという方は数式をある程度飛ばしても十分だと思います。

少なくとも形態素解析を使う側の人はこれを読んでおけば十分だと思います。

固有表現抽出

固有表現抽出と関係抽出についてメインに解説されています。

自然言語処理の実務への主な適用先として、情報抽出は重要なトピックなのでしっかり理解しておいた方がよいです。

Transformerなどは扱っていませんが、セミマルコフモデルやビタビアルゴリズムなどの重要なアルゴリズムや固有表現抽出独特の概念などが詳しく解説されています。

対話システム

こちらはモデルに関する理論の説明はありませんが、Telegramというアプリ上で対話できるようなシステムを実際に構築していきます。

ある程度モデルを理解している人には、それらのモデルを使ってどう対話システムを構築するかが理解できて非常に良いと思います。

モデルがわからない人も、まずはこうやれば作ることができるということが理解でき、そのあと必要に応じてモデルの勉強をするということで良いと思います。

自分でチャットボットを作成するので、とにかく楽しいです。

自分で何か作りたいな~と思わせてくれる本です。

PyTorch

自然言語処理ではありませんが、PyTorchを学ぶ上ではこちらの本と次でご紹介する本がオススメです。

基本的なところから非常に細かく丁寧かつ平易に説明されていて、表面的な理解だけでなく、深く体系的に理解することができます。

第二部は若干難しい部分もありますが、第一部だけでもかなり理解を助けてくれると思います。

上記の「つくりながら学ぶ!PyTorchによる発展ディープラーニング」を使ってディープラーニングを勉強しながら、こちらの本でPyTorchの基礎を学習していく、というのもオススメです。

上記の本は第二部から若干難易度が上がっていますので、より入門向けの本としてこちらの本をオススメします。

結構分厚いですが、基礎的な部分から非常に丁寧に説明されていることから、めちゃくちゃわかりやすく、入門者に最適です。

まだあまり自信のない人はこちらの本をオススメします。

MOOC(Massive Open Online Courses)の活用

今まで自然言語処理で参考になる本を紹介してきましたが、いきなり本を読むのは難しかったり時間がかかったりしますので、個人的にははじめはMOOC(Massive Open Online Courses)の活用をお勧めしています。

以下の投稿でもご紹介していますが、まずはMOOCを使ってざっと学習し、その後ご紹介させていただいた本で知識を深めたり補ったりするのが良いと思います。

機械学習入門者向けのUdemy講座については以下の記事でご紹介しています。

スクールの活用

「本では時間がかかるし、MOOCだと質問がしづらく挫折してしまう」、「講師の方から直接実務で行われているモデリングやプログラミングについて学びたい」といった方にはスクールを活用するのもオススメです。

費用はかかりますが、挫折しづらく、独学では身につかない情報や知識を得たりすることができるので、自己投資と考えれば効率が良いと考えることもできます。

こちらの記事では、AIを学ぶことができるスクールを紹介していますので、ご参考までにどうぞ。

その他

他にも機械学習に関する本やデータ分析をする人にとっては非常に重要な「データ可視化技術」に関するオススメ本も紹介しています。

よろしければ参考にしてください。

では、しっかりと本を読んで自分で作ることで理解が深まると思いますので、(自分も含め)頑張っていきましょう!

-学習, 本・勉強方法, 自然言語処理