のーずいだんぷ

主に自分用メモですが、もしかしたら誰かの役に立つかもしれません

15stepで踏破 自然言語処理アプリケーション開発入門 を読んだ

本書の感想

私は自然言語処理のサービスを提供する会社に勤めているのだが、そろそろ自然言語処理の仕事をする必要が生じたため、とっかかりとして以下の本で勉強した。

15Stepで踏破 自然言語処理アプリケーション開発入門 (StepUp!選書)

15Stepで踏破 自然言語処理アプリケーション開発入門 (StepUp!選書)

  • 作者:土屋 祐一郎
  • 出版社/メーカー: リックテレコム
  • 発売日: 2019/09/27
  • メディア: 単行本(ソフトカバー)

結論、非常に良い本だった。

基本的に最近の自然言語処理は機械学習等のAI技術とほとんどセットになっているのだが、その影響もあり理論から学ぶのはかなりコストがかかる。

その点本書はエンジニアを対象に手を動かすことを目的としながらも、理論についても可能な限り直感的な理解が出来るように説明がされている。

この手の入門本にありがちなこととして、「ごまかしによるもやもや」が強くてあまりわかった気がしないことが多いのだが、本書は絶妙なバランスで説明する箇所を選別しており、割愛する箇所についてもどういうものかざっくり説明&調べる方向性を示してあるので、その後の自学で困ることはおそらく内容に思う。

また「対話エージェントを作る」という目的に沿って必要な事柄を学ぶストーリーになっているのも興味を失わず学習を継続出来る構成になっていることも良かったと思う。

おそらく多少Pythonが使えるレベル(もしくは別の言語でのプログラミング経験がある)なのであれば、本書で十分自然言語処理の勉強を開始することが出来るだろう。

本書の構成

本書で得られる知識はだいたい以下のような感じだった。

  1. Pythonとライブラリ(Numpy/Pandas)の簡単な使用方法
  2. Mecabを使用した形態素解析(分かち書き)について
  3. データの前処理
  4. 特徴抽出の方法(Bow, TF-IDF, BM25, N-gram, 特徴量の連結, アドホックな特徴量)
  5. LSA/PCAによる特徴量変換(次元圧縮)
  6. 識別機(サポートベクタマシン, アンサンブル(ランダムフォレスト), k近傍方)
  7. 評価の方法(precision, recall, f-measure)
  8. ニューラルネットワーク(単純/多層パーセプトロン,Kerasによるディープニューラルネット)
  9. ニューラルネットワークによる識別器
  10. ニューラルネットワークの学習とチューニング
  11. Word Embeddings(gensim)
  12. 畳み込みニューラルネットワーク
  13. 再帰ニューラルネットワーク(RNN, LSTM)
  14. ハイパーパラメータ探索と確率分布について(gridsearch, hyperopt)
  15. データ収集について

学習まとめ

一つの記事にまとめると一覧性が悪くなるので、個別のトピックにまとめて過去記事リンクを追記する形にしようと思う。