昨日リリースの WordPress Related Post for Japanese のバグフィックス版をリリースします。 DB 構造がかわり、大変申し訳ないのですが辞書再生成となります。 すいません、すいません。。
JSeries に 1.01 としてリリースしております。 このプラグインのオプション削除(これでテーブル再生成および初期化されます)の簡単な手順ものせましたのでお手数ですが 1.00 試された方はご覧のうえアップデートください。
WordPress Plugins/JSeries » WordPress Related Post for Japanese
バージョン 1.01 は 1.00 からデータベースの構造が変わりました。 大変お手数ですが、(wp_)options テーブルから WpJRelated 行を削除してオプションの設定からお願いいたします。(辞書は一度クリアされます)
1.01 はいくつか重要なバグフィックスを含みますので、アップデートは必須とさせてください。
せっかくいい感じに辞書できたかたごめんなさい。。 うちもクリアしました。
昨日はたくさんのコメントありがとうございました。 非常に参考になりました。
以下変更点です。
- 閲覧時の辞書作成コストの一部を、バックグラウンド側ではなく閲覧側に倒しました。 これにより閲覧時は1クエリふえますが、サーバ負荷は軽減されます。
- 非公開投稿を関連検索対象としてしまっていたのを修正しました。 (thx yuriko さん) ただし非公開投稿の形態素分析は行います。 これは現在のところ仕様とさせてください。 (Yahoo に非公開投稿の内容が送られるのに抵抗があるかたは適宜ソースを修正してください)
- MySQL 4 系で create table が動かない問題が修正されたハズです。 (thx yuriko さん、をかもとさん)
- テーブル定義で unique をきっていなかったので、辞書生成タイミングによってはキー重複がおきていたため unique を alter しました。 (tnx をかもとさん)
- (wp_)morpheme テーブルの yahooid 項目を appid 項目に変更しました。 また関連検索時に appid 項目を アプリケーションID をもってひくように修正しました。(というか実装をわすれてました。。)
Yahoo! 側のバージョンアップがあった場合のデータ切り替えや、他の形態素解析などがでてきた場合を想定して、既存データそのままに appid でなにかしら区分けしようというのが意図でした。(現在のところあまり意味を持っていません) (to yuriko さん) - 関連表示の HTML タグがおもいっきり間違っていたので修正しました(汗) (thx テルミナさん、おでこさん)
- add_options_page でマジックナンバーを使っているのを削除しました。 (thx yuriko さん)
- get_class 時の小文字化のコメントが不適切だったのを修正しました。(thx yuriko さん)
- 投稿タイトルの取得を get_the_title() に変更しました。(thx yuriko さん)
- 不要な global 宣言を削除しました。(prefix の指定を wpdb のメンバに変更しました)
- 少しだけコードのクリーンアップをしました。
- テンプレートタグのようにつかえる、getRelated() メソッドを追加しました。 (tnx Masayan さん、をかもとさん)
ソース差分は sourceforge の CVS から確認できます。
いやーいっぱい。。 すいません、こんなに使っていただけるのならいっかいアルファリリースすればよかたす。。 PHP 5 完全対応はちょっと遅らせます。 simpleXML の部分だけなのでちょっと迷い中です。
最後の getRelated は以下のようにすれば呼び出せるはずです。
<?php if(isset($wpjr)) echo $wpjr->getRelated(); ?>
is_single() 判定していないので、メッセージループの中にいれると好きな位置に関連が表示できます。 思うほどコストは高くないとは思いますが、関連エントリのタイトルなどを取りに行くため、多くの投稿を一度に表示するトップページのループなどでの利用は負荷の注意をして使ってください。
昨日、yuriko さんから興味深いコメントをいただいていますのでご紹介させてください。
形態素解析自体はもはや枯れた技術だと思うんですが、その結果を用いて記事同士の関連を見つけるのは、けっこう難しいことです。本プラグインでは、単語の出現頻度が似ているものを関連している記事としているようですが、それでどこまで適合率および再現率が出てくるかは、興味深いところです (「適合率」「再現率」という用語については Wikipedia の「情報検索」あたりを参照)。
関連記事を5本しかピックアップしないため再現性は重視されていないわけで、適合率を高めるのがポイントとなるでしょうか。
情報検索というのは、非常に面白い分野ですね。 ぼくはまったくもって素人なのであれですが、同じことをするにもいろいろなアルゴリズムがありそうです。
今回は、動的関連生成(その場で検索してしまう)をしたいという要件が最初にあったため、「高速でそれっぽく」というのがテーマでしたがはたして。 文章の内容によってもいろいろクレンジングやチューニングが必要になってきそうで興味はつきません。 🙂
では最後に開発風景などを。
一生懸命 SQL をかいて抽出を確認中の図。(← SQL が苦手である

CVS コミット前の差分確認中。

まだバグいる予感もしますので、何かありましたらご連絡ください。 🙂




