オススメ記事を紹介するMovableTypeプラグイン:RecommendedEntry

Posted by
ぴろり
Posted at
2007/02/12 16:59
Trackbacks
関連記事 (2)
Comments
コメント (30)
Post Comment
コメントできます
Category
プラグイン カテゴリ

 Amazon などで『この商品を買った人はこんな商品も買っています』という案内をご覧になったことがあると思います。ユーザの購買動向を分析することで関連商品を推薦(リコメンド)してくれる機能で、その絶妙なチョイス(?)に釣られて他の商品ページに寄り道してしまう方も多いのではないでしょうか?
 そこで、などでもこれを真似て『この記事を読んだ人はこんな記事も読んでいます』なんてナビゲーションが作れると面白いかもしれません。RecommendedEntry は、過去の訪問者が辿った記事の傾向を集計して,簡易的な記事リコメンデーション機能を実現するためのです。

この記事をはてなブックマークに追加する この記事のはてなブックマーク数 | この記事をlivedoorクリップに追加する この記事のlivedoorクリップ数 | この記事をYahooブックマークに追加する この記事のYahoo!ブックマーク数 | この記事をdel.icio.usに追加する | Twitterにポストする

RecommendedEntry  new
ファイルのMD5ハッシュ値: 15936af0022a8c1e3135ceb93eefe985
ver.1.00, '07/02/12, 2508 bytes, 3.33 で動作確認、 必須
  • 初版公開

最新版のやバグレポートはRecommendedEntry の trac レポジトリでも行っています。

動作環境

 ビジタの動向データの集積と集計に を使用しています。 ご利用の が使用でき、 かつ RecommendedEntry をご利用の予定のの個別記事ページで が動作する必要があります。

  • 3.3x 以上(もしかしたら 3.2 でも動くかも)
  • [必須] 個別エントリアーカイブで が動作すること

動作概要

動作概要図

 RecommendedEntry は、個別記事ページにユーザ追跡のためのコード片を埋め込みます。 ユーザが個別記事ページを閲覧する度に、ユーザがどのような順番でページを渡り歩いたのかを集積し、 このデータを集計することで記事間のユーザの移動状況を求めることができます。 ユーザ追跡にはの Cookie を使用していますが、 あくまで任意のユーザの記事間の移動を追跡することが重要であって、 ユーザを個々に限定・追跡することが目的でがありません。
 また、記事リコメンデーションの精度についてですが、 ユーザ嗜好や記事内容の関連性のクラスタリングと云ったリコメンデーションで多用される技術は全く使われていません。 個々のユーザが現在閲覧している記事を基点としたユーザの移動をデータとして集計し、 多いものから順に表示するだけの非常に好い加減かつお遊び的なものであることを了承ください。

導入方法

 少し手順が複雑ですが、気合で(ぇー

  1. の導入
  2. エントリ一覧用インデックスの作成
  3. データフォルダの準備
  4. エントリアーカイブの修正

1.の導入

 したアーカイブを展開します。 MTRecommendedEntry.pl というファイルが一つだけ現れるので、 のインストールフォルダにある plugins にコピーしてください。 その後、 の管理画面から[]と移り、 RecommendeEntry が表示されていることを確認します。

2.エントリ一覧用インデックスの作成

 RecommendeEntry はエントリの一覧を記述した ファイルを要求します。 以下の内容でインデックスを新規作成してください。 インデックスの名前とファイルの出力先はどこでも構いませんが、どちらか一方を控えておいてください。
 このインデックスは、後述の $MTRecommendedEntryParam$ タグで必要とするパラメータに応じて編集してください。 下の挙げた例では記事タイトル(title)と記事のパーマ URL (permalink)が記述されています。 記事 ID (eid) の項は RecommendeEntry が使用するため変更しないでください。

3.データフォルダの準備

 次に、RecommendeEntry が集計したユーザ動向のデータファイルを保存するためのディレクトリを作成してください。 データファイルには個人が含まれるわけではありませんが、気になる人はドキュメントルート以外に作成されることをオススメします。 作成したディレクトリの絶対パスを控えておいてください。

4.エントリアーカイブの修正

 RecommendeEntry を用いて、ユーザ動向の集計と記事リコメンデーションを行うために、 個別アーカイブを修正します。 最も小さな個別アーカイブは次のようになります。

 <$MTUseRecommendedEntry$> タグには、先ほど準備したエントリ一覧用インデックスの名前とデータフォルダのディレクトリパスを指定する必要があります。また <$MTUseRecommendedEntry$> タグはあらゆる文字出力が行われる前に記述されるよう、必ずファイルの先頭に置いてください。

追加されるタグ

$MTUseRecommendedEntry$ タグ
 記事リコメンデーションを行うページの一番最初で文字出力を行う前に一度だけ記述してください。 タグの前に文字列や空白文字、改行があると Cookie が正しく処理されませんので注意してください。 このタグは動作に必要な のコード片を生成します。 個別エントリアーカイブのみで使用されることを想定していますので、 カテゴリ別アーカイブや月別アーカイブ、インデックスでは使用できません。
template [必須*]
 エントリ一覧用インデックスの名前を指定します。 このパラメータを省略する場合、後述のindexが必須です。 両方の指定がある場合、indexによる指定が優先されます。
index [必須*]
 エントリ一覧用インデックスによって出力されたファイルへの絶対パスを指定します。 このパラメータを省略する場合、先述のtemplateが必須です。 両方の指定がある場合、templateによる指定を上書きします。
datapath [必須]
 データフォルダの絶対パスを指定します。 ユーザ動向のデータファイルがここで指定されたパス以下に生成されます。 このパラメータは省略できません。
cookie_expire
 ユーザ追跡用 Cookie の有効期間を設定します。このパラメータは省略できます。 省略時のデフォルト設定値は 30 日間です。
cookie_name
 ユーザ追跡用 Cookie の名前を設定します。このパラメータは省略できます。 省略時のデフォルト設定値は mtrcmnd_eid です。 既存の Cookie と名前が衝突する場合には変更してください。
MTRecommendedEntries コンテナタグ
 現在のエントリについて、流入数、流出数の多いエントリを列挙するためのコンテナタグです。 このタグはループ処理のための小さな コード片を生成します。 一般的な タグとは動作が異なりますので注意ください。
mode
 集計モードを設定します(動作概要図も参照してください)
  • 0 … 流入数(incoming flow)と流出数(outgoing flow)を合算します。ビジタの相互間の移動が多いエントリを集計します。デフォルト設定値です。
  • 1 … 流入数(incoming flow)のみを集計します。現在のエントリへビジタが流入した流入元エントリを集計します。
  • 2 … 流出数(outgoing flow)のみを集計します。現在のエントリからビジタが移動した流出先エントリを集計します。
offset
 ランキングの上位 offset 位を表示しません。デフォルト値は 0 です。
count
 ランキングの上位を offset で指定された順位から count 件だけ表示します。デフォルト値は 10 です。
$MTRecommendedEntryParam$ タグ
 MTRecommendedEntries コンテナタグの中で使用します。
name [必須]
 name で指定されたパラメータを表示します。 タグのようですが、実際には小さな コード片を生成します。 そのため、タグで有効なグローバルフィルタなどは使用できません。 name に指定できるパラメータには、エントリ一覧用インデックスで記述されたパラメータに加えて、 流入数または流出数を示す count が常に使用できます。
 先に挙げたエントリ一覧用インデックスの例では、 name パラメータには titlepermalink を指定することができます。 例えばあなたが記事の作成された日付と投稿者名も表示したいと思うならば、 エントリ一覧用インデックスを以下のように修正し(一部抜粋)、 name="date"name="author"とすることで実現できるでしょう。

ユーザ動向のデータファイルについて

 RecommendedEntry が利用するユーザ動向が集積されたデータファイルについて説明します。 MTUseRecommendedEntry タグの datapath パラメータによって指定されたディレクトリ以下に、 <記事 IDα>.txt というファイル名で記事毎にテキスト形式のデータファイルが生成されます。  <記事IDα> の記事には <記事IDβ> から <流入カウントβ> の訪問があり、 <記事IDα> の記事からは <記事IDβ> <流出カウントβ> だけユーザが移動したことを示します。 初めてサイトを訪問するユーザや、Cookie の有効期限が切れたユーザが <記事IDα> を訪問した場合、 同じ <記事IDα> の <流入カウントα> として記録されます。

困った時は

Warning: touch(): Unable to create file XXX/XXX.txt because Permission denied in XXX line XXと表示される
 データファイルの保存先に指定したディレクトリ(datapath)に/からファイルを生成できるように,適切な書き込み権限を与えてください。
Warning: Cannot modify header information - headers already sent by (output started at XXX:XXX) in XXX on line XXXと表示される
 $MTUseRecommendedEntry$タグはページの一番最初に記述してください。また,エントリ一覧用インデックスにも余計な空白,改行が含まれていないか確認してください。タグよりも前には空白・タブ文字や改行などのあらゆる文字出力があってはいけません。
ページ一覧が表示されない
同じページをリロードしただけではカウントされません。一度,他のページを見てCookieを受けてからページを見てください。


この記事を読んだ人はこんな記事も読んでいます 記事リコメンデーションについて

その他の関連する記事


関連記事/トラックバック (全 2 件中、最新 5 件まで表示しています)

Open MagicVox.net のスクリーンショット
タイトル
RecommendedEntry プラグインの導入は平均ページビュー増加に効果があります
Trackbacked at
2009/02/04 07:52
from
Open MagicVox.net
評価
Web Scouter
概要
 と言ってもいいでしょう。TinyLPO プラグインの効果測定をヒントにRecommendedEntry プラグインについても導入した効果測定もしてみま...

WEBデザインストック のスクリーンショット
タイトル
この記事を読んだ人はこんな記事も読んでいますを実現するプラグイン
Trackbacked at
2008/05/22 12:13
from
WEBデザインストック
評価
Web Scouter
概要
Amazonなどにある、この商品を買った人はこんな商品も買っていますを、Mov...

この記事にトラックバックを送るには?

寄せられたコメント (全 30 件中、最新 5 件まで表示しています)

Posted by
tiara
at
2009/08/26 17:41
ID
kBju45LE

tiara

以前もコメントさせていただきました。

おすすめ記事を同じサイト内の別ブログで導入してみました。
ところがおすすめ記事は表示されず、そのページをリロードして初めておすすめ記事が表示されます。

何か原因などございますか?
不勉強ですみませんがお返事お待ちしています!

Posted by
tiara
at
2009/07/03 17:41
ID
ytPEl8CM

初めまして。

早速おすすめ記事を表示することができました。

そこで是非画像も表示させてみたいのですが、
なかなかうまくいきません。

何かアドバイスいただければ…と存じます。

Posted by
ogawa
at
2009/02/12 19:50
ID
UkkE9va2

ブロックタグ名が被っちゃうかもしれませんが、Recommendableプラグインというのを作りかけています。設計途中なんですが(笑)

開発者がランキングエンジンを書いてしかるべくリコメンデーション情報をデータベースにストアしておいてくれれば、こんな感じで呼び出せるようになる予定です。

<mt:RecommendedEntries engine="hoge">
...
</mt:RecommendedEntries>

このプラグインでなさっているように、コレクタ部分も何らかのインタフェースを与えたいと思っています。

Posted by
ぴろり ◆OLEEi.VOX.
at
2009/02/06 23:39
ID
yGkgplSA

こちらこそ解決おめでとうございます&おつかれさまでした(=゚ω゚)ノ
まだ道程は長そうですが諦めずにガンバってください!
こういう右往左往の経験がきっとどこかで役に立つと思います。

Posted by
中村ミノル
at
2009/02/06 22:42
ID
vHYH7s1I

ありがとうございました。解決しました。
拡張子を「.php5」から「.php」に変更したら、解決しました。
PHPのバージョン5だということで「.php5」かなと思い込んで
いました。事実、テスト用のサイトでは、同じくバージョン5
担ったということで、「.php5」でうまく行っていましたので。

とにかく、php化と、これによって、当初の目的であった「こんな記事も」
が出来るようになりました。ありがとうございました。

なお、余談ですが、実はhtmlからphpへのリダイレクトの部分が
うまく行っていません。.htaccessでエラーが出てしまうためです。
これについては、自分で解決します。

いろいろ、ありがとうございました。

コメントを投稿する

 
 (匿名可/必須/公開)
 (匿名可/必須/非公開)
 (必須)
コメントスパム防止のため投稿前に ランダムな数字 CAPTCHAについて を入力してから投稿してください。お手数ですがご協力のほど宜しくお願いいたします。