文章検索装置
【課題】統計的手法に依存せず、高い精度でWeb文書中の主たる文章を抽出し、且つ、デザイン性を保持した状態の抽出結果を得る。
【解決手段】Web文書と共に配信されるRSS情報を利用し、そのRSSフィードに記載された「タイトル」に極めて類似した箇所を、HTMLを変換した木構造データ(DOM)上で検索し、必要に応じてそのスタイルを考慮しながら特定する。
【解決手段】Web文書と共に配信されるRSS情報を利用し、そのRSSフィードに記載された「タイトル」に極めて類似した箇所を、HTMLを変換した木構造データ(DOM)上で検索し、必要に応じてそのスタイルを考慮しながら特定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク上の文書を検索し出力する装置であって、特に、出力時に、文書中から主たる文章だけを抽出することを可能とする文章検索装置に関する。
【背景技術】
【0002】
現在、ネットワーク上には、URLという形式により指定され、主にHTMLというフォーマットにより記述された文書(以下、Web文書と呼ぶ)が多数存在する。しかしながら、多くのWeb文書は、そのWeb文書の主内容となる本文(主たる文章と呼ぶ)の他にも、広告や、関連サイトへのリンク、同一サイト内の別Web文書へナビゲートするためのリンクなどが含まれている。
【0003】
このようなWeb文書を、特に、携帯端末のように大きさが限られた端末や、公共空間に設置されたサイネージディスプレイなどに表示する場合には、本文のみを抽出して出力されることが望まれる。
【0004】
また、検索エンジンにより、キーワードを入力してネットワーク上のWeb文書検索を行う場合にも、広告や、関連サイトへのリンク、同一サイト内の別Web文書へナビゲートするためのリンクなどにキーワードがヒットすることは、必ずしも検索目的に沿うものではないので、やはり、本文のみを抽出されることが望まれる。
【0005】
しかしながら、Web文書を記述するHTMLでは、本文、広告、ナビゲーションリンクなどによるタグの構成に特別な差異はないため、本文のみを抽出するのは必ずしも容易ではない。
【0006】
このような要望を可能とする従来技術として、特許文献1によれば、Web文書のデータをプレインテキスト化し、統計的な手法を適用することにより、本文と推定される箇所を抽出する技術が開示されている。
【0007】
また、関連する背景技術として、RSSと呼ばれる技術が一般に知られている。RSSは、「RDF Site Summary」あるいは「Rich Site Summary」あるいは「Really Simple Syndication」の略とされ、参考サイト1、2のように複数のバージョンにより規格の差異等もあるが、共通することは、配信されるWeb文書の概要を、XML形式により配信する技術である。概要としては、ほとんどの場合において、Web文書の本文のタイトルや、本文の一部抜粋が含まれている。現在では、特に、ニュースサイトやブログサイトなど更新されることが多いサイトを中心として、非常に多くのサイトでRSSも配信されている。また、RSSと類似する技術として、参考サイト3のATOMがあり、RSSと同様にWeb文書の概要をXML形式により記述し配信することができる。以下、RSSの各バージョンおよびATOMを総称して、単にRSSと記述する。RSSでは、タイトルや本文抜粋などの項目をどのタグで記述するのかが規定されているため、HTMLとは異なり、タグの構成を解析することで、各項目を抽出することは容易である。なお、RSSにはバージョンによる差異があるが、各バージョンのRSS(ATOMを含む)には、そのバージョン自体が記述されているので、その情報を取得し、記述されているバージョンに応じた解析処理を行うことで、バージョンによる差異の課題は回避することができる。
【0008】
参考サイト1:http://web.resource.org/rss/1.0/spec
参考サイト2:http://www.rssboard.org/rss-specification
参考サイト3:http://www.ietf.org/wg/concluded/atompub
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2006−338364号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、特許文献1の方法では、統計的手法を利用するため、統計的に有意な推定を行うために十分なデータを収集する必要がある。あるいは、これらのデータが十分でない場合には、有効な推定結果を得ることができない。また、十分なデータを収集したとしても不可避な推定誤差が存在するという課題がある。
【0011】
RSSを使用する場合は、XMLにより配信されるデータを、その規格に従って解析すればよいため、このような統計的手法に起因する課題はない。しかしながら、多くの場合、RSSにより配信されるのは、本文の抜粋のみであって、本文内容のごく一部しか含まれていない。すなわち、RSSのみからでは、本文全ての情報を取得することはできないという課題がある。
【0012】
また、現在のWeb文書は、CSSと呼ばれるデザイン上の指定を含むことが殆どであり、利用者がWeb文書を閲覧する際には、その指定に基づいて表示された状態で見ている。一方で、いずれの従来技術においても、主にWeb文書のテキストデータに関するデータだけを抽出する。そのため、これら従来技術により抽出された結果には元のWeb文書のデザインを適用することができず、そのために利用者が抽出された結果の表示を見た際に、元のWeb文書から抽出した結果であることを認識しにくくなるという課題がある。
【課題を解決するための手段】
【0013】
このような課題を解決するために、Web文書と共に配信されるRSS情報を利用し、そのRSSフィードに記載された「タイトル」に極めて類似した箇所を、HTMLを変換した木構造データ(DOM)上で検索し、必要に応じてそのスタイルを考慮しながら特定することで、Web文書の本文を抽出する。
【0014】
第1の本発明は、ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルを取り出す機能を有する概要文書取得部と、前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記スタイルデータを検査することにより、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部とを備えることを特徴とする文章検索装置をもって解決手段とする。
【0015】
第2の本発明は、ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルと概要を取り出す機能を有する概要文書取得部と、前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記概要文書取得部により取得された概要との包含性を測定し、測定された包含性に基づいて、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部とを備えることを特徴とする文章検索装置をもって解決手段とする。
【0016】
第3の本発明は、第1または第2の本発明において、前記文章ノード検索部により特定された前記木構造のデータ上の前記ノードと親子関係にないノードを削除あるいは非表示にすることによって当該文書の主たる文章のみを表示する機能を有する出力部を備えることを特徴とする文章検索装置をもって解決手段とする。
【発明の効果】
【0017】
本発明によれば、統計的手法に依存せず、高い精度でWeb文書中の主たる文章を抽出することが可能となる。また、DOM上で特定できるので、デザイン性を保持した状態での抽出結果とすることが可能となる。
【図面の簡単な説明】
【0018】
【図1】第1の実施の形態に係る文章検索装置の構成図である。
【図2】概要文書取得部11の処理フロー(1)を示す図である。
【図3】概要文書取得部11の処理フロー(2)を示す図である。
【図4】タイトルノード検索部13の処理フロー(1)を示す図である。
【図5】タイトルノード検索部13の処理フロー(2)を示す図である。
【図6】HTMLサンプルを示す図である。
【図7】HTMLサンプルの表示例を示す図である。
【図8】HTMLサンプルのDOM変換例を示す図である。
【図9】出力部15を含む文章検索装置1の構成図である。
【図10】本実施の形態を適用する前の表示例を示す図である。
【図11】本実施の形態を適用した後の表示例を示す図である。
【発明を実施するための形態】
【0019】
以下、本発明の実施の形態について図面を参照して説明する。
【0020】
(第1の実施の形態)
図1は、本発明の実施の形態に係る文章検索装置の全体構成図である。
【0021】
文章検索装置1は、RSSにより配信される当該Web文書の概要データを取得する概要文書取得部11と、当該Web文書のデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部12と、木構造のデータからWeb文書の主たる文章のタイトルとなるノードを検索して特定するタイトルノード検索部13と、特定されたタイトルとなるノードを起点として木構造のデータから主たる文章のノードを検索して特定する文章ノード検索部14とを備える。
【0022】
本実施の形態は、ネットワークに接続されCPU、メモリ、HDDなどを備えた汎用的な計算機上で、以下で述べるような各部機能の動作をさせるためのプログラムを稼働させることより、実施することが可能である。なお、各部は、同一の計算機上で実施することも可能であるし、各部を個別の計算機上で機能させ、ネットワーク通信により必要なパラメータを送信して、複数の計算機上で実施することも可能である。
【0023】
(第1の実施の形態の動作)
概要文書取得部11の処理フローを、図2、図3に示す。
【0024】
まず、RSSを取得するために指定されたURLに対して、HTTPにより要求を行い、その返答(RSSデータ)を受けとる(S1)。URLの指定については、多くのWebサイトには、そこで配信されるWeb文書に関するRSSを取得するためのリンクが明記されているので、そのリンク先URLを、予め利用者が設定するという方法がある。また、現在の多くのWeb文書には、metaタグの中に、RSS取得先が埋め込まれていることがあるので、そのmetaタグの内容を解析してアクセスするように構成することも可能である。
【0025】
アクセスすると、RSSデータがXML形式で返却されるので、そのXMLデータを解析する(S3)。例えば、http://www.feedparser.org/で開示されているUniversal Feed Parserというライブラリソフトウェアを使用すると、RSSのバージョン(ATOMを含む)の差異を吸収して、取得されたデータの解析を行うことが可能となる。なお、本発明の実施において、Universal Feed Parserの使用は必須ではない。ただし、RSSのバージョンによって、解析して取得すべき項目のタグ名称が若干異なるので、以下の説明においては、Universal Feed Parserのドキュメント[http://www.feedparser.org/docs/reference.html]で使用している名称に準じて記載する。
【0026】
RSSでは、複数のWeb文書に関する情報が含まれている。各Web文書の情報は、entriesという配列として取得することができ、i番目のWeb文書の情報のうち、タイトル(entries[i].title)とアクセス先URL(entries[i].link)を取得する。RSSに規定されている項目は多岐に渡るが、実際に配信時に設定されている項目は必ずしも多くない。しかしながら、このタイトルとアクセス先URLについては、ほぼ全てのRSS配信データに含まれている。
【0027】
解析後の動作の詳細な実現方式については、本実施の形態の使用目的に応じて、いくつかの実施方式があり、下記に3例述べる。
【0028】
予め、抽出対象となるURLが決まっている(そのURLをTarget_URLとする)場合は、entries[i].linkが一致するものを配列から検索し、entries[i].titleと共に、タイトルノード検索部13にパラメータとして渡す。(図2:S5、S7)
特に決まっていない場合は、例えば、配列の先頭のentries[0].titleとentries[0].linkをタイトルノード検索部13にパラメータとして渡してもよい(特に図示せず)。
【0029】
あるいは、一定時間を置いて、iを+1しながら、順次entries[i].titleとentries[i].linkをタイトルノード検索部13にパラメータとして渡してもよい(図3:S11〜S15)。
【0030】
木構造データ記憶部12は、指定されたURLに対して、HTTPにより要求を行い、そのレスポンスとしてHTMLを取得する。取得したHTMLは、Document Object Model (DOM) [http://www.w3.org/DOM/DOMTR]の規定に従って、ツリー状のデータ構造に変換し、メモリ等に記憶する。木構造であるDOMデータは、HTMLの各タグデータが木構造のノードを構成しており、表示されるデータとしては、BODYタグによるノードが、最上位となる。更に、DOMの規定の一部であるCascading Style Sheet(CSS)についても解析し、各データ構造におけるサイズ等のスタイルについても変換しておく。CSSはそのWeb文書のHTML内に直接記述されている場合と、HTML内にはCSS取得先URLが書かれていてそのURLにアクセスすることで取得する必要がある場合がある。後者のような外部CSSの読み込みも含めたこのような変換は、現在のほとんどのブラウザソフトウェアで実現されている公知の技術である。
【0031】
また、DOMという木構造データに展開されたWeb文書に対して、一般にJavaScriptとして公知の技術を利用することにより、例えば、次のようなデータの検索動作は、容易に実施することができる。
【0032】
・ 木構造に従って、特定のノードの上位ノードや下位ノードを検索すること
・ 特定のタグ名をもつDOM上のノードデータを検索すること
・ 特定の属性値をもつDOM上のノードデータを検索すること
・ 特定のDOMノードの属性値を検索すること
・ 特定のDOMノードに属するテキストデータを検索すること
・ 特定のDOMノードの配下の全ノードに属するテキストデータを検索すること
・ 通常属するテキストデータが存在しないタグ(例:imgタグ)において、テキストデータの代替として、そのタグのalt属性値のデータを検索すること
・ 特定のDOMノードの表示・非表示状態を検索すること
・ 特定のDOMノードが表示状態のとき、その表示上のサイズ(高さおよび幅)を検索すること
本実施の形態においても、これら公知の技術により、木構造データ記憶部12は本発明の他の構成部に対して、上述した各動作機能を提供することができる。
【0033】
タイトルノード検索部13の処理フローを、図4、図5に示す。
【0034】
本実施の形態におけるタイトルノード検索部13の動作としては、どちらの処理フローによっても実施できるが、まず、より簡易な図4について説明する。
【0035】
タイトルノード検索部13は、前記概要文書取得部11からタイトル(title)とアクセス先URL(link)をパラメータとして渡されて起動する(S101)。
【0036】
まず、linkとして渡されたURLのDOMデータを、木構造データ記憶部12にアクセスして取得する(S103)。もし、木構造データ記憶部12に当該URLのDOMデータがまだ記憶されていない場合には、木構造データ記憶部12に対してネットワーク経由で取得し、記憶するように指示すればよい。
【0037】
タイトルとしてRSSで配信されるテキストは、多くの場合、HTML内では、H1, H2, H3, H4, H5のいずれかのタグ(以下、headingタグと総称する)で記述されている。そのため、まず、DOM内から、headingタグのノードを取り出し、取り出された各ノード配下に含まれるテキスト情報を取得する。タグがimgの場合は、テキストの代替としてalt属性値を利用しても良い。これらの動作は、木構造データ記憶部12により提供される機能を利用して実施できる。
【0038】
次に、このようにして取得されたテキストデータと、パラメータとして渡されたtitleとを比較して、類似度が高いデータを検索する。
【0039】
類似度の算出に当たっては、まず、それぞれのテキストデータを、正規化する。ここで、正規化とは、次のような処理のことを指し、これによって、テキストデータとしての表記上の差異が小さくなる。
【0040】
・テキストのエンコードを統一する(例えば全てunicode変換する)
・英数字記号カタカナ等の全角、半角表示を統一する(例えば全て半角変換する)
・英字の大文字小文字を統一する(例えば全て小文字変換する)
・空白の表記を統一する(例えば、全角スペースやタブや改行などを全て半角スペースに変換し、2文字以上連続する半角スペースを1文字半角スペースに置換する。また文頭、文末のスペースは削除する)
このようにして正規化を行ってから、titleとheadingタグのテキストデータを比較し、一致するheadingタグデータを取得する。
【0041】
なお、サイトによっては、RSS配信時に、何らかの文字を付加したり、逆に各サイトで決められた文字数以上の場合には一部を削除したりしている可能性もあり、あるいは一部の文字を別の文字に置き換えている可能性もある。その場合は正規化によっても同一のテキストとはならないため、一致するという条件を緩和し、例えば、
・一方のテキストが、他方のテキストに包含される
・2つのテキストデータ間のレーベンシュタイン距離を算出し、その距離が予め決められた条件より小さい
といった条件の1つあるいは複数に合致するheadingタグデータを取得してもよい。なお、レーベンシュタイン距離とは、一方のテキストデータから何回の文字単位の編集操作で他方のテキストデータに変換できるかを計る数値であり、すなわち値が小さいほど2つのテキストデータが類似していると判断できる。[http://www.merriampark.com/ld.htm]などで開示されている方法により算出することが可能である。
【0042】
このようにして、「類似度が高い」と判断されたheadingタグノードは、特定されるべきタイトルノードの候補として、一時的な配列領域に記憶される(S105、S1051,S1052)。
【0043】
取得されたheadingタグノードは、1つとは限らない。すなわち、候補配列領域に複数のノードが記憶されている可能性がある。そのため、複数のheadingタグノードが取得された場合には、各データのCSSに基づき、例えば次のような方法により最適となるノードを選択する(S107)。
【0044】
・フォントサイズが最大のもの
・フォントサイズ最大なものが複数ある場合は、画面に配置した際により上のほうにあるもの
このようにして選択されたノードは、本文のタイトルを表すデータであるとして、次の文章ノード検索部14へパラメータとして送られる(S109)。
【0045】
次に、図4より好適な実施例となる図5について説明する。
【0046】
図4のフローでは、類似度の判定において条件に合致するheadingタグデータが1つもない可能性がある。HTMLにおいて、あえて、headingタグを使わずに、DIVタグやTABLEタグ内のTDタグなどにより記述され、適切なCSSを設定することによって、利用者にとってタイトルと認識できるようにデザインされている場合が主に考えられる。そのような場合にも対処するためは、headingタグに限定せず、全ての表示状態のタグに対して、前述のような正規化テキストの比較と最適なタグの選択を行えばよい。表示状態であるか否かは、木構造データ記憶部12の機能を利用して判断可能である。このような処理を行うと、1つも選択されない可能性が小さくなる代わりに、対象となるタグデータが増大するため、処理時間の問題が発生する可能性がある。そのため、まずはheadingタグを対象として処理を行い、headingタグからは見つけられなかった場合にのみ、全表示タグデータを対象として処理を行う、といった実施方法はより好適である。全表示タグデータを対象とした処理においても、タイトルを検索できなかった場合は、なんらかの原因によりRSSに対応するHTMLでなかったと判断し、エラーとして処理を打ち切る。
【0047】
図5のフロー図は、これを具現化したものである。すなわち、ステップS101からS1052までは図4と同じ処理を行い、ステップS111において候補として一時的に記憶されている配列の長さをチェックする。長さが1以上の場合は、図4と同じ処理を行うが、長さが0であった場合には、ステップS113以降の処理へすすむ。ステップS113、S1131、S1132では、図4の処理と同じことを、headingタグノードに限定せず、全ての表示状態のタグノードに対して処理を行う。
【0048】
つまり、DOM上の全ての表示状態のタグに対して後述のステップS1131、1132を行う(S113)。ステップS1131では、対象タグ配下のテキスト情報とパラメータtitleとの類似度を算出する。続くステップS1132では、類似度が予め決められた値より大きければ、対象タグを「候補」の配列に追加する。
【0049】
次に、ステップS115において候補として一時的に記憶されている配列の長さをチェックする。長さが1以上の場合は、図4と同じ処理を行う(S107、S109)。長さが0であった場合には、エラーで処理を打ち切る(S117)。
【0050】
文章ノード検索部14は、タイトルノード検索部13で検索されたDOM上のタイトル位置を受け取り、それに続く本文を抽出する。なお、本発明に置いて、タイトルと本文をあわせた箇所を主たる文章と呼ぶ。そのためには、ツリー状のデータ構造をしているDOMを、タイトルのノードから、Web文書で表示される木構造データの根をなしているBODYタグのノードに向かって、順次たどる処理を行い、たどられたノードの大きさを木構造データ記憶部12から取得する。タイトルと本文は、DOMデータ上としては、通常、ある程度近い関係をなし、すなわち、主たる文章として統合されたDOM上のノードとしてタイトルノードからBODYノードをたどる間に存在しており、しかもタイトルに本文が付くことによって、表示上の大きさ(特に高さ)が急に大きくなるという性質がある。このため、例えば次のような条件を満たすときに、順次たどる処理を中止してそのときのDOM上のノードを、抽出したい主たる文章のノードとして特定することができる。
【0051】
条件例1:予め決められた高さを超える(300ピクセル以上など)
条件例2:タイトルの高さと当該ノードの高さの比を求め、予め決められた比を超える(タイトルの高さの5倍以上など)
条件例3:ノードをBODYに向かって順次処理する際に、直前のノードとの面積の比を求め、予め決められた比を超える(直前のノードの面積の5倍以上など)
以上の処理について、図6、7、8に示すHTMLのサンプルにより説明する。
【0052】
図7は、図6のHTMLを通常のブラウザで表示したときの表示例である。なお、タグにclass属性によりそのクラスが指定されているものについては、「.」(ドット)記法により示している。例えば、<DIV class="bttl">により指定されるDOMデータのノードは「DIV.bttl」と表記している。
【0053】
図8は、DOMに展開した際の木構造データを示している。このうち、網がけされた「H2」ノードが、タイトルノード検索部13で特定されたタイトルである。
【0054】
文章ノード検索部14では、この「H2」から「DIV.ettl」「DIV.ent」「DIV.left」「BODY」の順に木構造をたどる。まず、「H2」から「DIV.ettl」に移り、高さを比較する。
【0055】
この場合には、ほとんど高さが変わらないために、予め決められた条件を満たさないため、主たる文章ではないと判断し、処理を次の「DIV.ent」に移す。「DIV.ent」の高さは大きく増加するので、予め決められた条件を満たすことになり、この「DIV.ent」部が、主たる文章であると判断される。
【0056】
以上述べた実施の形態により、Web文書のタイトルと本文を合わせた主たる文章を抽出することが可能である。また上述したように、処理の途中において、タイトル部を特定しているので、抽出された主たる文章の内、タイトル部を除いた箇所を、本文として特定し抽出することも可能である。
【0057】
本実施の形態の効果として、以上のようにして抽出された主たる文章の利用例について述べる。
【0058】
例えば、Webブラウザのように、Web文書を表示するためのシステムで、HTMLデータをCSSデータと共にDOMに変換した後、本実施の形態により抽出された主たる文章のDOM上のノードと親子関係(上位下位関係)にない全てのノードを削除あるいは非表示とすることによって、広告やナビゲーションリンクなどの表示を無くした主たる文章のみのWeb文書表示装置とすることができる。しかも、この場合は元のWeb文書のCSS指定が正しく残されているため、フォント、サイズ、色などのデザインが正しく適用されるので、このようなデザインを含めた本文抽出が可能となる。このように、主たる文章と親子関係にないノードを削除あるいは非表示化して出力するという機能を持った出力部15を含む文章検索装置1の構成図を図9に示す。また、図10、11に、実際に本実施の形態を適用した例を示す。この例では、RSSにより、URL「http://www.ntt.co.jp/RD/OFIS/keyword/」とタイトル「キーワードでわかる先端技術」を取得して、本発明の技術を適用し、記事の主たる文章以外のDOMを非表示にすることにより、図11のような表示を得ることができる。
【0059】
また、別の例として検索エンジンに使用する場合には、本実施の形態により特定された主たる文章に属するテキストデータのみを対処として、検索エンジン用のデータベース等に蓄積することにより、利用者の意図しない検索結果を避けることが可能となる。
【0060】
(第2の実施の形態)
第2の実施の形態では、まず、概要文書取得部11にて、第1の実施の形態で述べた項目に加えて、entries[i].summaryも取得する。このsummaryには、通常、本文か、本文の一部(特に、最初の数行分程度)がプレインテキストあるいはHTMLソースとして入っている。
【0061】
木構造データ記憶部12とタイトルノード検索部13は、第1の実施の形態と同じように構成する。
【0062】
文章ノード検索部14では、タイトルノード検索部13で抽出されたDOM上のタイトル位置と、概要文書取得部11から得られるsummaryをパラメータとして受け取って起動される。第2の実施の形態においても、第1の実施の形態と同様にタイトルからBODYノードに向かって順次木構造(ツリー)をたどる処理を行うが、処理を打ち切る条件としては、第1の実施の形態のようにデザインにより確認するのではなく、パラメータとして受け取ったsummaryとの比較により行い、summaryによく合致するノードであると判断される場合に処理を打ち切り、打ち切ったときの処理対象を主たる文章のノードであるとして抽出する。
【0063】
(第2の実施の形態の動作)
より具体的な実施方法の例としては、まず、summaryがHTMLソースの場合はタグ部を削除することでプレインテキストに変換し、第1の実施の形態で述べた正規化をする。もし、summaryがプレインテキストの場合は、単に正規化する。正規化の結果をテキスト1とする。
【0064】
一方で、比較対象となるノードに対しても、そのノードの配下に存在するテキストデータを取り出す。この際、既にタイトルとして抽出されているノードの配下となるテキストデータは、タイトルテキストであるとして除外する。タイトルを除外したテキストデータも、やはり正規化し、それをテキスト2とする。テキスト1と2を比較し、例えば、テキスト1がテキスト2に包含される場合に、それがノードであると特定して順次処理を打ち切る。あるいは、厳密に包含されるとは限らない可能性を考慮して、テキスト2の先頭から、テキスト1の文字数のR倍(Rは1.2程度で予め決めておく)程度までの文字数分のテキストを切り出し、それとテキスト1とのレーベンシュタイン距離が決められた距離以下といった類似性がみられるときに、「ほぼ包含されている」と判断しても良い。先頭から決められた条件の長さを切り出しているのは、もともとRSS配信時にsummaryにする際に、主に先頭からある程度の文字数分切り出して、必要に応じて多少のテキストの加工を行っていることが多いからであり、テキスト2全体とのレーベンシュタイン距離を求めると切り出された以降のテキストデータ分の距離が加算され、不必要にレーベンシュタイン距離が大きくなるのを防ぐ目的がある。
【0065】
第2の実施の形態についても、第1の実施の形態と同じような効果がある。また、第1の実施の形態と同様に、出力部15をも備えるよう構成してもよい。
【符号の説明】
【0066】
1…文章検索装置
11…概要文書取得部
12…木構造データ記憶部
13…タイトルノード検索部
14…文章ノード検索部
15…出力部
【技術分野】
【0001】
本発明は、ネットワーク上の文書を検索し出力する装置であって、特に、出力時に、文書中から主たる文章だけを抽出することを可能とする文章検索装置に関する。
【背景技術】
【0002】
現在、ネットワーク上には、URLという形式により指定され、主にHTMLというフォーマットにより記述された文書(以下、Web文書と呼ぶ)が多数存在する。しかしながら、多くのWeb文書は、そのWeb文書の主内容となる本文(主たる文章と呼ぶ)の他にも、広告や、関連サイトへのリンク、同一サイト内の別Web文書へナビゲートするためのリンクなどが含まれている。
【0003】
このようなWeb文書を、特に、携帯端末のように大きさが限られた端末や、公共空間に設置されたサイネージディスプレイなどに表示する場合には、本文のみを抽出して出力されることが望まれる。
【0004】
また、検索エンジンにより、キーワードを入力してネットワーク上のWeb文書検索を行う場合にも、広告や、関連サイトへのリンク、同一サイト内の別Web文書へナビゲートするためのリンクなどにキーワードがヒットすることは、必ずしも検索目的に沿うものではないので、やはり、本文のみを抽出されることが望まれる。
【0005】
しかしながら、Web文書を記述するHTMLでは、本文、広告、ナビゲーションリンクなどによるタグの構成に特別な差異はないため、本文のみを抽出するのは必ずしも容易ではない。
【0006】
このような要望を可能とする従来技術として、特許文献1によれば、Web文書のデータをプレインテキスト化し、統計的な手法を適用することにより、本文と推定される箇所を抽出する技術が開示されている。
【0007】
また、関連する背景技術として、RSSと呼ばれる技術が一般に知られている。RSSは、「RDF Site Summary」あるいは「Rich Site Summary」あるいは「Really Simple Syndication」の略とされ、参考サイト1、2のように複数のバージョンにより規格の差異等もあるが、共通することは、配信されるWeb文書の概要を、XML形式により配信する技術である。概要としては、ほとんどの場合において、Web文書の本文のタイトルや、本文の一部抜粋が含まれている。現在では、特に、ニュースサイトやブログサイトなど更新されることが多いサイトを中心として、非常に多くのサイトでRSSも配信されている。また、RSSと類似する技術として、参考サイト3のATOMがあり、RSSと同様にWeb文書の概要をXML形式により記述し配信することができる。以下、RSSの各バージョンおよびATOMを総称して、単にRSSと記述する。RSSでは、タイトルや本文抜粋などの項目をどのタグで記述するのかが規定されているため、HTMLとは異なり、タグの構成を解析することで、各項目を抽出することは容易である。なお、RSSにはバージョンによる差異があるが、各バージョンのRSS(ATOMを含む)には、そのバージョン自体が記述されているので、その情報を取得し、記述されているバージョンに応じた解析処理を行うことで、バージョンによる差異の課題は回避することができる。
【0008】
参考サイト1:http://web.resource.org/rss/1.0/spec
参考サイト2:http://www.rssboard.org/rss-specification
参考サイト3:http://www.ietf.org/wg/concluded/atompub
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2006−338364号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、特許文献1の方法では、統計的手法を利用するため、統計的に有意な推定を行うために十分なデータを収集する必要がある。あるいは、これらのデータが十分でない場合には、有効な推定結果を得ることができない。また、十分なデータを収集したとしても不可避な推定誤差が存在するという課題がある。
【0011】
RSSを使用する場合は、XMLにより配信されるデータを、その規格に従って解析すればよいため、このような統計的手法に起因する課題はない。しかしながら、多くの場合、RSSにより配信されるのは、本文の抜粋のみであって、本文内容のごく一部しか含まれていない。すなわち、RSSのみからでは、本文全ての情報を取得することはできないという課題がある。
【0012】
また、現在のWeb文書は、CSSと呼ばれるデザイン上の指定を含むことが殆どであり、利用者がWeb文書を閲覧する際には、その指定に基づいて表示された状態で見ている。一方で、いずれの従来技術においても、主にWeb文書のテキストデータに関するデータだけを抽出する。そのため、これら従来技術により抽出された結果には元のWeb文書のデザインを適用することができず、そのために利用者が抽出された結果の表示を見た際に、元のWeb文書から抽出した結果であることを認識しにくくなるという課題がある。
【課題を解決するための手段】
【0013】
このような課題を解決するために、Web文書と共に配信されるRSS情報を利用し、そのRSSフィードに記載された「タイトル」に極めて類似した箇所を、HTMLを変換した木構造データ(DOM)上で検索し、必要に応じてそのスタイルを考慮しながら特定することで、Web文書の本文を抽出する。
【0014】
第1の本発明は、ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルを取り出す機能を有する概要文書取得部と、前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記スタイルデータを検査することにより、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部とを備えることを特徴とする文章検索装置をもって解決手段とする。
【0015】
第2の本発明は、ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルと概要を取り出す機能を有する概要文書取得部と、前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記概要文書取得部により取得された概要との包含性を測定し、測定された包含性に基づいて、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部とを備えることを特徴とする文章検索装置をもって解決手段とする。
【0016】
第3の本発明は、第1または第2の本発明において、前記文章ノード検索部により特定された前記木構造のデータ上の前記ノードと親子関係にないノードを削除あるいは非表示にすることによって当該文書の主たる文章のみを表示する機能を有する出力部を備えることを特徴とする文章検索装置をもって解決手段とする。
【発明の効果】
【0017】
本発明によれば、統計的手法に依存せず、高い精度でWeb文書中の主たる文章を抽出することが可能となる。また、DOM上で特定できるので、デザイン性を保持した状態での抽出結果とすることが可能となる。
【図面の簡単な説明】
【0018】
【図1】第1の実施の形態に係る文章検索装置の構成図である。
【図2】概要文書取得部11の処理フロー(1)を示す図である。
【図3】概要文書取得部11の処理フロー(2)を示す図である。
【図4】タイトルノード検索部13の処理フロー(1)を示す図である。
【図5】タイトルノード検索部13の処理フロー(2)を示す図である。
【図6】HTMLサンプルを示す図である。
【図7】HTMLサンプルの表示例を示す図である。
【図8】HTMLサンプルのDOM変換例を示す図である。
【図9】出力部15を含む文章検索装置1の構成図である。
【図10】本実施の形態を適用する前の表示例を示す図である。
【図11】本実施の形態を適用した後の表示例を示す図である。
【発明を実施するための形態】
【0019】
以下、本発明の実施の形態について図面を参照して説明する。
【0020】
(第1の実施の形態)
図1は、本発明の実施の形態に係る文章検索装置の全体構成図である。
【0021】
文章検索装置1は、RSSにより配信される当該Web文書の概要データを取得する概要文書取得部11と、当該Web文書のデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部12と、木構造のデータからWeb文書の主たる文章のタイトルとなるノードを検索して特定するタイトルノード検索部13と、特定されたタイトルとなるノードを起点として木構造のデータから主たる文章のノードを検索して特定する文章ノード検索部14とを備える。
【0022】
本実施の形態は、ネットワークに接続されCPU、メモリ、HDDなどを備えた汎用的な計算機上で、以下で述べるような各部機能の動作をさせるためのプログラムを稼働させることより、実施することが可能である。なお、各部は、同一の計算機上で実施することも可能であるし、各部を個別の計算機上で機能させ、ネットワーク通信により必要なパラメータを送信して、複数の計算機上で実施することも可能である。
【0023】
(第1の実施の形態の動作)
概要文書取得部11の処理フローを、図2、図3に示す。
【0024】
まず、RSSを取得するために指定されたURLに対して、HTTPにより要求を行い、その返答(RSSデータ)を受けとる(S1)。URLの指定については、多くのWebサイトには、そこで配信されるWeb文書に関するRSSを取得するためのリンクが明記されているので、そのリンク先URLを、予め利用者が設定するという方法がある。また、現在の多くのWeb文書には、metaタグの中に、RSS取得先が埋め込まれていることがあるので、そのmetaタグの内容を解析してアクセスするように構成することも可能である。
【0025】
アクセスすると、RSSデータがXML形式で返却されるので、そのXMLデータを解析する(S3)。例えば、http://www.feedparser.org/で開示されているUniversal Feed Parserというライブラリソフトウェアを使用すると、RSSのバージョン(ATOMを含む)の差異を吸収して、取得されたデータの解析を行うことが可能となる。なお、本発明の実施において、Universal Feed Parserの使用は必須ではない。ただし、RSSのバージョンによって、解析して取得すべき項目のタグ名称が若干異なるので、以下の説明においては、Universal Feed Parserのドキュメント[http://www.feedparser.org/docs/reference.html]で使用している名称に準じて記載する。
【0026】
RSSでは、複数のWeb文書に関する情報が含まれている。各Web文書の情報は、entriesという配列として取得することができ、i番目のWeb文書の情報のうち、タイトル(entries[i].title)とアクセス先URL(entries[i].link)を取得する。RSSに規定されている項目は多岐に渡るが、実際に配信時に設定されている項目は必ずしも多くない。しかしながら、このタイトルとアクセス先URLについては、ほぼ全てのRSS配信データに含まれている。
【0027】
解析後の動作の詳細な実現方式については、本実施の形態の使用目的に応じて、いくつかの実施方式があり、下記に3例述べる。
【0028】
予め、抽出対象となるURLが決まっている(そのURLをTarget_URLとする)場合は、entries[i].linkが一致するものを配列から検索し、entries[i].titleと共に、タイトルノード検索部13にパラメータとして渡す。(図2:S5、S7)
特に決まっていない場合は、例えば、配列の先頭のentries[0].titleとentries[0].linkをタイトルノード検索部13にパラメータとして渡してもよい(特に図示せず)。
【0029】
あるいは、一定時間を置いて、iを+1しながら、順次entries[i].titleとentries[i].linkをタイトルノード検索部13にパラメータとして渡してもよい(図3:S11〜S15)。
【0030】
木構造データ記憶部12は、指定されたURLに対して、HTTPにより要求を行い、そのレスポンスとしてHTMLを取得する。取得したHTMLは、Document Object Model (DOM) [http://www.w3.org/DOM/DOMTR]の規定に従って、ツリー状のデータ構造に変換し、メモリ等に記憶する。木構造であるDOMデータは、HTMLの各タグデータが木構造のノードを構成しており、表示されるデータとしては、BODYタグによるノードが、最上位となる。更に、DOMの規定の一部であるCascading Style Sheet(CSS)についても解析し、各データ構造におけるサイズ等のスタイルについても変換しておく。CSSはそのWeb文書のHTML内に直接記述されている場合と、HTML内にはCSS取得先URLが書かれていてそのURLにアクセスすることで取得する必要がある場合がある。後者のような外部CSSの読み込みも含めたこのような変換は、現在のほとんどのブラウザソフトウェアで実現されている公知の技術である。
【0031】
また、DOMという木構造データに展開されたWeb文書に対して、一般にJavaScriptとして公知の技術を利用することにより、例えば、次のようなデータの検索動作は、容易に実施することができる。
【0032】
・ 木構造に従って、特定のノードの上位ノードや下位ノードを検索すること
・ 特定のタグ名をもつDOM上のノードデータを検索すること
・ 特定の属性値をもつDOM上のノードデータを検索すること
・ 特定のDOMノードの属性値を検索すること
・ 特定のDOMノードに属するテキストデータを検索すること
・ 特定のDOMノードの配下の全ノードに属するテキストデータを検索すること
・ 通常属するテキストデータが存在しないタグ(例:imgタグ)において、テキストデータの代替として、そのタグのalt属性値のデータを検索すること
・ 特定のDOMノードの表示・非表示状態を検索すること
・ 特定のDOMノードが表示状態のとき、その表示上のサイズ(高さおよび幅)を検索すること
本実施の形態においても、これら公知の技術により、木構造データ記憶部12は本発明の他の構成部に対して、上述した各動作機能を提供することができる。
【0033】
タイトルノード検索部13の処理フローを、図4、図5に示す。
【0034】
本実施の形態におけるタイトルノード検索部13の動作としては、どちらの処理フローによっても実施できるが、まず、より簡易な図4について説明する。
【0035】
タイトルノード検索部13は、前記概要文書取得部11からタイトル(title)とアクセス先URL(link)をパラメータとして渡されて起動する(S101)。
【0036】
まず、linkとして渡されたURLのDOMデータを、木構造データ記憶部12にアクセスして取得する(S103)。もし、木構造データ記憶部12に当該URLのDOMデータがまだ記憶されていない場合には、木構造データ記憶部12に対してネットワーク経由で取得し、記憶するように指示すればよい。
【0037】
タイトルとしてRSSで配信されるテキストは、多くの場合、HTML内では、H1, H2, H3, H4, H5のいずれかのタグ(以下、headingタグと総称する)で記述されている。そのため、まず、DOM内から、headingタグのノードを取り出し、取り出された各ノード配下に含まれるテキスト情報を取得する。タグがimgの場合は、テキストの代替としてalt属性値を利用しても良い。これらの動作は、木構造データ記憶部12により提供される機能を利用して実施できる。
【0038】
次に、このようにして取得されたテキストデータと、パラメータとして渡されたtitleとを比較して、類似度が高いデータを検索する。
【0039】
類似度の算出に当たっては、まず、それぞれのテキストデータを、正規化する。ここで、正規化とは、次のような処理のことを指し、これによって、テキストデータとしての表記上の差異が小さくなる。
【0040】
・テキストのエンコードを統一する(例えば全てunicode変換する)
・英数字記号カタカナ等の全角、半角表示を統一する(例えば全て半角変換する)
・英字の大文字小文字を統一する(例えば全て小文字変換する)
・空白の表記を統一する(例えば、全角スペースやタブや改行などを全て半角スペースに変換し、2文字以上連続する半角スペースを1文字半角スペースに置換する。また文頭、文末のスペースは削除する)
このようにして正規化を行ってから、titleとheadingタグのテキストデータを比較し、一致するheadingタグデータを取得する。
【0041】
なお、サイトによっては、RSS配信時に、何らかの文字を付加したり、逆に各サイトで決められた文字数以上の場合には一部を削除したりしている可能性もあり、あるいは一部の文字を別の文字に置き換えている可能性もある。その場合は正規化によっても同一のテキストとはならないため、一致するという条件を緩和し、例えば、
・一方のテキストが、他方のテキストに包含される
・2つのテキストデータ間のレーベンシュタイン距離を算出し、その距離が予め決められた条件より小さい
といった条件の1つあるいは複数に合致するheadingタグデータを取得してもよい。なお、レーベンシュタイン距離とは、一方のテキストデータから何回の文字単位の編集操作で他方のテキストデータに変換できるかを計る数値であり、すなわち値が小さいほど2つのテキストデータが類似していると判断できる。[http://www.merriampark.com/ld.htm]などで開示されている方法により算出することが可能である。
【0042】
このようにして、「類似度が高い」と判断されたheadingタグノードは、特定されるべきタイトルノードの候補として、一時的な配列領域に記憶される(S105、S1051,S1052)。
【0043】
取得されたheadingタグノードは、1つとは限らない。すなわち、候補配列領域に複数のノードが記憶されている可能性がある。そのため、複数のheadingタグノードが取得された場合には、各データのCSSに基づき、例えば次のような方法により最適となるノードを選択する(S107)。
【0044】
・フォントサイズが最大のもの
・フォントサイズ最大なものが複数ある場合は、画面に配置した際により上のほうにあるもの
このようにして選択されたノードは、本文のタイトルを表すデータであるとして、次の文章ノード検索部14へパラメータとして送られる(S109)。
【0045】
次に、図4より好適な実施例となる図5について説明する。
【0046】
図4のフローでは、類似度の判定において条件に合致するheadingタグデータが1つもない可能性がある。HTMLにおいて、あえて、headingタグを使わずに、DIVタグやTABLEタグ内のTDタグなどにより記述され、適切なCSSを設定することによって、利用者にとってタイトルと認識できるようにデザインされている場合が主に考えられる。そのような場合にも対処するためは、headingタグに限定せず、全ての表示状態のタグに対して、前述のような正規化テキストの比較と最適なタグの選択を行えばよい。表示状態であるか否かは、木構造データ記憶部12の機能を利用して判断可能である。このような処理を行うと、1つも選択されない可能性が小さくなる代わりに、対象となるタグデータが増大するため、処理時間の問題が発生する可能性がある。そのため、まずはheadingタグを対象として処理を行い、headingタグからは見つけられなかった場合にのみ、全表示タグデータを対象として処理を行う、といった実施方法はより好適である。全表示タグデータを対象とした処理においても、タイトルを検索できなかった場合は、なんらかの原因によりRSSに対応するHTMLでなかったと判断し、エラーとして処理を打ち切る。
【0047】
図5のフロー図は、これを具現化したものである。すなわち、ステップS101からS1052までは図4と同じ処理を行い、ステップS111において候補として一時的に記憶されている配列の長さをチェックする。長さが1以上の場合は、図4と同じ処理を行うが、長さが0であった場合には、ステップS113以降の処理へすすむ。ステップS113、S1131、S1132では、図4の処理と同じことを、headingタグノードに限定せず、全ての表示状態のタグノードに対して処理を行う。
【0048】
つまり、DOM上の全ての表示状態のタグに対して後述のステップS1131、1132を行う(S113)。ステップS1131では、対象タグ配下のテキスト情報とパラメータtitleとの類似度を算出する。続くステップS1132では、類似度が予め決められた値より大きければ、対象タグを「候補」の配列に追加する。
【0049】
次に、ステップS115において候補として一時的に記憶されている配列の長さをチェックする。長さが1以上の場合は、図4と同じ処理を行う(S107、S109)。長さが0であった場合には、エラーで処理を打ち切る(S117)。
【0050】
文章ノード検索部14は、タイトルノード検索部13で検索されたDOM上のタイトル位置を受け取り、それに続く本文を抽出する。なお、本発明に置いて、タイトルと本文をあわせた箇所を主たる文章と呼ぶ。そのためには、ツリー状のデータ構造をしているDOMを、タイトルのノードから、Web文書で表示される木構造データの根をなしているBODYタグのノードに向かって、順次たどる処理を行い、たどられたノードの大きさを木構造データ記憶部12から取得する。タイトルと本文は、DOMデータ上としては、通常、ある程度近い関係をなし、すなわち、主たる文章として統合されたDOM上のノードとしてタイトルノードからBODYノードをたどる間に存在しており、しかもタイトルに本文が付くことによって、表示上の大きさ(特に高さ)が急に大きくなるという性質がある。このため、例えば次のような条件を満たすときに、順次たどる処理を中止してそのときのDOM上のノードを、抽出したい主たる文章のノードとして特定することができる。
【0051】
条件例1:予め決められた高さを超える(300ピクセル以上など)
条件例2:タイトルの高さと当該ノードの高さの比を求め、予め決められた比を超える(タイトルの高さの5倍以上など)
条件例3:ノードをBODYに向かって順次処理する際に、直前のノードとの面積の比を求め、予め決められた比を超える(直前のノードの面積の5倍以上など)
以上の処理について、図6、7、8に示すHTMLのサンプルにより説明する。
【0052】
図7は、図6のHTMLを通常のブラウザで表示したときの表示例である。なお、タグにclass属性によりそのクラスが指定されているものについては、「.」(ドット)記法により示している。例えば、<DIV class="bttl">により指定されるDOMデータのノードは「DIV.bttl」と表記している。
【0053】
図8は、DOMに展開した際の木構造データを示している。このうち、網がけされた「H2」ノードが、タイトルノード検索部13で特定されたタイトルである。
【0054】
文章ノード検索部14では、この「H2」から「DIV.ettl」「DIV.ent」「DIV.left」「BODY」の順に木構造をたどる。まず、「H2」から「DIV.ettl」に移り、高さを比較する。
【0055】
この場合には、ほとんど高さが変わらないために、予め決められた条件を満たさないため、主たる文章ではないと判断し、処理を次の「DIV.ent」に移す。「DIV.ent」の高さは大きく増加するので、予め決められた条件を満たすことになり、この「DIV.ent」部が、主たる文章であると判断される。
【0056】
以上述べた実施の形態により、Web文書のタイトルと本文を合わせた主たる文章を抽出することが可能である。また上述したように、処理の途中において、タイトル部を特定しているので、抽出された主たる文章の内、タイトル部を除いた箇所を、本文として特定し抽出することも可能である。
【0057】
本実施の形態の効果として、以上のようにして抽出された主たる文章の利用例について述べる。
【0058】
例えば、Webブラウザのように、Web文書を表示するためのシステムで、HTMLデータをCSSデータと共にDOMに変換した後、本実施の形態により抽出された主たる文章のDOM上のノードと親子関係(上位下位関係)にない全てのノードを削除あるいは非表示とすることによって、広告やナビゲーションリンクなどの表示を無くした主たる文章のみのWeb文書表示装置とすることができる。しかも、この場合は元のWeb文書のCSS指定が正しく残されているため、フォント、サイズ、色などのデザインが正しく適用されるので、このようなデザインを含めた本文抽出が可能となる。このように、主たる文章と親子関係にないノードを削除あるいは非表示化して出力するという機能を持った出力部15を含む文章検索装置1の構成図を図9に示す。また、図10、11に、実際に本実施の形態を適用した例を示す。この例では、RSSにより、URL「http://www.ntt.co.jp/RD/OFIS/keyword/」とタイトル「キーワードでわかる先端技術」を取得して、本発明の技術を適用し、記事の主たる文章以外のDOMを非表示にすることにより、図11のような表示を得ることができる。
【0059】
また、別の例として検索エンジンに使用する場合には、本実施の形態により特定された主たる文章に属するテキストデータのみを対処として、検索エンジン用のデータベース等に蓄積することにより、利用者の意図しない検索結果を避けることが可能となる。
【0060】
(第2の実施の形態)
第2の実施の形態では、まず、概要文書取得部11にて、第1の実施の形態で述べた項目に加えて、entries[i].summaryも取得する。このsummaryには、通常、本文か、本文の一部(特に、最初の数行分程度)がプレインテキストあるいはHTMLソースとして入っている。
【0061】
木構造データ記憶部12とタイトルノード検索部13は、第1の実施の形態と同じように構成する。
【0062】
文章ノード検索部14では、タイトルノード検索部13で抽出されたDOM上のタイトル位置と、概要文書取得部11から得られるsummaryをパラメータとして受け取って起動される。第2の実施の形態においても、第1の実施の形態と同様にタイトルからBODYノードに向かって順次木構造(ツリー)をたどる処理を行うが、処理を打ち切る条件としては、第1の実施の形態のようにデザインにより確認するのではなく、パラメータとして受け取ったsummaryとの比較により行い、summaryによく合致するノードであると判断される場合に処理を打ち切り、打ち切ったときの処理対象を主たる文章のノードであるとして抽出する。
【0063】
(第2の実施の形態の動作)
より具体的な実施方法の例としては、まず、summaryがHTMLソースの場合はタグ部を削除することでプレインテキストに変換し、第1の実施の形態で述べた正規化をする。もし、summaryがプレインテキストの場合は、単に正規化する。正規化の結果をテキスト1とする。
【0064】
一方で、比較対象となるノードに対しても、そのノードの配下に存在するテキストデータを取り出す。この際、既にタイトルとして抽出されているノードの配下となるテキストデータは、タイトルテキストであるとして除外する。タイトルを除外したテキストデータも、やはり正規化し、それをテキスト2とする。テキスト1と2を比較し、例えば、テキスト1がテキスト2に包含される場合に、それがノードであると特定して順次処理を打ち切る。あるいは、厳密に包含されるとは限らない可能性を考慮して、テキスト2の先頭から、テキスト1の文字数のR倍(Rは1.2程度で予め決めておく)程度までの文字数分のテキストを切り出し、それとテキスト1とのレーベンシュタイン距離が決められた距離以下といった類似性がみられるときに、「ほぼ包含されている」と判断しても良い。先頭から決められた条件の長さを切り出しているのは、もともとRSS配信時にsummaryにする際に、主に先頭からある程度の文字数分切り出して、必要に応じて多少のテキストの加工を行っていることが多いからであり、テキスト2全体とのレーベンシュタイン距離を求めると切り出された以降のテキストデータ分の距離が加算され、不必要にレーベンシュタイン距離が大きくなるのを防ぐ目的がある。
【0065】
第2の実施の形態についても、第1の実施の形態と同じような効果がある。また、第1の実施の形態と同様に、出力部15をも備えるよう構成してもよい。
【符号の説明】
【0066】
1…文章検索装置
11…概要文書取得部
12…木構造データ記憶部
13…タイトルノード検索部
14…文章ノード検索部
15…出力部
【特許請求の範囲】
【請求項1】
ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルを取り出す機能を有する概要文書取得部と、
前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、
前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、
前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記スタイルデータを検査することにより、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部と
を備えることを特徴とする文章検索装置。
【請求項2】
ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルと概要を取り出す機能を有する概要文書取得部と、
前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、
前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、
前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記概要文書取得部により取得された概要との包含性を測定し、測定された包含性に基づいて、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部と
を備えることを特徴とする文章検索装置。
【請求項3】
前記文章ノード検索部により特定された前記木構造のデータ上の前記ノードと親子関係にないノードを削除あるいは非表示にすることによって当該文書の主たる文章のみを表示する機能を有する出力部
を備えることを特徴とする請求項1または2記載の文章検索装置。
【請求項4】
請求項1ないし3のいずれかに記載の文章検索装置としてコンピュータを機能させるためのコンピュータプログラム。
【請求項1】
ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルを取り出す機能を有する概要文書取得部と、
前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、
前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、
前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記スタイルデータを検査することにより、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部と
を備えることを特徴とする文章検索装置。
【請求項2】
ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルと概要を取り出す機能を有する概要文書取得部と、
前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、
前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、
前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記概要文書取得部により取得された概要との包含性を測定し、測定された包含性に基づいて、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部と
を備えることを特徴とする文章検索装置。
【請求項3】
前記文章ノード検索部により特定された前記木構造のデータ上の前記ノードと親子関係にないノードを削除あるいは非表示にすることによって当該文書の主たる文章のみを表示する機能を有する出力部
を備えることを特徴とする請求項1または2記載の文章検索装置。
【請求項4】
請求項1ないし3のいずれかに記載の文章検索装置としてコンピュータを機能させるためのコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−146065(P2012−146065A)
【公開日】平成24年8月2日(2012.8.2)
【国際特許分類】
【出願番号】特願2011−3037(P2011−3037)
【出願日】平成23年1月11日(2011.1.11)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成24年8月2日(2012.8.2)
【国際特許分類】
【出願日】平成23年1月11日(2011.1.11)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]