アルゴリズム

PHPによる機械学習入門

斉藤常治
高橋佑幸
リックテレコム

本書の活用法

1. 自然言語処理と機械学習処理とは

  • 1.1 自然言語処理と機械学習処理の概要
    • 1.1.1 身近にある自然言語処理
    • 1.1.2 自然言語処理とは、どのようなものか
    • 1.1.3 自然言語処理と機械学習処理

2.準備編

  • 2.1.開発環境を用意しよう
    • 2.1.1 開発環境の重要性
    • 2.1.2 開発環境の種類
    • 2.1.3 仮想サーバの導入と設定
      • 2.1.3.1 VirtualBox のインストールと設定
      • 2.1.3.2 CentOSのインストールと設定
      • 2.1.3.3 開発用ユーザの作成
      • 2.1.3.4 ネットワークの設定
    • 2.1.4 サーバ環境の構築
      • 2.1.4.1 Apache httpd のインストールと設定
      • 2.1.4.2 PHPのインストール
      • 2.1.4.3 MySQLのインストールと設定
      • 2.1.4.4 SELinux とiptables の停止
  • 2.2.デスクトップ環境を整える
    • 2.2.1 サーバに接続するためのソフトウェアをインストールする
      • 2.2.1.1 Tera Term のインストールと設定
      • コラム.ターミナルウィンドウの背景色と文字色を変更する
      • 2.2.1.2 Win SCP のインストールと設定
    • 2.2.2 テキストエディタのインストールと設定
      • 2.2.2.1 Tera Pad のインストールと設定
  • 2.3.支援ツールの導入
    • 2.3.1 phpMyAdminのインストールと設定
  • 2.4.開発作業の流れ
    • 2.4.1 プログラムを書いてみよう
    • 2.4.2 サーバにプログラムを送り込もう
    • 2.4.3 サーバ上でプログラムを実行しよう
    • 2.4.4 プログラムのエラーを直そう

3.自然言語処理の初歩

  • 3.1.PHP だけで自然言語文を解析してみよう
    • 3.1.1 英語の文章を単語に分解してみよう
      • 3.1.1.1 文章を単語に分割してみよう
      • 3.1.1.2 取り出した単語をクリーニングしよう
      • 3.1.1.3 単語を正規化しよう
      • 3.1.1.4 英語固有の実装:省略語を識別する
      • 3.1.1.5 英語固有の実装:省略語の識別を速くする
    • 3.1.2 日本語の文章を単語に分解してみよう
      • 3.1.2.1 単語の境目を調べよう
      • 3.1.2.2 区切り文字列を使って文章を分割してみよう
      • 3.1.2.3 区切り文字だけでは対応できない場合を考えよう
      • 3.1.2.4 辞書データを作ってみよう
      • 3.1.2.5 辞書データを使って文章を分割してみよう
  • 3.2.形態素解析ソフトウェア”MeCab”
    • 3.2.1 MeCabとは
    • 3.2.2 MeCabをインストールしよう
    • 3.2.3 MeCab をコマンドラインから使ってみよう
    • 3.2.4 MeCab をPHP から呼び出してみよう
  • 3.3.PHP用のMeCab モジュール”php_mecab”を使ってみよう
    • 3.3.1 php_mecabとは
    • 3.3.2 php_mecabを使うメリット
    • 3.3.3 php_mecabをインストールしよう
    • 3.3.4 php_mecabを使ってみよう

4.自然言語処理の応用:テキストマイニング

  • 4.1.形態素解析用のPHPクラスを実装しよう
    • 4.1.1 PHPにおけるオブジェクト指向の基本
    • 4.1.2 形態素解析クラスの設計をしよう
    • 4.1.3 形態素解析クラスを実装しよう
    • 4.1.4 形態素解析クラスを使ってみよう
  • 4.2.コーパス(言語資源)を使おう
    • 4.2.1 コーパス(言語資源)とは
    • 4.2.2 コーパスを使うメリット
    • 4.2.3 公開コーパスの紹介:20 Newsgroups
    • 4.2.4 ●「20 Newsgroups」コーパスを扱うクラスの紹介
    • 4.2.5 ●「 けんてーごっこコーパス」の紹介
    • 4.2.6 ●「 けんてーごっこコーパス」を扱うクラスの紹介
    • 4.2.7 コーパスの利用にあたっての留意点
  • 4.3.単語の分布を調べよう
    • 4.3.1 単語の頻度を求めよう:「20 Newsgroups」コーパス編(1)
    • 4.3.2 単語の頻度を求めよう:「20 Newsgroups」コーパス編(2)
    • 4.3.3 単語の頻度を求めよう:「けんてーごっこコーパス」編
    • 4.3.4 頻繁に出現する単語を洗い出してみよう
    • 4.3.5 特徴的な単語を計算で求めよう
    • 4.3.6 TF-IDFの値を計算してみよう
  • 4.4.自然言語をベクトルに変換しよう
    • 4.4.1 英語の文章をベクトルに変換しよう
      • 4.4.1.1 TF-IDF の値をベクトルにする
      • 4.4.1.2 TF-IDF ベクトルを生成するクラスの設計
      • 4.4.1.3 TF-IDF ベクトルを生成するクラスの実装
      • 4.4.1.4 クラスを使ってTF-IDF ベクトルを生成してみよう
    • 4.4.2 日本語の文章をベクトルに変換しよう
      • 4.4.2.1 TF-IDF の値をベクトルにする
      • 4.4.2.2 TF-IDF ベクトルを生成するクラスの設計
      • 4.4.2.3 TF-IDF ベクトルを生成するクラスの実装
      • 4.4.2.4 クラスを使ってTF-IDF ベクトルを生成してみよう
  • 4.5.テキストクラスタリング:似ているもの同士をまとめよう
    • 4.5.1 テキストクラスタリングの基本的な仕組み
    • 4.5.2 テキスト同士の類似度を計算しよう
    • 4.5.3 類似度を使って似ているテキストを探そう
    • 4.5.4 たくさんのテキストをグループに分けてみよう
      • 4.5.4.1 グループ分けに便利なアルゴリズム:K-means法
      • 4.5.4.2 K-means法で「20 Newsgroups」コーパスを分類してみよう
      • 4.5.4.3 K-means法で「けんてーごっこコーパス」を分類してみよう

5.機械学習処理:ベイジアンフィルタ

  • 5.1.ベイジアンフィルタとは
    • 5.1.1 ベイジアンフィルタの基本的な考え方
    • 5.1.2 ベイジアンフィルタの実用例:迷惑メールフィルタ
  • 5.2.単語のスコアを計算してみよう
    • 5.2.1 学習用データを準備しよう
    • 5.2.2 機械学習処理結果を保存しよう
    • 5.2.3 「20 Newsgroups」コーパスで機械学習処理をしよう
    • 5.2.4 「けんてーごっこコーパス」で機械学習処理をしよう
    • 5.2.5 単語のスコアを確認しよう:「20 Newsgroups」コーパス編
    • 5.2.6 単語のスコアを確認しよう:「けんてーごっこコーパス」編
  • 5.3.文書の判定用スコアを計算してみよう
    • 5.3.1 判定用スコアの計算式を使ってみよう
    • 5.3.2 文書の判定用スコアを計算しよう:「20 Newsgroups」コーパス編
    • 5.3.3 文書の判定用スコアを計算しよう:「けんてーごっこコーパス」編
  • 5.4.判定用スコアを使った分類方法を考えよう
    • 5.4.1 文書の判定用スコアの分布を調べよう:「20 Newsgroups」コーパス編
    • 5.4.2 文書の判定用スコアの分布を調べよう:「けんてーごっこコーパス」編
    • 5.4.3 判定用スコアを使って文書を判定してみよう:「20 Newsgroups」コーパス編
    • 5.4.4 判定用スコアを使って文書を判定してみよう:「けんてーごっこコーパス」編
  • 5.5.ベイジアンフィルタの性能を調べよう
    • 5.5.1 評価用データを使って性能を調べよう:「20 Newsgroups」コーパス編
    • 5.5.2 評価用データを使って性能を調べよう:「けんてーごっこコーパス」編
  • 5.6.ベイジアンフィルタのまとめ

あとがき
自然言語処理と機械学習処理のこれから
さらに学びたい方へ
最後に
索引
著者紹介
PHPビッグデータ活用フォーラムの紹介