PHPでブログのキーワードを抽出するクラス 3

前のエントリで作ったブログから本文抽出するやつを使って
本文からキーワードを抽出するクラスを書いてみました。

以下参考にしたサイト
http://ifs.seesaa.net/article/26300967.html
http://phpspot.org/blog/archives/2005/11/php_17.html
http://ablog.seesaa.net/article/20969848.html

ダウンロードはこれ
Class.Morpheme.zipリンク切れ中
本文取得はこっち
http://dev.neoinspire.net/archives/63リンク切れ中

#2016/11/30追記
Yahoo APIを使用したものをgithub に上げました。
https://github.com/jakkrokk/blog-resources/blob/master/php/Morph.Class.php

下記2つをインクルードして使って下さい。
https://github.com/jakkrokk/blog-resources/blob/master/php/YahooApi.Class.php
https://github.com/jakkrokk/blog-resources/blob/master/php/GetTitleAndBody.Class.php



まあ内容は単純で、本文から正規表現で名詞っぽいのを取り出して
それのdiffを取っていって出現頻度別にArrayに格納しています。

参考サイトを元に

$r = preg_match_all(‘/[一-龠々〆ヵヶ]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+|[、。!!??()()「」『』]+/u’, $str, $match);

こんな感じの正規表現を書いて

$v = preg_replace(‘/([する|でなければ|について|ならば|までを|までの|くらい|なのか|として|とは|なら|から|まで|して|だけ|より|ほど|など|って|では|は|で|を|の|が|に|へ|と|て])/u’, “”, $v);

こんな感じに助詞とか消して

$uniq_lv1 = array_unique($match_lv1);
$match_lv1 = array_diff_assoc($match_lv1,$uniq_lv1);
$this->word[$i] = array_unique($match_lv1);

こんな感じでUniqueのDiffとってるだけです。

適当にGigazineさんでやってみるとこんなかんじです。

Array
(
[0] => Array
(
[5] => 高校生
[21] => 違法化
[24] => 運営者
[26] => 週刊
[31] => 送信
[51] => 著作権
[59] => 私的録音録画小委員会
[73] => 生活
[79] => 爆弾
[85] => 漫画
[95] => 検索
[111] => 映画
[117] => 日本語
[119] => 日本
[151] => 家電製品
[160] => 女性
[172] => 国際
[175] => 回以上
[181] => 名乗
[196] => 初音
[225] => 世界初
[228] => 世界
[253] => ユーザー
[256] => モーニング
[259] => モバイル
[262] => メール
[264] => メモ
[274] => ミク
[281] => マイコミジャーナル
[286] => ボーナス
[289] => ボードゲーム
[293] => ホビー
[295] => ペルソナ
[297] => ヘッドラインニュース
[303] => プロバイダ
[305] => プレーヤー
[307] => ブログ
[312] => ファミ
[319] => バグ
[323] => ネットサービス
[326] => ネット
[329] => ネタ
[331] => ニュース
[338] => トラフィック
[343] => テレビ
[345] => ダウンロード
[350] => ソフト
[355] => スポーツ
[365] => サービス
[376] => サイト
[382] => コーラス
[385] => コルク
[388] => ゲーム
[411] => オンライン
[416] => エンジン
[419] => ウィルコム
[426] => イタチ
[428] => アート
[434] => アニメ
[453] => ちゃんね
[455] => ため
[457] => たち
[459] => たこあ
[467] => きた
[486] => WIRED
[489] => VISION
[493] => News
[508] => ITmedia
[524] => AFPBB
[529] => 2007
)

[1] => Array
(
[32] => 送信
[96] => 検索
[197] => 初音
[260] => モバイル
[265] => メモ
[275] => ミク
[287] => ボーナス
[298] => ヘッドラインニュース
[308] => ブログ
[324] => ネットサービス
[327] => ネット
[332] => ニュース
[351] => ソフト
[377] => サイト
[389] => ゲーム
[435] => アニメ
[494] => News
[509] => ITmedia
[530] => 2007
)

[2] => Array
(
[266] => メモ
[299] => ヘッドラインニュース
[309] => ブログ
[333] => ニュース
[378] => サイト
[390] => ゲーム
[436] => アニメ
[495] => News
[510] => ITmedia
[531] => 2007
)

[3] => Array
(
[391] => ゲーム
[496] => News
[511] => ITmedia
[532] => 2007
)

)

Arrayの番号が1回以上のワードがarray[0]に入ってます
以下2回以上はarray[1]、3回以上はarray[2]・・・
きりがないので、ワードが5個未満になったら終了にしています。