Posted by をかもと at 2008年8月15日 金曜日

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[$i])) {
		//ストップワード以外の頻出単語上位10個のハッシュを取得する。
		$hashes[$j] = md5($texts[$i]);
		$j++;
	}
	if ($j >= 10) break;
}
unset($texts);

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

本日の人気記事


コメント

  • JAPAN Ubuntu Linux Mozilla Firefox 2009年2月15日 日曜日 5:44 PM

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

  • JAPAN Ubuntu Linux Mozilla Firefox 2009年2月15日 日曜日 10:59 PM

    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|一|二|三|四|五|六|七|八|九|十|百|千|万|億)+'
  • JAPAN Ubuntu Linux Mozilla Firefox 2009年2月15日 日曜日 11:23 PM

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

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

  • JAPAN Ubuntu Linux Mozilla Firefox 2009年2月15日 日曜日 11:27 PM

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

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

コメントをどうぞ


Twitter ID を入力すると新しいコメントがあった際、 @dogmap_jp が、あなた宛に@リプライでお知らせします。

入力いただいたメールアドレスから、TwitterGravatar に登録されているアイコンを表示します。
(メールアドレスは公開されません)

改行と段落タグは自動で挿入されます。メールアドレスは表示されません。

:mrgreen: :-P :-D :-) ;-) :-o :-| :-( 8-O :-? 8-) :twisted: :evil: :oops: :roll: :cry: :lol: :-x more »

コメント投稿30分後までは「コメント編集」をクリックして内容を修正することができます。