説明

データ抽出装置、データ抽出方法、および、データ抽出プログラム

【課題】ユーザ嗜好解析に有効なWebページの閲覧履歴を高精度で抽出すること。
【解決手段】ユーザ端末3とWebサーバ4との間のHTTPリクエストおよびHTTPレスポンスの組であるHTTPペア群が、トラフィック抽出部11で抽出され、レスポンスフィルタ部13でテキストデータの種別として特定された後、トラフィック抽出装置1のリクエストフィルタ部14が、参照元URLが抽出できなかった各HTTPペアと、連続するHTTPペア内に重複する同一参照元URLが出現したとき、その参照元URLを要求URLとするHTTPペアとを特定し、データ抽出部16が、リクエストフィルタ部14の特定したHTTPペアから、キーワードの文字列を抽出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ抽出装置、データ抽出方法、および、データ抽出プログラムに関する。
【背景技術】
【0002】
近年、パケット内のペイロード部までを閲覧可能なフィルタリング製品が増加し、ネットワークトラフィック(以下トラフィック)などのリアルタイムに流れるデータの分析、抽出を高速に行うことが可能となっている。上記製品は、主にファイアウォールやProxyサーバなどで利用されており、トラフィックからユーザがアクセスしたWebページ、アクセス回数、時間、Webページ遷移情報など、様々な情報を分析することが可能である。
【0003】
一方、ユーザの嗜好を解析する技術として、協調フィルタリングなどがあるが、予めストックされたデータを用いた分析が想定されており、リアルタイムに流れるトラフィックから嗜好解析を行うためには様々な課題が考えられる。また、ブラウザ側でWebアクセス情報を取得する方式もあるが、プラグインのインストールが必要であり、嗜好データのとれる範囲が限定されてしまう。
【0004】
また、関連研究として、Proxyを用いたユーザのWebページの閲覧履歴からユーザの類似度を求める研究(非特許文献1参照)がある。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】丹英之他,「Proxy Logに基づいたコンテンツ自動推薦による知識共有支援システムの提案」,情報処理学会 第68回全国大会, 6C-2, 2006
【発明の概要】
【発明が解決しようとする課題】
【0006】
ユーザのWebページの閲覧履歴はHTTPのトラフィックから抽出可能である。しかし、HTTPのトラフィックからWebページの閲覧履歴に関する情報を高精度に抽出することは、従来の技術では不充分である。ここで、高精度な抽出処理とは、Webページの閲覧履歴ではないノイズを、Webページの閲覧履歴として誤抽出してしまう(いわゆる、false positive)事象と、Webページの閲覧履歴であるにもかかわらず、抽出を見逃してしまう(いわゆる、false negative)事象との双方を抑制することである。
【0007】
例えば、非特許文献1では、参照先URLのドメイン名からWebページの概要を手動で一意に定めているため、htmlに含まれる広告用画像データなどのノイズ情報を、Webページの閲覧履歴として拾ってきてしまう。
また、HTTPリクエストURLの拡張子に対してフィルタリングを行ったとしても、近年増加しているAPIなどへのHTTPリクエストは、拡張子がないためフィルタリング条件をすり抜けてしまうため、Webページの閲覧履歴として抽出すべきHTTPリクエストを見逃してしまう。
【0008】
そこで、本発明は、前記した問題を解決し、ユーザ嗜好解析に有効なWebページの閲覧履歴を高精度で抽出することを、主な目的とする。
【課題を解決するための手段】
【0009】
前記課題を解決するために、本発明は、Webページを要求するためのHTTPリクエストと、そのHTTPリクエストへの応答であるHTTPレスポンスとの組であるHTTPペアからデータを抽出するデータ抽出装置であって、
前記データ抽出装置が、トラフィック抽出部と、レスポンスフィルタ部と、リクエストフィルタ部と、データ抽出部と、記憶手段とを備えており、
前記トラフィック抽出部が、入力されるHTTPペアから、そのHTTPペアの前記HTTPリクエストにテキスト以外の種別を示すキーワードが含まれているHTTPペアを除外した残りのHTTPペアを抽出し、
前記レスポンスフィルタ部が、前記トラフィック抽出部が抽出したHTTPペアから、そのHTTPペアの前記HTTPレスポンスにテキストの種別を示すキーワードが含まれているHTTPペアを抽出し、
前記リクエストフィルタ部が、
前記レスポンスフィルタ部が抽出した各HTTPペアから、そのHTTPペアの前記HTTPリクエストに含まれるWebページの所在を示す要求URLと、そのWebページの参照元であるWebページの所在を示す参照元URLとを抽出し、
その抽出処理において、参照元URLが抽出できなかった各HTTPペアと、
連続するHTTPペア内に重複する同一参照元URLが出現したとき、その参照元URLと一致する前記要求URLを含むHTTPペア群のうちの先頭のHTTPペアとを特定し、
前記データ抽出部が、前記リクエストフィルタ部の特定したHTTPペアから、キーワードの文字列を抽出して、前記記憶手段に記憶することを特徴とする。
【0010】
これにより、ユーザ嗜好解析に有効なWebページの閲覧履歴を高精度で抽出することができる。
例えば、トラフィック抽出部は、広告用画像データなどのテキスト以外のHTTPリクエストを除去することで、ノイズの誤抽出(false positive)を抑制する。
次に、レスポンスフィルタ部は、テキストの種別を示すキーワードが含まれているHTTPレスポンスを抽出することで、正解抽出の見逃し(false negative)を抑制する。
そして、リクエストフィルタ部は、リファラ(参照元URL)が連続するHTTPペアを特定することで、APIへのHTTPリクエストなどの、トラフィック抽出部では除去できないHTTPリクエストを除去する。
【0011】
本発明は、さらに、前記データ抽出装置がリストチェック部を備えており、
前記リストチェック部が、前記リクエストフィルタ部によって特定されなかった所定数のHTTPペア群それぞれの参照元URLにおいて、所定メッセージ数内に重複する同一参照元URLが出現しなかったとき、その参照元URLが出現したHTTPペアを特定し、
前記データ抽出部は、前記リクエストフィルタ部および前記リストチェック部がそれぞれ特定したHTTPペアから、キーワードの文字列を抽出して、前記記憶手段に記憶することを特徴とする。
【0012】
これにより、リストチェック部が、リクエストフィルタ部が抽出していない、リファラが連続しないHTTPペアを抽出することで、リストチェック部を設けない構成に対して、さらに、正解であるWebページの閲覧履歴の抽出率を高めることができる。
【0013】
本発明は、さらに、前記記憶手段には、複数のHTTPペアを格納するためのデータ構造として、1つのHTTPペアを1つのエントリとし、エントリの格納位置をハッシュ関数によって特定する前記ハッシュマップが格納され、
前記ハッシュ関数は、エントリに含まれるハッシュキーを入力パラメータとする関数であり、そのハッシュキーには、前記リクエストフィルタ部が抽出する前記要求URLと参照元URLとをそれぞれ用いることを特徴とする。
【0014】
これにより、特に多くのHTTPペアを扱うデータ抽出装置にとって、各HTTPペアへのデータアクセスの高速化を実現することができる。例えば、リクエストフィルタ部は、連続する複数のHTTPペアにアクセスするときには、それらのHTTPペアの格納位置を、ハッシュ関数によって高速に特定する。
【発明の効果】
【0015】
本発明によれば、ユーザ嗜好解析に有効なWebページの閲覧履歴を高精度で抽出することができる。
【図面の簡単な説明】
【0016】
【図1】本発明の一実施形態に関するWebシステムを示す構成図である。
【図2】本発明の一実施形態に関する抽出情報データベースを示す構成図である。
【図3】本発明の一実施形態に関する嗜好情報データベースを示す構成図である。
【図4】本発明の一実施形態に関するトラフィック抽出装置における処理の概要である。
【図5】本発明の一実施形態に関するハッシュマップ(hashMap)のデータ構造を示す説明図である。
【図6】本発明の一実施形態に関するリクエストフィルタ部におけるフィルタリング手順を示すフローチャートである。
【図7】本発明の一実施形態に関するリストチェック部が実行する、HTTPリクエストチェック用処理を示すフローチャートである。
【図8】本発明の一実施形態に関するデータ抽出部が実行する、HTTPデータの抽出処理を示すフローチャートである。
【発明を実施するための形態】
【0017】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
【0018】
図1(a)は、Webシステムの概要を示す構成図である。Webシステムは、トラフィック抽出装置1(データ抽出装置)と、嗜好情報分析装置2と、ユーザ端末3と、Webサーバ4とを含めて構成される。これらのWebシステムの各装置は、CPUとメモリとハードディスク(記憶手段)とネットワークインタフェースを有するコンピュータとして構成され、このコンピュータは、CPUが、メモリ上に読み込んだプログラムを実行することにより、各処理部を動作させる。
ユーザ端末3から入力されたWebサーバ4へのHTTPリクエストは、トラフィック抽出装置1に入り、Webサーバ4へ送信される。そして、HTTPリクエストへの応答としてのWebサーバ4からのHTTPレスポンスは、トラフィック抽出装置1に入り、ユーザ端末3へ送信される。以下、HTTPリクエストと、その応答としてのHTTPレスポンスとの組を、HTTPペアと表記する。
【0019】
なお、HTTPペアが流れるネットワーク9は、例えば、インターネットサービスプロバイダのネットワークである。ここで、トラフィック抽出装置1を設置する場所として、ネットワーク9内だけでなく、社内Proxyなどを設置するインターネットゲートウェイなど、ユーザによるトラフィックを取得できる場所であればどこでもよい。
【0020】
トラフィック抽出装置1は、ユーザ端末3によるWebサーバ4の利用トラフィックとして、Webサーバ4へのHTTPリクエストとHTTPレスポンスを抽出する。なお、トラフィック抽出装置1は、入力トラフィックとして、HTTP用トラフィック(HTTPペア)だけでなく、P2P用トラフィックなどの他のネットワークトラフィックを扱ってもよい。
嗜好情報分析装置2は、トラフィック抽出装置1によるトラフィックの抽出結果から取得される嗜好情報をもとに、その分析処理を実行する。
【0021】
図1(b)は、トラフィック抽出装置1の詳細を示す構成図である。トラフィック抽出装置1は、トラフィック抽出部11と、嗜好情報抽出部12と、抽出情報データベース50と、嗜好情報データベース60とを有する。
【0022】
トラフィック抽出部11は、ユーザ端末3とWebサーバ4との間に位置し、市販のProxyやファイアウォールなどに用いられるディープパケットインスペクション(DPI)製品などにより実現される。トラフィック抽出部11は、ユーザ端末3とWebサーバ4との間のトラフィックに含まれる各パケットのペイロード内部までを展開し、そのフローパターンやパケットの振る舞いを分析することで、各パケットを扱うアプリケーションの識別を行う。
【0023】
トラフィック抽出部11は、文字情報(キーワード)をトラフィックから抽出するため、文字情報が記載されているWebページの通信に使用されるHTTPパケットを、ユーザ端末3とWebサーバ4との間のトラフィックから抽出する。トラフィック抽出部11は、具体的には、以下の手順(1)〜(4)により、HTTPペアを抽出して、嗜好情報抽出部12に出力する。
手順(1):HTTPリクエストのGET_URLの拡張子を参照して、該当するHTTPリクエストを除外する処理。除外する拡張子は、テキストファイル以外の情報(画像データなど)を含む拡張子であり、例えば、「jpg jpeg gif flv swf css js jsp ico png xls」である。
手順(2):HTTPリクエストのAcceptタグを参照して、該当するHTTPリクエストを除外する処理。Acceptに「image/*」が含まれるものを除外する。URLに.jpgなどの拡張子が無くても、Acceptタグにimage/pngなどと書かれている(htmlの<IMG src="url">をブラウザが実行するとAcceptタグを付けてHTTPリクエストを送信することを利用)。
手順(3):HTTPリクエストのHTTPメソッドがGET/POST以外のHTTPリクエストは、ユーザの嗜好情報抽出に無関係であるため、フィルタリングし除外する。
手順(4):前記の手順(1)〜手順(3)のいずれにも該当しない(除外されない)HTTPリクエストに対応するHTTPレスポンスを抽出する。例えば、HTTPリクエストのGET_URLの拡張子が無い場合や、拡張子「.cgi」や、拡張子「.html」は、キーワードが記載されている可能性があるトラフィックなので、除外しないようにする。
【0024】
嗜好情報抽出部12は、トラフィック抽出部11から入力されるトラフィックデータ(HTTPペア)に含まれるWebページの通信履歴や閲覧履歴などから、嗜好分析用情報を抽出し、嗜好情報データベース60(詳細は、図3参照)に書き出す。
なお、嗜好情報抽出部12は、ユーザ端末3とWebサーバ4との間のトラフィックデータについて、複数のユーザ端末3による個々のトラフィックデータが同時に流れることを考慮して、ユーザごとにトラフィックデータを抽出したデータを、抽出情報データベース50(詳細は、図2参照)へと書き出す。
嗜好情報データベース60は、嗜好情報として、閲覧したWebページの概要となるキーワードの集合や、ユーザごとの閲覧したWebページの遷移履歴、検索キーワード、投稿文章などの嗜好分析用情報を時系列に格納するデータベースである。
【0025】
嗜好情報抽出部12は、レスポンスフィルタ部13と、リクエストフィルタ部14と、リストチェック部15と、データ抽出部16とを含めて構成される。
【0026】
レスポンスフィルタ部13は、HTTPペアのHTTPレスポンスを用いたフィルタリングを行う。具体的には、レスポンスフィルタ部13は、HTTPレスポンスパケットのヘッダのContent-typeが「text/html」であるHTTPペアをリクエストフィルタ部14へ出力し、それ以外のContent-typeであるパケットは破棄する。
【0027】
リクエストフィルタ部14は、HTTPペアのHTTPリクエストを用いたフィルタリングを行う。具体的には、リクエストフィルタ部14は、ユーザが閲覧、遷移したURLを抽出するために、過去にHTTPリクエスト内のGETに含まれるリファラ(Referer)を抽出する。なお、リファラとは、「GET_URL」(要求URL)で指定されたWebページを参照している(指定されたWebページへリンクしている)WebページのURL(つまり、参照元URL)である。
そして、リクエストフィルタ部14は、直後の所定期間内に同じリファラを有するHTTPリクエストが複数連続で出現した場合(API呼出があった場合、他のページへの遷移があった場合など)、そのリファラが示すURLへユーザの閲覧対象が遷移したと判定する。
さらに、リクエストフィルタ部14は、リファラが無いHTTPペア(ブックマークなどからのアクセスを抽出するため)や、連続で出現したリファラが示すURLを「GET_URL」とするHTTPペア(複数のメッセージのうちの先頭のHTTPペア)を、嗜好情報データベース60に保存する(データ抽出部16に保存を指示する)。なお、本実施形態では「HTTPペア」のことを、適宜「メッセージ」とも呼ぶ。
そして、リクエストフィルタ部14は、入力されたHTTPペアを、後段のリストチェック部15へと出力する。
【0028】
リストチェック部15は、HTTPリクエストで同一リファラが複数して続かない場合でも、ユーザの閲覧対象が遷移したとみなすケースをチェックする。具体的には、リストチェック部15は、所定メッセージ数内に重複する同一リファラが出現しなかった場合、そのリファラが出現したメッセージのHTTPペアを、嗜好情報データベース60に保存する(データ抽出部16に保存を指示する)。
【0029】
データ抽出部16は、リクエストフィルタ部14およびリストチェック部15からそれぞれ入力されるHTTPペアから抽出したデータを、嗜好情報データベース60に保存する。
【0030】
図2は、抽出情報データベース50を示す構成図である。抽出情報データベース50は、ユーザ管理用マップ51と、ユーザ管理用構造体52と、URLマップ53と、リファラマップ54と、データ履歴構造体55とを含めて構成される。
【0031】
ユーザ管理用マップ51は、システムで1つ作成されるハッシュマップであり、0個以上のユーザ管理用構造体52をエントリとして格納する。ハッシュキーである「ユーザID」は、トラフィック抽出部11により渡されたHTTPペアに含まれる「From IP」ごとに設定するか、トラフィック抽出部11がユーザIDを設定し、嗜好情報抽出部12に引き渡してもよい。
ユーザ管理用構造体52は、システムのユーザごとに作成される構造体であり、2つのハッシュマップ(URLマップ53およびリファラマップ54)それぞれへのポインタから構成される。
【0032】
URLマップ53は、システムのユーザごとに作成されるハッシュマップであり、0個以上のデータ履歴構造体55をエントリとして格納する。URLマップ53は、ハッシュキー(URL)の衝突が発生すると、衝突したエントリ間をチェインすることで、ハッシュキーが衝突する複数のエントリを共に登録することを許可するハッシュマップである。
リファラマップ54は、システムのユーザごとに作成されるハッシュマップであり、0個以上のデータ履歴構造体55をエントリとして格納する。リファラマップ54は、エントリ間を前後それぞれのポインタで接続することにより、エントリ間の順序性を保持するハッシュマップである。
【0033】
データ履歴構造体55は、HTTPデータ(HTTPペア)を履歴情報として保持するための構造体であり、5つの要素(URL、リファラヘッダ、HTTPリクエスト、HTTPレスポンス、送信フラグ)から構成される構造体である。
「URL」は、HTTPリクエストからGETまたはPOSTで指定されるURLをパース(走査)したものである。
「リファラヘッダ」HTTPリクエストからリファラヘッダを取り出したものである。
「HTTPリクエスト」は、HTTPリクエストデータへのポインタである。
「HTTPレスポンス」は、HTTPレスポンスデータへのポインタである。
「送信フラグ」は、「0x00:未送信」または「0x01:送信済」のいずれかを示す。
【0034】
図3は、嗜好情報データベース60を示す構成図である。嗜好情報データベース60は、ユーザ嗜好ベクトルマップ61と、ユーザ嗜好ベクトル構造体62とを含めて構成される。
ユーザ嗜好ベクトルマップ61は、データ抽出部16による各ユーザのデータ抽出処理ごとのユーザ嗜好ベクトル構造体62をエントリとするハッシュマップであり、そのハッシュキーとしてHTTPリクエストのドメイン名から切り出したキーワードが設定される。
ユーザ嗜好ベクトル構造体62は、項目として、ユーザIDと、時刻と、キーワードと、HTTPリクエストカウンタと、HTTPレスポンスカウンタとを含む構造体である。
項目「時刻」は、1970年1月1日からの秒形式で示されるデータであり、キーワードの抽出時刻を示す。
項目「HTTPリクエストカウンタ」は、HTTPリクエストにキーワードが含まれていた場合にインクリメントするカウンタである。
項目「HTTPレスポンスカウンタ」は、HTTPレスポンスにキーワードが含まれていた場合にインクリメントするカウンタである。
【0035】
図4(a)は、トラフィック抽出装置1における処理の概要である。
以下の各手順が、図4(a)に記載されている丸数字で示されている。
手順(1)ユーザ(ユーザ端末3)が、WebサイトBをHTTPリクエストで要求する(Referer=A、GET_URL=B)。
手順(2)WebサイトBのデータ(htmlファイル)が、HTTPレスポンスで応答される。
手順(3)WebサイトBのhtmlファイルに含まれている各種リンク(Webページの画像や広告情報などを取得するためのリンク)それぞれについてのHTTPリクエストが発行されるが、キーワード抽出には不要なデータであるので、トラフィック抽出部11の抽出からは除外される(例えば、拡張子「jpg」の画像データなど)。
手順(4)WebサイトBのhtmlファイルに含まれているWebサイトCへのリンクにより、WebサイトCをHTTPリクエストで要求する(Referer=B、GET_URL=C)。
【0036】
リクエストフィルタ部14は、手順(1)の「GET_URL=B」の後に、手順(2)〜(4)の「Referer=B」が複数連続で出現した場合、手順(1)の「GET_URL=B」で指定される「WebサイトB」へ遷移したものとし、手順(1)および手順(2)のHTTPペアを嗜好情報データベース60に保存する。
【0037】
図4(b)は、嗜好情報抽出部12の処理概要を示す説明図である。嗜好情報抽出部12は、トラフィック抽出部11から入力されるHTTPペア(図4(b)の上の表に示すRequestメッセージとResponseメッセージとの組)のうちのRequestメッセージに着目する。
図4(b)の左下の吹き出し内で示したRequestメッセージには、RefererとGET_URLとが含まれている。リクエストフィルタ部14では、GET_URL「http://B.jp/」を含むHTTPペアの後に、Referer「http://B.jp/」を含むHTTPペアが複数回連続で出現しているので、GET_URL「http://B.jp/」を含むHTTPペアをデータ抽出対象とする。
なお、吹き出し内の表で示す例では、API呼出や、他のページへの遷移があった場合のみリファラが一致するため、最後に遷移したWebページは、抽出できない。そこで、同一のRefererが複数回連続で出現しない場合でも、以下に示す「抽出パケットの条件(3つの条件のうちのいずれかを満たす)」を設けることで、リクエストフィルタ部14およびリストチェック部15によるHTTPペアのデータ抽出対象とすることができる。
・Refererが無いメッセージ(ブックマークなどからのアクセス)
・Refererがある場合、かつ、所定メッセージ数内に同一Refererが出現した場合は先頭のメッセージのみ
・Refererがある場合、かつ、所定メッセージ数内にRefererが1つしかないメッセージ
一方、図4(b)の右下の表(トラフィック抽出部11に直接流入したリクエスト)においては、トラフィック抽出部11が、「GET_URL」の拡張子が「a.jpg」などの画像データであるときには、そのHTTPペアを嗜好情報抽出部12に出力しない旨が例示されている。
【0038】
図5は、ハッシュマップ(hashMap)のデータ構造を示す説明図である。ハッシュマップのデータ構造は、ユーザ管理用マップ51、URLマップ53、リファラマップ54、および、ユーザ嗜好ベクトルマップ61でそれぞれ用いられる。ハッシュマップのデータ構造を用いることにより、そのハッシュマップのエントリの検索処理や登録処理を、高速化することができる。
【0039】
図5の左側の「ハッシュEntity/ハッシュサイズn」と表記されている配列は、ハッシュ関数h1(z)の計算結果の値を配列の添字とする。配列の内容は、h1(z)の値に対応するハッシュEntry(以下、単にエントリとする)があるときには、そのエントリへのポインタであり、h1(z)の値に対応するエントリが存在しないときには「null」が初期値として設定されている。つまり、ハッシュ関数h1(z)は、エントリの格納位置を算出するためのハッシュ関数である。
【0040】
図5の右側の「ハッシュEntry」は、ハッシュマップに格納されるエントリを示す。1つのエントリは、「key_hash」、「key_data」、「time」、「value」、「next」、「before」、および、「after」の組み合わせとして定義される。
「key_hash」は、ハッシュ関数h2(z)により求められたハッシュ値である。
「key_data」は、ハッシュキーのデータであり、例えば、URLやリファラである。
「time」は、格納した時刻である。
「value」は、登録データであり、例えば、URLやリファラである。URLマップ53やリファラマップ54では、データ履歴構造体55を登録データとして格納する。
「next」は、次チェインへのポインタである。なお、key_hashの値が重複したときには、「next」を用いて、重複するエントリ間をポインタで接続することにより、key_hashの値が重複する複数のエントリを1つのハッシュマップに共存することを許可する。このチェインする特徴は、主に、URLマップ53にて使用される。
「before」は、前エントリへのポインタである。
「after」は、後エントリへのポインタである。なお、複数のエントリを、「before」と「after」とを用いて先頭から順に接続することにより、エントリの順序性を保持する。この順序性は、主に、リファラマップ54にて使用される。また、「before」および「after」で規定されるエントリ間の前後関係は、URLマップ53でチェインしている場合には、一番古い(一番前に位置する)エントリを検索して削除するために使用される。
【0041】
以下、嗜好情報抽出部12による、各データベース(抽出情報データベース50、嗜好情報データベース60)のハッシュマップに対するデータアクセスの内容について、以下の順に説明する。
(1)HTTPデータの追加処理(URLマップ53およびリファラマップ54に対して)
(2)HTTPデータの削除処理(URLマップ53およびリファラマップ54に対して)
(3)エントリの検索処理
【0042】
まず、(1)HTTPデータの追加処理を説明する。まず、2つのハッシュマップ(URLマップ53、リファラマップ54)で共通する追加処理の概要を示す。
キーをz、登録データをvとするとき、エントリの格納位置をハッシュ値h1(z)として求める。
格納されている値がnullの場合、エントリを格納する。このとき、格納するエントリのkey_hashはハッシュ関数h2(z)によって求められ、key_dataにz、valueに登録データv、next、before、afterをnullで設定する。
新たにキーをz’、登録データをv’としたとき、ハッシュ値h1(z’)がハッシュ値h1(z)と衝突したときは、ハッシュ値h2(z)を求め、エントリのkey_hashと比較する。
key_hashが等しいエントリが存在した場合は、key_dataを直接比較し同一キーか判断する。キーが重複していない場合は、チェインしている最後のエントリのnextに、衝突したデータを登録する。
ただし、エントリのtimeが指定値以上離れていた場合、登録内容を差し替えてデータを登録する。timeの設定は、設定ファイルにより指定される。
また、衝突時のチェイン数に上限を設け、上限を超える場合はエラーとして登録を行わない。最大チェイン数は設定ファイルにより指定される。
【0043】
以下が、ハッシュマップ個別の追加処理である。
URLマップ53へのデータ登録では、URLをkey_dataとし、URLマップ53へデータ履歴構造体55を登録する。key_dataを引数としてハッシュ関数h1からハッシュ値を求め、URLマップ53に登録を行う。登録の差異、キー(h1)が重複した場合は、エントリをチェインして管理する。
リファラマップ54へのデータ登録では、リファラをキーにリファラマップ54へデータ履歴構造体55を登録する。登録データは順序性を管理するため、前および後のエントリへのポインタをハッシュマップ内に保持する。キーが重複していた場合、エラーとして登録は行わない。
【0044】
次に、(2)HTTPデータの削除処理を説明する。まず、2つのハッシュマップ(URLマップ53、リファラマップ54)で共通する削除処理の概要を示す。
キーzの情報をハッシュマップから削除する場合、h1(z)によりエントリの格納位置を求め、格納されているエントリを解放し、nullを設定する。
ただし、エントリがチェインしている(衝突してエントリがリンクしている)場合は、h2(z)を求め、key_hashが等しいエントリを削除し、エントリのnextポインタを適切に再設定する。
【0045】
以下が、ハッシュマップ個別の削除処理である。
URLマップ53からのデータ削除では、URLをキーにURLマップ53を検索する。キーに該当するデータが存在した場合は、該当するエントリがチェインしているか判定する。チェインしていない場合は、そのエントリをそのまま削除する。そのエントリがチェインしている場合は、チェインしているエントリのより先頭に位置するエントリ(一番古い)の削除を行う。
リファラマップ54からのデータ削除では、リファラをキーにデータを検索し、該当するデータがある場合は、該当のエントリを削除する。この際、削除対象エントリの前および後にて管理しているポインタを更新する。
【0046】
そして、(3)エントリの検索処理を説明する。
キーをzとして検索を実行するとき、エントリの格納位置をハッシュ値h1(z)として求める。格納されている値がnull以外の場合は、エントリを求め、valueを返却する。ただし、エントリがチェインしている場合は、nextポインタのエントリを参照し、key_hashが等しいエントリが存在しないことを確認する。エントリが等しい場合は、key_data自体を比較し、正しいデータを判断する。
【0047】
図6は、リクエストフィルタ部14におけるフィルタリング手順を示すフローチャートである。
【0048】
S101において、リクエストフィルタ部14は、処理対象のユーザIDにおけるハッシュマップを特定する。具体的には、リクエストフィルタ部14は、トラフィック抽出部11より入力されたHTTPペアごとに設定されるユーザIDより、ユーザ管理用マップ51を検索する。
該当するユーザIDが存在した場合は、検索したユーザ管理情報よりURLマップ53とリファラマップ54とを用いて以降の処理を行う。
該当するユーザIDが存在しない場合は、新規ユーザIDのユーザ管理用構造体52と、そのユーザ管理用構造体52に対応する空の2つのハッシュマップ(URLマップ53とリファラマップ54)を生成し、ユーザ管理用マップ51へ登録する。
【0049】
S102において、トラフィック抽出部11から入力されたHTTPペアのHTTPリクエストパケットから、入力URL(GET_URLまたはPOST_URL)および入力リファラを抽出する。
S103において、入力リファラが抽出できたか否かを判定する。S103でYesならS104へ進み、Noならデータ履歴構造体55をデータ抽出部16に受け渡してHTTPデータの抽出処理(後記する図8の処理)を呼び出してから、S110へ進む。
S104として、入力リファラをキーにURLマップ53を検索する。つまり、URLマップ53のエントリであるデータ履歴構造体55から、入力リファラと一致するデータ履歴構造体55の「URL」項目を検索する。該当するデータ履歴構造体55が存在するときには、S105へ進み、該当するデータ履歴構造体55が存在しないときには、S107へ進む。
【0050】
S105として、S104で検索したデータ履歴構造体55の「送信フラグ」項目の値が「0x00:未送信」であるか否かを判定する。S105でYesならS106へ進み、NoならS107へ進む。
S106として、S104で検索したデータ履歴構造体55の「送信フラグ」項目の値を「0x01:送信済」に設定し、そのデータ履歴構造体55をデータ抽出部16に受け渡してHTTPデータの抽出処理(後記する図8の処理)を呼び出してから、S109へ進む。
【0051】
S107として、入力リファラをキーにリファラマップ54を検索する。つまり、リファラマップ54のエントリであるデータ履歴構造体55から、入力リファラと一致するデータ履歴構造体55の「リファラヘッダ」項目を検索する。該当するデータ履歴構造体55が存在するときには、S108へ進み、該当するデータ履歴構造体55が存在しないときには、S109へ進む。
S108として、S107で検索したデータ履歴構造体55をリファラマップ54から削除する。また、S104と同様に、入力URLをキーにURLマップ53を検索し、合致するデータ履歴構造体55をURLマップ53から削除する。
【0052】
S109として、トラフィック抽出部11から入力されたHTTPデータを未送信データとして(「送信フラグ」項目の値に「0x00:未送信」を設定して)、URLマップ53およびリファラマップ54へ登録し、リストチェック部15の処理を実行し、フローチャートを終了する。
S110として、トラフィック抽出部11から入力されたHTTPデータを送信済データとして(「送信フラグ」項目の値に「0x01:送信済」を設定して)、URLマップ53およびリファラマップ54へ登録し、リストチェック部15の処理を実行し、フローチャートを終了する。
【0053】
図7は、リストチェック部15が実行する、HTTPリクエストチェック用処理を示すフローチャートである。この処理では、同一リファラが複数続かない場合でも遷移を検出する。
【0054】
S121として、リファラマップ54のサイズ(格納するエントリ数)が最大リスト数を超過しているか否かを判定する。S121でYesならS122へ進み、Noならばなにもせずに本フローチャートを終了する(前記のように入力されたHTTPデータがリファラマップ54へ登録される)。なお、最大リスト数は、あらかじめシステム管理者などにより、所定値が設定されている。
S122として、リファラマップ54に格納されている最大リスト数を超過するHTTPデータ(データ履歴構造体55)の送信フラグが「未送信」か否かを判定する。S122でYesならS123へ進み、NoならS124へ進む。
S123として、未送信のHTTPデータをデータ抽出部16(後記する図8の処理)へ受け渡す。
S124として、リファラマップ54に格納されている最大リスト数を超過するHTTPデータを削除する。
【0055】
図8は、データ抽出部16が実行する、HTTPデータの抽出処理を示すフローチャートである。
【0056】
S201として、データ抽出部16は、リクエストフィルタ部14およびリストチェック部15からそれぞれ受け取ったHTTPリクエスト情報から、HTTPメソッドのHTTPリクエストURIを取得し、HTTPリクエストURIからドメイン情報(ドメイン名、キーワード)の抽出を行う。
例えば、HTTPリクエストURI「http://www.hogehoge.foo.co.jp/」からドメイン情報として、ドメイン名「hogehoge.foo」を抽出し、さらにそのドメインから2つのキーワード「hogehogeとfoo」)を抽出する。
まず、HTTPリクエストURIからドメイン名の切り出し処理として、あらかじめ設定ファイルに登録されている除外キーワード「http://www.」および「.co.jp/」をHTTPリクエストURIから抽出して除外する。
次に、ドメイン名からキーワードの切り出し処理は、ドメイン名を.(ドット)で分割したものをキーワードとすることで実現できる。
【0057】
S202として、データ抽出部16は、S201で抽出されたキーワードを、嗜好情報データベース60(図3参照)に登録する。そのため、データ抽出部16は、ユーザ嗜好ベクトルマップ61を作成し、そのユーザ嗜好ベクトルマップ61のエントリであるユーザ嗜好ベクトル構造体62の「キーワード」項目に抽出されたキーワードに登録するとともに、同じユーザ嗜好ベクトル構造体62の「HTTPレスポンスカウンタ」項目の数値をインクリメントする。
【0058】
データ抽出部16は、以下に示すS211〜S217の処理において、HTTPリクエストからキーワードを抽出して、嗜好情報データベース60に登録する。
S211として、HTTPリクエストURIからクエリを抽出する。クエリの抽出処理は、具体的には、HTTPリクエストURIの先頭から’?’を探索し、その後に現れる文字列をクエリとすることで実現できる。
S212として、S211で抽出したクエリを「&」をキーにして分割する。これをarray[n-1](nは分割数)の配列へ格納する。
S213として、array[]の配列要素を先頭から[n-1]番目まで1つずつ順に選択する。以下、現在選択している配列要素をarray[i]とする。
S214として、array[i]の文字列と、設定ファイルの文字列とが一致するか否かを判定する。一致しない場合は、S213に戻って、次の要素を選択する(iをインクリメント)。一致するときには、S215へ進む。
S215として、array[i]の文字列を「=」にて分割し、key(左辺)とvalue(右辺)との組とする。さらに、valueに「%」が含まれていた場合は、URLデコードを行う。
S216として、S215の文字列に対して、文字コード変換を行う。文字コード変換に失敗した場合は、失敗したキーワードは無効とする。
S217として、S216で得られたvalueをキーワードとして嗜好情報データベース60に登録する。つまり、データ抽出部16は、ユーザ嗜好ベクトルマップ61からキー(得られたvalue)に該当するユーザ嗜好ベクトル構造体62を検索する。検索できたときには、該当するユーザ嗜好ベクトル構造体62のHTTPリクエストカウンタをインクリメントする。検索できないときには、ユーザ嗜好ベクトル構造体62を生成しHTTPリクエストカウンタを「1」として、ユーザ嗜好ベクトルマップ61に登録する。
【0059】
データ抽出部16は、以下に示すS221〜S222の処理において、HTTPレスポンスからキーワードを抽出して、嗜好情報データベース60に登録する。
S221として、HTTPレスポンスのhtmlファイルに含まれるWebページの概要を把握するために、html内metaタグのkeywordに含まれる単語を抽出する。多くのWebページにはmetaタグのkeywordに、各Webページを検索エンジンの上位にするためのキーワードが人為的に埋め込まれており、これを抽出することで、Webページの概要を把握する。
S222として、S221で抽出したキーワードを嗜好情報データベース60に登録する。つまり、データ抽出部16は、ユーザ嗜好ベクトルマップ61からキー(S221で抽出したキーワード)に該当するユーザ嗜好ベクトル構造体62を検索する。検索できたときには、該当するユーザ嗜好ベクトル構造体62のHTTPレスポンスカウンタをインクリメントする。検索できないときには、ユーザ嗜好ベクトル構造体62を生成しHTTPレスポンスカウンタを「1」として、ユーザ嗜好ベクトルマップ61に登録する。
【0060】
以上説明した本実施形態では、トラフィック抽出装置1は、トラフィック(HTTPリクエスト、HTTPレスポンス)が入力されると、入力されたトラフィックからユーザの嗜好情報に必要な情報を高速にフィルタリング(抽出)する。
トラフィック抽出装置1は、ネットワークトラフィックに含まれる各種データ(P2P、FTP、メディアデータ、テキストデータ)から、HTTPによるサイトアクセスに含まれるテキストデータを取得する。テキストデータは、容易に取得できてデータ量も少ない上、意味情報として加工もしやすい。
つまり、トラフィック抽出装置1は、ユーザ端末3による一般的な検索行動やWebページのアクセスから、ユーザの嗜好情報を判別する前のトラフィックフィルタリングを行う。さらに、嗜好情報分析装置2は、トラフィック抽出装置1の抽出結果を分析する。
これにより、サービスプロバイダは、嗜好情報分析装置2の分析結果を参照することで、トラフィック抽出装置1のユーザに対するターゲッティング広告などのサービスに二次利用することができる。
【0061】
ここで、トラフィック抽出装置1の各処理部(トラフィック抽出部11、嗜好情報抽出部12)は、HTTPの中でもユーザの嗜好に関係するWebページ遷移情報や、アクセス先Webページの概要を知るために、扱うトラフィックを削減する。そこで、ユーザのHTTPアクセスを抽出し、解析データを削減する。
まず、リクエストフィルタ部14は、ユーザが遷移したURLを抽出するために、HTTPリクエスト発生時にGETに含まれる参照元URLを抽出し、直後にそのURLを参照元とするHTTPリクエストが複数連続で出現した場合、そのURLへ遷移したものとする。このことで、あるユーザが遷移したURLに絞ってHTTPペアを抽出することができる。
次に、リストチェック部15は、同一リファラが複数続かない場合でも遷移したとみなすケースをチェックする。これにより、最後に遷移したWebページを抽出できるため、高速にユーザの試行に関連する情報を抽出することが可能となる。
【符号の説明】
【0062】
1 トラフィック抽出装置(データ抽出装置)
2 嗜好情報分析装置
3 ユーザ端末
4 Webサーバ
11 トラフィック抽出部
12 嗜好情報抽出部
13 レスポンスフィルタ部
14 リクエストフィルタ部
15 リストチェック部
16 データ抽出部
50 抽出情報データベース
51 ユーザ管理用マップ
52 ユーザ管理用構造体
53 URLマップ
54 リファラマップ
55 データ履歴構造体
60 嗜好情報データベース
61 ユーザ嗜好ベクトルマップ
62 ユーザ嗜好ベクトル構造体

【特許請求の範囲】
【請求項1】
Webページを要求するためのHTTPリクエストと、そのHTTPリクエストへの応答であるHTTPレスポンスとの組であるHTTPペアからデータを抽出するデータ抽出装置であって、
前記データ抽出装置は、トラフィック抽出部と、レスポンスフィルタ部と、リクエストフィルタ部と、データ抽出部と、記憶手段とを備えており、
前記トラフィック抽出部は、入力されるHTTPペアから、そのHTTPペアの前記HTTPリクエストにテキスト以外の種別を示すキーワードが含まれているHTTPペアを除外した残りのHTTPペアを抽出し、
前記レスポンスフィルタ部は、前記トラフィック抽出部が抽出したHTTPペアから、そのHTTPペアの前記HTTPレスポンスにテキストの種別を示すキーワードが含まれているHTTPペアを抽出し、
前記リクエストフィルタ部は、前記レスポンスフィルタ部が抽出した各HTTPペアから、そのHTTPペアの前記HTTPリクエストに含まれるWebページの所在を示す要求URLと、そのWebページの参照元であるWebページの所在を示す参照元URLとを抽出し、
その抽出処理において、参照元URLが抽出できなかった各HTTPペアと、
連続するHTTPペア内に重複する同一参照元URLが出現したとき、その参照元URLと一致する前記要求URLを含むHTTPペア群のうちの先頭のHTTPペアとを特定し、
前記データ抽出部は、前記リクエストフィルタ部が特定したHTTPペアから、キーワードの文字列を抽出して、前記記憶手段に記憶することを特徴とする
データ抽出装置。
【請求項2】
前記データ抽出装置は、さらに、リストチェック部を備えており、
前記リストチェック部は、前記リクエストフィルタ部によって特定されなかった所定数のHTTPペア群それぞれの参照元URLにおいて、所定メッセージ数内に重複する同一参照元URLが出現しなかったとき、その参照元URLが出現したHTTPペアを特定し、
前記データ抽出部は、前記リクエストフィルタ部および前記リストチェック部がそれぞれ特定したHTTPペアから、キーワードの文字列を抽出して、前記記憶手段に記憶することを特徴とする
請求項1に記載のデータ抽出装置。
【請求項3】
前記記憶手段には、複数のHTTPペアを格納するためのデータ構造として、1つのHTTPペアを1つのエントリとし、エントリの格納位置をハッシュ関数によって特定する前記ハッシュマップが格納され、
前記ハッシュ関数は、エントリに含まれるハッシュキーを入力パラメータとする関数であり、そのハッシュキーには、前記リクエストフィルタ部が抽出する前記要求URLと参照元URLとをそれぞれ用いることを特徴とする
請求項1または請求項2に記載のデータ抽出装置。
【請求項4】
Webページを要求するためのHTTPリクエストと、そのHTTPリクエストへの応答であるHTTPレスポンスとの組であるHTTPペアからデータを抽出するデータ抽出装置によるデータ抽出方法であって、
前記データ抽出装置は、トラフィック抽出部と、レスポンスフィルタ部と、リクエストフィルタ部と、データ抽出部と、記憶手段とを備えており、
前記トラフィック抽出部は、入力されるHTTPペアから、そのHTTPペアの前記HTTPリクエストにテキスト以外の種別を示すキーワードが含まれているHTTPペアを除外した残りのHTTPペアを抽出し、
前記レスポンスフィルタ部は、前記トラフィック抽出部が抽出したHTTPペアから、そのHTTPペアの前記HTTPレスポンスにテキストの種別を示すキーワードが含まれているHTTPペアを抽出し、
前記リクエストフィルタ部は、前記レスポンスフィルタ部が抽出した各HTTPペアから、そのHTTPペアの前記HTTPリクエストに含まれるWebページの所在を示す要求URLと、そのWebページの参照元であるWebページの所在を示す参照元URLとを抽出し、
その抽出処理において、参照元URLが抽出できなかった各HTTPペアと、
連続するHTTPペア内に重複する同一参照元URLが出現したとき、その参照元URLと一致する前記要求URLを含むHTTPペア群のうちの先頭のHTTPペアとを特定し、
前記データ抽出部は、前記リクエストフィルタ部が特定したHTTPペアから、キーワードの文字列を抽出して、前記記憶手段に記憶することを特徴とする
データ抽出方法。
【請求項5】
前記データ抽出装置は、さらに、リストチェック部を備えており、
前記リストチェック部は、前記リクエストフィルタ部によって特定されなかった所定数のHTTPペア群それぞれの参照元URLにおいて、所定メッセージ数内に重複する同一参照元URLが出現しなかったとき、その参照元URLが出現したHTTPペアを特定し、
前記データ抽出部は、前記リクエストフィルタ部および前記リストチェック部がそれぞれ特定したHTTPペアから、キーワードの文字列を抽出して、前記記憶手段に記憶することを特徴とする
請求項4に記載のデータ抽出方法。
【請求項6】
前記記憶手段には、複数のHTTPペアを格納するためのデータ構造として、1つのHTTPペアを1つのエントリとし、エントリの格納位置をハッシュ関数によって特定する前記ハッシュマップが格納され、
前記ハッシュ関数は、エントリに含まれるハッシュキーを入力パラメータとする関数であり、そのハッシュキーには、前記リクエストフィルタ部が抽出する前記要求URLと参照元URLとをそれぞれ用いることを特徴とする
請求項4または請求項5に記載のデータ抽出方法。
【請求項7】
請求項4ないし請求項6のいずれか1項に記載のデータ抽出方法を、コンピュータである前記データ抽出装置に実行させるためのデータ抽出プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−170597(P2011−170597A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−33528(P2010−33528)
【出願日】平成22年2月18日(2010.2.18)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】