私のブックマーク
Web内容マイニング
(NECインターネットシステム研究所 楠村幸貴)
Web上には膨大の情報が存在している.そこでWebを巨大な知識ベースと捉え,Webから有用な知識を取り出す情報抽出技術の研究が行われている.この技術はWeb内容マイニングとも呼ばれており, 複数のサイトをまとめて提示する情報統合システム[1][2]や,ブログからの評判抽出システム[3][4][5],コミュニティサイトからの人間関係の抽出システム[6]など,近年多くの研究が行われているトピックとなっている.そこで本ブックマークではこれらのWeb内容マイニング技術を取り上げたい.
[1] TSIMMIS, http://infolab.stanford.edu/tsimmis/tsimmis.html
[2] ARANEUS, http://www.dia.uniroma3.it/Araneus/
[3] BlogWatcher, http://blogwatcher.pi.titech.ac.jp/
[4] gooラボオピニオンリーダ, http://opinion.labs.goo.ne.jp/cgi-bin/index.cgi
[5] BIGLOBE評判分析, http://drama.guide.search.biglobe.ne.jp/
[6] Polypho.net, http://www.polypho.net/
Web内容マイニングは,Webサイトから情報を構造化して取得するWebラッパー技術や,Webページ内のテキストを分析するための自然言語処理技術などの情報抽出技術に基づく.しかし,これらの技術に関してはこれらの技術に関しては
,特集「WWW上の情報の知的アクセスのためのテキスト処理」人工知能学会誌 Vol.19, No.3, pp.295-323 (2004)や浦本直彦氏による「私のブックマーク
自然言語処理/情報検索」 などに紹介がある.そこで,本ブックマークでは技術の詳細ではなく,Web内容マイニングの研究を進める上で実際に役立つツール群と,近年の話題について紹介する.
1. ツール群
一般的に,Web内容マイニングのシステムは1.Webページの収集,2.Webページ内の情報の構造化,3.構造化された情報の分析という3つの処理から成る.以下ではこれらの処理に沿って利用できるツールを順に紹介していく.ただし,このうち3の処理はアプリケーションに依存することが多く,ツールが存在しないため割愛する.
1.1 Webページの収集に関するツール
Webページの収集に関するツールには,以下のものがある.
1.1.1 検索エンジンのWebサービスAPI
代表的な検索エンジンは,以下のWebサービスを提供している.欲しい情報がWeb上のどこに存在するかわからない場合に,以下のWebサービスを利用し,URLのリストを取り出すことができる.
[7] Google Web API, http://code.google.com/apis/soapsearch/
Googleが提供するWebサービスAPI.
(なお,利用にはIDが必要であるが,2006年12月で新たなIDの発行が停止された.)
[8] Yahoo! API, http://developer.yahoo.com/search/
Yahoo!が提供するWebサービスAPI.ニュース検索やブログ検索など,対象を限定した検索も可能である.
1.1.2 スパイダツール
Web内容マイニングでは大量のページを収集する必要があることが多く,これらをダウンロードするためには,スパイダが利用できる.
[9]Heritrix, http://crawler.archive.org/
Javaで実装.Internet Archiveが開発.ダウンロードしたHTMLファイルをサイトごとに圧縮して管理できるので効率的.大規模な収集に有利.
[10]Jspider, http://j-spider.sourceforge.net/
Javaで実装.イベントモデルでカスタマイズしやすい.
[11] Arachnid, http://arachnid.sourceforge.net/
Javaで実装.HTMLパーサを含むため,ダウンロード時にページ内容の構造化を行うことができる.
[12]WebSPHINX, http://www.cs.cmu.edu/~rcm/websphinx/
Javaで実装.単純なテンプレートによる情報抽出機構を含むので,ダウンロード時に決まったパターンで書かれている情報を抽出できる.
[13] WebLech URL Spider, http://weblech.sourceforge.net/
Java実装.スパイダというよりミラーツール.特定のWebサイトをまとめて収集する場合に楽.
[14] LARM:http://larm.sourceforge.net/
Javaで実装.Luceneフレームワーク上の実装なので,検索エンジンをが必要であれば楽.
[15] Spindle, http://www.bitmechanic.com/projects/spindle/
Javaで実装Larmと同じLuceneフレームワーク上の実装.
[16] Aperture, http://aperture.sourceforge.net/
Javaで実装.Webページだけでなく,ファイルシステム内のファイルやメールを収集もまとめて集めることが可能.
[17] WWWC, http://www.nakka.com/wwwc/
Cで実装.日本語ツール.
[18] Iron33, http://verno.ueda.info.waseda.ac.jp/iron33/
Cで実装.日本語ツール.
[19] Pr0nSpider, http://sourceforge.net/projects/pr0nspider/
C#で実装.
[20] PHPCrawl, http://sourceforge.net/projects/phpcrawl/
PHPで実装.
[21] wwgetall, http://openlab.ring.gr.jp/tsuneo/soft/wwgetall/wwgetall.html
Perlで実装.
1.1.3 RSS関連のツール
ブログページを収集する場合には,RSSリーダを用いてブログページを監視し,ページに更新が行われた場合にそのページをダウンロードする,という実装が行われる.このためには,RSSを扱う以下のAPIが利用可能である.
[22]informa, http://informa.sourceforge.net/
JavaからRSSを扱うためのAPI.
[23]RSSLibrary,
http://www.gotdotnet.com/workspaces/workspace.aspx?id=a853aa5c-a697-4aa4-8095-b6634d1a6a5a
C#からRSSを扱うためのAPI.
[24]Magpierss, http://magpierss.sourceforge.net/
PHPからRSSを扱うためのAPI.
[25] XML::RSS
Perlで実装.CPAN のフリーモジュール.
[26] RSSOwl, http://www.rssowl.org/
Javaで実装.更新されたページをダウンロードできる.
1.2 ページ内の情報の構造化ツール
Webページは通常,人が読むために作成されるため,ページ内の情報は構造化されていない.
機械処理を行うためには, ページ内の情報を属性と属性値として構造化して取り出す必要がある.
以下にこの処理に関するツールを紹介する.
1.2.1 HTMLパーサ
ページ内の内容を分析する際にはまずHTMLファイルをパージングし,HTMLの木構造を作成する.
Javaなどのプログラム言語には元々HTMLパーサ機能が付加されているが,Web上には不正なHTMLで記述されているページも多く,実用には向かないことが多い.以下のツールは不正なHTMLを校正しながらHTMLタグの木構造を構築してくれる.
[27]HTML Parser, http://htmlparser.sourceforge.net/
Javaで実装.テンプレートによる部分抽出機能や構造変換機能を含む.
[28]Grunk:http://dlt.ncsa.uiuc.edu/archive/emerge/components_grunk.html
Javaで実装.特定の構造を抽出する機能を持つ.
[29]The Jericho
HTML Parser, http://jerichohtml.sourceforge.net/doc/index.html
Javaで実装.
[30]JTidy:http://jtidy.sourceforge.net/
Javaで実装.
[31]NekoHTMLParser, http://people.apache.org/~andyc/neko/doc/html/
Javaで実装.
[32]HTML Parser for PHP-4, http://php-html.sourceforge.net/
PHPで実装.
[33]MSXML, http://www.microsoft.com/downloads/details.aspx?FamilyID=3144b72b-b4f2-46da-b4b6-c5d7485f2b42&DisplayLang=ja
C++でWindows上の実装.描画した時のタグのレイアウト位置を取得可能.
[34] HTML::Parser
Perlで実装.CPAN のフリーモジュール.
1.2.2 言語処理ツール
HTML構造の解析を終え,対象とするテキスト部分を切り出したら,次は言語解析により情報抽出を行う.
ここでは,この言語解析時の基盤技術として,テキストを区切るための形態素解析ツール,単語間の係り受けを調べる構文解析ツールが利用可能である.
なお,これらの情報に関してはすでに多くの既存のリンク集があるのでそちらをあげておく.
[36]Linguistics Computing
Resources on the Internet, http://www.sil.org/linguistics/computing.html
また,このような言語解析処理を効率よくプログラミングできるフレームワークも存在する.
これらの フレームワークでは文書を単語列と捉え,各単語に簡単にアノテーションを付加する機能を持つAPIを提供している.複雑な処理のを実装する場合には,これらを用いた方が実装が楽である.
[37]GATE, http://gate.ac.uk/
[38]UIMA, http://www.research.ibm.com/UIMA/
また ,対象となる文章がニュース記事のように定型の言い回しを多く含む文章であり,人名や組織名など定型的なクラスの値を抽出することが目的であれば,固有表現抽出のツールを利用できる.オープンソースの固有表現ツールには,以下のものがある.
[39] NexT, http://www.ai.info.mie-u.ac.jp/~next/next.html
人名,地名,組織名など定番の属性を抽出可能.日本語
[40] Lingpipe, http://www.alias-i.com/lingpipe/
隠れマルコフモデルにより教師信号からルールを学習
[41] FreeLing, http://garraf.epsevg.upc.es/freeling/
ブースティングにより教師信号からルールを学習
[42] FASTUS, http://www.ai.sri.com/~appelt/fastus.html
有限状態オートマトンにより教師信号からルールを学習
[43] ANNIE, http://www.aktors.org/technologies/annie/
有限状態オートマトンにより教師信号からルールを学習
1.2.3 Webラッパー生成ツール
特定のレイアウトを持つサイトが提供する情報を抽出・解析する場合には,Webラッパーが利用可能である.Webラッパーはサイトごとにレイアウトに関するルールを作成し,Webサイトが提供する情報を属性と属性値の形で抜き出すプログラムである.なお,Webラッパーはページ内の情報に対する情報抽出を行うだけでなく,ページの収集も同時に行っており,前項目の「Webページの収集ツール」にも入れるべきである.本ブックマークではWebラッパー自体でなく,その生成ツールを紹介するという立場で,ページ内の情報の構造化ツールとした.
Webラッパーに関して特集「WWW上の情報の知的アクセスのためのテキスト処理」人工知能学会誌 Vol.19, No.3, pp.295-323 (2004)や以下の調査論文[43][44][45]が詳しいのでそちらを参照されたい.
[44]IEEE
Xplore, A Survey of Web Information Extraction Systems, http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1683775
[45]Citeseer,
Information Extraction from World Wide Web A Survey, http://citeseer.ist.psu.edu/eikvil99information.html
[46]Citeseer, A Brief
Survey of Web Data Extraction Tools, http://citeseer.ist.psu.edu/laender02brief.html
まず,Webラッパー生成ツールのうち,我々が利用可能な無償のツールについて紹介する.
[47] W4F, http://sourceforge.net/projects/w4f/
GUIを用いてインタラクティブにWebラッパーを作成するツール.XPathライクな抽出ルール
[48]XWrapElite,
http://www.cc.gatech.edu/projects/disl/XWRAPElite/
GUIを用いてインタラクティブにWebラッパーを作成するツール.スクリプトのような抽出ルール.表の解析を行う.
Webラッパー生成ツールにはオープンソースのシステムは少ない.そこで商用のツールについてもいくつか挙げておくことにする.
[49]Fetch, http://www.fetch.com/index.asp
[50]Lixto, http://www.lixto.com/
[51]Softbot, http://www.botspot.com/
[52]Landon-ip, http://www.landon-ip.com/WebWrappersIntro.aspx
2. 近年の話題
現状のWeb内容マイニングでは,各Webページから情報を構造化して取り出す情報抽出技術がネックとなっている.従来の情報抽出システムには,レイアウトを手がかりとするWebラッパーシステムと言語情報を手がかりとする固有表現抽出システムがあるが,これらはどちらも抽出ルールを構築する手間がある.つまり,Webラッパーを用いたシステムにはサイトごとに抽出ルールを作成する手間があり,言語情報を手がかりとするシステムには多様な記述パターンを学習するための教師信号を用意する手間がある.このため,情報抽出器を新しいドメインに適用する際のコストが大きな問題となっている.
そこで近年,教師信号を利用せずに抽出ルールを自動生成し,Web上から網羅的に大量の属性と属性値のペアを抽出する技術が研究されている.ここではこれらの研究プロジェクトもしくはシステムを紹介する.
[53] Web->KB
Project, http://www.cs.cmu.edu/afs/cs.cmu.edu/project/theo-11/www/wwkb/
Webから語彙と統計に関する知識を抽出するというプロジェクト.ブートストラッピングアルゴリズムによりWeb上から大量の語彙を抽出する.語彙は情報抽出システムにおいて辞書として用いられる.
[54] Citeceer DIPREシステムの論文,
http://citeseer.ist.psu.edu/brin98extracting.html
Googleの創始者であるBrinによって開発されたシステム.この論文では,Web上から著者名,書籍名とその関係を抽出する実験を行い,5個の書籍データから15000個の書籍データを生成できることを示している.
[55] Citeceer, C-PANCOWシステムの論文,
http://citeseer.ist.psu.edu/cimiano05gimme.html
検索エンジンを用いて情報抽出を行うシステム.つまり,属性「country」を抽出したい場合,「X is a country」「country such as Y」という抽出テンプレートを作成し,検索エンジンでこのパターンが含まれるページを取り出し,「Japan is a country」などのフレーズから国名を抽出する.
[56] KnowItAll Project,
http://www.cs.washington.edu/research/knowitall/
Web上から大量の語彙を獲得することを目指すプロジェクト.獲得した語彙は情報抽出システムの辞書として用いられる.語彙の獲得では,ブートストラッピングアルゴリズムにWebラッパー生成技術を組み合わせて用いたシステムを開発.栄養素に関する属性値を約7700万個も収集することができたとの報告がある.
[57] オンデマンド情報抽出Project, http://nlp.cs.nyu.edu/odie/
オンデマンド情報抽出プロジェクトでは,ブートストラッピングアルゴリズムと同様の技術を用い,どんなトピックであっても抽出ルールの作成なく即座に情報抽出を行い,その結果を提供することを目指している.
3. 終わりに
本ブックマークではWeb内容マイニングの基盤となるツールと近年の話題を紹介した.特に近年,情報抽出技術が発展しており,最小限の労力で大量の属性・属性値を獲得できる技術が生まれ始めている.これにより,マイニングシステムをドメインに適用する際のコーパスや辞書の作成コストが下がり,新しいWeb内容マイニングのシステム開発が容易になってきた.また,近年Web上ではBlogやSNSなど新しいサービスが次々と生まれており,Web上にはまだ多くの知識が眠っていると考えられる.近年の情報抽出技術の発展により,我々はついにそれらを掘り出すチャンスを得たとは考えられないだろうか.Webマイニングにおける知識獲得のゴールドラッシュが訪れることを願ってやまない.
(NECインターネットシステム研究所 楠村幸貴)