PHPで機械学習(その2):ツイート内容を学習

(1/1)
PHPで機械学習(その1):ツイートを取得しDB格納」の続きである。
今回は、収集したデータ(ツイート)を単語に分解し、学習させた結果をデータベース(SQLite)に登録していく。

機械学習にはいくつかのアルゴリズムがあるが、ここでは実装が簡単な単純ベイズ分類器を用いることにする。学習方法は簡単で、ユーザー別の単語の出現回数をデータベースに登録していけばいい。

(2021年7月11日)PHP8対応,リファラ・チェック改良

目次

サンプル・プログラムの実行例

PHPで機械学習(その2):ツイート内容を学習

サンプル・プログラム

圧縮ファイルの内容
BayesClassifier.phpサンプル・プログラム
pahooTwitterAPI.phpTwitter APIを利用するクラス pahooTwitterAPI。
使い方は「PHPでTwitterに投稿(ツイート)する」などを参照。include_path が通ったディレクトリに配置すること。

サンプル・プログラムの流れ

PHPで機械学習(その2):ツイート内容を学習
PHPで機械学習(その1):ツイートを取得しDB格納」に加え、メソッド learnTweets が学習の中心を担う。

学習処理では TwitterAPI は使わず、テーブル $table_tweets に登録されたツイートを取りだし、形態素解析ツール MeCab を使って単語に分解していく。MeCab については「PHPで MeCabのユーザー辞書を作成する」で紹介している。

準備

  55: //SQLite DBファイル名;各自の環境に合わせて変更すること
  56: define('DBFILE', './sqlite/usertimelines.sqlite3');
  57: 
  58: //MeCab実行プログラム;各自の環境に合わせて変更すること
  59: define('MECAB', 'C:\Program Files (x86)\MeCab\bin\mecab.exe');

MeCab の実行プログラムは定数 MECAB に、ユーザー辞書は FILE_UDIC_MECAB に定義しておく。

登録されたツイートのうち未学習のものをまとめて取り出す

メソッド takeTweet は、テーブル $table_tweets に登録されたツイートから、未学習(flag が 1以外の値のレコード)のものを取り出す。
取り出したら、flag を立てておく。

テキストを単語ベクトルに変換

メソッド text2vector は、与えられたテキストを MeCab に食わせて単語に分解する。

学習する単語か否かは、メソッド isword で判定している。
この部分を変更することで、学習結果が変わってくる。

単語ベクトル情報を更新

メソッド updateVectors は、ユーザー毎、単語ごとに単語の出現回数をカウントし、テーブル $table_vectors に書き込んでいく。

参考サイト

(この項おわり)
header