(57)【要約】【課題】複数の重みによって頑強に情報を活かすことができ、知識の表現コストが小さく、複数分野の知識や公私の情報にまたがって活躍する汎用的なＡＩを実現すること。【解決手段】  論理プログラミング言語Ｐｒｏｌｏｇのホーン節、又は、  同等の宣言的解釈が可能な論理プログラミング言語の節であって、  各条件毎に重みを付すことができるようにしたホーン節について、  成立した条件の重みの和の大小に応じて効果が成立するかどうかを推論できるようにしたコンピュータプログラムを提供する。【選択図】図１
2020190857.tif 000002
【特許請求の範囲】
【請求項１】
論理プログラミング言語Ｐｒｏｌｏｇのホーン節、
又は、
同等の宣言的解釈が可能な論理プログラミング言語の節
であって、
各条件毎に重みを付すことができるようにしたホーン節について、
成立した条件の重みの和の大小に応じて効果が成立するかどうかを推論できるようにした
コンピュータプログラム。
【請求項２】
前記節に付された重みの和の閾値に関する条件に応じて効果が成立するかどうかを推論できるようにした
請求項１に記載のコンピュータプログラム。
【請求項３】
前記節を、
重みの和を求める関数として参照できるように、又は、
重みの和を求めつつ手続的に解釈できるものとして呼び出せるようにした
請求項１に記載の
コンピュータプログラム。
【請求項４】
請求項３の参照又は呼出に対し、
ヘッド中の束縛されていない変数組に対応する束縛値組と各束縛値組に対応する前記関数としての戻り値を返す又は表示する
請求項３に記載の
コンピュータプログラム。
【請求項５】
前記節が、好感、幸福、健康又は成功の原因に関する理論を表現したものである
請求項１から４のいずれか一項に記載のコンピュータプログラム。
【請求項６】
前記論理プログラムにおける重み又は閾値が変数で表現されており、
表現された該変数が該条件において数値で束縛されている場合に、
該数値を重み又は閾値としてそれぞれ採用する
請求項１から５のいずれか一項に記載のコンピュータプログラム。
【請求項７】
所定のルール中の重みの和、又は、所定の重みつき価値集合の重みの和が、
多く又は少なくなるように
利用者に関する文脈を更新できる会話（利用者への質問、質問を受けた応答、等を含む）を
利用者に対して実施していくコンピュータプログラム。
【請求項８】
なるべく早く又は少ない質問で、前記和が多く又は少なくなるように
利用者に質問をしていく請求項７に記載のコンピュータプログラム。
【請求項９】
利用者ごとのメモリ（個別の定義のため、実行時の文脈の記憶のため、等）の内容に応じて
実行時にこれまでのものと切り替えて用いるコンピュータプログラム、又は、
実行時にこれまでのものに追加して用いるコンピュータプログラムを
決定することを特徴とするコンピュータプログラム。
【請求項１０】
利用者ごとのメモリ（個別の定義のため、実行時の文脈の記憶のため、等）の内容に応じて
実行時に検索して
これまでのものと切り替えて、又は、これまでのものに追加して実行すべき
コンピュータプログラム又は該コンピュータプログラムの検索範囲を定めた
ことを特徴とする
コンピュータプログラム。
【請求項１１】
利用者ごとのメモリ中又は実行するコンピュータプログラム中の価値の重みの相対的または絶対的定義によって
相対的順位付け又は絶対的重み付けをした価値の優先度に従って
より優先されるべき価値をより早く充たすように質問や誘導を行う
チャットボット用コンピュータプログラム。
【請求項１２】
請求項１から１１のいずれか一項に記載のコンピュータプログラムを用いた方法。
【請求項１３】
請求項１から１１のいずれか一項に記載のコンピュータプログラムを備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、重みを用いた推論と汎用ＡＩのためのコンピュータプログラム、方法および装置に関する。
また、特に、自由文（各国自然言語の全体を含む）によって知識を表現したそのようなコンピュータプログラム等に関する。
【背景技術】
【０００２】
従来、ニューラルネットワーク（ディープラーニングを含む）やファジー集合、ファジーＰＲＯＬＯＧなど、
複数の重み（関連づけ等の強度）によってより頑強に情報を活かせる知識表現が試みられてきたが、
自然言語の全体を含む自由文で表現された極めて柔軟でプライベートな知識や価値観については
統合的なアプローチがされてこなかった。
このため、
知識表現のコストが大きく、
複数分野の知識や公私の情報にまたがって活躍する汎用的なＡＩを実現する際の大きな足かせになっていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特願２０１９−０７８１４１
【特許文献２】特願２０１３−０８７００８
【特許文献３】特願２０１７−１９２２９６
【特許文献４】特願２０１７−０９２０７６
【特許文献５】特願２０１７−０９２０５７
【特許文献６】特願２０１７−０９２０４７
【特許文献７】特願２０１６−１６５１８０
【特許文献８】特願２０１６−００９３２４
【特許文献９】特願２０１５−２３４３５６
【特許文献１０】特願２０１５−２１９００７
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、本発明が解決しようとする課題は、
複数の重みによって頑強に情報を活かすことができ、
知識の表現コストが小さく、
複数分野の知識や公私の情報にまたがって活躍する
汎用的なＡＩを実現することである。
【課題を解決するための手段】
【０００５】
このような課題を解決するため、本発明は、
請求項１として
論理プログラミング言語Ｐｒｏｌｏｇのホーン節、
又は、
同等の宣言的解釈が可能な論理プログラミング言語の節
であって、
各条件毎に重みを付すことができるようにしたホーン節について、
成立した条件の重みの和の大小に応じて効果が成立するかどうかを推論できるようにした
コンピュータプログラム
を提供する。
：例えば、「同等の宣言的解釈が可能な論理プログラミング言語の節」とは、変数を自由文（各国自然言語の全体を含む）に埋め込んだ文を、ホーン節のボディ部を構成する条件の一つおよび／又はヘッド部を構成する効果とする論理プログラミング言語の節、等である（特許文献２を参照）。
：なお、各条件毎に付される重みは負であってもよく、この場合は、負の重みに応じて構成要件の成立を妨げたり（大きい閾値を要求する場合）あるいは促進したり（小さい閾値を要求する場合）する条件となる。
＞これにより、論理プログラムの編集者が、ニューラルネットワークにより近い論理表現力を獲得することができる。
【０００６】
本発明はまた、請求項２として
前記ホーン節に付された重みの和の閾値に関する条件に応じて効果が成立するかどうかを推論できるようにした
請求項１に記載のコンピュータプログラム
を提供する。
：これは、例えば、効果（ヘッド部）と条件部（ボディ部）を分けるデリミタ（通常は「：−」）を、「：％＞＝８０」のように８０以上を要求するものとして論理プログラミング言語において付して、解釈系であるコンピュータプログラムがそれを解釈することが可能である。
：例えば、以下のように論理プログラミング（第２から第１２行がルールおよびファクトに該当）し、問合せ（？$X likes sports）をし、答え（:$X  = Ichiro :$X  = Yuta ）を得ることを想定しているが、「％＜−５０」のように−５０より小さい和を要求するように論理プログラミングすることもできるように解釈系コンピュータプログラムを構成することもできる。
＝＝＝
1: 
2: $X likes sports :%70 40/$X likes tennis ; 40/$X likes baseball ; 40/$X likes swimming ; 20/$X likes dance ; 10/$X likes e-sports ; 
3: Ichiro likes baseball
4: Ichiro likes swimming
5: Ichiro likes tennis
6: Koji likes baseball
7: Koji likes e-sports
8: Yuta likes swimming
9: Yuta likes dance
10: Yuta likes e-sports
11: Hanako likes tennis
12: Hanako likes dance
===
-------2019/05/11 12:26:53-------S
−＞ ？$X likes sports
:$X  = Ichiro 
:$X  = Yuta 
探索時間 = 1357msec
＝＝＝
＞これにより、論理プログラムの編集者が、ニューラルネットワークにより近い論理表現力を少ないコストで獲得することができるようになる。
【０００７】
本発明はまた、請求項３として、
前記節を、
重みの和を求める関数として参照できるように、又は、
重みの和を求めつつ手続的に解釈できるものとして呼び出せるようにした
請求項１に記載の
コンピュータプログラム
を提供する。
：Ｃ言語の関数呼び出し（戻り値は整数）がもっとも類似する概念であり、呼び出した結果を標準的なＰｒｏｌｏｇの文法外の比較構文（例：「ＩＦ（幸せ（太郎，結婚，＄Ｙ）＞幸せ（太郎，恋人，＄Ｙ））｛ＰＲＩＮＴ  ”太郎は＄Ｙと結婚すべし！”；｝」）に用いたり代入文（例：「＄Ｘ＝幸せ（太郎，結婚，＄Ｙ）」）に用いたりすることができる。
＞これにより、一つの書き方で複数の用途（論理ゲート、関数、等）として用いることができるようになり、知識の記述コストを節約することができるようになる。
【０００８】
本発明はまた、請求項４として、
請求項３の参照又は呼出に対し、
ヘッド中の束縛されていない変数組に対応する束縛値組と各束縛値組に対応する前記関数としての戻り値を返す又は表示する
請求項３に記載の
コンピュータプログラム
を提供する。
：例えば、以下のようになる。
＝＝＝
［論理プログラム］
＄Ｘは＄Ｙが好き ：％７０ ５０／＄Ｘは＄Ｙのそばにいたがる ; ７０／＄Ｘと＄Ｙは恋仲 ; ３０／＄Ｘは哺乳類 ; 
太郎は花子のそばにいたがる
次郎は花子のそばにいたがる
太郎は哺乳類
次郎はロボット
太郎と花子は恋仲
［呼出］
？＄Ｘは＄Ｙが好き
［表示］
｛〇＝１５０／７０（＄Ｘ＝太郎、＄Ｙ＝花子），？＝５０／７０（＄Ｘ＝次郎、＄Ｙ＝花子）｝
＝＝＝
：上で、「〇」は成立を、１５０は戻り値を、７０は閾値を、「？」は不成立（証拠不十分）を示す。
＞これにより、解ごとに成立する／しない程度や理由を呼び出し側の文脈に伝え、もしくは、利用者に示すことができる。
【０００９】
本発明はまた、請求項５として、
前記節が、好感、幸福、健康又は成功の原因に関する理論を表現したものである
請求項１から４のいずれか一項に記載のコンピュータプログラム
を提供する。
：「原因に関する理論」とは、例えば「成功する :- 成功するまでやめない; 」「＄Ｘは幸せだ :- ＄Ｘには理解してくれるパートナーがいる ; ＄Ｘには打ち込める仕事がある ; 」などである。
＞これにより、多くの人が推論結果に興味をもてるようになり、システムからの問いかけに対して本当の情報を提供するようになる。
【００１０】
本発明はまた、請求項６として、
前記論理プログラムにおける重み又は閾値が変数で表現されており、
表現された該変数が該条件において数値で束縛されている場合に、
該数値を重み又は閾値としてそれぞれ採用する
請求項１から５のいずれか一項に記載のコンピュータプログラム。
：「重みが変数（例えば、＄＜大文字一時＞）で表現されて」いる例としては、例えば、
「＄Ｘ１００ｇは＄Ｙｇの砂糖を含み甘い ：％１０ ＄Ｙ／＄Ｘ１００ｇは砂糖を＄Ｙｇ含む；（＄Ｚ／５）／＄Ｘ１００ｇはみかん汁を＄Ｚｇ含む；」等がある。＄Ｘ１００ｇが砂糖を１０ｇ以上含んでいればそれだけで甘いこと、たとえ砂糖を５ｇしか含んでいなくても「みかん汁」を２５ｇ以上含んでいれば重みが５＋（２５／５）＝１０となり、ヘッドが「＄Ｘ１００ｇは５ｇの砂糖を含み甘い」ということを簡潔に推論することができるようになる。
：「閾値が変数（例えば、＄＜大文字一時＞）で表現されて」いる例としては、例えば、
「＄Ｘ１００ｇは＄Ｙｇの糖分を含む ：％＄Ｙ ＄Ｍ／＄Ｘ１００ｇは砂糖を＄Ｍｇ含む；（＄Ｎ／５）／＄Ｘ１００ｇはみかん汁を＄Ｎｇ含む；」等がある。砂糖とみかん汁に含まれる糖分（Ｍ＋Ｎ／５）がＹ以上になれば、ヘッドの効果を簡潔に推論することができるようになる。
＞これらにより、推論規則の重みや閾値を用いた完結な表現力がますます向上する。
【００１１】
本発明はまた、請求項７として、
所定のルール中の重みの和、又は、所定の重みつき価値集合の重みの和が、
多く又は少なくなるように
利用者に関する文脈を更新できる会話（利用者への質問、質問を受けた応答、等を含む）を
利用者に対して実施していくコンピュータプログラム
を提供する。
：「所定のルール中の重みの和」とは、たとえばカゼである証拠となる症状（熱、せき、鼻水、・・・）の各所定重みの和が大きくなるように「熱がありますか？」「せきがでますか？」「鼻水がでますか？」・・・等と利用者に質問し、「あなたは熱がある」という文等を文脈に追加することにより、「あなたはカゼです」という診断（推論結果）に結び付けて、その解決策（例えば、「内科にいったほうがいいかも」）などを提案するような会話をしていくことができる。
：一方「所定の重みつき価値集合の重みの和」とは、利用者があらかじめ登録した設定ファイルに記憶された
以下のような情報をもとに、
重み（７０、７０、５０）の和が（例えば）より大きくなるように、
より大きな重みをもつ
「よき理解者の存在」や
「情熱をもってとりくめる仕事の存在」を証明できるような
推論規則集合を探し
（すなわち、
すでに主となっている知識源（主プログラム（Ｐｒｏｌｏｇの場合は事実とルール）の中からや、
候補知識源としてあらかじめ設定された主プログラム候補ＵＲＬリストや、
それらを検索できる外部サイトＵＲＬ等
から探し）、
それぞれの推論規則の条件部を直接あるいは間接的ないし再帰的に（他の推論規則をも組み合わせて遡って）証明できる
質問系列を利用者に対して実施していく（すなわち利用者専用の文脈に新たな事実を追加していく）ことである。
＝＝＝
＜％＊
７０／よき理解者の存在
７０／情熱をもってとりくめる仕事の存在
５０／よき職場環境の存在
＞％＊
＝＝＝
＞これにより、「所定のルール」や「所定の重みつき価値集合」に応じた自動対話を利用者と行いやすくすることができる。
【００１２】
本発明はまた、請求項８として、
なるべく早く又は少ない質問で、前記和が多く又は少なくなるように
利用者に質問をしていく請求項７に記載のコンピュータプログラム
を提供する。
：これは、条件に対応する質問結果の真偽を探索木等で事前にシミュレーションすることによって求めることができる。
：シミュメーションに時間がかかる場合は、各種の枝刈りをして、質問までにかかる計算時間をたとえば６秒以内に抑えることが可能である。
＞これにより、コストの少ない効率的な質問系列を利用者に対して提供することができる。
【００１３】
本発明はまた、請求項９として、
利用者ごとのメモリ（個別の定義のため、実行時の文脈の記憶のため、等）の内容に応じて
実行時にこれまでのものと切り替えて用いるコンピュータプログラム、又は、
実行時にこれまでのものに追加して用いるコンピュータプログラムを
決定することを特徴とするコンピュータプログラム
を提供する。
【００１４】
本発明はまた、請求項１０として、
利用者ごとのメモリ（個別の定義のため、実行時の文脈の記憶のため、等）の内容に応じて
実行時に検索して
これまでのものと切り替えて、又は、これまでのものに追加して実行すべき
コンピュータプログラム又は該コンピュータプログラムの検索範囲を定めた
ことを特徴とする
コンピュータプログラム
を提供する。
：「利用者ごとのメモリ」の内容により、切替と追加も使い分けることが可能であり、利用者ごとのメモリには、最後に採用したコンピュータプログラムも含むことができるため、採用される候補となるコンピュータプログラムの中に切替られるべきものか、追加されるべきものかを、そのコンピュータプログラムのプログラマが指定することができる。このことは、切替／追加のそれぞれ場合の検索範囲についても該当し、プログラマは各コンピュータプログラムが切り替えられる先のコンピュータプログラムの候補をＨＴＭＬの場合のように直接的・間接的に指定することができ、追加して実行する範囲についても同様である。
＞これにより、利用者ごと、コンピュータプログラムのプログラマごとに、好ましい設定や展開の範囲を指定することができる。
【００１５】
本発明はまた、請求項１１として、
利用者ごとのメモリ中又は実行するコンピュータプログラム中の価値の重みの相対的または絶対的定義によって
相対的順位付け又は絶対的重み付けをした価値の優先度に従って
より優先されるべき価値をより早く充たすように質問や誘導を行う
チャットボット用コンピュータプログラム
を提供する。
：以下は、相対的に定義した例であり、同じ行の「；」は等価性を示し、前の行を相対的価値が高いことを示す。
＝＝＝
＜％＊
よき理解者の存在；情熱をもってとりくめる仕事の存在
よき職場環境の存在
＞％＊
＝＝＝
：一方、以下は、絶対的に定義した例であり、「重み／内容」を示しており、重みが同じものは等価とみなす。
＝＝＝
＜％＊
７０／よき理解者の存在
７０／情熱をもってとりくめる仕事の存在
５０／よき職場環境の存在
＞％＊
＝＝＝
各価値（「よき理解者の存在」等）を「効果」（ホーン節のヘッド等）とする「推論規則」（ホーン節等）の「条件部」（ホーン節のボディ部）のうち、利用者文脈に事実（例えば「今日は晴れ」）として存在しない条件（「今日は晴れ」）について、展開する他の推論規則（例えば「今日は晴れ：−今雲がない；今日の天気予報は晴れ；天気予報はよくあたる；」等）がない場合には、直接「今日は晴れ？」等と質問し、展開する推論規則があり、そのほとんどの条件（例えば、「今日の天気予報は晴れ」「天気予報はよくあたる」の２つ）が利用者文脈に事実として登録されている場合には、例えば、残りの１つの条件である「今雲がない」を利用して「今雲がない？」という質問をチャットボットが利用者に投げかけて、「今日は晴れ」という価値の内容を間接的に証明して、「釣りにいけば？」という他の提案型会話ができるコンピュータプログラムの追加や切替につなげたりすることができる。
＞これにより、より重要な価値について、
より早く利用者に足りない条件（利用者が自ら満たせるもの（例えば、デートに行く文脈で、出かける前に歯をみがくこと、等））を示唆しかつその後利用者が自ら満たしたことを例えば選択肢（「１：みがいた、２：まだ」）等により入力させて利用者文脈に事実として追加したり、
すでに足りている関連事実を確認したり、
「あと□□をすれば、なんと〇〇ができる！」のような戦術的な推奨会話ができるような
チャットボットや同様の利用者インターフェースを構成することができる。
：なお、価値が達成されているかに関連する、それぞれの推論規則の条件が満たされているかどうかの自動確認や自動質問は、ＰＲＯＬＯＧ相当の推論規則の条件部を再帰的に展開して質問が必要な部分のみを特定して行うことができる。
：また、推論規則の条件の一つを、「〇〇を提案した」という形式にして、実際に利用者にチャットボット会話の中で提案するよう制御することによって、優先する価値についてすでに実現したことを意味するフラグの効果をもたせ、その価値ではなく「次に」優先すべき価値を実現するように会話を制御するようにすることもできる。
：この場合、例えば：「提案実施１  :- 鼻水が出る；くちゃみをする；熱がある；頭が痛い；「内科に行くことを提案した」という推論規則と、例えば：「各種提案実施  ：−  ４０／提案実施１  ；  ３０／提案実施２；」という推論規則又は同等の価値定義があることによって、
カゼであるか確認しかつ内科への通院等を勧める提案実施１と、
今日晴れであるか等を確認し今日釣りにいくことを勧める提案実施２と
を一つの価値定義（利用者定義ファイルや利用者文脈メモリ（外部コンピュータプログラムのコピーも含んでよい）のいずれにあってもよい）に共存させ、複数の分野・観点についての会話を利用者との一つのセッションに効率的に共存させることが可能になる。
＝＝＝
＜％＊
４０／提案実施１
３０／提案実施２
＞％＊
＝＝＝
【００１６】
本発明はまた、このようなコンピュータプログラムを用いた方法を提供する。
【００１７】
本発明はまた、このようなコンピュータプログラムを備える装置を提供する。
【図面の簡単な説明】
【００１８】
【図１】本発明による知識源（論理プログラム）の相互作用の例を示す図である。
【図２】本発明によるシステムの単純な動作例を示す図である。
【図３】本発明によりめざす汎用ＡＩシステムのアーキテクチャを示す図である。
【発明を実施するための形態】
【００１９】
最も有利な形態では、主プログラム（ＰＧ）となりうる論理プログラム側にも価値の重みが定義でき、利用者の定義ファイルや文脈メモリ（セーブしたときはファイルになる）にも「重み」をつけられる。
利用者定義＋文脈の総合得点が高まるようなシステムからの質問や誘導のありかたが実施される。
論理プログラムは、前述した特許文献で示すように、プログラム内の外部リンクの動的引用（ＬＯＲ）や、利用者文脈の動的書換能力をもつ。
汎用ＡＩの実行のために一時的（動的）にロードされる主プログラム（論理プログラム）は、価値観の他、起動頻度や重要度のパラメータをもち、価値を高めるための質問の頻度や、価値の間の衝突を調整することができるようになっている。
動的に(切替／追加）ロードされる主プログラム検索範囲の指定は、以下の種類がある。
１）主ＰＧ候補のＵＲＬリスト
２）利用者定義をわたすと主ＰＧ候補のＵＲＬリストを返す外部サーバーのＵＲＬ
３）利用者定義と利用者文脈そのものを渡すと最適主ＰＧそのもの、ＰＧ集合または候補ＵＲＬリストを返す検索サーバーのＵＲＬ
汎用ＡＩチャットボットという形態をとる場合には、ユーザー独自定義プログラム（例えばＰＹＴＨＯＮやＣ＃等）によるを優先的に実施できるように構成される。また、ユーザーがキーボード入力中の場合は、文脈の追加とみなして思考と出力を控える。
主プログラムは主プログラム自体の方針に沿って質問をし、ＡＩチャットボットの内部状態を変更しかつ利用者文脈を蓄積していく。
主プログラムは、解決したい価値の順番に従って、原因特定＞問題解決提案へと進む。
主プログラムの多くは以下のように解決したい価値の順位をもつ。
＜％＊
${利用者}は最高に幸せになる
${利用者]の一番大事な人が１００年間幸せに暮らす
${利用者}が人類の幸せに貢献する
＞％＊
主プログラムの多くは、解決したい価値につながる推論規則および仮定をもつ。
${利用者}は最高に幸せになる :- $Xは最高のパートナーと仕事を一生維持する; $Xは１００年生きる ;
$Xは$Y年生きる :- $Xは$Y年生きると信じている
利用者は１００年生きると信じている
主プログラムはなるべく高い「解決したい価値」を充たすようにチャットボット等として利用者に質問や提案を行う。
質問のフォーマットは多くの場合選択肢（番号つき）であるが、選択肢の内容（他の選択肢にない部分文字列）で回答することもできる。
価値の定義が、「＜＆＊」の場合は、「解決したい価値」は一つではなく複数見つけるようにする。
利用者文脈はコメントで追加されたタイムスタンプにもとづき１日でクリアされる。
企業向けの代表的なチャットボットはＣＦＯ、社内教育者、一般教育システムとして機能するが、一般向けは雑談にも用いられる。
【００２０】
図１は、本発明の一実施例のコンピュータプログラム（図示されない）による、利用者定義と利用者文脈の内容をもとにした、主プログラム（請求項１から１１のコンピュータプログラムとは異なる論理プログラム）の検索と切替と定義・文脈の書換による、重みを用いた汎用ＡＩの仕組みを説明する図である。
図２は、重みを用いた単純な論理（ただし、自然言語である英語がベース）の実施例を占めす図である。
図３は、本発明によって目指す汎用ＡＩのアーキテクチャを示す図である。
【符号の説明】
【００２１】
ＰＧ  主プログラムとなりうる論理プログラム（手続的に解釈すべき部分を含んでもよい）
【図１】
2020190857.tif 000003
【図２】
2020190857.tif 000004
【図３】
2020190857.tif 000005