WordPress Related Post for Japanese 導入

Yahoo! Japan が提供する日本語形態素解析APIを利用して、WordPress の投稿をアナライズし、自動的に「関連する記事」へのリンクを作成するプラグイン WordPress Related Post for Japanese を導入しました。
関連記事は、今までは SimpleTags プラグインを利用していたのですが、今度からはこちらに切り替え。

とりあえず、試験的に導入したこちら以外のブログでは、英文記事の引用が多いため "this,that,it,is,of,in,and,the" なんかのいわゆるストップワードが頻出単語上位に含まれるため、精度がイマイチ。
と言うわけで、簡単なストップワード対応をしてみました。

書き換えた箇所は 502〜512行。以下の様に変更

//ストップワードリスト
$stopwords = 'this,that,it,is,of,in,and,the,こと,ところ,もの,こちら';
//投稿の形態素分析結果から頻出単語上位10個のテキストを取得する。
$morpheme = $wpdb->get_row($wpdb->prepare(
	"select uniq_delimitar_text from {$wpdb->prefix}morpheme where appid = '%s' and ID = '%s' LIMIT 0, 1;"
	,$this->yahooId
	,$postID
));
$texts = split(',', $morpheme->uniq_delimitar_text);
//まだ辞書がなかったらなにもしない
if($texts === false) return false;
//上位10(ストップワード除く)以外は捨てる
$hashes = array();
$pattern = '/^(' . str_replace(',', '|', $stopwords) . ')$/i';
for ($i=0, $j=0; $i<count($texts); $i++) {
	if (!preg_match($pattern, $texts&#91;$i&#93;)) {
		//ストップワード以外の頻出単語上位10個のハッシュを取得する。
		$hashes&#91;$j&#93; = md5($texts&#91;$i&#93;);
		$j++;
	}
	if ($j >= 10) break;
}
unset($texts);

これで、ストップワードリストに上げられた単語以外の頻出単語上位10個で、関連記事を検出してくれるはず。

WordPress Related Post for Japanese 導入」への4件のフィードバック

  1. をかもと 投稿作成者

    あれ?ストップワードって10個以上でも大丈夫なんですか!

    何千個でも、何万個でもおっけ!
    ただし、あまり多いと処理がむちゃくちゃ重くなるので注意が必要。

    返信
  2. yutaka

    ちなみに私の所では、こんな感じで落ち着いてます

    あれ?ストップワードって10個以上でも大丈夫なんですか!
    10個に絞るのって大変だったんですけど 😳  いくつ設定しても良いんですね
    再挑戦!

    返信
  3. をかもと 投稿作成者

    yutaka さん、どもです。
    ストップワードリストは、自サイトのエントリの傾向に合わせて色々試行錯誤する必要が有りますね。
    ちなみに私の所では、こんな感じで落ち着いてます。

    'this,thats?,its?,i[sf],as,are,be,was,s?he,t?here,an?,not?,the,from,to,for,of,by,[io]n,and,before,all,l(ike|ove),vs,ver(sion)?,var,null,function,class,[d.-]*,(こ|そ|あ|ど)(こ|の|れ|ちら|れ)(から)?,お(れ|前),(来|明|後|今|昨|先)(年|月|週|日),(次|今|前)(回|作),(色|方|他|様|少)(々)?,な(ん|ぜ),こと,ところ,もの,モノ,また,みんな,わけ,うち,しばらく,ため,あと,何(故)?,事(前|後)?,前,後,上,下,右,左,大,中,小,(その)?他,以(外|降|前|後|上|下),巻,話,度,版,人(物|間)?,頭,匹,台,者,僕,私,彼(女)?,文(章)?,作(品|者|画),先生,著(作|作者|者)?,原作(者)?,主人(公)?,キャラ,ヒーロー,ヒロイン,シリーズ,ファン,シナリオ,オススメ,エントリ,リリース,レビュー,(ご|御)?(連絡|紹介),感(想|じ),情報,予定,(1|2|3|4|5|6|7|8|9|0|一|二|三|四|五|六|七|八|九|十|百|千|万|億)+'
    返信
  4. yutaka

    こんばんわ〜 これ使わせていただきました〜 :mrgreen:
    ストップワードリストを何回も書き直しましたが、かなりお利口さんになりました。
    ありがとうございました〜

    返信

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください