\section{はじめに}
本論文では，構造化された言語資料の検索・閲覧を指向した全文検索システムである『ひまわり』の設計，および，その実現方法を示す。ここで言う「構造化された言語資料」とは，コーパスや辞書のように，言語に関する調査，研究などに利用することを目的として，一定の構造で記述された資料一般を指す。近年，さまざまな言語資料を計算機で利用できるようになってきた。例えば，新聞，雑誌，文学作品などのテキストデータベース(例：『毎日新聞テキストデータベース』\shortcite{mainichi})やコーパス(例：『京都大学テキストコーパス』\shortcite{kyodai_corpus}，『太陽コーパス』\shortcite{tanaka2001})，シソーラスなどの辞書的なデータ(例：『分類語彙表』\shortcite{bunrui})がある。また，音声情報や画像情報などのテキスト以外の情報をも含有するコーパス(例：『日本語話し言葉コーパス』\shortcite{maekawa2004}など)も現れている。言語資料には，書名や著者名などの書誌情報や，形態素情報，構文情報といった言語学的な情報が付与されており，言語に関する調査，研究における有力な基礎資料としての役割が期待されている。このような言語資料に対して検索を行うには，二つの「多様性」に対応する必要があると考える。一つは，構造化形式の多様性である。構造化された言語資料は，一般的に固有の形式を持つことが多い。したがって，検索システムは，検索の高速性を維持しつつ，多様な形式を解釈し，言語資料に付与されている書誌情報や，形態素情報や構文情報などの言語学的情報を抽出したり，検索条件として利用したりできる必要がある。もう一つの多様性は，利用目的の多様性である。ここで言う「利用目的の多様性」とは，検索対象の言語資料の種類や利用目的の違いにより，資料に適した検索条件や閲覧形式，さらには検索時に抽出する情報が異なってくることを指す。例えば，辞書を検索する場合は，見出し語や代表表記に対して検索を行い，単一の語の単位で情報を閲覧するのが一般的である。一方，新聞記事の場合は，記事本文やタイトルに含まれる文字列をキーとして，発行年などを制約条件としつつ検索し，前後文脈や記事全体を閲覧するのが一般的であろう。このように，言語資料を対象とした検索システムは，言語資料の性質と利用目的にあった検索式や閲覧形式を柔軟に定義できる必要がある。以上のような背景のもと，構造化された言語資料に対する全文検索システム『ひまわり』の設計と実現を行う。構造化形式の多様性に対しては，現在，広範に利用されているマークアップ言語であるXMLで記述された言語資料を検索対象と想定し，XML文書に対する全文検索機能を実現する。この際，検索対象とすることのできるXML文書の形式は，XML文書全体の構造で規定するのではなく，検索対象の文字列とそれに対して付与されている情報との文書構造上の関係により規定する。また，検索の高速化を図るため，SuffixArray方式など，いくつかの索引を利用する。次に，利用目的の多様性に関しては，検索式と閲覧方式を柔軟に設定できるよう設計する。まず，検索式を柔軟に設定するために，言語資料の検索にとって必要な要素を，検索対象の文字列とそれに対して付与されている情報との構造上の関係に基づいて選定する。一方，閲覧形式については，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，DebianGNU/Linux3.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(CascadingStyleSheet)で指定する。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種類の索引を用いている。そのうちの二つは，要素内容，および，要素属性に対する索引である。これらは，全文検索のための索引として用いられる。索引づけの方法は，SuffixArray方式に基づくものであり，検索手法は二分木検索を利用する。もう一つの索引は，要素に対する索引で，付随情報の参照のために使用される。索引として用いるのは，要素の開始・終了位置である。検索手法としては，検索文字列の位置情報をキーとして二分木検索を行う。索引については，この後の節で詳しく述べる。\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}<記事著者="山田太郎"タイトル="さみだれ"><形態素品詞="名詞"><rubyvalue="さみだれ">五月雨</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}\itemstrを包含する任意の要素，および，その属性値。なお，当該要素が入れ子構造になる場合は，直近の要素を優先して参照するものとする。\itemstrの親要素の兄弟要素，および，その属性値。なお，参照する際は，同一の要素が複数存在する場合を考慮して，参照方向(親要素の前後)を指定するものとする。\itemstrの親要素と同一の要素名を持つ前後$n$番目の要素，および，その属性値($n$は任意の整数)\end{itemize}\subsection{検索対象文字列の全文検索}この節では，検索対象文字列の全文検索について説明する。この処理は，\ref{ssec:概要}節で示した検索処理の流れのうち，(1)に相当する。\subsubsection{SuffixArrayに基づく全文検索}検索対象文字列の検索対象としては，要素内容と要素属性があるが，いずれに対する検索も，SuffixArray方式の索引を用いた二分木検索を行う\shortcite{yamasita2000}。SuffixArrayを索引として用いた検索では，検索対象文字列をキーとし，結果として検索結果文字列の先頭の位置を取得することができる。索引づけは，検索対象の$n$個の文字すべてに対して行う。つまり，要素内容の場合は，要素内容中のタグを除くすべての文字データであり，要素属性の場合は，すべての要素属性値である。索引の量は，文字データ数$n$に比例する。検索の時間計算量は，索引を二分木検索するので，$O(\logn)$となる。検索対象文字列は，正規表現\footnote{『ひまわり』における正規表現は，記述言語であるJava言語の標準ライブラリの{\ttjavax.regex.Pattern}クラスに依存する。詳細は，{\tthttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/regex/Pattern.html}を参照のこと。}で記述する。全文検索を実行する際には，検索対象の要素，もしくは，要素属性を特定しておく。ただし，正規表現の指定には制限があり，検索文字列の中に，1文字以上のリテラルを含んでいる必要がある\footnote{例えば，「国」で始まる2文字の文字列を表す「{\tt国.}」は1文字のリテラル「国」を含むので，検索文字列として指定できるが，任意の2文字の文字列を表現する「{\tt..}」は，いずれもリテラルではないので，検索文字列としては指定できない。}。SuffixArray自体については，\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(\logn)$である。次に，各付随情報ごとに，参照方法を示す。\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段落番号="02"><l小段落番号="01"><e見出し="びこう">微光</e><e見出し="はっこう">白光</e></l><l小段落番号="02"><e見出し="はくしょくこう">白色光</e></l>
:</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}000100000.311-00000.698L:テーマ&テーマ000200001.114-00002.989L:無人島に&ムジントーニ持っていくもの&モッテイクモノ三つ&ミッツ\end{verbatim}}\noindent{\bf■XML文書への変換結果}{\small\begin{verbatim}<kdb講演ID="AC00JUL124"><su代表形="テーマ"品詞="名詞"発音形="テーマ">テーマ</su><pp_id="001"/><t転記番号="0001"開始時刻="00000.311"終了時刻="00000.698"/><su代表形="ムジン"品詞="名詞"発音形="ムジン">無人</su><su代表形="トウ"品詞="接尾辞"発音形="トー">島</su><su代表形="ニ"品詞="助詞"その他1="格助詞"発音形="ニ">に</su><pp_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)は，前節で示した付随情報を，『太陽コーパス』と毎日新聞に対しては，書誌情報にあたる情報を付随情報として抽出した。測定に使用した計算機は，CPUPentium42.5GHz,メモリ1GB，OSLinux2.4.26(Debian/GNULinuxver.3.0r2)，JRE(JavaRuntimeEnvironment)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)のアプローチの例としては，BritishNationalCorpusに付属する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.\BBOP1998\BBCP.\newblock{\BemTheBNCHandBook,ExploringtheBritishNationalCorpuswithSARA}.\newblockEDINBURGHUNIVERSITYPRESS.\bibitem[\protect\BCAY{京都大学}{京都大学}{2000}]{kyodai_corpus}京都大学\BBOP2000\BBCP.\newblock\JBOQ京都大学コーパス\JBCQ\\newblockhttp://www.kc.t.u-tokyo.ac.jp/nl-resource/corpus.html.\bibitem[\protect\BCAY{国立国語研究所}{国立国語研究所}{2004}]{bunrui}国立国語研究所\JED\\BBOP2004\BBCP.\newblock\Jem{分類語彙表増補改訂版}.\newblock大日本図書.\bibitem[\protect\BCAY{山下達夫}{山下達夫}{2000}]{yamasita2000}山下達夫\BBOP2000\BBCP.\newblock\JBOQ用語解説SuffixArray\JBCQ\\newblock\Jem{人工知能学会誌},{\Bbf15}(6),p.1142.\bibitem[\protect\BCAY{山口昌也\JBA田中牧郎}{山口昌也\JBA田中牧郎}{2002}]{yamaguchi2002}山口昌也\JBA田中牧郎\BBOP2002\BBCP.\newblock\JBOQ言語研究のための構造化テキストと検索支援システム---「太陽コーパス」を例として\JBCQ\\newblock\Jem{国語学会2002年度春季大会要旨集},\BPGS\169--176.\bibitem[\protect\BCAY{松本裕治\JBA高岡\JBA浅原\JBA乾\JBA橋本\JBA投野\JBA大谷\JBAEdson\hspace{.5em}{T}\hspace{.5em}Miyamoto\JBA森田}{松本裕治\Jetal}{2004}]{matumoto2004}松本裕治\JBA高岡一馬\JBA浅原正幸\JBA乾健太郎\JBA橋本喜代太\JBA投野由紀夫\JBA大谷朗\JBAEdson\hspace{.5em}{T}\hspace{.5em}Miyamoto\JBA森田敏生\BBOP2004\BBCP.\newblock\JBOQタグ付きコーパスの格納/検索ツール「茶器」\JBCQ\\newblock\Jem{言語処理学会第10回年次大会発表論文集},\BPGS\405--408.\bibitem[\protect\BCAY{前川喜久雄}{前川喜久雄}{2004}]{maekawa2004}前川喜久雄\BBOP2004\BBCP.\newblock\JBOQ「日本語話し言葉コーパス」の概要\JBCQ\\newblock\Jem{日本語科学},{\Bbf15},\BPGS\111--133.\bibitem[\protect\BCAY{田中牧郎}{田中牧郎}{2001}]{tanaka2001}田中牧郎\BBOP2001\BBCP.\newblock\JBOQXMLを利用したコーパスの構築---「太陽コーパス」を中心に---\JBCQ\\newblock\Jem{日本語学},{\Bbf20}(13),\BPGS\80--91.\bibitem[\protect\BCAY{毎日新聞社}{毎日新聞社}{1991〜2003}]{mainichi}毎日新聞社\BBOP1991〜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}