\documentstyle[epsf,jnlpbbl]{jnlp_j}

\setcounter{page}{3}
\setcounter{巻数}{12}
\setcounter{号数}{4}
\setcounter{年}{2005}
\setcounter{月}{8}
\受付{1995}{5}{6}
\再受付{1995}{7}{8}
\採録{1995}{9}{10}

\setcounter{secnumdepth}{2}

\title{構造化された言語資料に対する全文検索システムの設計と実現}
\author{山口 昌也\affiref{NIJLA} \and 田中 牧郎\affiref{NIJLA}}

\headauthor{山口 昌也・田中 牧郎}
\headtitle{構造化された言語資料に対する全文検索システムの設計と実現}


\affilabel{NIJLA}{独立行政法人 国立国語研究所}
{Independent Administrative Institute: The National Institute for Japanese Language}

\jabstract{
本論文では，構造化された言語資料の検索・閲覧を指向した全文検索システム
である『ひまわり』の設計，および，その実現方法を示す。ここで言う「構造
化された言語資料」とは，コーパスや辞書のように，言語に関する調査，研究
などに利用することを目的として，一定の構造で記述された資料一般を指す。
『ひまわり』は，言語資料の構造化形式の多様性と利用目的の多様性に対応し
た設計がなされている。構造化形式の多様性については，言語資料が XMLで構
造化されていることを想定して，XML 文書に対する全文検索機能を実現した。
全文検索に付け加えて，マークアップされている情報の抽出や抽出された情報
に基づく検索結果の制約を行うことも可能である。また，Suffix Array などの
索引を用いて，検索の高速化を図っている。一方，言語資料に適した検索式と
閲覧形式を柔軟に定義できるようにすることにより，利用目的の多様性に対処
した。閲覧形式は，KWIC表示機能を備えた表形式での閲覧を基本とし，ルビな
どの通常のテキストでは表現できない表示形式や音声，画像に対しては，XSL 
変換などを介して外部閲覧システムにデータを受け渡す方法を用いる。多様性
に対する『ひまわり』の有効性を検証するために，『分類語彙表』，および，
『日本語話し言葉コーパス』に『ひまわり』を適用し，定性的な評価を行うと
ともに，検索速度測定による定量的な評価を行った。
}

\jkeywords{全文検索，構造化言語資料，XML, KWIC, Suffix Array}


\etitle{Design and Implementation of Full Text Search System \\
for Structured Language Resources}
\eauthor{Masaya YAMAGUCHI\affiref{NIJLA} \and Makiro TANAKA\affiref{NIJLA}
}

\eabstract{
In this paper, we design and implement a full text search system
``Himawari''. Himawari is designed to handle various structures and
usages of language resources that are made to be used for language study
and research. For the variety of structure, Himawari has the ability to
search language resources structured by XML, extracting tagged
information that may be used to constrain the results. Himawari provides
some kind of indexes such as Suffix Array for the improvement of the
search process. To resolve the problem of the variety of usages, a query
and a method of reference for language resources can be defined by a
user as suitable for the target language resource. Search results are
displayed as a table including KWIC (KeyWord In Context), and can be
output to external reference system, for example, HTML browser, sound
player, when the result is not able to be displayed as text data. By
applying our system to a Japanese thesaurus ``Bunrui Goi Hyo'' and
``Corpus of Spontaneous Japanese'', the adaptability for the varieties
is verified and proved.
}

\ekeywords{Full Text Search System, Structured Language Resource, XML,
KWIC, \\ Suffix Array}


\begin{document}
\maketitle

\section{はじめに}
本論文では，構造化された言語資料の検索・閲覧を指向した全文検索システムで
ある『ひまわり』の設計，および，その実現方法を示す。ここで言う「構造化さ
れた言語資料」とは，コーパスや辞書のように，言語に関する調査，研究などに
利用することを目的として，一定の構造で記述された資料一般を指す。

近年，さまざまな言語資料を計算機で利用できるようになってきた。例えば，新
聞，雑誌，文学作品などのテキストデータベース(例：『毎日新聞テキストデータ
ベース』\shortcite{mainichi})やコーパス(例：『京都大学テキストコーパス』
\shortcite{kyodai_corpus}，『太陽コーパス』\shortcite{tanaka2001})，シソー
ラスなどの辞書的なデータ(例：『分類語彙表』\shortcite{bunrui})がある。ま
た，音声情報や画像情報などのテキスト以外の情報をも含有するコーパス(例：
『日本語話し言葉コーパス』\shortcite{maekawa2004}など)も現れている。言語資料
には，書名や著者名などの書誌情報や，形態素情報，構文情報といった言語学的
な情報が付与されており，言語に関する調査，研究における有力な基礎資料とし
ての役割が期待されている。

このような言語資料に対して検索を行うには，二つの「多様性」に対応する必要
があると考える。一つは，構造化形式の多様性である。構造化された言語資料は，
一般的に固有の形式を持つことが多い。したがって，検索システムは，検索の高
速性を維持しつつ，多様な形式を解釈し，言語資料に付与されている書誌情報や，
形態素情報や構文情報などの言語学的情報を抽出したり，検索条件として利用し
たりできる必要がある。

もう一つの多様性は，利用目的の多様性である。ここで言う「利用目的の多様性」
とは，検索対象の言語資料の種類や利用目的の違いにより，資料に適した検索条
件や閲覧形式，さらには検索時に抽出する情報が異なってくることを指す。例え
ば，辞書を検索する場合は，見出し語や代表表記に対して検索を行い，単一の語
の単位で情報を閲覧するのが一般的である。一方，新聞記事の場合は，記事本文
やタイトルに含まれる文字列をキーとして，発行年などを制約条件としつつ検索
し，前後文脈や記事全体を閲覧するのが一般的であろう。このよ
うに，言語資料を対象とした検索システムは，言語資料の性質と利用目的にあっ
た検索式や閲覧形式を柔軟に定義できる必要がある。

以上のような背景のもと，構造化された言語資料に対する全文検索システム『ひ
まわり』の設計と実現を行う。構造化形式の多様性に対しては，現在，広範に利
用されているマークアップ言語である XML で記述された言語資料を検索対象と
想定し，XML 文書に対する全文検索機能を実現する。この際，検索対象とするこ
とのできる XML 文書の形式は，XML 文書全体の構造で規定するのではなく，検
索対象の文字列とそれに対して付与されている情報との文書構造上の関係により
規定する。また，検索の高速化を図るため，Suffix Array 方式など，いくつか
の索引を利用する。

次に，利用目的の多様性に関しては，検索式と閲覧方式を柔軟に設定できるよう
設計する。まず，検索式を柔軟に設定するために，言語資料の検索にとって必要
な要素を，検索対象の文字列とそれに対して付与されている情報との構造上の関
係に基づいて選定する。一方，閲覧形式については，KWIC 表示機能を備えた表
形式での閲覧を基本とする。それに付け加えて，フォントサイズやフォント種，
文字色などの表示スタイルの変更や音声，画像の閲覧に対応するために，外部の
閲覧システムへデータを受け渡す方法を用いる。

本論文の構成は，次のようになっている。まず，2節では，『ひまわり』を設計
する上で前提となる条件を述べる。3節では，システムの全体的な構造と各部の
説明を行う。4節では，言語資料の構造に対する検討を元にした検索方式につい
て詳説する。5節では，『分類語彙表』と『日本語話し言葉コーパス』に本システムを
適用し，言語資料と利用目的の多様性に対応できるか定性的に検証するとともに，
検索速度の面から定量的な評価も行う。6節で関連研究と本研究とを比較するこ
とにより，本研究の位置づけと有用性を確認し，最後に，7節でまとめを行う。





\section{前提条件}
\label{sec:前提条件}
前節で述べたように，言語資料の構造上の多様性と，利用目的の多様性に対応し
たシステムを構築するという目的があるが，この目的に先立って，次の四つの前
提条件を設けた。


\paragraph{対象とする利用者}
本システムは，構造化された言語資料に関する知識を持たない利用者(エンドユー
ザ)を想定して設計する。この際問題となるのは，構造化された言語資料を検索，
閲覧するには，まず，言語資料に付与されている情報の意味や，構造化の方法を
理解しなければならないということである。この問題を解決するために，本シス
テムでは，エンドユーザでも使用できるよう，検索対象の構造化テキストに適
した検索式や閲覧形式をあらかじめ設定しておき，簡便な操作で検索できるよう
にする。実際に設定するのは，本システムを同梱して言語資料を配布する目的を
持った利用者(言語資料の作成者)とする。これによりエンドユーザが直接利用
できる検索式や閲覧は限定されるが，本システムでは，エンドユーザが容易に言
語資料を使用できる，ということを優先して考える。


\paragraph{利用形態}
本システムは，検索と閲覧を主体とした利用形態を想定する。別の言葉
で言えば，言語資料を閲覧して，その場で，試行錯誤を伴う分析を行う利用形態
である。言語研究における利用例としては，分析対象の語が，どの年代に多く出
現するか，また，用法，出現する文脈はどのようなものかを把握するために，さ
まざまな条件で検索，閲覧を繰り返し，分析に生かすという利用形態が挙げられ
る。ただし，統計的な分析など，検索結果に対してさらなる分析を行う場合も考
えられる。そのための手段として，検索結果を外部のソフトウェアへ受け渡
す仕組みも用意する。




\paragraph{任意の文字列に対する高速な全文検索}
言語資料を検索するということから，任意の文字列に対する全文検索は必須の条
件とする。また，すでに述べたように，本システムでは検索と閲覧を繰り返す利
用形態を想定している。そこで，利用者の思考を妨げないために，検索の高速性
も重視する。








\paragraph{動作環境}
本システムの動作環境としては，広範な計算機環境で，かつ，単独の計算機上で
動作するものとする。「単独の計算機上」とは，検索用のサーバを用意すること
なく，利用者が使っている計算機上で検索できることを意味する。このような動
作環境を前提とした理由は，作成した言語資料を配布する際に，本システ
ムを同梱することを考えたからである。


\section{システムの概要}
\subsection{構造}

『ひまわり』のシステム構造を図\ref{fig:システム構成}に示す。
図\ref{fig:システム構成}の上部が言語資料に関連するファイル群で，下部が
『ひまわり』本体(ただし，点線の四角は外部システム)である。実線の矢印はデー
タの流れを，点線の矢印はデータの参照を表す。『ひまわり』は Java 言語
で記述され\label{page:regex}，WindowsXP, Windows2000,
Windows98，Debian GNU/Linux 3.0 上で動作することが確認されている。


\begin{figure}[hbt]
 \begin{center}
  \epsfxsize=12.5cm
  \epsfbox{system.eps}
  \caption{システム構成}
  \label{fig:システム構成}
 \end{center}   
\end{figure}

『ひまわり』は，大きくわけて，次の三つの部分からなる。

\begin{itemize}
 \item 検索条件入力用インターフェイス
 \item 検索エンジン
 \item 検索結果閲覧部
\end{itemize}

大まかな処理の流れとしては，まず，「検索条件入力用インターフェイス」によ
り利用者が検索条件を指定し，その条件を元に「検索エンジン」が言語資料ファ
イルを検索する。そして，検索結果を「検索結果閲覧部」で表示する。

『ひまわり』により，『太陽コーパス』\footnote{『太陽コーパス』は，総合雑
誌『太陽』(1895〜1925年，博文館刊)を8年きざみで全文を収録したコーパスで，
規模は約1500万字，記述形式は XML である。『ひまわり』は，もともと『太陽
コーパス』の XML 文書を全文検索する目的で開発された。詳しくは，
\shortcite{tanaka2001,yamaguchi2002}を参照されたし。}から文字列「研究」を
検索した結果を図\ref{fig:『太陽コーパス』への適用例}に示す。このあとの節
では，言語資料について説明した後，システム各部の機能を図
\ref{fig:システム構成}，\ref{fig:『太陽コーパス』への適用例}と対応づけて説明していくことにする。


\begin{figure}[hbt]
 \begin{center}
  \vspace{0.5em}
  \epsfxsize=13.5cm
  \epsfbox{himawari_taiyo.eps}
  \caption{『太陽コーパス』への適用例}
  \label{fig:『太陽コーパス』への適用例}
 \end{center}   
\end{figure}



\subsection{言語資料}
図\ref{fig:システム構成}の上部に示したとおり，『ひまわり』は複数の言語資
料ファイルを一つの言語資料集合として扱う。個々の言語資料には，検索を高速
化するための索引ファイルが付与されている。言語資料ファイルの文字コードは，
UTF-16 である\footnote{Java 言語では，言語仕様上，文字コードを Unicodeに
変換した上で処理する。したがって，どの OS においても同一の実行プログラム
コード，および，コーパスを利用することができる。}。1回の検索処理で検索
対象となるのは，一つの言語資料集合であり，複数の言語資料をまとめて検索す
ることができる。検索対象とする言語資料集合は，検索前に利用者が指定する。

それぞれの言語資料集合は，「設定ファイル」を持つ。設定ファイルには，言語
資料集合を構成する言語資料ファイルやその索引ファイルに関する記述のほか，
(利用者が利用可能な)検索条件，検索結果として抽出する情報，閲覧時の表示ス
タイルの指定など，『ひまわり』を言語資料に適合させるための設定が定義され
ている。設定ファイルは，基本的に言語資料の作成者が定義することを想定して
いる。



\subsection{検索条件入力用インターフェイス}
「検索条件入力用インターフェイス」は，利用者が指定した検索条件を「検索エ
ンジン」に渡す役割を果たす。検索条件は，全文検索の対象とする文字列と検索
結果の制約条件からなる。これらは，図\ref{fig:『太陽コーパス』への適用例}
(上部)の GUI を使って入力することができる。

全文検索対象の文字列については，XML 文書中のどの要素の文字列を検索するか
をメニュー形式で指定することができる(図\ref{fig:『太陽コーパス』への適用
例}では，検索対象の文字列は，「本文」となっている)。制約条件は，図
\ref{fig:『太陽コーパス』への適用例}で表示されている，「年」，「号」，
「題名」など検索された文字列に付随する情報に対する制約条件であり，検索結
果を絞り込むために利用する。このように，検索条件の指定は言語資料自身に対
する知識を必要としない方法を用いている。これは，\ref{sec:前提条件}節の
「対象とする利用者」に示した前提条件を反映したものである。つまり，エンド
ユーザには言語資料自身に対する知識を必要としないインターフェイスを提供し，
より詳細な検索条件の設定，例えば，XML文書中のどの部分を検索できるように
するのか，どの付随情報を検索結果に含めるのか，どのような制約条件を設定可
能とするかは，言語資料作成者が設定ファイルに対して行うことを想定している。
検索条件については，\ref{sec:検索方式}節で詳しく説明する。

なお，検索文字列を入力する際は，検索もれを防止するために，「字体変換」
機能\shortcite{yamaguchi2002}を利用することができる。「字体変換」機能は，
入力された検索文字列に対して，旧字，異体字など別字体の候補を提示する機能
である。例えば，検索文字列を「国語」として字体変換を行うと，候補として
「國語」を提示することができる。この機能は，『太陽コーパス』に収録されて
いる総合雑誌『太陽』など，現代と異なる字体を含んだ言語資料の検索を想定し
て付加されている。



\subsection{検索エンジン}
「検索エンジン」は，「検索条件入力用インターフェイス」で入力された検索条
件を元に，言語資料ファイルを検索し，「検索結果閲覧部」，もしくは，「外部
閲覧システム」に検索結果を渡す役割を果たす。検索エンジンは，全文検索のほ
か，検索された文字列に付随する情報の抽出を行う。この際，高速
化を図るため，索引ファイルを参照する。詳しくは，\ref{sec:検索方式}節を参
照のこと。


\subsection{検索結果閲覧部と外部閲覧システム}
検索結果閲覧部では，検索結果を KWIC 付きの表形式で表示する。
図\ref{fig:『太陽コーパス』への適用例}では，検索対象となった「研究」が
「キー」欄に表示され，その両側に前後文脈が表示される。検索結果には，この
他にも，検索された文字列に付随する情報として，「年」，「号」，「題名」，
「著者」欄が含まれる。どの付随情報を検索結果として表示するかは，言語資料
の作成者が『ひまわり』の設定ファイルにあらかじめ記述しておく。

検索結果閲覧部は，検索結果の表示の他に，次の機能を持つ。

\begin{itemize}
 \item 検索結果に対する簡易な分析機能(ソート，検索結果の絞込みなど)
 \item 検索結果の外部プログラムへの出力
\end{itemize}

ここでは，検索結果の外部プログラムへの出力について詳しく説明する。簡易な
分析機能については，\shortcite{yamaguchi2002}を参照されたい。外
部プログラムへ検索結果を出力する方法は，図\ref{fig:システム構成}に示した
とおり，(a) テキストファイルへの出力，(b) クリップボードへの出力，(c) 外
部閲覧システムへの出力の三つある。

まず，このうち，(a), (b) は，検索結果に対してさらなる分析を行うことを
目的として，統計処理ソフトウェアや表計算ソフトウェアに検索結果を渡す手段
を提供するものである。(a) は，検索結果をタブ区切りのテキスト形式でファイ
ルに出力するもの，(b)は，検索結果閲覧部の表形式の閲覧画面から利用者が選
択した範囲のデータをクリップボードに転送するものである。(b) で転送される
データも，タブ区切りのテキストデータである。

一方，(c)は言語資料の利用目的の多様性に対応するために，二つの方法で言語
資料を外部閲覧システムに渡す。一つは，XML 文書の一部を XSL 変換 を
介して，外部閲覧システムに渡す方法である。主として，HTML ブラウザに出力
することを想定する。表示形式は，CSS (Cascading Style Sheet) で指定する。
XSL 変換用の XSLT スタイルシートと CSS は，言語資料集合に付随する設定ファ
イルの中で指定する。HTML ブラウザを用いているので，言語資料ファイル外の
画像を表示できるほか，縦書きやルビの表示，フォントサイズ，フォントの種類，
文字色の変更など，言語資料に合わせてさまざまな表現形式を用いることができ
る。図\ref{fig:『太陽コーパス』への適用例}中の HTML ブラウザは，この機能
の利用例である。この例では，検索結果の文字列を含む(雑誌『太陽』の)「記事」
要素全体を表示している。表示する際には，CSS の適用により，タイトルのフォ
ントを大きくしたり，著者名を右寄せで表示するなどしている。

言語資料を外部閲覧システムに渡す，もう一つの方法は，検索結果の特定の行，
列を引数として，外部プログラムを実行する方法である。この機能を利用するこ
とにより，音声，画像ファイルなど言語資料外にあるデータ(図\ref{fig:システ
ム構成}中央下)を参照することが可能である。実際に，『太陽コーパス』への適
用においては，検索結果の「著者」欄の値を引数として，著者データベースを検
索し，その情報を閲覧することができるようになっている。


\section{検索方式}
\label{sec:検索方式}
本節では，図\ref{fig:システム構成}に示した「検索エンジン」で用いる検索方
式について詳しく説明する。

\subsection{検索処理の流れ}
\label{ssec:概要}
『ひまわり』は，全文検索システムであり，検索処理の基本は，XML で構造化さ
れた言語資料から指定された文字列を検索することである。これに付け加えて，
言語資料に対してマークアップされたさまざまな情報を抽出するとともに，抽出
された情報に対して制約を適用し，検索結果を絞り込む。検索処理の大まかな流
れは，次のとおりである。

\begin{enumerate}
 \item 指定された要素中の文字列(以後，「検索対象文字列」と表記)を全文検索
 \item 検索された文字列(以後，「検索結果文字列」と表記)に付随する情報(以
       後，「付随情報」と表記)を抽出
 \item 抽出された付随情報に対して，指定された制約条件を適用し，検索結果
       を制約
\end{enumerate}

上記の処理の流れを説明するために，次のような XML 文書を検索することを考
える。検索対象文字列は「記事」要素中の「普及」，制約条件は「記事」要素の
「著者」属性が「山田太郎」であるものとする。

\begin{quote}
\begin{verbatim}
<記事 著者="山田太郎">インターネットの普及でさまざまなサービスが ...</記事>
<記事 著者="佐藤一朗">新たな規格の普及に向けて，各社が動き始めた。</記事>
\end{verbatim}
\end{quote}

このとき，まず，「記事」要素に対して，全文検索を実行する。検索対象文字列
の「普及」が検索されたら，その「記事」要素の「著者」属性値を取得し，制約
値である「山田太郎」と一致するかチェックする。上記の XML 文書の 1 行目は，
制約値と一致し，検索結果として返される。一方，2 行目は，「著者」属性値が
「佐藤一朗」なので，検索結果から排除される。なお，検索結果には，検索結果
文字列の他に，付随情報である「著者」属性値も含まれる。

以上が，検索処理の基本的な流れであるが，『ひまわり』では検索処理を高速化
するために，3種類の索引を用いている。そのうちの二つは，要素内容，および，
要素属性に対する索引である。これらは，全文検索のための索引として用いられ
る。索引づけの方法は，Suffix Array方式に基づくものであり，検索手法は二分
木検索を利用する。もう一つの索引は，要素に対する索引で，付随情報の参照の
ために使用される。索引として用いるのは，要素の開始・終了位置である。検索
手法としては，検索文字列の位置情報をキーとして二分木検索を行う。索引につ
いては，この後の節で詳しく述べる。


\subsection{言語資料の検索に必要な付随情報の参照に対する考察}
前節で示したように，本システムは，全文検索により検索結果文字列を得るだけ
でなく，その付随情報を二次的に参照する。付随情報は，検索結果の一部であり，
検索結果を制約するためにも用いられる。したがって，付随情報を参照する能力
が検索式の記述力を左右するとともに，本システムで扱うことのできる文書構
造を規定することを意味する。そこで，本節では，まず，言語資料の検索において，
どのような付随情報を参照することが必要なのかを考察する。


ここでは，図\ref{fig:付随情報の参照}のように，XML 文書を木構造で表現し，
その上で議論することにする。木構造の中で，各ノードが XML 文書における要
素を表し，ノードの文字は要素名を表す。下位ノードは，上位ノードを構成する
要素とする。最上位ノード(root)は XML 文書全体を表す。検索結果文字列は，
str とする。要素 T は，全文検索を行った時に検索対象とした要素である。な
お，『ひまわり』では，要素属性を検索対象文字列とすることもありうるが，そ
の場合は，この後の節で示すように，要素属性を当該要素の要素内容全体として
処理するので，図\ref{fig:付随情報の参照}の str と同様に考えて差し支えな
い。



\begin{figure}[hbt]
 \begin{center}
  \epsfxsize=10.5cm
  \epsfbox{tree_reference.eps}
  \caption{付随情報の参照}
  \label{fig:付随情報の参照}
 \end{center}   
\end{figure}

本論文では，この木構造の中で，検索結果文字列 str を起点として，上位階層
要素，兄弟要素，前後要素の三つに着目する。この後の節では，この三つの要素
それぞれについて，言語資料における構造化との関連を示して，その必要性を明
確にする。


\subsubsection{上位階層要素/属性値}
上位階層要素は，検索結果文字列 str を要素内容として持つ要素である。図
\ref{fig:付随情報の参照}では，長方形で囲われた要素 T, C, A, root が str
に対する上位階層要素に相当する。上位階層要素のタグは，str に対する直接的
な付与情報なので，上位階層要素/属性値の参照は必須である。

言語資料における具体的な要素例としては，ルビや品詞のように文字や語に付与
されるものから，記事，章，節というように文章の論理構造に付与されるものま
でさまざまなものが考えられる。これらの例から明らかなとおり，str の親要素
だけでなく，任意の階層の上位要素を参照する必要がある。

上位階層要素の例を次に示す。これは，文字列「五月雨の季節」を「記事」，
「形態素」，ruby (ルビ)要素で記述したものである。

\begin{verbatim}
  <記事 著者="山田太郎" タイトル="さみだれ">
    <形態素 品詞="名詞"><ruby value="さみだれ">五月雨</ruby></形態素>
    <形態素 品詞="助詞">の</形態素>
    <形態素 品詞="名詞">季節</形態素>
  </記事>
\end{verbatim}

例えば，検索結果文字列「五月雨」に対する記事情報を得ようとする場合，上位
階層要素である「記事」要素を参照として，「著者」属性と「タイトル」属性を
得ることになる。同様に，「五月雨」に対するルビや品詞情報を得る場合は，そ
れぞれ ruby 要素，「形態素」要素を参照する。

以上の例を見ればわかるとおり，上位階層要素の参照は，要素自体というよりも，
要素属性値を参照することが多い。要素自体を参照するのは，検索結果文字列を
より広い範囲で参照する場合である。その例として挙げられるのは，上の XML文
書に対して，「季節」を全文検索して，そこから記事全体を外部閲覧システム
(図\ref{fig:システム構成}参照)で閲覧する場合である。

\subsubsection{兄弟要素/属性値}
ここで言う兄弟要素とは，検索文字列 str の親要素に対して兄弟関係にある要
素のことを指す。図\ref{fig:付随情報の参照}の検索結果文字列 str に対して
は，G, H 要素が兄弟要素に相当する。

同一の親を持つ要素の参照は，辞書の項目のように，一つの項目を複数の要素で
記述したデータを参照するのに必要となる。次の例は，「辞書項目」要素を「見
出し」，「表記」，「品詞」，「語義説明」要素で表現したものである(語義説
明は，三省堂『大辞林』第2版の見出し「さみだれ」から引用)。

\begin{verbatim}
  <辞書項目>
    <見出し>さみだれ</見出し>
    <表記>五月雨</表記>
    <品詞>名詞</品詞>
    <語義説明>
     〔「さ」はさつき，「みだれ」は水垂(みだれ)の意という〕
      (1)陰暦五月頃に降り続く雨。つゆ。梅雨(ばいう)。長雨(ながめ)。
         うのはなくたし。［季］夏。《—をあつめて早し最上川/芭蕉》
      (2)継続しないで，少しずつ繰り返すことのたとえ。「—スト」
    </語義説明>
  </辞書項目>
\end{verbatim}

この XML 文書の「見出し」要素を検索した時，辞書の検索結果としては，見出
しを検索結果として示すだけでなく，その表記や品詞などの付随情報を同時に示
すのが一般的だろう。このような付随情報を参照するためには，「見出し」要素
に対する兄弟要素である「表記」，「品詞」，「語義説明」要素を参照できなけ
ればならない。


\subsubsection{前後要素/属性値}
前後要素とは，検索文字列の親要素と同一の要素名を持つ要素で，前出，後
出する要素のことを指す。図\ref{fig:付随情報の参照}の検索結果文字列 str
に対しては，要素 E の兄弟要素の T 要素と，要素 I の兄弟要素の二つの T 要素
が前後要素に相当する。兄弟要素と違って，共通する親要素を持つ必要はない。

前後要素は，連続した要素の関係を考慮して検索を行う場合に必要になる。その
例として，特定の形態素列を検索する状況が挙げられる。次の例は，
文字列「今日のテーマは」に対して，「形態素」タグを付与したものである。

\begin{verbatim}
  <形態素 品詞="名詞">今日</形態素>
  <形態素 品詞="助詞">の</形態素>
  <形態素 品詞="名詞">テーマ</形態素>
  <形態素 品詞="助詞">は</形態素>
\end{verbatim}

このような形態素列に対して，「今日」に後続する形態素を参照することを考え
ると，「形態素」要素である「今日」に後続する「形態素」要素を参照すること
になる。これ以外にも，名詞，助詞，名詞といった特定の品詞列を検索する場合
もあるだろう。この場合，検索対象文字列を「名詞」として，「形態素」要素の
品詞属性に対して全文検索を行い，その後続する二つの「形態素」要素の属性値
を参照することが必要になる。


\subsubsection{参照可能な付随情報}
\label{sss:付随情報}
以上のことから，本システムにおいて参照することのできる付随情報を次のよ
うに定める。これらは，『ひまわり』が検索対象とすることのできる XML 文書
の構造を規定する。

\begin{itemize}
 \item str を包含する任意の要素，および，その属性値。なお，当該要素が入
       れ子構造になる場合は，直近の要素を優先して参照するものとする。
 \item str の親要素の兄弟要素，および，その属性値。なお，参照する際は，
       同一の要素が複数存在する場合を考慮して，参照方向(親要素の前後)を
       指定するものとする。
 \item str の親要素と同一の要素名を持つ前後 $n$ 番目の要素，お
       よび，その属性値($n$ は任意の整数)
\end{itemize}


\subsection{検索対象文字列の全文検索}
この節では，検索対象文字列の全文検索について説明する。この処理は，
\ref{ssec:概要}節で示した検索処理の流れのうち，(1) に相当する。

\subsubsection{Suffix Array に基づく全文検索}
検索対象文字列の検索対象としては，要素内容と要素属性があるが，いずれに対
する検索も，Suffix Array方式の索引を用いた二分木検索を行う
\shortcite{yamasita2000}。Suffix Array を索引として用いた検索では，検索
対象文字列をキーとし，結果として検索結果文字列の先頭の位置を取得すること
ができる。索引づけは，検索対象の $n$ 個の文字すべてに対して行う。つまり，
要素内容の場合は，要素内容中のタグを除くすべての文字データであり，要素属
性の場合は，すべての要素属性値である。索引の量は，文字データ数 $n$ に比
例する。検索の時間計算量は，索引を二分木検索するので，$O(\log n)$ となる。

検索対象文字列は，正規表現\footnote{『ひまわり』における正規表現は，記述
言語である Java 言語の標準ライブラリの {\tt javax.regex.Pattern} クラスに依存する。詳細は， {\tt
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/regex/Pattern.html}
を参照のこと。}で記述する。全文検索を実行する際には，検索対象の要素，も
しくは，要素属性を特定しておく。ただし，正規表現の指定には制限があり，検
索文字列の中に，1文字以上のリテラルを含んでいる必要がある\footnote{例え
ば，「国」で始まる2文字の文字列を表す「{\tt 国.}」は1文字のリテラル「国」を
含むので，検索文字列として指定できるが，任意の2文字の文字列を表現する
「{\tt ..}」は，いずれもリテラルではないので，検索文字列としては指定できない。}。

Suffix Array 自体については，\shortcite{yamasita2000}を参照のこととし，
この後の
\ref{sssec:文字列の照合(要素内容の場合)}，
\ref{sssec:文字列の照合(要素属性の場合)}節では，要素内容，要素属性ごとに，
文字列の照合方法を説明することにする。


\subsubsection{文字列の照合(要素内容の場合)}
\label{sssec:文字列の照合(要素内容の場合)}
要素内容に対する全文検索における文字列の照合は，要素内容中のタグを除いた
文字データと検索対象文字列とを照合する。照合する方法には，検索対象の要素
の範囲を限定しないで照合する方法と，要素の範囲内で照合する方法の二つがあ
り，適宜使い分けることができる。なお，照合する際には，否定条件での照合も
可能である。

\paragraph{要素の範囲に限定しない方法} 形態素に対するマークアップを行っ
た場合，各要素内容の文字列は，連続的に解釈される。要素の範囲に限定しない
照合方法は，こういった連続的に解釈可能な要素を全文検索する時に用いる。次
の XML 文書\footnote{本論文では，XML 文書を見やすくするために，適宜，改
行や字下げの空白を挿入している。『ひまわり』は，空白文字も通常の文字と同
様に扱うので，実際の XML 文書では，空白文字を挿入しないことが多い。}
は，「文」，「形態素」の二つの要素で構造化を行った XML 文書である。

{\small \begin{verbatim}
   <文>
     <形態素>東京</形態素><形態素>タワー</形態素><形態素>へ</形態素><形態素>行く</形態素>
   </文>
   <文>
     <形態素>時々</形態素><形態素>雨</形態素><形態素>が</形態素>
   </文>
\end{verbatim}}

このXML 文書の「形態素」要素に対して，「東京タワー」を検索した場合，「文」，
「形態素」タグは無視されて，照合は成功する。


ただし，場合によっては，過度な照合が行われてしまう場合がある。過度な照合
を防ぐための手段として，照合する範囲を限定する要素を設定することができる。
例えば，上の XML 文書に対して，「行く時」を全文検索すると，照合が成功し
てしまうが，「文」要素を範囲限定のための要素とすれば，照合するのを防ぐこ
とができる。

以上は，リテラルだけからなる有限長の検索対象文字列の照合であるが，正規表
現で検索対象文字列を指定した場合，検索対象文字列が無限長の文字列となる可
能性がある。『ひまわり』では，照合対象となる文字列の最大文字列長を制限し
た上で照合を行う。具体的には，正規表現中のリテラル部分(利用者が検索対象
文字列入力時に指定する)の前後文字列長を制限している。この最大前後文字列
長は，利用者が設定することができる。例えば，最大前後文字列長が5文字のと
き，正規表現「\verb+東京.*+」\footnote {「東京」に0文字以上の任意の文字が後
続する文字列}に対しては，「東京」の前後5文字が照合の範囲となり，文字列
「東京タワーへ行」との照合が成功することになる。



\paragraph{要素の範囲を限定する方法} 形態素列の照合と異なり，各要素の要
素内容に連続性のない言語資料もある。その代表的な例は，辞書である。もう一
度，「さみだれ」の辞書項目を元に説明する。

{\small \begin{verbatim}
  <辞書項目>
    <見出し>さみだれ</見出し>
    <表記>五月雨</表記>
    <品詞>名詞</品詞>
  </辞書項目>
\end{verbatim}}

この XML 文書において，「見出し」要素と「表記」要素の要素内容に連続性は
ない。そこで，要素範囲を限定した照合では，検索対象文字列と指定された要素
の要素内容全体とを照合する。「見出し」要素に対して全文検索を行った場合，
要素内容である「さみだれ」と検索対象文字列とを照合する。なお，部分文字列
と照合させる場合は，「\verb+さみ.*+」などのように，正規表現を用いる。


\subsubsection{文字列の照合(要素属性の場合)}
\label{sssec:文字列の照合(要素属性の場合)}
要素属性に対する全文検索における文字列の照合は，要素内容の照合における
「要素の範囲を限定する方法」と同様に，属性値全体で照合を行う。検索対象文
字列の指定も，リテラルを1文字以上含むという，制限付きの正規表現である。
全文検索の結果としては，要素属性値の他に，当該要素の要素内容も含まれるも
のとする。付随情報の参照は，この要素内容を起点に行われる。



\subsection{付随情報の参照と制約}
この節では，付随情報の参照と，検索条件における付随情報の制約について説明
する。これらの処理は，\ref{ssec:概要}節で示した検索処理の流れのうち，
(2), (3) に相当する。


\subsubsection{付随情報の参照}
付随情報の参照には，全文検索の場合と同様，索引を用いる。
\ref{sss:付随情報}節で示したいずれの付随情報についても，「要素に対する索
引」を使用する。要素に対する索引とは，参照対象となる要素の開始位置と終了
位置の組を開始位置でソートしたものである。参照する際には，検索結果文字列
の位置をキーとし，結果として当該要素の開始位置と終了位置を得る。索引の量
は，要素数を $n$ とすると，$2n$ である。検索処理の時間計算量は，二分木検索を
使用するので，$O(\log n)$ である。

次に，各付随情報ごとに，参照方法を示す。

\paragraph{上位階層要素，および，その属性値}
索引づけは，全文検索時に検索対象とした要素(以後，「検索対象要素」と表記)
を含む上位階層要素のうち，参照が必要になる要素に対して行う。図
\ref{fig:付随情報の参照}では，root, A, C, T 要素が相当する。当該要素の参
照には，検索結果文字列の位置をキーとして，参照する要素の範囲(開始・終了
位置)を検索し，その結果から要素を参照する。一方，属性値の参照には，検索
された範囲の開始位置から，検索対象の属性を線形検索する。以後，
兄弟要素，前後要素ともに，その属性値を得るときは，同様の方法を用いる。


\paragraph{兄弟要素，および，その属性値}
兄弟要素の参照に必要な索引づけは，検索対象要素に対して行う。図\ref{fig:付随情報の参照}では，T 要素が相当する。兄弟要素の参照には，検索結果文字
列の位置をキーとして，検索対象要素の範囲を取得する。そして，その前後の要
素を線形検索することにより，兄弟要素を参照する。


\paragraph{前後要素，および，その属性値}
前後要素の参照に必要な索引づけも，検索対象要素に対して行う。前後要素を参
照するには，まず，検索結果文字列の位置をキーとして，検索対象要素の索引を
検索する。すでに述べたように，索引は要素の開始位置をキーとして，昇順にソー
トされている。検索対象要素に対して，$n$ 番目($n$ が負値の場合，前の要素を表
すこととする)の要素を参照するには，検索された索引に対して，$n$ 番目の索引
を検索すればよい。

\subsubsection{付随情報の制約}
抽出された付随情報は，検索結果を制約する条件として利用できる。付随情報に
対する制約条件は，正規表現で記述する。この際，否定条件を指定することもで
きる。文字列の照合は，全文検索の場合と同様，タグを排除した後に行う。


\section{評価}
本節では，言語資料の構造化形式と利用目的の多様性に対する『ひまわり』の有
効性を検証するために，実際の言語資料である『分類語彙表』と『日本語話し言
葉コーパス』に『ひまわり』を適用し，定性的に評価する。さらに，4種類の言
語資料に対する検索速度を測定することにより，『ひまわり』を定量的に評価す
る。

\subsection{言語資料への適用}
\subsubsection{『分類語彙表』}
まず，日本語のシソーラスである『分類語彙表(増補改訂版)』
\shortcite{bunrui}に本システムを適用する。図\ref{fig:分類語彙表データ)}
の左が『分類語彙表』の元のデータ(分類番号 1.5010 「体の類/自然/自然/光」の一
部とその上位階層の分類項目)で，右が XML で構造化した結果である。bunrui\_goi\_hyo, c, s, l, e 要素は，それぞ
れ『分類語彙表』全体，分類項目，項目内の段落番号，項目内の小段落番号，表記を表す要素である。e 要素には，表記に対する「見出し」属性を，c 要素には「分類番号」，
「概念パス」属性(当該の分類項目に至るまでの分類項目の並び)を付けている。


\begin{figure}[hbt]
\begin{minipage}{.45\linewidth}
{\small
\begin{verbatim}
1 体の類
1.5 自然
1.50 自然
1.5010 光
01 光(ひかり) -光(こう) 光明 光輝 光彩
02 微光 白光
   白色光
03 燐光 蛍光 蛍火










\end{verbatim}}
\end{minipage}\hspace{2.5em}
\begin{minipage}{.45\linewidth}
{\small
\begin{verbatim}
<bunrui_goi_hyo>
  <c 分類番号="1.5010"
     概念パス="/体/自然/自然/光">
    <s 段落番号="01"><l 小段落番号="01">
      <e 見出し="ひかり">光</e>
                 :
      <e 見出し="こうさい">光彩</e>
    </l></s>
  <s 段落番号="02"><l 小段落番号="01">
      <e 見出し="びこう">微光</e>
      <e 見出し="はっこう">白光</e>
    </l>
    <l 小段落番号="02">
      <e 見出し="はくしょくこう">
        白色光</e>
    </l></s>
                 :
</bunrui_goi_hyo>
\end{verbatim}}
\end{minipage}
 \caption{『分類語彙表』(左：元データ，右： XML による構造化)}
 \label{fig:分類語彙表データ)}
\end{figure}

図\ref{fig:分類語彙表データ)}の XML 文書を検索対象とするために，『ひまわ
り』の検索対象文字列，付随情報，および，閲覧形式を次のように設定した。

\begin{description}
 \item[検索対象文字列] e 要素の要素内容(つまり，表記)，および，「見出し」
	    属性
 \item[付随情報] c, s, l, e 要素の属性(個々の要素に対して索引付け)
 \item[閲覧形式] 分類項目に含まれる語を閲覧するために，c 要素を HTML ブラウ
	    ザに出力
\end{description}

図\ref{fig:適用例(分類語彙表)}は，「光」を表記に含む語を検索した結果であ
る。「表記」欄が，検索結果文字列で，その左右に同一分類項目の語が列挙され
る。この三つの欄の他に，検索対象文字列として設定した「見出し」欄，付随情
報として設定した「概念パス」や「分類番号」欄などが表示される。

\begin{figure}[hbt]
 \begin{center}
  \epsfxsize=13.5cm
  \epsfbox{himawari_bunrui.eps}
  \caption{『分類語彙表』への適用例}
  \label{fig:適用例(分類語彙表)}
 \end{center}   
\end{figure}

『ひまわり』のウィンドウに重ねて表示されているのは，外部閲覧システムの
HTML ブラウザであり，検索結果文字列をダブルクリックすると起動される。こ
の例では，検索結果文字列「微光」を含む分類項目全体を表示している。検索結
果文字列は，利用者が発見しやすいように，赤色で表示される。HTML ブラウザ
には，検索対象文字列を含む c要素が渡され，図\ref{fig:システム構成}に示し
たように XSL 変換と CSS ファイルが適用された後にその結果が表示される。

このように，『ひまわり』は，(1) 『分類語彙表』の見出し，および，表記を対象に
全文検索できる，(2) 書籍版とほぼ同等の形式で閲覧することができることを示
した。これにより，『ひまわり』は『分類語彙表』を検索・閲覧するシステムとして
適応していると考えられる。










\subsubsection{『日本語話し言葉コーパス』}
次に，『日本語話し言葉コーパス』に対して，『ひまわり』を適用する。『日本
語話し言葉コーパス』は，学会講演などの独話を主体としたコーパスである。音
声データの他に，音声データの転記テキストに形態論情報，分節音などの言語情
報が付与された XML 形式のデータが提供される。詳しくは，
\shortcite{maekawa2004}を参照されたい。ここでは，コーパス全データのうち，
人手で形態論情報を付与された転記テキスト(396講演，約102万短単位) を適用
対象とする。

図\ref{fig:『日本語話し言葉コーパス』の書き起こしテキスト} (上)
が，転記テキストである。転記テキストは，200 [ms] 以上のポーズ位
置で「転記基本単位」に分割される。転記基本単位の始まりは，数字で始まる行
で表される。左から，転記基本単位の通し番号，開始時刻，終了時刻，話者ID (L 
または R)を意味する。発話の転記には，漢字仮名混じりで表記された基
本形と，発音を可能な限り正確にカタカナで表記した発音形がある。下の転記テ
キストでは，\verb+&+ の左右がそれぞれ基本形，発音形が併記されている。ま
た，各転記基本単位内は，文節単位で改行されている。

\begin{figure}[hbt]
\noindent{\bf ■転記テキスト}

{\small
\begin{verbatim}
  
  0001 00000.311-00000.698 L:
  テーマ　　　　                                & テーマ
  0002 00001.114-00002.989 L:
  無人島に　　　                                & ムジントーニ
  持っていくもの                                & モッテイクモノ
  三つ　　　　　                                & ミッツ
\end{verbatim}}
\noindent{\bf ■XML 文書への変換結果}

{\small
\begin{verbatim}
<kdb 講演ID="AC00JUL124">
 <su 代表形="テーマ" 品詞="名詞" 発音形="テーマ">テーマ</su>
 <p p_id="001"/><t 転記番号="0001" 開始時刻="00000.311" 終了時刻="00000.698" />
 <su 代表形="ムジン" 品詞="名詞" 発音形="ムジン">無人</su>
 <su 代表形="トウ" 品詞="接尾辞" 発音形="トー">島</su>
 <su 代表形="ニ" 品詞="助詞" その他1="格助詞" 発音形="ニ">に</su>
 <p p_id="002"/>
 <su 代表形="モツ" 品詞="動詞" 活用型="タ行五段" 活用形="連用形" 発音形="モッ">持っ</su>
 <su 代表形="テ" 品詞="助詞" その他1="接続助詞" 発音形="テ">て</su>
\end{verbatim}}
\caption{『日本語話し言葉コーパス』の転記テキストと XML 文書への変換結果}
\label{fig:『日本語話し言葉コーパス』の書き起こしテキスト}
\end{figure}


図\ref{fig:『日本語話し言葉コーパス』の書き起こしテキスト} (上)の転記テキ
ストに形態論情報を付与し，XML 形式で表現したのが，図\ref{fig:『日本語話
し言葉コーパス』の書き起こしテキスト} (下)の「XML 文書への変換結果」である。
今回は，全転記テキストを一つの言語資料ファイルにまとめて検索することとし
た。kdb, su, p, t 要素は，それぞれ，一つの転記テキスト全体，形態論情報
(短単位\footnote{CSJ に付与されている形態論的情報には，長い単位(長単位)
と短い単位(短単位)があるが，今回は短単位を用いた。})，文節の区切り，転記
基本単位の区切りを表す。

図\ref{fig:『日本語話し言葉コーパス』の書き起こしテキスト}の XML 文書を
検索対象とするために，『ひまわり』の検索対象文字列，付随情報，および，閲
覧形式を次のように設定した。

\begin{description}
 \item[検索対象文字列] su 要素の要素内容(要素範囲の限定なし)，su 要素の
	    要素内容(要素範囲の限定あり)
 \item[付随情報] su,  t 要素の各種属性，su 要素の前後要素
 \item[閲覧形式] 転記テキスト全体を閲覧するために，kdb 要素を HTML ブラウ
	    ザに出力。また，検索結果文字列に対応する音声の参照(外部プロ
	    グラムの音声再生プログラムを起動)
\end{description}

\vspace{1zh}
図\ref{fig:適用例(日本語話し言葉コーパス)}は，su 要素内容中の文字列「に
ついて」を検索した結果である。検索結果には，検索結果文字列のほか，付随情
報として，検索結果文字列の品詞，後続する2短単位(「基本形1，2」欄)とそ
の品詞(「品詞1，2」欄)，講演IDなどが含まれる。


\begin{figure}[hbt]
 \begin{center}
  \epsfxsize=13.5cm
  \epsfbox{himawari_csj.eps}
  \caption{『日本語話し言葉コーパス』への適用例}
  \label{fig:適用例(日本語話し言葉コーパス)}
 \end{center}   
\end{figure}


検索結果文字列の「について」は，短単位で「に/つい/て」のように分割される
が，文字列の照合は，「要素範囲の限定なし」で行っているので，「について」
全体が検索結果文字列となる。「品詞」欄には，検索結果文字列の先頭の文字列
「に」の品詞である「助詞」が入っている。短単位での分割位置がわかっている
場合は，文字列の照合を su 要素の範囲に限定して行えば，より厳密な検索がで
きる。このように，短単位の知識がなくても検索することが可能であると同時に，
より詳細な制約を与えて，検索結果を絞り込むこともできる。

図\ref{fig:適用例(日本語話し言葉コーパス)}右下の HTML ブラウザの画面は，
講演全体を表示したものである。短単位の区切りは，`/' で表記している。また，
短単位にカーソルを合わせると，当該短単位の品詞などの情報が図\ref{fig:適用例(日本語話し言葉コーパス)}のように表示されるようになっている。

図\ref{fig:適用例(日本語話し言葉コーパス)}右上のウィンドウは，音声再生用
の外部プログラムであり，言語資料外のデータを参照する例として示した。再生
時には，付随情報である講演ID，開始時刻，終了時刻を外部プログラムに渡し，
当該の部分の音声を再生できるようにしている。

以上で示したように，『ひまわり』は，『日本語話し言葉コーパス』の言語資料
の構造化形式に適応して，形態論情報を検索に有効に利用することが可能である。
さらに，音声データの参照，および，転記テキスト単位での形態素列の閲覧など，
言語資料に適した閲覧を実現している。

\subsection{検索速度の測定}
『ひまわり』の検索時間を測定し，定量的に評価する。検索の対象は，表
\ref{tbl:平均検索時間}に示した，『太陽コーパス』，『毎日新聞テキストデー
タベース』(2002年，1年分)，『分類語彙表』，CSJ (『日本語話し言葉コーパス』)
の四つの言語資料である。検索対象の文字列は，『分類語彙表』が長さ2文字，
それ以外の言語資料は長さ4文字の文字列をそれぞれの資料から100個ランダムに
抽出し，表\ref{tbl:平均検索時間}の検索対象要素に対して全文検索を行った。
検索結果に含まれる付随情報は，『分類語彙表』と『日本語話し言葉コーパス』
(CSJ)は，前節で示した付随情報を，『太陽コーパス』と毎日新聞に対しては，
書誌情報にあたる情報を付随情報として抽出した。測定に使用した計算機は，
CPU Pentium4 2.5GHz, メモリ 1GB，OS Linux 2.4.26 (Debian/GNU Linux
ver.3.0r2)，JRE (Java Runtime Environment) ver.1.4.2\_04 である。

測定結果として，表\ref{tbl:平均検索時間}に，平均検索時間，ファイルサイズ，
総文字数，平均検索結果数を示す。ファイルサイズとは，言語資料ファイルのサ
イズ(タグを含む。encoding は UTF-16)であり，総文字数とは，検索対象要素中
の文字データの総数(索引づけされた文字データ数でもある)である。

この結果を見ればわかるとおり，307.2〜1114 [ms]で検索されており，実用的な
速度で検索できることが確認できた。このうち，最も検索時間がかかったのが
CSJ である。CSJ の平均検索結果数を見ると，『太陽コーパス』と同程度であり，
総文字数は『太陽コーパス』の約1/7であるにもかかわらず，検索時間は約3.6倍
である。この原因は，形態論的情報に関連する付与情報が多く，全文検索時の文
字列の照合に時間がかかるためだと考えられる。CSJ の付与情報が『太陽コー
パス』と比べて多いことは，CSJ のファイルサイズが『太陽コーパス』の約4倍で
あることを見ればわかる。

 \begin{table}[hbt]
 \begin{center}
  \caption{『ひまわり』による平均検索時間}
  \label{tbl:平均検索時間}
  {\small
  \begin{tabular}{c|r|r|r|r|c}\hline
   {\bf 言語資料} & {\bf 平均検索時間[ms]} & {\bf ファイルサイズ} & {\bf 総文字数} & {\bf 平均検索結果数} & {\bf 検索対象要素}\\ \hline\hline
   『太陽』 & 307.2 & 99MB &16066889 & 265.3 & 記事本文\\
   毎日新聞 & 618.9 & 222MB &56359298 & 581.8 & 記事本文\\
   分類語彙表 & 126.2 & 6.7MB &336435 & 253.3 & e 要素\\
   CSJ & 1114.0 & 392MB & 2205411 & 235.2 & su 要素\\ \hline
  \end{tabular}}
 \end{center}
 \end{table}


\section{関連研究との比較}
言語資料の検索を目的としたシステムは，コンコーダンサをはじめとして多くの
システムが提案されている。ここでは，言語資料の構造化形式と利用目的の二つ
の多様性の面から，『ひまわり』と既存システムとの比較を行う。

言語資料の構造化形式の多様性へのアプローチとしては，(1) 検索システムの汎
用性を高める方法，(2) 言語資料の形式を統一する方法，(3) タグを含めてテキ
ストとして扱う方法，(4) 多様性には対応せず，特定の言語資料に特化する方法，
といったアプローチがある。従来のコンコーダンサは，(3) と (4)のアプローチ
が多い。例えば，(4) のアプローチの例としては，British National Corpus に
付属する SARA \shortcite{BNC} が挙げられる。(3) の例としては，
WordSmith\footnote{http://www.lexically.net/wordsmith/index.html}や 
Tea\footnote{http://www2.nict.go.jp/jt/a132/members/mutiyama/software.html\#tea}
などがある。このうち，(3)は非常に広範な資料を検索対象とすることができる
が，検索対象文字列ですべての検索条件を記述する必要があるため\footnote{例
えば，検索対象文字列にタグを含めた形で記述する。}，利用者に言
語資料の構造化に関する知識が必要となる。さらに，マークアップされてい
る情報を検索条件として利用することや，それを検索結果として抽出することが
困難である。

(2) の例としては，電子出版用の共通フォーマットである EPWING\footnote{
http://www.epwing.or.jp/} に対応したソフトウェア群が挙げられる。EPWING 
は，辞書検索をはじめとして広く利用されている。この方法は，類似した構造を
持った言語資料を統一する場合には有効であるが，構造が大きく違う場合は，一
つの形式に統一するのが困難である。(1) の手法を取るシステムとしては，XML 
データベースや関係データベースを利用した方法が提案されている(例：『茶器』
\shortcite{matumoto2004})。


これらに対して，本システムは，構造化の形式を XML 文書と定め，XML 文書に
対する，索引つきの全文検索を実現している。検索対象の XML 文書は，言語資
料の検索にとって必要な付随情報と検索結果文字列とのXML 文書構造上の関係を
規定される。これにより，タグセットを限定したり，言語資料全体の構造を規定
することなく，言語資料の多様性に対応することを可能にしている。さらに，構
造化形式の多様性に対応しつつ，付随情報の抽出や付随情報による検索結果の制
約も可能である。


次に，利用目的の多様性への対応方法の面から比較する。まず，検索式の記述能
力の面について考える。『ひまわり』は，エンドユーザと言語資料の作成者をユー
ザとして想定し，検索式の記述能力を維持しながら，言語資料に対する知識を持
たないエンドユーザでも検索を行えるようにしている。ただし，検索式の記述能
力自体は，XML データベースや関係データベースが優れている。例えば，XML 文
書の一部を参照する規格である XPath は，\ref{sss:付随情報}節で示した要素
をすべて参照することができる。しかし，現在のところ，導入コストの高さや導
入・運用のための技術が必要とされることを考慮すると，コーパスに同梱して，
エンドユーザに配布するという前提条件にはそぐわない。

一方，閲覧形式の点では，KWIC 形式で結果を表示する手法が多くのシステムで
採用されている。しかし，資料に付随する情報は，閲覧時に十分考慮されていな
い。それに対して，本システムでは，KWIC を含んだ表形式での表示が基本
となっており，KWIC とともに付随情報を利用してさまざまな分析が可能になる
(例：用例を年代順に並べる。同一著者の用例をまとめるなど)。また，テキスト
として表示できない音声や画像などのデータを参照する手段も備えている。

\section{おわりに}
本論文では，構造化された言語資料に対する全文検索システム『ひまわり』の設
計と実現について述べた。『ひまわり』の特徴は，言語資料の構造化形式と利用
目的の多様性に対応するように設計したところにある。

構造化形式の多様性については，構造化の形式を XML とし，その上で，索引つ
きの全文検索機能を実現した。この際，検索対象とすることのできる XML 文書
の形式を，XML 文書全体の構造で規定するのではなく，検索対象の文字列とそれ
に対して付与されている情報との文書構造上の関係により規定した。これにより，
幅広い構造化形式への適用を可能にした。

また，利用目的の多様性に対しては，柔軟な検索条件と閲覧形式を利用者が定義
可能とすることにより実現した。この際，エンドユーザと言語資料の作成者を想
定し，言語資料の作成者が言語資料に適した検索条件と閲覧形式を定義すること
により，言語資料に関する知識を持たないエンドユーザでも検索システムを利用
できるようにした。

『ひまわり』に対する評価は，二つの方法で行った。まず，『分類語彙表』，
『日本語話し言葉コーパス』に『ひまわり』を適用し，言語資料の多様性へ対応
できることを示した。さらに，四つの言語資料において，『ひまわり』の平均検
索速度を計測し，実用的な速度で検索結果を得られることを確認した。

　なお，『ひまわり』は，独立行政法人 国立国語研究所の Web ページ
\footnote{http://www.kokken.go.jp/lrc}において，一般に公開している。



\bibliographystyle{jnlpbbl}
\begin{thebibliography}{}

\bibitem[\protect\BCAY{Aston \BBA\ Burnard}{Aston \BBA\ Burnard}{1998}]{BNC}
Aston, G.\BBACOMMA\  \BBA\ Burnard, L. \BBOP 1998\BBCP.
\newblock {\Bem The BNC HandBook, Exploring the British National Corpus with
  SARA}.
\newblock EDINBURGH UNIVERSITY PRESS.

\bibitem[\protect\BCAY{京都大学}{京都大学}{2000}]{kyodai_corpus}
京都大学 \BBOP 2000\BBCP.
\newblock \JBOQ 京都大学コーパス\JBCQ\
\newblock http://www.kc.t.u-tokyo.ac.jp/nl-resource/corpus.html.

\bibitem[\protect\BCAY{国立国語研究所}{国立国語研究所}{2004}]{bunrui}
国立国語研究所\JED\ \BBOP 2004\BBCP.
\newblock \Jem{分類語彙表 増補改訂版}.
\newblock 大日本図書.

\bibitem[\protect\BCAY{山下達夫}{山下達夫}{2000}]{yamasita2000}
山下達夫 \BBOP 2000\BBCP.
\newblock \JBOQ 用語解説 Suffix Array\JBCQ\
\newblock \Jem{人工知能学会誌}, {\Bbf 15}  (6), p.1142.

\bibitem[\protect\BCAY{山口昌也\JBA 田中牧郎}{山口昌也\JBA
  田中牧郎}{2002}]{yamaguchi2002}
山口昌也\JBA  田中牧郎 \BBOP 2002\BBCP.
\newblock \JBOQ 言語研究のための構造化テキストと検索支援システム
  ---「太陽コーパス」を例として\JBCQ\
\newblock \Jem{国語学会 2002 年度春季大会要旨集}, \BPGS\ 169--176.

\bibitem[\protect\BCAY{松本裕治\JBA 高岡\JBA 浅原\JBA 乾\JBA 橋本\JBA 投野\JBA
  大谷\JBA Edson\hspace{.5em}{T}\hspace{.5em}Miyamoto\JBA 森田}{松本裕治\Jetal
  }{2004}]{matumoto2004}
松本裕治\JBA 高岡一馬\JBA 浅原正幸\JBA 乾健太郎\JBA 橋本喜代太\JBA
  投野由紀夫\JBA 大谷朗\JBA Edson\hspace{.5em}{T}\hspace{.5em}Miyamoto\JBA
  森田敏生 \BBOP 2004\BBCP.
\newblock \JBOQ タグ付きコーパスの格納/検索ツール「茶器」\JBCQ\
\newblock \Jem{言語処理学会第10回年次大会発表論文集}, \BPGS\ 405--408.

\bibitem[\protect\BCAY{前川喜久雄}{前川喜久雄}{2004}]{maekawa2004}
前川喜久雄 \BBOP 2004\BBCP.
\newblock \JBOQ 「日本語話し言葉コーパス」の概要\JBCQ\
\newblock \Jem{日本語科学}, {\Bbf 15}, \BPGS\ 111--133.

\bibitem[\protect\BCAY{田中牧郎}{田中牧郎}{2001}]{tanaka2001}
田中牧郎 \BBOP 2001\BBCP.
\newblock \JBOQ XML を利用したコーパスの構築
  ---「太陽コーパス」を中心に---\JBCQ\
\newblock \Jem{日本語学}, {\Bbf 20}  (13), \BPGS\ 80--91.

\bibitem[\protect\BCAY{毎日新聞社}{毎日新聞社}{1991〜2003}]{mainichi}
毎日新聞社 \BBOP 1991〜2003\BBCP.
\newblock \JBOQ 毎日新聞テキストデータベース 1991〜2003年版\JBCQ.

\end{thebibliography}

\begin{biography}
\biotitle{略歴}
\bioauthor{山口 昌也}{
1992年東京農工大学工学部数理情報工学科卒業。
1994年同大学院博士前期課程修了。
1998年同大学院博士後期課程修了。
同年，同大学工学部助手。
2000年国立国語研究所研究員，現在に至る。
自然言語処理の研究に従事。言語処理学会，情報処理学会，日本語学会，社会言
 語科学会各会員。}
\bioauthor{田中 牧郎}{
1985年東北大学文学部文学科卒業。1987年同大学院博士課程前期修了。1989年同
大学院博士課程後期中退。同年昭和女子大学文学部専任講師。1996年国立国語研
究所研究員。2001年同研究所主任研究員，現在に至る。日本語学(語彙論・日本
語史)の研究に従事。言語処理学会，日本語学会，日本言語学会，社会言語科学
会各会員}

\bioreceived{受付}
\biorevised{再受付}
\bioaccepted{採録}

\end{biography}
\end{document}
