2007年11月19日月曜日

最新のSEO関連研究 コンテンツスパムの発見法

検索エンジンのコンテンツに関してスパムにならないようにはどうしたら良いか、キーワードが5%が最適とか言っている前に最新の論文を読んだほうが良いだろう。ということでWorld Wide Web Conference2006からそれに該当する論文を読んで要約してみた、これを理解すればどのような行為がスパムになるのかが良くわかるはずである。SEO業者も必見かと思います。

論文はこちら このグラフはこの論文中のものを指しています。 また計算式がみにくいですけどこれも論文中のものを見てもらえれば助かります。

Detecting Spam Web Pages through Content Analysis


  1. Introduction

サイトのクオリティを高める努力をせずに検索エンジンのランキングを外部リンクや人気キーワードのサイトへの埋め込みなどによって不正に上昇させるような行為を検索エンジンスパムという。英語のサイトの13.8%はスパムサイトであるといわれているがこれを看破できないサーチエンジンはリソースの約7分の1を浪費してしまい、更にはサーチエンジンのクオリティの低下でユーザが離れてしまうのでどうにかしなければならない。

これらを防ぐために

  1. Webの大きさを考ると人手を介さず自動でスパムサイトを発見しなければならない

  2. 正統な(スパムでない)サイトをスパムとみなしてはいけない。

  3. クエリーをユーザーが投げる前にはスパムを発見したい(そうすることで無駄なロボット巡回、クエリー処理、インデキシングを省くことができリソースを有効活用できる。)

この論文で我々はスパムを発見する様々な方法、また効率、精度よくスパムサイトを発見するアルゴリズムを作るために、如何に個々の方法を統合する機械学習技術を使ったかを示す。

この論文の構成は次のようになる

§2:実験概要、実世界データセットの紹介

§3:データセット中のスパムの蔓延度合いをドメイン、言語別で比較

§4:スパムの発見する方法を説明

§5:我々の手法の評価

§6:関連研究

§7:結論と将来への展望


2.実験概要とデータセット

データセットMSNサーチエンジンが収集したサイトデータから105,484,446(約1億)のページをランダムで取ってきたもの。

厳密にはMSNサーチが取り込むデータ自体もスパム排除プログラムを潜り抜けたものであるからランダムとは言えないが。しかし実際にユーザが目にするのはそのようなサイトであるし、我々の実験で得られた結果も、真の意味でランダムでとってきたのよりも悪くなるはずなので控えめな見積もりということができるので十分にこの論文の価値はあるといえる。

  1. どれくらいスパムがあるの?

この章では、どれくらいスパムがWeb上に蔓延しているのかと、トップドメイン名、国などで区切った時あるページの集合が他のページの集合に比べてどれくらいスパムが多いのかを調べていく。Figure2はどのトップレベルドメインにスパムが多いかを調べた結果であり、Figure3は言語によるスパムサイトの割合である。この二つの実験からスパムはかなりの割合でWebに蔓延しており、また特定のドメインはスパムだらけである。これらの調査はスパム発見手法に生かしていく。


  1. 内容に基づいたスパムの発見

我々のWebDBの論文[8]で、我々はスパムの発見手法を数多く説明したが、その中には完全にページの内容と独立したものもある。(リンク構造やDNSレコードを使ったもの)また一方で内容が解釈されていないもの(ページの進化状況、(構造的に?)似たようなものをクラスタリングする)もある。

 この論文では、我々は全てコンテンツに基づいたスパム判定を行う。

 我々は1億のデータから最も多数ある(54%)英語のページをランダムで17168ページ取得してそのそれぞれに対して人手でスパムページかそうでないかを仕分けした。そのうち13.8%がスパムページで86.2%がスパムページでなかった。この章の残りで我々が研究したコンテンツに基づくスパム発見手法を詳細に説明していく。


    1. ページ中の単語数

スパムページは人気キーワードをとかく詰め込む傾向があるので、過剰な数の単語がスパムの指標になるのかを調べ、その結果は図4のようになった。確かにページ数が多いほどスパムの割合は高くなるが全ての範囲でスパム率は50%を切っているのでこれだけでスパムかどうかを判定するわけにはいかない。


    1. ページタイトル中の単語の数

スパムの常套手段のもう一つとしてページタイトル中に単語を詰め込むというものがある。そこで我々はページタイトルに含まれる単語数とスパムの関係を調べ、その結果は図5のようになった。図4と図5を比べると図5のページタイトルに含まれる単語数の方がスパムを判断する上で良い指標となるといえる。


    1. 単語の平均の長さ

クエリを複数語を指定して投げる時にスペースを入れない人がいるのでそれを狙って単語をつなげているページがある。例えば”freepicture”,”freemp3”などなど。そこで単語の平均アルファベット数とスパムの関係を調べてみたところ図6のようになった。単語の長さが8文字をすぎるとかなりスパムの割合が高くなることがわかる。


    1. アンカーテキストの量

リンクはアンカーテキストとなっているが、単に他のページにリンクの渡すためだけのカタログページが存在する。そのようなサイトは大量の初リンクがあるのでアンカーテキストの単語が全単語に占める割合とスパムとの関係を調べた。その結果図7のようになった。ややアンカーテキストの割合が高いほどスパムの確率は上昇するがあまり顕著ではなかった。


    1. 見えているコンテンツの割合

マークアップでない単語の総バイトをページの総バイト数で割ったところ図8のようになった。これからスパムページはマークアップ(スクリプトやスタイルシートなども含む)が普通のサイトより少なく人にサイトを見せるための装飾等を省いているといえる。


    1. 圧縮率

冗長なコンテンツがあるページは圧縮器をかけることによりサイズを縮小できる。例えば同じ単語が何度も使われていたりすると圧縮率は高くなる。そこでGZIP[14]という圧縮器を使って圧縮率とスパムの関係を調査して、その結果が図9のようになった。 


    1. ページ中で一般的に良く使われる単語が含まれる割合

スパムページは検索エンジン対策のため文章が不自然になっている可能性があるので、データセットで上位200位までの頻出単語が全文章中でどれくらいの割合で使われているのかを調べ、それとスパムとの相関を図10に示した。この結果スパムページは一般的に使われている単語をあまり使っておらず偏りがあることがわかる。


    1. 一般的に良く使われる単語の割合

データセットで上位500位までの頻出単語のうち何種類がページ中に含まれているかを求めスパムとの相関を調べた。4.7の場合例えばページ中に”a”とだけ書かれた文字があったとするとスコアは1となるが4.8の場合は1/500となる。うまく4.7の欠点を補う意味で調査をした。その結果図11のようになったが全体的に控えめな結果となった。


    1. 独立したN-gramの可能性

スパムページは文法的におかしい傾向が強いためn-gramにより文書の傾向を調べた。理想的には文法的かつ意味的に正確さを追求したいのだが、計算量が多くなるため統計的な手法であるn-gramを用いることにした。

という式でまずあるn-gramの発生率を求める。分母はngram全体の数、例えばngramはオーバーラッピングするので3gram5個単語があるとすれば最初の3つ、真ん中の3つ、最後の3つで合計total number of ngram = 3 となる。分子はこれら3つの重複数で最初、真ん中、最後の全てが異なる場合1となるし、最初と最後が同じで真ん中が異なると最初と最後の値が2となり真ん中が1となる。

この式から文書全体のn-gramの発生率のようなもの(文書中にはk個のn-gramを持った文書の確率は個々のPの確率の積であると書かれているがまったく理解できない)を取り、それを文書の長さによる差がでないように正規化すると

となる、これをコンピュータの誤差が出にくいようにさらに変形して

とする。この式からわかることはngramで共起する回数が少ないほどlogPの値が小さくなる、すなわち負の値が大きくなるためIndepLHの値が大きくなる。また逆にngramで共起回数が多いほどlogPの値が大きくなり、すなわち負の値が小さくなるためIndepLHの値は小さくなるということである。(これ以上は理解不能)

図12はこのIndepLHの値とスパムとの関係である。極端にngramでの共起が少ないときと多いところにスパムが集まっている。共起が多いときは同じ表現を繰り返し何度も使っているスパムであると判断できる、また(グラフのどこからその根拠を得ているのかは不明だが)起こりそうにないngramで構成されている文書はよりスパムである確率が高い、おそらく文法的にありえない文書を使っているからであろう。


4.10 条件付ngramの可能性

と条件付確率を定義するとより計算量が増えるかわりに精度が上がるらしい。(どう、または精度が向上するのかはよくわからないがとにかくより良い手法らしい)そして後は4.9と同じようにして計算してスパムとの関係を調べると図13のようになった。大体図12とライングラフが一致している。(結局あまり大差ないやん)。


5.今までのデータを組み合わせて分類器の生成

今までのデータを用いて分類器を生成して、ページがスパムであるかスパムでないのかを求めた。これを行う技術としては決定木、ルールベース技術、ニューラルネット、サポートベクターマシンを使った。そのうちで最も分類精度が良かったのは決定木のC4.5というアルゴリズムである。C4.5は簡単に説明すると最も分類精度が高い順にルートから木を生成していくというアルゴリズムである。分類例は図14のようになり、再現率と精度はテーブル1のようになった。


5.1 分類の正確さの改善

より分類器の正確さを上げるために我々は最も有名な2つの技術「bagging」と「boosting」を使おうと思う。

Baggingの説明

  1. もとのデータセットからN個のデータセットを作る。その時各データセットはもとのデータセットからそれぞれn個のデータをランダムで選んだものとする。(それゆえデータセット間のデータの重複は許される)

  2. N個のデータセットそれぞれについて分類器を作成する

  3. それぞれの分類器を使ってスパムかスパムでないかを判別する。

  4. 最終的な結果は分類器の多数決によって決める。

これがBaggingの概要であるが今回はN=10,n=15453で実験して行ってみたところ結果は表2のようになり正確さは上昇した。

Boostingの説明

  1. 最初に全てのデータに1/nの重みを割り当てる(今回の場合n=15453)この重みはトレーニングセットの中で一つデータを取り出した時に該当するデータである確率である。

  2. この重みを使って分類器を生成する

  3. 分類した際にスパム・ノンスパムの分類を間違えたデータは重みを増やし、正解したデータは重みを減らす(つまり学習例として適しているデータの重みを増やすってことだとは思う)

  4. 2.3を繰り返す(今回の場合10回)

  5. 10個分類器ができるのでスパム・ノンスパムの判定は重み付投票で決める。

これにより分類してみたところ結果は表3のようになりかなり改善が見られた。

6.RELATED WORK

  1. 機械学習の関連研究

C4.5を使ったEmailの分類[16,28]
これは人が読むものに対するスパムだが我々は検索エンジンのロボットが読むためのスパムを発見するという意味で異なる。

  1. スパムの役割やシステムについて

    • Henzinger[15]はスパムがサーチエンジンにもたらす脅威を認めた

    • Perkins[25]が数多くのスパムテクニックを定義しGyongyiGarciaMolina[13]がよりそれを詳細に分割した。

    • DeStefano[20]Webスパムと宣伝の関係を指摘(調べてみたらあるサイトのリンクポピュラリティを故意に上げよう(あるサイトを宣伝しよう)とした時に現れるリンク構造を発見したみたいな内容であった)

スパム手法は一般的にリンクスパム、内容スパム、クローキングに大別できる

  1. リンクスパムについて

  • Davison[7]は早い時期にリンクスパムについて調査しており、縁故主義のリンクについて考察している

  • Amitay[2]はリンク構造をルールベースの分類器に入れてリンクスパムを発見する手法を提案

  • Baeza-Yate[3]はページランクを上げるために示し合わせたリンク形態の研究を示し、Adali[1]はあるページにリンクを張るためのみにページを生成することが最も効率的なスパムの手段である事を示した。(今では古いと思うが)

  • Zhang[31]らはどうやってページランクを攻撃(スパム)に耐えられるものにするかを示した

  • Gyongyi[11]は信頼の置けるサイトからのリンクを辿ることによるTrustRankというものをスパムでないページの発見のために用いた。

  • Benzur[4]らは不自然にページランクを上昇させているページに対してどうペナルティーを与えるのかについて示した。

  • Wu Davison[29]Gyongyi と Garcia-Molina[12]はリンクファームの発見手法について研究した。

  • [8]で我々はリンクスパムを指数法則からの逸脱をもとに発見する方法を示した。

  • Mishne[21]らはブログのコメントにあるリンクスパムを発見するために単語の使用頻度を用いた確率的な手法を提案した。


4. コンテンツスパム 

  • [8]で我々は長いホスト名、多くのダッシュやドット、数字が入っている、単語に多様性がない、頻繁に広範囲にわたってコンテンツを修正する、ということがスパムであるかどうかの良い指標になることが多いということを示した。

  • [9]で我々は切り取りと貼り付けで作ったようなサイトのスパムを調査して、そのようなページを発見する方法を提案した。

  1. クローキング
    クローキングとはWebサーバに細工をして検索エンジンの巡回ロボットに一般の閲覧者とは異なる内容のWebページを見せる事を言う。(フラッシュ等を多用しているサイトでは検索エンジンとの親和性が低いためそれをカバーするため最適化したHTML構造を巡回ロボットに見せるというパターンが多い)

    • GyongyiMolina[13]は現在のクローキングテクニックを示した。

    • WuDavison[30]は3つの別々のページに共通する単語を計算することに基づいたクローキングの発見方法の有効性を示した。(意味不明)注目すべきはクローキングが有益なものを使うということである。例えば帯域幅やストレージコストを減らすためにサーチエンジンに対してクローキングがマークアップなしでページのコピーを返すような感じである。(サーチエンジンに有用な部分だけを見せるということだと思う)


7.結論と先への展望
Webスパムと検索エンジンのいたちごっこは続いていくであろうが我々の技術がより良い検索のために役立てばうれしいと思う。継続的な研究により効果的なスパムを行うよりもコンテンツ作りを充実させたほうがよりリスクが少ないようになるのが我々の願いである。


2007年11月17日土曜日

ここが変だよGoogle翻訳

GoogleにはGoogle翻訳というサービスがある。http://www.google.co.jp/translate_t?langpair=jaenこれは文法をきちきちと解釈して訳をつくっているのではなく、日本語文書とそれに対応する英語文書があれば、対応関係などを大量に学習して自動的に適切な訳を出してくれる機械学習を用いている。
その性能は非常に高く、別に暇な人が対応表みたいなものをつくったわけでもないのに「千と千尋の神隠し」と入れるとSpirited Awayと返すし、「バイオハザード」と入れるとRezident Evilと、固有名詞までしっかりと学習している。
ところが・・・・「JOJOの奇妙な冒険」と入力すると
WRYYY
とか返してきた。これはJOJOの最大の敵であるDIOの有名な奇声のことなのだが一体何をどう学習すればWRYYYになるのか見当もつきません。Googleなりのギャグととらえるべきでしょうか?
他にも「ニューガンダムは伊達じゃない」とかガンダムの名言でも入れてみるとKiwi is not NYUGANDAMU(ニュージーランド人はガンダムではない)とか返してきた。
今後もGoogleからは目が離せません!

2007年11月7日水曜日

Ajax vs Flash

リッチクライアントを実現するためのコア技術であるAjaxとFlash、どちらがどのような方面で一体優れているのか比較検討してみたい。

ニューヨークで行われたフラッシュ先進会議みたいなものでAjaxの動きがフラッシュ製作者にどのようなインパクトを与えるかという話題があったそうである。

クライアントに対して行えることに関してはFlashはDHTMLよりかなり優位に立っているということがいえる。Ajaxをフラッシュの替わりに用いているサイトの特徴としてはユーザーインターフェースや機能が比較的簡単なものであるということが言える。確かにGooglemapsのような巨大予算を費やした例外もあるが、これはGoogleがビジネス上の思惑でmacromediaやadobeに頼ったシステムを作りたくなかったゆえではないか?という事が伺える。まあしかしフラッシュにもAjaxにも長所、短所がありそれらについて簡単にまとめてみる。

Flash

・プラグインをしなければならず、また決められた範囲の場所にしか表示できない。

・互換性についてはあまり考えなくてもよく作るのが簡単。

・CSSをある程度しかサポートしていない

・javaに似た堅牢なプログラミングモデル

・テキスト表示が弱い、(汚い?)

Ajax

・html、ブラウザとの親和性が高い

・CSSをフルサポート

・動的なコンテンツ生成が容易

個人的にはどちらが良いのかはあまりわかりませんが、javascriptとflashを連携させることなども可能なので両方学習しておいていいとこどりするのが一番いいと思います。

2007年11月6日火曜日

情報可視化インタフェース

数値データから描かれる統計グラフ⇒値の推移を把握するのに適しているが節目と考えられる部位や、背景・影響などを読み取るのは難しい

新聞記事などのテキスト⇒具体的な値の推移把握には不十分だが、背景や影響、節目として解釈すべき箇所を理解する際には有効

ということなのでこれらの情報を相補的に扱うことができればユーザーインターフェースは確実に向上する。

時系列数値情報とテキスト情報を組み合わせて情報を提示する場合、その最も単純な実現方法は、白書等より得られる数値情報を統計グラフとして描画し、新聞記事等のテキスト情報をその発行日を用いてグラフの時間軸に関連付ける方法であろう。

しかし、この方法は欠点があり、それは記事の発効日を利用したとしてもその記事がいつの出来事について書いているのかがわからないということである。今までの変遷をつづったものなのかもしれないし、昨日の出来事を書いたものかもしれない。これをまずテキストの自動解釈技術に基づいていつからいつまでの出来事について書いたものなのかを判別して時間軸と連動させる必要がある。またテキストがグラフのどの変遷箇所に注目して書かれたものなのかを解釈必要がある。

ユーザの探索行為を考えた場合(1)グラフの特徴的な箇所に着目し、それに関する知見を得るためにテキストを参照する。(2)テキスト情報から気になる箇所を見つけそれがグラフのどこに対応しているのかを参照する。っという双方向の情報アクセスが想定できる。そのため、情報提示インタフェースはユーザにテキスト情報の一覧からグラフの対応箇所を見つけるインタラクションを提供する必要がある。

Webで情報可視化インタフェースを考えるとフラッシュかAjaxあたりで実装できそう