(57)【特許請求の範囲】
【請求項１】
ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルを取り出す機能を有する概要文書取得部と、
前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、
前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、
前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記スタイルデータに基づいてノードのスタイルが所定の条件を満たすか否かを判定することにより、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部と
を備えることを特徴とする文章検索装置。
【請求項２】
ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルと概要を取り出す機能を有する概要文書取得部と、
前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、
前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、
前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記概要文書取得部により取得された概要のテキストと比較対象であるノードのテキストの先頭から予め定められた規則により切り出したテキストとの間のレーベンシュタイン距離に基づいて、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部と
を備えることを特徴とする文章検索装置。
【請求項３】
前記文章ノード検索部により特定された前記木構造のデータ上の前記ノードと親子関係にないノードを削除あるいは非表示にすることによって当該文書の主たる文章のみを表示する機能を有する出力部
を備えることを特徴とする請求項１または２記載の文章検索装置。
【請求項４】
請求項１ないし３のいずれかに記載の文章検索装置としてコンピュータを機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上の文書を検索し出力する装置であって、特に、出力時に、文書中から主たる文章だけを抽出することを可能とする文章検索装置に関する。
【背景技術】
【０００２】
現在、ネットワーク上には、URLという形式により指定され、主にHTMLというフォーマットにより記述された文書（以下、Web文書と呼ぶ）が多数存在する。しかしながら、多くのWeb文書は、そのWeb文書の主内容となる本文（主たる文章と呼ぶ）の他にも、広告や、関連サイトへのリンク、同一サイト内の別Web文書へナビゲートするためのリンクなどが含まれている。
【０００３】
このようなWeb文書を、特に、携帯端末のように大きさが限られた端末や、公共空間に設置されたサイネージディスプレイなどに表示する場合には、本文のみを抽出して出力されることが望まれる。
【０００４】
また、検索エンジンにより、キーワードを入力してネットワーク上のWeb文書検索を行う場合にも、広告や、関連サイトへのリンク、同一サイト内の別Web文書へナビゲートするためのリンクなどにキーワードがヒットすることは、必ずしも検索目的に沿うものではないので、やはり、本文のみを抽出されることが望まれる。
【０００５】
しかしながら、Web文書を記述するHTMLでは、本文、広告、ナビゲーションリンクなどによるタグの構成に特別な差異はないため、本文のみを抽出するのは必ずしも容易ではない。
【０００６】
このような要望を可能とする従来技術として、特許文献１によれば、Web文書のデータをプレインテキスト化し、統計的な手法を適用することにより、本文と推定される箇所を抽出する技術が開示されている。
【０００７】
また、関連する背景技術として、RSSと呼ばれる技術が一般に知られている。RSSは、「RDF Site Summary」あるいは「Rich Site Summary」あるいは「Really Simple Syndication」の略とされ、参考サイト１、２のように複数のバージョンにより規格の差異等もあるが、共通することは、配信されるWeb文書の概要を、XML形式により配信する技術である。概要としては、ほとんどの場合において、Web文書の本文のタイトルや、本文の一部抜粋が含まれている。現在では、特に、ニュースサイトやブログサイトなど更新されることが多いサイトを中心として、非常に多くのサイトでRSSも配信されている。また、RSSと類似する技術として、参考サイト３のATOMがあり、RSSと同様にWeb文書の概要をXML形式により記述し配信することができる。以下、RSSの各バージョンおよびATOMを総称して、単にRSSと記述する。RSSでは、タイトルや本文抜粋などの項目をどのタグで記述するのかが規定されているため、HTMLとは異なり、タグの構成を解析することで、各項目を抽出することは容易である。なお、RSSにはバージョンによる差異があるが、各バージョンのRSS（ATOMを含む）には、そのバージョン自体が記述されているので、その情報を取得し、記述されているバージョンに応じた解析処理を行うことで、バージョンによる差異の課題は回避することができる。
【０００８】
参考サイト１：http://web.resource.org/rss/1.0/spec
参考サイト２：http://www.rssboard.org/rss-specification
参考サイト３：http://www.ietf.org/wg/concluded/atompub
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−３３８３６４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１の方法では、統計的手法を利用するため、統計的に有意な推定を行うために十分なデータを収集する必要がある。あるいは、これらのデータが十分でない場合には、有効な推定結果を得ることができない。また、十分なデータを収集したとしても不可避な推定誤差が存在するという課題がある。
【００１１】
RSSを使用する場合は、XMLにより配信されるデータを、その規格に従って解析すればよいため、このような統計的手法に起因する課題はない。しかしながら、多くの場合、RSSにより配信されるのは、本文の抜粋のみであって、本文内容のごく一部しか含まれていない。すなわち、RSSのみからでは、本文全ての情報を取得することはできないという課題がある。
【００１２】
また、現在のWeb文書は、CSSと呼ばれるデザイン上の指定を含むことが殆どであり、利用者がWeb文書を閲覧する際には、その指定に基づいて表示された状態で見ている。一方で、いずれの従来技術においても、主にWeb文書のテキストデータに関するデータだけを抽出する。そのため、これら従来技術により抽出された結果には元のWeb文書のデザインを適用することができず、そのために利用者が抽出された結果の表示を見た際に、元のWeb文書から抽出した結果であることを認識しにくくなるという課題がある。
【課題を解決するための手段】
【００１３】
このような課題を解決するために、Web文書と共に配信されるRSS情報を利用し、そのRSSフィードに記載された「タイトル」に極めて類似した箇所を、HTMLを変換した木構造データ（DOM）上で検索し、必要に応じてそのスタイルを考慮しながら特定することで、Web文書の本文を抽出する。
【００１４】
第１の本発明は、ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルを取り出す機能を有する概要文書取得部と、前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記スタイルデータに基づいてノードのスタイルが所定の条件を満たすか否かを判定することにより、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部とを備えることを特徴とする文章検索装置をもって解決手段とする。
【００１５】
第２の本発明は、ネットワーク上の文書に関するアクセス先とタイトルを含み且つ予め規定されたフォーマットにより配信されるデータを読み込み、当該文書に関するアクセス先とタイトルと概要を取り出す機能を有する概要文書取得部と、前記概要文書取得部により取り出された文書のアクセス先にアクセスし、文書のデータと当該文書のスタイルデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部と、前記概要文書取得部により取り出されたタイトルと、前記木構造データ記憶部に記憶された木構造のデータのノードにおけるテキストデータとの類似性を測定し、測定された類似性に基づいて前記木構造のデータ上のタイトルを特定する機能を有するタイトルノード検索部と、前記タイトルノード検索部により特定された木構造のデータ上のタイトルから木構造の根までのノードをたどりながら、前記概要文書取得部により取得された概要のテキストと比較対象であるノードのテキストの先頭から予め定められた規則により切り出したテキストとの間のレーベンシュタイン距離に基づいて、前記木構造のデータ上の主たる文章を含むノードを特定する機能を有する文章ノード検索部とを備えることを特徴とする文章検索装置をもって解決手段とする。
【００１６】
第３の本発明は、第１または第２の本発明において、前記文章ノード検索部により特定された前記木構造のデータ上の前記ノードと親子関係にないノードを削除あるいは非表示にすることによって当該文書の主たる文章のみを表示する機能を有する出力部を備えることを特徴とする文章検索装置をもって解決手段とする。
【発明の効果】
【００１７】
本発明によれば、統計的手法に依存せず、高い精度でWeb文書中の主たる文章を抽出することが可能となる。また、DOM上で特定できるので、デザイン性を保持した状態での抽出結果とすることが可能となる。
【図面の簡単な説明】
【００１８】
【図１】第１の実施の形態に係る文章検索装置の構成図である。
【図２】概要文書取得部１１の処理フロー（１）を示す図である。
【図３】概要文書取得部１１の処理フロー（２）を示す図である。
【図４】タイトルノード検索部１３の処理フロー（１）を示す図である。
【図５】タイトルノード検索部１３の処理フロー（２）を示す図である。
【図６】ＨＴＭＬサンプルを示す図である。
【図７】ＨＴＭＬサンプルの表示例を示す図である。
【図８】ＨＴＭＬサンプルのＤＯＭ変換例を示す図である。
【図９】出力部１５を含む文章検索装置１の構成図である。
【図１０】本実施の形態を適用する前の表示例を示す図である。
【図１１】本実施の形態を適用した後の表示例を示す図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について図面を参照して説明する。
【００２０】
（第１の実施の形態）
図１は、本発明の実施の形態に係る文章検索装置の全体構成図である。
【００２１】
文章検索装置１は、RSSにより配信される当該Web文書の概要データを取得する概要文書取得部１１と、当該Web文書のデータを取得し、取得した文書のデータを木構造のデータに変換して記憶する木構造データ記憶部１２と、木構造のデータからWeb文書の主たる文章のタイトルとなるノードを検索して特定するタイトルノード検索部１３と、特定されたタイトルとなるノードを起点として木構造のデータから主たる文章のノードを検索して特定する文章ノード検索部１４とを備える。
【００２２】
本実施の形態は、ネットワークに接続されCPU、メモリ、HDDなどを備えた汎用的な計算機上で、以下で述べるような各部機能の動作をさせるためのプログラムを稼働させることより、実施することが可能である。なお、各部は、同一の計算機上で実施することも可能であるし、各部を個別の計算機上で機能させ、ネットワーク通信により必要なパラメータを送信して、複数の計算機上で実施することも可能である。
【００２３】
（第１の実施の形態の動作）
概要文書取得部１１の処理フローを、図２、図３に示す。
【００２４】
まず、RSSを取得するために指定されたURLに対して、HTTPにより要求を行い、その返答（ＲＳＳデータ）を受けとる（Ｓ１）。URLの指定については、多くのWebサイトには、そこで配信されるWeb文書に関するRSSを取得するためのリンクが明記されているので、そのリンク先URLを、予め利用者が設定するという方法がある。また、現在の多くのWeb文書には、metaタグの中に、RSS取得先が埋め込まれていることがあるので、そのmetaタグの内容を解析してアクセスするように構成することも可能である。
【００２５】
アクセスすると、RSSデータがXML形式で返却されるので、そのXMLデータを解析する（Ｓ３）。例えば、http://www.feedparser.org/で開示されているUniversal Feed Parserというライブラリソフトウェアを使用すると、RSSのバージョン（ATOMを含む）の差異を吸収して、取得されたデータの解析を行うことが可能となる。なお、本発明の実施において、Universal Feed Parserの使用は必須ではない。ただし、RSSのバージョンによって、解析して取得すべき項目のタグ名称が若干異なるので、以下の説明においては、Universal Feed Parserのドキュメント［http://www.feedparser.org/docs/reference.html］で使用している名称に準じて記載する。
【００２６】
RSSでは、複数のWeb文書に関する情報が含まれている。各Web文書の情報は、entriesという配列として取得することができ、i番目のWeb文書の情報のうち、タイトル（entries[i].title）とアクセス先URL（entries[i].link）を取得する。RSSに規定されている項目は多岐に渡るが、実際に配信時に設定されている項目は必ずしも多くない。しかしながら、このタイトルとアクセス先URLについては、ほぼ全てのRSS配信データに含まれている。
【００２７】
解析後の動作の詳細な実現方式については、本実施の形態の使用目的に応じて、いくつかの実施方式があり、下記に３例述べる。
【００２８】
予め、抽出対象となるURLが決まっている（そのURLをTarget_URLとする）場合は、entries[i].linkが一致するものを配列から検索し、entries[i].titleと共に、タイトルノード検索部１３にパラメータとして渡す。（図２：Ｓ５、Ｓ７）
特に決まっていない場合は、例えば、配列の先頭のentries[0].titleとentries[0].linkをタイトルノード検索部１３にパラメータとして渡してもよい（特に図示せず）。
【００２９】
あるいは、一定時間を置いて、iを+1しながら、順次entries[i].titleとentries[i].linkをタイトルノード検索部１３にパラメータとして渡してもよい（図３：Ｓ１１〜Ｓ１５）。
【００３０】
木構造データ記憶部１２は、指定された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の読み込みも含めたこのような変換は、現在のほとんどのブラウザソフトウェアで実現されている公知の技術である。
【００３１】
また、DOMという木構造データに展開されたWeb文書に対して、一般にJavaScriptとして公知の技術を利用することにより、例えば、次のようなデータの検索動作は、容易に実施することができる。
【００３２】
・ 木構造に従って、特定のノードの上位ノードや下位ノードを検索すること
・ 特定のタグ名をもつDOM上のノードデータを検索すること
・ 特定の属性値をもつDOM上のノードデータを検索すること
・ 特定のDOMノードの属性値を検索すること
・ 特定のDOMノードに属するテキストデータを検索すること
・ 特定のDOMノードの配下の全ノードに属するテキストデータを検索すること
・ 通常属するテキストデータが存在しないタグ（例：imgタグ）において、テキストデータの代替として、そのタグのalt属性値のデータを検索すること
・ 特定のDOMノードの表示・非表示状態を検索すること
・ 特定のDOMノードが表示状態のとき、その表示上のサイズ（高さおよび幅）を検索すること
本実施の形態においても、これら公知の技術により、木構造データ記憶部１２は本発明の他の構成部に対して、上述した各動作機能を提供することができる。
【００３３】
タイトルノード検索部１３の処理フローを、図４、図５に示す。
【００３４】
本実施の形態におけるタイトルノード検索部１３の動作としては、どちらの処理フローによっても実施できるが、まず、より簡易な図４について説明する。
【００３５】
タイトルノード検索部１３は、前記概要文書取得部１１からタイトル（title）とアクセス先URL（link）をパラメータとして渡されて起動する（Ｓ１０１）。
【００３６】
まず、linkとして渡されたURLのDOMデータを、木構造データ記憶部１２にアクセスして取得する（Ｓ１０３）。もし、木構造データ記憶部１２に当該URLのDOMデータがまだ記憶されていない場合には、木構造データ記憶部１２に対してネットワーク経由で取得し、記憶するように指示すればよい。
【００３７】
タイトルとしてRSSで配信されるテキストは、多くの場合、HTML内では、H1, H2, H3, H4, H5のいずれかのタグ（以下、headingタグと総称する）で記述されている。そのため、まず、DOM内から、headingタグのノードを取り出し、取り出された各ノード配下に含まれるテキスト情報を取得する。タグがimgの場合は、テキストの代替としてalt属性値を利用しても良い。これらの動作は、木構造データ記憶部１２により提供される機能を利用して実施できる。
【００３８】
次に、このようにして取得されたテキストデータと、パラメータとして渡されたtitleとを比較して、類似度が高いデータを検索する。
【００３９】
類似度の算出に当たっては、まず、それぞれのテキストデータを、正規化する。ここで、正規化とは、次のような処理のことを指し、これによって、テキストデータとしての表記上の差異が小さくなる。
【００４０】
・テキストのエンコードを統一する（例えば全てunicode変換する）
・英数字記号カタカナ等の全角、半角表示を統一する（例えば全て半角変換する）
・英字の大文字小文字を統一する（例えば全て小文字変換する）
・空白の表記を統一する（例えば、全角スペースやタブや改行などを全て半角スペースに変換し、２文字以上連続する半角スペースを１文字半角スペースに置換する。また文頭、文末のスペースは削除する）
このようにして正規化を行ってから、titleとheadingタグのテキストデータを比較し、一致するheadingタグデータを取得する。
【００４１】
なお、サイトによっては、RSS配信時に、何らかの文字を付加したり、逆に各サイトで決められた文字数以上の場合には一部を削除したりしている可能性もあり、あるいは一部の文字を別の文字に置き換えている可能性もある。その場合は正規化によっても同一のテキストとはならないため、一致するという条件を緩和し、例えば、
・一方のテキストが、他方のテキストに包含される
・２つのテキストデータ間のレーベンシュタイン距離を算出し、その距離が予め決められた条件より小さい
といった条件の１つあるいは複数に合致するheadingタグデータを取得してもよい。なお、レーベンシュタイン距離とは、一方のテキストデータから何回の文字単位の編集操作で他方のテキストデータに変換できるかを計る数値であり、すなわち値が小さいほど２つのテキストデータが類似していると判断できる。［http://www.merriampark.com/ld.htm］などで開示されている方法により算出することが可能である。
【００４２】
このようにして、「類似度が高い」と判断されたheadingタグノードは、特定されるべきタイトルノードの候補として、一時的な配列領域に記憶される（Ｓ１０５、Ｓ１０５１，Ｓ１０５２）。
【００４３】
取得されたheadingタグノードは、１つとは限らない。すなわち、候補配列領域に複数のノードが記憶されている可能性がある。そのため、複数のheadingタグノードが取得された場合には、各データのCSSに基づき、例えば次のような方法により最適となるノードを選択する（Ｓ１０７）。
【００４４】
・フォントサイズが最大のもの
・フォントサイズ最大なものが複数ある場合は、画面に配置した際により上のほうにあるもの
このようにして選択されたノードは、本文のタイトルを表すデータであるとして、次の文章ノード検索部１４へパラメータとして送られる（Ｓ１０９）。
【００４５】
次に、図４より好適な実施例となる図５について説明する。
【００４６】
図４のフローでは、類似度の判定において条件に合致するheadingタグデータが１つもない可能性がある。HTMLにおいて、あえて、headingタグを使わずに、DIVタグやTABLEタグ内のTDタグなどにより記述され、適切なCSSを設定することによって、利用者にとってタイトルと認識できるようにデザインされている場合が主に考えられる。そのような場合にも対処するためは、headingタグに限定せず、全ての表示状態のタグに対して、前述のような正規化テキストの比較と最適なタグの選択を行えばよい。表示状態であるか否かは、木構造データ記憶部１２の機能を利用して判断可能である。このような処理を行うと、１つも選択されない可能性が小さくなる代わりに、対象となるタグデータが増大するため、処理時間の問題が発生する可能性がある。そのため、まずはheadingタグを対象として処理を行い、headingタグからは見つけられなかった場合にのみ、全表示タグデータを対象として処理を行う、といった実施方法はより好適である。全表示タグデータを対象とした処理においても、タイトルを検索できなかった場合は、なんらかの原因によりRSSに対応するHTMLでなかったと判断し、エラーとして処理を打ち切る。
【００４７】
図５のフロー図は、これを具現化したものである。すなわち、ステップＳ１０１からＳ１０５２までは図４と同じ処理を行い、ステップＳ１１１において候補として一時的に記憶されている配列の長さをチェックする。長さが1以上の場合は、図４と同じ処理を行うが、長さが０であった場合には、ステップＳ１１３以降の処理へすすむ。ステップＳ１１３、Ｓ１１３１、Ｓ１１３２では、図４の処理と同じことを、headingタグノードに限定せず、全ての表示状態のタグノードに対して処理を行う。
【００４８】
つまり、ＤＯＭ上の全ての表示状態のタグに対して後述のステップＳ１１３１、１１３２を行う（Ｓ１１３）。ステップＳ１１３１では、対象タグ配下のテキスト情報とパラメータｔｉｔｌｅとの類似度を算出する。続くステップＳ１１３２では、類似度が予め決められた値より大きければ、対象タグを「候補」の配列に追加する。
【００４９】
次に、ステップＳ１１５において候補として一時的に記憶されている配列の長さをチェックする。長さが1以上の場合は、図４と同じ処理を行う（Ｓ１０７、Ｓ１０９）。長さが０であった場合には、エラーで処理を打ち切る（Ｓ１１７）。
【００５０】
文章ノード検索部１４は、タイトルノード検索部１３で検索されたDOM上のタイトル位置を受け取り、それに続く本文を抽出する。なお、本発明に置いて、タイトルと本文をあわせた箇所を主たる文章と呼ぶ。そのためには、ツリー状のデータ構造をしているDOMを、タイトルのノードから、Web文書で表示される木構造データの根をなしているBODYタグのノードに向かって、順次たどる処理を行い、たどられたノードの大きさを木構造データ記憶部１２から取得する。タイトルと本文は、DOMデータ上としては、通常、ある程度近い関係をなし、すなわち、主たる文章として統合されたDOM上のノードとしてタイトルノードからBODYノードをたどる間に存在しており、しかもタイトルに本文が付くことによって、表示上の大きさ（特に高さ）が急に大きくなるという性質がある。このため、例えば次のような条件を満たすときに、順次たどる処理を中止してそのときのDOM上のノードを、抽出したい主たる文章のノードとして特定することができる。
【００５１】
条件例１：予め決められた高さを超える（300ピクセル以上など）
条件例２：タイトルの高さと当該ノードの高さの比を求め、予め決められた比を超える（タイトルの高さの５倍以上など）
条件例３：ノードをBODYに向かって順次処理する際に、直前のノードとの面積の比を求め、予め決められた比を超える（直前のノードの面積の５倍以上など）
以上の処理について、図６、７、８に示すHTMLのサンプルにより説明する。
【００５２】
図７は、図６のHTMLを通常のブラウザで表示したときの表示例である。なお、タグにclass属性によりそのクラスが指定されているものについては、「.」（ドット）記法により示している。例えば、<DIV class="bttl">により指定されるDOMデータのノードは「DIV.bttl」と表記している。
【００５３】
図８は、DOMに展開した際の木構造データを示している。このうち、網がけされた「H2」ノードが、タイトルノード検索部１３で特定されたタイトルである。
【００５４】
文章ノード検索部１４では、この「H2」から「DIV.ettl」「DIV.ent」「DIV.left」「BODY」の順に木構造をたどる。まず、「H2」から「DIV.ettl」に移り、高さを比較する。
【００５５】
この場合には、ほとんど高さが変わらないために、予め決められた条件を満たさないため、主たる文章ではないと判断し、処理を次の「DIV.ent」に移す。「DIV.ent」の高さは大きく増加するので、予め決められた条件を満たすことになり、この「DIV.ent」部が、主たる文章であると判断される。
【００５６】
以上述べた実施の形態により、Web文書のタイトルと本文を合わせた主たる文章を抽出することが可能である。また上述したように、処理の途中において、タイトル部を特定しているので、抽出された主たる文章の内、タイトル部を除いた箇所を、本文として特定し抽出することも可能である。
【００５７】
本実施の形態の効果として、以上のようにして抽出された主たる文章の利用例について述べる。
【００５８】
例えば、Webブラウザのように、Web文書を表示するためのシステムで、HTMLデータをCSSデータと共にDOMに変換した後、本実施の形態により抽出された主たる文章のDOM上のノードと親子関係（上位下位関係）にない全てのノードを削除あるいは非表示とすることによって、広告やナビゲーションリンクなどの表示を無くした主たる文章のみのWeb文書表示装置とすることができる。しかも、この場合は元のWeb文書のCSS指定が正しく残されているため、フォント、サイズ、色などのデザインが正しく適用されるので、このようなデザインを含めた本文抽出が可能となる。このように、主たる文章と親子関係にないノードを削除あるいは非表示化して出力するという機能を持った出力部１５を含む文章検索装置１の構成図を図９に示す。また、図１０、１１に、実際に本実施の形態を適用した例を示す。この例では、RSSにより、URL「http://www.ntt.co.jp/RD/OFIS/keyword/」とタイトル「キーワードでわかる先端技術」を取得して、本発明の技術を適用し、記事の主たる文章以外のDOMを非表示にすることにより、図１１のような表示を得ることができる。
【００５９】
また、別の例として検索エンジンに使用する場合には、本実施の形態により特定された主たる文章に属するテキストデータのみを対処として、検索エンジン用のデータベース等に蓄積することにより、利用者の意図しない検索結果を避けることが可能となる。
【００６０】
（第２の実施の形態）
第２の実施の形態では、まず、概要文書取得部１１にて、第１の実施の形態で述べた項目に加えて、entries[i].summaryも取得する。このsummaryには、通常、本文か、本文の一部（特に、最初の数行分程度）がプレインテキストあるいはHTMLソースとして入っている。
【００６１】
木構造データ記憶部１２とタイトルノード検索部１３は、第１の実施の形態と同じように構成する。
【００６２】
文章ノード検索部１４では、タイトルノード検索部１３で抽出されたDOM上のタイトル位置と、概要文書取得部１１から得られるsummaryをパラメータとして受け取って起動される。第２の実施の形態においても、第１の実施の形態と同様にタイトルからBODYノードに向かって順次木構造（ツリー）をたどる処理を行うが、処理を打ち切る条件としては、第１の実施の形態のようにデザインにより確認するのではなく、パラメータとして受け取ったsummaryとの比較により行い、summaryによく合致するノードであると判断される場合に処理を打ち切り、打ち切ったときの処理対象を主たる文章のノードであるとして抽出する。
【００６３】
（第２の実施の形態の動作）
より具体的な実施方法の例としては、まず、summaryがHTMLソースの場合はタグ部を削除することでプレインテキストに変換し、第１の実施の形態で述べた正規化をする。もし、summaryがプレインテキストの場合は、単に正規化する。正規化の結果をテキスト１とする。
【００６４】
一方で、比較対象となるノードに対しても、そのノードの配下に存在するテキストデータを取り出す。この際、既にタイトルとして抽出されているノードの配下となるテキストデータは、タイトルテキストであるとして除外する。タイトルを除外したテキストデータも、やはり正規化し、それをテキスト２とする。テキスト１と２を比較し、例えば、テキスト１がテキスト２に包含される場合に、それがノードであると特定して順次処理を打ち切る。あるいは、厳密に包含されるとは限らない可能性を考慮して、テキスト２の先頭から、テキスト１の文字数のR倍（Rは1.2程度で予め決めておく)程度までの文字数分のテキストを切り出し、それとテキスト１とのレーベンシュタイン距離が決められた距離以下といった類似性がみられるときに、「ほぼ包含されている」と判断しても良い。先頭から決められた条件の長さを切り出しているのは、もともとRSS配信時にsummaryにする際に、主に先頭からある程度の文字数分切り出して、必要に応じて多少のテキストの加工を行っていることが多いからであり、テキスト２全体とのレーベンシュタイン距離を求めると切り出された以降のテキストデータ分の距離が加算され、不必要にレーベンシュタイン距離が大きくなるのを防ぐ目的がある。
【００６５】
第２の実施の形態についても、第１の実施の形態と同じような効果がある。また、第１の実施の形態と同様に、出力部１５をも備えるよう構成してもよい。
【符号の説明】
【００６６】
１…文章検索装置
１１…概要文書取得部
１２…木構造データ記憶部
１３…タイトルノード検索部
１４…文章ノード検索部
１５…出力部
【図１】
0005564442.tif 000002
【図２】
0005564442.tif 000003
【図３】
0005564442.tif 000004
【図４】
0005564442.tif 000005
【図５】
0005564442.tif 000006
【図６】
0005564442.tif 000007
【図７】
0005564442.tif 000008
【図８】
0005564442.tif 000009
【図９】
0005564442.tif 000010
【図１０】
0005564442.tif 000011
【図１１】
0005564442.tif 000012