(57)【要約】  論理計算装置は、１つの述語と１つ以上の変数とからなる複数の述語項をそれぞれ含む複数の述語論理式から、第１と第２の述語論理式のセットであって、前記第１の述語論理式の各変数に値を代入した閉論理式の集合が前記第２の述語論理式の各変数に値を代入した閉論理式の集合を包含する第１と第２の述語論理式のセットを抽出する包含抽出部を備える。
2019131342.tif 000002
【特許請求の範囲】
【請求項１】
１つの述語と１つ以上の変数とからなる複数の述語項をそれぞれ含む複数の述語論理式から、第１と第２の述語論理式のセットであって、前記第１の述語論理式の各変数に値を代入した閉論理式の集合が前記第２の述語論理式の各変数に値を代入した閉論理式の集合を包含する第１と第２の述語論理式のセットを抽出する包含抽出部
を備える論理計算装置。
【請求項２】
前記抽出された第１と第２の述語論理式のセットのうち、前記第１の述語論理式に係る複数の閉論理式の述語項に、予め定められた真偽値を代入する代入処理部
をさらに備える請求項１に記載の論理計算装置。
【請求項３】
前記複数の閉論理式に係る真偽値を用いて、前記抽出された第１と第２の述語論理式のセットのうち前記第２の述語論理式に係る複数の閉論理式に係る真偽値を抽出する前処理部
をさらに備える請求項２に記載の論理計算装置。
【請求項４】
前記包含抽出部は、各述語論理式について、複数の述語項で同一の値をとるべき変数の条件を特定し、各述語論理式に係る前記変数の条件に基づいて前記第１と第２の述語論理式のセットを抽出する
請求項１から請求項３の何れか１項に記載の論理計算装置。
【請求項５】
前記第１の述語論理式に係る前記述語項を構成する述語および前記述語項の数が、前記第２の述語論理式に係る前記述語項を構成する述語および前記述語項の数と一致し、かつ第１の述語論理式における前記変数の条件の全部が前記第２の述語論理式における前記変数の条件の一部と一致する
請求項４に記載の論理計算装置。
【請求項６】
前記第１の述語論理式に係る複数の述語の一部が、前記第２の述語論理式に係る述語の全部と一致し、かつ前記第１の述語論理式と前記第２の述語論理式とで共通する述語に係る前記変数の条件において、第１の述語論理式における前記変数の条件の全部が前記第２の述語論理式における前記変数の条件の一部と一致する
請求項４に記載の論理計算装置。
【請求項７】
コンピュータを用いて行われる論理計算方法であって、
１つの述語と１つ以上の変数とからなる複数の述語項をそれぞれ含む複数の述語論理式から、第１と第２の述語論理式のセットであって、前記第１の述語論理式の各変数に値を代入した閉論理式の集合が前記第２の述語論理式の各変数に値を代入した閉論理式の集合を包含する述語論理式のセットを抽出すること
を含む論理計算方法。
【請求項８】
コンピュータに、
１つの述語と１つ以上の変数とからなる複数の述語項を含む複数の述語論理式から、第１と第２の述語論理式のセットであって、前記第１の述語論理式の各変数に値を代入した閉論理式の集合が前記第２の述語論理式の各変数に値を代入した閉論理式の集合を包含する述語論理式のセットを抽出すること
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、述語論理式を計算する論理計算装置、論理計算方法、およびプログラムに関する。
【背景技術】
【０００２】
複数の論理式（以下、ルールともよぶ）に基づいて事象を推論する論理ネットワーク処理システムが知られている（例えば、特許文献１を参照）。論理ネットワーク処理システムは、各ルールについて既知の値（以下、入力データともよぶ）を代入することで、推論を行う。【０００３】
特許文献２には、Ｉｆ（条件部）−Ｔｈｅｎ（結論部）で表される複数の論理式（以下、ルールともよぶ）に基づいて事象を推論するプロダクションシステムにおいて、ルールの結論部を予め定めた確信度で正確な評価を下すための技術が開示されている。特許文献１によれば、結論部が同一であり、条件部が包含関係にあるルールを抽出し、抽出したルールのうち、最も包含度が高いもの（条件部の事象数が最も多いルール）を実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１６−５０５９５３号公報
【特許文献２】特開平０３−５８２３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
論理ネットワーク処理システムにおいては、ルールの数が増えるほど、計算時間が長くなることが知られている。理由としては、入力ルールが増加すると、論理ネットワーク処理システムがルールごとに個別に代入処理を行うためである。たとえば、「Friend(x, y) -> Friend(y, x)」、「Friend(x, y) -> Friend(y, z)」といった２つのルールがある場合、互いに似たルールであるにも関わらず、引数（ここでは２つめの述語項Friendの第二引数）が異なるため、代入結果が異なる値となる。そのため論理ネットワーク処理システムは、２つのルールで個別に代入操作を行う必要がある。【０００６】
特許文献２に開示されている技術は、結論部が同一であり、かつ条件部の一部が包含関係にあるルール群がある場合に、その中から１つのルールを選択して実行する。結論部が同一でない場合や、上記の２つのルールにおいては、特許文献２にいうところの包含関係にないため、それぞれについて代入処理を行わなければならない。また、特許文献２に開示されている技術はあくまで推論のために１つのルールを選択するものであって、各ルールの検証を行うためには、すべてのルールについて代入を行う必要がある。
本発明の目的の一例は、上述した課題のいずれかを解決する論理計算装置、論理計算方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の第１の態様によれば、論理計算装置は、１つの述語と１つ以上の変数とからなる複数の述語項をそれぞれ含む複数の述語論理式から、第１と第２の述語論理式のセットであって、前記第１の述語論理式の各変数に値を代入した閉論理式の集合が前記第２の述語論理式の各変数に値を代入した閉論理式の集合を包含する第１と第２の述語論理式のセットを抽出する包含抽出部を備える。【０００８】
本発明の第２の態様によれば、論理計算方法は、コンピュータを用いて行われる論理計算方法であって、１つの述語と１つ以上の変数とからなる複数の述語項をそれぞれ含む複数の述語論理式から、第１と第２の述語論理式のセットであって、前記第１の述語論理式の各変数に値を代入した閉論理式の集合が前記第２の述語論理式の各変数に値を代入した閉論理式の集合を包含する述語論理式のセットを抽出することを含む。【０００９】
本発明の第３の態様によれば、プログラムは、コンピュータに、１つの述語と１つ以上の変数とからなる複数の述語項を含む複数の述語論理式から、第１と第２の述語論理式のセットであって、前記第１の述語論理式の各変数に値を代入した閉論理式の集合が前記第２の述語論理式の各変数に値を代入した閉論理式の集合を包含する述語論理式のセットを抽出することを実行させる。
【発明の効果】
【００１０】
上記態様のうち少なくとも１つの態様によれば、論理計算装置は、述語論理式の計算時間を抑えることができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態における論理計算装置の全体構成を示したブロック図である。
【図２】入力ルールの例を示す図である。
【図３】集約ルールの例を示す図である。
【図４】入力データの例を示す図である。
【図５】ルール“Smoke(x) -> Cancer(x)”に係る代入データの例を示す図である。
【図６】ルール“Smoke(x) AND Friend(x, y) -> Friend(y, z)”に係る代入データの例を示す図である。
【図７】ルール“Smoke(x) AND Friend(x, y) -> Friend(y, x)”に係る代入データの例を示す図である。
【図８】第１の実施形態に係る論理計算装置による推論処理を示すフローチャートである。
【図９】第１の実施形態に係る包含抽出部の処理を示すフローチャートである。
【図１０】第１の実施形態に係る包含抽出部の処理を示すフローチャートである。
【図１１】第１の実施形態に係る前処理部の処理を示すフローチャートである。
【図１２】ＩＤ２に係る代入データから、ＩＤ３に係る代入データを抽出する処理の例を示す図である。
【図１３】ＩＤ２に係る代入データから、ＩＤ４に係る代入データを抽出する処理の例を示す図である。
【図１４】第１の実施形態に係る推論処理部の処理を示すフローチャートである。
【図１５】第２の実施形態における論理計算装置の全体構成を示したブロック図である。
【図１６】第２の実施形態に係る論理計算装置による学習処理を示すフローチャートである。
【図１７】第２の実施形態に係る包含抽出部の２回目以降の繰り返しに係る処理を示すフローチャートである。
【図１８】第２の実施形態に係る代入処理部の２回目以降の繰り返しに係る処理を示すフローチャートである。
【図１９】第２の実施形態に係る学習処理部の処理を示すフローチャートである。
【図２０】論理計算装置の基本構成を示す概略ブロック図である。
【発明を実施するための形態】
【００１２】
〈定義〉
「変数」とは、特定の集合に属する要素を代入可能なデータを表す記号である。例えば、人間を表す変数「x」には、人間に係る集合に属する「Alice」や「Bob」などの要素を代入することができる。本願においては関数項も変数の一例に含む。例えば、変数「x」の親を表す関数項「Parent(x)」は、変数と同様に扱われる。
「述語」とは、変数または変数の順列が所定の属性を有するか否かを表す真偽値（１または０）を返す関係式である。例えば、「Friend()」は、アリティ２の述語であって、第１変数が第２変数の友人であるという関係にあるか否かを表す述語である。アリティとは述語が参照する引数の数を示す値である。
「述語項」、「原子式」とは、１つの述語と１つ以上の変数から構成された真偽値を表す項である。例えば、「Friend(x, y)」は、変数xが変数yの友人であるか否かを表す述語項である。
「述語論理式」とは、真偽値を表す論理式であって、複数の述語項の組み合わせから構成される。例えば、「Friend(x, y) -> Friend(y, x)」は、変数xが変数yの友人であるならば、変数yが変数xの友人であることが成立するというルールを表す述語論理式である。
「閉論理式」とは、変数を含まない述語論理式である。述語論理式のすべての変数に要素を代入することで閉論理式を得ることができる。例えば、「Friend(Alice, Bob) -> Friend(Bob, Alice)」は、AliceがBobの友人ならばBobがAliceの友人であるという論理を表す式である。Friend(Alice, Bob)が真であり、かつFriend(Bob, Alice)が真であるならば、上記閉論理式は真であるといえる。
【００１３】
〈第１の実施形態〉
《構成の説明》
発明を実施するための第一の実施形態について図面を参照して詳細に説明する。
図１は、第１の実施形態における論理計算装置の全体構成を示したブロック図である。
第１の実施形態に係る論理計算装置１は、利用者によって入力された入力データ１１２および入力ルール１１１に基づいて推論処理を行う。第１の実施形態に係る論理計算装置１は、入力装置２と、出力装置３と、処理部１０と、記憶部１１と、を備える。入力装置２は、入力データ１１２および入力ルール１１１の入力を受け付ける。出力装置３は、処理の経過や推論結果を表示する。処理部１０は、論理計算処理を実行する。記憶部１１は、論理計算処理を行うためのデータを保持する。
【００１４】
入力装置２としては、入力データ１１２を取得するためのセンサ装置、入力データ１１２や入力ルール１１１を入力するためのマウスやキーボード、およびネットワークに接続されたコンピュータ端末などの装置を用いてもよい。出力装置３としては、例えばディスプレイやインジケータなどの表示装置を用いてもよい。処理部１０は、論理ネットワーク処理システムに含まれるＣＰＵやＦＰＧＡやＧＰＵなどの演算装置と、それら演算装置上で動作するプログラムとによって実現される。また、記憶部１１はＨＤＤやＳＳＤやメモリなどの記憶装置によって実現される。
【００１５】
処理部１０は、プログラムを実行することで、包含抽出部１０１、代入処理部１０２、前処理部１０３、および推論処理部１０４として機能する。
包含抽出部１０１は、入力ルール１１１間の包含関係を判定し包含関係のあるルールのうち包含する側を「親ルール」とし、包含される側を「子ルール」として、複数のルールを集約して集約ルール１１３を生成する処理を行う。「親ルール」は、第１の述語論理式の一例である。「子ルール」は、第２の述語論理式の一例である。
代入処理部１０２は、集約ルール１１３の親ルール（一次ルール、主ルール）に対して入力データを代入し、代入データ１１４を生成する。
前処理部１０３は、親ルールを用いて生成された代入データ１１４から子ルール（二次ルール、副ルール）を用いて生成することの出来る代入データ１１４を抽出する。
推論処理部１０４は、代入処理部１０２が生成した代入データ１１４および前処理部１０３によって生成された代入データ１１４を用いて推論処理を行う。
【００１６】
記憶部１１は、入力ルール１１１と、集約ルール１１３と、入力データ１１２と、代入データ１１４とを記憶する。入力ルール１１１は、入力装置２から入力されたルールである。集約ルール１１３は、包含抽出部１０１によって集約されたルールである。入力データ１１２は、入力装置２から入力された原子式に係る真偽値である。代入データ１１４は、代入処理部１０２によって計算されたデータである。
【００１７】
図２は、入力ルールの例を示す図である。
入力ルール１１１は、ＩＤとそのＩＤに係るルールとを関連付けたデータである。第１の実施形態に係る入力ルール１１１は一階述語論理を用いて記述される述語論理式である。入力ルールに格納されるルールはAND、OR、->、!などの結合記号と、変数記号と、述語記号とを組み合わせて構成される。例えば、図２に示す入力ルール１１１のうち、ＩＤ１に関連付けられたルール”Smoke(x) -> Cancer(x)”は、「人物ｘがたばこを吸っているならば、人物ｘはガンである。」という意味を持つルールである。
【００１８】
図３は、集約ルールの例を示す図である。
集約ルール１１３は、親ルールのＩＤと子ルールのＩＤとを関連付けたデータである。集約ルール１１３において、１つの親ルールに複数の子ルールが関連付けられてもよい。また、集約ルール１１３において、親ルールに関連付けられた子ルールがなくてもよい。
【００１９】
図４は、入力データの例を示す図である。
入力データ１１２は、述語と、その述語の変数に値（定数）を代入した原子式と、その原子式がとる真偽値とを関連付けたデータである。入力データ１１２に係る述語は、入力ルール１１１に係る述語論理式に含まれる述語である。入力ルール１１１における真偽値は、１（真）、０（偽）、またはＮＵＬＬ（値なし）をとる。
【００２０】
図５は、ルール“Smoke(x) -> Cancer(x)”に係る代入データの例を示す図である。図６は、ルール“Smoke(x) AND Friend(x, y) -> Friend(y, z)”に係る代入データの例を示す図である。図７は、ルール“Smoke(x) AND Friend(x, y) -> Friend(y, x)”に係る代入データの例を示す図である。
代入データ１１４は、入力ルール１１１に係るルールごとに、そのルールの各変数に要素を代入した閉論理式に含まれる複数の述語項と、各述語項の真偽値とを関連付けたデータである。代入データ１１４は、各行に閉論理式をとり、各列に述語項と真偽値の組み合わせを取ったデータである。
例えば、ルール“Smoke(x)->Cancer(x)”に係る閉論理式は、“Smoke(A)->Cancer(A)”、“Smoke(B)->Cancer(B)”、“Smoke(C)->Cancer(C)”の３つである。そのため、“Smoke(x)->Cancer(x)”の代入データ１１４には、図５に示すように、“Smoke(A)->Cancer(A)”を構成する述語項“Smoke(A)”および述語項“Cancer(A)”のそれぞれに係る真偽値と、“Smoke(B)->Cancer(B)”を構成する述語項“Smoke(B)”および述語項“Cancer(B)”のそれぞれに係る真偽値と、“Smoke(C)->Cancer(C)”を構成する述語項“Smoke(C)”および述語項“Cancer(C)”のそれぞれに係る真偽値とが格納される。
【００２１】
第１の実施形態では入力ルール１１１、入力データ１１２、集約ルール１１３、および代入データ１１４は表の形式をとる例を示しているが、他の実施形態においては、同様の情報であれば、形式は特に問わない。
【００２２】
《動作の説明》
図８を参照しながら、第１の実施形態に係る論理計算装置１の推論動作について詳細に説明する。
図８は、第１の実施形態に係る論理計算装置による推論処理を示すフローチャートである。
利用者は、入力装置２を介して論理計算装置１に入力データ１１２および入力ルール１１１を入力する。論理計算装置１は、入力データ１１２および入力ルール１１１を記憶部１１に記録する。利用者は、入力装置２を介して論理計算装置１に推論処理の開始指示を入力する。
【００２３】
論理計算装置１が推論処理の開始指示を受け付けると、包含抽出部１０１は、記憶部１１に記憶された入力ルール１１１から集約ルール１１３を作成する（ステップＳ１）。つまり、包含抽出部１０１は入力ルール１１１の中から親ルールと、その親ルールに包含されるルールである子ルールを抽出し、集約ルール１１３を作成する。
【００２４】
次に、代入処理部１０２は、集約ルール１１３、入力ルール１１１、および入力データ１１２を用いて代入データ１１４を作成する（ステップＳ２）。代入処理部１０２は集約ルール１１３に係る親ルールのＩＤを参照し、入力ルール１１１においてその親ルールＩＤに関連付けられたルールの各変数に、入力データ１１２に係る値を代入する。
【００２５】
次に、前処理部１０３は、代入処理部１０２が生成した親ルールの代入データ１１４から、子ルールの代入データ１１４を抽出する（ステップＳ３）。親ルールに係る代入データ１１４には、その親ルールに包含される子ルールの代入データ１１４相当のデータが含まれる。前処理部１０３は、この子ルールの代入データ１１４相当のデータを特定し、親ルールの代入データ１１４のうちそのデータが格納されている箇所の情報を推論処理部１０４へ出力する。
【００２６】
次に、推論処理部１０４は、代入処理部１０２が生成した代入データ１１４と、前処理部１０３から取得した情報とを用いて推論処理を行う（ステップＳ４）。推論処理部１０４は、推論処理を実行することで、代入データ１１４のうちＮＵＬＬとなっている値を推論する。
【００２７】
次に、上記ステップＳ１に係る包含抽出部１０１の処理について詳細に説明する。図９は、第１の実施形態に係る包含抽出部の処理を示すフローチャートである。
包含抽出部１０１は、入力ルール１１１をそれぞれ集約ルール１１３として初期化する（ステップＳ１１）。具体的には、図２に示す入力ルール１１１の場合、包含抽出部１０１は、各ＩＤのルールをそれぞれ親ルールとし、子ルールを有しない集約ルール１１３として初期化する。次に包含抽出部１０１は、集約ルール１１３の親ルールのペアの全ての組み合わせを特定し、各ペアを１つずつ選択して、すべてのペアについて以下のステップＳ１３からステップＳ１４の処理を実行する（ステップＳ１２）。図２に示す入力ルール１１１から集約ルール１１３が初期化される場合、６つの集約ルール１１３が生成されるため、１５通り（６Ｃ２）のペアが特定される。
【００２８】
包含抽出部１０１は、ステップＳ１２で選択されたペアについて、包含関係があるかどうかを判定する（ステップＳ１３）。包含抽出部１０１は、例えば、代入データを作成した際、親ルールで作成された代入データと、子ルールで作成された代入データに、包含関係が存在するかどうかを判定する。本実施形態に係るルールの「包含関係」とは、一方のルールの各変数に要素を代入した閉論理式の集合が他方のルールの各変数に要素を代入した閉論理式の集合を包含する関係をいう。包含抽出部１０１は、選択された親ルールのペアが包含関係を有するか否かを判定するために、以下の条件で親ルールのペアを評価する。
【００２９】
包含抽出部１０１は、親ルールに含まれる結合記号を削除して各親ルールについて複数の述語項を特定する。包含抽出部１０１は、特定された複数の述語項間で同一の値をとるべき変数の条件を特定する。以下、述語項間で同一の値をとるべき変数の条件を「一致条件」ともいう。
包含抽出部１０１は、「一方のルールに係る述語項を構成する述語およびその述語項の数が、他方のルールに係る述語項を構成する述語および述語項の数と一致」し、かつ「一方のルールにおける一致条件の全部が他方のルールにおける一致条件の一部と一致」する場合（第１の集約条件）に、そのペアが、その一方のルールを親ルールとし、その他方のルールを子ルールとする包含関係を有すると評価する。
また包含抽出部１０１は、「一方のルールに係る複数の述語の一部が、他方のルールに係る述語の全部と一致」し、かつ「一方のルールと他方のルールとで共通する述語項において、一方のルールにおける一致条件の全部が他方のルールにおける一致条件の一部と一致」する場合（第２の集約条件）に、そのペアが、その一方のルールを親ルールとし、その他方のルールを子ルールとする包含関係を有すると評価する。
【００３０】
ここで、第１の集約条件を満たすルールのペアについて説明する。
図３のＩＤ２のルールとＩＤ３のルールとのペアは、第１の条件を満たすペアである。ＩＤ２のルールは、述語項“Smoke(x)”、述語項“Friend(x, y)”、述語項“Friend(y,z)”を有するルールである。ＩＤ３のルールは、述語項“Smoke(x)”、述語項“Friend(x, y)”、述語項“Friend(y, x)”を有するルールである。
上述のとおり、ＩＤ２のルールの述語項を構成する述語およびＩＤ３のルールの述語項を構成する述語は、いずれも“Smoke”、“Friend”、“Friend”である。またＩＤ２のルールの述語項の数およびＩＤ３のルールの述語項の数は、いずれも３である。つまり、ＩＤ３のルールに係る述語項を構成する述語およびその述語項の数は、ＩＤ２のルールに係る述語項を構成する述語および述語項の数と一致する。
【００３１】
ＩＤ２のルールにおける一致条件は、第１述語項の第１変数（Smoke(x)のx）と第２述語項の第１変数（Friend(x, y)のx）とが一致すること、および第２述語項の第２変数（Friend(x, y)のy）と第３述語項の第１変数（Friend(y, z)のy）とが一致すること、である。また、ＩＤ３のルールにおける一致条件は、第１述語項の第１変数（Smoke(x)のx）と第２述語項の第１変数（Friend(x, y)のx）とが一致すること、第２述語項の第２変数（Friend(x, y)のy）と第３述語項の第１変数（Friend(y, x)のy）とが一致すること、および第３述語項の第１変数（Friend(x, y)のx）と第３述語項の第２変数（Friend(y, x)のx）とが一致すること、である。
ここで、それぞれのルールの一致条件を比較すると、ＩＤ２のルールの一致条件の全部は、ＩＤ３のルールの一致条件の一部と一致する。
なお、包含抽出部１０１は、一致条件について、述語の並べ替えを行った場合に同様であるかどうかについても評価する。包含抽出部１０１は、述語の並べ替えを行った場合に一致条件に包含されている場合、一方のルールにおける一致条件が他方のルールにおける一致条件の全部と一致すると判断する。
【００３２】
以上のように、ＩＤ２のルールとＩＤ３のルールは、第１の集約条件を満たすため、包含抽出部１０１は、ＩＤ２のルールがＩＤ３のルールの親ルールであると判定することができる。なお、包含抽出部１０１は、同様にＩＤ４のルールとＩＤ５のルールについても第１の集約条件を満たすため、ルールＩＤ４がルールＩＤ５の親ルールであると判定できる。なお、ＩＤ４のルールとＩＤ５のルールは変数の一致条件が一致するため、包含抽出部１０１は、いずれを親ルールに設定してもよい。
【００３３】
ここで、第２の集約条件を満たすルールのペアについて説明する。
図３のＩＤ２のルールとＩＤ４のルールとのペアは、第１の条件を満たすペアである。ＩＤ２のルールは、述語項“Smoke(x)”、述語項“Friend(x, y)”、述語項“Friend(y, z)”を有するルールである。ＩＤ４のルールは、述語項“Friend(x, y)”、述語項“Friend(y, x)”を有するルールである。
上述のとおり、ＩＤ２のルールには、ＩＤ４のルールを構成する２つの述語“Friend”が含まれる。つまり、ＩＤ２のルールに係る複数の述語の一部は、ＩＤ３のルールに係る述語の全部と一致する。
【００３４】
ＩＤ２のルールにおける一致条件は、第１述語項の第１変数（Smoke(x)のx）と第２述語項の第１変数（Friend(x, y)のx）とが一致すること、および第２述語項の第２変数（Friend(x, y)のy）と第３述語項の第１変数（Friend(y, z)のy）とが一致すること、である。このうち、ＩＤ４のルールと共通する述語項に係る一致条件は、第２述語項の第２変数（Friend(x, y)のy）と第３述語項の第１変数（Friend(y, z)のy）とが一致することである。また、ＩＤ４のルールにおける一致条件は、第１述語項の第２変数（Friend(x, y)のy）と第２述語項の第１変数（Friend(y, x)のy）とが一致すること、および第１述語項の第１変数（Friend(x, y)のx）と第２述語項の第２変数（Friend(y, x)のx）とが一致すること、である。
ここで、それぞれの変数の一致条件を比較すると、ＩＤ２のルールとＩＤ４のルールとで共通する述語項において、ＩＤ２のルールの一致条件の一部は、ＩＤ４のルールの一致条件の全部と一致する。
【００３５】
以上のように、ＩＤ２のルールとＩＤ４のルールは、第２の集約条件を満たすため、包含抽出部１０１は、ＩＤ２のルールがＩＤ４のルールの親ルールであると判定することができる。なお、包含抽出部１０１は、同様にＩＤ２のルールとＩＤ５のルールについても第２の集約条件を満たすため、ルールＩＤ２がルールＩＤ５の親ルールであると判定できる。
【００３６】
包含抽出部１０１は、ステップＳ１２で選択されたペアについて、包含関係があると判定した場合（ステップＳ１３：ＹＥＳ）、集約ルール１１３から、ステップＳ１２で選択されたペアのうち子ルールに相当するルールを親ルールにもつ行（親行）と、親ルールに相当するルールを親ルールにもつ行（子行）とを特定する（ステップＳ１４）。包含抽出部１０１は、親行の子ルールに、子行の親ルールのＩＤおよび子ルールのＩＤを追加する（ステップＳ１５）。包含抽出部１０１は、子行を削除する（ステップＳ１６）。集約ルール１１３が更新されると、包含抽出部１０１は、ステップＳ１２のループを脱し、再度更新語の集約ルール１１３に基づいてステップＳ１２以下の処理を行う。
【００３７】
他方、ステップＳ１７において、ステップＳ１２で選択されたペアについて包含関係がない場合（ステップＳ１３：ＮＯ）、包含抽出部１０１は、ステップＳ１２によって次のペアを選択する。
【００３８】
包含抽出部１０１は、集約ルール１１３の親ルールのペアの全ての組み合わせについてステップＳ１３からステップＳ１４の処理を実行すると、処理を終了する。なお、入力ルール１１１が図２に示すものである場合、集約ルール１１３は上記処理により図３に示すものとなる。
【００３９】
次に、上記ステップＳ２に係る代入処理部１０２の処理について詳細に説明する。図１０は、第１の実施形態に係る包含抽出部の処理を示すフローチャートである。
代入処理部１０２は、集約ルール１１３の親ルールのＩＤを特定し、入力ルール１１１のうちそのＩＤに関連付けられたルールの各変数に要素を代入した閉論理式を特定する（ステップＳ２１）。集約ルール１１３が図３に示すものである場合、集約ルール１１３においてＩＤ１、ＩＤ２、ＩＤ６が親ルールであるため、代入処理部１０２は、これらの３つのルールについて閉論理式を特定する。
代入処理部１０２は、特定された各閉論理式の述語項の真偽値として、入力データ１１２を代入する（ステップＳ２２）。そして、代入処理部１０２は、代入によって得られたデータを代入データ１１４として記憶部１１に記録する（ステップＳ２３）。入力データ１１２が図４に示すものである場合、代入データ１１４は、図５、図６、図７に示すものとなる。
【００４０】
次に、上記ステップＳ３に係る前処理部１０３の処理について詳細に説明する。図１１は、第１の実施形態に係る前処理部の処理を示すフローチャートである。
前処理部１０３は、集約ルール１１３の各行を１つずつ選択し、選択した行について以下のステップＳ３２からステップＳ３４の処理を行う。
前処理部１０３は、選択された行に子ルールが存在するか否かを判定する（ステップS３２）。選択された行に子ルールが存在しない場合（ステップＳ３２：ＮＯ）、前処理部１０３は、ステップＳ３１により次の行を選択する。
【００４１】
選択された行に子ルールが存在する場合（ステップＳ３２：ＹＥＳ）、前処理部１０３は、選択された行に係る親ルールの代入データ１１４から、その行に係る各子ルールの代入データ１１４に相当する箇所を抽出する（ステップＳ３３）。
例えば、集約ルール１１３が図３に示すものである場合、集約ルール１１３の第２行において、親ルールとしてＩＤ２のルールが、子ルールとしてＩＤ３、ＩＤ４、ＩＤ５のルールが関連付けられている。この場合、前処理部１０３は、ＩＤ２のルールに係る代入データから、ＩＤ３、ＩＤ４、ＩＤ５のルールに係る代入データを抽出する。
【００４２】
図１２は、ＩＤ２に係る代入データから、ＩＤ３に係る代入データを抽出する処理の例を示す図である。
ＩＤ２のルールに係る閉論理式の集合は、ＩＤ３のルールに係る閉論理式の集合を包含する。したがって、ＩＤ２に係る代入データ１１４は、ＩＤ３に係る代入データ１１４に相当するデータを含んでいる。図１２においてＩＤ２に係る代入データのうち太線枠で囲われた部分が、ＩＤ３に係る代入データ１１４と等価となる。
【００４３】
前処理部１０３は、子ルールに係る一致条件を特定し、親ルールに係る代入データ１１４からその一致条件をすべて満たす行を抽出する。より具体的には、親ルールに係る代入データ１１４から、子ルールに係る一致条件のうち親ルールに係る一致条件と共通しないものをすべて満たす行を抽出する。
図１２に示す例においては、子ルールであるＩＤ３のルールにおける一致条件は、第１述語項の第１変数（Smoke(x)のx）と第２述語項の第１変数（Friend(x, y)のx）とが一致すること、第２述語項の第２変数（Friend(x, y)のy）と第３述語項の第１変数（Friend(y, x)のy）とが一致すること、および第２述語項の第１変数（Friend(x, y)のx）と第３述語項の第２変数（Friend(y, x)のx）とが一致すること、である。このうち、親ルールであるＩＤ２のルールにおける一致条件と共通しないものは、第２述語項の第１変数と第３述語項の第２変数とが一致すること、である。そこで、前処理部１０３は、ＩＤ２に係る代入データ１１４から、第２述語項の第１変数と第３述語項の第２変数とが一致するものを抽出することで、ＩＤ３に係る代入データ１１４に相当するデータを抽出する。
前処理部１０３は、例えば、子ルールに係る代入データ１１４を親ルールに係る代入データ１１４からコピーして作成してもよいし、親ルールに係る代入データ１１４のうち、子ルールに係る代入データ１１４に相当するデータが含まれる行番号または記憶部１１のアドレスを特定してもよい。
【００４４】
図１３は、ＩＤ２に係る代入データから、ＩＤ４に係る代入データを抽出する処理の例を示す図である。第１の抽出条件に基づいて抽出された子ルールに係る代入データ１１４は、図１２に示すように親ルールの行から抽出される。他方、第２の抽出条件に基づいて抽出された子ルールに係る代入データ１１４は、図１３に示すように、親ルールの行のうち共通する述語項に係る列から抽出されることとなる。
【００４５】
前処理部１０３は、子ルールに係る代入データ１１４を抽出すると、その代入データ１１４を推論処理部１０４に出力する（ステップＳ３４）。
前処理部１０３は、集約ルール１１３の全ての行についてステップＳ３２からステップＳ３４の処理を実行すると、処理を終了する。
【００４６】
次に、上記ステップＳ４に係る推論処理部１０４の処理について詳細に説明する。図１４は、第１の実施形態に係る推論処理部の処理を示すフローチャートである。
推論処理部１０４は、入力ルール１１１に係るすべてのルールについて、代入処理部１０２が生成した代入データまたは前処理部１０３から取得した代入データにおいてＮＵＬＬとなっている原子式の真偽値を推論する（ステップＳ４１）。推論処理部１０４は、機械学習などの任意のアルゴリズム（たとえば回帰モデルやマルコフネットワークなどのアルゴリズム）を用いてＮＵＬＬ値の推定値を推論することができる。そして、推論処理部１０４は、推論結果を出力装置３に送信し（ステップＳ４２）、処理を終了する。
【００４７】
《効果の説明》
上述したように、第１の実施形態に係る論理計算装置１は、包含抽出部１０１によって、入力ルール１１１を集約した集約ルール１１３を生成する。これにより、代入処理部１０２で行う代入操作の回数を減らし、論理計算装置１における推論処理全体の速度を高速化することができる。また、前処理部１０３が親データの代入データ１１４の行番号やアドレスを、子データの代入データ１１４として推論処理部１０４に出力する場合、論理計算装置１が生成する代入データ１１４の量を減少させることができるため、論理計算装置１は、記憶部１１の容量が少ない場合においても推論処理を行うことができる。
【００４８】
〈第２の実施形態〉
《構成の説明》
図１５は、第２の実施形態における論理計算装置の全体構成を示したブロック図である。
第２の実施形態に係る論理計算装置１は、利用者によって入力された入力データ１１２および入力ルール１１１に基づいてルールの学習処理を行う。第２の実施形態に係る論理計算装置１は、第１の実施形態の推論処理部１０４に代えて学習処理部１０５を備える。学習処理部１０５は、代入処理部１０２が生成した代入データ１１４および前処理部１０３から取得した代入データ１１４を用いて入力ルール１１１を更新する学習処理を行う。
【００４９】
《動作の説明》
図１６は、第２の実施形態に係る論理計算装置による学習処理を示すフローチャートである。
利用者は、入力装置２を介して論理計算装置１に入力データ１１２および入力ルール１１１を入力する。論理計算装置１は、入力データ１１２および入力ルール１１１を記憶部１１に記録する。利用者は、入力装置２を介して論理計算装置１に学習処理の開始指示を入力する。
【００５０】
論理計算装置１が学習処理の開始指示を受け付けると、論理計算装置１は、第１の実施形態と同様にステップＳ１からステップＳ３の処理を実行する。つまり、包含抽出部１０１が集約ルール１１３を作成し、代入処理部１０２が親ルールの代入データ１１４を作成し、前処理部１０３が子ルールの代入データ１１４を抽出する。なお、後述するように、２回目以降の繰り返しに係る包含抽出部１０１の処理および代入処理部１０２の処理は、１回目の処理と異なる。
【００５１】
次に、学習処理部１０５は、代入処理部１０２が生成した代入データ１１４と、前処理部１０３から取得した情報とを用いて学習処理を行う（ステップＳ５）。学習処理部１０５は、代入データを用いて、入力ルールの確からしさを評価する。また学習処理部１０５は、学習処理により入力ルール１１１を更新する。
学習処理部１０５は、学習処理の結果が学習処理の終了条件を満たすか否かを判定する（ステップＳ６）。学習処理の終了条件の例は、学習処理の繰り返し回数が所定回数を超えることや、ルールの確からしさの評価値が所定の閾値を超えることなどを含んでもよい。
学習処理の結果が学習処理の終了条件を満たさない場合（ステップＳ６：ＮＯ）、論理計算装置１は、ステップＳ１に処理を戻し、再度処理を行う。他方、学習処理の結果が学習処理の終了条件を満たす場合（ステップＳ６：ＹＥＳ）、論理計算装置１は、学習処理を終了する。
【００５２】
次に、上記ステップＳ１に係る包含抽出部１０１の処理について詳細に説明する。図１７は、第２の実施形態に係る包含抽出部の２回目以降の繰り返しに係る処理を示すフローチャートである。
包含抽出部１０１は、入力ルール１１１のうちステップＳ５の学習処理によって追加されたルールを、集約ルール１１３として初期化し、追加する（ステップＳ１１１）。つまり、包含抽出部１０１は、すでに包含関係が判定されたルールのセットに係る集約ルール１１３をそのまま保持する。これにより、包含抽出部１０１は、２回目の繰り返し以降の計算処理を低減することができる。以下、包含抽出部１０１は、第１の実施形態と同様にステップＳ１２からステップＳ１６の処理を実行する。
【００５３】
次に、上記ステップＳ２に係る代入処理部１０２の処理について詳細に説明する。図１８は、第２の実施形態に係る代入処理部の２回目以降の繰り返しに係る処理を示すフローチャートである。
代入処理部１０２は、集約ルール１１３のうち代入データ１１４が存在しないものの親ルールのＩＤを特定し、入力ルール１１１のうちそのＩＤに関連付けられたルールの各変数に要素を代入した閉論理式を特定する（ステップＳ１２１）。つまり、代入処理部１０２は、すでに代入処理がなされた集約ルール１１３について、代入処理を行わない。これにより、代入処理部１０２は、２回目の繰り返し以降の代入処理回数を低減することができる。以下、代入処理部１０２は、第１の実施形態と同様にステップＳ２２からステップＳ２３の処理を実行する。
【００５４】
次に、上記ステップＳ５に係る学習処理部１０５の処理について詳細に説明する。図１９は、第２の実施形態に係る学習処理部の処理を示すフローチャートである。
学習処理部１０５は代入データを参照し、入力ルール１１１の確からしさを評価する（ステップＳ５１）。ここで学習処理部１０５は、入力データ１１２の内容が入力ルール１１１に対してどの程度正しいかを示す評価値を算出する。例えば、学習処理部１０５は、各ルールに係る代入データ１１４において、ルールが真となる割合を評価値として算出することができる。例えば、学習処理部１０５は、任意の機械学習アルゴリズム（たとえば確率的勾配降下法など）を用いてルールの尤度を計算し、これを評価値としてもよい。学習処理部１０５は、評価値が所定値未満となるルールを、入力ルール１１１から削除する（ステップＳ５２）。
【００５５】
次に、学習処理部１０５は新たなルールを作成し、入力ルール１１１へルールを追加する（ステップＳ５３）。学習処理部１０５は、任意のアルゴリズムによって新たなルールを生成してよい。たとえば、学習処理部１０５は、過去に入力ルール１１１に設定されていない組み合わせのルールをランダムに作成し、入力ルール１１１として追加することができる。
【００５６】
《効果の説明》
上述したように、第２の実施形態に係る論理計算装置１は、２回目以降の繰り返し処理において、包含抽出部１０１の処理および代入処理部１０２の処理に関して、繰り返し以前にすでに計算された情報を使いまわすことで、処理を省略し、高速化することができる。これは包含関係を判定し、ルールを集約した場合でも、ルールを集約しない場合と同様に適用することが可能となる。
【００５７】
以上、図面を参照して複数の実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、様々な設計変更等をすることが可能である。
【００５８】
〈基本構成〉
図２０は、論理計算装置の基本構成を示す概略ブロック図である。
上述した実施形態では、論理計算装置１の実施形態として図１または図１５に示す構成について説明したが、論理計算装置１の基本構成は、図２０に示すとおりである。
すなわち、論理計算装置１は、包含抽出部１０１を基本構成として備える。
【００５９】
包含抽出部１０１は、１つの述語と１つ以上の変数とからなる複数の述語項を含む複数の述語論理式から、述語論理式のセットであって、第１の述語論理式の各変数に値を代入した閉論理式の集合が第２の述語論理式の各変数に値を代入した閉論理式の集合を包含する述語論理式のセットを抽出する。
これにより、論理計算装置１は、述語論理式の計算時間を抑えることができる。
【００６０】
なお、論理計算装置１が行う処理の全部または一部を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００６１】
この出願は、２０１７年１２月２７日に出願された日本国特願２０１７−２５２６１２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００６２】
本発明は、論理計算装置、論理計算方法、およびプログラムに適用してもよい。
【符号の説明】
【００６３】
１  論理計算装置
２  入力装置
３  出力装置
１０  処理部
１１  記憶部
１０１  包含抽出部
１０２  代入処理部
１０３  前処理部
１０４  推論処理部
１１１  入力ルール
１１２  入力データ
１１３  集約ルール
１１４  代入データ
１０５  学習処理部
【図１】
2019131342.tif 000003
【図２】
2019131342.tif 000004
【図３】
2019131342.tif 000005
【図４】
2019131342.tif 000006
【図５】
2019131342.tif 000007
【図６】
2019131342.tif 000008
【図７】
2019131342.tif 000009
【図８】
2019131342.tif 000010
【図９】
2019131342.tif 000011
【図１０】
2019131342.tif 000012
【図１１】
2019131342.tif 000013
【図１２】
2019131342.tif 000014
【図１３】
2019131342.tif 000015
【図１４】
2019131342.tif 000016
【図１５】
2019131342.tif 000017
【図１６】
2019131342.tif 000018
【図１７】
2019131342.tif 000019
【図１８】
2019131342.tif 000020
【図１９】
2019131342.tif 000021
【図２０】
2019131342.tif 000022
【国際調査報告】
2019131342.tif 000023
2019131342.tif 000024