以下、図面を参照して本発明に係る各実施の形態を詳細に説明する。なお、以下では、同じ働きを担う構成要素又は処理には全図面を通して同じ符号を付与し、重複する説明を適宜省略する。
<第1実施形態>
以下に示す実施形態では、一例として単語の最小単位を、非特許文献である「小椋秀樹、小磯花絵、冨士池優美、宮内佐夜香、小西光、原裕著『現代日本語書き言葉均衡コーパス(Balanced Corpus of Contemporary Written Japanese:BCCWJ)形態論情報規定集(上)』、国立国語研究所、2011年」において規定される短単位とする。すなわち、短単位とは、現代語において意味を持つ最小の単位を規定し、最小の単位を長単位の範囲内で短単位の認定規定に基づいて結合させるか、又は結合させないようにして認定した言語単位である。
また、以下に示す実施形態で扱うチャンクは、一例として、上記BCCWJ形態論情報規定集(上)において規定される長単位とする。すなわち、長単位とは、文節の認定を行った上で、各文節の内部を規定に従って自立語部分と付属語部分とに分割するか、又は分割しないようにして認定した言語単位である。したがって、長単位は文節を超えることはない。
しかしながら、チャンクの単位は長単位に限定されず、例えば1語以上の単語から構成されるものであれば、他の定義でチャンクを表してもよい。
また、以下に示す実施形態では、依存関係単位として長単位で表されるチャンクを用いる。したがって、文の依存構造は長単位間の依存関係で表される一方で、長単位、すなわち、チャンクに含まれる短単位に関する情報や、単名詞句或いは文節等の他のチャンクに関する情報も依存構造解析のための素性として利用することができる。
<システム構成>
図1は、第1実施形態に係る言語解析装置100のシステム構成例を示す図である。言語解析装置100は、CPUと、RAMと、後述する構造解析ルーチンを実行するためのプログラムを記憶したROMと、を備えたコンピュータで構成され、機能的には次に示すように構成されている。
言語解析装置100は、入力部10、演算部20、記憶部30、及び出力部40を備える。また、演算部20は、形態素解析部21及び構造解析部22を含み、記憶部30は、解析モデル30Aを含む。
入力部10は、自然言語で記述された入力テキストを受け付けると、受け付けた入力テキストを演算部20に出力する。
演算部20は、入力部10から入力テキストを受け付けると、まず形態素解析部21で受け付けた入力テキストに対して形態素解析を実行して、入力テキストを単語に分割すると共に、分割した単語の各々に対して、品詞及び出現形等の素性を対応付ける。
図2は、例文「昨日予備調査結果について報告した」を、形態素解析部21で形態素解析した場合の結果の一例を示す図である。図2に示すように、例文「昨日予備調査結果について報告した」は、「昨日/予備/調査/結果/に/つい/て/報告/し/た」のように短単位で表される単語に分割される。
形態素解析部21は、形態素解析によって分割された単語毎に、例えば短単位#s、出現形w、標準形m、及び品詞tが行方向に対応付けた形態素解析結果を得る。ここで、短単位#sは、入力テキストにおける単語の並び順に、入力テキストの先頭の単語から順に付与した番号であり、当該番号は互いに重複しないように各々の単語に付与される。また、出現形wは、入力テキスト中に現われた形(BCCWJにおける書字形)を示し、標準形mは、対応する単語が係り受け先や意味の違いによって語形変化を起こす活用語である場合の基本形(BCCWJにおける語彙素)を示し、品詞tは、対応する単語の品詞情報を示す。
品詞t欄に記載した記号は品詞の種類であり、"ADV"は副詞、"NN"は名詞、"PCS"は格助詞、"VB"は動詞、"PCJ"は接続助詞、及び"AUX"は助動詞を表している。なお、図2に示した形態素解析結果は一例であり、例えば発音形等の他の素性を単語毎に対応付けるようにしてもよい。また、品詞tについても、BCCWJで規定された、より細分化された品詞を単語毎に対応付けるようにしてもよい。
構造解析部22は、形態素解析部21で得られた入力テキストの形態素解析結果からチャンク解析及び依存構造解析を行うための素性を抽出し、抽出した素性と、予め用意した解析モデルと、に基づいて、入力テキストの構造解析を行う。ここで、チャンク解析とは、形態素解析部21で短単位に分割した単語を長単位のチャンクに統合する処理をいい、依存構造解析とは、統合したチャンク間又は単語間の係り受け関係を同定する処理をいう。
チャンク解析及び依存構造解析には、例えばMaltParser等の既存の構造解析器で使用されるshift-reduce法を用いることができる。
shift-reduce法とは、出現形wで表される入力テキストの短単位列(w0,・・・,wn)を、短単位の並び順にキューQ内の配列(Q0,・・・,Qn)にそれぞれ格納し、shiftアクション又はreduceアクションを行うステップを繰り返すことで、短単位列(w0,・・・,wn)をスタックS上で長単位に統合してチャンクを生成すると共に、チャンク間の係り受け関係を同定する構造解析手法である。ここで"n"は入力テキストに含まれる短単位の数を表す。
以降では、キューQ内の配列(Q0,・・・,Qn)に格納されるそれぞれの短単位を、短単位列(q0,・・・,qn)として表すことにする。
なお、shiftアクションとは、キューQの先頭に格納される短単位q0をスタックSにプッシュする動作をいい、reduceアクションとは、スタックSの最上位の要素s0と、要素s0に隣接する2番目の要素s1と、の間で弧を張り、要素s0の係り受け関係を決定する処理をいう。
この際、構造解析部22は、チャンクの素性と、解析モデル30Aと、に基づいて、各ステップでshiftアクション及びreduceアクションの何れのアクションを行うかを決定する。
ここで、解析モデル30Aは、様々な例文に関する、チャンクの依存構造を示す構造解析結果を予め記憶した構造解析モデルであり、例えば記憶部30に予め構築されている。解析モデル30Aに、例文毎の構造解析結果(正解データ)を学習データとして大量に蓄積しておくことで、構造解析部22は、正解データからチャンクの素性と、実行されたアクションと、の組み合わせを抽出し、例えばSupport Vector Machine(SVM)、対数線形モデル、又はニューラルネットワークを用いたパターン認識等の公知の分類モデルに基づいて、入力テキストに含まれるチャンクの素性に対応する最適なアクションをステップ毎に決定し、入力テキストの構造解析を行う。
なお、チャンクの素性とは、構造解析の対象となっているチャンク自身の素性の他、チャンクに含まれる単語に関する素性や、単名詞句或いは文節等の他のチャンクに関する素性も含まれるものとする。
図3は、構造解析部22で用いるアクションを示した図である。図3に示すように、構造解析部22は、"ShiftLUW(POS)"、"ReduceLUWL(d1)"、"ReduceLUWR(d1)"、"PopLUW"、"ShiftSUW"、"ReduceSUWL(d2)"、"ReduceSUWR(d2)"の7つのアクションを用いて、入力テキストの構造解析を行う。なお、構造解析部22で用いるアクションは図3に示したアクションに限られず、例えば形態素解析部21での形態素解析内容に応じて、他のアクションを規定してもよい。
構造解析部22は、ShiftLUW(POS)、又はShiftSUWで、キューQに格納された短単位列(q0,・・・,qn)の先頭から順に短単位をスタックSにプッシュしていき、ReduceSUWL(d2)、又はReduceSUWR(d2)でスタックSの短単位間に弧を張り、チャンク内部の依存構造を決定する。また、構造解析部22は、PopLUWでステップSの最上位の要素s0をチャンクとして確定させ、ReduceLUWL(d1)、又はReduceLUWR(d1)でチャンク間に弧を張り、入力テキストにおけるチャンク単位の依存構造で表す。
具体的には、ShiftLUW(POS)は、キューQの先頭から短単位q0を取り出し、品詞がPOSで表される長単位のチャンクを構成する先頭の短単位として、スタックSにプッシュする。
すなわち、ShiftLUW(POS)は、短単位q0をスタックSにプッシュするpush(S,q0)、短単位q0をスタックSにプッシュした後、キューQの各短単位をポップするpop(Q)、要素s0のチャンクの品詞をPOSに設定するSetPos(s0,POS)、及び要素s0がまだチャンクとして確定していないことを示すSetLuw(s0,f)の各動作によって構成される。ここで、SetLuw関数の引数fは"false"を表しており、要素s0がまだチャンクとして確定していないことを示している。すなわち、SetLuw関数はチャンクの確定状態を示すチャンクフラグの値を設定する。
ShiftSUWは、キューQの先頭要素から短単位q0を取り出し、スタックSにプッシュする。すなわち、ShiftSUWは、push(S,q0)、pop(Q)、SetLuw(s0,f)の各動作によって構成される。
ReduceSUWL(d2)は、それぞれ短単位であるスタックSの最上位の要素s0と、要素s0に隣接する2番目の要素s1との間に、短単位間の関係ラベルd2を持つ左向きの弧を張って部分木を生成し、生成した部分木をスタックSの要素s0とする。この際、スタックSから要素s1を削除する。なお、左向きの弧とは、要素s0から要素s1に向かう方向の係り受け関係をいう。
すなわち、ReduceSUWL(d2)は、スタックSの要素s0と、要素s1との間に、関係ラベルd2を持つ左向きの弧を張るLeftSArc(s1,s0,d2)、及びスタックSから要素s1を削除するremove(S,s1)の各動作によって構成される。
ReduceSUWR(d2)は、それぞれ短単位であるスタックSの最上位の要素s0と、要素s1との間に、短単位間の関係ラベルd2を持つ右向きの弧を張って部分木を生成し、生成した部分木をスタックSの要素s0とする。この際、スタックSから要素s1を削除する。なお、右向きの弧とは、要素s1から要素s0に向かう方向の係り受け関係をいう。
すなわち、ReduceSUWR(d2)は、スタックSの要素s0と、要素s1との間に、関係ラベルd2を持つ右向きの弧を張るRightSArc(s1,s0,d2)、及びremove(S,s1)の各動作によって構成される。
PopLUWは、スタックSの最上位の要素s0を、直前に行われたShiftLUW(POS)のPOSで表される品詞を有するチャンクとして確定させる。
すなわち、PopLUWは、要素s0がチャンクとして確定したことを示すSetLuw(s0,t)の動作によって構成される。ここで、SetLuw関数の引数tは"true"を表しており、要素s0がチャンクとして確定したことを示している。また、チャンクの確定に伴い、当該チャンクに直前のShiftLUW(POS)で設定された品詞が割り当てられる。
ReduceLUWL(d1)は、スタックSの最上位の要素s0と、要素s1との間に、チャンク間の関係ラベルd1を持つ左向きの弧を張って部分木を生成し、生成した部分木をスタックSの要素s0とする。この際、スタックSから要素s1を削除する。
すなわち、ReduceLUWL(d1)は、スタックSの要素s0と、要素s1との間に、関係ラベルd1を持つ左向きの弧を張るLeftLArc(s1,s0,d1)、及びremove(S,s1)の各動作によって構成される。
ReduceLUWR(d1)は、スタックSの最上位の要素s0と、要素s1との間に、チャンク間の関係ラベルd1を持つ右向きの弧を張って部分木を生成し、生成した部分木をスタックSの要素s0とする。この際、スタックSから要素s1を削除する。
すなわち、ReduceLUWR(d1)は、スタックSの要素s0と、要素s1との間に、関係ラベルd1を持つ右向きの弧を張るRightLArc(s1,s0,d1)、及びremove(S,s1)の各動作によって構成される。
ここで、図4は、構造解析部22が抽出するチャンクの素性の一部を示した素性テンプレートであり、構造解析部22は、チャンクに含まれる短単位の素性の他、例えばアクションの決定等に長単位素性及び複合語素性を用いることができる。また、図5は、図4に示した素性テンプレートの凡例を示す図である。
例えば、図4において、長単位素性の一例である
は、スタックSの要素s0の主辞(部分木の根ノード)の長単位出現形の素性と、スタックSの要素s1の主辞の長単位出現形の素性と、の組み合わせ素性を表す。
構造解析部22は、shift-reduce法を用いて、スタックS中に入力テキストの部分的な依存構造である部分木を生成しながら入力テキストの構造解析を行うため、チャンクの素性として、部分木のノードの情報を用いることができる。更に、構造解析部22は、チャンクを依存構造とは区別して扱うことができるため、部分木のノードの情報の他、品詞や出現形等のチャンク自体の素性も用いることができる。
また、図4に示すように、構造解析部22は、固定的な表現を有するチャンクの分割精度を向上させるため、複合語辞書との照合結果を素性として取り入れることができる。ここで、複合語素性qn.fcomp(c0,cm)とは、キューQのn番目の短単位qnを先頭とする短単位列と、短単位数がc0以上cm以下の複合語辞書に含まれる複合語との照合フラグであり、照合OK、すなわち、短単位qnを先頭とする短単位列が複合語辞書に含まれる場合は"1"となり、照合NG、すなわち、短単位qnを先頭とする短単位列が複合語辞書に含まれない場合は"0"となる。
複合語辞書は、例えば記憶部30の予め定めた領域に格納される。
図6は、複合語辞書の一例を示す図である。複合語辞書は、例えば複合語の表記及び複合語の品詞を表す「複合語/複合語品詞」、複合語に含まれる短単位の数を表す「短単位数」、並びに、複合語に含まれる短単位の出現形、品詞、及び標準形等を表す「短単位列」を複合語毎に対応付けた情報を含む。
例えば複合語/複合語品詞欄の「について/PCS」は複合語「について」の品詞が格助詞で、且つ、短単位数欄の"3"は複合語「について」に含まれる短単位の数が3であることを表している。更に、短単位列欄には、複合語「について」が、「に/つい/て」のように短単位に分割でき、短単位「に」の品詞は格助詞で標準形は「に」、短単位「つい」の品詞は動詞で標準形は「つく」、及び短単位「て」の品詞は接続助詞で標準形は「て」であることが示されている。
複合語辞書の短単位数は、極端に短い複合語、或いは極端に長い複合語への照合を制限し、照合時間を短縮するために設けられた情報である。例えば、図4の複合語素性のテンプレートに含まれるq0.fcomp(3,5)は短単位数が3以上5以下の短単位で構成される複合語を照合対象としているため、図6の複合語辞書において、複合語「だが」は照合対象とならない。
なお、図6に示した複合語辞書は一例であり、上述した項目以外の情報を複合語辞書に含めてもよいことは言うまでもない。
構造解析部22は、短単位に分割された入力テキストの各単語に対して、図3に示したshift-reduce法に伴うアクションを実行して生成した、入力テキストに対応するチャンクの依存構造を示す部分木を、入力テキストの構造解析結果として出力部40に出力する。
出力部40は、構造解析部22から入力テキストの構造解析結果を受け付けると、受け付けた構造解析結果を、例えば入力テキストの構造解析結果に基づいて入力テキストと類似する文を検索する検索装置、或いは液晶ディスプレイ等の表示装置等に出力する。
<言語解析装置の作用1>
次に、第1実施形態に係る言語解析装置100の作用について説明する。
言語解析装置100は、入力テキストを入力部10で受け付けると、受け付けた入力テキストを形態素解析部21に出力する。
形態素解析部21は、既存の形態素解析器を用いて、受け付けた入力テキストを短単位である単語に分割して形態素解析を行い、例えば図2に示した形態素解析結果を構造解析部22に通知する。
そして、構造解析部22は、形態素解析部21から形態素解析結果を受け付けると、CPUで図7に示す構造解析ルーチンを実行する。
まず、ステップS100において、記憶部30にスタックS及びキューQを生成し、スタックSの最上位の要素s0に、スタックSが空であることを示す文字列"ROOT"を設定する。また、キューQの各配列の値を"NULL"に初期化した上で、形態素解析結果における出現形欄の短単位列(w0,・・・,wn)を、短単位の並び順にキューQの配列(Q0,・・・,Qn)にそれぞれ格納して短単位列(q0,・・・,qn)を生成する。
ステップS105において、素性テンプレートに基づいて、スタックS及びキューQの状態に対応した素性を抽出する。
ステップS110において、ステップS105で抽出した素性と、記憶部30の解析モデル30Aと、に基づいて、図3に示したアクションの中から、抽出した素性に対応する最適なアクションを決定する。
ステップS115において、ステップS110で決定されたアクションが構造解析ルーチンの終了を指示するものであるか否かを判定し、肯定判定の場合、図7に示す構造解析ルーチンを終了する。
なお、スタックSの要素s0の主辞が"ROOT"で、且つ、キューQに何れの短単位も格納されていない状態、すなわち、キューQの短単位q0が"NULL"である場合に、ステップS110で終了を指示するアクションが決定される。
一方、ステップS115の判定処理が否定判定の場合には、ステップS120に移行する。
ステップS120において、ステップS110で決定されたアクションが"ShiftLUW(POS)"であるか否かを判定し、肯定判定の場合、ステップS155に移行する。
ステップS155では、キューQの短単位q0に対してShiftLUW(POS)を実行する。この際、キューQから短単位q0が取り出されるため、短単位q1を短単位q0、短単位q2を短単位q1、・・・というように、キューQに格納されている短単位q1以降の各短単位をpopさせるが、これに伴い、短単位qnが格納されなくなったキューQの配列Qnには"NULL"を設定する。
一方、ステップS120の判定処理が否定判定の場合には、ステップS125に移行する。
ステップS125において、ステップS110で決定されたアクションが"ShiftSUW"であるか否かを判定し、肯定判定の場合、ステップS160に移行する。
ステップS160では、キューQの短単位q0に対してShiftSUWを実行する。この際、ShiftLUW(POS)と同様に、キューQから短単位q0が取り出されるため、短単位q1以降の各短単位のpop処理によって短単位qnが格納されなくなったキューQの配列Qnには"NULL"を設定する。
一方、ステップS125の判定処理が否定判定の場合には、ステップS130に移行する。
ステップS130において、ステップS110で決定されたアクションが"PopLUW"であるか否かを判定し、肯定判定の場合、ステップS165に移行する。
ステップS165ではPopLUWを実行し、スタックSの要素s0をチャンクとして確定する。
一方、ステップS130の判定処理が否定判定の場合には、ステップS135に移行する。
ステップS135において、ステップS110で決定されたアクションが"ReduceLUWL(d1)"であるか否かを判定し、肯定判定の場合、ステップS170に移行する。
ステップS170では、スタックSの要素s0と、要素s1に対してReduceLUWL(d1)を実行し、チャンク間の依存構造を設定する。
一方、ステップS135の判定処理が否定判定の場合には、ステップS140に移行する。
ステップS140において、ステップS110で決定されたアクションが"ReduceLUWR(d1)"であるか否かを判定し、肯定判定の場合、ステップS175に移行する。
ステップS175では、スタックSの要素s0と、要素s1に対してReduceLUWR(d1)を実行し、チャンク間の依存構造を設定する。
一方、ステップS140の判定処理が否定判定の場合には、ステップS145に移行する。
ステップS145において、ステップS110で決定されたアクションが"ReduceSUWL(d2)"であるか否かを判定し、肯定判定の場合、ステップS180に移行する。
ステップS180では、スタックSの要素s0と、要素s1に対してReduceSUWL(d2)を実行し、チャンク内部の依存構造を設定する。
一方、ステップS145の判定処理が否定判定の場合には、ステップS150に移行する。
ステップS150において、スタックSの要素s0と、要素s1に対してReduceSUWR(d2)を実行し、チャンク内部の依存構造を設定する。
そして、ステップS150、S155、S160、S165、S170、S175、及びS180の各ステップを実行した後、ステップS105に移行する。そして、ステップS110で終了を指示するアクションが決定されるまで、ステップS105〜S180の各ステップを繰り返し実行して、スタックS及びキューQの状態に対応する素性と、解析モデル30Aと、に基づいて、アクションを決定して実行し、入力テキストに含まれる単語をチャンクに統合すると共に、チャンク間の依存構造を示す部分木を生成する。
<動作例>
図8は、例えば入力テキストとして「昨日予備調査結果について報告した」を言語解析装置100に入力した場合に、図7に示した構造解析ルーチンで実行される構造解析過程の一例を具体的に示す図である。
なお、図8では、スタックSは要素s0から要素s3まで、キューQは短単位q0から短単位q2までを記載している。Step欄は処理を識別するIDであり、各StepでAction欄に記載されたアクションを実行した後のスタックS及びキューQの状況が、行方向に対応付けられて記載されている。
ステップ0は、図7のステップS100に対応する処理であり、スタックSの要素s0として"ROOT"を設定し、キューQの短単位列(q0,q1,q2)を(昨日,予備,調査)に設定する。
そして、ステップ0の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、キューQの短単位q0を先頭にして構成されるチャンクの品詞と、実行するアクションが決定される。
チャンクの品詞が"ADV"、及びアクションがShiftLUW(ADV)に決定されると、ステップ1でShiftLUW(ADV)を実行して、短単位q0(=昨日)をキューQから取り出してスタックSの要素s0としてpushする。この際、要素s0はチャンクを構成していないため、SetLuw(s0,f)によってチャンクフラグを"false"に設定すると共に、SetPos(s0,ADV)によってチャンクの品詞を"ADV"に設定する。また、pop(Q)によってキューQに格納されている各短単位を移動させる。
そして、ステップ1の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
実行するアクションがPopLUWに決定されると、ステップ2でPopLUWを実行して、「昨日」をチャンクとして確定し、SetLuw(s0,t)によってチャンクフラグを"true"に設定すると共に、「昨日」の品詞を"ADV"に設定する。
そして、ステップ2の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、キューQの短単位q0を先頭にして構成されるチャンクの品詞と、次に実行するアクションが決定される。
チャンクの品詞が"NN"、及び実行するアクションがShiftLUW(NN)に決定されると、ステップ3でShiftLUW(NN)を実行して、短単位q0(=予備)をキューQから取り出してスタックSの要素s0としてpushする。この際、要素s0はチャンクを構成していないため、SetLuw(s0,f)によってチャンクフラグを"false"に設定すると共に、SetPos(s0,NN)によってチャンクの品詞をNNに設定する。また、pop(Q)によってキューQに格納されている各短単位を移動させる。
そして、ステップ3の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
実行するアクションがShiftSUWに決定されると、ステップ4でShiftSUWを実行して、短単位q0(=調査)をキューQから取り出してスタックSの要素s0としてpushする。この際、要素s0はチャンクを構成していないため、SetLuw(s0,f)によってチャンクフラグを"false"に設定すると共に、pop(Q)によってキューQに格納されている各短単位を移動させる。
そして、ステップ4の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
実行するアクションがReduceSUWL(cn)に決定されると、ステップ5でReduceSUWL(cn)を実行して、LeftSArc(s1,s0,cn)によってスタックSの要素s0「調査」と、要素s1「予備」との間に短単位間の関係ラベルcnを持つ左向きの弧を張った部分木「予備←(cn)←調査」を生成し、当該部分木を新たな要素s0とすると共に、要素s1「予備」をスタックSから削除する。なお、関係ラベルcnは、複合名詞の内部構造を構成する関係を表すラベルである。したがって、要素s0は、2つの短単位「予備」と「調査」とが関係ラベルcnを持つ部分木で構成されていることを示している。
そして、ステップ5の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
実行するアクションがShiftSUWに決定されると、ステップ6でShiftSUWを実行して、短単位q0(=結果)をキューQから取り出してスタックSの要素s0としてpushする。この際、要素s0はチャンクを構成していないため、SetLuw(s0,f)によってチャンクフラグを"false"に設定すると共に、pop(Q)によってキューQに格納されている各短単位を移動させる。
そして、ステップ6の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
実行するアクションがReduceSUWL(cn)に決定されると、ステップ7でReduceSUWL(cn)を実行して、LeftSArc(s1,s0,cn)によって要素s0の短単位「結果」と、要素s1の短単位の部分木「予備←(cn)←調査」と、の間に短単位間の関係ラベルcnを持つ左向きの弧を張った部分木「予備←(cn)←調査←(cn)←結果」を生成し、当該部分木を新たな要素s0とすると共に、要素s1「予備←(cn)←調査」をスタックSから削除する。
そして、ステップ7の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
実行するアクションがPopLUWに決定されると、ステップ8でPopLUWを実行して、「予備←(cn)←調査←(cn)←結果」をチャンクとして確定し、SetLuw(s0,t)によってチャンクフラグを"true"に設定すると共に、ステップ3のアクションに基づいて、チャンク「予備←(cn)←調査←(cn)←結果」の品詞を"NN"に設定する。以降では、チャンクの後ろに"/POS"(POSは品詞)を付加してチャンクに設定した品詞を表すことにする。
そして、ステップ8の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、キューQの短単位q0を先頭にして構成されるチャンクの品詞と、次に実行するアクションが決定される。
チャンクの品詞が"PCS"、及び実行するアクションがShiftLUW(PCS)に決定されると、ステップ9でShiftLUW(PCS)を実行して、短単位q0(=に)をキューQから取り出してスタックSの要素s0としてpushする。この際、要素s0はチャンクを構成していないため、SetLuw(s0,f)によってチャンクフラグを"false"に設定すると共に、SetPos(s0,PCS)によってチャンクの品詞を"PCS"に設定する。また、pop(Q)によってキューQに格納されている各短単位を移動させる。
そして、ステップ9の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
実行するアクションがShiftSUWに決定されると、ステップ10でShiftSUWを実行して、短単位q0(=つい)をキューQから取り出してスタックSの要素s0としてpushする。この際、要素s0はチャンクを構成していないため、SetLuw(s0,f)によってチャンクフラグを"false"に設定すると共に、pop(Q)によってキューQに格納されている各短単位を移動させる。
そして、ステップ10の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
実行するアクションがReduceSUWL(mwe)に決定されると、ステップ11でReduceSUWL(mwe)を実行して、LeftSArc(s1,s0,mwe)によって要素s0の短単位「つい」と、要素s1の短単位「に」と、の間に短単位間の関係ラベルmweを持つ左向きの弧を張った部分木「に←(mwe)←つい」を生成し、当該部分木を新たな要素s0とすると共に、要素s1「に」をスタックSから削除する。なお、関係ラベルmweは、複合語表現の内部構造を構成する関係を表すラベルである。
そして、ステップ11の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
実行するアクションがShiftSUWに決定されると、ステップ12でShiftSUWを実行して、短単位q0(=て)をキューQから取り出してスタックSの要素s0としてpushする。この際、要素s0はチャンクを構成していないため、SetLuw(s0,f)によってチャンクフラグを"false"に設定すると共に、pop(Q)によってキューQに格納されている各短単位を移動させる。
そして、ステップ12の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
実行するアクションがReduceSUWL(mwe)に決定されると、ステップ13でReduceSUWL(mwe)を実行して、LeftSArc(s1,s0,mwe)によって要素s0の短単位「て」と、要素s1の短単位の部分木「に←(mwe)←つい」と、の間に短単位間の関係ラベルmweを持つ左向きの弧を張った部分木「に←(mwe)←つい←(mwe)←て」を生成し、当該部分木を新たな要素s0とすると共に、要素s1「に←(mwe)←つい」をスタックSから削除する。
そして、ステップ13の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
実行するアクションがPopLUWに決定されると、ステップ14でPopLUWを実行して、「に←(mwe)←つい←(mwe)←て」をチャンクとして確定し、SetLuw(s0,t)によってチャンクフラグを"true"に設定すると共に、ステップ9のアクションに基づいて、チャンク「に←(mwe)←つい←(mwe)←て」の品詞を"PCS"に設定する。
そして、ステップ14の状態で抽出されたチャンクの素性と解析モデル30Aとに基づいて、次に実行するアクションが決定される。
この場合、素性テンプレートにより様々なチャンクの素性を抽出することができるが、そのうちの1つである長単位素性
により「に←(mwe)←つい←(mwe)←て/PCS」という、品詞が確定したチャンクの素性が抽出される。解析モデル30Aは、抽出したチャンクの素性に基づいて、チャンク間の依存関係を設定するアクションReduceLUWL(pobj)の実行を決定する。
実行するアクションがReduceLUWL(pobj)に決定されると、ステップ15でReduceLUWL(pobj)を実行して、LeftLArc(s1,s0,pobj)によってスタックSの要素s0「に←(mwe)←つい←(mwe)←て/PCS」と、要素s1「予備←(cn)←調査←(cn)←結果/NN」との間に長単位間の関係ラベルpobjを持つ左向きの弧を張った部分木「[予備←(cn)←調査←(cn)←結果/NN]←(pobj)←[に←(mwe)←つい←(mwe)←て/PCS]」を生成し、当該部分木を新たな要素s0とすると共に、要素s1「予備←(cn)←調査←(cn)←結果/NN」をスタックSから削除する。なお、関係ラベルpobjは、チャンク間の依存構造を示すラベルである。すなわち、要素s0は、2つの長単位のチャンク「予備←(cn)←調査←(cn)←結果/NN」と「に←(mwe)←つい←(mwe)←て/PCS」とが、関係ラベルpobjで関係付けられた部分木を示す。
以下、上述した処理と同様の処理が行われ、ステップ16〜24が実行されると、スタックSの要素s0に、ROOTを主辞とする部分木が構成される。
なお、ステップ18の関係ラベルnvは、サ変動詞の内部構造を構成する関係を表すラベルである。また、ステップ19の関係ラベルiobj、ステップ22の関係ラベルaux、ステップ23の関係ラベルadvmod、及びステップ24の関係ラベルrootは、関係ラベルpobjと同様に、チャンク間の依存構造を示すラベルである。更に、図8の短単位q0〜短単位q2において、"-"は"NULL"が設定されていることを示す。
ステップ24によって、スタックSの要素s0の主辞が"ROOT"となり、且つ、キューQの短単位q0が"NULL"となるため、図7に示したステップS115の判定処理が肯定判定となり、構造解析ルーチンが終了する。
図9は、図8に示した例文「昨日予備調査結果について報告した」の構造解析によって得られた結果の一例を示す図である。
図9では、例文が5つの長単位のチャンク「昨日」、「予備調査結果」、「について」、「報告し」、及び「た」に分割され、チャンクの品詞は、それぞれ"ADV(副詞)"、"NN(名詞)"、"PCJ(格助詞)"、"VB(動詞)"、及び"AUX(助動詞)"であることを示している。チャンクの中には、例えば「昨日」のように1つの短単位でチャンクを構成するものも存在する。
ここで、背景色が黒色で表される関係ラベルが付加された弧からなる構造は、チャンク内部の依存構造を表している。
図9の構造解析結果によれば、チャンク「予備調査結果」は、短単位「予備」と短単位「調査」との間、及び、短単位「調査」と短単位「結果」との間に、それぞれ関係ラベルcnで表される依存構造を含み、チャンク「については」は、短単位「に」と短単位「つい」との間、及び、短単位「つい」と短単位「て」との間に、それぞれ関係ラベルmweで表される依存構造を含む。チャンク「報告し」は、短単位「報告」と短単位「し」との間に、関係ラベルnvで表される依存構造を含む。
また、背景色が白色で表される関係ラベルが付加された弧からなる構造は、チャンク間の依存構造を表している。図9の構造解析結果によれば、チャンク「昨日」とチャンク「報告し」との間に、関係ラベルadvmodで表される依存構造が存在し、チャンク「予備調査結果」とチャンク「について」との間に、関係ラベルpobjで表される依存構造が存在し、チャンク「について」とチャンク「報告し」との間に、関係ラベルiobjで表される依存構造が存在し、チャンク「た」とチャンク「報告し」との間に、関係ラベルauxで表される依存構造が存在していることを表している。
このように、第1実施形態に係る言語解析装置100は、チャンク処理と依存構造解析を分離させることなく、チャンク解析を行いながら、同時に依存構造解析を行うことで入力テキストの構造を解析する。
まず入力テキストをチャンクに分割し終えてから、分割したチャンク間の依存構造解析を行うという手順を踏んで、チャンク処理と依存構造解析とを分離して入力テキストの構造解析を行う場合には、チャンク処理でのチャンクへの分割精度が依存構造解析にまで影響を及ぼす場合がある。
しかしながら、第1実施形態に係る言語解析装置100の場合、チャンク処理と依存構造解析とを同時に行うため、チャンク処理を行う際には依存構造解析の結果を参照し、依存構造解析を行う際にはチャンク処理の結果を参照するというように、互いの処理結果を考慮しながら自身の処理を決定することができる。すなわち、第1実施形態に係る言語解析装置100は、分割されたチャンクの尤もらしい依存構造を同定しながら、当該依存構造に整合する適切なチャンクへの分割を行うことができるため、入力テキストの構造解析の精度を向上させることができる。
<第2実施形態>
第1実施形態に係る言語解析装置100では、素性テンプレートに基づいて、入力テキストから単語の素性及びチャンクの素性を抽出し、単語の素性と、チャンクの素性と、解析モデル30Aと、に基づいて、チャンクに統合すると共にチャンクの依存構造を解析するためのアクションを決定した。
第2実施形態では、チャンクとして単名詞で構成される単名詞句に統合すると共に、当該単名詞句がどのような内容を表す単名詞句であるのかを表す情報(意味クラス)を単名詞句に付与する言語解析装置100について説明する。
なお、第2実施形態に係る言語解析装置100のシステム構成は、図1に示した第1実施形態に係る言語解析装置100のシステム構成例と同様である。
入力テキストの構造解析を行う上で、単名詞句の意味クラスを認識することは構文構造解析の精度を向上するための重要な要素技術となる。したがって、第2実施形態に係る言語解析装置100では、チャンクとして統合された単名詞句のクラスとして、固有表現クラス又は一般名詞の意味クラスを付与する。
そのため、例えば単名詞句毎に、単名詞句と、単名詞句のクラス(固有表現クラス又は一般名詞の意味クラス)と、を対応付けたクラス対応表を予め記憶部30に記憶しておく。そして、構造解析部22は、チャンクとして単名詞句に統合する際に当該単名詞句がクラス対応表に含まれる場合、当該単名詞句に対応するクラスを付与する。
具体的には、解析モデルによって決定されるアクションが、スタックSの最上位の要素s0を、クラス対応表から得られるクラスが付与された単名詞句として確定させるアクションを含むように設計すればよい。
なお、第2実施形態に係る言語解析装置100の他の構成及び作用については、第1の実施の形態と同様であるため、説明を省略する。
このように、第2実施形態に係る言語解析装置100は、チャンクとして単名詞句に統合する場合、単名詞句に固有表現クラス又は一般名詞の意味クラスを付加する。言語解析装置100は、例えばチャンクに付加したクラスもチャンクの素性として扱ってもよい。この場合、図3に示したアクションの中からチャンクの素性に対応するアクションを精度よく決定することができる。
また、チャンクに付与したクラスは、例えば言語解析装置100での構造解析結果を入力として様々な処理を行う別装置で利用することができる。例えば言語解析装置100での入力テキストの構造解析結果を入力として、入力テキストと類似する文を検索する検索装置では、チャンクにクラスが付与されていない場合と比較して、検索精度を向上させることができる。
なお、本発明は、上述した各実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
例えば、各実施形態に係る言語解析装置100は、キューQの短単位列(q0,・・・,qn)の先頭から順に短単位を取得し、最尤の解析候補のみをスタックに保持して決定的に解析を行っている。しかし、例えばスタックを複数用意し、複数の解析候補をスタックに保持しながら、動的計画法等を用いて最尤の解析候補を探索する方法と組み合わせるようにしてもよい。
また、上述の言語解析装置100は、内部にコンピュータシステムを有しているが、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、本願明細書中では、プログラムが予めROMにインストールされている実施形態を説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。