Tagwire Pluginで記事内容からタグ候補を自動的に抽出する

Posted by
ぴろり
Posted at
2005/11/15 18:05
Trackbacks
関連記事 (0)
Comments
コメント (14)
Post Comment
コメントできます
Category
プラグイン
 新しく記事を書いていて、以前に使ったタグと同じものを紐付けたいと思った時、 過去にどんなタグを使ったのか迷うことがよくあります。 Plugin の作者である小川宏高さんは、 タグを入力する際に を使って入力単語の補完を行い、タグ候補をリストアップする方法を提案されています。 しかし、可能であれば記事内容からキーワードを抽出し、これをタグとして自動的に設定してくれると更に楽チンです。

 先日の記事において我々はキーワード付与のための強力な正規表現式を手にしています。 そこで今回、これを利用して記事内容からタグ候補を自動的に抽出できるようにしてみました。 当サイトには 170 弱のタグが登録されている程度('05年11月現在)ですが、 なかなか好調で記事作成時のタグ入力作業が随分と楽になりました。

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

はじめに

 文章解析をきっちりと考えるなら、 形態素解析 だとか出現頻度のまで考える必要がありますが、 設置の手間が大きかったり、とりわけそこまで抽出精度を要求するわけでもないので今回は使用しません。 実際のところ、タグデータベースがある程度充実してくると、 そこから生成された正規表現式を使うだけで実用上は十分だったりします。 タグがある程度の数が登録されるまでは自前でタイプする必要がありますが、データベースが充実してくるに従い、 不要なものを削除して、特に新しく紐付けたいタグについてだけ入力すれば済むようになってくるはずです。

plugin の改造

 Ogawa::Memorandaで公開されている 小川宏高さん作の Tagwire pluginを基本に、 キーワード抽出に必要な正規表現式を得るための改造を済ませておきます。
 そして更に、tagwire.pl に以下のコードを追加します。

追加されるタグ

MTTagsAutoDiscovery
<MTTagsAutoDiscovery> コンテナタグは、 コンテナ内に含まれる文章から regexp_XXX で指定された正規表現式を使ってタグの抽出を行い、 発見された単語を 管理画面の記事の投稿画面のキーワード欄に設定します。 またコンテナタグは、そこに含まれるコンテクストに関係なく、常にそのエントリのキーワードを返します。 つまり <$ntryKeywords$> と同じです。
regexp_file
 指定されたファイルの内容をタグのための正規表現式として使用します。 その動作は <$MTInclude file="..."$> に準じます。
regexp_template
 指定されたインデックスによって生成されたファイルの内容をタグのための正規表現式として使用します。 その動作は <$MTLink template="..."$> に準じます。
regexp_module
 指定されたモジュールの構築結果を、タグのための正規表現式として使用します。 その動作は <$MTInclude module="..."$> に準じます。 構築のたびに正規表現式の生成が行われるため、タグ数が増えた場合にパフォーマンス上の問題となる可能性があります。

regexp_file、regexp_template、regexp_module が何れも指定されていない場合、 内部的にデフォルトパラメータを用いて MTTagsAsRegexp を呼び出します。 そのため、構築のたびに正規表現式の生成が行われるため、 タグ数が増えた場合にパフォーマンス上の問題となる可能性があります。

ignore_tags
 デフォルトで pre,textarea,script 内部に含まれるテキストにはタグを生成しません。 他に追加していしたい タグがある場合、それらのタグをコンマで区切って指定することができます。
apply_tags
 ignore_tags とは逆に、その内部でタグを生成させたい タグをコンマで区切って指定することができます。

これらの指定はデフォルトのignore_tags < ignore_Tags < apply_tags の順に優先されます。

タグの修正

 記事内容からタグを抽出するため、個別エントリアーカイブ<MTTagsAutoDiscovery> タグを追加します。 regexp_file、regexp_template、regexp_module の詳細については、 はてなキーワードよろしく記事文中のタグを自動リンクする "正規表現式の生成とタグの修正"の節を参照してください。

使い方

Step1. 記事作成

 エントリの内容(body)と追記(extend)を書いた後、キーワード欄に[?]とだけ入力して、 一旦記事を「公開」の状態で保存してください。 キーワード欄が空欄または、[?]以外の文字列が入力されている時はキーワード抽出を行ないません。

下書き状態でもキーワード抽出できればいいのですが… その方が便利そうです。

Step2. タグ候補の修正

 キーワード欄に発見されたタグ候補が幾つか列挙されているので、必要なだけ削除/追加して再度、保存してください。 保存し忘れると ? タグが登録されたままになります。

この記事を読んだ人はこんな記事も読んでいます ?

その他の関連する記事


関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事のトラックバック URL

寄せられたコメント (最新 5 件を表示しています)

Posted by
footbrain
at
2006/11/23 16:09
ID
KetScoGU

3.3になっても、
「Tagwire Pluginで記事内容からタグ候補を自動的に抽出する」
機能を便利に利用していますが、
最近、既存のキーワードに無い変な文字を抽出してくるようになりました。

毎回特定の文字ではないのですが、決まって一文字で、
日常使わないような見た事もないような文字の場合が多いようです。

Jcode.pmは"Jcode.pm,v 2.6 2006/07/02 07:56:06"で
Tagwireのタグは全て標準のタグと競合しないようにリネームしてあります。

他にチェックすべきポイントはありますか?
教えていただけると助かります。宜しくお願いします。

Posted by
ぴろり
at
2006/10/31 10:08
ID
23dd29Ow

3.3からタグ機能が標準装備になりました。
これと何らかの競合を起こしているように思えますが,
ちょっと調査しきれていません。

あと,タグ候補の自動抽出は同様に可能とも思いますが,
おそらく専用にプラグインなりを作って対処することになりそうです。
チョイチョイ☆って感じでは難しいんじゃないでしょうか?

Posted by
footbrain
at
2006/10/30 12:19
ID
V0JZ8QgY

先般はお世話になりました。
あれ以来、便利に利用させていただいておりますが、
MTを3.3にアップデートして以来、
キーワード欄に表示されるタグ候補が「,」(コンマ)から始まり表示されます。

,サッカー,シュート,パス…とこんな感じです。

タグ候補を修正してタグ欄にコピーする際に調整すれば利用上の不都合はないのですが、
気になっていたので報告させていただきました。

また、3.3で装備された機能を用いて、Tagwaireを使用せずにタグ候補を自動的に抽出する方法はありますか?
できたらいいな程度の要望なのですが、お知恵を拝借できれば幸いです。

Posted by
ぴろり
at
2006/04/30 20:33
ID
OghghVuI

こんにちは。
このブログ(Open MagicVox.net)は ShiftJIS で運用していますが
特に問題なく日本語キーワードも抽出できています。
UTF-8 でもいけるんじゃないでしょうか?

Posted by
KYO
at
2006/04/30 20:15
ID
miv4pg.M

はじめまして。
ぴろりさんのタグ候補自動抽出にチャレンジしてみたいと
思うのですが、UTF-8のブログでも問題ないでしょうか?
また、日本語も抽出されるのでしょうか?
質問ばかりですみません、よろしくお願いいたします。

コメントを投稿する

 (必須/公開)
 (必須/非公開)
 

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