以下、図面を参照して、データ収集システム、データ収集方法、およびプログラムの実施形態について説明する。本実施形態では、データ収集システムがクロールサーバであるものとして説明する。クロールサーバとは、インターネットなどのネットワークを介してアクセス可能な複数の装置からデータを自動的に収集するサーバである。クロールサーバは、1つのプロセッサによって実現されてもよく、複数のプロセッサが分散処理することで実現されてもよい。更に、本実施形態のクロールサーバは、ユーザの目的に応じて知識源(有用な情報を含んだウェブ上のテキストデータ、画像データなど)を優先的に収集するクロールサーバであってよい。以下、実施形態について説明する。
<第1の実施形態>
図1は、第1の実施形態のクロールサーバ10の使用環境を示す図である。クロールサーバ10は、画像データおよびHTML(HyperText Markup Language)データの少なくとも一方を含むページデータを、ネットワークNWを介してアクセス可能な複数の外部サーバS1(複数の外部装置)から収集する。ページデータは、外部サーバS1に格納されており、ブラウザによって閲覧可能なページ単位のデータである。ただし、ページデータは、ブラウザに限らず、アプリケーションプログラムによって再生されるデータでもよい。ネットワークNWは、インターネットやWAN(Wide Area Network)、LAN(Local Area Network)などを含む。
図1に示すように、クロールサーバ10は、例えば、URL(Uniform Resource Locator)選出部100と、データ収集部200と、HTML解析部300と、コンテンツ書き込み部400と、URLステータス更新部500と、目的受付部600と、知識源解析部700と、スコア更新部800と、記憶部900とを備える。
URL選出部100、データ収集部200、HTML解析部300、コンテンツ書き込み部400、URLステータス更新部500、目的受付部600、知識源解析部700、およびスコア更新部800(以下、これらを区別しない場合はそれぞれを「コンポーネントC」と称する)は、クロールサーバ10のプロセッサがプログラムを実行することで実現される機能部(以下、「ソフトウェア機能部」と称する)でもよいし、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)などのハードウェアによって実現されてもよいし、ソフトウェア機能部とハードウェアとが協働することで実現されてもよい。プログラムは、例えば、バックグラウンドで自律動作するデーモン(daemon)プログラムである。
本実施形態のクロールサーバ10は、前処理(例えばURLの選出)、データ収集(フェッチ)、および後処理(例えば取得されたデータの解析)を並行して非同期に実行することで、データ収集が一定時間以上に亘って継続的に行われる常時クロールを実現する。これを実現するため、本実施形態のクロールサーバ10では、上述した各コンポーネントCが、それぞれ互いに独立した1つのコンポートネントとして動作する。例えば、コンポーネントCは、自身の起動、動作、停止のスケジュール、および動作速度を自ら決定可能である。
記憶部900は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ、またはこれらのうち複数が組み合わされたハイブリッド型記憶装置などにより実現される。記憶部900は、NAS(NetworkAttached Storage)や外部のストレージサーバなど、クロールサーバ10のプロセッサがアクセス可能な外部装置により実現されてもよい。
記憶部900には、URL選出データ910、HTMLデータ920、画像データ930、フェッチ結果データ940、テキストデータ950、第1解析データ960、第2解析データ970、スコアデータ980などのデータと、URL管理データベースDB1と、コンテンツ保存用データベースDB2とが格納される。ただし、上記各データの名称は、互いの区別のために便宜上用いられたものであり、データの内容を限定するものではない。また各データは、テーブルやリストなどと称されてもよい。
記憶部900に格納されたURL選出データ910、HTMLデータ920、画像データ930、フェッチ結果データ940、テキストデータ950、第1解析データ960、第2解析データ970、およびスコアデータ980は、2つのコンポーネントCの間で受け渡されるデータである。上記各データが格納される記憶部900の領域は、例えばRAMによって実現されるが、これに限定されない。
図2は、本実施形態のクロールサーバ10の構成を、処理の流れに即して示すブロック図である。以下、各コンポーネントCの具体的な処理について説明する。なお以下では、クロールサーバ10の処理の流れに沿って各コンポーネントCの処理を順に説明するが、各コンポーネントCの動作は互いに並行して実行される。
まず、URL管理データベースDB1について説明する。URL管理データベースDB1には、クロールサーバ10がクロールを開始するための基礎となる複数のURLが外部から入力される。URLは、外部サーバS1に格納されたデータを参照するための参照情報の一例である。URL管理データベースDB1は、入力された複数のURLを、URL管理テーブルT1の一部として記憶する。
図3は、本実施形態のURL管理テーブルT1(初期状態)の内容の一例を示す図である。図3に示すように、URL管理テーブルT1は、複数のURLと、各URLに対応するステータス、第1スコア、および第2スコアとが互いに対応付けられたテーブルである。「ステータス」は、URLに対応するページデータの取得状況を示す情報である。「第1スコア」および「第2スコア」は、ユーザの目的毎に付与されるデータ収集の優先度(重要度)を示す指標である。図3に示すように、初期状態のURL管理テーブルT1には、クロールを開始するための基礎となる複数のURLが格納されている。また、初期状態のURL管理テーブルT1では、全てのURLに関して、ステータスは「未取得」、第1スコアおよび第2スコアは「未付与」となっている。
次に、URL選出部100について説明する。URL選出部100は、URL管理テーブルT1に格納された複数のURLのなかから、データ収集部200によるデータ収集に用いられるURLを選出する。例えば、URL選出部100は、データ収集の優先度を考慮して、複数のURLのなかから優先的にデータを収集するURLを選出する。なおこの機能については、詳しく後述する。初期状態におけるURL選出部100は、URL管理テーブルT1に格納された複数のURLのなかで所定のフォーマットを満たしていないURLを選出せず、所定のフォーマットを満たす全てのURLをデータ収集対象のURLとして選出する。「所定のフォーマットを満たす」とは、アクセスのために最低限必要な情報が揃っていることである。図3に示す例では、URL“http;//host5/example/1.htm”は、“http”と“//”の間が“:(コロン)”ではなく、“;(セミコロン)”になっているため、所定のフォーマットを満たしていないURLの一例となる。なお、所定のフォーマットを満たしていないURLの別の例としては、スキーマ(“http://”など)が抜けている場合などである。URL選出部100は、選出したURLをURL選出データ910に登録する。例えば、URL選出部100は、新しくURLを選出する毎に、選出したURLをURL選出データ910に登録する。
次に、データ収集部200について説明する。データ収集部200は、URL選出データ910に登録されたURLを用いて、複数の外部サーバS1からデータを収集する。すなわち、データ収集部200は、URL選出データ910から取得されたURLを参照することで、参照されたURLに対応するウェブページの格納先にアクセスし、ページデータを収集する。収集されるページデータには、HTMLデータおよび画像データが含まれる。
詳しく述べると、本実施形態のデータ収集部200は、URL選出データ910に登録されたURLを取得するための要求を、記憶部900を制御する不図示のコントローラに送信することで、URL選出データ910に登録されたURLを自らのタイミングで取得する。そして、データ収集部200は、取得されたURLに基づいて外部サーバS1からデータを収集する。これにより、データ収集部200は、URL選出部100がURLを選出する動作とは非同期で、外部サーバS1からデータを収集する。例えば、データ収集部200は、URL選出部100によって選出された多数のURLがURL選出データ910に登録されている場合、URL選出データ910に登録された全てのURLを一度に取得することはせず、URL選出データ910に登録された一部のURLのみを一度に取得してもよい。例えば、データ収集部200は、URL選出部100が1つのURLを選出してURL選出データ910に登録する周期よりも遅い周期で、1つのURLに対応するページデータを収集してもよい。データ収集部200は、URL選出データ910を利用することで、URL選出部100がURLを選出する動作と並行して動作する。
次に、本実施形態のデータ収集部200の所定条件下での動作例を2つ説明する。本実施形態のデータ収集部200は、1つ目の動作例として、所定の場合に、データ収集に関する動作を抑制する。例えば、データ収集部200は、所定の場合に、データ収集部200の動作を停止する。「所定の場合」とは、例えば、時刻が一日のなかで特定の時間帯に含まれる場合である。特定の時間帯は、例えば、ネットワークNWに対するアクセスの混み具合のピーク時間(11:30−13:30、20:30−00:30)である。ただし、「所定の場合」は、上記例に限らず、例えば特定サーバに対してアクセスが集中している場合でもよい。また、「動作を抑制する」とは、動作を停止すること限らず、データを収集する時間間隔(フェッチ間隔)を所定間隔よりも大きく開けることなども含む。ここで、上述したURL選出部100は、データ収集部200が動作を抑制している間にも、URLを選出する動作を行って選出されたURLをURL選出データ910に登録してもよい。
本実施形態のデータ収集部200は、2つ目の動作例として、同一の外部サーバS1からデータを収集する動作が所定以上連続しないように、データの収集タイミングを分散させる。
図4は、上記2つ目の動作例を実現するためのデータ収集部200の構成を示すブロック図である。図4に示すように、データ収集部200は、例えば、IPアドレス取得部210、テーブル生成部220、およびフェッチ部230を有する。
IPアドレス取得部210は、URL選出データ910から取得されたURLに対応するIPアドレスを、DNS(Domain Name System)サーバから取得する。詳しく述べると、IPアドレス取得部210は、URL選出データ910から取得されたURLからホスト名を抽出し、抽出されたホスト名をDNSサーバS2に送信する。例えば、URLが“http://host1/news/1.html”の場合、ホスト名は“host1”である。
DNSサーバS2は、ドメインネームシステムに登録された情報を検索し、IPアドレス取得部210から受信したホスト名に対応するIPアドレスを取得する。DNSサーバS2は、取得したIPアドレスをIPアドレス取得部210に送信する。IPアドレス取得部210は、URL選出データ910から取得されたURLと、DNSサーバS2から受信したIPアドレスとを、テーブル生成部220に出力する。
テーブル生成部220は、URLに含まれるホスト名と、IPアドレス取得部210によって取得されたIPアドレスとを対応付けた対応テーブルT2を生成する。対応テーブルT2は、URLに対応するIPアドレスを取得するために、フェッチ部230によって用いられるテーブルである。
図5は、本実施形態の対応テーブルT2の内容の一例を示す図である。図5に示すように、対応テーブルT2は、ホスト名とIPアドレスとが対応付けられたテーブルである。図5に示される例では、ホスト名“host1”および“host2”にはIPアドレス“192.0.2.1”が対応付けられており、ホスト名“host3”にはIPアドレス“192.0.2.2”が対応付けられている。
フェッチ部230は、データ収集に用いられるURLを参照することで、ウェブページの格納先にアクセスし、ページデータを収集する。本実施形態のフェッチ部230は、同一のIPアドレスに対応するURLの一群に含まれるURLを用いてデータを収集する動作が所定以上連続しないように、データの収集タイミングを分散させる。
詳しく述べると、例えば、フェッチ部230は、テーブル生成部220によって生成された対応テーブルT2を参照することで、URL選出データ910から取得された複数のURLを、URLが対応するIPアドレス毎にグループ化する。そして、フェッチ部230は、同一グループに含まれるURLを用いてデータを収集する動作が所定以上連続しないように、その動作のタイミング(データの収集タイミング)を分散させる。「データ収集のタイミングを分散させる」とは、例えば、同一グループに含まれるURLを用いてデータを収集する時間間隔(フェッチ間隔)を、所定間隔よりも大きく開けることをいう。また、「データ収集のタイミングを分散させる」とは、同一グループに含まれるURLを用いたデータの収集が所定回数または所定時間以上継続した場合に、一定間隔、その同一グループに含まれるURLを用いたデータの収集を行わないことを意味してもよい。例えば、フェッチ部230は、同一のIPアドレスに対応するグループに含まれる複数のURLを用いてデータを収集する動作を行う間に、別のIPアドレスに対応するグループに含まれるURLを用いてデータを収集する動作を挟む。
なお、フェッチ部230は、上記処理に代えて、URLの一部が互いに共通するURLの一群(例えばホスト名が共通の一群)に含まれるURLを用いてデータを収集する動作が所定以上連続しないように、その動作のタイミングを分散させてもよい。すなわち、URLのグループ化は、IPアドレス毎のグループ化に限らない。例えば、フェッチ部230は、URL選出データ910から取得された複数のURLを、URLの一部が互いに共通するURL毎(例えばホスト名が共通するURL毎)にグループ化し、同一のグループに含まれるURLを用いてデータを収集する動作が所定以上連続しないように、その動作のタイミングを分散させてもよい。
データ収集部200は、データ収集部200によるデータの収集結果を、HTMLデータ920、画像データ930、およびフェッチ結果データ940に登録する。例えば、データ収集部200は、URL選出データ910から取得されたURLと、そのURLを用いて収集されたHTMLデータとを対応付けて、HTMLデータ920に登録する。データ収集部200は、URL選出データ910から取得されたURLと、そのURLを用いて収集された画像データとを対応付けて、画像データ930に登録する。データ収集部200は、URL選出データ910から取得されたURLと、そのURLを用いて行われたデータ収集の成否(フェッチ結果)とを対応付けて、フェッチ結果データ940に登録する。データ収集の成否は、例えば、HTTPステータスコードでもよいし、成否のみを示す情報でもよい。
次に、HTML解析部300について説明する。HTML解析部300は、データ収集部200によってHTMLデータ920に登録されたURLおよびHTMLデータを、HTMLデータ920から取得する。HTML解析部300は、HTMLデータ920から取得されたHTMLデータを解析する。例えば、HTML解析部300は、HTMLデータ920から取得されたHTMLデータから、ヘッダ部分を除くテキストデータを抽出し、抽出したテキストデータと対応するURLをテキストデータ950に登録する。
また、HTML解析部300は、HTMLデータ920から取得されたHTMLデータのなかに、新しいURLが含まれていないかを検出する。「新しいURL」とは、URL管理データベースDB1のURL管理テーブルT1に未登録のURLである。HTML解析部300は、URL管理テーブルT1を参照することで、HTMLデータ920から取得されたHTMLデータに含まれるURLが新しいURLであるか否かを判定する。HTML解析部300は、HTMLデータ920から取得されたHTMLデータのなかに新しいURLが含まれる場合、そのURLを抽出し、抽出したURLを新しく発見されたURLとしてフェッチ結果データ940に登録する。
さらに、HTML解析部300は、HTMLデータ920から取得されたURLと、そのURLに対応するHTMLデータに含まれた「新しいURL」とに基づき、リンク構造情報T3を生成する。「リンク構造情報」は、あるウェブページのURL(リンク元)と、そのウェブページのなかに含まれるURL(リンク先)との対応関係を示すテーブルである。
図6は、本実施形態のリンク構造情報T3の内容の一例を示す図である。図6に示すように、リンク構造情報T3は、リンク元のURLとリンク先のURLとが対応付けられたテーブルである。図に示される例では、URL“http://host1/news/1.htm”を用いて収集されたHTMLデータから新しくURL“http://host11/news/1.htm”が抽出された場合の例である。この例では、リンク構造情報T3において、URL“http://host1/news/1.htm”と、URL“http://host11/news/1.htm”とが対応付けられている。HTML解析部300は、HTMLデータ920から取得されたHTMLデータのフルデータ(RAWデータ)およびリンク構造情報T3を、対応するURLと対応付けて第1解析データ960に登録する。
次に、コンテンツ書き込み部400について説明する。コンテンツ書き込み部400は、データ収集部200によって画像データ930に登録されたURLおよび画像データを、画像データ930から取得する。また、コンテンツ書き込み部400は、HTML解析部300によってテキストデータ950に登録されたURLおよびテキストデータを、テキストデータ950から取得する。さらに、コンテンツ書き込み部400は、後述する知識源解析部700によって第2解析データ970に登録された解析結果を、第2解析データ970から取得する。そして、コンテンツ書き込み部400は、これら取得した情報をコンテンツ保存用データベースDB2に書き込む。これにより、データ収集部200によって収集されたデータは、URLと対応付けられた状態で、コンテンツ保存用データベースDB2に蓄積される。
次に、URLステータス更新部500について説明する。URLステータス更新部500は、HTML解析部300によってフェッチ結果データ940に登録されたURLおよびデータ収集の成否を示す情報を、フェッチ結果データ940から取得する。また、URLステータス更新部500は、HTML解析部300によってフェッチ結果データ940に登録された「新しいURL」を、フェッチ結果データ940から取得する。URLステータス更新部500は、フェッチ結果データ940から取得されたこれら情報に基づき、URL管理データベースDB1のURL管理テーブルT1を更新する。
図7は、URLステータス更新部500によって更新されたURL管理テーブルT1の内容の一例を示す図である。図7に示すように、URLステータス更新部500は、フェッチ結果データ940から取得された情報に基づき、各URLのステータスを更新する。例えば、URLステータス更新部500は、データ収集部200によるデータの収集が成功したURLのステータスを「取得済」に更新する。また、URLステータス更新部500は、データ収集部200によるデータの収集が失敗したURLのステータスを「取得失敗」に更新する。
また、URLステータス更新部500は、HTML解析部300により新しく抽出されたURLがある場合、新しく抽出されたURLをURL管理テーブルT1に追加する。URLステータス更新部500は、新しく追加されたURLのステータスを「未取得」にする。図7に示す例では、新しく抽出されたURL“http://host11/news/1.htm”がURL管理テーブルT1に追加され、そのステータスが「未取得」に設定される。
次に、目的受付部600について説明する。目的受付部600は、データの収集に関するユーザの目的を受け付ける。例えば、目的受付部600は、データの収集に関するユーザの目的が入力または選択されるインターフェースである。目的受付部600は、例えば、データの収集に関するユーザの複数の目的を受け付け可能である。以下では、データの収集に関するユーザの目的として、種類が異なる2つの目的(第1目的、第2目的)が入力される場合を例に取り上げて説明する。
第1目的は、例えば、「特定のタグが含まれるウェブページを優先して収集したい」といった目的である。「特定のタグ」は、例えば、OGP(Open Graph Protocol)タグのようなコンテンツの内容を示すテキストを含むタグである。OGPタグは、リンク先を示すURL、リンク先のコンテンツの言語、リンク先のウェブサイトの名前、リンク先のコンテンツのタイトル、リンク先のコンテンツに関する画像データのURL、リンク先のコンテンツの概要を示すテキストデータなどがひと纏まりになった情報である。OGPタグは、「コンテンツの内容を示す特定の情報」の一例であり、且つ、「ユーザの目的に対応する特定の情報」の一例である。
第2目的は、例えば、「コンテンツの内容を示す特定の語句が含まれるウェブページを優先して収集したい」といった目的である。「特定の語句」は、例えば、ウェブページのメインテキストに含まれる語句であって、コンテンツの内容を示すものとして予め登録された特徴語である。また、「特定の語句」は、ウェブページのメタタグに含まれる語句であって、コンテンツの内容を示すものとして予め登録された語句でもよい。これら特定の語句も「コンテンツの内容を示す特定の情報」の一例であり、且つ、「ユーザの目的に対応する特定の情報」の一例である。
ただし、第1目的および第2目的は、上記例に限定されず、適宜設定可能である。データの収集に関するユーザの目的は、1つでもよく、3つ以上でもよい。また、「特定のタグ」や「特定の語句」も上記例には限定されない。「特定のタグ」や「特定の語句」は、それぞれ1つに限らず、複数設定されてもよい。目的受付部600は、目的受付部600によって受け付けられたユーザの目的を知識源解析部700に出力する。
次に、知識源解析部700について説明する。知識源解析部700は、HTML解析部300によって第1解析データ960に登録されたURL、HTMLデータおよびリンク構造情報T3を、第1解析データ960から取得する。また、知識源解析部700は、目的受付部600により受け付けられたユーザの目的を目的受付部600から受け取る。知識源解析部700は、目的受付部600から受け取ったユーザの目的に基づき、第1解析データ960から取得されたデータを解析する。例えば、知識源解析部700は、ユーザの目的が複数ある場合、ユーザの目的毎にデータを解析する。
知識源解析部700は、解析されたデータの内容に基づき、そのデータに対応するURLまたはそのURLに基づいて得られる所属情報または関連リンク情報に、データ収集の優先度を示す指標を付与する。「所属情報」は、例えば、URLの一部を構成して複数のURLの群を特定する情報(例えば、ドメインや、ドメインの下位に設定されるグループなどを特定する情報)である。また、「関連リンク情報」は、例えば、HTML解析部300によって新しく抽出されたURLである。知識源解析部700は、「優先度付与部」の一例である。
なお以下では、説明の便宜上、所属情報の一例としてドメインに優先度が付与される例を取り上げて説明する。このため、以下の説明における「ドメイン」とは、「URLの一部を構成して複数のURLの群を特定する情報」または「URLが所属するグループを示す情報」などと読み替えられてもよい。
ここで、知識源解析部700は、解析されたデータにユーザの目的に対応する特定の情報が含まれる場合に、付与する優先度を高くする。例えば、知識源解析部700は、解析されたデータにコンテンツの内容を示す特定の情報が含まれる場合に、付与する優先度を高くする。
図8は、本実施形態の知識源解析部700の構成を示すブロック図である。図8に示すように、知識源解析部700は、例えば、タグ情報検出部710、語句検出部720、およびスコア付与部730を有する。
タグ情報検出部710は、第1解析データ960から取得されたHTMLデータのなかに、ユーザの第1目的として設定された特定のタグが含まれるか否かを検出する。例えば、タグ情報検出部710は、第1解析データ960から取得されたHTMLデータのなかにOGPタグが含まれるか否かを検出する。例えば、タグ情報検出部710は、HTMLデータのなかにOGPタグが含まれることが検出された場合、OGPタグのなかから、リンク先を示すURL、リンク先のコンテンツのタイトル、リンク先のコンテンツに関する画像データのURL、リンク先のコンテンツの概要を示すテキストデータなどの情報を抽出する。タグ情報検出部710は、それら抽出した情報を互いに対応付け、知識源解析部700による解析結果として第2解析データ970に登録する。また、タグ情報検出部710は、HTMLデータのなかにOGPタグが含まれることが検出された場合、OGPタグが含まれることを示す情報と、OGPタグを含むデータに対応するURLとを対応付けてスコア付与部730に出力する。
語句検出部720は、第1解析データ960から取得されたHTMLデータのなかに、ユーザの第2目的として設定された特定の語句が含まれるか否かを検出する。例えば、語句検出部720は、HTMLデータに含まれるテキストデータに対して形態素解析を行い、予め登録された語句を検索することで、特定の語句が含まれるか否かを検出する。ただし、特定の語句を検出する方法は、上記例に限定されず、種々の方法を適宜採用可能である。語句検出部720は、検出対象の特定の語句が検出された場合、その語句とその語句を含むHTMLデータとを対応付け、知識源解析部700による解析結果として第2解析データ970に登録する。また、語句検出部720は、検出対象の特定の語句が検出された場合、特定の語句が含まれることを示す情報と、その特定の語句を含むデータに対応するURLとを対応付けてスコア付与部730に出力する。
スコア付与部730は、タグ情報検出部710による検出結果と、語句検出部720による検出結果とに基づき、解析対象のデータに対応するURL、またはURLに基づいて得られる所属情報または関連リンク情報に、データ収集の優先度を示すスコアを付与する。
本実施形態では、スコア付与部730は、タグ情報検出部710の検出結果に基づき、URL、またはURLに基づいて得られる所属情報または関連リンク情報に、ユーザの第1目的に対応する優先度として第1スコアを付与する。スコア付与部730は、タグ情報検出部710によってデータのなかに特定のタグが含まれることが検出された場合、データ収集の優先度が高くなるように第1スコアを高くする。
また、本実施形態では、スコア付与部730は、語句検出部720の検出結果に基づき、URL、またはURLに基づいて得られる所属情報または関連リンク情報に、ユーザの第2目的に対応する優先度として第2スコアを付与する。スコア付与部730は、語句検出部720によってデータのなかに特定の語句が含まれることが検出された場合、データ収集の優先度が高くなるように第2スコアを高くする。
図9は、スコア付与部730により生成される第1対応テーブルT4を示す図である。図9に示すように、第1対応テーブルT4は、データの収集に用いられたURLと、そのURLに対して付与された第1スコアおよび第2スコアとを対応付けたテーブルである。
また、スコア付与部730は、HTML解析部300によって新しく抽出されたURL(関連リンク情報)に対しても第1スコアおよび第2スコアを付与する。本実施形態では、スコア付与部730は、第1解析データ960から取得されたリンク構造情報T3に基づき、新しく抽出されたURL“http://host11/news/1.htm”に対して第1スコアおよび第2スコアを付与する。新しく抽出されたURL“http://host11/news/1.htm”に付与される第1スコアおよび第2スコアは、例えばそのURLのリンク元であるURL“http://host1/news/1.htm”に対して付与される第1スコアおよび第2スコアと同じに設定される。ただし、新しく抽出されたURLに付与されるスコアは、リンク元のURLに付与されるスコアと異なってもよい。スコア付与部730は、生成した第1対応テーブルT4を、スコアデータ980に登録する。
図10は、スコア付与部730によって生成される第2対応テーブルT5を示す図である。図10に示すように、第2対応テーブルT5は、ドメインと、そのドメインに対して付与された第1スコアおよび第2スコアとを対応付けたテーブルである。本実施形態では、例えば、スコア付与部730は、各URLに対して付与された第1スコアおよび第2スコアをドメイン毎に平均することで、ドメイン毎の第1スコアおよび第2スコアを導出して付与する。スコア付与部730は、生成した第2対応テーブルT5を、スコアデータ980に登録する。
次に、スコア更新部800について説明する。スコア更新部800は、知識源解析部700によって付与されたスコアに基づき、URL管理データベースDB1のURL管理テーブルT1を更新する。例えば、スコア更新部800は、スコア付与部730によってスコアデータ980に登録された第1対応テーブルT4および第2対応テーブルT5を、スコアデータ980からを取得する。スコア更新部800は、第1対応テーブルT4および第2対応テーブルT5に基づき、URL管理テーブルT1を更新する。
図11は、スコア更新部800によって更新されたURL管理テーブルT1の内容の一例を示す図である。図11に示すように、スコア更新部800は、第1対応テーブルT4に基づき、各URLに対応する第1スコアおよび第2スコアを更新する。URL管理テーブルT1は、URLと、そのURLに対して更新された第1スコアおよび第2スコアを対応付けて管理する。
また、URL管理データベースDB1は、ドメインと、そのドメインに対して付与された第1スコアおよび第2スコアを管理するドメイン管理テーブル(図10に示す第2対応テーブルT5と略同じもの)を記憶してもよい。この場合、スコア更新部800は、第2対応テーブルT5に基づき、ドメイン管理テーブルにおいて各ドメインに対応する第1スコアおよび第2スコアを更新する。
最後に、更新されたURL管理テーブルT1に基づくURL選出部100の動作について説明する。URL選出部100は、URL管理テーブルT1に格納された各URLのステータスに基づくことで、取得済みのURLに比べて、未取得のURLを優先して、データ収集に用いるURLとして選出する。また、URL選出部100は、URL管理テーブルT1を参照することで、データ収集の優先度を考慮して、複数のURLのなかから優先してデータを収集する1以上のURLを選出する。例えば、URL選出部100は、有用な知識源を含む可能性が高いウェブページのURLを優先して選出する。
本実施形態では、URL選出部100は、例えばURL管理テーブルT1においてステータスが「未取得」のURLのなかで、URL毎に付与されたスコア(例えば第1スコアおよび第2スコアの一方または両方)に基づいて、複数のURLのなかから優先してデータを収集するURLを選出する。例えば、URL選出部100は、URL毎に付与された第1スコアおよび第2スコアの組み合わせに基づいて、複数のURLのなかから優先してデータを収集するURLを選出する。例えば、URL選出部100は、複数のURLのなかから、付与されたスコアが最も高いURLから順に選出する。なおこれに代えて、URL選出部100は、複数のURLのなかで、付与されたスコアが一定の閾値よりも高いURLを順に選出してもよい。
また、URL選出部100は、例えばURL管理テーブルT1においてステータスが「未取得」のURLについて、そのURLが属すドメイン毎に付与されたスコア(例えば第1スコアおよび第2スコアの一方または両方)に基づいて、複数のURLのなかから優先してデータを収集するURLを選出してもよい。例えば、URL選出部100は、そのURLが属するドメイン毎に付与された第1スコアおよび第2スコアの組み合わせに基づいて、複数のURLのなかから優先してデータを収集するURLを選出してもよい。例えば、URL選出部100は、付与されたスコアが最も高いドメインに属するURLを優先的に選出する。なおこれに代えて、URL選出部100は、付与されたスコアが一定の閾値よりも高いドメインに属するURLを順に選出してもよい。
図12は、本実施形態のクロール処理を示すフローチャートである。本フローチャートによる処理は、クロールサーバ10によって実行される。なお、本フローチャートは、1つのURLに関するクロール処理の流れを示す。
まず、URL選出部100は、URL管理テーブルT1に格納された複数のURLのなかから、データを収集するのに用いるURLを選出する(S10)。データ収集部200は、URL選出部100により選出されたURLを用いてウェブページの格納先にアクセスし、ページデータを収集する(S11)。次に、HTML解析部300は、データ収集部200により収集されたデータを解析する(S12)。これにより、データに含まれるリンク構造情報T3などが得られる。
URLステータス更新部500は、各URLに対するデータ収集の成否や、HTML解析部300により得られたリンク構造情報T3などに基づき、URL管理テーブルT1を更新する(S13)。知識源解析部700は、HTML解析部300から送られたHTMLデータを解析し、URLなどに対してユーザの目的毎に応じたスコアを付与する(S14)。スコア更新部800は、知識源解析部700により付与されたスコアに基づき、URL管理テーブルT1を更新する(S15)。コンテンツ書き込み部400は、収集されたデータをコンテンツ保存用データベースDB2に書き込む(S16)。なお、S13、S14、S15、およびS16の処理は、上記順序とは異なる順序で行われてもよく、互いに同じタイミングで行われてもよい。
図13は、本実施形態のクロールサーバ10の作用を説明するための図である。図13中の(a)は、比較例として、前処理、データ収集、後処理が順に実行されるバッチ処理によりクロールが行われる例を示す。図13中の(a)に示すように、このようなクローラでは、前処理や後処理が実行されている間のリソースの利用効率が低く、データ収集の効率が高くない場合がある。
一方で、図13中の(b)は、本実施形態のクロールサーバ10によりクロールが行われる例を示す。本実施形態のクロールサーバ10によれば、リアルタイム処理による常時クロールが実現される。これにより、ネットワーク帯域を効率的に使用することができる。また本実施形態では、データ収集部200は、収集対象となるURLがURL選出データ910に新しく登録されると、そのURLを用いたクロールをすぐに行うことができる。これにより、重要度が高いURLが新しく発見された場合、そのURLを用いてデータを迅速に収集することができる。
以上のような構成のクロールサーバ10によれば、データ収集の効率向上を図ることができる。すなわち、本実施形態のクロールサーバ10は、URL選出部100の動作とは非同期に、外部サーバS1からデータを収集するデータ収集部200を備える。このような構成によれば、URL選出部100がURLを選出する動作と並行してデータ収集部200がデータを収集することができる。このため、リソースを効率的に利用することができ、データ収集の効率向上を図ることができる。
ここで、上流のコンポーネントCの処理速度が下流のコンポーネントCの処理速度を上回る場合、下流のコンポーネントCでデータがあふれ、一部の処理に不具合が生じることがある。例えば、データ収集の処理は、URL選出の処理などに比べて負荷が大きい。このため、URL選出の処理とデータ収集の処理とが単に並列に実行されると、データ収集の処理に不具合が生じる可能性がある。
そこで、本実施形態のクロールサーバ10は、URL選出部100により選出されたURLが登録されるURL選出データ910を備える。そして、データ収集部200は、URL選出データ910に登録されたURLを用いて、URL選出部100の動作とは非同期に外部サーバS1からデータを収集する。このような構成によれば、URL選出部100から送られたURLがデータ収集部200であふれることを抑制することができ、データ収集の処理に不具合が生じる可能性が低下させることができる。これにより、不具合発生を抑制しつつ、データ収集の効率向上を図ることができるクロールサーバ10を提供することができる。
本実施形態では、データ収集部200は、時刻が一日のなかで特定の時間帯に含まれる場合に、動作を抑制する。このような構成によれば、ネットワーク帯域に大きな負荷を与えることを避けることができる。
本実施形態では、URL選出部100は、データ収集部200が動作を抑制している間にも、URLを選出する動作を行って選出されたURLをURL選出データ910に登録する。このような構成によれば、所定の場合にデータ収集部200の動作が抑制される場合であっても、リソースの利用効率を高めることができる。これにより、データ収集のさらなる効率向上を図ることができる。
本実施形態では、データ収集部200は、同一のIPアドレスに対応する複数のURLを用いてデータを収集する動作が所定以上連続しないようにデータの収集タイミングを分散させる。また、データ収集部200は、URLの一部が互いに共通する複数のURLを用いてデータを収集する動作が所定以上連続しないようにデータの収集タイミングを分散させる。これらのような構成によれば、特定のサーバに集中して大きな負荷を与えることを避けることができる。
本実施形態では、知識源解析部700は、データ収集部200により収集されたデータの内容に基づき、URLまたはURLに基づいて得られる情報に、データ収集の優先度を付与する。そして、URL選出部100は、知識源解析部700により付与された優先度に基づき、複数のURLのなかからデータ収集に優先して用いるURLを選出する。このような構成によれば、データ収集の重要度が高いデータをより迅速に収集することができる。これにより、データ収集のさらなる効率向上を図ることができる。
本実施形態では、前記URLに基づいて得られる情報は、URLの一部を構成して複数のURLのグループを特定する情報である。すなわち、本実施形態では、ドメインやドメインの下位に設定されるカテゴリに対して、データ収集の優先度を付与することができる。このような構成によれば、データ収集の観点で重要なウェブページが発見された場合、そのウェブページが属するドメインやドメインの下位に設定されるカテゴリに対して高い優先度を付与し、そのドメインなどに属してデータが未取得のURLを次のデータ収集に用いるURLとして優先的に選出することができる。これにより、データ収集のさらなる効率向上を図ることができる。
本実施形態では、前記URLに基づいて得られる情報は、データ収集部200により収集されたデータから新しく抽出されたURLである。すなわち、本実施形態では、新しく抽出されたURLに対して、データ収集の優先度を付与することができる。このような構成によれば、データ収集の観点で重要なウェブページが発見された場合、そのウェブページに含まれるURLに対して高い優先度を付与し、その新しく抽出されたURLを次のデータ収集に用いるURLとして優先的に選出することができる。これにより、データ収集のさらなる効率向上を図ることができる。
本実施形態では、知識源解析部700は、データ収集部200により収集されたデータのなかに目的受付部600により受け付けられたユーザの目的に対応する特定の情報が含まれる場合に、優先度を高くする。このような構成によれば、ユーザの目的に応じたデータの収集をより効率的に行うことができる。
本実施形態では、知識源解析部700は、データ収集部200により収集されたデータのなかにデータの内容を示す特定の情報が含まれる場合に、優先度を高くする。このような構成によれば、例えば知識源にフォーカスしたデータの収集をより効率的に行うことができる。
本実施形態では、前記特定の情報は、OGP(Open Graph Protocol)タグである。このような構成によれば、コンテンツのタイトル、コンテンツに関する画像データ、コンテンツの概要を示すテキストデータなどの情報を1纏まりとして抽出することができる。これにより、知識源にフォーカスしたデータの収集をさらに効率的に行うことができる。
<第2の実施形態>
次に、第2の実施形態について説明する。本実施形態は、ドメインやウェブページの性質に合わせたデータの再収集(再フェッチ)が行われる点で、第1の実施形態とは異なる。「データの再収集」とは、過去にすでに一度データが取得されたウェブページから、再びデータを収集することを意味する。なお、以下に説明する以外の構成は、第1の実施形態の構成と同様である。
図14は、本実施形態の知識源解析部700Aの構成を示すブロック図である。図14に示すように、本実施形態の知識源解析部700Aは、更新頻度推定部740を有する。更新頻度推定部740は、第1解析データ960から取得されるHTMLデータの内容に基づき、そのHTMLデータが存在したウェブページの更新頻度を推定する。例えば、更新頻度推定部740は、ウェブページの更新頻度に関する特定の語句がHTMLデータのなかに含まれないか検出する。
ここで、例えば、ウェブページは、ドメインやページの性質によって、更新頻度が異なる。例えば、ニュースサイトは頻繁に更新されるが、古い事柄に関する解説サイトはほとんど更新されない。また、ニュースサイトのなかでも、トップページは頻繁に更新されるが、個々の記事ページは基本的に更新されない。
そこで、更新頻度推定部740は、例えば、HTMLデータのなかに、ニュースサイトであることを示す特定の語句(例えば“article”)や、トップページであることを示す特定の語句(例えば、“top page”)などが含まれていないか検出する。そして、更新頻度推定部740は、これらの特定の語句がHTMLデータに含まれる場合に、そのウェブページの更新頻度が高いものと推定する。なお、ウェブページの更新頻度を推定する方法は、上記例に限られない。例えば、同じウェブページから所定の周期で再収集したHTMLデータを、ハッシュ関数を用いて比較する方法や、その他の解析手法を用いる方法で更新頻度が推定されてもよい。
更新頻度推定部740は、URL管理データベースDB1のURL管理テーブルT1において、各URLに対して推定された更新頻度に関する情報を追加する。また本実施形態では、URL管理テーブルT1は、各URLを用いて最後にデータが収集された日時を、各URLと対応付けて記憶する。例えば、各URLを用いて最後にデータが収集された日時は、URLステータス更新部500によって登録される。
そして、URL選出部100は、URL管理テーブルT1を参照することで、更新頻度推定部740により推定された更新頻度に基づき、データを再収集するURLを選出する。例えば、URL選出部100は、更新頻度が高いウェブページであるほど、データを再収集する時間間隔を小さくする。
このような構成によれば、ドメインやウェブページの性質に合わせたデータの再収集を行うことができる。これにより、更新頻度が高いウェブページから、より多くのデータ、および新しいデータを収集することができる。これにより、データ収集のさらなる効率向上を図ることができる。
<第3の実施形態>
次に、第3の実施形態について説明する。本実施形態は、ドメイン毎やドメインの下位に設定されるグループ毎に、クロールするURL数が割り当てられる点で、第1の実施形態とは異なる。なお、以下に説明する以外の構成は、第1の実施形態の構成と同様である。
図15は、本実施形態のURL選出部100によるURLの選出動作を説明するための図である。本実施形態のURL選出部100は、選出するURLの総数をドメイン毎に割り当て、各ドメインに属するURLを各ドメインに割り当てられた数だけ選出する。また、本実施形態のURL選出部100は、各ドメインに割り当てられたURLの数を、さらにドメインの下位に設定されるグループ毎に割り当て、各グループに属するURLを各グループに割り当てられた数だけ選出する。
詳しく述べると、本実施形態のURL選出部100は、ドメイン毎のスコア比率に応じてドメイン毎に割り振るURLの数を決定するための対応テーブルT6を有する。「スコア比率」とは、全てのドメインのスコアを合計した値に対する各ドメインのスコアの比率を意味する。例えば、全てのドメインのスコアを合計した値が130であり、ドメイン“host1”のスコアが100の場合、ドメイン“host1”のスコア比率は、0.77になる。
図16は、本実施形態のスコア比率に応じてURL数を決定するための対応テーブルT6の内容の一例を示す図である。図16に示すように、対応テーブルT6において、各スコア比率に応じてドメイン毎に割り当てるURL数の配分比率は、予め設定されている。本実施形態では、一例として、ドメイン“host1”のスコアが100であり、ドメイン“host99”のスコアが5であるとする。この場合、URL選出部100は、対応テーブルT6に格納された配分比率に基づき、ドメイン“host1”から選出するURL数を50とし、ドメイン“host99”から選出するURL数を1とする。
同様に、本実施形態のURL選出部100は、ドメインの下位に設定されるグループ(図15中では「サービス」と表記する)毎のスコア比率に応じてグループ毎に割り振るURLの数を決定する。本実施形態では、一例として、グループ“host1 news”のスコアが80であり、グループ“host1 shop”のスコアが20であるとする。この場合、URL選出部100は、対応テーブルT6と同様に設定された配分比率のテーブルに基づき、ドメイン“host1”に割り当てられたURLの数である50を、グループ“host1 news”から選出するURLの数を40とし、グループ“host1 shop”から選出するURLの数を10として配分する。
そして、本実施形態のURL選出部100は、各グループに割り当てられたURLの数のなかで、各URLのスコアに応じてデータを優先して収集するURLを選出する。
ここで、ドメインや、ドメインの下位に設定されるグループのカテゴリ(サービスの種類)により、クロールする価値が異なる場合がある。例えば、ポータルサイトのニュースサービスやショッピングサービスは、より積極的にクロールする価値がある。
そこで、本実施形態では、ドメイン毎やドメインの下位に設定されるグループ毎に、クロールするURLの数が割り当てられる。このような構成によれば、価値の高いドメイン(知識源が多く含まれるドメイン)からのデータ収集をより優先して行うことができる。
以上、いくつかの実施形態について説明した。ただし、実施形態の構成は、上記例に限定されない。例えば、各コンポーネントCは、同じ装置(同じハードウェア)に存在してもよく、別の装置(別のハードウェア)に存在してもよい。IPアドレス取得部210およびテーブル生成部220は、データ収集部200に代えて、URL選出部100に設けられてもよい。この場合、URL選出部100は、複数のURLをURLが対応するIPアドレス毎にグループ化し、同一IPアドレスに対応するURLが所定以上集中しないようにURLを選出してもよい。別の観点で見ると、複数のURLをURLが対応するIPアドレス毎(または、URLの一部が互いに共通するURL毎)にグループ化する処理は、データ収集部200の代わりに、URL選出部100によって事前に行われてもよい。
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。