【文献】
佐藤 泰介,ベイジアンネットワークと離散構造処理系,人工知能学会誌 第25巻 第6号,日本,(社)人工知能学会,2010年11月 1日,第25巻,pp.796-802
(58)【調査した分野】(Int.Cl.,DB名)
前記構文解析部は、前記終端記号の系列に含まれる前記終端記号の各々について、非終端記号を前記終端記号に書き換える生成規則が、前記導出において利用されることを表す命題変数と、前記終端記号の系列に含まれる部分系列の各々について、前記部分系列に対応して前記生成規則が、前記導出において利用されることを表す命題変数とを用いて、前記論理関数を定義する請求項1に記載の構文解析装置。
前記構文解析部が定義するステップは、前記終端記号の系列に含まれる前記終端記号の各々について、非終端記号を前記終端記号に書き換える生成規則が、前記導出において利用されることを表す命題変数と、前記終端記号の系列に含まれる部分系列の各々について、前記部分系列に対応して前記生成規則が、前記導出において利用されることを表す命題変数とを用いて、前記論理関数を定義する請求項3に記載の構文解析方法。
【背景技術】
【0002】
確率文脈自由文法は自然言語文の構文解析に用いられる基礎的な技術である。確率文脈自由文法Gは、G=(M,T,R,S,P)からなる5つ組として定義される。ここでMは非終端記号の集合、Tは終端記号の集合、Rは生成規則の集合、Sは開始記号、Pは生成規則に付与された確率値の集合である。確率文脈自由文法がチョムスキー標準形であるとすれば、生成規則は以下(1)〜(3)式のいずれかである。
【0003】
【数1】
・・・(1)
・・・(2)
・・・(3)
【0004】
ここでA、B、及びCは非終端記号、αは終端記号、Sは開始記号、εは空列を表すものとする。
【0005】
各規則は、規則の左辺(以下では頭部とよぶ)の非終端記号Aを右辺の記号列に書き換えることを表している。ある規則A→BCを適用するとは、非終端記号Aを含む系列において、Aを非終端記号の列BCに書き換えることを表す。
【0006】
各規則に対してはその規則が適用される確率が付与されている。与えられた確率文脈自由文法において、規則の頭部が非終端記号Aであるような規則の集合をr
1,...,r
mとすると、各規則r
iには出現確率w
iが与えられる。ここで確率w
iは
【0007】
【数2】
【0008】
を満たす。各確率は、非終端記号Aが与えられたときに確率w
iで生成規則r
iを適用することを表している。
【0009】
ある確率文脈自由文法Gが与えられると、それを用いた構文解析が可能となる。すなわち、与えられた終端記号の列α
1,α
2,...,α
nに対して、開始記号Sから当該終端記号の列を導出するための生成規則の適用による非終端記号の書き換えの列を得ることができる。ある構文解析は、開始記号に対して適用した生成規則の列として表現することができる。この列を導出ともよぶ。また、生成規則の列に含まれる各規則に付与された確率の積として、その解析が得られる確率が定義される。
【0010】
確率文脈自由文法を用いることで自然言語文のように曖昧さのある対象に対する構文解析を行うことができるため、自然言語文の解析や、RNA(リボ核酸)の二次構造予測などに用いられてきた。また、確率文脈自由文法が与えられたときに、ある系列に対する構文解析のうち、確率が最大となるものを発見する問題は、系列の長さをNとするとO(N
3)の動的計画法を用いることで解くことができる。
【発明の概要】
【発明が解決しようとする課題】
【0012】
確率文脈自由文法を用いた構文解析には動的計画法を用いた効率的なアルゴリズムが存在し、系列の要素間の関係性を考慮した解析が可能であることから、様々な問題に利用される。一方で、既存の動的計画法に基づく構文解析アルゴリズムでは、適用される規則の間の制約条件を考慮することができなかった。ここで制約条件とは、例えばある規則r∈Rが導出中に出現する回数に制限を加えたり、規則r,s∈Rが導出中で同時に出現することを禁止したりするものである。
【0013】
本発明は、上記事情を鑑みて成されたものであり、生成規則に関する任意の制約条件を考慮した構文解析を行うことができる構文解析装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
上記目的を達成するために、第1の発明に係る構文解析装置は、終端記号の系列に対して、確率文脈自由文法に基づいた構文解析を行う構文解析装置であって、入力された、確率文脈自由文法における非終端記号を書き換えるための生成規則に関する制約条件である論理制約を表す論理関数に対応する二分決定グラフを構築するBDD構築部と、予め与えられた生成規則の集合と、前記終端記号の系列とに基づいて、予め定められた開始記号から前記終端記号の系列を得るまでの、前記生成規則の列を導出とし、前記終端記号の系列に対して可能な導出の集合を求め、前記求められた前記可能な導出の集合に基づいて、前記導出において各生成規則が利用されることを、命題変数を用いて表現し、前記命題変数を用いて前記終端記号の系列に対する正しい導出であるか否かを表現する論理関数を定義し、前記定義された論理関数に対応する二分決定グラフを構築し、前記BDD構築部によって構築された前記二分決定グラフと、前記定義された論理関数に対応する前記二分決定グラフとの論理積となる前記二分決定グラフを用いて、前記制約条件を満たし、かつ、確率が最大となる導出を求める構文解析部と、を含んで構成されている。
【0015】
また、第1の発明に係る構文解析装置において、前記構文解析部は、前記終端記号の系列に含まれる前記終端記号の各々について、非終端記号を前記終端記号に書き換える生成規則が、前記導出において利用されることを表す命題変数と、前記終端記号の系列に含まれる部分系列の各々について、前記部分系列に対応して前記生成規則が、前記導出において利用されることを表す命題変数とを用いて、前記論理関数を定義するようにしてもよい。
【0016】
第2の発明に係る構文解析方法は、終端記号の系列に対して、確率文脈自由文法に基づいた構文解析を行う構文解析装置における構文解析方法であって、BDD構築部が、入力された、確率文脈自由文法における非終端記号を書き換えるための生成規則に関する制約条件である論理制約を表す論理関数に対応する二分決定グラフを構築するステップと、構文解析部が、予め与えられた生成規則の集合と、前記終端記号の系列とに基づいて、予め定められた開始記号から前記終端記号の系列を得るまでの、前記生成規則の列を導出とし、前記終端記号の系列に対して可能な導出の集合を求めるステップと、前記構文解析部が、前記求められた前記可能な導出の集合に基づいて、前記導出において各生成規則が利用されることを、命題変数を用いて表現するステップと、前記構文解析部が、前記命題変数を用いて前記終端記号の系列に対する正しい導出であるか否かを表現する論理関数を定義するステップと、前記構文解析部が、前記定義された論理関数に対応する二分決定グラフを構築するステップと、前記構文解析部が、前記BDD構築部によって構築された前記二分決定グラフと、前記定義された論理関数に対応する前記二分決定グラフとの論理積となる前記二分決定グラフを用いて、前記制約条件を満たし、かつ、確率が最大となる導出を求めるステップと、を含んで実行することを特徴とする。
【0017】
また、第2の発明に係る構文解析方法において、前記構文解析部が定義するステップは、前記終端記号の系列に含まれる前記終端記号の各々について、非終端記号を前記終端記号に書き換える生成規則が、前記導出において利用されることを表す命題変数と、前記終端記号の系列に含まれる部分系列の各々について、前記部分系列に対応して前記生成規則が、前記導出において利用されることを表す命題変数とを用いて、前記論理関数を定義するようにしてもよい。
【0018】
また、第3の発明に係るプログラムは、コンピュータを、第1の発明に係る構文解析装置の各部として機能させるためのプログラムである。
【発明の効果】
【0019】
本発明の構文解析装置、方法、及びプログラムによれば、生成規則に関する制約条件である論理制約を表す論理関数に対応する二分決定グラフを構築し、予め与えられた生成規則の集合と、終端記号の系列とに基づいて、予め定められた開始記号から終端記号の系列を得るまでの、生成規則の列を導出とし、終端記号の系列に対して可能な導出の集合を求め、求められた可能な導出の集合に基づいて、導出において各生成規則が利用されることを、命題変数を用いて表現し、命題変数を用いて終端記号の系列に対する正しい導出であるか否かを表現する論理関数を定義し、定義された論理関数に対応する二分決定グラフを構築し、構築された二分決定グラフと、定義された論理関数に対応する二分決定グラフとの論理積となる二分決定グラフを用いて、制約条件を満たし、かつ、確率が最大となる導出を求めることにより、生成規則に関する任意の制約条件を考慮した構文解析を行うことができる、という効果が得られる。
【発明を実施するための形態】
【0021】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0023】
まず、本発明の実施の形態における概要を説明する。
【0024】
本実施の形態で提案する、論理制約が存在するもとでの確率文脈自由文法に基づく構文解析の特徴は、まず確率文脈自由文法における各生成規則を命題変数に置き換えて、可能な導出の集合を、論理関数を用いて表現し、論理関数を二分決定グラフ(BDD)とよばれるデータ構造を用いて表現することにある。二分決定グラフを用いて論理関数を表現することによって、可能な導出の集合のうち制約条件を満たし、かつ確率最大となる導出の検索を行うことができるようになる。
【0026】
次に、本発明の実施の形態における二分決定グラフ(BDD)の原理を説明する。
【0027】
二分決定グラフ(BDD)は論理関数を有向非巡回グラフとして表現するデータ構造である。N引数の論理関数
【0029】
は、N個の命題変数x
1,...,x
Nを引数として受け取り、0または1を出力する関数である。論理関数は命題変数と論理演算子を用いて記述することができる。例えばx
1,x
2を引数として受け取り、x1=1かつx2=1のときに1、それ以外のときに0を返すような論理関数は、
【0031】
として表現することができる。3引数の論理関数
【0033】
を表現するBDDを
図1に示す。BDDは2種類のノードからなる。
【0034】
そのノードを親とするようなアークが存在しないノードを終端ノードとよび、図中では四角で表現する。それ以外のノードを分岐ノードとよび、図中では丸で表現する。BDDは必ず記号
【0036】
が付与された2種類の終端ノードを含む。また、分岐ノードは必ずそのノードを親とする2つのアークを持つ。それぞれのアークは区別され、0枝、1枝とよばれる。
図1中では0枝は破線、1枝は実線で表現される。各分岐ノードは論理関数のいずれかの引数である命題変数に対応しており、対応している変数は
図1中では分岐ノードの丸の中に書かれた記号で表現されている。対応している変数をBDDの分岐ノードのラベルとよぶ。また、最上位の分岐ノードをBDDの根とよぶ。
【0037】
BDD上で最上位のノードから、入力に応じた枝を辿ることによって、ある引数の値に対する論理関数の出力を得ることができる。例で挙げた論理関数に入力としてx=1,y=1,z=1が与えられたときに
図1のBDDを用いて関数を評価する方法を示す。まず、根のラベルはxであり、入力ではx=1であることから、根から1枝を辿って図中で根の直下にある分岐ノードに遷移する。辿った先のノードのラベルはyであり、入力はy=1であることから、ノードから1枝を辿って
【数7】
終端ノードに遷移する。
【数8】
終端ノードに遷移した場合、関数は与えられた入力に対して1を返すことを示すため、入力x=1,y=1,z=1に対する出力は1であることが分かる。同様に、入力としてx=1,y=0,z=0が与えられたとすると、BDDを根から順番に辿るとこの場合は
【0041】
終端ノードに到達したときには関数は0を返すことを示すため、入力x=1,y=0,z=0に対する出力は0であることが分かる。
【0042】
BDDを用いて論理関数を表現することで、上述した関数の評価のほかにも論理関数間の演算を行うことができたり、関数のモデル(関数が1を返すような引数の値の組合せの個数)を数えるなどの演算を高速に実行することが可能となる。
【0043】
<本発明の実施の形態に係る構文解析装置の構成>
【0044】
次に、本発明の実施の形態に係る構文解析装置の構成について説明する。
図2に示すように、本発明の実施の形態に係る構文解析装置100は、CPUと、RAMと、後述する構文解析処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することが出来る。この構文解析装置100は、機能的には
図2に示すように文入力部10と、論理制約入力部12と、生成規則入力部14と、演算部20と、出力部50とを備えている。
【0045】
文入力部10は、解析の対象となる終端記号の系列(例えば、自然言語文)の入力を受け付ける。
【0046】
論理制約入力部12は、確率文脈自由文法における非終端記号を書き換えるための生成規則に関する制約条件である論理制約を表す論理関数を受け付ける。論理関数の引数については後述する。
【0047】
生成規則入力部14は、チョムスキー標準形で与えられる生成規則の集合を入力として受け取る。
【0048】
演算部20は、生成規則記憶部28と、BDD構築部30と、構文解析部32とを含んで構成されている。
【0049】
生成規則記憶部28は、生成規則入力部14で受け付けた生成規則の集合を記憶している。
【0050】
BDD構築部30は、論理制約入力部12で受け付けた論理関数に対応する二分決定グラフを構築する。
【0051】
構文解析部32は、生成規則記憶部28に記憶されている生成規則の集合と、文入力部10で受け付けた終端記号の系列とに基づいて、予め定められた開始記号Sから当該終端記号の系列を得るまでに適用される生成規則の列を導出とし、終端記号の系列に対して可能な導出の集合を求め、求められた可能な導出の集合に基づいて、導出において各生成規則が利用されることを、命題変数を用いて表現し、命題変数を用いて終端記号の系列に対する正しい導出であるか否かを表現する論理関数を定義する。構文解析部32は、定義された論理関数に対応する二分決定グラフを構築し、BDD構築部30によって構築された二分決定グラフと、定義された論理関数に対応する二分決定グラフとの論理積となる二分決定グラフを用いて、可能な導出の集合のうち、論理制約入力部12で受け付けた論理関数が表す制約条件を満たし、かつ、確率が最大となる導出を求める。ここで、論理関数を定義する際には、終端記号の系列に含まれる終端記号α
iの各々について、非終端記号を終端記号α
iに書き換える生成規則r
jが、導出において利用されることを表す命題変数d
ijと、終端記号の系列に含まれる部分系列α
ijの各々について、部分系列α
ijに対応して生成規則r
lが、導出において利用されることを表す命題変数b
ijlとを用いる。
【0052】
<本発明の実施の形態に係る構文解析装置の作用>
【0053】
次に、本発明の実施の形態に係る構文解析装置100の作用について説明する。生成規則入力部14が生成規則の集合を受け付けると、生成規則記憶部28に生成規則の集合が記憶される。そして、構文解析装置100は、
図3に示す構文解析処理ルーチンを実行する。
【0054】
まず、ステップS100では、文入力部10が終端記号の系列を受け付け、論理制約入力部12が論理制約を表す論理関数を受け付ける。受け付けた長さNの終端記号の列をα
1,α
2,...,α
Nとする。Tを終端記号の集合とすると、各α
iはα
i∈Tであるとする。また、生成規則記憶部28に記憶されている生成規則の集合をRとする。Rに含まれる生成規則のうち、非終端記号を終端記号に置き換える規則、すなわちA→αの形をしている規則をq
1,...,q
Kとし,非終端記号を非終端記号のペアに置き換える規則、すなわちA→BCの形をしている規則をr
1,...,r
Mとする。論理制約は、後述する命題変数d
i,b
iを引数とする任意の論理関数として表現されるものとする。
【0055】
次に、ステップS102では、ステップS100で受け付けた論理制約を表す論理関数に対応する二分決定グラフを構築する。二分決定グラフの構築には、例えば非特許文献1に記載されているような二分決定グラフ構築のための既存手法を用いる。
【0056】
ステップS104では、ステップS100で受け付けた生成規則の集合と、終端記号の系列とに基づいて、予め定められた開始記号Xから終端記号の系列を得るまでの、生成規則の列を導出とし、終端記号の系列に対して可能な導出の集合を求める。ここでは、Cocke-Younger-Kasami(CYK)アルゴリズムを実行して、生成規則の集合による可能な導出の集合を求める。CYKアルゴリズムは動的計画法によって文脈自由文法の構文解析を行うアルゴリズムである。終端記号の系列のi文字目からj文字目までからなる部分系列をα
ijとすると、CYKアルゴリズムは任意の非終端記号を開始記号とする各部分系列への導出を再帰的に求める。すなわち、S
ij(X)を、部分系列α
ijに対する、非終端記号Xを開始記号とする導出において、最初に利用された生成規則のインデックスの集合であるとすると、(i<j)であるときのS
ij(X)は以下(4)式のように再帰的に求められる。
【0058】
また、S
ii(X)は、導出において利用される、非終端記号Xを終端記号α
iに書き換える生成規則のインデックスの集合であり、以下(5)式のように定義される。
【0060】
すべてのS
ij(X)の計算はO(N
3)時間で実行することができる。
【0061】
ステップS106では、求められた可能な導出の集合に基づいて、導出において各生成規則が利用されることを、命題変数を用いて表現する。命題変数は、終端記号の系列に含まれる終端記号α
iの各々について、非終端記号を終端記号α
iに書き換える生成規則r
jが、導出において利用されることを表す命題変数d
ijと、終端記号の系列に含まれる部分系列α
ijの各々について、部分系列α
ijに対応して生成規則r
lが、導出において利用されることを表す命題変数b
ijlとを用いる。すなわち、命題変数d
ijは、終端記号α
iの各々ついて、
【0066】
また、命題変数b
ijlは、終端記号α
iからα
jについて、i≠jであり各
【0068】
である場合において、生成規則のインデックスl∈S
ij(X)に対応する生成規則r
l=(X→YZ)と、あるk:i≦k≦j−1について、
【0070】
である生成規則のインデックスlに対して定義される。
【0071】
ステップS108では、ステップS106で得られた各命題変数d
ij、b
ijlを用いて、終端記号の系列に対する正しい導出であるか否かを表現する論理関数を定義する。ここでは、論理式間が満たすべき制約の条件をそれぞれ以下(6)〜(11)のように設定することで、正しい導出を表現する論理関数を構成する。まず、各命題変数d
i*のうち、二つ以上が同時に真とならない制約を以下(6)式とする。
【0073】
同様に、各命題変数b
ij*のうち、二つ以上が同時に真とならない制約を以下(7)式のように表す。
【0075】
次に、各集合S
ij(X)にインデックスが含まれる生成規則のうちいずれかが真となる制約を、以下(8)式のように表す。
【0077】
同様にS
ii(X)にインデックスが含まれる生成規則のうちいずれかが真となる制約を、以下(9)式のように表す。
【0079】
また、命題変数b
ijkに対し、r
k=(X→YZ)であるならば、以下(10)式の制約を設定する。
【0081】
最後に、i<k≦j<lであるような全てのb
ijm,b
klnに対して、以下(11)式の制約を設定する。
【0083】
上記(6)〜(11)式を用いると、正しい導出に対応する規則の集合が与えられたときに真を返す論理関数は、命題変数d
ij,b
ijkを引数とする関数として以下(12)のように表現できる。
【0085】
ステップS110では、ステップS108で定義された論理関数に対応する二分決定グラフを構築する。二分決定グラフの構築は、ステップS102と同様に非特許文献1に記載の既存手法を用いる。
【0086】
ステップS112では、ステップS102で構築された二分決定グラフと、ステップS110で構築された二分決定グラフとの論理積となる二分決定グラフを計算する。
【0087】
ステップS114では、ステップS112で構築された二分決定グラフを用いて、可能な導出のうち、ステップS100で受け付けた論理関数が表す制約条件を満たし、かつ、確率が最大となる導出を求める。ステップS112で計算した二分決定グラフを用いることで、導出確率を最大とする導出は二分決定グラフのサイズに比例する動的計画法で求めることができる。このとき、N引数x
1,...,x
Nの論理関数f(x
1,...,x
n)が二分決定グラフで表されているとする。また、各x
iについて重みu
iが定められているとすると、二分決定グラフを用いた、非特許文献2に記載されているアルゴリズム(非特許文献2の7ページに記載されている”AlgorithmB”を参照)を用いることで、以下(13)〜(15)式を解くことができる。
【0088】
【数24】
・・・(13)
・・・(14)
・・・(15)
【0089】
本実施の形態の問題では、各命題変数x
iについて対応する生成規則r
jが定まるので、その生成規則の出現確率w
jの対数をとり、出現確率w
jの対数を命題変数x
iに対応する重みu
iとして設定することによって、上記の定式化によって確率最大かつ制約条件を満たす導出を得ることが可能となる。
【0090】
以上説明したように、本発明の実施の形態に係る構文解析装置によれば、入力された生成規則に関する制約条件である論理制約を表す論理関数に対応する二分決定グラフを構築し、予め与えられた生成規則の集合と、終端記号の系列とに基づいて、予め定められた開始記号から終端記号の系列を得るまでの、生成規則の列を導出とし、終端記号の系列に対して可能な導出の集合を求め、求められた可能な導出の集合に基づいて、導出において各生成規則が利用されることを、命題変数を用いて表現し、命題変数を用いて終端記号の系列に対する正しい導出であるか否かを表現する論理関数を定義し、定義された論理関数に対応する二分決定グラフを構築し、構築された二分決定グラフと、定義された論理関数に対応する二分決定グラフとの論理積となる二分決定グラフを用いて、制約条件を満たし、かつ、確率が最大となる導出を求めることにより、生成規則に関する任意の制約条件を考慮した構文解析を行うことができる。
【0091】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【0092】
例えば、上述した実施の形態における構文解析装置は、自然言語文に対して、構文解析を行う場合について説明したが、これに限定されるものではなく、自然言語文以外の終端記号の列を受け付けて、構文解析を行うようにしてもよい。例えば、RNAなどの二次構造予測など、何らかの構造に対して、構文解析を行うようにしてもよい。