JP2007122398A - フラグメントの同一性判定方法およびコンピュータプログラム - Google Patents

フラグメントの同一性判定方法およびコンピュータプログラム Download PDF

Info

Publication number
JP2007122398A
JP2007122398A JP2005313518A JP2005313518A JP2007122398A JP 2007122398 A JP2007122398 A JP 2007122398A JP 2005313518 A JP2005313518 A JP 2005313518A JP 2005313518 A JP2005313518 A JP 2005313518A JP 2007122398 A JP2007122398 A JP 2007122398A
Authority
JP
Japan
Prior art keywords
fragment
url
fragments
link
identity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005313518A
Other languages
English (en)
Inventor
Kenichi Nakamura
健一 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to JP2005313518A priority Critical patent/JP2007122398A/ja
Publication of JP2007122398A publication Critical patent/JP2007122398A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】URLが異なるWebページについて、ページ内容の全部又は一部が同一か否かを判定する手段としてフラグメントという概念を導入し、このフラグメントの同一性を判定する方法を提供する。
【解決手段】内容の異同を判定したいWebページのURLリストを入力情報とし、各URLを指定して該当ページのHTML文書を取得し、各HTML文書から抽出したフラグメントのそれぞれを3つのサブフラグメントに分割し、この3サブフラグメントとURL文字列とを判定要素とすることによって、異なるフラグメント同士の同一性の有無を判定する。判定結果に基づいて、正規化されたフラグメント情報を生成する。この正規化フラグメント情報は、Webページの全部又は一部の内容の異同を推定するために利用することができる。
【選択図】図1

Description

URLが異なるWebページについて、ページ内容の全部又は一部が同一か否かを判定するための方法に関する。
インターネット上には、大量のWebページが存在し、あるWebページから他のWebページへのリンクを張ることが広く行われている。あるWebページにアクセスした閲覧者は、そのWebページに張られたリンクをたどって別のWebページへアクセスし、そのアクセス先のWebページもまた、別のWebページへのリンクを張っていると、そのWebページへアクセスするというように、次々とWebページを閲覧していくことができる。
また、Webブラウザとサーバとの通信プロトコルであるHTTPには、リファラーと呼ばれる情報が規定されている。このリファラー情報を利用すると、リンク先ページへのリンクを張っているリンク元ページのURL(Uniform Resource Locator)を認識することが可能である。このリファラー情報を利用して、自己をリンク先とするリンク元一覧の表示を行うWebページも出現し、この一覧から適当なURLを指定して、そのリンク元のページを閲覧することもできる。
なお、本出願人が、URL:http://sourceforge.jp/projects/refererhound/にて公開しているプログラムも、このリファラー情報を利用している。
このようなリンク元一覧を表示することは、たいへん便利なものであり、共通の関心を持つ者同士の交流手段や、広告宣伝手段としてのインターネットの可能性を広げるものである。
しかし、現行のリンク元一覧表示には、いくつかの問題がある。この問題について、図14、図15を参照しながら、説明する。
問題点の第一は、リンク元のURLを偽ることが可能であるということである。
例えば、ある邪悪な意図をもったクライアント103aが、スパムを使って宣伝しているようなサイト102aをリンク元としてWebサイト101にアクセスしてきたように装うことが可能である。リンク先サイト101では、このリンク元サイト102aのURLをリンク元一覧に掲載することもありうる(図15のURL104)。その場合、このような事情を知らずに当該サイト101にアクセスしてきたクライアント103bは、リンク元一覧にあるサイト102aへアクセスしてしまう、といったおそれがある。もし、そのサイト102aが、例えば、非合法なドラッグを販売するようなサイトであったならば、リンク先サイト101の評判まで落としかねない。
第二の問題点は、通常、一つのWebページは複数のURL、すなわち別名を持つということである。
たとえば、Webブラウザ上で、次の5つのURLのどの1つを指定しても、サイト102bの同じWebページが得られるものとする。
http://www.web_2b.com
http://web_2b.com
http://www.web_2b.com/index.html
http://web_2b.com/index.html
http://214.*.*.*(サイト102bのIPアドレス)
閲覧者が、このリンク元サイト102bの同一ページを介してサイト101にアクセスしてきた場合、上記のリファラー情報を利用すると、リンク先101は、すべて異なるWebページであると認識し、重複してリンク元一覧に載せてしまいかねない(図15のURL105)。そのため、リンク先101にアクセスしてきた閲覧者は、リンク元一覧に掲載されているのは、それぞれ異なるWebページであると勘違いをした結果、同じ内容のWebページに何度もアクセスすることもありうる。
また、事実上同一のWebページが重複して掲載されてしまうと、リンク元一覧が膨大となって極めて見にくいWebページとなり、閲覧者の不便を招くことになる。
この別名の問題点は、目下、大流行の兆しが見えるWebログ(以下「ブログ」という)において特に重大である。このブログでは、複数の異なるページに同一の記事が含まれ、それらの複数ページは、みな異なるURLをもつからである。
第1の問題を解決するためには、リンク元102aのWebページに、自己のサイト101に含まれるページへのリンクが存在するか否かを確認すればよい。もし存在しないならば、そのリファラー情報は虚偽であるので、そのリンク元102aのURLは、リンク元一覧に載せないようにすることで問題の解決が図られる。
第2の問題、すなわち、同一Webページが複数のURLを持つという問題を解決するためには、リンク元のURLを指定することによりリンク元ページのHTML文書を入手し、このHTML文書の内容から、すでにリンク元一覧に掲載済みのWebページと同一内容のWebページか否かを判定すればよい。そして、URLが異なっていても、ページ内容が同一であれば、掲載済みと判定し、リンク元一覧には載せないようにすることで問題が解決できる。
本発明は、上記の問題解決のためにフラグメントという概念を導入し、このフラグメントの同一性判定結果を、比較されるWebページ同士の全部又は一部の異同の推定に役立てようとするものである。この点では、URL:http://sourceforge.jp/projects/refererhound/にて公開しているプログラムも同様である。
しかし、インターネット上には膨大な量のサイトが、相互にリンクを張り巡らしている現状を考えると、このようなフラグメントの異同判定処理に伴う計算量は無視できない。
そのため、本発明は、この計算量を削減し、上記の問題解決手段を実用に耐え得るものとすることも目的とする。
また、計算量を削減しようとすると精度が低下しがちである。そのため、異なるフラグメントを同一と判定したり(第一種の過誤)、同一フラグメントを異なるものと判定したり(第二種の過誤)することを極力回避する手段を講じることも目的とする。
なお、本発明は、第二の問題を解決する手法の提供が主眼であるが、判定処理の過程から、第一の問題の解決手段も提供している。
このような目的を達成するために、請求項1に記載の発明の方法は、インターネットと接続可能なコンピュータが、インターネット上で公開されているWebページの任意個数のURLを入力情報とするステップと、前記の各URLに対応するWebページのHTML文書を取得するステップと、取得した各HTML文書から、リンク要素周辺の文字情報であるフラグメントを抽出するステップと、抽出した各フラグメントを、リンク要素直前の前フラグメント、リンク要素内部の中フラグメント、およびリンク要素直後の後フラグメントに3分割するとともに、これらの分割された3種類のサブフラグメントに、該フラグメントを含むHTML文書に対応するURLの文字列を加えた4つを判定要素とするステップと、或るフラグメントの4つの判定要素のそれぞれについて、他のフラグメントの対応する判定要素との類似度を算出するステップと算出された4つの類似度を総合的に評価した結果に基づいて、フラグメント同士の同一性の有無を判定するステップと、前記同一性判定結果に基づいて、正規化されたフラグメント情報を生成し、出力するステップ、とからなることを特徴とする。
「リンク元WebページのURLを取得」するために、通信プロトコルHTTPに規定されているリファラー情報を利用する。この情報によって、コンピュータは、リンク元のURLを認識できる。ただし、本発明にとって不可欠であるのは、リファラー情報ではなく、リンク元Webページを探し出す手段である。このような手段のひとつがリファラー情報であるが、他にも、現在広く普及している検索エンジンには、リンク元ページを探し出す機能を有するものもあり、これを利用してもよい。
「HTML文書」とは、Webページを記述したファイルであって、Webブラウザによって読み込まれ、画面にWebページとして表示されるものをいう。このようなファイルは、HTMLで記述されているものが多いので、「HTML文書」と表現する。
「リンク要素」とは、Webページ上にリンクを作り出す要素をいう。代表的なリンク要素としては、HTML文書において、対をなす<A>タグで始まり、</A>タグで終了する文字列があるが、JavaScript(登録商標)を用いてリンクされているものもリンク要素として判別される。
「フラグメント」とは、リンク要素周辺の文字情報を単純な文字列として抽出して得た一つのまとまりであって、抽出すべき全体の文字数や、タグの前後の文字数は任意に決めればよい。
本発明では、フラグメントを、<A>タグの前か、タグの内側か、</A>タグの後かによって、前フラグメント、中フラグメントおよび後フラグメントの3つのサブフラグメントに分割する。
なお、以下の説明において、サブフラグメントに分割する前のフラグメント、及びサブフラグメントの両者を区別しないで、単に「フラグメント」ということもある。
フラグメントは、本発明の基本となる概念である。このフラグメントを利用した判定方法の特徴は、意味を解釈するのではなく、単なる文字列の一致・不一致を判定するという点にある。たとえば、「明るい」と「あかるい」は同一でないと判定する。これは、字面を見るだけであって、文字列の意味まで考慮していないからである。
なお、リンク要素は、一つのHTML文書に複数ありうる。或る一つのリンク先に着目し、このリンク先にリンクを張っているリンク元を抽出したい場合は、自己(=リンク先)のURL文字列を、URLの値として持つリンク要素のみを本発明の処理対象としてもよい。しかし、特定のリンク先に着目することなく、インターネット上で張り巡らされている複数のリンク元・リンク先についてのフラグメント情報を得ようとするのが目的であれば、一つのHTML文書内のすべてのリンク要素を処理対象とすればよい。
「正規化されたフラグメント情報」とは、次の2つの条件(条件1)と(条件2)を満たしているフラグメント情報のことである。すなわち、(条件1)は、フラグメントの同一性を判定した結果、互いに一致するフラグメントが重複出現しないこと、(条件2)はこれらの重複のないフラグメントが、それを含むWebページのURLと多対多で対応していることである。
このように、請求項1に記載の発明によれば、HTML文書の中からフラグメントを取り出し、他のHTML文書中のフラグメントとの異同を比較し、このフラグメントの比較結果によって、Webページの全部又は一部の異同を推定できる。HTML文書全体ではなく、フラグメントの同一性の有無のみを判定すればよいので、計算量が削減される。しかも、フラグメントを3つに分け、比較的文字数の少ない文字列同士について別個に類似度の評価をするので、一層計算量が削減される。また、URL文字列同士の類似性も加味することで、判定の精度も向上する。
なお、http://sourceforge.jp/projects/refererhound/において公開されているプログラムも、本発明と同様、リンク要素周辺の文字情報を単純な文字列として抽出し、その同一性の評価によってリンク元の重複を防いでいる。しかし、このプログラムにおいては、リンク要素周辺の文字情報はサブフラグメントに分割されず、一続きのままで同一性を評価している。このため、本発明の方法と同程度の精度で同一性評価を行うには、本発明の方法に比べて140〜300%の計算量を要する。
また、上記した目的を達成するために、前フラグメントと後フラグメントのそれぞれを構成する要素については、リンク要素からの距離に応じて重み付けを行い、類似度の評価をすることとしてもよい。
これにより、類似度評価の精度が向上する。なぜならば、リンク要素から離れるに従って、それがノイズ成分である可能性が高く、重み付けによって、ノイズ成分を低く評価できるからである。なお、「ノイズ成分」とは、リンク要素と意味的なつながりのない文字列のことをいう。
フラグメントを構成する「要素」とは、文字あるいは部分文字列をいう。
さらに、3種類の各サブフラグメントの一致・不一致を評価するためのしきい値の決定に際し、比較される各フラグメントのURL文字列同士の類似度を利用するようにしてもよい。この場合、前フラグメント、中フラグメントおよび後フラグメントの3種類のサブフラグメントのうち、少なくとも2種類以上が一致すると判定された場合に、同一性のあるフラグメントであると判定するようにしてもよい。
これにより、サブフラグメントだけでなくURL文字列も含む4つの要素についての類似度を総合的に評価するので、フラグメント同士の同一性評価の精度が向上する。
上述のフラグメント同士の同一性判定機能を、コンピュータに実現させるためのコンピュータプログラムも本発明である。
アクセス回数の多いWebページには大量のリンク元が存在する。これらのリンク元の重複チェックのためには、リンク元WebページのHTML文書を既知のリンク元HTML文書と比較しなければならない。本発明は、Webページ全体を比較することなく、HTML文書から抽出したフラグメントの同一性を判定することにより、この比較のための計算量を大幅に削減し、重複チェックを実用に耐えるものとすることができる。
一般的に、計算量の削減と精度とはトレードオフの関係にあるが、本発明は、精度の低下を抑制できる。
(1)本発明の実施形態であるシステム例の構成
図1に従い、本発明を実施するシステム例を説明する。
コンピュータ1は、インターネットNに接続可能であり、インターネットNに接続するWebサーバ2等の他のコンピュータと情報の送受信を行うものである。
コンピュータ1は、インターネットN上に張り巡らされたリンクのリンク元及びリンク先のURLリスト3を入手できる。この入手方法は、リファラー情報の利用によるものでも、現在普及している各種検索エンジンから提供を受けるものでも何でもよい。コンピュータ1は、前記のURLリスト3を入力とし、フラグメントの異同判定処理を行った結果を、正規化フラグメント情報4として出力する。
なお、リンク先およびリンク元のWebサイトには、個人が公開するブログなども含まれる。
コンピュータ1は、図2に示すように、処理部5、記憶部6、インタフェース部7を備え、他に図示しない入力部や出力部も備えている。
記憶部6は、本発明をコンピュータ1に実施させるためのプログラムPROGを記憶したプログラム格納部8、URLリスト格納部9、抽出フラグメントテーブル格納部10、正規化フラグメント情報格納部11を備え、他に各種パラメータなども記憶する。
URLリスト格納部9は、入力されたURLリスト3を記憶しておくものであり、フラグメント同一性判定処理の間のみ記憶するものであってもよい。
抽出フラグメントテーブル格納部10は、HTML文書から抽出したフラグメントを3分割したサブフラグメント及びURLを記憶するものであり、フラグメント同一性判定処理の間のみ記憶するものであってもよい。
正規化フラグメント情報格納部11は、出力結果である正規化フラグメント情報4を記憶するものである。なお、記憶部6は、各種補助記憶装置やROM,RAMなどによって実装されている。
処理部5は、プログラム格納部8からプログラムPROGをメモリ上に読み込み、このプログラムPROGの命令コードを実行する。処理部5は、図示しないCPUで実現される。
インタフェース部7は、外部との信号の送受信を行う。
(2)本発明による判定処理の概要
上記のシステム構成のもと、コンピュータ1によって、比較対象となるフラグメントの同一性の有無が、どのように判定されるかについて、図3の処理フローに従い、説明する。
コンピュータ1に0個以上のリンク先のURLと、1個以上のリンク元のURLが列挙されたURLリスト3が入力される(ステップS1)。コンピュータ1は、URLリスト3を参照し1個ずつリンク元のURLを取り出し、当該URLを指定して、Webページ閲覧要求をし、当該ページのHTML文書を入手する(ステップS2)。
このHTML文書からリンク先のURL文字列を検索する(ステップS3)。
具体的には、HTML文書中に、リンク先のURL文字列が、リンク要素のURLの値として出現するか否かを検索する。
リンク先のURL文字列が見つからなければ(ステップS4でNo)、このURLに対応するサイトは虚偽のリンク元であると判断して、このURL文字列についてのフラグメント抽出処理をスキップする。リンク先とは無関係のWebページを対象に、フラグメントの正規化を行っても意味がないからである。
リンク先のURL文字列が見つかれば(ステップS4でYes)、そのリンク要素周辺の文字情報を取り出す(ステップS5)。取り出された文字情報が、本発明のフラグメントである。取り出されたフラグメントを3種類のサブフラグメントに分割し、これらのサブフラグメントをURL文字列とともに抽出フラグメントテーブル格納部10に登録する(ステップS6)。図4に、このテーブルへの登録例を示す。
このようにして、すべてのリンク元URLに対応するHTML文書から、リンク先URLを含むフラグメントをすべて取り出す。
次に、抽出された各フラグメントについてステップS7からS8の処理を行う。ある一つのフラグメントに着目し、比較対象となるフラグメントを取り出す(ステップS7)。
比較対象となるのは、異なるURLに対応したHTML文書に含まれ、かつ、同一のリンク先を持ち、しかも、未だ同一性判定がなされていないフラグメントである。
比較対象たりうるフラグメントが取り出されると、同一性判定処理を行う(ステップS8)。この処理の内容については、後に詳しく説明する。
上記の同一性判定結果に基づき、フラグメント情報の正規化を行う(ステップS9)。この正規化の処理は、ステップS9のように、全フラグメントについての同一性判定を終了してから行ってもよいが、ステップS6からS7のループの中で、逐次行ってもよい。
なお、これを後の処理等で活用するために、正規化フラグメント情報格納部11に記憶する。
ここで、ステップS9のフラグメントの正規化について、具体例を挙げて説明する。
図5に示すように、リンク元のURLとして、URL_A、URL_B及びURL_Cの3つがあり、URL_Aに対応するHTML文書には、リンク先URLを含むフラグメントA1、A2,A3の3つがあり、URL_Bに対応するHTML文書には、フラグメントB1,B2,B3の3つがあり、URL_Cに対応するHTML文書には、フラグメントC1、C2の2つがあるものとする。図5の同一性判定結果欄の記号が同じものは、互いに同一性があると判定されたフラグメントである。
この例では、図6に示すように、互いに同一性のないフラグメントのグループが4つある。
第1のグループを、フラグメントA1で代表させるならば、フラグメントB2は不要の情報となる。同様に、第2のグループを、フラグメントA2で代表させると、フラグメントB1とフラグメントC2は不要の情報となり、第3のグループを、フラグメントB3で代表させると、フラグメントC1は不要の情報となる。
なお、どのフラグメントで代表させるかについての基準として、例えば、次の(a)、(b)が考えられる。すなわち、(a)そのフラグメントに対応するリンク元からの訪問者数が所定時間(例えば、過去24時間)内で、一番多いフラグメント、(b)最後に存在を確認してからの時間がもっとも短いフラグメントである。
(a)の基準で一つに決まれば、そのフラグメントを残すことになるが、もし、決まらなければ、(b)の基準で決めることになる。
このような、正規化処理の結果を図7に示す。この例からもわかるように、正規化処理の結果は、フラグメントとURLとの対応は一般に多対多となる。なお、1対1、1対多、多対1対応を含むことは言うまでもない。
図7で例示するような多対多の対応を、正規化フラグメント情報格納部11に格納する際のデータ構造は、実装レベルの問題であり、特に限定しない。ただし、フラグメントには、図7の括弧内に示すように、代表されるフラグメントが含まれていたHTML文書のURLも併せて登録する。その理由は、フラグメント間の同一性判定には、後述するように、URL文字列の類似度を組み込んでいるからである。もし、正規化したときに、URLも登録しておかないと、いったん正規化した後に見つかったフラグメントとの間で、URL文字列を含めた判定ができなくなる。
以上の処理の結果、あるWebページをリンク先とするリンク元のフラグメントの同一性が判定できた。同一性あるフラグメントを有するWebページ同士は、全部または一部の内容が一致すると推定できる。そのため、正規化フラグメント情報を参照することによって、リンク元一覧には、内容が重複するWebページのURLを重複掲載しないようにすることができる。図7の例では、URL_BとURL_CのWebページは、URL_AのWebページと内容的な重複があると推定されるので、URL_Aだけをリンク元一覧に掲載すればよい。
なお、Webページでは、リンク元一覧に、ユーザに示すためのテキストを記述することがある。このテキストは、本発明のフラグメントとは無関係である。フラグメントは、類似性評価用の情報にすぎず、ユーザにどのようなテキストを示すかは、別の問題である。
以上、本発明によるフラグメントの同一性判定方法の概要を説明した。
しかし、以上の説明は、あくまで例示である。URLリストを入力とし、正規化フラグメント情報を出力する処理を、少ない計算量で、かつ、必要十分な精度で行うことが本質であって、この処理のための具体的なシステム構成等の実装は限定されるものではない。
以下、フラグメントの抽出と、類似度評価の手法について詳しく説明する。
(3)本発明による判定処理の詳細
(3−1)フラグメントの抽出
自己のURL文字列を、URLの値としてもつリンク要素の周辺から取り出した文字情報をフラグメントとすることは既に述べたが、具体例をあげて詳細に説明する。
文字情報12として、図8のように、
abc<a href="http://wwww.xaybzc.co.jp/"target="_blank">def</a>ghi
が取り出せたとする。HTMLのタグ部分13を除いた“abcdefghi”をフラグメントとするのも一つの方法である。あるいは、タグ部分13の内部の属性値14を取り出し、“abc_blankdefghi”をフラグメントとするのもよい。
ここで重要なのは、リンク元のWebページ全体(HTML文書全体)の同一性を判別するのではなく、フラグメントの同一性を判別するだけであるという点である。2つのWebページのそれぞれを記述するHTML文書には、同一性あるフラグメントが含まれているならば、これらのWebページの全部あるいは一部が一致すると判断しうる。このように、HTML文書全体を比較することなく、リンク要素周辺から抽出したフラグメント同士の比較だけでよい。これだけでも、Webページの全部又は一部の異同判定に要する計算量は削減されるのであるが、次に示すようなフラグメントの3分割によって、更なる計算量の削減が図られる。
図9は、文字情報12を3つのサブフラグメントに分割する例を示すものである。文字情報12は、図8と同一である。
リンク要素周辺の文字情報12の属性内容と要素内容を、その順番を保持して抽出し、リンク要素の前・中・後を区別して保存する。
文字情報12の開始タグの直前の文字列abcを前フラグメント15とし、終了タグの直後の文字列ghiを後フラグメント17とする。前フラグメント15と後フラグメント17で挟まれた部分
<a href="http://wwww.xaybzc.co.jp/"target="_blank">def</a>
からタグの内部の属性値_blankとタグ外部の文字列defを取り出し、_blankDEFを中フラグメント16として保存する。
このようにして、3種類のサブフラグメントが抽出され、これらをフラグメントの同一性判定のための判定要素とする。
さらに、リンク元のURL文字列をも判定要素の一つに加える。
なお、4つの判定要素の一つにURL文字列を含めたのは、同じ内容を含むWebページは似通った文字列からなるURLを持つことが多いので、URL文字列の類似度を前・中・後フラグメントの一致・不一致判定のためのしきい値決定に利用するためである。この点については、後に詳しく説明する。
(3−2)文字列同士の類似性
文字列同士を比較する場合、各文字列を構成する個々の文字ごとに比較してもよい。しかし、計算量削減という観点からは、次に述べるように、元の文字列を部分文字列群に分割することが好ましい。
また、類似度の算出は、各部分文字列同士を比較して差分を求め、差分の長さと分割前の原文字列の長さとの比に基づいて行うとよい。ここで、「差分の長さ」とは、完全一致しない部分文字列の文字数をいう。「差分の長さと原文字列の長さとの比」とは、文字列同士の不一致度であり、この不一致度を1から引いたものが類似度である。
なお、差分を求めるためのアルゴリズムは、すでに公知のものがあるので、これを利用する。〔参考文献:James W.Hunt and Thomas G.Szymanski:A Fast Algorithm for Computing Longest Common Subsequences、Communications of the ACM、vol.20、no.5、pp.350−353、May 1977〕
(3−2−1)剰余分割
図10に従い、類似性評価の基本的な手法について説明する。
フラグメントfr1は、C1、C2、・・・、C10の10個の文字が順に並んだ文字列であり、フラグメントfr2は、D1、D2、・・・、D11の11個の文字が順に並んだ文字列であるとする。
各文字列を、文字コードが5で割り切れる文字のところで分割し、部分文字列のリストに変換する。なお、この分割の仕方を、以下「剰余分割」という。
フラグメントfr1は、○印で囲んだC5,C10を剰余が0になる文字とすると、部分文字列G1,G2に分割できる。このような剰余分割をフラグメントfr2についても行うと、部分文字列H1,H2とH3に分割できる。
異同の判定は、部分文字列のリスト{G1,G2}と{H1,H2、H3}同士でおこなえばよい。このときの比較演算回数は、両フラグメントの部分文字列の個数の積(=2×3)である。文字単位で比較する場合は、両フラグメントの文字数の積(=10×11)だけ、比較演算をしなければならないことを考えると、計算量が大幅に削減される。
剰余分割のメリットは、計算量の削減だけではない。剰余分割によれば、文字の挿入・離脱があっても、剰余がゼロになる文字は変わらない、という利点もある。もし、所定個数ずつ原文字列を部分文字列に分割するとしたならば、1文字の挿入あるいは離脱があるだけで、以後の部分文字列がすべて異なってしまう。
ところで、5で割ることは本質的ではない。この値が大きいほど部分文字列の個数が減り、計算量が削減されるが、類似度評価の精度が低下する。本実施形態では、5という値が適切なトレードオフとなったにすぎない。要するに、自然言語処理のように文字列の持つ意味を考えた、おおがかりな処理をすることなく、機械的に部分文字列に分割すればよいので、計算量が削減できるという点が重要なのである。
ただし、部分文字列同士の比較は、1文字が異なるだけで異なる部分文字列と判定されてしまい、文字同士の比較の場合よりも精度が粗くなる。しかし、その代償として、計算量の削減というメリットが得られる。
計算量は、小規模な運用では問題にならないが、大規模な運用ではサーバ運用費にかかわる重大な要因となる。
(3−2−2)文字列同士の類似度の算出(基本)
図11に従い、評価の基本的な手法を説明する。
フラグメントfr3の原文字列sは、剰余分割により部分文字列s1、・・・、s5に分割され、フラグメントfr4の原文字列tは、剰余分割により部分文字列t1、・・・、t6に分割されるものとする。
文字列strの長さを、len(str)と表記し、図11の例では、len(s)<len(t)とする。
図11に示す、単に実線で結ばれているs1とt1、s2とt2、s4とt5およびs5とt6は互いに同一の部分文字列であり、破線で結ばれているs3とt3、s3とt4は異なる部分文字列であるとする。なお、部分文字列が異なるとは、一文字でも異なる場合をいい、部分文字列の全文字が一致するときは同一とする。
上記の例では、フラグメントfr3のs3、フラグメントfr4のt3とt4が差分として取り出される。
両フラグメントの不一致度Dは次の式で得られる。
D=(len(t3)+len(t4))/len(t)
この式からわかるように、フラグメントを構成する文字の個数が異なる場合は、文字数の多いフラグメントを基準に考える。図11の例では、フラグメントfr4が基準となる。
なお、類似度(E)は、E=1−Dである。
(3−2−3)文字列同士の類似度の算出(重み付けの考慮)
図12に示すように、リンク要素からの距離によって重み付けを行う。ここで、図12は、図11に、重み付け(w1,・・・、w6)を追加したにすぎない。
同一フラグメントを構成する文字列であっても、リンク要素に近い部分は同一性成分が並び、リンク要素から遠い部分はノイズ成分が並ぶことが多いと経験的に推測できる。そのため、リンク要素からの距離を考慮して部分文字列に重み付けをする。
図12の例では、フラグメントfr4の部分文字列t1の重み付け係数をw1、t2の重み付け係数をw2などとする。
この場合の両フラグメントの不一致度Dは次の式で得られる。
D=(w3*len(t3)+w4*len(t4))/len(t)
このように重み付けをすることで、計算量削減に伴う精度の低下を抑えることができる。
ここで、重み付け係数は1より小さい値で、リンク要素からの距離が大きいほど小さくなる。ノイズ成分を低く評価するためである。
ただし、類似度の算出にあたって、重み付けを考慮するのは、前フラグメントと後フラグメントのみである。中フラグメントは、リンク要素の内側にあり、ノイズ成分の考慮は不要のため、重み付けはしない。
ところで、重み付け係数をいくつにするかは、実装レベルの問題にすぎない。プログラムPROGに定数として記述してもよく、記憶部6に、パラメータとして記憶させてもよい。運用状況によって、適当な値を設定すればよい。
なお、上記の式において、分母をlen(t)の代わりに、
w1*len(t1)+w2*len(t2)+w3*len(t3)+w4*len(t4)+w5*len(t5)+w6*len(t6)
としてもよい。
しかし、実用上、重み付けをしないlen(t)で十分である。
その理由は、たとえリンク要素から遠いところであっても一致しているなら、それはフラグメントが類似していることを強く示唆するからである。
分母をlen(t)とすると、Dの値が小さくなる、すなわち、一致していない場合の不一致評価が軽くなる。これは、類似度Eが大きく評価されることを意味し、同一内容を含むWebページをリンク元として重複掲載したくない、という本発明の目的にかなうものである。
(3−3)フラグメントの同一性の判定
図13に従い、3つのサブフラグメントとURL文字列の類似度を総合的に評価してフラグメントの同一性を判定する方法について説明する。
比較対象となる3つのサブフラグメント同士、およびURL文字列同士の4種類の類似度を算出する。
予め、URL文字列同士の類似度に応じて、サブフラグメントの一致・不一致を判定するためのしきい値を定めておく。
図13に示す例では、URL文字列の類似度が0.8を超えるときは、例えば、しきい値を0.7にセットし、0.8以下のときは、例えば、しきい値を0.9にセットする。このように、類似度が高いほど、低いしきい値をセットするのは、URL文字列が似通っているほどフラグメントが一致する可能性が高いからである。
なお、しきい値は、実験段階では、学習データを集めて、適宜設定する。運用段階では、日々データが集積していくであろうから、この大量なデータに基づいて、しきい値を更新していくとよい。
図13の(ケースA)では、URL文字列の類似度が0.9なので、しきい値は0.7である。前フラグメントと中フラグメントの類似度は、それぞれ0.7を上回っているので、一致しているものとする。したがって、3種類のフラグメントのうち、少なくとも2種類が一致しているので、比較対象のフラグメントは同一性があると判定される。
図13の(ケースB)では、URL文字列の類似度が0.4なので、しきい値は0.9である。しきい値0.9を上回っているのは、中フラグメントだけである。したがって、3種類のサブフラグメントのうち、少なくとも2種類が一致という条件を満たしていないので、比較対象のフラグメントは同一性がないと判定する。
このように、フラグメントの同一性判定のために、4つの判定要素の類似度を別個に算定し、これらを総合的に評価した点が、本発明の大きな特徴である。各判定要素は、比較的短い文字列であり、これを部分文字列に分割して差分を求めるので、計算量削減効果がある。
また、URL文字列の類似度をしきい値決定のために利用することは、判定の精度を高めるものである。
(4)計算量削減のための他の手法
同一性あるフラグメントを効率よく見つけるためには、図3のステップS7からS8の処理において、総当り法によることなく、剰余分割された部分文字列を、検索のインデックスとして利用することで、効率よく処理ができる。これについて、以下に説明する。
互いに類似性の低いフラグメントの集合があるとき、その集合に含まれる任意のフラグメントは、他のどのフラグメントにもない部分文字列を持つ可能性が高い。こうした部分文字列を「ユニークな部分文字列」と呼ぶことにする。
既知のフラグメントの集合について、ユニークな部分文字列と、その部分文字列を含む既知のフラグメントへのポインタ(上記の実施形態では、抽出フラグメントテーブルのアドレス)を登録した辞書(以下、「指紋辞書」と呼ぶ)をあらかじめ作成しておく。
未知のフラグメントが発見されて、それに類似した既知のフラグメントを探すとき、部分文字列について指紋辞書をあたることで、類似性が高いと見込まれるフラグメントを、抽出フラグメントテーブルから迅速に検索することができる。
因みに、既存の自然言語処理では意味的な観点からの利用を前提とするため、インデックスを作成するための分割処理に、形態素解析などの計算量の多い処理を用いている。しかし、本発明では、文字情報の持つ意味的な類似性はまったく考慮しないので、機械的な剰余分割によって得られた部分文字列が、直ちにテーブル検索のためのインデックスとして利用できる。また、同様の機械的な分割であるNグラムに比べても、少ない計算量で目的を達せられる。
(5)その他
本発明の同一性判定プログラムは、どのようなコンピュータ言語で記述されていてもよい。Webページを記述したHTML文書中で、当該プログラムが引用されるようになっていてもよい。
また、本発明の方法を実施するコンピュータは、1又は複数のリンク先サイトを管理するWebサーバであってもよいが、サイトとは無関係に、フラグメントの正規化処理サービスを行うものであってもよい。
さらに、入力URLリストは、特にリンク先、リンク元という別は必須ではない。リンク先、リンク元を区別することなく、インターネット上に張り巡らされたサイト群から抽出したフラグメントの正規化処理を行う場合もあるからである。その場合、図3のステップS3とS4の処理は不要なことは言うまでもない。
コンピュータ1へのURLリスト3の入力の仕方は、インターネットNを介して受信しても、管理者等によるキーボード入力等でも、URL情報を格納した記憶媒体から読み込むものであっても、何でもよい。
出力される正規化フラグメント情報4は、コンピュータ1の補助記憶装置に格納するものに限らず、コンピュータ1とは別のデータベースサーバなどに格納してもよい。あるいは、本発明のコンピュータが、他のコンピュータ(PDAや携帯電話も含む)からの依頼により、フラグメント同一性判定サービスを行うならば、自分に接続している記憶装置に格納しなくてもよい。代わりに、サービス依頼元のコンピュータに、正規化フラグメント情報4を送信したり、プリンタ出力したりしてもよい。
なお、本発明の、フラグメントという概念を利用した同一性判定の手法は、リンク元一覧表示という利用の仕方に限定されない。創意工夫次第で、インターネット上のさまざまな場面で活用される可能性を秘めている。
要は、以上のように開示された実施の形態はすべての点で例示であって、制限的なものではないということである。したがって、種々の変形が可能である。しかし、その変形が特許請求の範囲に記載された技術思想に基づくものである限り、その変形は本発明の技術的範囲に含まれる。
本発明の実施形態のシステム構成例を示す図である。 本発明の実施形態で用いるコンピュータのブロック図である。 本発明の実施形態の処理概要を示す流れ図である。 抽出されたフラグメントを分割して格納したテーブル構造を例示する図である。 フラグメントの正規化を説明するための図である。 フラグメントの正規化を説明するための図である。 フラグメントの正規化を説明するための図である。 フラグメントの抽出を説明するための図である。 3種類のサブフラグメントの抽出を説明するための図である。 文字列の剰余分割を説明するための図である。 文字列を部分文字列のリストに変換した後、差分を抽出することを説明するための図である。 文字列を部分文字列のリストに変換した後、重み付けを考慮して差分を抽出することを説明するための図である。 フラグメントの異同の判定の仕方を説明するための図である。 従来技術の説明のためのシステム構成例を示す図である。 従来技術の説明のためのリンク元一覧表示例を示す図である。
符号の説明
1 コンピュータ
3 URLリスト
4 正規化フラグメント情報
N インターネット

Claims (5)

  1. インターネットと接続可能なコンピュータが、
    インターネット上で公開されているWebページの任意個数のURLを入力情報とするステップと、
    前記の各URLに対応するWebページのHTML文書を取得するステップと、
    取得した各HTML文書から、リンク要素周辺の文字情報であるフラグメントを抽出するステップと、
    抽出した各フラグメントを、リンク要素直前の前フラグメント、リンク要素内部の中フラグメント、およびリンク要素直後の後フラグメントに3分割するとともに、これらの分割された3種類のサブフラグメントに、該フラグメントを含むHTML文書に対応するURLの文字列を加えた4つを判定要素とするステップと、
    或るフラグメントの4つの判定要素のそれぞれについて、他のフラグメントの対応する判定要素との類似度を算出するステップと
    算出された4つの類似度を総合的に評価した結果に基づいて、フラグメント同士の同一性の有無を判定するステップと、
    前記同一性判定結果に基づいて、正規化されたフラグメント情報を生成し、出力するステップ、
    とからなることを特徴とするフラグメントの同一性判定方法。
  2. 請求項1に記載のフラグメントの同一性判定方法において、
    前フラグメントと後フラグメントのそれぞれを構成する要素については、リンク要素からの距離に応じて重み付けを行い、類似度の評価をすることを特徴とするもの。
  3. 請求項1に記載のフラグメントの同一性判定方法において、
    3種類の各サブフラグメントの一致・不一致を評価するためのしきい値の決定に際し、比較される各フラグメントのURL文字列同士の類似度を利用することを特徴とするもの。
  4. 請求項3に記載のフラグメントの同一性判定方法において、
    前フラグメント、中フラグメントおよび後フラグメントの3種類のサブフラグメントのうち、少なくとも2種類以上が一致すると判定された場合に、同一性のあるフラグメントであると判定することを特徴とするもの。
  5. 請求項1〜4のいずれか1に記載の方法を、コンピュータに実行させるためのコンピュータプログラム。

JP2005313518A 2005-10-27 2005-10-27 フラグメントの同一性判定方法およびコンピュータプログラム Pending JP2007122398A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005313518A JP2007122398A (ja) 2005-10-27 2005-10-27 フラグメントの同一性判定方法およびコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005313518A JP2007122398A (ja) 2005-10-27 2005-10-27 フラグメントの同一性判定方法およびコンピュータプログラム

Publications (1)

Publication Number Publication Date
JP2007122398A true JP2007122398A (ja) 2007-05-17

Family

ID=38146186

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005313518A Pending JP2007122398A (ja) 2005-10-27 2005-10-27 フラグメントの同一性判定方法およびコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP2007122398A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010086308A (ja) * 2008-09-30 2010-04-15 Nippon Telegr & Teleph Corp <Ntt> リンク生成装置およびリンク生成方法
JP2010282354A (ja) * 2009-06-03 2010-12-16 Ntt Docomo Inc ログ加工装置、該ログ加工装置を備えた情報収集装置、及びログ加工方法
JP2011509463A (ja) * 2007-12-31 2011-03-24 マスターカード インターナシヨナル インコーポレーテツド データベース内に近似文字列照合を実装するための方法およびシステム
JP2012018510A (ja) * 2010-07-07 2012-01-26 Mitsubishi Electric Corp 文書処理装置、文書処理方法、文書処理プログラム、及び文書処理プログラムを記録したコンピュータ読み取り可能な記録媒体
CN113434790A (zh) * 2021-06-16 2021-09-24 北京百度网讯科技有限公司 重复链接的识别方法、装置及电子设备
US11694172B2 (en) 2012-04-26 2023-07-04 Mastercard International Incorporated Systems and methods for improving error tolerance in processing an input file

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011509463A (ja) * 2007-12-31 2011-03-24 マスターカード インターナシヨナル インコーポレーテツド データベース内に近似文字列照合を実装するための方法およびシステム
JP2010086308A (ja) * 2008-09-30 2010-04-15 Nippon Telegr & Teleph Corp <Ntt> リンク生成装置およびリンク生成方法
JP2010282354A (ja) * 2009-06-03 2010-12-16 Ntt Docomo Inc ログ加工装置、該ログ加工装置を備えた情報収集装置、及びログ加工方法
JP2012018510A (ja) * 2010-07-07 2012-01-26 Mitsubishi Electric Corp 文書処理装置、文書処理方法、文書処理プログラム、及び文書処理プログラムを記録したコンピュータ読み取り可能な記録媒体
US11694172B2 (en) 2012-04-26 2023-07-04 Mastercard International Incorporated Systems and methods for improving error tolerance in processing an input file
CN113434790A (zh) * 2021-06-16 2021-09-24 北京百度网讯科技有限公司 重复链接的识别方法、装置及电子设备
CN113434790B (zh) * 2021-06-16 2023-07-25 北京百度网讯科技有限公司 重复链接的识别方法、装置及电子设备

Similar Documents

Publication Publication Date Title
CN1104696C (zh) 自动添加信息的超级文本链接接收文件的系统和方法
US10423649B2 (en) Natural question generation from query data using natural language processing system
US20090089278A1 (en) Techniques for keyword extraction from urls using statistical analysis
US8788925B1 (en) Authorized syndicated descriptions of linked web content displayed with links in user-generated content
US20150067476A1 (en) Title and body extraction from web page
US11281737B2 (en) Unbiasing search results
JP2020027649A (ja) エンティティ関係データ生成方法、装置、機器、及び記憶媒体
US8250466B2 (en) Computer and method for converting a web page
WO2012125350A2 (en) Keyword extraction from uniform resource locators (urls)
CN108228710B (zh) 一种针对url的分词方法及装置
US20090083266A1 (en) Techniques for tokenizing urls
US20170109442A1 (en) Customizing a website string content specific to an industry
US20230153515A1 (en) Ambiguous Date Resolution for Electronic Communication Documents
JP2007122398A (ja) フラグメントの同一性判定方法およびコンピュータプログラム
CN110955855B (zh) 一种信息拦截的方法、装置及终端
CN114141384A (zh) 用于检索医学数据的方法、设备和介质
US8875094B2 (en) System and method for implementing intelligent java server faces (JSF) composite component generation
JP2006065467A (ja) データ抽出定義情報生成装置およびデータ抽出定義情報生成方法
Saravanan et al. Extraction of Core Web Content from Web Pages using Noise Elimination.
JP5712496B2 (ja) アノテーション復元方法、アノテーション付与方法、アノテーション復元プログラム及びアノテーション復元装置
US20180293508A1 (en) Training question dataset generation from query data
KR100892989B1 (ko) 탭브라우징을 이용한 검색결과 표시시스템
JP2004341942A (ja) コンテンツ分類方法、コンテンツ分類装置、コンテンツ分類用プログラムおよびコンテンツ分類用プログラムを記憶した記憶媒体
JP7081155B2 (ja) 選択プログラム、選択方法、及び選択装置
CN110083817B (zh) 一种命名排歧方法、装置、计算机可读存储介质