Mar 8 2009

WordPress Related Post for Japanese 1.50 RC リリース

WordPress の関連記事表示ためのプラグイン、WordPress Related Post for Japanese の 1.50 RC をリリースしてみます。 Yahoo! Japan の API エントリポイント変更対応が入っていますので、アップグレードのほうお願いいたします。 機能追加もいくつかありますが、不具合なさそうならそのまま JSeries のほうにリリースします。 :-)

現バージョンと表示は互換を持たせてあるはずなので、アップグレードの方はそのままファイルを上書きしていただければ良いと思います。 辞書の再生成はしなくても大丈夫だと思います。(解析テキストに the_content フィルタかぶせたので若干変わっていますが、影響ないところがほとんどかと思います)

wp-jralated.tar.gz

とりあえず、ダウンロードは CVS Head からです。

新規インストールの場合は JSeries をご参考にファイルだけこちらをお使いください。

WordPress Related Post for Japanese

Yahoo! Japan が提供する日本語形態素解析APIを利用して、WordPress の投稿をアナライズし、自動的に投稿の下部に「関連する記事」へのリンクを付与するプラグインです。

wp-jrelated は辞書作成のため Yahoo! Japan の日本語形態素解析を使っていますが、こちらの API の URL が(実は結構前に)変わっています。 おそらくそのうち旧 URL は使えなくなって辞書つくれなくなるとおもいますので、使われている方は適宜アップデートの方向でお願いいたします!

URL の変更は新機能対応をするときに変更しようとおもっていたら遅くなってしまいました。

というわけで今回はをかもとさんのストップワードの対応もマージさせていただきました。 以下変更点です。

  • Yahoo! Japan 日本語形態素解析のエントリポイント URL 変更対応
  • をかもとさんに作っていただいたストップワード対応をマージしました。 単語設定は管理画面から行えます。
  • 形態素解析前に the_content のフィルターを通すように修正しました。 ショートコードやプラグインなどで文字列置換を行っている場合に置換後のテキストで辞書作成を行います。
  • 出力関連数、検索単語数、出力単語数を管理画面から設定できるようになりました。
  • the_content により自動的に記事の下に表示するのとは別に、新設された jrelated_get_array 関数により関連情報をつめた配列を取得できるようになりました。 これをテーマに記述することで自由度の高い表現ができます。

ストップワード対応は以下の記事を参考にさせていただいています。

WordPress Related Post for Japanese 導入 : 独断と偏見の何でもレビュー

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

wp-jrelated は記事に頻出する名詞がその記事の特徴を表すという考えのもとに作られていますが、その中に記事の特徴を表すわけではない一般的な単語が各記事に多く現れると抽出の精度が落ちてしまいます。(あんまり関係ないのがでちゃう)

これに対して一般的な単語を検索対象からはずす機能がストップワード指定です。 アップグレードの方は最初は指定されていませんので、管理画面から指定してみてください。 :-)

ちなみにぼくの設定は、

this,that,it,is,of,in,and,the,とき,こと,ところ,もの,こちら,あと,これ,やつ,ため,わけ,の,ふ,0,1,2,3,4,5,6,7,8,9

です。 これはサイト(言葉遣い)によって変わりますので、辞書のテーブルとにらめっこして特徴と関係なさそうな単語が上にきていたらそれを指定していってみてください。 :-)

jrelated50

また管理画面から”検索単語数”が指定できます。 これは頻出単語の上位どれくらいがその記事の特徴を表すかの指定です。 前回は 10 固定でやっていましたが、これを変更できるようにしました。 .another では 15 くらいがちょうど良さそうです。 こちらも記事の平均的な文章の長さなどにも左右しますので調整してみてください。 ちなみにあんまりでかくすると意味ないうえに遅くなりますぞい。

ストップワードと検索単語数は即検索結果に反映します。

最後に、新設された jrelated_get_array 関数ですが、引数に post_id を渡すと関連の情報をつめた array を返してくる機能です。 形は・・・

jrelated51

です。。

array[ポストid][‘title’]、array[ポストid][‘link’]、array[ポストid][‘text’] になります。 スクリーンショットが文字化けしているのは、デバッガが日本語を化かしてしまうからで、ほんとはちゃんとした日本語が入ってきます。

管理画面で、the_content の自動出力をやめるように設定して、テーマを変更して次のようなプログラムをいれると出力できます。

うちの wp-kougabu もついでに呼び出して関連記事の画像も出力するところの抜粋です。

single.php。 the_content の下あたりにいれるといいでしょう。

<?php // ポストの関連情報を $jrelateds に取得 ?>
<?php $jrelateds = jrelated_get_array(get_the_ID()); ?>
<?php // wp-kougabuに問い合わせるために出力する関連記事のpost_id配列作成 ?>
<?php $post_ids = array(); ?>
<?php foreach($jrelateds as $post_id=>$value) {
    array_push($post_ids, $post_id); } ?>
<?php // wp-kougabuにつくった配列渡して関連記事の画像URLを先にもらっておく ?>
<?php $images = kougabu_get_images(
    array('array' => true, 'post_id' => $post_ids
    , 'max_width' => 100, 'max_height' => 100)); ?>
<div id="wpjr">
    <h3 id="related">このブログで関連すると思われる他の投稿</h3>
    <ul id="wpjrelated">
    <?php // wp-jrelated からもらった関連記事をループする ?>
    <?php foreach($jrelateds as $post_id=>$jrelate) { ?>
    <li>
        <div class="thumbnail">
            <?php // wp-kougabu 画像がその関連にあれば出力する ?>
            <?php if(isset($images[$post_id])) {
                echo $images[$post_id][0]; } ?>
        </div>
        <div class="sumarry">
            <?php // wp-jrelated からリンクと頻出単語を出力する ?>
            <a href="<?php echo $jrelate['link']; ?>">
                <?php echo $jrelate['title']; ?></a><br>
            <?php echo $jrelate['text']; ?>
        </div>
    </li>
    <?php } ?>
    </ul>
</div>

自動出力と違って HTML タグは好き勝手にできますので、こちらのほうが人によっては使いやすいかもしれません。

画像を出したくて wp-kougabu 使ってないよ~という方は、

hiromasa.another :o ) » Blog Archive » WordPress メディアライブラリから指定ポストの画像を一括取得する

WordPress Related Post for Japanese の関連に画像を出力してみた試験をしたときに「SQL で一括~」なことを書いていたら、yuriko さんが SQL を書いてくださいました。早速試させていただいたところ、みごとに一発抽出できました。 :-)

こちらの SQL をアレンジしてつけてみてください。

画像とかいらないよ、というかたは適宜それっぽいところを削除の方向で。 CSS はみなさんのほうがずっと詳しいので各自お願いします(笑)

というわけで、長くなってしまったのであとはのりで。。 不具合などありましたら教えてください。 :D

4 Comments

  1. 投稿日時: 2009 年 3 月 9 日、Daytime | パーマリンク

    入れてみました!ストップワード対応は正常に動作しているようです。

    …が、以前のバージョンでは、$wpjr->getRelated() は引数無しで動作していたんですが、1.5からは post_ID を渡さなければならないんですね。
    その辺も、どこかに書いておいたほうがいいかも。

    ちなみに、私のテーマでは $wpjr->getRelated(get_the_ID()); に書き換えました。

  2. 投稿日時: 2009 年 3 月 9 日、Nighttime | パーマリンク

    おっと失礼しました。。 orz

    引数変更しておりました、修正お手数おかけしました。
    リリース時には記載しておきます!

    テストいただきましてありがとうございました!

  3. 投稿日時: 2009 年 6 月 13 日、Nighttime | パーマリンク

    今回のブログ変更詳細(WordPressテーマSCRUFFY, プラグインSociable, WP-Offloadなど)…

    photo credit: lilit
    先週に引き続きブログのデザインをいじっていましたが、一旦さらなるチューニングの前にまとめておきたいのでメモも兼ねて変更点やら使ったものやらを書いておきます。ちなみに元々は前使っていたテーマ(soulfood)をウィジェット対応させられなかったので変更してみようと思ったのがことの始まりです。
    テーマ
    テーマはCobus BesterさんのSCRUFFY(1)にしました。以前「汚れた感じのwordpress(ワードプレス)テンプレート10*ホームページを作る人の…

  4. 投稿日時: 2010 年 3 月 6 日、Daytime | パーマリンク

    [...] 配布元記事 : WordPress Related Post for Japanese 1.50 RC リリース [...]

Post a Comment

メールアドレスから Gravatar が取得されます。(必須ではありません)

次の HTML タグと属性が使用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback

http://another.maple4ever.net/archives/703/trackback/