\section{はじめに}
従来の構文解析法は基本的に句構造文法あるいは格文法をその拠り所としてきた．前者の考え方は局所的統合の繰り返しによって文の構造を認識しようというものである．しかし，実際にそのような方法で文を解析しようとすると，規則の数が非常に多くなり，なおかつ十分な精度の解析結果を得ることが困難であった．また，格文法の場合は格要素を決定するための意味素が必ずしもうまく設定できず，またこの場合も基本的には局所的な解析であるため，十分な精度の解析結果が得られていない．これらの問題を解決するためには，これらの文法的枠組に加えて，局所的記述ではとらえきれない情報を文中の広い範囲を同時的に調べることによって取り出す必要がある．日本語文解析の困難さの原因の一つである並列構造の範囲に関する曖昧性の問題も，このような「広い範囲を同時的に調べる」ことを必要とする問題の一つである．日本語文は，特に長い文になればなるほど多くの並列構造を含んでいる．「〜し，〜し，〜する」のように，いわゆる連用中止法によって複数の文を1文にまとめることができることは日本語文の特徴でもある．それ以外にも，名詞並列，形容詞並列や，連体修飾節の並列などが頻繁に現れる．このような並列構造に対する従来の解析方法は，基本的には次のようなものであった\cite{Nagao1983,Agarwal1992}．例えば「\ldots原言語を解析する\underline{処理と}相手言語を生成する\underline{処理を}\ldots．」という文では，並列構造前部の{\bf主要語}である「\underline{処理(と)}」に対して，それよりも後ろにある名詞の中から最も類似している名詞を探すという方法により後部の主要語を決定していた(この場合「\underline{処理(を)}」が後部の主要語)．しかし並列構造においては，主要語間だけではなく，構造内の他の語の間(この例の場合「原言語」と「相手言語」，「解析する」と「生成する」)にも，さらに文節列の並び(「〜を〜する〜と〜を〜する〜」)にも類似性が認められる場合が多く，これらの類似性を考慮することによってより正確に並列構造を認識することができる．そこで我々は，並列構造の存在を示す表現(名詞並列を示す助詞「と」など)の前後における最も類似度の高い文節列の対を，音声認識などで広く使われているダイナミックプログラミングのマッチング法と同様の考え方を用いて発見するという方法を考案し，このことにより並列構造の高精度な検出が可能であることを示した\cite{KurohashiAndNagao1992}．本論文では，このようにして検出した並列構造の情報を利用して構文解析を行なう手法を示す．多くの場合，いったん並列構造が発見されると文の構造は簡単化した形でとらえることができる．その結果，単純な係り受け規則を適用するだけで高精度な構文解析が可能となる．本手法は，たとえば，大規模なテキストを解析して，そこから新しい情報を取り出そうとするような場合に特に有用である．対象テキスト中の専門用語や専門的に使われている述語について，それらの相互間の関係はそこで始めて提示された概念であるかもしれない．その場合には，そのような概念の相互関係は辞書に記述されておらず，辞書中の意味記述に頼った解析は不成功となる．また，大規模なテキストを扱うのに十分であるような複雑な文法規則や詳細な格記述を用意することは，実際には非常に困難である．新しい概念は用語相互間のシンタックスによって示されるのであるから，シンタックスを尊重した解析が重要である．また，本手法でうまく扱えない問題を整理することによって，構文解析における本質的問題を明らかにすることも重要な問題である．これまでの，構文解析における曖昧性の議論では，人間にとっても曖昧であるような表現を取り上げたものが多かった．しかし，従来の構文解析法が十分でないという印象を人間に与えるのは，そのような点ではなく，人間であれば絶対にしないような部分に不必要な曖昧性を認識するためである．その原因がどこにあるかを調べるためには，本手法のように高精度でかつ決定論的に動作する道具立てが必要である．{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(90,70)\put(5,5){\framebox(80,60){ps/examp1.new.ps1}}\end{picture}\end{center}\caption{並列構造の推定の例(例文1)}\label{fig:suitei_rei}\end{figure}}
\section{並列構造の検出と文の簡単化}
\subsection{並列構造の検出の概要}\label{subsec:heiretu_kenshutu}1文中の並列する部分は何らかの意味において類似していると考えることが出来る．そこで，類似性という観点から並列構造を検出する方法を図\ref{fig:suitei_rei}を用いて説明する(詳細は文献\cite{KurohashiAndNagao1992}参照)．並列構造の存在を機械的に認識することは比較的容易である．{\bf名詞並列}は，名詞の直後の読点や助詞「と」・「や」などによって認識でき，{\bf述語並列}は，述語自身が連用形であることや述語が助詞「が」などを伴うことによって認識できる(このように並列構造の存在を示す文節を{\bf並列のキー}とよぶことにする)．問題となるのは，そういった表現がある場合にその前後のどこまでが並列構造の範囲であるかということである．そこでまず，文節間\footnote{前処理として入力日本語文を形態素解析し，自立語とそれに続く付属語を文節にまとめている．}の類似度を品詞の一致，文字列の一致，シソーラスによる意味的な近さ，などによって定義し，全ての文節間についてこの値を計算した．図\ref{fig:suitei_rei}の三角行列では，対角要素は文節を，(i,j)要素はi番目の文節とj番目の文節の類似度を示している．次にいくつかの連続した文節，すなわち文節列相互間の類似度を考える．そのために以下の用語を定義する．\begin{description}\item[部分行列]並列のキーの右上部分の行列(図\ref{fig:suitei_rei}では点線で囲まれた部分)．\item[パス]部分行列の中の1番下の行の0以外のある要素から1番左の列のある要素までの左上方向への要素の並び．\item[パスのスコア]パスに含まれる要素の値の総和．パス内の要素の並びが真左上方向からずれる場合にはペナルティとして値を小さくする．\end{description}パスに含まれる各要素の値は並列のキーの前後にある2つの文節間の類似度を示しているので，それらの値の総和であるパスのスコアはパスの左側の文節列と下側の文節列の間の類似度を示している．パスの方向のずれに対してペナルティを与えるのは，それによって文節数が同じぐらいの文節列間の類似度を相対的に高くするためである．このように考えると，文節列間の類似度をパスのスコアという形で計算することができるようになる．そこで，ダイナミックプログラミングの手法によって並列のキーに対する最大スコアのパスを求め，そのパスによって示される最も類似度の高い文節列を並列構造の範囲と考えることにする．図\ref{fig:suitei_rei}の例では，実線で囲まれた要素の並びが最大スコアのパスとして求まり，このパスによって正しい並列構造の範囲が検出される．実験として30文字〜50文字，50文字〜80文字，80文字以上の各60文，合計180文の日本語文に対してこの手法を適用したところ，82\%の並列のキーに対して正しい並列構造を検出することができた．これは文献\cite{KurohashiAndNagao1992}で既に発表した．この方法によって求まった並列構造の範囲は{\bf前部}と{\bf後部}からなり，前部の最初の文節を{\bf起点文節}，後部の最後の文節を{\bf終点文節}とよぶことにする(以降本論文では，{\bf前部}，{\bf後部}という用語は，並列構造を構成する文節列を示すものとする)．終点文節は前部と後部を分かつ並列のキー(前部の最後の文節)と対応する文節であり，パスの定義からわかるようにこれら2つの文節は類似度をもったものが選ばれる．一方，並列構造の前部と後部にはそれぞれ並列のキーと終点文節を修飾している文節列があり，起点文節は前部の修飾部分がどこまでであるかを示している．しかし，前部と後部の修飾部分には正確な対応関係があるわけではなく，起点文節は主にバランス(文節数の同じ文節列の類似度が高い)という観点から決定される．そのため，起点文節は並列構造の始まりの位置を必ずしも正確に示しているわけではない．その最終決定は係り受け解析の段階で処理する(\ref{subsec:enchou}節)．なお，検出された並列構造のうち次の二つの条件を満たす，とくに類似度の高いものを{\bf強並列}とよぶことにする．\begin{itemize}\item前部の文節数(n1)と後部の文節数(n2)がほぼ等しい．\item並列構造を与えるパスのスコアが高い．\footnote{文献\cite{KurohashiAndNagao1992}で示したスコア計算のパラメータに対しては，30文の学習サンプル(岩波情報科学辞典のテキスト)の調査の結果，具体的な条件を次のように与えた(前部の文節数をn1，後部の文節数をn2とする)．\begin{quote}{\bf文節数}:$\frac{4}{5}\leq\frac{n1}{n2}\leq\frac{5}{4}$を満たす．{\bfスコア}:(n1$+$n2)$\times$4点以上である．\end{quote}}\end{itemize}たとえば，次の文の下線部分は強並列である．\begin{quote}例文2:「もちろん、問題の大部分は、ある現象を調べるのにどんなアルゴリズムが必要かを正確に見定めることであるが、コンピューターのアーキテクチャがその開発の\underline{助けになることもあれば、}\underline{妨げになることもある。}」\end{quote}強並列は，以降の処理において他の並列構造と若干異なった扱いをする．{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(120,110)\put(5,5){\framebox(110,100){ps/kankei.ps}}\end{picture}\end{center}\caption{並列構造間の関係}\label{fig:kankei}\end{figure}}{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(150,55)\put(5,5){\framebox(140,45){ps/kankei\_rei.new.ps}}\end{picture}\end{center}\caption{並列構造間の関係の例}\label{fig:kankei_rei}\end{figure}}\subsection{並列構造間の関係の整理による文の簡単化}前節の処理で得られた並列構造の範囲に関する情報をまとめることによって，文の大まかな構造を把握することができる．この処理は，まず二つの並列構造間の関係を明らかにし，それをもとに1文内の全ての並列構造間の関係を整理することによって行う．並列構造の範囲は，\{起点文節の位置，並列のキーの位置，終点文節の位置\}の3組値で表すことができる．1文内に2つの並列構造が存在するとき，図\ref{fig:kankei}に示すように，前方の並列構造Xの範囲を\{x1，x2，x3\}，後方の並列構造Yの範囲を\{y1，y2，y3\}とする．並列構造間の関係が問題となるのは，その範囲が重なる場合，すなわちy1$\leq$x3の場合である．このときy1とx1,x2，およびx3とy2,y3の関係によって2つの並列構造間の位置関係を図\ref{fig:kankei}のように分類できる．この16の位置関係は次の3つの関係に分類することができ，そのそれぞれに対して次のような処理を行う．\begin{description}\item[兄弟関係]---F\\前節の処理では，3つ以上の部分からなる並列構造は，Fの位置関係にある複数の並列構造の組合せとして検出される．そこでFの位置関係にある並列構造は1つの並列構造にまとめる(図\ref{fig:kankei_rei}(a))．\item[親子関係]---A,B,C,D,E,G,H,M,N\\ある並列構造の中にさらに並列構造が含まれる入れ子構造の場合である．このうちA,B,C,Gの位置関係の場合は並列構造Yの前部を並列構造Xを含むように延長する(図\ref{fig:kankei_rei}(b))．逆にEの場合は並列構造Xの後部を並列構造Yを含むように延長する(図\ref{fig:kankei_rei}(c))．\item[違反関係]---I,J,K,L,O,P\\これらの位置関係は，正しい並列構造の重なりではなく，並列構造の検出の誤りによって生じたものであると考えられる．このような関係にある並列構造については次節で示す方法によって並列構造の再検出を行う．なお，I,Jの位置関係は親子関係としたC,Gと左右対称であるが，並列構造の後部については前節の処理で正確な範囲が求まっており後方へ延長することはないので，違反関係とする(Eの親子関係の場合は特別，図\ref{fig:kankei_rei}(c)と図\ref{fig:kankei_rei}(d)参照)．\end{description}なお，並列構造の類似度が高い強並列では，その中の文節がそれぞれ強く対応しており，意味的に強い\.{ま}\.{と}\.{ま}\.{り}をなしていると考えられる．そのため，外部の並列構造(並列のキーが強並列の範囲の外にあるもの)の境界が強並列の内部にある場合は違反関係とする．すなわち，後の並列構造が強並列である場合に，A,Eの位置関係を違反関係とする．{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(110,40)\put(5,5){\framebox(100,30){ps/kantan.new.ps}}\end{picture}\end{center}\caption{文の簡単化(例文3)}\label{fig:heiretu_tree}\end{figure}}これらの処理の具体例を図\ref{fig:kankei_rei}(a)の例文(以後，例文3とよぶ)について示す．この例文の場合，前節の処理で次の3つの並列構造が検出される．\begin{itemize}\itemCS1$[$表題，$]$-$[$著者，$]$\itemCS2$[$著者，$]$-$[$主題などの$]$\itemCS3$[$主題などの〜再編成し，$]$-$[$索引の〜記録しておく．$]$\\end{itemize}このうちCS1とCS2は兄弟関係にあるので，これらを3つの部分からなる1つの並列構造CS'($[$表題，$]$-$[$著者，$]$-$[$主題などの$]$)にまとめる．さらに，CS2とCS3，すなわちCS'とCS3が親子関係にあるので，CS3の前部を「表題，著者，」の部分を含むように延長する．これらの処理の結果，図\ref{fig:heiretu_tree}に示すように，文の大まかな構造を得ることができる．\subsection{違反関係にある並列構造の修正}文内に違反関係の並列構造がある場合には，並列構造の検出のやり直しを行なう．違反関係にある2つの並列構造のうち，スコアの高い方の並列構造の範囲を基準とし，その範囲に対して違反関係にならないような並列構造をもう一方の並列のキーについて再検出する．{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(120,80)\put(5,5){\framebox(110,70){ps/kankei\_shuusei.ps}}\end{picture}\end{center}\caption{並列構造間の違反関係による並列構造の再検出}\label{fig:kankei_shuusei}\end{figure}}たとえば，前方の並列構造Xの再検出を行なう場合には，x2,y1,y2,y3の値に対して図\ref{fig:kankei}の関係式によって正しい位置関係を与えるようなx1,x3の値の範囲を求める．並列構造の再検出では，並列構造の起点文節と終点文節の位置をこのようにして求まった範囲内に制限し，その中でもっとも類似度の高い並列構造を求める．図\ref{fig:kankei_shuusei}に並列構造の再検出の例を示す．図の中に示した表は，並列構造$[$プログラム，データだけでなく，$]$-$[$ファイル，データベースをも$]$を基準として並列のキー「ファイル，」に対する並列構造を再検出する場合，起点文節が6番目の文節「ファイル，」であり，終点文節が7番目の文節「データベースをも」である並列構造だけが制限を満たすことを示している．すなわち，この例文の場合，再検出される並列構造の範囲は起点文節と終点文節に対する制限によって一意に決まることになる．違反関係にある並列構造の組が1文内に複数ある場合には，スコアの差が最も大きい組について再検出の処理を行なう．そして一つの並列構造の再検出を行うたびに全体の並列構造間の関係を調べ直し，違反関係がなくなるまでこの処理を繰り返す．
\section{係り受け解析}
前章で説明したように，文内の並列構造が決定されると文の大まかな構造がとらえられたことになり，文を簡単化した形で扱うことが可能となる．この結果，簡単化された各部分に対して単純な係り受け解析をするだけで，従来の構文解析よりも頑強な，すなわち長い文に対しても有効な構文解析を行なうことができる．\subsection{係り受け解析の概要}係り受け解析の目的は，文節間の係り受け関係を明らかにし，その関係を{\bf依存構造木}によって表現することである\cite{Kodama1987}．依存構造木では，木の節点には{\bf受け}の文節を，その子の節点には{\bf係り}の文節を配置する．日本語の場合，各文節はそれよりも後ろの文節に係るので，最終的には文末の文節を根節点とする依存構造木が得られる．係り受け解析は，まず並列構造に関する部分について行なう．複数の並列構造が入れ子構造(親子関係)をなしている場合は，その中の最も深いレベルにある並列構造から順に解析していく．そして，最後に文全体の解析を行なう．{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(85,40)\put(5,5){\framebox(75,30){ps/examp3.new.ps}}\end{picture}\end{center}\caption{係り受け解析の例(例文3)}\label{fig:kakari_rei}\end{figure}}並列構造の前部と後部はそれぞれ意味的なまとまりをなしており，それぞれを1つの依存構造木にまとめることができる．そこで，並列構造を表すためにその2つの依存構造木の根節点(依存構造木の表示では``$<$P$>$''を付加)を子の節点とする新たな節点(依存構造木の表示では``PARA''と表記，{\bf並列節点}とよぶことにする)を作り，その上のレベル(親の並列構造，それがない場合には文全体)の係り受け解析では，この並列節点のみが扱われるようにする．並列節点は，係りの文節となる場合には終点文節の内容を継承し，受けの文節となる場合には並列のキーと終点文節の内容を継承する．こうすることによって，並列構造中の並列のキーと終点文節以外の文節は並列構造の外の文節の係り先にはならないことになる．3つ以上の部分からなる並列構造の場合は，並列節点の子の節点，すなわち並列構造内でまとめられる依存構造木の数が増えるだけで，その他の処理は全く同じである．たとえば図\ref{fig:heiretu_tree}に挙げた例文3では，まず並列構造[表題，著者，主題などの]の各部分が処理対象となる．この各部分は1文節なので係り受け解析の必要はなく，単にそれらをまとめた並列節点が作られる(図\ref{fig:kakari_rei}(a))．次に，並列構造[表題，〜記憶しておく．]の前部と後部を係り受け解析してそれぞれを依存構造木にまとめ，さらに並列節点を作る(図\ref{fig:kakari_rei}(b))．そして最後に文全体を係り受け解析し，文全体の依存構造木を得る(図\ref{fig:kakari_rei})．\subsection{一定範囲内の文節列の係り受け解析}並列構造を1つのものと見ることによる文の簡単化がうまくいったとして，次にその各部分をどのような規則で係り受け解析するかということが問題となる．我々はまず，次のような優先規則によって決定論的に動作する解析を考えた．\begin{itemize}\item解析すべき範囲について後ろから順に各文節の係り先を決定する．\item各文節の係り先は，係り受け関係が相互に交差しない条件(非交差条件)をみたし，かつ\.{係}\.{り}\.{得}\.{る}文節のうち最も近い文節とする\cite{Maruyama1992}\footnote{各文節の係り先は1つの文節であるとする．提題助詞を伴う文節(「〜は」)などが意味的に複数の文節に係っている場合の問題は，本手法では扱わない．そのような問題は本手法の解析結果に対する次のレベルの処理で扱うことを考えている．}．\item係り得る関係は次のものである\footnote{文法用語は基本的に益岡・田窪文法\cite{Masuoka1989}に従った．以降の説明のためにいわゆる学校文法との相違点を簡単に示す．\\判定詞--名詞と結合して述語を作る活用語「だ」・「である」・「です」，\\イ形容詞--形容詞，ナ形容詞--形容動詞，\\基本形--終止形，タ形--連用形＋助動詞「た」．}．ただし，助詞「が」・「を」を伴う文節は，それぞれ同じ述語に2つ以上は係り得ない．\begin{itemize}\item{\bf名詞}に係り得る:\連体詞，助詞「の」，活用語の基本形・タ形\item{\bf動詞}に係り得る:活用語の連用形，副詞，助詞\item{\bf述語のイ形容詞・ナ形容詞}に係り得る:\活用語の連用形，副詞，助詞(「を」・「へ」以外)\item{\bf連体形のイ形容詞}に係り得る:\副詞，助詞「が」・「の」・「に」・「より」\item{\bf連体形のナ形容詞}に係り得る:\副詞，助詞「が」・「に」・「より」\item{\bf連用形のイ形容詞・ナ形容詞}に係り得る:副詞\item{\bf名詞＋判定詞}に係り得る:\活用語の連用形，副詞，助詞(「を」以外)．\end{itemize}\end{itemize}{\bf述語のイ形容詞・ナ形容詞}とは，読点を伴うもの，文末のもの，「〜という」などの表現を伴うものをさす．それ以外の場合の連体形，連用形の形容詞については，その係り先の体言，用言の方が意味的に強いと考え，上記のようにそれらの形容詞に係り得る文節を制限した．{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(90,25)\put(5,5){\framebox(80,15){ps/kakari\_gairyaku.ps}}\end{picture}\end{center}\caption{係り受け解析の進め方}\label{fig:kakari_gairyaku}\end{figure}}図\ref{fig:kakari_gairyaku}の例では，文節2,文節3,\ldotsの順に係り先を決定していき，文節6の係り先を調べる段階では，非交差条件によって文節4,文節3は対象外となり，文節5,文節2,文節1の順で係り得る文節を探す．このような方法で30文の学習サンプル(岩波情報科学辞典のテキスト)に対して係り受け解析を行なったところ，幾つかの問題点が明らかになった．そのうち，語彙に依存した問題ではなく，一般性をもった問題を解決するために次の3つのタイプの文節に対する規則を新たに加えた．{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(90,35)\put(5,5){\framebox(80,25){ps/HA.ps}}\end{picture}\end{center}\caption{助詞「は」を伴う文節の係り先}\label{fig:HA}\end{figure}}\begin{description}\item[区切り文節に対する規則]\\並列構造の検出では主従関係にある述語の接続は対象としていない．これは，主節と従属節の間には類似性が存在するとはいえないためである．そのため，文を簡単化した各部分の中には主従関係の述語の接続が含まれている．実際に文を解析した結果をみてみると，これらのうち条件を示す述語(「〜すれば，」など)と因果関係を示す述語(「〜するので，」など)が読点を伴っている場合，非常に意味的な区切りが強いことが分かった．そこで，この種の述語を{\bf区切り文節}とし，その係り先は係り得る最も近い文節ではなく最も遠い文節とする．\item[読点を伴う文節に対する規則]\\文が読点で区切られるのは，そこに意味的な区切りが存在することを示すためであり，それを伴った文節が少し離れた文節に係っていくことを示していると考えられる．そこで読点を伴う文節は，係り得る最初の文節を飛び越して2番目の文節に係るとする．ただし，次の場合にはこの規則は適用しない．\begin{itemize}\item係り得る最初の文節が上述の区切り文節である場合．\item「$\cdots$\underline{〜する}ことが多い．」，「$\cdots$\underline{〜である}と考える．」などの表現で下線部分が係り得る最初の文節である場合．このような表現では，下線部分の述語までが意味的なまとまりをなしており，文末の述語は付随的であると考えられるため，下線部分の述語を飛び越して文末の述語に係るとはしない．この下線部分の述語も，受けの文節としては区切り文節であるとする．\item係り得る最初の文節が並列構造をまとめた並列節点の文節である場合．並列構造外の文節が並列節点(並列のキー文節と終点文節)に係る場合には，かなり離れた文節に係ることになるため．\item係り得る文節が解析対象範囲内に1つしかない場合．\end{itemize}\item[助詞「は」を伴う文節に対する規則]\\助詞「は」は文(あるいは文を簡単化したときのある部分)の主題を示すので，これを伴う文節\footnote{助詞「は」単独ではなく「で＋は」・「として＋は」・「について＋は」・「において＋は」・「のために＋は」を伴う文節についても主題を示す働きがあると考え，この規則の対象とした．これに対して，「より＋は」などの場合は，ある事項を取り上げる働きがあるが主題を示しているとは考えられないので対象外とした．}に対しては係り得る最も近い文節に係るという規則は当てはまらない．その係り先は区切り文節との相対的関係で微妙であるが，実際の文解析の結果から次のような規則を用いることにした．なお，係り受け解析の対象範囲内の最後の述語も区切り文節とする．\begin{itemize}\item助詞「は」を伴い読点を伴わない場合:\\最も近い区切り文節に係るとする(図\ref{fig:HA}(a))．\item助詞「は」と読点を伴う場合:\\最も遠い区切り文節に係るとする(図\ref{fig:HA}(b))．ただし，その文節に付属語が全て同じである文節が係っていて，かつ，その前にも区切り文節が存在する場合には前の区切り文節に係るとする(図\ref{fig:HA}(c))．\end{itemize}\end{description}{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(90,55)\put(5,5){\framebox(80,45){ps/examp5.ps}}\end{picture}\end{center}\caption{係り受け解析の例(例文4)}\label{fig:kakari_rei5}\end{figure}}{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(95,75)\put(5,5){\framebox(85,65){ps/examp6.ps}}\end{picture}\end{center}\caption{係り受け解析の例(例文5)}\label{fig:kakari_rei6}\end{figure}}例えば，例文4(図\ref{fig:kakari_rei5})の場合，「ミハイロフらが，」は読点を伴うために，係り得る最初の文節「追究する」ではなく2番目の「与えた」に係る．また，「用語は」は助詞「は」を伴うので係り先として区切り文節を探し，その結果，文末の文節「言葉である．」に係ることになる．例文5(図\ref{fig:kakari_rei6})の場合は，文節「とらえられるので，」が区切り文節であるため，助詞「は」を伴う文節「内容は」はこの区切り文節に係り，この区切り文節自身は係り得る最も遠い文節である「分野である．」に係る．これらの規則でうまく扱うことができない問題については\ref{sec:evaluation}章で議論する．{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(80,45)\put(5,5){\framebox(70,35){ps/examp1.ps2}}\end{picture}\end{center}\caption{係り受け解析の例(例文1)}\label{fig:kakari_rei1}\end{figure}}\subsection{並列構造の範囲の延長}\label{subsec:enchou}前節で述べた並列構造の検出方法ではその前部がどこから始まるかについて正確な情報が得られないので，係り受け解析の段階でこれを明らかにする必要がある．そこで，``検出した並列構造の起点文節より前の文節であっても，その並列構造内の文節に係ることが\.{妥}\.{当}\.{で}\.{あ}\.{る}文節は並列構造に含まれるとみなす''という考え方で並列構造の範囲の延長を行なう．延長を行なうのは，述語を含む並列構造，すなわち述語並列の場合と連体修飾節を含む名詞並列の場合である\footnote{述語を含まない並列構造の場合は，その前にある修飾語句が並列構造の前部のみを修飾することは非常に少なく，ほとんどの場合，並列構造全体を修飾している(並列のキーと終点文節が係り先になる)．}．そのような並列構造の場合，その前部の係り受け解析を，並列構造として検出された範囲内だけでなくさらにその前の部分に対しても延長して行なう．ただし，延長の解析は次のように行なう．\begin{itemize}\item解析対象の文節が読点あるいは助詞「は」を伴う場合は，延長の処理を終了する．そのような文節は，並列構造との間に意味的な区切りがあり，並列構造内部の文節に係るのではなく，並列構造全体，あるいはさらに後ろの文節に係ると考えられるからである．\item並列のキーを係り先の対象から外して係り受け解析を行ない，係り先がない場合には，延長の処理を終了する．並列のキーを係り先の対象から外すのは，もし並列のキーに係るのであれば，それと対応している終点文節にも係ると考えられ，そのような係り受け関係はその上のレベルの係り受け解析において並列節点との関係として扱うからである．\end{itemize}たとえば，図\ref{fig:suitei_rei}で示した例文1では，起点文節の前の「その」は「可能性を」に係ると考えて並列構造に含まれるとし，助詞「は」および読点を伴う「解消するためには，」のところで延長の処理を終了する．最終的に得られる依存構造木を図\ref{fig:kakari_rei1}に示す．{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(95,85)\put(5,5){\framebox(85,75){ps/examp2.new.ps}}\end{picture}\end{center}\caption{係り受け解析の例(例文2)}\label{fig:kakari_rei2}\end{figure}}なお，延長を考える並列構造が強並列の場合は，並列構造内の前部と後部の各文節が強く対応しているので，延長する部分の文節が上述のように前部の文節だけに係ると考えるのではなく，前部と後部の対応する文節の対に係ると考える．この処理は，並列構造後部において省略された修飾語を補間する処理であるとみなすこともできる．たとえば，\ref{subsec:heiretu_kenshutu}節で示した例文2では，「その開発の」は「助け」と「妨げ」の両方に，「コンピューターのアーキテクチャが」は「(助けに)なる」と「(妨げに)なる」の両方に係るとする(図\ref{fig:kakari_rei2})．{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(150,150)\put(5,5){\framebox(140,140){ps/incomplete.new.ps}}\end{picture}\end{center}\caption{部分並列の解析}\label{fig:incom_new}\end{figure}}{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(80,65)\put(5,5){\framebox(70,55){ps/examp4.new.ps}}\end{picture}\end{center}\caption{係り受け解析の例(例文6)}\label{fig:kakari_rei4}\end{figure}}\subsection{係り受け解析を失敗した場合}これまで説明してきた規則によって並列構造の各部分を係り受け解析すると，ある文節に対してその係り得る文節がなくなり，解析が失敗するということがある．このような失敗は，もともと1つの依存構造木にまとめることができない不完全な部分が並列している場合(このような並列構造を{\bf部分並列}とよぶことにする)と，検出された並列構造の範囲が誤りである場合に起こる．部分並列は，前部と後部の述語が等しい述語並列において前部の述語が省略された構造である(図\ref{fig:incom_new}(a)(b))．そこで，次の2つの条件をみたす場合にその並列構造を部分並列とみなす(図\ref{fig:incom_new}(c))．\begin{itemize}\item並列構造の前部と後部の両方で(3つ以上の部分からなる並列構造ではその各部分で)係り受け解析が失敗する．\item係り先がない文節の付属語がすべて等しい．\end{itemize}たとえば，次の文の下線部分は部分並列である．\begin{quote}例文6:「図に示すように，\underline{電流源にpnpトランジスター，}\underline{スイッチングにnpn}\\\underline{トランジスターを}使用し，\ldots」\end{quote}部分並列の場合は，並列のキー，終点文節に加えて，係り先のない文節もいったん並列節点の子節点とする(図\ref{fig:incom_new}(d))．そして，次のレベルの解析において並列節点の係り先が明らかになった段階で，その係り先の文節を前部に対して補うことによって述語並列への変換を行う(図\ref{fig:incom_new}(e))．さらに，部分並列の並列のキー文節の助詞が省略されている場合は，終点文節の助詞によってそれを補間する．例文6の場合，助詞「を」と述語「使用し」が補われる(図\ref{fig:kakari_rei4})．係り受け解析が失敗し，上記の条件が成り立たない場合には，並列構造の検出が誤っていたと考え，並列構造の検出のやり直しを行なう．係り受け解析の失敗が起こらないような並列構造を検出するために，その起点文節と終点文節の位置について次のような制限を与える．\begin{itemize}\item並列のキーから文の先頭までを対象範囲として係り受け解析が可能かどうかを調べる．ある位置で解析が失敗する場合は，並列構造の前部がそれよりも広い範囲になると必ず解析が失敗するので，起点文節の位置はその失敗した位置よりも後ろであるとする．\item並列構造の後部として考えられるすべての範囲についてその中の係り受け解析が可能であるかどうかを調べ，可能でない場合はその範囲の末尾の文節が終点文節となることを禁止する．\end{itemize}並列構造の再検出を行なった場合は，並列構造間の関係を求める処理まで戻って解析をやり直す．{\unitlength=1mm\begin{figure}[hbt]\begin{center}\begin{picture}(120,80)\put(5,5){\framebox(110,70){ps/kakari\_shuusei.new.ps}}\end{picture}\end{center}\caption{係り受け解析の失敗による並列構造の再検出}\vspace*{-0.5cm}\label{fig:kakari_shuusei}\end{figure}}図\ref{fig:kakari_shuusei}に並列構造の再検出の例を示す．図の中に示した表は，再検出する並列構造が係り受け解析可能であるためには，起点文節に対する制限はないが，終点文節は5番目の文節「文書処理とともに」か10番目の文節「なす．」に限られることを示している．
\section{文解析の結果とその評価}
\label{sec:evaluation}本手法による文解析の実験をテストサンプルの150文に対して行なった\footnote{岩波情報科学辞典，日本科学技術情報センタ(JICST)発行の抄録文，科学雑誌サイエンスから収集．}．テストサンプルは，文字数が30〜50文字，50〜80文字，80文字以上のものをそれぞれ50文づつランダムに収集した．\begin{table}\caption{解析結果の評価(文節単位)}\label{tab:hyouka}\begin{center}\begin{tabular}[c]{l|r|r|r|r}\hline&出現数&正解&誤り&正解率\\\hline\hline並列のキー&215&185&30&86\%\\\hline用言に係る文節&971&941&30&97\%\\\hline体言に係る文節&765&744&21&97\%\\\hline\hline合計&1951&1870&81&96\%\\\hline\end{tabular}\end{center}\end{table}\begin{table}\caption{解析結果の評価(文単位)}\label{tab:hyouka2}\begin{center}\begin{tabular}[c]{l||c|c|c||c}\hline\hline{\small文字数}&30--50&50--80&80--149&合計\\\hline\hline\multicolumn{5}{l}{本手法}\\\hline並列構造なし&25/--/29&5/--/10&3/--/4&33/--/43\\並列構造あり&14/15/21&30/34/40&20/37/46&64/86/107\\\hline合計&39/--/50&35/--/50&23/--/50&97/--/150\\\hline\hline\multicolumn{5}{l}{比較実験}\\\hline並列構造なし&25/--/29&5/--/10&3/--/4&33/--/43\\並列構造あり&12/14/21&22/27/40&7/19/46&41/60/107\\\hline合計&37/--/50&27/--/50&10/--/50&74/--/150\\\hline\end{tabular}\\\vspace{0.5cm}\begin{tabular}{ll}\multicolumn{2}{l}{各欄のa/b/cの値は次のものをさす．}\\a:&文全体の依存構造が正しく求まった文の数．\\b:&文全体の並列構造が正しく求まった文の数．\\c:&その欄にあてはまる文の数．\\\end{tabular}\end{center}\end{table}\subsection{定量的評価}\subsubsection*{係り受け解析全体について}150文の解析結果について人手で評価を行なった．まず文節を並列のキー，用言に係る文節，体言に係る文節の3タイプに分類し，並列のキーについては正しい終点文節が検出されているか，用言に係る文節，体言に係る文節については正しい係り先が求まっているかを調べた(表\ref{tab:hyouka})．また，各文をその長さと並列構造の有無によって分類し，文中の全ての並列構造が正しく求まっているか(文の簡単化が正しく行なわれたかどうか)，さらに文全体の依存構造が正しく求まっているかどうかを調べた(表\ref{tab:hyouka2}上部)．次に，本手法の有効性，特に並列構造の検出による文の簡単化の有効性を調べるために比較実験を行なった．この比較実験では，並列のキーに対してダイナミックプログラミングによる並列構造の範囲推定を行なわずに，単にそれを最も類似する文節に対応付けるという規則を用いた(2.1節の文節間類似度の計算を用いた)．この規則と本論文で示した係り受けの優先規則によって，文末の文節から順にその係り先あるいは対応先を決定するという形で文解析を行なった．この方法による解析結果を表\ref{tab:hyouka2}下部に示す．この実験で対象としたのはかなり長い文であり，1文当たりの文節数も多い(平均14.3)．各文節に対して係り先の候補が多数あるため解析の誤りが起こる可能性が高く，また1文の解析結果(依存構造木)の中に誤りが含まれる可能性も高くなる．このように文が長くなった場合，文の簡単化を行なわなければ表\ref{tab:hyouka2}に示したように解析成功率は極端に低下する．このような条件を考えれば，本手法の文単位の解析成功率65\%(97/150)は決して低くないと考えられる．また表\ref{tab:hyouka}に示す通り文節単位の解析成功率は十分に高いので，解析誤りを一部に含む場合でも文のおおまかな構造は多くの場合正しく求まっており，そこからなんらかの情報を取り出すことは十分可能である．\subsubsection*{並列構造の再検出について}215個の並列のキーについては，1度目の並列構造の検出で正しい終点文節が求まったものは175個であったが，並列構造間の違反関係によって再検出の対象となった5個の並列のキーについてすべて正しい終点文節が求まり，さらに，並列構造内の係り受け解析の失敗によって再検出の対象となった8個の並列のキーのうち5個について正しい終点文節が求まった．なお再検出の対象になった並列のキーは，すべて，最初の検出で誤った並列構造が検出されたものであった．\subsubsection*{係り受け解析の優先規則について}例文中には，区切り文節は20個(係り受け解析の対象範囲の最後の述語であるために区切り文節としたものは除く)，読点を伴う文節は274個(並列のキー，助詞「は」を伴う文節を除く)，助詞「は」を伴う文節は115個存在したが，それらを扱うために追加した係り受け規則はすべて有効に働き，解析に悪影響を与えた例はなかった．たとえば，読点を伴う文節の係り先は2番目の係り得る文節としたが，実際には3番目の文節に係ることが正解であるために誤りとなる例はあったが，1番目の文節に係ることが正解であり読点に対する追加規則のためにそれが正しく取り出せないという例はなかった．\subsection{関連研究}構文解析システムを，実際にテキストを処理する{\bfツール}として考えた場合，並列構造と依存構造(または句構造/格構造)に対する優先規則を持つことは必要不可欠である．しかし，日本語文解析において，そのような規則を備えたシステムとその評価結果を示した研究は非常に少ない．実用的機械翻訳システムであるMuシステム\cite{Nagao1985}の日本語解析部では，並列構造，依存構造に対する優先規則による処理を行っているが，その評価は翻訳結果に対して行われており，日本語解析部に対する評価の報告はない\cite{Nagao1985b}．しかし，Muシステムにおける並列構造解析は基本的に1章で述べた「並列する主要語間の類似度を調べる」方法であり，また，本手法のように並列構造の再検出を起動するような枠組も示されていない．稲垣らは，並列構造に対する優先規則，読点を伴う文節に対する優先規則に加えて，用例とシソーラスを用いた優先規則を備えた日本語文解析システムを提案している\cite{Inagaki1988}．このシステムは，解析対象テキスト中の一意に決定される係り受け関係を用例として利用することにより残りの部分の曖昧性を解消する，というシステムであり，特許請求範囲文10篇に対する文節単位の解析成功率は97\%であると報告されている．しかし，このシステムの場合も並列構造解析の方法については上述のMuシステムと同様の問題がある．\begin{table}\caption{係り受け解析の誤りの例}\label{tab:ayamari}\begin{center}\begin{tabular}[c]{p{14.0cm}}\hline\hline誤り例1:\ldots自然言語理解システムの\underline{構築には，}『システムに必要な各種の知識を蓄積した知識ベースの構築が\underline{\.{必}\.{要}\.{で}，}そのために既存の英英辞典のデータを逐次型推論マシンＰＳＩに移植して\underline{データベース化した。}』\\\hline誤り例2:つながっているように\underline{みえるのは}\.{錯}\.{覚}\.{で}、これは天空に見える銀河の位置のしわざに\underline{すぎないので}\underline{ある。}\\\hline誤り例3:\ldots高価な\underline{共用資源に}\.{つ}\.{き}\.{も}\.{の}\.{の}管理上の負担と時間割り当ての問題を\underline{避ける}ことができる。\\\hline誤り例4:\underline{単純な}\underline{引力による}\.{説}\.{明}\.{が}退けられた理由は、純粋な重力の相互作用では、\ldots\\\hline\end{tabular}\end{center}\end{table}{\unitlength=1mm\begin{figure}\begin{center}\begin{picture}(105,50)\put(5,5){\framebox(95,40){ps/hei\_ayamari.ps}}\end{picture}\end{center}\caption{並列構造の検出の失敗}\label{fig:hei_ayamari}\end{figure}}\subsection{解析の誤り}本手法における係り受け解析誤りの根本的原因を分類し，それらを具体例とともに説明する(表\ref{tab:ayamari}:下線部分は誤った係り先を求めた文節とその誤った係り先の文節，傍点はその正しい係り先の文節を示している)．並列のキーに対する終点文節の検出の誤りについては文献\cite{KurohashiAndNagao1992}で論じたので，ここでは用言に係る文節と体言に係る文節の係り先の誤りに的を絞る．\begin{itemize}\item並列構造の前部の範囲と関連するもの\\並列構造の検出では，文節数が同じぐらいの文節列同士が並列することが自然であるということを1つの尺度にしている．このため，後部の文節数が非常に多い並列構造では後部の範囲が正しく求まらない可能性があり(図\ref{fig:hei_ayamari}(a))，この場合は並列のキーに対して終点文節の検出を誤ったということになる．これに対して，前部の文節数が非常に多い並列構造では前部の範囲が正しく求まらない可能性がある(図\ref{fig:hei_ayamari}(b))．この問題の大部分は\ref{subsec:enchou}節で示した方針によって並列構造の前部の延長を行なうことで解決できるが，なかにはその方法で扱えない場合もある．誤り例1では，並列のキー「必要で，」に対する並列構造として``『'',``』''で囲まれた部分が検出され，その前の「構築には，」は助詞「は」と読点を伴うので並列構造の延長は行なわれない．そのため，「構築には，」の正しい係り先は「必要で，」であるのに，本手法では文全体を解析する段階で並列節点，すなわち「必要で，」と「データベース化した。」の両方が係り先であると解釈されてしまう．このような原因による解析の誤りは用言に係る文節の解析の場合が圧倒的に多い．\item述語的働きをする「で」・「の」に関連するもの\\名詞に続く「で」・「の」は助詞である場合と判定詞の活用形である場合がある．判定詞である場合，「で」は「であり」に，「の」は「である」に言いかえることができる(誤り例2:「錯覚で，」，誤り例3:「つきものの」)．これらの区別は困難であるので，本手法では今のところ圧倒的に頻度の高い助詞としての解釈を優先している．そのため，それらが判定詞である場合その文節(「名詞＋判定詞」)に係るはずの文節の解析は失敗してしまう．\item連体修飾(「〜の」を含む)の連続する部分での誤り\\体言に係る文節の係り先の解析の失敗は，ほとんど連体修飾の連続する部分で起こっている(誤り例4)．\end{itemize}150文に対する実験では誤りの絶対数が少ないので，誤りを上のように分類することはできるが，それらの解決方法の考察まで行なうことは難しい．解決方法を考えるためには，誤りの原因となっているような表現を大量に収集して調査することが必要である．
\section{おわりに}
従来方式の構文解析では長い文の中に多く存在する並列構造を正しく認識することが困難であり，そのことが長い文を解析する上での大きな問題であった．本論文では，まず文内の並列構造の範囲を文節列同士の類似性を発見するという考え方によって検出し，次に並列構造の情報を利用しながら簡単な係り受け解析を行なうという方法によって，長い文に対しても有効であり，かつ高精度な構文解析が実現できることを示した．次のステップでは，構文解析によって求まった依存構造木において依存関係にある文節間の格関係の推定を行ない，同時にその過程で省略語句の復元や指示詞の指示対象の同定を行なうことを考えている．このレベルの処理が実現されて，始めて文からある種の意味が取り出せることになる．\bibliographystyle{jtheapa}\bibliography{main}\begin{biography}\biotitle{略歴}\bioauthor{黒橋禎夫}{1989年京都大学工学部電気工学第二学科卒業．1994年同大学院博士課程修了．同年，京都大学工学部助手，現在に至る．自然言語処理，知識情報処理の研究に従事．1994年4月より1年間Pennsylvania大学客員研究員．}\bioauthor{長尾眞}{1959年京都大学工学部電子工学科卒業．工学博士．京都大学工学部助手，助教授を経て，1973年より京都大学工学部教授．1976年より国立民族学博物館教授を兼任．京都大学大型計算機センター長(1986.4--1990.3)，日本認知科学会会長(1989.1--1990.12)，パターン認識国際学会副会長(1982--1984)，日本機械翻訳協会初代会長(1991.3--)，機械翻訳国際連盟初代会長(1991.7--1993.7)．電子情報通信学会副会長(1993.5)．計算機にどこまで人間的なことをやらせられるかに興味を持ち，この分野に入った．パターン認識，画像処理，機械翻訳等の分野を並行して研究．機械翻訳の国家プロジェクトを率いて，本格的な日英，英日翻訳システムを完成した．またアナロジーの概念に基づく翻訳(用例を用いた翻訳)を提唱．今日その重要性が世界的に認識されるようになって来ている．}\bioreceived{受付}\bioaccepted{採録}\end{biography}\end{document}