タグを自動挿入する WordPress プラグイン Japanese AutoTag
|WordPress でタグ付けをするのが面倒だったので、ポストのタイトルを元に自動的にタグ付けするプラグインを開発しました。
Yahoo! の形態素解析 Web サービスを利用して、簡単に作ったものですが、なかなか便利なので良かったら皆さんも試してください。
このプラグインを利用すると自動的にタグ付けされます。
ですので、あまりこれまでタグ付けを気にしていなかった人にこそ、使っていただきたいと思います。このプラグインを有効にしておいて、どんどんブログを書き込んでいくだけで、タグがどんどんついていきます。
逆に、タグ付けに厳しい(?)方の要求に応えられるほど、高機能ではないです(苦笑)。
仕組みはごく単純です。Yahoo! の形態素解析 Web サービスを利用して、タイトルの中から名詞を抽出します。そのなかから、「これ」 とか 「あれ」 のようなタグ付けしたくない名詞を除き、残ったものをタグ付けする、ということです。
⇒ Japanese AutoTag のダウンロードはこちらです
12 Comments
こんにちは。
今回小山さんが作ってくださったプラグインを導入したのですが、YahooのApplication Keyを保存しようとするとエラーが出てしまいました。
ソースを追うと、どうもテーブルに保存するときにエラーが出ているようです。
Exception Wordsのほうは問題なく保存されています。
原因として何が考えられるでしょうか?
また、MySQLには新規にテーブルが作成されるのでしょうか?
それとも既存のテーブルにレコードが追加されるのでしょうか?
> くまさん
こんにちは。はじめまして。
お試しいただきありがとうございます。
うまく動作せず申し訳ありません。
オプションデータについては、WordPress の update_option 関数を使っており、既存のオプション保存用のテーブルにレコードを追加しています。
どのようなエラーメッセージが表示されますでしょうか?
尚、当面の回避策策としては、ソースをお読みになれるのでしたら、get_tags 関数の初めの部分を以下のように変更していただければ、とりあえず利用することは可能と思います。
function get_tags( $post_id ) {
$options = $this->get_options();
// コメントアウト
// if( !$options[‘appkey’] ) {
// return null;
// }
$noise = explode(‘|’, $options[‘noiselist’]);
$result = array();
$p = get_post( $post_id );
// Tokenize
$appkey = ‘ヤフーのアプリケーション ID を入れてください’;
$q = urlencode( $p->post_title );
$url = ‘http://jlp.yahooapis.jp/MAService/V1/parse?filter=9&appid=’
. $appkey . ‘&results=ma&sentence=’ . $q;
// 以下変更なし
以上、お手数ですがどうぞよろしくお願いします。
おやま
> くまさん
一点、気付きましたのでご報告いたします。
キーの前後にスペースが入っていると、invalid key と判定してしまうことを確認しました。キー入力時に、前後にスペースが入っていないかご確認いただけますでしょうか。
# この点は、次のバージョンでさっそく修正いたします。
ご面倒をおかけし申し訳ありませんが、よろしくお願いします。
おやま
小山さん
返信ありがとうございます。
当方が借りているサーバーでは実はPHPのエラーが表示されません(涙)。
エラー箇所はhandle_options()内を一旦すべてコメントアウトして、1行ずつチェックしていき、エラーと思われる箇所を見つけた次第です。
小山さんがおっしゃるオプション保存用のテーブルというのは、wp_optionsのことでしょうか?
カラム名を教えていただくことはできますでしょうか?
うまくいかない場合は、ご指摘の方法でApplication Keyをソースに直書きしようと思っています。
ちなみに、投稿するデータを本文を含めて形態素解析にかけたいと思っているのですが、get_tags()内の
$q = urlencode( $p->post_title );
のあたりを変えれば対応できるでしょうか?
まとまりのない文章で申し訳ありませんが、お返事お待ちしています。
> くまさん
なるほど、そういうことなのですね。
調査していただき誠にありがとうございます。
はい。おっしゃるとおり wp_options テーブルに設定情報が格納されます。
option_name が “JapaneseAutoTag_Options” である行が、このプラグインで情報を格納している行になります。
はい。投稿データも含めて形態素解析器にかける場合は、ご指摘の箇所を変更すれば良いと思います。
http://codex.wordpress.org/Function_Reference/get_post
をみると、$p->post_content または $p->post_excerpt あたりを利用すれば良さそうですね。ただ、タグが山ほど出来そうですので、一工夫いりますよね。
私もバージョンアップのときに、実装してみようと思います :-)
おやま
小山さん
返信ありがとうございます。
まず、MySQLですが、カラムはあり、Exception Wordsは保存できていました。
でもなぜかApplication Keyのほうは空白のままでした。
文字数の問題かと思いカラム型を見たのですが、LongTextでしたので問題ないようです。
ちなみに私のKeyには「-」が含まれているのですが、これが問題ということはないですよね。。。
とりあえずはソースコードに直書きで頑張ろうと思います。
今回はどうもありがとうございました。
またお世話になるかもしれませんが、その際にはよろしくお願いします。
> くまさん
この度はご面倒をおかけしてしまい申し訳ありません。
今後も問題点が分かり次第、修正を行いバージョンアップを行っていくつもりですので、
どうぞよろしくお願いします。
また、動作したかどうか大変気になりますので、またコメントなどでお知らせ
いただけますと幸いです。
尚、ソースコードを修正した場合は、自動アップグレードで上書きされませぬよう、
お気をつけくださいますようお願いします。
(WordPress.org でホストしていただいていますので、バージョンアップした場合に、
管理画面にて自動アップグレードを選択するリンクが自動的に表示されます。)
こちらこそ、今後ともどうぞよろしくお願いします。
小山
小山さん
個人的なアイデアとしては、APIの仕様で13個の品詞が選べるようですが、それに相当するチェックボックスを付けるのはいかがでしょうか?
また、どのタイミングでAPIにアクセスするかも設定できたほうがよいかと思います。(保存時、公開時etc…)
当方が借りているサーバーはPHPのバージョンが4系なので、小山さんの実装ではXMLの解析部分が動作しませんでした。
なので、PEARのパーサーを使おうと思っています。
バージョンアップを期待しています。
すみません。
前の投稿で「バージョンアップを期待しています」と書いたのは、APIに関係した部分です。
分かりにくくて申し訳ありません。
何かアイデアが沸いたときにはまた連絡させてください。
よろしくお願いします。
> くまさん
ご指摘ありがとうございます。
おっしゃる通りですね。大変申し訳ありません。
http://php.net/manual/en/function.simplexml-load-string.php
simplexml_load_string は PHP5 からですね。
勉強不足でした。
違うパーサを使うか、何か別の方法でなるべくさまざまな環境に対応できるよう、
近々変更したいと思います。
それから、「品詞の選択」「保存タイミングの選択」というアイデアもありがとうございます。
「品詞」 については私も考えておりました。(例えば、「遊ぶ」「食べる」などでタグ付けしていらっしゃる方も居るだろう。と思っていました)
以上、大変お手間を取らせてしまい大変申し訳ありませんでした。
恐れながら、ご指摘いただいた箇所は早く修正し、私のプラグインのバージョンアップに反映させたいと思います。
今後とも何かお気づきの点などありましたら、お手数ですが何なりとお知らせくださいますようお願いいたします。
小山