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

2007/06/12

ソーシャルブックマークが検索結果に及ぼす影響

きょうは別の話題を書こうと思ってたんだけど、『Yahoo! 検索スタッフブログ』におもしろい記事が載っていたので、そのネタで。「Yahoo!検索結果にブックマーク登録人数表示を開始!」という記事。

4 月の半ばに『Yahoo! ブックマーク』が大幅にリニュアールされた。リニューアルというよりは、過去の資産を利用した新しいプロダクトだと言える。そもそもの『Yahoo! ブックマーク』は、シンプルなオンラインブックマークサービス。自分のお気に入りのページをブラウザのブックマーク機能を使って、自分の PC に蓄積するのではなく、Yahoo! ID にひもづけて、Yahoo! のサーバに置いておきましょう……というもの。そうすることによって、会社でブックマークしたページを『Yahoo! ブックマーク』経由で自宅の PC でもブックマークとして利用できる……というパーソナルな用途に特化したサービスだった。数多くのユーザが、自分の利便性のためにいろいろなページをブックマークしていた。新『Yahoo! ブックマーク』は、そうしたパーソナルな利用法も残しつつ、ソーシャルブックマークとしての新境地にいたった。ソーシャルプロダクトに転身することで、ユーザ間で共有(share)することができるようになった。その際に過去の資産(ソーシャル化する前のパーソナルな大量のブックマーク)を一気に獲得するに至る。

実はこの段階では、まださほどのインパクトは感じていなかった。逆にパーソナルな資産をいきなりソーシャルなものにしちゃうってのはどうなんだろう……と懐疑的でさえあった。ソーシャルブックマークは、どんなユーザがどんなアンテナを張っているのかが伺い知れるところが醍醐味だったりするわけ。だけど、この時点の『Yahoo! ブックマーク』は、当然のことながら非公開ブックマークの山。ユーザとのコンセンサスがない以上、ブックマークを個人とひもづけて公開するわけにはいかない。とはいえ、登録者数は把握できる。ここのところが肝心なところで、これをどう活用するのかな……いや、これをいつ検索結果に反映するのかな……そこが最大の関心事だった。で、きょうのリリース。

実際に目にしてみるとけっこうなインパクト。例えば、「国内旅行」でウェブ検索をしてみる。現時点での 5 位までの検索結果は、以下のとおり。

  1. じゃらんnetホームページ
  2. JTB 国内旅行 [国内ツアー | 旅館・ホテル | 割引チケット | 高速バス]
  3. H.I.S.国内旅行(東京発) - 格安航空券・ツアー・宿泊予約
  4. 国内旅行・国内ツアー - スカイゲート - 国内航空券・国内旅行・高速 ...
  5. エイチ・アイ・エスホームページ
各検索結果の最後のあたり(URL の後ろ)に「○○人が登録」と地味に書いてある。この数字を先の検索結果と並べて記載してみる。
  1. じゃらんnetホームページ:9996 人が登録
  2. JTB 国内旅行 [国内ツアー | 旅館・ホテル | 割引チケット | 高速バス]:100 人が登録
  3. H.I.S.国内旅行(東京発) - 格安航空券・ツアー・宿泊予約:32 人が登録
  4. 国内旅行・国内ツアー - スカイゲート - 国内航空券・国内旅行・高速 ...:23 人が登録
  5. エイチ・アイ・エスホームページ:4025 人が登録
こうやって登録者数をフィーチャーしてみるとなかなかおもしろい。100 人が興味を持っている 2 位、32 人が興味を持っている 3 位、23 人が興味を持っている 4 位……これらが 4025 人のブックマークを獲得している 5 位と比較してどちらがより多くの顧客の誘導を実現できるか……ここのところが非常に興味深い。おそらく多くのユーザは、ここに数字が書いてあることに気づきもしないかもしれない。しかし、これ、気にしだすと、けっこう気になってくるから不思議。ブックマーク数が 0 の場合には、「0 人が登録」とは書かれず、何も表示されることはない。しかし、その数字がたとえ 1 や 2 であっても、何も書かれていないよりはなんかご利益があるように思えてくる。

そうなると、SEO 業者は着目すること間違いなし。「弊社の SEO 対策は、いま話題の SMO 対策も同時におこないますので、御社へのトラフィック誘導も成功しますよ」なんてセールストークをいまごろ練っているに違いない。明日には企画書に盛り込まれるかもしれない。SMO 対策オプションの料金表を作っているかもしれない。そうなってくると、発生しそうなのがアビューズ。とにかく大量のアカウントでクライアントのページをブックマークしまくるとかね。もちろん数多ある SEO 業者がみんなそんなことをするとは思わないけど、必ずいくつかは現れる。そういうアビューズが横行すると、ブックマークサービスの価値の低下が起こる。それは、Yahoo! JAPAN としては望むことではないはずだから、何らかの対応策が取られることになる(何らかの対抗策はもう仕込んであるかもしれない)。怪しげな SEO 業者と Yahoo! JAPAN のいたちごっこなんてこともありうる。さて、どんなことが起こるのかとても楽しみ。

実際、既にいろんな人たちが、いろいろ考えはじめている。現時点での『Yahoo! 検索スタッフブログ』の「Yahoo!検索結果にブックマーク登録人数表示を開始!」へのトラックバックは、12。Yahoo! ブックマークがリニューアルされたときのエントリへのトラックバックが 3 であることと比較しても、本件がどれほど人の興味を引く話題であるのかは明白。『Yahoo! ブログ検索』でチェックすると、こんな感じ。「このブックマーク登録数の結果がランキングに影響を与えるのか?」といった憶測も。SEO 業界の有名人のアイレップ・渡辺氏なんかは、極めて冷静。ある意味、懐疑的だともとれるコメント。

とはいえ、個人的にはけっこうオプティミスティック。ブックマーク資産の起源がパーソナルであろうが、ソーシャルであろうが、なんらかの意味があってユーザはブックマークしているはず。これって、Google の PageRank テクノロジーの根幹であるページ間のリンクと思想的にはかなり近い。人気度のひとつの尺度としては成立しうると考える。強いて言えば、ソーシャルブックマーク的な要素がブーストされるともっと有益なリソースになりうるなあ……とも感じる。良質なブックマークを数多く蓄積しているユーザが、PageRank 的な考え方で言えば、良質なサイト……と読み替えることもできるだろう。そうした処理ができるようになれば、シンプルな登録者数ではなく、ブラックボックスな数値に換算され、ランキング決定のためのパラメータとして利用される……なんていう発展的な成長がありそうな気がする。

素人目にもいろいろリスクのありそうな施策なわけだけど、そのリスクを乗り越えてプロダクトとして醸成されてくることだろう。当面は、ブックマーク登録数がランキングに影響を与えるところまではいかない……というのが読み。いまのところは、SEO の施策の一環として、もっと SMO のことを考えましょうね……という契機としてはいいんじゃないかな。さてさて、次に何が出てくるか……。

2007/05/17

検索の未来形? Yahoo! ブログ検索

Pipe を作るためにひさしぶりに Yahoo! ブログ検索をいじってみたら、いろいろ機能アップしているのに気づいた。「これでもか!」と言わんばかりのてんこもり状態。おもしろそうなところをいくつかピックアップ。サンプルクエリは「水曜どうでしょう」で♪

【キーワードの注目度】
画面の左カラムのいちばん上にある折れ線グラフのモジュール。 これは、最初からついている機能。検索キーワードに関する話題がどの時期にどれぐらい盛り上がっていたのが視覚的にわかるところがいい。細かい機能なんだけど、マウスでグラフ上をなぞると、期間の範囲選択ができて、その期間に限定しての絞り込み検索を実行してくれる。いちばん盛り上がっているところは、どうやら07/03/21。 絞り込んだ結果を見れば、盛り上がった理由は一目瞭然。DVD の引き渡しの日だったんだね〜。

このモジュールの下の方に「拡大表示」というリンクがあって、これがまたおもしろい。ここはリリース時より機能アップしてる。検索キーワードの注目度がグラフ化されているのは当然として、これと比べて別のキーワードはどうだったのかがチェックできるようになっている。つまり、「水曜どうでしょう」とその出演者「大泉洋」の注目度の比較が見られるわけ。だから、こんなこともできちゃうわけ。

【評判情報】
「キーワードの注目度」モジュールの下にあるのが、「評判情報」 モジュール。これは、ブログ検索サービスでは、いくつかの会社が取り組んでいる技術。ブログ検索を口コミ情報の素材だと考えれば、自然言語処理技術の応用 として思いつくトピックでもある。これを見ると、検索キーワードの含まれるブログの中からポジティブな表現、ネガティブな表現、ポジティブともネガティブとも言えないけどなんらかの評価をしている表現を拾ってきて、それをグラフ化しているみたい。

これにも「詳細な評判情報を見る」というリンクがあるのでクリックしてみる。このページでは、モジュールにも表示されていた円グラフと、ピックアップされた評判表現、それらの表現が含まれるブログ記事が表示される。評判表現の処理がなかなかいい感じ。「面白い」という表現を見てみると、「面白いです」、「面白かった」という活用形もちゃんとカバーしている。さらに「おもしろい」とひらがなだけで記述されているものも同一視して処理されているのも注目に値する。評判情報処理の難点としては、係り受けの問題がある。つまり、

  • 『水曜どうでしょう』の後に放送してる番組がむちゃくちゃ面白くって……
  • 最近話題になってる『水曜どうでしょう』を見た。これだったら昔の『電波少年』の方が面白かったなあ……
……というようなテキストも単純な「水曜どうでしょう」「面白い」の複合検索ではひっかかってしまう。これらのテキストで「面白い」と評価されているのは、「『水曜どうでしょう』の後に放送している番組」であり、「『電波少年』」である。本来は、評判表現がどの語に対して係り受けしているのかを見なければいけないわけで、構文解析という技術が必要なレベル。でも、構文解析は高負荷な処理なので、なかなか大規模テキストに対して利用するのは難しい。想像ではあるんだけど、この Yahoo! ブログ検索ではおそらく検索キーワードと近接する評判情報に限定して処理しているんじゃないかな。それだと、まったく関係ない語への係り受けを評価対象に加えてしまうリスクはある程度防げる。もちろん網羅率という犠牲はともなうけど。

係り受けの抱えるもうひとつの問題は、照応詞とゼロ代名詞。いわゆる「それ」、「あれ」といった指示代名詞や主語・主題の欠落(省略)。とはいえ、これは検索キーワード自体が含まれない可能性も十分にあると思われる(そもそもキーワードでの検索ができない)ので、実用レベルのプロダクトではさほど大きな問題にならないのかもしれない。

goo のブログ検索では、「キーワードの注目度+評判情報」みたいな形で表現していて、これはこれでおもしろい。評判表現の処理がいまひとつなんだが……。

【まとめ検索】
「キーワードの注目度」モジュールの上あたりにひっそりと「検索結果をまとめて表示」という地味なリンクがある。これもなかなかおもしろい。クリックした先にあるページはこんなもの。左カラムにキーワードが並んでいる。おそらく「水曜どうでしょう」が含まれるブログ記事に特徴的な頻度で出現している語彙のリストだろう(抽出方法は、TF/IDF だろうか)。少し変なものも含まれてはいるけど、けっこういいリストかも。
  • 水曜どう、大泉洋、北海道、放送、classic、番組、TEAM NACS、最新作、クラシック、本……
これらのキーワードの重なり具合をベースにブログ記事を束ねているように思われる。この機能、地味ながら検索支援という意味でかなり示唆に富むもの。自分のよく知っている話題であれば「ふーん」で終わってしまう話題なんだけど、よく知らない話題の場合だとかなり意味がある。ウェブ検索の場合は、
  • snippet(すにぺっと:検索結果の下に表示される本文中のテキストなどを抽出したもの)を読む
  • 実際に検索結果ページにリストされているページに行って、コンテンツを拾い読みして、なんとなく関連しそうなキーワードらしきものを拾いだす
という作業が必要なのだが、その作業を省力化してくれる試みと言えるだろう。

その他にも「似たものワード」なんてキーワードリストが検索結果ページの下の方にあったり、「関連検索ワード」なんてのがページ上部に表示されたり。ちょっとこのあたりは盛りだくさんすぎて、ユーザ的にはなにがなんだかわかんないかもしれない。何をベースにして算出しているものなのかの、もうちょっと説明がほしいところ。

……とはいえ、今回ピックアップしたさまざまな機能は、検索技術の未来を垣間みさせてくれたような気がする。

2007/05/16

Pipes でらくちんマッシュアップ♪〜その弐

Pipes のステップ2。(Pipes 第一弾は、こちら

自分のかかわったプロジェクトがどんな風に世の中に受け入れられているのか気になるでしょ。そんなときどうする?Yahoo! JAPANや Google のウェブ検索でチェックしてみる? でもちゃんと口コミを集められるかどうかはわかんないよね。口コミチェックならやっぱりブログ検索! ブログ検索は、ウェブ検索と違って、いろんな会社が参入している。ウェブ検索の覇者、GoogleYahoo! JAPAN はもちろん、livedoorgoo などのポータルでも早期からサービスインしている。TechnoratiAsk.jp なんかもある。NAMAAN というスタートアップも参入している。ウェブ検索が、Google と Yahoo! に席巻されていることを考えれば、ありえないほどの敷居の低さ。

まあ、それはさておき、こんどは検索窓を設置して。検索語を自由に受け付けるモデルを作ってみる。各社のブログ検索サービスに自分の気になるトピックを一気に問いあわせちゃおう……という Pipe。各社のブログ検索は、検索結果自体を RSS として配信している。それを使っちゃおうというわけ。普通の RSS は新着ニュースなんかを更新情報として流しているってのが多いけど、ブログ検索はキーワードに対する検索結果を RSS 配信しているって言うんだから、使わない手はない。

今回使うモジュールは、検索語を入力するインターフェイスモジュール、各社のブログ検索の検索結果にその検索語で問いあわせるモジュール、そこから RSS を取得するモジュール。あとは、前回同様、重複削除処理、時系列での並べ替えのモジュール。中核となる部分は、スクリーンショットを用意しているので、見てみてください。

検索語の入力モジュールは、「User Inputs」の「Text Input」を利用。このモジュールをキャンバスに持ってくると、いくつかのオプションが表示される。

  • Name
  • Prompt
  • Position
  • Default
  • Debug
の5項目。わかるようなわからないような……。「Prompt」は、きっとユーザインターフェイスの検索窓の横に表示される説明書きなんじゃないかな。「Default」は、初期値。ここに「大泉洋」と記入しておけば、最初から検索窓に「大泉洋」って記入されて表示されるんだろうな。「Debug」。これは、ここに記入した文字列でうまくいくかどうかを試すことができるんだろう……と想像しながら、作業を進めていく。

次に必要なのは、各社のブログ検索の結果 RSS を引き出すための URL。例えば、Google で「温泉」と検索してみる(検索結果)。Google は他社のサービスと違って、関連度順にランキングされるのが初期設定なので、画面右上の「日付順に表示する」をクリック。それで得られた検索結果のURLは、以下のとおり(クリックして URL を参照のこと)。
なんだかごちゃごちゃいろいろ文字の含まれている長い URL。検索結果画面の左カラムを見てほしい。ここに「フィードを取得 Atom | RSS」とある。「Atom」と「RSS」の違いは別の機会に譲るとして、「RSS」をクリック。すると、こんな URL(クリックして URL を参照のこと)。
これが今回の Pipe で使う素材のひとつになる。これを前回の「Fetch Feed」に入れることもできるけど、それでは毎回「温泉」の検索結果しか出てこない。それではダメなので、別のモジュールを使う。「URL」の「URL Builder」モジュール。これをキャンバスにもってくる。すると、
  • Base
  • Path Elements
  • Parameters
といった入力項目が表示される。ここにさっきの RSS の URL を分解して入れていく。こういった URL は、特定のプログラムとパラメータの組み合わせでできていることが多い。Base や Parameter に下記の要素を放りこんでみる。

  • Base:Google ブログ検索の検索結果 RSS を生成するプログラムの URL を指定(一般的には長い URL の「?」より前の部分)
    http://blogsearch.google.co.jp/blogsearch_feeds
  • Parameters:上記のプログラムにどういう挙動をさせるかを決定するパラメータ(引数とか環境変数とか呼ばれる)
    • hl=ja(日本語のページってことかな。素直に入れておきましょう)
    • q=%E6%B8%A9%E6%B3%89(最重要アイテム! 検索語はコレ!)
    • lr=lang_ja(日本語のページってことかな。素直に入れておきましょう)
    • scoring=d(? 素直に入れておきましょう)
    • ie=utf-8(input encoding の略かな。入力文字コード。素直に入れておきましょう)
    • num=10(出力件数? もしかしたら面白いことができるかも)
    • output=rss(出力フォーマット。素直に入れておきましょう)
Parameter の入力は、「hl=ja」だったら、左の箱に「hl」、右の箱に「ja」といった感じで。ここでいちばん大事なのは、「q」。これが検索文字列用の箱なので、ここの右の箱は空にしておく。で、この右の箱の脇にある「○」と、さっきの「Text Input」をパイプでつなげてやる。おまけで出力数を指示する「num」を受け付ける「User Inputs > Number Inputs」もくっつけてみた(初期値50件で)。

仕上げに、前回も登場した「Fetch Feed」モジュールの再登場。これを「URL Builder」モジュールとパイプで接続。あとは、重複処理、時系列並べ替えをして、ひととおりのフローは完成。

マッシュアップということで、その他各社の RSS を「URL Builder」で作り込んでいって、パイプでつなげて、完成〜♪ 検索語を入力して、いろいろ試してみてください〜。

2007/05/15

Pipes でらくちんマッシュアップ♪〜その壱

Yahoo! inc. の Pipes がおもしろいよ……という話をエン友(エンジニアのおともだち)から聞いたのが、ことしの初旬。ちらっと覗いてみて確かにおもしろそうだなとは思ったものの、「必要は発明の母」ではないが、さして必要でもなかったので実験にはいたらず(この辺がダメなんだよね……)。

Pipes は、いくつかの RSS を好きなように組みあわせて、自分好みの RSS を作っちゃおう……というサービス。ブログとかニュースサイトとかで新着記事のチェックを RSS リーダーでやったりするよね。Asahi.com と、ZAKZAK と、なんとかと、かんとかと……といくつも RSS リーダーに登録しちゃうこともできるけど、それだとバラバラに RSS が飛び込んできて、ちょっと鬱陶しい。Pipes を使うと、もろもろの RSS がさくっと一本の RSS にまとめられちゃう。それがあんまり高度な技術的な知識もなく、いくつかのモジュールを組みあわせるだけでできちゃうってのが、このサービスの特徴。いくつかのモジュールって言うのが、RSS の取得だったり、検索文字列入力窓みたいなインターフェイスだったり、並べ替えの処理だったり。これらをパイプでつないでやる。パイプでつなげることによって、データがモジュールからモジュールに流れていくわけ。方眼紙状のキャンバスの上に、自由にモジュールをならべて、パイプでつないでやる。モジュールにしてもパイプにしても Ajax でぐりぐり動かせたりして、プログラムを組み立てていく楽しみもある(ブラウザ上でこういうことができることだけでも楽しい)。

社内で Q&A サービスを立ち上げたいという話があり、それだったらまずは既存のサービスでどんな Q&A が飛び交っているのかリサーチした方がいいんじゃないかと思ったわけ。で、Pipes に行ってみると、人気の Pipe に「Yahoo Unanswered Questions」なんてのがある。Yahoo! inc. 版『知恵袋』の『Yahoo! Answers』のまだ誰も回答をつけていない質問だけをピックアップしてくれる Pipe。な〜るほど。そういう使い方があるか。確かに、Q&A サービスは誰よりも早く回答したい!というアツい(ヒマな?)人たちがたくさんいるので、そういう人たちにはうってつけのサービスかも。Pipes には、人の作った Pipe の設計図を見る機能があって、それを見るとどんな風にこの Pipe が作られているかがわかる。これがまたいい機能。

となると、俄然ヤル気が出てくる。まずは Yahoo! 知恵袋をチェック。ここが RSS を配信しているのは知っている。で、見てみると、質問のカテゴリごとに RSS が配信されていることがわかった。「回答受中の質問」、「投票受付中の質問」、「解決済みの質問」の3つ。例えば、「インターネット、PCと家電 > デジタルカメラ」カテゴリだと、こんな感じ。

今回作りたいのは、「どんな Q&A がやりとりされているかが何となくわかる」Pipe なので、これらを全部マージしてみる。左カラムに「Sources」というのがあるが、これが元ネタの RSS を取り込むためのモジュール群だ。この中にある「Fetch Feed」が使えそう。「Fetch Feed」をキャンパスに展開して、さっきの3つの URL をコピペ。「+ URL」で入力欄が自由に増やせる。これで、全部の RSS が取り込めたことになる。

これをこのまま出力してもいいんだけど、それぞれの RSS に同じ Q&A がダブっていたりすると嫌だな(そんなことはなさそうな感じだけど)……と思い、「Operators」メニューの「Unique」というモジュールを「Pipe Output」(出力モジュール)に送る前にはめこんでみる。これで重複しているものを削除してくれるはず。でも何をもって重複していると判断するの?……ってのを Pipe に教えてやらなくてはいけない。そこで「Filter non-unique items based on [......]」のオプションを使ってやる。「[......]」の部分がプルダウンメニューになっている。ここでどれを選ぶのが適切かよくわかんないけど「item.title」にしてみる。タイトルが違ってれば、別の質問だとみなしてもいいでしょ……という安易な判断。ダメならあとで直せばいい。「Fetch Feed」と「Unique」をパイプでつないでやる。

これで概ね完成なんだけど、最後の仕上げに表示順をいじってみる。「Operators」メニューに「Sort」っていうのがあるので、これも使うことに。オプションは、「Sort by [......] in [ascending | descending] order」となっている。「[......] をキーに昇順・降順に並べろ」ってことらしい。だったら、投稿日時の「item.pubDate」をキーに降順にしてやれば、新しいもの順になるはず。最後に、「Sort」と「Pipe Output」をパイプでつないでやる。

これでひとまず完成。「Save」ボタンをクリックして保存したら、「Run Pipe」をクリック。プログラムが稼働する。出来映えを見て、いまひとつの動きだったら、各モジュールの値を調整したり、途中のモジュールを追加したり、削除したり。ステップごとに変な動きをしていないか、思ったとおりの動きをしているかも開発途中でチェック(Debug)できるのもうれしい。

せっかくだったら、『教えて!goo』のデジカメの Q&A も取り込んじゃった方がマッシュアップっぽくて、おもしろいかなと思い、RSS を追加(あんまり情報量多くないけどまあいいか)。はてなの『人力検索』は、カテゴリの粒度が粗すぎて、ちょっと使えないかも。これでひとまず完成! お試しはこちらから〜。

※Pipes を作ったり、設計図を見たりするには、Yahoo! inc. の ID (Yahoo! JAPAN の ID ではダメ)が必要。

※※LEGO のパーツと小さなコンピュータを組みあわせて作る LEGO Mindstorms ってのがあるんですが、このコンピュータのプログラミング環境とこの Pipes、ユーザインターフェイスが似ていると思う。