ラベル Ad Biz の投稿を表示しています。 すべての投稿を表示
ラベル Ad Biz の投稿を表示しています。 すべての投稿を表示

2007/05/23

コンテンツ連動型広告の仕掛けについて考える〜その弐

「コンテンツ連動型広告の仕掛けについて考える」の第二弾。前回は、ページに書かれた内容(ページコンテンツ)の取得まで。今回は、その解析部分から。(第一弾は、こちら

前回の処理のステップをまとめたもので言えば、

  1. クローラが取得したコンテンツは、解析サーバにより解析される
ここから。ページコンテンツを取得したら、そこからそのテキストが扱っているトピックを抽出しなくてはいけないわけだけれど、まずは、形態素解析という処理が必要になる。形態素解析というのは、簡単に言えば文章の構成要素を細切れにする作業。分かち書き。例えば、「うどんは讃岐に限る」という文章は、
  • うどん
  • 讃岐
  • 限る
と分解できる。この分解のときに、
  • うどん(名詞)
  • は(助詞)
  • 讃岐(名詞)
  • に(助詞)
  • 限る(動詞)
こんな感じで、品詞分類(上記の例はかなり雑に分類してるけど、ホントはもっと詳しい)もついてくる。名詞や動詞、形容詞なんかは、大分類では内容語とカテゴライズされて、助詞なんかは機能語とされる。重要なコンセプトの抽出に助詞などは、さほどの影響は及ぼさないだろうということで、捨てちゃう。そうなると、
  • うどん
  • 讃岐
  • 限る
が残る。これだけでも原文のコンセプトは十分判断できるよね。その中からさらにコンセプトを含む確率が高いものということで、名詞を取り出す。
  • うどん
  • 讃岐
ずいぶんとすっきりした。「讃岐うどんはまずい」という文章だってあるじゃないか……という意見もあるだろうけど(ネガティブイメージな文章に広告を出すのかという議論もちょっと脇に置いておいて)、
  • 讃岐
  • うどん
  • まずい
なので、テーマが「讃岐うどん」であることには変わりない。シンプルな文章を例に出したので、あっさりとしてしまったけど、本当はその文章の周囲には、
  • 先月の出張で、香川に行った。
  • 香川の取引先の山田部長はなかなかの人格者で、彼を慕う部下も多いと聞く。
  • 彼のチームメンバーからいろいろお話を聞くことができた。
  • 山田部長の若いころのエピソードで面白かったのは、食い道楽の話。
  • あんなスリムな人なのにありえないぐらい食べるらしい。
  • なんでも近くのうどん屋でうどん七玉食べた後、もう一軒別のところに行ってそこで三玉。
  • ありえない。。。
  • しかし、山田部長のオススメのうどん屋さん、マジうまいっす。
  • やっぱり、うどんは讃岐に限る。
……などという文脈があるとすると、もう大変。名詞の量がずいぶん多い。そうしたときに使える手法とオーソドックスなのは、特定のキーワードの出現頻度を利用するという手法。文章を通して、何回「山田部長」や「うどん」が登場したか……ということ。「うどん」、「うどん」と何回も言ってるぐらいだから、「うどん」は重要なキーワードなんだろう……という推測。ただ、これだけでは重要なテーマは、絞りきれない。

さっきの文章では「山田部長」だけがフィーチャーされていたけど、「山田部長はじめ、高橋部長、佐藤部長には大変お世話になりました。 m(_ _)m」という文章も入ってくると、重要なのは形態素解析の結果としての最小単位で最頻出語は「部長」になってしまう。「うどん」か「部長」かで考えると難しいのだが、少なくとも「部長」の中でいちばん重要なのは、「山田部長」だろう。「山田」+「部長」。このように単語と単語の組み合わせ(連接)に着目して開発されたのが、専門用語自動抽出サービス「言選Web」。ブラウザから簡単に使えるので、ちょっと試してみる(より重要だと判断されたキーワードが上になるように並んでいる。横の数値は、その評価値。何点満点とかいう尺度ではない)と……
  • 9.73 : 山田部長
  • 3.46 : うどん屋
  • 3.46 : うどん
  • 2.00 : 香川
  • 2.00 : m
  • 1.93 : 高橋部長
  • 1.93 : 佐藤部長
  • 1.41 : 人格者
  • 1.41 : 大変お世話
  • 1.41 : 取引先
お、「山田部長」がフィーチャーされてますね。「高橋部長」や「佐藤部長」に圧倒的なリード。こういう複合語に着目するってのもなかなかいい手法。

この「言選Web」については、『図書館の窓』東京大学付属図書館報に寄稿された「「言選Web」の世界」という記事でとてもわかりやすく説明されているので、興味のある人はどうぞ。

たつをの ChangeLog』の「形態素解析と検索APIとTF-IDFでキーワード抽出」という記事もおもしろい。数式とか、Perl のコードとか出てくるんで、ちょっととっつきにくいかもしれないけど、文章はいたって平易。いわく、Yahoo! のウェブ検索を利用して、
  • 文章(さっきの「うどん」の日記のようなもの)の中に特定のキーワード(例えば「うどん」)が出現する回数
  • Yahoo! のウェブ検索でキーワードにマッチした文書数
  • Yahoo! のウェブ検索の総文書数
これらの数値をぐにぐにっと計算すると、特徴となる語彙が抽出できる……というもの。ここにはデモインターフェイスが置いてないのが残念。。。前に動いているところを見たことあるけど、かなりおもしろい♪

他にもいろいろ手法はあるんだけど、基礎的なところとしては、こんなところだろうか。

こうして、文章の特徴となる言葉が抽出されて、じゃあ次は……ということになると、
  1. 商品引き当てサーバは、解析結果に基づき、妥当な商品を商品データベースから検索し、オススメ商品データを返す
……というのが大きな山になりそう。
  • 抽出されたキーワードで商品データベースを検索する
  • 検索結果が複数ある場合、その中でいちばん売れそうなものから順に表示候補にする
この「売れそうなもの」っていうのがクセモノ。
  • 文書との関連度が高いから「売れそう」
  • 文書との関連度は若干低いけど、けっこう売れてるから「売れそう」
  • 文書との関連度は全くないけど、むちゃくちゃ売れてるから「売れそう」
おおざっぱに言えば、こんな感じなんだろうか。

「おまかせリンク」は、まだβ版だからなのか、関連性の低い結果が出ちゃってるのかどうかが微妙なところ。ちょっと前に書いた「心地よいユーザインターフェイス」に出てくるのは、『女性の品格』とか『不思議の国のアリス』の洋書、英文法の教科書(洋書)、プロジェクトマネジメントの本(洋書)、『のだめカンタービレ(18)』……。Ajax の本とか、インターフェイスデザインの本とかいろいろあるだろうに……。少なくとも『女性の品格』、『のだめカンタービレ』は売れせん狙いのフィラー広告だな。『わかりやすい洋ランの育て方』……大泉洋の「洋」ってことかい? それだったらまだ大泉洋の本の方がいいな。……とはいえ、なんかこうやって文句を書いている間に、『Web API マッシュアップブック』も Pipes の記事あたりで表示されるようになってきた。

とはいえ、AMAZON のコンテンツ連動型広告の場合は、
  • 書籍に付随するメタ情報(著者名や出版社名、書籍の概要)
  • 関連づけの対象となる商材が有限であること(バリエーションが多いとはいえ限られている)
  • 商品ごとの売り上げ情報(売り上げランキング)
  • その商品といっしょに買われた商品
  • 検索から購買までのコンバージョン情報
  • カスタマーレビュー情報
  • リストマニア!(個人のオススメ作品リスト)
……などなどパラメータとして利用できそうな付帯情報がもりだくさん。今後の展開にかなり期待♪

2007/05/21

コンテンツ連動型広告の仕掛けについて考える〜その壱

以前 Blogger に自分のブログをホスティングしていたんだけど(Blogger が Google に買収されたちょっと後)、しばらくぶりに使ってみると、けっこういろんなところがバージョンアップされてる。AdSense の導入なんかもとても簡単になってるし、Google アカウントともちゃんと連動している。管理画面なんかの日本語化もずいぶん進んできた。意外に快適。

ついでに Amazon Affiliate Program も導入しちゃおうと思って、Amazon に行ってみたら知らない間に「Amazon おまかせリンク」なんていうプログラムが1年弱前にリリースされていたのを知った(遅…)。面白そうなので、さっそく導入してみた。これは、Amazon 版の AdSense といったところのプログラム。ブログの記事の内容に合致した Amazon の取り扱い商品を成功報酬型の広告として配信するというもの。さっそく導入してみる。最初はブログと何の関係もないものが表示されていたけど、しばらくリロードしているうちに、『鈴井貴之編集長 大泉洋』が表示された。Pipes の記事を書いたときに「大泉洋」をサンプルクエリにしたので、それに連動してピックアップされたんだろう(スクリーンショットを見ればわかるけど、ブログ記事の本文に何回も「大泉洋」というキーワードが出現している)。

「コンテンツ連動型広告は、記事中のテキストを解析して、その内容にマッチした広告を掲出する」とさらりと解説されていることが多いけど、もうちょっと詳しくコンテンツ連動型広告の仕掛けについて考えてみよう。Amazon のヘルプページや drk7.jp の Amazon Search のページあたりを参考に想像を交えながら。

導入から広告配信までの作業の流れを追ってみよう。

  1. Amazon Affiliate Program に参加(アソシエイト ID が発行される)
  2. 配信したい広告を指定(広告の形態や表示商品の指定など)して、広告配信用のスクリプト(JavaScript)を入手する
  3. スクリプトを自分のサイトに埋め込む(ページの HTML に 2 のスクリプトのコードをコピー&ペーストする)
  4. 最初は、コンテンツに連動していない商品情報が配信される
  5. しばらくすると、コンテンツに連動した商品情報が配信されるようになる
大雑把に言えばこんなところだろう。すこし細かく見ていく(推論増量中)。

  1. 2 で広告配信用のスクリプトが発行された時点で、そのスクリプトにはアソシエイト ID が埋め込まれている。
  2. 3 で埋め込まれたコードが 4 で初めて Amazon のサーバと情報をやりとりする(そのコードが埋め込まれたページの URL をURL 格納サーバに保存し、クローラ※にその URL を伝える)
  3. クローラは、その URL のコンテンツ(テキストデータ)を取得する
  4. クローラが取得したコンテンツは、解析サーバにより解析される
  5. その解析結果は、先に取得した URL とひもづけられて、URL 格納サーバに保存される
  6. 指定された URL からスクリプトが呼び出されると、URL 格納サーバはそのページの解析結果を商品引き当てサーバに渡す
  7. 商品引き当てサーバは、解析結果に基づき、妥当な商品を商品データベースから検索し、オススメ商品データを返す
  8. 広告配信サーバは、その商品データをスクリプトが呼び出された URL に広告データとしてを返す
基本的にはこんな流れだろう。

まず、C の部分がどういう処理をしているのかが気になる。というのも、特にカスタマイズしていないクローラの場合、ページ内のテキストをすべてそのまま取得してきてしまう。特にブログにおいて顕著な傾向だけど、ページ内にブログ内の記事へのリンクテキスト(記事のタイトルとか)が多数設置されている。そのテキストからキーワードを多く取得してしまうと、ページのコンテンツとの齟齬が発生してしまう可能性があるわけだ。例えば、海外旅行の感想を記事として投稿したとしても、リンクテキストに「最近読んだ本のタイトル」や「昨日のランチ」が並んでたりすると、下手をするとその日の投稿には記述されていない「最近読んだ本」や「料理本」がオススメ商品になってしまうことだってありうる……ということ。

こんな工夫って実装されている(ないしは予定されている)のかな? こういうのがあると、コンテンツ解析の精度が上がるよね。
  • スクリプトを呼び出したページがブログだった場合は、その RSS(ないしは Atom などのフィード)※※を解析する:
    このメリットは、ページコンテンツだけを取得できるという点。ただし、ブログ ASP によって出力する RSS のテキスト量がかなり違うようなので、テキスト量が少ない ASP(楽天ブログとか)の場合は、あまりよい精度での商品引き当てができなくなるリスクもありうる。
  • HTML の構造解析をおこない、構造のパターン分析をし、ページコンテンツと直結したテキストだけを取得する:
    例えば、このブログであれば、左カラムにメニュー、右側のメインカラムにコンテンツ……というような構造になっている。であれば、HTML を解析して、左カラムの部分だけを取得すればいい……ということになる。とはいえ、これは相当大変。ブログは簡単に見た目を変えることができちゃうから、ページの HTML コードがころころ変わっちゃう。
  • Google AdSense で導入しているようなセクションターゲットの利用(あるいは、それをそのまま利用):
    Google AdSense では、セクションターゲットという特別なタグを用意している。そのタグは、「このページは、ここからここまでがページコンテンツだよ。ここの内容にあった広告を配信してね」というブロガーの主張を伝えることができるというもの。ブラウザでそのページを閲覧しても、そのタグはブラウザに表示されたりすることはないんだけど、クローラには読める。クローラが取得したコンテンツデータを解析するときに、「あ、ここから、ここまでですね」と理解してもらえる。無関係なコンテンツデータは入り込まない可能性が高くなるので、広告の関連度も高くなるだろう……というもの。
まだ、ページコンテンツの取得の話しか書いてないのに長くなってしまった……。続きは次回。コンテンツ解析から商品引き当てのところまで行けたらいいな。

※クローラ:ウェブページにアクセスして、そのページ内容を取得する計算機。ロボットとも呼ばれる。ページに含まれたリンク(クモの糸)をたどって、ウェブ(クモの巣)を徘徊することから、スパイダーと呼ぶことも。クローラが取得したデータが加工されて、検索エンジンの索引データのもとになる。有名なクローラとしては、Google の Googlebot、Yahoo! inc. の Slurp などがある。

※※RSS:ブログの見出しや本文(ないしはその抜粋)などのデータを一定の形式でページの更新時などに出力したもの。それを RSS リーダーと呼ばれるソフトに登録しておくと、更新情報が自動的に収集できるので、便利。RSS リーダーが普及するまでは、そのページが更新されたかを確認するには、そのページに行ってみる……などの原始的な手段しかなかった。