(57)【要約】【課題】文書のサブ構造の単位で分析を行う場合に、文書単位で処理された処理結果を利用する。【解決手段】情報処理装置１は、対象の文書データを単語単位で符号化する際に、対象の文書データに出現する単語それぞれについて、出現位置をビットマップデータとして対応づけたインデックス情報を生成する。情報処理装置１は、文書データに含まれる特定のサブ構造それぞれについて、インデックス情報に含まれる出現位置との関係をビットマップデータとして対応づけた文書構造情報を生成する。情報処理装置１は、インデックス情報および文書構造情報を対応づけて記憶部４０に保持する。【選択図】図４
2018060463.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
対象の文書データを単語単位で符号化する際に、前記文書データに出現する単語それぞれについて、出現位置をビットマップデータとして対応づけたインデックス情報を生成し、
前記文書データに含まれる特定のサブ構造それぞれについて、前記インデックス情報に含まれる前記出現位置との関係をビットマップデータとして対応づけた文書構造情報を生成し、
前記インデックス情報および前記文書構造情報を対応づけて記憶部に保持する
処理を実行させる文書符号化プログラム。
【請求項２】
前記インデックス情報を生成する処理は、前記文書データに出現する単語ごとに、各単語に対応するビットマップデータの各単語の出現位置にビットを立てることで、前記インデックス情報を生成し、
前記文書構造情報を生成する処理は、前記文書データに含まれる特定のサブ構造ごとに、各サブ構造に対応するビットマップデータの各サブ構造の先頭の単語の出現位置にビットを立てることで、前記文書構造情報を生成する
ことを特徴とする請求項１に記載の文書符号化プログラム。
【請求項３】
前記記憶部に保持された前記インデックス情報に含まれる単語ごとのビットマップデータと、前記記憶部に保持された前記文書構造情報に含まれる特定のサブ構造のビットマップデータを用いた論理演算により、特定のサブ構造に出現する単語ごとの出現頻度を集計する
ことを特徴とする請求項１に記載の文書符号化プログラム。
【請求項４】
前記集計は、前記ビットマップデータを用いて前記特定のサブ構造に出現する単語それぞれのビットを立てて、前記特定のサブ構造に出現する単語ごとの出現頻度を集計する、ことを特徴とする請求項３に記載の文書符号化プログラム。
【請求項５】
検索対象の文書データが前記対象の文書データと類似するか否かを判定する際に、前記インデックス情報および前記文書構造情報を用いて、前記検索対象の文書データに含まれる単語の数と近い数の単語を有するサブ構造を特定し、
該集計する処理は、前記インデックス情報および前記文書構造情報を用いて、該特定したサブ構造に出現する単語ごとの出現頻度を集計する
ことを特徴とする請求項３に記載の文書符号化プログラム。
【請求項６】
検索対象の文書データが前記対象の文書データと類似するか否かを判定する際に、前記検索対象の文書データに出現する単語の特徴量を算出し、特徴量に基づいて規定量より大きい特徴量を有する複数の単語を抽出し、
該集計する処理は、前記インデックス情報および前記文書構造情報を用いて、該特定したサブ構造に出現する複数の単語であって該抽出した複数の単語それぞれの出現頻度を集計する
ことを特徴とする請求項４に記載の文書符号化プログラム。
【請求項７】
対象の文書データを単語単位で符号化する際に、前記文書データに出現する単語それぞれについて、出現位置をビットマップデータとして対応づけたインデックス情報を生成する第１の生成部と、
前記文書データに含まれる特定のサブ構造それぞれについて、前記インデックス情報に含まれる前記出現位置との関係をビットマップデータとして対応づけた文書構造情報を生成する第２の生成部と、
前記インデックス情報および前記文書構造情報を対応づけて記憶部に保持する保持部と
を有することを特徴とする情報処理装置。
【請求項８】
コンピュータが、
対象の文書データを単語単位で符号化する際に、前記文書データに出現する単語それぞれについて、出現位置をビットマップデータとして対応づけたインデックス情報を生成し、
前記文書データに含まれる特定のサブ構造それぞれについて、前記インデックス情報に含まれる前記出現位置との関係をビットマップデータとして対応づけた文書構造情報を生成し、
前記インデックス情報および前記文書構造情報を対応づけて記憶部に保持する
各処理を実行することを特徴とする文書符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書符号化プログラムなどに関する。
【背景技術】
【０００２】
解析対象の文書に用いられている単語の頻度を集計し、頻度の集計結果に基づきクラスタ分析や文書間の距離測定（類似度の測定）を行う手法が存在する。文書間の類似度の測定では、ある文書に類似する文書を検索することができる。かかる検索では、類似する文書の有無や文書間の類似度と同様に、類似する文書が持つ複数のサブ構造のうち特に類似するサブ構造を検索することができる。
【０００３】
また、単語の頻度の集計は、文書単位で行われることが知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１５７２７１号公報
【特許文献２】特開２００１−２４９９４３号公報
【特許文献３】特開平６−２８４０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、分析の対象を細分化し、文書のサブ構造の単位で分析を行う場合には、文書単位で処理された処理結果を利用できないという問題がある。例えば、分析の対象を細分化し、文書のサブ構造の単位で特定の検索クエリ（検索文）との類似度を測定する場合には、サブ構造の単位で、あらためて、単語の頻度の集計を行う必要がある。すなわち、文書単位で単語の頻度の集計が行われ、あらためて、細分化された集計単位であるサブ構造の単位で単語の頻度の集計が行われる。なお、サブ構造の単位には、例えば、章単位や節単位などが挙げられる。
【０００６】
ここで、文書のサブ構造の単位で分析を行う場合には、文書単位で処理された処理結果を利用できないという問題について、図１および図２を参照して説明する。
【０００７】
図１は、圧縮データを活用する文書処理の流れの一例を示す図である。図１に示すように、情報処理装置は、圧縮された文書の圧縮データを伸長し（ａ１）、伸長した文書データを字句解析する（ａ２）。そして、情報処理装置は、字句解析結果の単語の出現頻度を集計する（ａ３）。そして、情報処理装置は、集計結果を活用し、分析を行う（ａ４）。圧縮データは、例えば、ＺＩＰにより圧縮されたデータである。そして、文書のサブ構造の単位で分析を行う場合には、情報処理装置は、あらためて、圧縮された文書の圧縮データを伸長し（ａ１）、伸長した文書データを字句解析する（ａ２）。そして、情報処理装置は、サブ構造に合わせて、字句解析結果の単語の出現頻度を集計する（ａ３）。そして、情報処理装置は、集計結果を活用し、分析を行う（ａ４）。すなわち、情報処理装置は、文書のサブ構造の単位で分析を行う場合には、圧縮データを伸長した際の文書データおよび字句解析した際の字句解析結果を利用できない。
【０００８】
図２は、圧縮データを活用する文書処理のフローチャートの一例を示す図である。なお、図２では、特定された検索クエリとサブ構造単位での文書との間の類似度の測定を活用とする場合を説明する。図２に示すように、情報処理装置は、文書のサブ構造の単位で分析を行う場合には、ＺＩＰ圧縮された文書を伸長する（Ｓ１０１）。伸長した文書データをサブ構造単位にユーザが分割する（Ｓ１０２）。そして、情報処理装置は、分割された文書と検索クエリとをそれぞれ字句解析する（Ｓ１０３）。情報処理装置は、字句解析結果の単語の出現数を集計する（Ｓ１０４）。そして、情報処理装置は、ＴＦ／ＩＤＦ値の分析を使用するか否かを判定する（Ｓ１０５）。なお、ＴＦ/ＩＤＦとは、文書内の単語に関する重要度のことをいい、文書内の単語の出現頻度を表すＴＦ（Term  Frequency）値と単語がどれだけの文書内で共通して使われているかを表すＩＤＦ（Inverse  Document  Frequency）値とから表される。そして、このＴＦ/ＩＤＦ値を使用しない場合には（Ｓ１０５；Ｎｏ）、情報処理装置は、サブ構造ごとの単語の頻度集計結果を入力データとして、類似度を算出する（Ｓ１０６）。一方、ＴＦ/ＩＤＦ値を使用する場合には（Ｓ１０５；Ｙｅｓ）、情報処理装置は、対象の文書および検索クエリの単語の出現数をＴＦ／ＩＤＦ値に変換し（Ｓ１０７）、ＴＦ／ＩＤＦ値を入力データとして、類似度を算出する（Ｓ１０８）。類似度には、例えば、マハラノビス距離、ｊａｃｃａｒｄ距離またはコサイン距離が挙げられる。そして、情報処理装置は、例えば検索クエリと距離が近いサブ構造をランキング順に表示する（Ｓ１０９）。
【０００９】
このようにして、情報処理装置は、文書のサブ構造の単位で分析を行う場合には、文書単位で処理された処理結果を利用できない。
【００１０】
１つの側面では、文書のサブ構造の単位で分析を行う場合に、文書単位で処理された処理結果を利用することを目的とする。
【課題を解決するための手段】
【００１１】
第１の案では、コンピュータに、対象の文書データを単語単位で符号化する際に、前記文書データに出現する単語それぞれについて、出現位置をビットマップデータとして対応づけたインデックス情報を生成し、前記文書データに含まれる特定のサブ構造それぞれについて、前記インデックス情報に含まれる前記出現位置との関係をビットマップデータとして対応づけた文書構造情報を生成し、前記インデックス情報および前記文書構造情報を対応づけて記憶部に保持する処理を実行させる。
【発明の効果】
【００１２】
本発明の１実施態様によれば、文書のサブ構造の単位で分析を行う場合に、文書単位で処理された処理結果を利用できる。
【図面の簡単な説明】
【００１３】
【図１】図１は、圧縮データを活用する文書処理の流れの一例を示す図である。
【図２】図２は、圧縮データを活用する文書処理のフローチャートの一例を示す図である。
【図３】図３は、実施例１に係る文書処理の流れの一例を示す図である。
【図４】図４は、実施例１に係る情報処理装置の構成を示す機能ブロック図である。
【図５】図５は、実施例１に係るビットマップ型インデックスのデータ構造の一例を示す図である。
【図６】図６は、実施例１に係る集計粒度特定処理の一例を示す図である。
【図７】図７は、実施例１に係る頻度集計処理の一例を示す図である。
【図８】図８は、実施例１に係るインデックス生成処理のフローチャートの一例を示す図である。
【図９】図９は、実施例１に係る文書処理のフローチャートの一例を示す図である。
【図１０】図１０は、実施例１に係る頻度集計処理のフローチャートの一例を示す図である。
【図１１】図１１は、実施例２に係る情報処理装置の構成を示す機能ブロック図である。
【図１２】図１２は、実施例２に係る前処理の一例を示す図である。
【図１３】図１３は、実施例２に係る文書処理のフローチャートの一例を示す図である。
【図１４】図１４は、情報処理装置のハードウェアの構成の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する文書符号化プログラム、情報処理装置および文書符号化方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１５】
［実施例１に係る文書処理の流れの一例］
図３は、本実施例に係る文書処理の流れの一例を示す図である。なお、実施例１に係る文書処理では、圧縮伸長アルゴリズムがＺＩＰであるとして説明する。
【００１６】
図３に示すように、情報処理装置は、ＺＩＰにより圧縮された文書の圧縮データを伸長し（ｂ１）、伸長した文書データを、字句解析用の辞書を用いて字句解析する（ｂ２）。そして、情報処理装置は、字句解析結果の単語を、符号化用の辞書を用いて符号化する（ｂ３）。すなわち、情報処理装置は、単語に対して単語コードを割り当てる。そして、情報処理装置は、文書データに出現する単語の単語コードそれぞれについて、出現位置をビットマップデータとして対応づけたインデックス情報を生成する。加えて、情報処理装置は、文書データに含まれる特定のサブ構造それぞれについて、インデックス情報に含まれる出現位置との関係をビットマップデータとして対応づけた文書構造情報を生成する（ｂ４）。そして、情報処理装置は、生成したインデックス情報および文書構造情報を用いて、サブ構造に合わせて、字句解析結果の単語の出現頻度を集計する（ｂ５）。そして、情報処理装置は、集計結果を活用し、分析を行う（ｂ６）。なお、サブ構造とは、例えば、文書データの中の章や節などが挙げられるが、これに限定されない。すなわち、サブ構造は、文書データの中に明示的に現れているもの（段落、行区切り）であっても良いし、意味の上での区切りや、読み手が任意に設定した区切りでも構わない。また、符号化用の辞書は、後述する静的辞書および動的辞書に対応する。インデックス情報および文書構造情報は、後述するビットマップ型インデックスに対応する。
【００１７】
そして、文書のサブ構造の単位で分析を行う場合には、情報処理装置は、符号ｂ４で生成されたインデックス情報および文書構造情報を用いて、サブ構造に合わせて、単語の出現頻度を集計する（ｂ５）。そして、情報処理装置は、集計結果を活用し、分析を行う（ｂ６）。
【００１８】
これにより、情報処理装置は、インデックス情報および文書構造情報を用いることで、文書のサブ構造の単位を替えて分析を行う場合でも、その都度、伸長と字句解析を繰り返さなくても良い。すなわち、情報処理装置は、文書のサブ構造の単位で分析を行う場合に、文書単位で処理された処理結果を利用することができる。
【００１９】
［実施例１に係る情報処理装置の構成］
図４は、実施例１に係る情報処理装置の構成を示す機能ブロック図である。図４に示すように、情報処理装置１は、インデックス生成処理部１０、前処理部２０、テキストマイニング部３０および記憶部４０を有する。
【００２０】
記憶部４０は、例えばフラッシュメモリ（Flash  Memory）やＦＲＡＭ（登録商標）（Ferroelectric  Random  Access  Memory）などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部４０は、静的辞書４１、動的辞書４２およびビットマップ型インデックス４３を有する。
【００２１】
静的辞書４１は、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書である。例えば、超高頻度単語に対して、「２０ｈ」〜「３Ｆｈ」の１バイトの符号が割り当てられる。超高頻度単語は、一例として、「て」「に」「を」「は」などの助詞である。高頻度単語に対して、「８０００ｈ」〜「９ＦＦＦｈ」の２バイトの符号が割り当てられる。高頻度単語は、一例として、かな、かたかな、教育漢字などである。静的辞書４１には、それぞれの単語に対応する符号である静的コードがあらかじめ登録されている。静的コードは、単語コード（単語ＩＤ）に対応する。
【００２２】
動的辞書４２は、静的辞書４１に登録されていない単語と、動的に付された動的コードとを対応付けた辞書である。静的辞書４１に登録されていない単語は、一例として、出現頻度の低い単語（低頻度単語）である。例えば、低頻度単語に対して、「Ａ０００ｈ」〜「ＤＦＦＦｈ」の２バイトの符号や「Ｆ０００００ｈ」〜「ＦＦＦＦＦＦｈ」の３バイトの符号が割り当てられる。ここでいう低頻度単語とは、専門単語、新語、未知語などがある。専門単語とは、ある特定の学問の分野や業界などの間で通用する単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。新語とは、流行語などの新しく作られた単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。未知語とは、専門単語でなく、新語でない単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。なお、動的辞書４２には、静的辞書４１に登録されていない単語の出現順に、出現した単語が動的コードに対応付けられ、登録される。
【００２３】
ビットマップ型インデックス４３は、インデックス情報および文書構造情報を含む。インデックス情報は、対象の文書データに含まれる単語を指定するポインタと、単語の文書データ内の各オフセット（出現位置）での存否を示すビットを連結したビット列である。すなわち、インデックス情報は、対象の文書データに含まれる単語について、オフセット（出現位置）ごとの存否をインデックス化したビットマップのことをいう。単語を指定するポインタとしては、例えば、単語の単語ＩＤが採用される。なお、単語を指定するポインタとして、単語そのものであっても良い。文書構造情報は、対象の文書データに含まれる様々な粒度のサブ構造を指定するポインタと、サブ構造の文書データ内の各オフセット（出現位置）での存否を示すビットを連結したビット列である。すなわち、文書構造情報は、対象の文書データに含まれるサブ構造について、オフセット（出現位置）ごとの存否をインデックス化したビットマップのことをいう。
【００２４】
ここで、ビットマップ型インデックス４３のデータ構造を、図５を参照して説明する。図５は、実施例１に係るビットマップ型インデックスのデータ構造の一例を示す図である。図５に示すように、ビットマップ型インデックス４３は、Ｘ軸をオフセット（出現位置）とし、Ｙ軸を単語ＩＤまたはサブ構造ＩＤとする。ビットマップ型インデックス４３は、インデックス情報および文書構造情報を含む。インデックス情報に含まれるビットマップは、単語ＩＤが示す単語の、オフセット（出現位置）ごとの存否を表わしている。単語ＩＤが示す単語が文書データ内のある出現位置に存在する場合には、出現位置に対応するオフセット（出現位置）の存否としてＯＮ、すなわち２進数の「１」を示す出現ビットが設定される。単語ＩＤが示す単語が文書データ内のある出現位置に存在しない場合には、出現位置に対応するオフセット（出現位置）の存否としてＯＦＦ、すなわち２進数の「０」が設定される。また、文書構造情報に含まれるビットマップは、サブ構造ＩＤが示すサブ構造の、オフセット（出現位置）ごとの存否を表している。サブ構造ＩＤが示すサブ構造が文書データ内に存在する場合には、サブ構造の先頭に出現する単語の出現位置に対応するオフセット（出現位置）の存否としてＯＮ、すなわち２進数の「１」を示す出現ビットが設定される。
【００２５】
一例として、単語が「微分」である場合に、出現位置「１」に対するビットに出現ビット「１」が設定されている。単語が「積分」である場合に、出現位置「１００２」に対するビットに出現ビット「１」が設定されている。サブ構造の粒度が「章」である場合に、出現位置「０」および出現位置「５００１」に対するそれぞれのビットに、出現ビット「１」が設定されている。例えば、「０」の出現位置から「１章」が始まり、「５００１」の出現位置から「２章」が始まる。サブ構造が「節」である場合に、出現位置「０」、出現位置「１００１」および出現位置「５００１」に対するそれぞれのビットに、出現ビット「１」が設定されている。例えば、「０」の出現位置から「１章」の「１節」が始まり、「１００１」の出現位置から「１章」の「２節」が始まり、「５００１」の出現位置から「２章」の「１節」が始まる。
【００２６】
図４に戻って、インデックス生成処理部１０は、圧縮された文書データを伸長し、伸長した文書データからビットマップ型インデックス４３を生成する。インデックス生成処理部１０は、伸長部１１、符号化部１２、インデックス情報生成部１３および文書構造情報生成部１４を有する。
【００２７】
伸長部１１は、圧縮された文書データを伸長する。例えば、伸長部１１は、圧縮された文書データを受け付ける。そして、伸長部１１は、ＺＩＰの伸長アルゴリズムに基づいて、受け付けた圧縮データに対して、スライド窓を用いて最長一致の文字列を判定し、伸長データを生成する。
【００２８】
符号化部１２は、伸長された文書データに含まれる単語を符号化する。例えば、符号化部１２は、伸長された文書データを字句解析用の辞書を用いて字句解析する。そして、符号化部１２は、字句解析結果の先頭の単語から順番に、単語を静的辞書４１および動的辞書４２を用いて、単語ＩＤに符号化する。一例として、符号化部１２は、字句解析結果の単語が静的辞書４１に登録されているか否かを判定する。符号化部１２は、字句解析結果の単語が静的辞書４１に登録されている場合には、静的辞書４１を用いて、当該単語を静的コード（単語ＩＤ）に符号化する。符号化部１２は、字句解析結果の単語が静的辞書４１に登録されていない場合には、当該単語が動的辞書４２に登録されているか否かを判定する。符号化部１２は、字句解析結果の単語が動的辞書４２に登録されている場合には、動的辞書４２を用いて、当該単語を動的コード（単語ＩＤ）に符号化する。符号化部１２は、字句解析結果の単語が動的辞書４２に登録されていない場合には、当該単語を動的辞書４２に登録し、当該単語を動的辞書４２内の未使用の動的コード（単語ＩＤ）に符号化する。
【００２９】
インデックス情報生成部１３は、文書データに出現する単語の単語ＩＤそれぞれについて、出現位置（オフセット）をビットマップとして対応づけたインデックス情報を生成する。例えば、インデックス情報生成部１３は、単語を符号化した結果である単語ＩＤに対応するビットマップの出現位置に出現ビットを設定する。なお、インデックス情報生成部１３は、インデックス情報に単語ＩＤに対応するビットマップが存在しない場合には、インデックス情報に当該単語ＩＤに対応するビットマップを追加し、追加したビットマップの出現位置に出現ビットを設定すれば良い。
【００３０】
文書構造情報生成部１４は、文書データに含まれる特定のサブ構造それぞれについて、インデックス情報に含まれる出現位置との関係をビットマップとして対応づけた文書構造情報を生成する。例えば、文書構造情報生成部１４は、単語ＩＤについてインデックス情報が生成される際に、当該単語ＩＤについて出現ビットが設定された出現位置がサブ構造の先頭であるか否かを判定する。文書構造情報生成部１４は、当該単語ＩＤについて出現ビットが設定された出現位置がサブ構造の先頭である場合には、当該サブ構造に対応するビットマップの当該出現位置に出現ビットを設定する。なお、サブ構造には、ファイル単位、ブロック単位、章単位、項単位、節単位などが挙げられる。
【００３１】
テキストマイニング部３０は、頻度の集計結果に基づきテキストマイニングを行う。テキストマイニングとは、テキストデータを定量的に解析したり、有用な情報を取り出すことをいい、例えば、クラスタ分析をしたり、文書間の距離測定（類似度の測定）をしたりする。文書間の距離測定で用いられる類似度には、例えば、マハラノビス距離、ｊａｃｃａｒｄ距離またはコサイン距離が挙げられる。
【００３２】
前処理部２０は、テキストマイニングを行うための前処理である。前処理部２０は、集計粒度特定部２１および頻度集計部２２を有する。
【００３３】
集計粒度特定部２１は、テキストマイニングの一例として文書データと検索クエリとの間の距離測定を行う場合に、頻度集計の集計粒度を特定する。例えば、集計粒度特定部２１は、検索クエリを字句解析し、字句解析結果から単語の出現数を求める。集計粒度特定部２１は、ビットマップ型インデックス４３を用いて、検索クエリの単語の出現数に近い単語数を持つサブ構造を集計粒度として特定する。一例として、集計粒度特定部２１は、ビットマップ型インデックス４３の各種粒度のサブ構造に対して、出現ビットから次の出現ビットまでの単語数を求め、検索クエリの単語の出現数に近い単語数を持つサブ構造を集計粒度として特定する。
【００３４】
頻度集計部２２は、ビットマップ型インデックス４３を用いて、特定された集計粒度で単語の頻度を集計する。例えば、頻度集計部２２は、ビットマップ型インデックス４３から、集計粒度特定部２１によって特定された集計粒度を示すサブ構造に対するビットマップを抽出し、抽出したビットマップ内のサブ構造の区間のビットをＯＮ（「１」）に設定する。一例として、頻度集計部２２は、集計粒度を示すサブ構造が「章」である場合には、章ごとに各章の区間のビットをＯＮ（「１」）に設定する。そして、頻度集計部２２は、ビットマップ型インデックス４３から、集計対象の単語に対するビットマップを抽出する。そして、頻度集計部２２は、サブ構造に対するビットマップと集計対象の単語に対するビットマップとをＡＮＤ演算する。そして、頻度集計部２２は、ＯＮのビット数を合計することで、集計粒度を示すサブ構造に含まれる単語の頻度を集計する。なお、集計対象の単語は、検索クエリに含まれる全ての単語であるが、ビットマップ型インデックス４３に含まれる単語ＩＤが示す全ての単語であっても良い。
【００３５】
［集計粒度特定処理の一例］
ここで、実施例１に係る集計粒度特定処理の一例を、図６を参照して説明する。図６は、実施例１に係る集計粒度特定処理の一例を示す図である。なお、図６では、検索クエリの単語の出現数は１５００である。また、ビットマップ型インデックス４３には、第１章の単語の出現数として１７００、第２章の単語の出現数として１３００の情報が設定されている。第１章について第１節の単語の出現数として８００、第２節の単語の出現数として７００の情報が設定されている。第１節について第１項の単語の出現数として３００、第２項の単語の出現数として２５０の情報が設定されている。
【００３６】
このような状況の下、集計粒度特定部２１は、ビットマップ型インデックス４３を用いて、検索クエリの単語の出現数に近い単語数を持つサブ構造を集計粒度として特定する。ここでは、集計粒度特定部２１は、検索クエリの単語の出現数が１５００であるので、検索クエリの単語の出現数に近いサブ構造「章」を集計粒度として特定する。
【００３７】
［頻度集計処理の一例］
ここで、実施例１に係る頻度集計処理の一例を、図７を参照して説明する。図７は、実施例１に係る頻度集計処理の一例を示す図である。なお、集計粒度特定部２１によって集計粒度として「章」が特定されたとする。図７では、第１章に含まれる単語の頻度を集計する場合を説明する。
【００３８】
図７に示すように、頻度集計部２２は、ビットマップ型インデックス４３から、集計粒度特定部２１によって特定された集計粒度を示すサブ構造「章」に対するビットマップｓ１を抽出する。そして、頻度集計部２２は、抽出したビットマップｓ１内のサブ構造「第１章」の区間のビットを「１」に設定する。ここでは、ｓ２のビットマップに示されるように、頻度集計部２２は、「第１章」の区間として「章」に対するビットマップｓ１の最初の出現ビットから次の出現ビットの１つ前のビットまでを「１」に設定する。すなわち、オフセット（出現位置）について、「０」から「１００１」の１つ前の「１０００」までが「１」に設定される。
【００３９】
そして、頻度集計部２２は、ビットマップ型インデックス４３から、集計対象の単語「微分」に対するビットマップｓ３を抽出する。そして、頻度集計部２２は、サブ構造「第１章」に対するビットマップｓ２と集計対象の単語に対するビットマップｓ３とをＡＮＤ演算する。ここでは、ＡＮＤ演算結果は、ビットマップｓ４である。
【００４０】
そして、頻度集計部２２は、「１」のビット数を合計することで、集計粒度を示すサブ構造「第１章」に含まれる単語の頻度を集計する。ここでは、頻度集計部２２は、ビットマップｓ４に含まれるビットのうち「１」が立つビットの数を集計することで、サブ構造「第１章」に含まれる単語「微分」の頻度を集計できる。
【００４１】
同様に、頻度集計部２２は、サブ構造「第１章」に含まれる集計対象の単語「積分」の頻度を集計できる。すなわち、頻度集計部２２は、ビットマップ型インデックス４３から、集計対象の単語「積分」に対するビットマップｓ５を抽出する。そして、頻度集計部２２は、サブ構造「第１章」に対するビットマップｓ２と集計対象の単語に対するビットマップｓ５とをＡＮＤ演算し、「１」のビット数を合計すれば良い。
【００４２】
なお、頻度集計部２２は、「第１章」の場合と同様に、「第２章」に含まれる集計対象の単語の頻度を集計すれば良い。
【００４３】
［実施例１に係るインデックス生成処理のフローチャート］
図８は、実施例１に係るインデックス生成処理のフローチャートの一例を示す図である。
【００４４】
図８に示すように、インデックス生成処理部１０は、圧縮された文書データを伸長する（ステップＳ１１）。そして、インデックス生成処理部１０は、伸長された文書データを字句解析する（ステップＳ１２）。そして、インデックス生成処理部１０は、字句解析結果から先頭の単語を選択する（ステップＳ１３）。
【００４５】
続いて、インデックス生成処理部１０は、選択された単語が静的辞書４１に登録されているか否かを判定する（ステップＳ１４）。選択された単語が静的辞書４１に登録されていると判定した場合には（ステップＳ１４；Ｙｅｓ）、インデックス生成処理部１０は、ステップＳ１７に移行する。
【００４６】
一方、選択された単語が静的辞書４１に登録されていないと判定した場合には（ステップＳ１４；Ｎｏ）、インデックス生成処理部１０は、選択された単語が動的辞書４２に登録されているか否かを判定する（ステップＳ１５）。選択された単語が動的辞書４２に登録されていると判定した場合には（ステップＳ１５；Ｙｅｓ）、インデックス生成処理部１０は、ステップＳ１７に移行する。
【００４７】
一方、選択された単語が動的辞書４２に登録されていないと判定した場合には（ステップＳ１５；Ｎｏ）、インデックス生成処理部１０は、選択された単語を動的辞書４２に登録し（ステップＳ１６）、ステップＳ１７に移行する。
【００４８】
ステップＳ１７において、インデックス生成処理部１０は、選択された単語を単語ＩＤに符号化する（ステップＳ１７）。すなわち、インデックス生成処理部１０は、選択された単語が静的辞書４１に登録されていると判定した場合には、静的辞書４１を用いて、当該単語を単語ＩＤ（静的コード）に符号化する。インデックス生成処理部１０は、選択された単語が静的辞書４１に登録されていないと判定した場合には、動的辞書４２を用いて、当該単語を単語ＩＤ（動的コード）に符号化する。
【００４９】
続いて、インデックス生成処理部１０は、対象の単語ＩＤがビットマップ型インデックス４３のインデックス情報の単語ＩＤ列（Ｙ軸）にあるか否かを判定する（ステップＳ１８）。対象の単語ＩＤがインデックス情報の単語ＩＤ列（Ｙ軸）にあると判定した場合には（ステップＳ１８；Ｙｅｓ）、インデックス生成処理部１０は、ステップＳ２０に移行する。
【００５０】
一方、対象の単語ＩＤがインデックス情報の単語ＩＤ列（Ｙ軸）にないと判定した場合には（ステップＳ１８；Ｎｏ）、インデックス生成処理部１０は、対象の単語ＩＤをインデックス情報の単語ＩＤ列（Ｙ軸）に追加する（ステップＳ１９）。そして、インデックス生成処理部１０は、ステップＳ２０に移行する。
【００５１】
ステップＳ２０において、インデックス生成処理部１０は、対象の単語ＩＤ行の対応するオフセットの列に「１」を立てる（ステップＳ２０）。すなわち、インデックス生成処理部１０は、対象の単語ＩＤに対応するビットマップの出現位置に出現ビットを設定する。
【００５２】
インデックス生成処理部１０は、「１」が立てられたオフセットの列はいずれかのサブ構造の先頭であるか否かを判定する（ステップＳ２１）。ここでいうサブ構造とは、例えば、章であったり、項であったり、節であったりするがこれに限定されない。「１」が立てられたオフセットの列がいずれかのサブ構造の先頭であると判定した場合には（ステップＳ２１；Ｙｅｓ）、インデックス生成処理部１０は、対象のサブ構造行の対応するオフセットの列に「１」を立てる（ステップＳ２２）。すなわち、インデックス生成処理部１０は、対象のサブ構造に対応するビットマップの出現位置に出現ビットを設定する。そして、インデックス生成処理部１０は、ステップＳ２３に移行する。
【００５３】
一方、「１」が立てられたオフセットの列がいずれのサブ構造の先頭でないと判定した場合には（ステップＳ２１；Ｎｏ）、インデックス生成処理部１０は、ステップＳ２３に移行する。
【００５４】
ステップＳ２３において、インデックス生成処理部１０は、選択された単語は文書の最後であるか否かを判定する（ステップＳ２３）。選択された単語は文書の最後でないと判定した場合には（ステップＳ２３；Ｎｏ）、インデックス生成処理部１０は、次の単語を選択する（ステップＳ２４）。そして、インデックス生成処理部１０は、選択された単語の処理をすべく、ステップＳ１４に移行する。
【００５５】
一方、選択された単語は文書の最後であると判定した場合には（ステップＳ２３；Ｙｅｓ）、インデックス生成処理部１０は、インデックス生成処理を終了する。
【００５６】
［実施例１に係る文書処理のフローチャート］
図９は、実施例１に係る文書処理のフローチャートの一例を示す図である。なお、図９の文書処理では、テキストマイニングの一例として、文書と検索クエリとの間の距離測定を行う場合を説明する。
【００５７】
図９に示すように、前処理部２０は、検索クエリを字句解析する（ステップＳ３１）。そして、前処理部２０は、字句解析結果の単語の出現数を集計する（ステップＳ３２）。
【００５８】
そして、前処理部２０は、検索クエリの単語の出現数に合わせて、集計粒度を特定する（ステップＳ３３）。例えば、前処理部２０は、ビットマップ型インデックス４３を用いて、検索クエリの単語の出現数に近い単語の数を持つサブ構造を集計粒度として特定する。
【００５９】
そして、前処理部２０は、特定した集計粒度に応じて、サブ構造単位に単語の出現頻度を集計する頻度集計処理を実行する（ステップＳ３４）。なお、頻度集計処理のフローチャートは、後述する。
【００６０】
続いて、テキストマイニング部３０は、ＴＦ／ＩＤＦ値の分析を使用するか否かを判定する（ステップＳ３５）。ＴＦ／ＩＤＦ値の分析を使用しないと判定した場合には（ステップＳ３５；Ｎｏ）、テキストマイニング部３０は、単語の集計結果を入力データとして、類似度を算出する（ステップＳ３６）。そして、テキストマイニング部３０は、ステップＳ３９に移行する。
【００６１】
一方、ＴＦ／ＩＤＦ値の分析を使用すると判定した場合には（ステップＳ３５；Ｙｅｓ）、テキストマイニング部３０は、対象の文書および検索クエリの単語の出現数をＴＦ／ＩＤＦ値に変換する（ステップＳ３７）。そして、テキストマイニング部３０は、ＴＦ／ＩＤＦ値を入力データとして、類似度を算出する（ステップＳ３８）。なお、類似度には、例えば、マハラノビス距離、ｊａｃｃａｒｄ距離またはコサイン距離が挙げられる。また、ＴＦ/ＩＤＦとは、文書内の単語に関する重要度のことをいい、文書内の単語の出現頻度を表すＴＦ（Term  Frequency）値と単語がいつかの文書内で共通して使われているかを表すＩＤＦ（Inverse  Document  Frequency）値とから表される。そして、テキストマイニング部３０は、ステップＳ３９に移行する。
【００６２】
ステップＳ３９において、テキストマイニング部３０は、検索クエリと距離が近いサブ構造をランキング順に表示する（ステップＳ３９）。例えば、前処理部２０が「章」を集計粒度として特定した場合には、テキストマイニング部３０は、検索クエリと距離が近い、「章」のサブ構造（１章、２章、・・・）をランキング順に表示する。そして、テキストマイニング部３０は、文書処理を終了する。
【００６３】
［実施例１に係る頻度集計処理のフローチャート］
図１０は、実施例１に係る頻度集計処理のフローチャートの一例を示す図である。
【００６４】
図１０に示すように、頻度集計部２２は、特定された集計粒度内のサブ構造を選択する（ステップＳ４０）。頻度集計部２２は、ビットマップ型インデックス４３から、集計粒度を示すサブ構造ＩＤに対するビットマップを抽出する（ステップＳ４１）。そして、頻度集計部２２は、抽出したビットマップから、選択されたサブ構造に対するビットマップを生成する（ステップＳ４２）。例えば、頻度集計部２２は、抽出したビットマップ内の、選択されたサブ構造の区間のビットを「１」に設定する。
【００６５】
続いて、頻度集計部２２は、ビットマップ型インデックス４３から、集計対象の単語の単語ＩＤに対するビットマップを抽出する（ステップＳ４３）。そして、頻度集計部２２は、選択されたサブ構造に対するビットマップと単語ＩＤに対するビットマップとをＡＮＤ演算する（ステップＳ４４）。
【００６６】
頻度集計部２２は、演算結果のビットマップについて、オフセット方向にビット列で「１」が立っている数を合計し、バッファに出力する（ステップＳ４５）。例えば、頻度集計部２２は、この合計した数を集計対象の単語および選択されたサブ構造に対応づけてバッファに出力する。
【００６７】
頻度集計部２２は、集計対象の単語が全て集計済みであるか否かを判定する（ステップＳ４６）。集計対象の単語が全て集計済みでないと判定した場合には（ステップＳ４６；Ｎｏ）、頻度集計部２２は、集計対象の次の単語へ遷移し（ステップＳ４７）、ステップＳ４３に移行する。
【００６８】
一方、集計対象の単語が全て集計済みであると判定した場合には（ステップＳ４６；Ｙｅｓ）、頻度集計部２２は、集計粒度内のサブ構造が全て集計済みであるか否かを判定する（ステップＳ４８）。集計粒度内のサブ構造が全て集計済みでないと判定した場合には（ステップＳ４８；Ｎｏ）、頻度集計部２２は、集計粒度内の次のサブ構造へ遷移し（ステップＳ４９）、ステップＳ４０に移行する。
【００６９】
一方、集計粒度内のサブ構造が全て集計済みであると判定した場合には（ステップＳ４８；Ｙｅｓ）、頻度集計部２２は、頻度集計処理を終了する。
【００７０】
［実施例１の効果］
上記実施例１によれば、情報処理装置１は、対象の文書データを単語単位で符号化する際に、対象の文書データに出現する単語それぞれについて、出現位置をビットマップデータとして対応づけたインデックス情報を生成する。情報処理装置１は、文書データに含まれる特定のサブ構造それぞれについて、インデックス情報に含まれる出現位置との関係をビットマップデータとして対応づけた文書構造情報を生成する。そして、情報処理装置１は、インデックス情報および文書構造情報を対応づけて記憶部４０に保持する。かかる構成によれば、情報処理装置１は、文書データのサブ構造の単位で分析を行う場合に、文書データ単位で処理された処理結果であるインデックス情報および文書構造情報を利用することができる。すなわち、情報処理装置１は、文書データのサブ構造の単位を替えて分析を行う場合でも、その都度、文書データの字句解析などの処理を繰り返さなくても良い。
【００７１】
また、上記実施例１によれば、情報処理装置１は、文書データに出現する単語ごとに、各単語に対応するビットマップデータの各単語の出現位置にビットを立てることで、インデックス情報を生成する。情報処理装置１は、文書データに含まれる特定のサブ構造ごとに、各サブ構造に対応するビットマップデータの各サブ構造の先頭の単語の出現位置にビットを立てることで、文書構造情報を生成する。かかる構成によれば、情報処理装置１は、インデックス情報および文書構造情報の出現位置のビットを利用することで、各単語の各種サブ構造における分析をすることが可能となる。
【００７２】
また、上記実施例１によれば、情報処理装置１は、インデックス情報に含まれる単語ごとのビットマップデータと、文書構造情報に含まれる特定のサブ構造のビットマップデータとを用いた論理演算をすることで、特定のサブ構造に出現する単語ごとの出現頻度を集計する。かかる構成によれば、情報処理装置１は、インデックス情報および文書構造情報を利用することで、サブ構造の単位を替えても、その都度、文書データの字句解析などの処理を繰り返さず、替えた単位で各単語の出現頻度を集計できる。
【実施例２】
【００７３】
ところで、実施例１に係る情報処理装置１は、検索クエリの全ての単語を用いて、文書データにおける頻度集計の集計粒度を特定するようにした。そして、情報処理装置１は、ビットマップ型インデックス４３を用いて、特定された集計粒度で、例えば検索クエリに含まれる全ての単語を集計対象として頻度を集計するようにした。しかしながら、情報処理装置１は、これに限定されず、検索クエリから抽出される特徴語を用いて、文書データにおける頻度集計の集計粒度を特定し、特定された集計粒度で、検索クエリから抽出される特徴語を集計対象として頻度を集計しても良い。
【００７４】
そこで、実施例２では、情報処理装置１が、検索クエリから抽出される特徴語を用いて、文書データにおける頻度集計の集計粒度を特定し、特定された集計粒度で、検索クエリから抽出される特徴語を集計対象として頻度を集計する場合を説明する。
【００７５】
［実施例２に係る情報処理装置の構成］
図１１は、実施例２に係る情報処理装置の構成を示す機能ブロック図である。なお、実施例１の図４に示す情報処理装置１と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例１と実施例２とが異なるところは、集計単語抽出部５１を追加した点である。
【００７６】
集計単語抽出部５１は、検索クエリから集計対象の単語を抽出する。例えば、集計単語抽出部５１は、検索クエリを字句解析し、字句解析結果から単語ごとの出現回数を集計する。そして、集計単語抽出部５１は、集計結果と、予め定められた複数の文書データとから検索クエリに出現する単語ごとの特徴量を算出する。この単語の特徴量は、ＴＦ／ＩＤＦ値を用いれば良い。そして、集計単語抽出部５１は、特徴量が規定量より高いＮ（Ｎ：１より大きい自然数）個の単語を特徴語として抽出する。抽出された特徴語が、集計粒度特定部２１によって集計粒度が特定される際に用いられる単語となり、頻度集計部２２によって集計される対象の単語となる。なお、Ｎは、予めユーザによって設定されれば良い。
【００７７】
［前処理の一例］
ここで、実施例２に係る前処理の一例を、図１２を参照して説明する。図１２は、実施例２に係る前処理の一例を示す図である。なお、図１２では、集計単語抽出部５１は、検索クエリから、Ｎ個の特徴語を抽出したものとする。
【００７８】
このような状況の下、集計粒度特定部２１は、ビットマップ型インデックス４３を用いて、検索クエリのＮ個の特徴語の出現数に近い単語数を持つサブ構造を集計粒度として特定する。そして、ビットマップ型インデックス４３を用いて、特定された集計粒度で特徴語の頻度を集計する。
【００７９】
［実施例２に係る文書処理のフローチャート］
図１３は、実施例２に係る文書処理のフローチャートの一例を示す図である。なお、図１３の文書処理では、テキストマイニングの一例として、文書と検索クエリとの間の距離測定を行う場合を説明する。
【００８０】
図１３に示すように、前処理部２０は、検索クエリを字句解析する（ステップＳ５１）。そして、前処理部２０は、字句解析結果の単語の出現数を集計する（ステップＳ５２）。
【００８１】
そして、前処理部２０は、検索クエリの集計結果と一般的なテキストとから検索クエリに出現する単語の特徴量（ＴＦ／ＩＤＦ値）を算出する（ステップＳ５３）。そして、前処理部２０は、ＴＦ／ＩＤＦ値が高い単語Ｎ語を特徴語として抽出する（ステップＳ５４）。
【００８２】
そして、前処理部２０は、検索クエリのＮ語の単語の出現数に合わせて、集計粒度を特定する（ステップＳ５５）。例えば、前処理部２０は、ビットマップ型インデックス４３を用いて、検索クエリのＮ個の特徴語の出現数に近い単語数を持つサブ構造を集計粒度として特定する。
【００８３】
そして、前処理部２０は、抽出したＮ語について、特定した集計粒度に応じて、サブ構造単位に単語の出現頻度を集計する頻度集計処理を実行する（ステップＳ５６）。集計対象の単語は、抽出したＮ語となる。なお、頻度集計処理のフローチャートは、図１０で説明したとおりであるので、その説明を省略する。
【００８４】
続いて、テキストマイニング部３０は、ＴＦ／ＩＤＦ値の分析を使用しない場合には、単語の集計結果を入力データとして、類似度を算出する（ステップＳ５７）。類似度には、例えば、マハラノビス距離、ｊａｃｃａｒｄ距離またはコサイン距離が挙げられる。そして、テキストマイニング部３０は、検索クエリと距離が近いサブ構造をランキング順に表示する（ステップＳ５８）。例えば、前処理部２０が「章」を集計粒度として特定した場合には、テキストマイニング部３０は、検索クエリと距離が近い、「章」のサブ構造（１章、２章、・・・）をランキング順に表示する。そして、テキストマイニング部３０は、文書処理を終了する。
【００８５】
［実施例２の効果］
上記実施例２によれば、情報処理装置１は、検索対象の文書データが対象の文書データと類似するか否かを判定する際に、検索対象の文書データに出現する単語の特徴量を算出し、特徴量に基づいて規定量より大きい特徴量を有する複数の単語を抽出する。そして、情報処理装置１は、インデックス情報および文書構造情報を用いて、該抽出した複数の単語それぞれの出現頻度を集計する。かかる構成によれば、情報処理装置１は、検索対象の文書データに含まれる複数の特徴語に対して、対象の文書データについて出現頻度を集計することで、対象の文書データのサブ構造の単位で分析を行う場合の出現頻度の集計処理をさらに高速化することができる。
【００８６】
［その他］
なお、実施例１に係る文書処理では、圧縮伸長アルゴリズムがＺＩＰである場合に、伸長部１１が、圧縮された文書データを伸長すると説明した。しかしながら、圧縮伸長アルゴリズムはＺＩＰに限定されず、静的辞書４１および動的辞書４２を用いたアルゴリズムであっても良い。すなわち、伸長部１１は、圧縮された文書データを静的辞書４１および動的辞書４２を用いて伸長しても良い。かかる場合には、符号化部１２は、静的辞書４１および圧縮処理で既に生成された動的辞書４２を用いて符号化すれば良い。
【００８７】
また、実施例１では、符号化部１２は、伸長された文書データを字句解析用の辞書を用いて字句解析すると説明した。しかしながら、符号化部１２は、これに限定されず、伸長された文書データを字句解析用の辞書として静的辞書４１および動的辞書４２を用いて字句解析しても良い。
【００８８】
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、符号化部１２およびインデックス情報生成部１３を併合しても良い。また、符号化部１２を、静的コードに符号化する第１の符号化部と、動的コードに符号化する第２の符号化部とに分離しても良い。また、記憶部４０を情報処理装置１の外部装置としてネットワーク経由で接続するようにしても良い。
【００８９】
図１４は、情報処理装置のハードウェア構成の一例を示す図である。図１４に示すように、コンピュータ５００は、各種演算処理を実行するＣＰＵ５０１と、ユーザからのデータ入力を受け付ける入力装置５０２と、モニタ５０３とを有する。また、コンピュータ５００は、記憶媒体からプログラムなどを読み取る媒体読取装置５０４と、他の装置と接続するためのインターフェース装置５０５と、他の装置と無線により接続するための無線通信装置５０６とを有する。また、コンピュータ５００は、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）５０７と、ハードディスク装置５０８とを有する。また、各装置５０１〜５０８は、バス５０９に接続される。
【００９０】
ハードディスク装置５０８には、図４に示したインデックス生成処理部１０、前処理部２０およびテキストマイニング部３０と同様の機能を有する文書符号化プログラムが記憶される。また、ハードディスク装置５０８には、文書符号化プログラムを実現するための各種データが記憶される。各種データには、図４に示した記憶部４０内のデータが含まれる。
【００９１】
ＣＰＵ５０１は、ハードディスク装置５０８に記憶された各プログラムを読み出して、ＲＡＭ５０７に展開して実行することで、各種の処理を行う。これらのプログラムは、コンピュータ５００を図４に示した各機能部として機能させることができる。
【００９２】
なお、上記の文書符号化プログラムは、必ずしもハードディスク装置５０８に記憶されている必要はない。例えば、コンピュータ５００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ５００が読み出して実行するようにしても良い。コンピュータ５００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリなどの可搬型記録媒体、フラッシュメモリなどの半導体メモリ、ハードディスクドライブなどが対応する。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）などに接続された装置にこのプログラムを記憶させておき、コンピュータ５００がこれらからプログラムを読み出して実行するようにしても良い。
【符号の説明】
【００９３】
１  情報処理装置
１０  インデックス生成処理部
１１  伸長部
１２  符号化部
１３  インデックス情報生成部
１４  文書構造情報生成部
２０  前処理部
２１  集計粒度特定部
２２  頻度集計部
３０  テキストマイニング部
４０  記憶部
４１  静的辞書
４２  動的辞書
４３  ビットマップ型インデックス
５１  集計単語抽出部
【図１】
2018060463.tif 000003
【図２】
2018060463.tif 000004
【図３】
2018060463.tif 000005
【図４】
2018060463.tif 000006
【図５】
2018060463.tif 000007
【図６】
2018060463.tif 000008
【図７】
2018060463.tif 000009
【図８】
2018060463.tif 000010
【図９】
2018060463.tif 000011
【図１０】
2018060463.tif 000012
【図１１】
2018060463.tif 000013
【図１２】
2018060463.tif 000014
【図１３】
2018060463.tif 000015
【図１４】
2018060463.tif 000016