WordPress Related Post for Japanese (関連投稿表示プラグイン)

初出日: 2008年8月12日 | 最終更新日: 2009年9月15日
投稿者: hiromasa | パーマリンク

概要

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

WordPress 2.6 以降で動作します。

MySQL は 5 系で確認。 PHP は 5 系が必要です。(Yahoo! API の XMLパースに simpleXML ライブラリを利用しているためモジュールがロードされている必要があります。)

2009/09/15 にバージョン 1.52 にアップデートされました。

バージョン 1.50 において Yahoo! API のエントリポイント URL 変更を行っていますが、アップデートプロセスの不正によって旧バージョンからのアップデートの場合 URL が正しく変更されませんでした。 条件にあたる方は関連の取得ができなくなっていますので 1.52 にアップデートお願いいたします。

また、記事中に実体参照が含まれる場合に解析エラーが発生し、関連がうまく取得できない場合がある不具合も修正されています。

Yahoo! JAPAN Webサービス

本プラグインは Yahoo! JAPAN Webサービスを利用しているためYahoo! Japan からアプリケーションID を取得する必要があります。(導入したサイトは Yahoo! Japan Web サービスをつかったアプリケーションのひとつという扱いになると思います)

また、この API をつかうサイトはYahoo! デベロッパーネットワーク ガイドラインに従う必要がありますので、そちらをよく理解の上ご使用ください。(サイトにクレジットをつけること。サイトでのアファリエイトは現在 OK のようです)

Yahoo!デベロッパーネットワーク - クレジット表示

Yahoo! JAPANは、Yahoo!デベロッパーネットワークで提供されるAPIを利用して作成されたアプリケーションに、簡単に表示できる画像形式とテキスト形式のクレジットを用意しています。

これらのクレジットは、アプリケーションが、Yahoo! JAPANの提供するAPIを利用していることを示すとともに、その利用が「Yahoo!デベロッパーネットワークのガイドライン」に従っていることを表します。Yahoo! JAPANの提供するAPIを利用するすべてのサイトやアプリケーションには、クレジットを表示する必要があります。

ダウンロード

wp-jrelated-1.52.zip

インストール

plugins ディレクトリに“wp-jrelated” ディレクトリを作成し、その中に wp-jrelated.php を格納してください。 

使い方

  1. WordPress の管理画面より WordPress Related Post for Japanese を有効化します。
  2. 管理画面から設定->JRelated で、Yahoo! のアプリケーションIDを記述して保存します。

デフォルト設定で、シングルエントリ時の投稿記事下部に関連記事を5つ表示します。(1.50 から表示数を管理画面から決定できるようになりました)

関連取得のための辞書作成(Yahoo に対する形態素分析リクエスト)は、新規投稿時、編集時、投稿閲覧時にバックグラウンドで行われます。

インストール後すぐは辞書ができていませんので適切な関連がだせません。また、辞書未生成の投稿には表示はされません。

辞書構築は記事の閲覧も契機になりますので、2,3日間通常のサイトアクセスをもらうと次第に辞書が構築されていき関連が表示されるようになってきます。(自分で過去記事をクリックするのもいい方法でしょう :-)

特記事項

  • アプリケーションID を入れないと動作しません。
  • プラグインインストール時に(wp_)morpheme テーブルを新規作成し、そこに辞書を構築します。
  • 形態素分析結果は、プラグインではつかいませんが生データも xml 形式で保持しています。
  • (wp_)morpheme テーブル容量(辞書)は (wp_)posts の容量に比例し、その7倍〜10倍程度の大きさになります。多くの投稿をもつブログでは注意してください。
  • ソースコードや英文などが多いサイトは、形態素解析前にデータのクレンジングが必要かもしれません。
  • 非公開投稿(パスワード付き)については関連検索対象とはなりませんが、形態素分析は行います。(日本語形態素解析API に対してそのタイトルと本文を送信します)
  • 関連のランキング抽出は、サイトによって変わると思いますので気に入らない場合はソースでチューニングしてみてください。
  • 形態素分析結果データは関連記事だけでなく他にも使えると思います。 サイト検索とかにも適応できるかもです。
  • 辞書のできによって結果がいろいろ変わりますので、しばらくお楽しみください :-)

1.50 の特記事項

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

チューニング

JSeries プラグインでもお馴染みの、をかもとさんがストップワード対応をしています。 :-)  ストップワードを定義することにより、関連抽出の精度が上がります。

ストップワードには、投稿によく現れるがその投稿の特徴を表さない言葉を指定すると有効に機能します。

をかもとさんによるストップワード対応記事です。

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

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

この機能は 1.50 でマージされ、管理画面からストップワードを設定できるようになりました。 1.10 からのアップデートの場合は何も設定されていませんので、サイトと合わせた文言を設定してみてください。

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

新規インストールの場合は、作者のサイトで使われている上記のストップワードが設定されます。こちらもチューニングお願いいたします。(上のように空白をいれずにカンマ区切りで指定します)

また、関連を MySQL のフルテキストインデックス機能で抽出する修正パッチも、をかもとさんから発表されています。

WordPress Related Post for Japanese で全文検索を行う

MySQL の全文検索機能を使って、さらに精度アップ&検索速度アップを狙ってみました。

こちらのソースは 1.50 にはとりこまれていませんので、精度&速度アップに興味があるかたは修正にチャレンジしてみてください。:-)

その他、1.50 よりテーマ内で使える jrelated_get_array 関数が新設されました。 この関数をテーマ内で使うことにより自由度の高い表現が可能になります。

たとえば、wp-kougabu と組み合わせて、関連記事のサムネイルも併せて表示するなどできます。

詳しいコードは下の投稿をご覧ください。

WordPress Related Post for Japanese 1.50 RC リリース @hiromasa.another

うちの wp-kougabu もついでに呼び出して関連記事の画像も出力するところの抜粋です。
single.php。 the_content の下あたりにいれるといいでしょう。

スクリーンショット

更新履歴



2009/09/15 1.52 プラグインアップグレードの場合に API URL が正しく変更されない不具合の修正。実体参照が含まれる場合に解析エラーが発生する不具合の修正。
2009/03/09 1.50 エントリポイントURL の変更、関連抽出にカンする管理画面設定値を増やしました。
2008/08/14 1.10 Yahoo! JAPAN Webサービスのロゴ画像を出力するオプションを新設しました。
2008/08/13 1.01 みなさんからいただいた多くのバグを修正しました
2008/08/12 1.00 新規リリース

作者のエントリ

WordPress Related Post for Japanese 1.50 RC リリース @hiromasa.another

Yahoo! Japan の API エントリポイント変更対応が入っていますので、アップグレードのほうお願いいたします。

WordPress Related Post for Japanese 1.01 (バグフィックスリリース)@hiromasa.another

以下変更点です。