関連サイト
本書の関連ページが用意されています。
内容紹介
本書は、自然言語処理について初歩から学べる書籍です。プログラミングについては、なんらかのプログラミング言語を使ったことのある開発者を対象に書いています。
自然言語とは、私たち人間が日常的に読み書きしたり、話したりするのに使っている言語のことです。そして、自然言語で書かれたテキストデータをコンピュータで処理するための技術を自然言語処理と呼びます。自然言語処理によって実行できるタスクの代表的な例としては、自動翻訳や質問応答、対話などがあります。
本書では、この自然言語処理について、今まで学習したことがない人でも学べるように、基礎から解説しています。自然言語をコンピュータで処理するために、事前にどのような処理をしておくのか、どのように単語や文章を解析するのか、自動翻訳などのタスクを実行させるためにどのような処理を行うのか、などについて、やさしく説明していきます。
基礎からはじめて、単語分散表現やテキスト分類、系列ラベリング、系列変換、アテンションといった、自然言語処理では欠かせない技術について、理論を解説した上で、Pythonを使って実装し、手を動かしながら理解できるようにしています。
また、現在の自然言語処理は、機械学習や深層学習とも切り離せません。ですので本書では、これらの技術についても基礎から説明し、Pythonを使って処理を実装していきます。基礎的な実装のみではなく、RNN、LSTM、CNNさまざまなモデルを使っての実装、特徴量エンジニアリングや正則化、ハイパーパラメータチューニングなど、実際の処理で必要になるところまで、詳しく解説しています。
本書の特徴として、ほとんどの実装で日本語のデータを使っている点があります。機械学習を用いた自然言語処理手法を日本語に対して適用しようとすると、途端にデータセットの壁に当たります。このような状況を踏まえ、本書では、日本語のデータセットで自然言語処理の様々なタスクを試せるようにしています。
これから、プログラムでの実装も合わせて自然言語処理をしっかり学習したいという方にとっては、最適の1冊です。
書誌情報
- 著者: 中山光樹
- 発行日: 2020-02-27 (紙書籍版発行日: 2020-02-27)
- 最終更新日: 2020-02-27
- バージョン: 1.0.0
- ページ数: 336ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
著者について
中山光樹
1991年生まれ。電気通信大学卒、電気通信大学情報理工学研究科修士課程修了。現在、企業にて、自然言語処理や機械学習に研究開発に従事。また、GitHub上でオープンソースソフトウェアの自然言語処理ライブラリ開発にも貢献している。
目次
Contents
Chapter 1 自然言語処理の基礎
- 1-1 本章の概要
- 1-2 自然言語処理とは?
- 1-2-1 自然言語と人工言語
- 1-2-2 自然言語処理
- 1-3 自然言語処理のタスク
- 1-3-1 自然言語処理の基礎技術
- 1-3-2 自然言語処理の応用技術
- 1-4 自然言語処理の難しさ
- 1-4-1 おさらい
Chapter 2 機械学習
- 2-1 本章の概要
- 2-2 機械学習とは?
- 2-3 教師あり学習
- 2-3-1 分類
- 2-3-2 回帰
- 2-4 教師なし学習
- 2-4-1 クラスタリング
- 2-4-2 次元削減
- 2-5 強化学習
- 2-6 機械学習パイプライン
- 2-4 開発環境の構築
- 2-7-1 Minicondaのインストール
- 2-7-2 仮想環境の構築
- 2-7-3 パッケージのインストール
- 2-7-4 エディタのインストール
- 2-7-5 おさらい
Chapter 3 コーパス
- 3-1 本章の概要
- 3-2 コーパスとは?
- 3-3 コーパスの読み込み
- 3-3-1 ファイル読み書きの基礎
- 3-3-2 CSVとTSVの読み込み
- 3-3-3 JSONの読み込み
- 3-3-4 ディレクトリの走査
- 3-4 コーパスの作成
- 3-4-1 プロジェクト構成
- 3-4-2 APIキーの取得
- 3-4-3 コードの実装
- 3-4-4 アノテーションツール
- 3-4-5 おさらい
Chapter 4 テキストの前処理
- 4-1 本章の概要
- 4-2 前処理の種類と実装
- 4-2-1 テキストのクリーニング
- 4-2-2 単語分割
- 4-2-3 単語の正規化
- 4-2-4 ストップワードの除去
- 4-2-5 単語の ID化
- 4-2-6 パディング
- 4-3 前処理の実践
- 4-3-1 プロジェクト構成
- 4-3-2 データセットの準備
- 4-3-3 モデルの学習・評価用関数の定義
- 4-3-4 モデルの学習と評価
- 4-3-5 おさらい
Chapter 5 特徴エンジニアリング
- 5-1 本章の概要
- 5-2 特徴エンジニアリングとは?
- 5-2-1 質的変数の処理
- 5-2-2 量的変数の処理
- 5-3 テキストのベクトル表現
- 5-3-1 N-gramベクトル
- 5-4 ベクトル表現の実践
- 5-4-1 プロジェクト構成
- 5-4-2 データセットの準備
- 5-4-3 モデルの学習・評価用関数の定義
- 5-4-4 モデルの学習と評価
- 5-5 特徴量のスケーリング
- 5-5-1 正規化
- 5-5-2 標準化
- 5-5-3 正規化と標準化の可視化
- 5-6 特徴選択
- 5-6-1 特徴選択とは
- 5-7 特徴選択の実践
- 5-7-1 プロジェクト構成
- 5-7-2 モデルの学習と評価
- 5-7-3 おさらい
Chapter 6 機械学習アルゴリズム
- 6-1 本章の概要
- 6-2 ロジスティック回帰
- 6-2-1 分類問題の定式化
- 6-2-2 分類確率の導入
- 6-2-3 ロジスティック回帰の学習
- 6-3 ロジスティック回帰によるテキスト分類
- 6-3-1 プロジェクト構成
- 6-3-2 ロジスティック回帰によるテキスト分類の実践
- 6-4 交差検証
- 6-5 汎化性能
- 6-6 学習曲線
- 6-7 正則化
- 6-8 ハイパーパラメータチューニング
- 6-8-1 おさらい
Chapter 7 ニューラルネットワーク
- 7-1 本章の概要
- 7-2 ニューラルネットワークとは?
- 7-3 バイアス
- 7-4 活性化関数
- 7-5 Kerasによるニューラルネットワークの実装
- 7-5-1 プロジェクト構成
- 7-5-2 データセットの準備
- 7-5-3 モデルの定義
- 7-5-4 損失関数と最適化関数
- 7-5-5 コールバック
- 7-5-6 モデルの学習
- 7-5-7 モデルを使った予測
- 7-5-8 モデルの保存と読み込み
- 7-5-9 実践
- 7-5-10 おさらい
Chapter 8 単語分散表現
- 8-1 本章の概要
- 8-2 単語の分散表現とは?
- 8-2-1 one-hotエンコーディング
- 8-2-2 分散表現
- 8-3 単語分散表現を学習するモデルの仕組み
- 8-3-1 基礎的な考え方
- 8-3-2 word2vec
- 8-3-3 Skip-gram
- 8-3-4 ネガティブサンプリングによる高速化
- 8-4 モデルの実装
- 8-4-1 プロジェクト構成
- 8-4-2 データセットの準備
- 8-4-3 モデルの定義
- 8-4-4 予測用クラスの実装
- 8-4-5モデルの学習
- 8-5 gensimを使った単語分散表現の学習
- 8-5-1 プロジェクト構成
- 8-5-2 モデルの学習
- 8-5-3 単語分散表現の使用
- 8-6 学習済み単語分散表現の利用
- 8-6-1 学習済み単語分散表現のダウンロード
- 8-6-2 単語分散表現の読み込み
- 8-7 単語分散表現の評価
- 8-7-1 おさらい
Chapter 9 テキスト分類
- 9-1 本章の概要
- 9-2 テキスト分類とは?
- 9-3 リカレントニューラルネットワーク
- 9-4 RNNによるテキスト分類器の実装
- 9-4-1 プロジェクト構成
- 9-4-2 データセットの準備
- 9-4-3 モデルの定義
- 9-4-4 予測用クラスの実装
- 9-4-5 テキスト分類の評価
- 9-4-6 モデルの学習と評価
- 9-5 LSTM
- 9-6 LSTMによるテキスト分類器の構築
- 9-6-1 モデルの定義
- 9-6-2 モデルの学習
- 9-7 畳み込みニューラルネットワーク
- 9-8 CNNによるテキスト分類器の実装
- 9-8-1 モデルの定義
- 9-8-2 モデルの学習
- 9-9学習済み単語分散表現の使い方
- 9-9-1 単語分散表現の準備
- 9-9-2 モデルの定義
- 9-9-3 モデルの学習
- 9-9-4 おさらい
Chapter 10 系列ラベリング
- 10-1本章の概要
- 10-2系列ラベリングとは?
- 10-3固有表現認識
- 10-4 LSTMによる固有表現認識器の実装
- 10-4-1 プロジェクト構成
- 10-4-2 データセットの準備
- 10-4-3 モデルの定義
- 10-4-4 予測用クラスの実装
- 10-4-5 固有表現認識の評価
- 10-4-6 モデルの学習と評価
- 10-5 双方向 LSTM
- 10-6 双方向 LSTMによる固有表現認識器の実装
- 10-6-1 モデルの定義
- 10-6-2 モデルの学習と評価
- 10-7 BERT
- 10-8 BERTによる固有表現認識器の実装
- 10-8-1 プロジェクト構成
- 10-8-2 パッケージのインストール
- 10-8-3 データセットの準備
- 10-8-4 モデルの定義
- 10-8-5 評価用コードの実装
- 10-8-6 モデルの学習と評価
- 10-8-7 おさらい
Chapter 11 系列変換
- 11-1 本章の概要
- 11-2 系列変換とは?
- 11-3 系列変換モデルの定式化
- 11-3-1 エンコーダの埋め込み層
- 11-3-2 エンコーダの RNN層
- 11-3-3 デコーダの埋め込み層
- 11-3-4 デコーダの RNN層
- 11-3-5 デコーダの出力層
- 11-4 系列変換モデルの実装
- 11-4-1 プロジェクト構成
- 11-4-2 データセットの準備
- 11-4-3 モデルの定義
- 11-4-4 予測用クラスの実装
- 11-4-5 評価
- 11-4-6 モデルの学習と評価
- 11-5 アテンション
- 11-6 アテンションの実装
- 11-6-1 予測用クラスの実装
- 11-6-2 モデルの学習と評価
- 11-6-3 おさらい
Chapter 12 機械学習とクラウド
- 12-1本章の概要
- 12-2 Colaboratoryを使った環境構築
- 12-2-1 基本的な使い方
- 12-2-2 GPUの使い方
- 12-2-3 パッケージのインストール方法
- 12-3機械学習の自動化 ~AutoML~
- 12-3-1 モデル選択
- 12-3-2 ニューラルアーキテクチャサーチ
- 12-4 Cloud AutoML
- 12-4-1 APIの有効化
- 12-4-2 データセットのアップロード
- 12-4-3 モデルの学習
- 12-4-4 クリーンアップ
- 12-5自然言語処理 API
- 12-5-1 APIキーの取得
- 12-5-2 コードの実装
- 12-5-3 API呼び出し
- 12-5-4 おさらい