図面 (/)

技術 コンピュータが対話によって推論するための方法、コンピュータプログラム及び装置

出願人 ナレルシステム株式会社
発明者 中村圭介
出願日 2016年1月20日 (5年9ヶ月経過) 出願番号 2016-009324
公開日 2017年7月27日 (4年2ヶ月経過) 公開番号 2017-130070
状態 特許登録済
技術分野 ストアードプログラム 特殊なプログラム実行装置
主要キーワード 事前固定 納得度 リニアサーチ クラウドサーバー 編集コスト 管理スタック 論理プログラミング 状態表現
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年7月27日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (2)

課題

解決手段

リテラルとして文字列に変数を埋め込んだ形式許容してPROLOGの機能の一部又は全部を実施可能なコンピュータプログラムであって、ルールヘッド又はボディの条件であるリテラルについて実行時に該リテラルの真偽又は該リテラルを真とする変数の値を利用者に問うて、利用者からの答えに従ってその後の処理を実施する。

概要

背景

かかる分野においては、従来から対話型推論システム(MYCIN等を元祖とする)が存在した。
しかし、PROLOG等の本格的な述語論理学に基づく推論システムではその対話の制御は、
推論を行う根拠となる論理プログラム(PROLOGソース等)や知識ベースプログラマ(知識を編集する権限をもつ利用者)が、
利用者(特に、結論選択肢や根拠を求めて質問する側の一般利用者)による(質問や前提条件の)入力の制御(自由入力のプロンプトや選択肢の提示等)をするために
print文等出力系コマンドやinput文等入力系のコマンド等、
多くのコードを入力しなければならなかった。
また、PROLOG等閉世界仮説を採用する処理系(下記、特許文献1のシステム)において、
真であるすべての事実(NOTを用いた場合はの事実でもよい)を網羅することは困難であり、コーディングコストが大きくなり、完全性健全性障害にもなっていた。
また、自由文の入力を許容する対話型システムにおいては、表記ゆれ等により、入力された内容と用意された知識形式とのミスマッチが問題となっていた。下記、特許文献1のシステムにおいては明示的な表記ゆれ吸収規則による知識の泣き別れを回避することも可能であったが、表記ゆれ吸収規則が用意されていない段階では回避することができず、また表記ゆれ吸収規則を用意するコストも少なくはなかった。

概要

対話型のエキスパートシステム運用するための知識ベースのコーディングを効率化する。リテラルとして文字列に変数を埋め込んだ形式を許容してPROLOGの機能の一部又は全部を実施可能なコンピュータプログラムであって、ルールヘッド又はボディの条件であるリテラルについて実行時に該リテラルの真偽又は該リテラルを真とする変数の値を利用者に問うて、利用者からの答えに従ってその後の処理を実施する。なし

目的

3)対話型システム一般において、入力を効率化し、表記ゆれが問題にならないようにすること、を目的とする

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

リテラルとして文字列に変数を埋め込んだ形式許容してPROLOGの機能の一部又は全部(少なくとも自動単一化機能と自動導出機能を含む)を実施可能なコンピュータプログラムであって、ルールヘッド又はボディの条件であるリテラルについて実行時に該リテラルの真偽又は該リテラルを真とする変数の値を利用者に問うて、利用者からの答えに従ってその後の処理を実施するコンピュータプログラム。

請求項2

前記リテラルがあらかじめ定めた形式の場合にのみ前記利用者に問う請求項1に記載のコンピュータプログラム。

請求項3

前記問うことを、コンピュータプログラムが後ろ向き推論により自動的に確認する前に行う請求項1または2に記載のコンピュータプログラム。

請求項4

前記問うことを、コンピュータプログラムが後ろ向き推論により自動的に確認した後に行う請求項1または2に記載のコンピュータプログラム。

請求項5

前記問うた際に、自動的に確認して得た解候補を削除できる請求項4に記載のコンピュータプログラム。

請求項6

前記問うた際に、自動的に確認して得た解候補を見ながら新しい解候補を追加できる請求項4又は5に記載のコンピュータプログラム。

請求項7

利用者から問われた質問又は問われた頻度の高い質問を一操作以上の、質問文全体入力よりコストの小さい操作で質問できるコントロール自動生成する機能を有する請求項1から6のいずれか一項に記載のコンピュータプログラム。

請求項8

リテラルとして文字列に変数を埋め込んだ形式を許容してPROLOGの機能の一部又は全部(少なくとも自動単一化機能と自動導出機能を含む)を実施可能なコンピュータプログラムであって、論理プログラムからの問合せに関わらず、利用者が前提条件ないし文脈として事実やルールを論理プログラム自体に一時的に又は永続的に追加して処理できることを特徴とするコンピュータプログラム。

請求項9

利用者から入力された文字列が一部の予約語合致した場合について、利用者からの質問とも、前提条件ないし文脈とも解釈せず、その予約語について定義された処理を行う、請求項1から8のいずれか一項に記載のコンピュータプログラム。これにより、対話型システムとして実現する場合の定型的な返答あいさつ、定見、所信、手続き的処理、等)を簡易に、効率的に、あるいは低コストで実現することができる。

請求項10

利用者から入力された文字列が5W2H形式(いつ、どこで、だれが、なぜ、なにを、どのように、どのぐらい)の疑問を表す表現であることを所定の予約語と照合して検出し、それぞれ対応する値種類(内容の種類であり、形式は文字列形式や、数値形式や、オブジェクトへのポインタやURI形式、等様々)のみで束縛代入)しうるように束縛制限した変数名に置き換えて以降の処理を行う請求項1から9のいずれか一項に記載のコンピュータプログラム。

請求項11

利用者が追加した知識により真であることを自動証明できる事実を自動的に利用者に示すことを特徴とする請求項1から10のいずれか一項に記載のコンピュータプログラム。

請求項12

利用者に真偽を問うてよい旨の印のついたのあるリテラルについて、利用者に問わずに真と仮定した解集合(「・・・なら〜」の集合等)を提供する請求項1から11のいずれか一項に記載のコンピュータプログラム。

請求項13

WEBサーバー協働して対話サービスを提供する請求項1から12のいずれか一項に記載のコンピュータプログラム。

請求項14

所定観点(デフォルトは数又は量であってよい)についての程度を表す表現による(「どのぐらい?」、「どれぐらい○○?」、「どんだけ○○?」、等)所定の質問(利用者から又はコンピュータプログラムから)に対して所定観点(デフォルトは数又は量であってよい)についての程度の順序関係を表した系列内のいずれかの一項と同じ程度、いずれかの一項以上の程度、いずれかの一項以下の程度、いずれかの一項を超える程度、いずれかの一項未満の程度又はそれらの組み合わせである程度を利用者からの入力、コンピュータによる記憶又はその両方に基づいて定義して返す請求項1から13のいずれか一項に記載のコンピュータプログラム。

請求項15

請求項1から14のいずれか一項のコンピュータプログラムを用いた方法。

請求項16

請求項1から14のいずれか一項のコンピュータプログラムを用いた装置。

技術分野

0001

本発明は、コンピュータ対話によって推論するための方法、コンピュータプログラム及び装置に関する。

背景技術

0002

かかる分野においては、従来から対話型推論システム(MYCIN等を元祖とする)が存在した。
しかし、PROLOG等の本格的な述語論理学に基づく推論システムではその対話の制御は、
推論を行う根拠となる論理プログラム(PROLOGソース等)や知識ベースプログラマ(知識を編集する権限をもつ利用者)が、
利用者(特に、結論選択肢や根拠を求めて質問する側の一般利用者)による(質問や前提条件の)入力の制御(自由入力のプロンプトや選択肢の提示等)をするために
print文等出力系コマンドやinput文等入力系のコマンド等、
多くのコードを入力しなければならなかった。
また、PROLOG等閉世界仮説を採用する処理系(下記、特許文献1のシステム)において、
真であるすべての事実(NOTを用いた場合はの事実でもよい)を網羅することは困難であり、コーディングコストが大きくなり、完全性健全性障害にもなっていた。
また、自由文の入力を許容する対話型システムにおいては、表記ゆれ等により、入力された内容と用意された知識形式とのミスマッチが問題となっていた。下記、特許文献1のシステムにおいては明示的な表記ゆれ吸収規則による知識の泣き別れを回避することも可能であったが、表記ゆれ吸収規則が用意されていない段階では回避することができず、また表記ゆれ吸収規則を用意するコストも少なくはなかった。

先行技術

0003

特願2013−87008

発明が解決しようとする課題

0004

したがって、本発明は、1)対話型のエキスパートシステム運用するための知識ベースのコーディングを効率化すること(例えば、ゴール又はサブゴールとなる命題真偽を利用者に問う全く別途のコーディングを不要とすること)。2)PROLOG等述語論理の扱える推論システムにおいて真となる事実の網羅(完全性)等、知識の事前編集負担を軽減して運用を効率化をしながら(閉世界仮説下又はそれ以外の解釈方針下で)健全性を損なわないようにすること。3)対話型システム一般において、入力を効率化し、表記ゆれが問題にならないようにすること、を目的とする。

課題を解決するための手段

0005

かかる目的のため、


(1)本発明は、

リテラルとして文字列に変数を埋め込んだ形式を許容して
PROLOGの機能の一部又は全部(少なくとも自動単一化機能と自動導出機能を含む)を
実施可能なコンピュータプログラムであって、
ルールヘッド又はボディの条件であるリテラルについて
実行時に該リテラルの真偽又は該リテラルを真とする変数の値を
利用者に問うて、
利用者からの答えに従ってその後の処理を実施する
コンピュータプログラムを提供する。

ここで、
「ルールのヘッド又はボディの条件であるリテラル」とは、
実質的にゴール又はサブゴールとなるものを含んでよい。

また、
「利用者」とは、PROLOGの論理プログラムに対して質問を投げかけた利用者、
論理プログラムを編集する権限を有する利用者(オリジナル著作権者編集著作権者、二次的著作権者、等)、
質問を投げかける直前に前提条件(一時的に必要なルールや事実)を入力した利用者又は補助利用者
(エキスパートシステムとして利用している場合の利用アシスタント専門家医者弁護士等))、等を
含む。
「利用者」が「論理プログラムを編集する権限を有する利用者」の場合、その利用者が答えを容易するまでにタイムラグがあってもよく、
「その後の処理」が「論理プログラムに対して質問を投げかけた利用者」宛ての、そのタイムラグ後のメール通知(論理プログラムが編集(知識追加)された旨、その編集により新たに可能になった推論内容や答え、その編集により対話が継続可能になった旨、等)を含んでいてもよい。

また、
「問う」とは、例えば、ダイアログボックス入力待ちコンソール音声待ちプロンプトを、
質問の入力に用いた端末に新たに表示・音声出力する形式でもよく、
あるいはネットワークを介して別の端末から表示したり、
人型ロボット等の物理インターフェースを介して表示/出力したりする形でもよく
その後に答えとなる入力(コントロールボタン等のマウス操作キーボード操作画面タッチ、等)や
音声等を待って元の問うた制御文脈(たとえばSLD導出過程の一点やその他の推論方式における推論過程の一点)に
返す形でもよい。

なお、PROLOGに倣った処理系の場合、追加される知識(事実や文字列)は、元の論理プログラムの最終行の後に
単純に行追加することにより、
動的に追加された知識をその後の推論(その質問に対する処理等)にも生かすこと可能である。

このように動的に追加された知識は、利用者の選択により、
その質問のためだけあるいはその後の一定時間以内にされる質問集合のためだけの
一時的な文脈(前提条件と呼ぶこともできる)とすることもでき、
その後永久的に参照すべき保存版の(例えば、よくある典型的な問題を処理する)知識としたりすることも明らかに可能である。

これにより、
利用者が認識している事実(詳しい、新しい、利用者にとって好ましい、等)を
反映した、より健全でより完全な半自動推論処理(導出、証明、解探索、等)が可能となる。

最も典型的には、
リテラルの前後に所定の記号(例えば「?」)が存在するときに、通常の自動確認後ろ向き推論)の後、falseの場合のみ
本当はtrueでないか
(すなわち、閉世界仮説下のありがちな弊害(事実列挙不足等)でないか)問うようにする。
別の実施形態では、true/falseのいずれの場合にも改めてtrue/falseを問うように設計することができる。
また、リテラルに変数が含まれる場合に
モーダルダイアログを表示して
真となる解組を利用者が動的に追加したり削除したり
(解組候補の全体/部分集合を)承認したりできるように
コンピュータプログラムを設計することもできる
(追加する場合は解組候補として値組(例えば、($X,$Y)=(太郎,花子)と($X,$Y)=(太郎,花子))が重複しないように
コンピュータプログラムが自動チェックすることも当然可能である)。

ここで、解組「候補」の集合は、
例えば、PROLOGのホーン節と等価な意味論をもつルールのボディ(複数の条件の系列からなる)の
途中の条件までを充たした
暫定的な変数束縛情報(複数の変数に対する束縛値の組(一つ又は複数))とすることができる。


(2)本発明はまた、

前記リテラルがあらかじめ定めた形式の場合にのみ
前記利用者に問う
コンピュータプログラムを提供する。

例えば、リテラルの先頭に「?」がついている論理プログラムの場合以下のようになるが、末尾でもよい。
===
$Aと友達:-$Aと仲がよい,?$Aとは長いつきあい
太郎と仲がよい
次郎と仲がよい
===

これにより、
(閉世界仮説により、)真の場合がすべて論理プログラムに定義(網羅)できていると
プログラマが考えている場合には「?」をつけずに
真の場合が網羅されていないとプログラマが考えている場合には「?」をつける等して、
論理プログラムの完成度網羅度)に応じた、「プログラムからの(利用者あるいは外部への)問い」の制御が可能となる。

なお、閉世界仮説を採用しない場合には、
===
1.「不明」という値を許容する
(この場合、「!今日は雨」という事実や「?今日は雨」という事実を論理プログラムの一行として許容し、
「?今日は雨」については上記ヘッドに「?」がある場合と同様として利用者に真偽を問う仕様とする)、
2.利用者からの「不明」という回答を許容して一律に偽側又は真側とみなす
===
等とする解釈も可能である。

また、利用者によるオプション選択GUI等)で、
プログラムに出現するすべてのリテラルについて「問う」ことを強要したり、
逆に「?」が先頭についているリテラルについても「問わない」ことを強要したり、
することも可能であり、いずれも一定の有用性を有する。

なお、上の例では、ボディ内に「?」が含まれているが、ヘッドの先頭に「?」がある場合は、
例えば、
ボディの条件を充たすようなヘッド内各変数(上の例では$Aのみ)の解候補集合を自動で求めた「後」に、
改めてのヘッド内各変数の解候補集合(の健全性(間違っていないか)及び完全性(不足していないか))について
コンピュータが利用者に問うて手動での追加等を行えるという
論理プログラム解釈としてもよい。


(3)本発明はまた、

前記問うことを、
コンピュータプログラムが後ろ向き推論により
自動的に確認する前に行う
コンピュータプログラムも提供する。

これにより、真とわかった命題の後ろ向き推論を省略するモード等、
計算コストの節約を実現できる場合がある。


(4)本発明はまた、

前記問うことを、
コンピュータプログラムが後ろ向き推論により
自動的に確認した後に行う
コンピュータプログラムも提供する。

これにより、推論により適正に近くなったデフォルト解候補を示すことができ、
問われた利用者の編集コスト(解候補の加減操作)を節約できる。


(5)本発明はまた、

前記問うた際に、
自動的に確認して得た解候補を削除できる
コンピュータプログラムも提供する。

これにより、
確認に用いた論理(事実やルール)の誤謬による解等を
事後的に手動で排除することが可能になる。


(6)本発明はまた、

前記問うた際に、
自動的に確認して得た解候補を見ながら新しい解候補を追加できる
コンピュータプログラムも提供する。

これにより、デフォルト解候補により編集コストを節約しながら、
追加する解候補が重複となることを目視でも防ぐことができる。


(7)本発明はまた、

利用者から問われた質問又は問われた頻度の高い質問を
一操作以上の、質問文全体入力よりコストの小さい操作で質問できるコントロール自動生成する機能を有する
コンピュータプログラムも提供する。

「一操作」とはマウスワンクリックキーボードの[ENTER]やその他の物理入力装置による単純な操作をいう。また、自動コンプレション(後続文字列補完)を一文字から行える場合(論理プログラム全体のリテラル集合解析等による)も含む。
「一操作以上の質問文全体入力よりコストの小さい操作」には、2文字以上入力した段階での完璧コンプレションやツリー形式補完文字列選択UIが含まれる。
「自動生成」は、処理ログログ解析等により明らかに可能である。
「コントロール」は問われた頻度等に基づいてランキング形式等で並んで表示されてもよい。

これにより、表記ゆれの解消、入力負担の軽減、新知識化のコスト軽減(前提条件の提案や永続化した(ディスクを対象とした)保存等)が容易となる。


(8)本発明はまた、

リテラルとして文字列に変数を埋め込んだ形式を許容して
PROLOGの機能の一部又は全部(少なくとも自動単一化機能と自動導出機能を含む)を
実施可能なコンピュータプログラムであって、
論理プログラムからの問合せに関わらず、
利用者が前提条件ないし文脈として
事実やルールを論理プログラム自体に一時的に又は永続的に追加して処理できることを特徴とする
コンピュータプログラムも提供する。

これにより、一時的に想定した場面を表す事実やルールに応じた結論(一時的に追加した場合)を導いたり、
典型的な場面を表す事実やルールを追加した論理プログラムを
元の論理プログラムの派生バージョンであるライブラリとして記憶したり共有したり(アセット化)できる。

0006

(9)本発明はまた、

利用者から入力された文字列が
一部の予約語合致した場合について、
利用者からの質問とも、前提条件ないし文脈とも解釈せず、
その予約語について定義された処理を行う、
コンピュータプログラムも提供する。

これにより、対話型システムとして実現する場合の
定型的な返答あいさつ、定見、所信、手続き的処理、等)を
簡易に、効率的に、あるいは低コストで実現することができる。

なお、対話型システムとしての応答性やホスピタリティや利用者からの信頼増し
システムのぶっきらぼうさを減らしていくために、
質問をする立場の利用者からの入力(とりわけ質問文)のうち
論理プログラムにより応答できなかった内容について、
「論理プログラムを編集する権限を有する利用者」に自動的に示す等して、
応答できなかった内容を応答可能にする知識を優先して論理プログラムに編集追加するよう
コンピュータプログラムが自動的に促すようにする手段を備えることがこの場合に特に有利である。


(10)本発明はまた、

利用者から入力された文字列が
5W2H形式(いつ、どこで、だれが、なぜ、なにを、どのように、どのぐらい)の
疑問を表す表現であることを所定の予約語と照合して検出し、
それぞれ対応する値種類(内容の種類であり、形式は文字列形式や、数値形式や、オブジェクトへのポインタやURI形式、等様々)のみで束縛(代入)しうるように束縛制限した変数名に置き換えて以降の処理を行う
コンピュータプログラムも提供する。

これにより、対話型システムとして実現する場合に、
変数を束縛する値の範囲や種類を、
論理プログラミングに詳しくない一般的な質問者が簡易に指定することを容易にする。

a. 所定の予約語変換規則を論理プログラムで明示的に定義した例を以下に示す。
===
だれが⇒${誰}が
どなたが⇒${誰}が
どいつが⇒${誰}が
それはなぜ=${何故}
===

b. また、上記予約語変換規則に基づく文字列の変換例を以下に示す。
===
だれがエサをやったの? ⇒ ${誰}が犬にエサをやったの?
===

c. また、束縛可能な値(内容)の規則を論理プログラムで明示的に定義した例を以下に示す。
===
${誰}←{太郎|花子|家のロボット|・・・}
${何故}←{暖だから|感情だから|相手が先に挨拶をしたから|・・・}
===


(11)本発明はまた、

利用者が追加した知識により真であることを自動証明できる事実を自動的に利用者に示すことを特徴とする
コンピュータプログラムを提供する。

これによる有利な効果を以下に挙げる。
===
・一般的な対話形式成立しやすくなる。
クライアントからの明示的な質問を要しない能動的なコンサルティングが成立しやすくなる。
新しく証明可能になった事実をいちいち利用者が質問したり、知識を追加する前の(真であることを証明可能な)事実集合
知識を追加した後の集合との差分を利用者が明示的に分析したりする手間が省ける。
・コンピュータからの問い(ある意味の誘導尋問)によって知識を追加した/する(=認めた/認める)ことによる副作用
注意すべき点・TODO(技術上、正確性の保証上、用途上、検討上)等を(真偽や解とともに)利用者に体系的に示すことが
手軽に簡潔に可能となる。

以下に、この簡単な例を示す。
===
<元の知識>
$Aと友達:-$Aと仲がよい,?$Aとは長いつきあい
太郎と仲がよい

<前提条件(文脈)として利用者が追加する内容>
太郎とは長いつきあい

<利用者に自動的に示す内容>
「太郎と友達」なんですね
===

以下に、実施形態に示したシステムを用いての、上記発明の簡単な実現方法を示す。
===
テップ1)知識を加えないで求めた$A?(証明可能な事実の全体集合)の答えを求める。
ステップ2)知識を加えた後に求めた$A?(証明可能な事実の全体集合)の答えを求める。
ステップ3)二つの答えの差分Xを、「Xなんですね?」等と表示する。
===


(12)本発明はまた、
利用者に真偽を問うてよい旨の印のついたのあるリテラルについて、
利用者に問わずに真と仮定した解集合(例えば、「・・・(仮定内容)なら〜(結論内容)」の集合等)を提供する
コンピュータプログラムを提供する。

これは、仮定法形式「・・・なら〜」の解を提供することに相当し、事実を確認してから結論を出すよりも
場合分けを含む知識そのものを提供したほうが
コミュニケーションコスト的にも利用者の納得度でも優れている場合に有利である。

ここで「仮定した解集合」とは、例えば、”「明日晴れ」なら「釣りに行くべき」”等といった、
”〜なら・・・”形式の集合(あるいはリスト)等として表現することができる。

これにより、利用者から(場合によっては個人情報も含まれうるような)知識を引き出すことなく
傍受されるリスクを減らしながら)、利用者に必要な知識や情報や結論・根拠を
実質的に提供して問題解決につなげることを可能とする。


(13)本発明はまた、

WEBサーバー協働して対話サービスを提供する
コンピュータプログラムであることが有利である。

これにより、スケーラブルサービス停止時間の短い対話型エキスパートシステム等を
効率的に運用することができる。

また、個人信念、知識、情報、優先順位価値観を含む)等を、インターネットにより、
対話形式で広範囲に、安価に、永続的に伝えることを可能とする。

また、メールシステムとも連動・補完しあって、対話した実績ログ管理や、質問に答えるため不足していた知識の分析(答えられなかった質問そのものの集合でもよい)と論理プログラム編集権のある利用者への通知
自動的に行うことが有利である。


(14)本発明はまた、

所定観点(デフォルトは数又は量であってよい)についての程度を表す表現による
(「どのぐらい?」、「どれぐらい○○?」、「どんだけ○○?」、等)
所定の質問(利用者から又はコンピュータプログラムから)に対して
所定観点(デフォルトは数又は量であってよい)についての程度の順序関係を表した系列内の
いずれかの一項と同じ程度、
いずれかの一項以上の程度、
いずれかの一項以下の程度、
いずれかの一項を超える程度、
いずれかの一項未満の程度又は
それらの組み合わせである程度を
利用者からの入力、コンピュータによる記憶又はその両方に基づいて
定義して返す
コンピュータプログラムを提供する。

これにより、
順序」という、
記述量あたりの情報量(解釈後の)が最も大きい形式で
程度についての知識を表現することが可能となり、
意味(情報)あたり記述量を節約することができ、同時に、
知識の意味的矛盾がおきにくい(知識の意味的矛盾をチェックしやすい(項目数をNとするとオーダー計算でO(N^2)程度)ことにもよる)形式で記述することができる。

例えば、以下のような問いについての答えを、どのように定義し、どのように答えるかの例を示す。
===
(利用者からの問い)
水はどのぐらい重い?

(論理プログラム中での定義(論理プログラム編集権限のある利用者が行う))
<重い




空気
>重い

(上記論理プログラムを参照した本発明によるコンピュータプログラムの答え)
→木よりも重い
→砂よりも軽い

上記のような答えは、本発明を参考にした当業者リニアサーチアルゴリズムを2回実施することなどにより
明らかに求めて表示することができる。


(15)本発明はまた、

こうしたコンピュータプログラムを用いた方法を提供する。


(16)本発明はまた、

こうしたコンピュータプログラムを用いた装置を提供する。

図面の簡単な説明

0007

図1は、本発明の一実施例における論理プログラムの例である。
図2は、図1の論理プログラムに基づいてリンクを表示し、一般利用者からの質問に対し、逆問いによって正しく答えようとしている画面の例である。

0008

一発明者による以下の特許明細書(上記、特許文献1からの抜粋)の実施の形態に、
本発明に特有の機能を追加で実装することにより実施するものとする。
以下の引用は、本明細者の実施可能性面、進歩性面の補足目的も含まれる。
===
<特許文献1の課題>自然言語に変数を埋め込む形式で表現した知識をコンピュータでPROLOG同様に自動処理することを実現可能にし、述語論理レベルの網羅的な演繹や解探索(自動単一化処理、自動導出処理、そのための後ろ向き推論、バックトラック)を実現すること。
変数が格構造に縛られない利点を十分に生かし、処理を高速化し、証明や学習等のため結果を見やすく表示すること。
<特許文献1の解決手段(概要)>
人間が、PROLOGにおける「事実」、「ルール」又は「ゴール」の入力にあたり、PROLOGにおける「リテラル」にあたる内容の定数部分と変数部分とを文字種デリミタ又はエスケープ文字により区別してコンピュータに入力し、
コンピュータが、文の主部、述部等の境界またがりうるものとして変数を取扱いながら、その入力に含まれる文の自動単一化処理、自動導出処理又はその両方を行う。
変数を含みうる文であるパターンと、変数を含まない文である定数文字列との単一化を、パターンに最初に出現する変数の最長一致解を求めて、該最長一致解の文字列を後ろから空文字になるまで削る過程を該パターンに代入してできる
各新たなパターンについて、該新たなパターンができる前提となった削る過程の解の各状態をそれぞれ記憶しながら、再帰的に同様に変数がなくなるまで繰り返し、変数がなくなったときに単一化した各途中の解の状態を結合して各単一化の答えを得る。
パターン中の固定文字列が最長一致解を削る過程の文字列に含まれるか等を検出して高速化する。
パターン対パターンの単一化は語頭語尾の一致に着目して高速化する。全探索の具体的手法も提供する。
<特許文献1の解決手段(全文、ただし一部本発明と混同しないように加筆修正)>
(0009)
本発明は、かかる課題に鑑みてなされたものであり、特許文献1の請求項1は、
コンピュータが、論理型プログラミング言語PROLOGの機能の一部又は全部を自動的に行う方法であって、
人間が、PROLOGにおける「事実」、「ルール」又は「ゴール」の入力にあたり、PROLOGにおける「リテラル」にあたる内容(以降、「文」と呼ぶ)の定数部分と変数部分とを文字種、デリミタ又はエスケープ文字により区別してコンピュータに入力すること、
コンピュータが、文の主部、述部、主語述語目的語、補語、連用修飾語連体修飾語又は文の境界をまたがりうるものとして変数を取扱いながら、上記「事実」、「ルール」又は「ゴール」の入力に含まれる文の自動単一化処理、自動導出処理又はその両方を行うこと、
を特徴とする処理方法を提供する。
ここで、「人間が、・・・定数部分と変数部分とを文字種、デリミタ又はエスケープ文字により区別してコンピュータに入力する」とは、人間が本発明によるアプリケーションソフト(処理系)の入力欄内やコマンドプロンプト後等に(フロントエンドプロセッサ等を介して又は介さずに)直接入力すること、インターネットブラウザ文章編集ソフト等からコピーペーストカットペーストすること、別途入力して保存してあったテキストファイル等を読み込んだり、引用したり、参照したりすること等を含む。
また、「コンピュータが、文の主部、述部、主語、述語、目的語、補語、連用修飾語、連体修飾語又は文の境界をまたがりうるものとして変数を取扱い」とは、日本語等の助詞等や英語等の前置詞等を介した明示的な区切りのある格構造(構文解析結果意味解析結果階層構造に該当するものを含みうる)の境界(明示的な区切り)をまたがりうるだけでなく、英語等の例えばSV形式・SVO形式・SVOO形式・SVOC形式のSとVの境界、VとOの境界、VとCの境界等をまたがり得、重文や複文の文の境界等をもまたがり得るものとして取り扱うモードを含む(逆に、取り扱わないモードがあってもよい)。これらの場合、変数に入り得る解候補として、文全体や、文全体を構成する文字列から文としての文法構造による区切りの単位を無視して任意の部分文字列を抽出したもの、さらには階層的な参照構造をもつ複文・重文やもっと長い論文等の全体や、さらにそれらの任意の部分文字列が対象となる(なお、「文の境界」をもまたがりうるものとして取り扱う場合であって、知識源の集合を扱う(例えば、ファイルにまとめた知識源の集合を一括して読み込む、書き込む、参照する、等する)場合には、文の境界「以外」に知識源どうしの区切りが必要となるため、このような区切りとして、例えば、改行コードタブコード等を用いることができる)。
これにより、自然言語に変数を埋め込む形式で表現した知識や情報も、普通の文章形式の知識や情報も、それらの間での現実的な相互活用の可能性が十分に開けた一元的な知識源として、両者を特に区別せずにコンピュータで自動処理することが可能になる(上記「困難性A」の克服)。
「現実的」な相互作用の可能性が「十分」に開けるためには、コンピュータによる自動処理が検索処理系として備えるべき1)検索式(パターンを指定する表現)の簡便性、2)十分な適合率(解の正確性)、3)十分な再現率(解候補を抽出する上での網羅性)を備えていなければならないが、本発明では、文中の自由な(すなわち、文法や意味の区切りに制限されない)場所に変数(複数種類でもよく複数回でもよい)の埋め込みを許容し(簡便性を確保し)つつも、PROLOGの知識処理手順(と内在する知識解釈方針)に基本的に沿うことにより、他の処理系におけるようなハイブリッドな知識処理手順(と、そのハイブリッドな処理手順に対応する複雑な知識解釈方針)によって起こりうる適合率(解の正確性)低下のリスクを回避しつつ、「文の主部、述部、主語、述語、目的語、補語、連用修飾語、連体修飾語又は文の境界をまたがりうるものとして変数を取扱」うことにより、自然言語の区切り表現(読点句読点、カッコ、コンマピリオド、等)や修飾的フレーズ形容詞句副詞、必須でない格の表現、等)による指定パターンの泣き別れ出現が原因となる不当な不一致正規表現的なアンマッチ)を防ぎ、格構造の明示されない表層的な文字列表現間(検索式と知識源の間)での一定の再現性(解候補を抽出する上での網羅性)を確保可能としている。また、知識源となった自然言語の正確な文脈(前後の文字列)を損ないにくい一体的・連続的な引用・抽出(変数への解候補としての)も可能となり、結局、その透明性・単純性により推論の実質的な健全性(根拠や推論経緯の正当性)の確認・検証が手軽かつ容易となり、根拠がいつも明確であるという現実的な安心感を利用者にもたらし、全体として、変数が格構造に縛られない(さらに、格構造のルール(出現順序等)について知らなくてもよく、引数順番が間違っているかもしれないという不安もない)という仕様の利点を十分に生かしきることを可能にする。
なお、本発明は日本語(一文字の情報量が多く、単語の間にスペースがない)を第一の対象にしているため、文字を処理単位、区切りの単位としている内容が多いが、英語等(一文字の情報量が少なく、一文文字数は多いが、単語の間にスペースのあるもの)は、スペースで区切った単語を単位として同様の処理をすることも可能である。
(0010)
また、特許文献1の請求項2は、
前記自動単一化処理において、
変数を含みうる文であるパターン(定数部分と変数部分とを文字種、デリミタ又はエスケープ文字により区別したもの)と、変数を含まない文である定数文字列との単一化を、
パターン(例:$Xと$Yは$Zが好き)に最初(又は最後)に出現する変数(例:$X)の最長一致解(例:太郎と次郎)を求めて、該最長一致解の文字列を後ろ(又は前)から空文字になるまで削る過程(例:太郎と次郎>太郎と次>太郎と>太郎>太>空)を該パターンに代入してできる各新たなパターン(例:「太郎と次郎と$Yは$Zが好き」>「太郎と次と$Yは$Zが好き」>「太郎とと$Yは$Zが好き」>「太郎と$Yは$Zが好き」>「太と$Yは$Zが好き」>「と$Yは$Zが好き」)について、該新たなパターンができる前提となった削る過程の解の各状態($X=太郎と次郎>太郎と次>太郎と>太郎>太>空)をそれぞれ記憶しながら、
再帰的に同様に変数がなくなるまで繰り返し、
変数がなくなったときに単一化した各途中の解の状態(例:真($X=太郎と次郎,$Y=三郎),真($X=太郎,$Y=次郎と三郎))を結合して各単一化の答え(例:答え1=($X=太郎と次郎,$Y=三郎),答え2=($X=太郎,$Y=次郎と三郎)を得ることを特徴とする
特許文献1の請求項1に記載の処理方法を提供する。
ここで、「(又は最後)」は「(又は前)」に対応しており、最後に出現する変数から代入するときは、削り始めが前からとなる必要があることを意味する。
これにより、最長一致解から最短一致解に至るすべての可能性について確実に網羅した各解候補の状態を検証し、網羅的な答え(さらに絞りこまれた解候補の集合)を提供することが可能になる。
(0011)
また、特許文献1の請求項3は、
空文字になるまで徐々に削るかわりに、別途求めた最短一致解までしか徐々に削らないことを特徴とする
特許文献1の請求項2に記載の処理方法を提供する。
これにより、最短一致解未満の長さから「空」文字までの解探索の計算を節約することができ、自動処理の高速化が可能となる場合がある。
(0012)
また、特許文献1の請求項4は、
空文字になるまで徐々に削る際、
パターン中で該変数が最初(又は最後)に出現した直後(又は直前)の固定文字である1文字C(直後(又は直前)が別の変数でその解が空文字でないときは該別の変数に解候補として代入されている解候補の最初(又は最後)の1文字C)が該最長一致解に含まれる場合に、
該最長一致解の文字列の最後(又は最初)からそのCに最初にあたるまでの部分文字列をそのCを含め削ることを特徴とする
特許文献1の請求項2又は3に記載の処理方法を提供する。
ここで、「(又は最後)」は「(又は直前)」に対応しており、最後に出現する変数から代入するときは、削り始めが前からとなる必要があることを意味する。
これにより、変数の直後(又は直前)の固定文字にマッチしない解候補の列挙とその解候補を前提とした探索を節約することができ、自動処理の高速化が可能となる場合がある。
(0013)
また、特許文献1の請求項5は、
前記自動単一化処理又は自動導出処理において、
前記「ゴール」(「サブゴール」を含む。以下同じ)となる束縛情報を求める際、
該「ゴール」を構成する各文について独立して束縛情報を求め
各束縛情報の積集合が空でない場合に戻り値真とその積集合を返す
特許文献1の請求項1から4のいずれか一項に記載の処理方法を提供する。
ここで、束縛情報とは、各変数に同時にそのような解候補を代入してみたか/すべきかということを示す情報である。各変数への一つの束縛の仕方を示す束縛情報は、「,」をAND結合と解釈することにより、「変数名1=値1,変数名2=値2,・・・,変数名N=値N」といったリスト形式で表現することができる一方、複数の束縛の仕方は、そのようなリストの集合として、あるいは、「,」ではなくAND/OR結合を明示して複数束縛間の共通部分をくくりだした形や、複数束縛の全体を標準化した連言標準形選言標準形で表現することができる。
これにより、同時に満たすべきパターン(文)が複数あり、パターン(文)間で同名の変数には同じ解が入るべきとする問題形式の場合(例えば、ユーザからのそのようなAND結合問合せや、ルールのボディ部に複数の文がある場合)に、ルールのより右側のパターンについて、より左側のパターンの各単一化結果ごとに多大な全文探索処理を無駄に繰り返す可能性がすくなくなり、ボディ部をバックトラックしながら深さ優先探索する非効率(変数を自然言語に埋め込む形式においてより顕著な非効率)を回避し、同時に満たすべき各パターンごとの処理を単純化することができる。また、推論過程の表示や検証(完全性や健全性)をわかりやすく、容易にする。また、ルールの意味として必要な直観にとって余計であり定義されるべきでなかった順序性(ボディ部の文間の)が推論過程に副作用を与えることを防ぐことができる。
(0014)
また、特許文献1の請求項6は、
前記自動単一化処理又は自動導出処理において、
前記「ゴール」となる束縛情報を求める際、
既存の束縛情報を最初に空とし、
「ゴール」が含む文集合を、既存の束縛情報の適用下で該一文が真となりうるかと該なりうるための追加の束縛情報について自動計算して該追加の束縛情報を該既存の束縛情報に加えながら該一文を除いて再帰的に小さくしていき、
真となりうるまま該文集合が空集合になったときの既存の束縛情報を「ゴール」となる束縛情報とする
特許文献1の請求項1から4のいずれか一項に記載の処理方法を提供する。
ここで、「再帰的に小さくしていき」とは、再帰が深くなるほど文集合が小さくかつ束縛情報が複雑になる(より多くの変数が束縛され、束縛する値の範囲がより絞られる)よう、例えば、C言語再帰呼び出しをする処理や、独自に宣言し定義した深さ優先探索用のスタック構造構造体の配列とスタックポインタ等)によって同等の再帰的処理を実現することをいう。
これにより、変数を自然言語に埋め込む形式で表現された、同時に満たすべき複数パターンのAND結合からなるオープンエスチョンを自動処理する問題を、より単純かつ再帰的な同一構造を持つ部分問題へとシンプルに変換し、推論過程の表示や検証(完全性や健全性の)を容易にする。
(0015)
また、特許文献1の請求項7は、
前記自動単一化処理又は自動導出処理において、
変数を含まないパターンと変数を含まない事実との単一化を行う場合、
パターンと事実が文字列として一致する場合に真を返す、又は
パターンと事実が文字列として一致しない場合に偽を返す
特許文献1の請求項1から6のいずれか一項に記載の処理方法を提供する。
これにより、シンプルかつ迅速に探索を行うことができる。
なお、「変数を含まない事実」が句点等で区切られた複数の文を含む場合。「文字列としての一致」は、パターンの文字列が事実の文字列の部分に一致することであってもよいとするモードを設けることもできる。
これにより、同型の複数の情報を一つの事実にまとめて表現して探索の対象とすることができる。また、複数要素間のなんらかの順序性(例えば、大きさ、貴重さ、古さ・・・等)も表現しやすくなる。
(0016)
また、特許文献1の請求項8は、
前記自動単一化処理又は自動導出処理において、
変数を含まないパターンとホーン節の変数を含まないヘッド部との単一化を行う場合、
パターンとヘッド部が文字列として一致する場合に、該ホーン節のボディ部をサブゴールとして特許文献1の請求項5又は6に記載の処理方法を適用した結果を返し、
一致しない場合に偽を返す
特許文献1の請求項1から7のいずれか一項に記載の処理方法を提供する。
これにより、変数を自然言語に埋め込む形式で表現するルールのヘッドが変数を含まない場合の健全な機械的解釈と、シームレスでわかりやすくかつシンプルで統一的な処理メカニズムと、対応する推論過程の説明を与えることができる。
(0017)
また、特許文献1の請求項9は、
前記自動単一化処理又は自動導出処理において、
変数を含まないパターンと変数を含むヘッド部をもつホーン節との単一化を行う場合、
特許文献1の請求項2から4のいずれか一項に記載の処理方法における「定数文字列」として当該パ
ターンを用いかつ同処理方法における「パターン」として当該ヘッド部を用いて処理して求めた各束縛情報について、
当該ホーン節のボディ部に適用したものを特許文献1の請求項5又は6に記載の処理方法の「サブゴ
ール」として処理した結果が真となるものが存在すれば真を返す、又は
存在しなければ偽を返す
特許文献1の請求項1から8のいずれか一項に記載の処理方法を提供する。
これにより、変数を自然言語に埋め込む形式で表現するルールのヘッドが変数を含み、このルールを起動したパターンが変数を含まない場合に、ボディ部の変数の束縛範囲を事前に制限して、真偽判断の処理を高速化することができる。
また、健全な機械的解釈と、シームレスでわかりやすくかつシンプルで統一的な処理メカニズムと、対応する推論過程の説明を与えることができる。
(0018)
また、特許文献1の請求項10は、
前記自動単一化処理又は自動導出処理において、
変数を含むパターンと変数を含まない事実との単一化を行う場合、
特許文献1の請求項2から4のいずれか一項に記載の処理方法における「パターン」として当該パタ
ーンを用いかつ同処理方法における「定数文字列」として当該事実を用いて処理した結果を返す、
特許文献1の請求項1から9のいずれか一項に記載の処理方法を提供する。
これにより、パターンと(静的な)事実との間のすべての解候補(格変数への)が洗い出されて「結果」として返されるため、上記「困難性A」克服のための基礎的な機構をシンプルに与えることができ、推論過程の可視化や検証だけでなくさらにはルールの修正等といったユーザーの手を介した学習をも容易にする。
(0019)
また、特許文献1の請求項11は、
前記自動単一化処理又は自動導出処理において、
変数を含むパターンと変数を含まないヘッド部をもつホーン節との単一化を行う場合、
特許文献1の請求項2から4のいずれか一項に記載の処理方法における「パターン」として当該パタ
ーンを用いかつ同処理方法における「定数文字列」として当該ヘッド部を用いて処理した結果を真とする束縛情報(C)が存在する場合で、かつ、当該ホーン節のボディ部を請求項5又は6に記載の処理方法の「サブゴール」として処理した結果が真の場合に当該束縛情報(C)とともに真を返す、
特許文献1の請求項1から10のいずれか一項に記載の処理方法を提供する。
これにより、変数を含むパターンと(変数を含まない静的な)ヘッドとの間のすべての解候補(各変数への)が洗い出されて「結果」として返されるため、上記「困難性A」克服のための基礎的な機構をシンプルに与えることができ、推論過程の可視化や検証だけでなくさらにはルールの修正等といったユーザーの手を介した学習をも容易にする。
また、より単純かつ再帰的な(または相互再帰的な)同一構造を持つ部分問題へとシンプルに変換し、推論過程の表示や検証(完全性や健全性の)を容易にする。
また、変数を自然言語に埋め込む形式で表現するルールのヘッドが変数を含まない場合の健全な機械的解釈と、シームレスでわかりやすくかつシンプルで統一的な処理メカニズムと、これらに該当する推論過程の説明を与えることができる。
(0020)
また、特許文献1の請求項12は、
前記自動単一化処理又は自動導出処理において、
変数を含むパターンと変数を含むヘッド部をもつホーン節との単一化を行う場合、
パターンとヘッド部の頭、尾又は両方に存在する文字数分の固定文字が一致していない場合に偽を返す、
特許文献1の請求項1から11のいずれか一項に記載の処理方法を提供する。
これにより、一律の探索に比して、明らかに大幅な計算量節約と処理速度向上が図れる。
(0021)
また、特許文献1の請求項13は、
前記自動単一化処理又は自動導出処理において、
変数を含む第一のパターンと変数を含むヘッド部をもつホーン節との単一化を行う場合、
パターンとヘッド部の頭及び尾に存在する文字数分の固定文字が一致している場合、
特許文献1の請求項5又は6に記載の処理方法における「サブゴール」として当該ホーン節のボディ
部を適用した結果が真となる各束縛情報により当該ホーン節のヘッド部を束縛して得られる各第二のパターンについて、
第二のパターンが変数を含まない場合に、
特許文献1の請求項2から4のいずれか一項に記載の処理方法における「パターン」として第一の
パターンを用いかつ同処理方法における「定数文字列」として第二のパターンを用いて処理した結果を返す、
請求項1から12のいずれか一項に記載の処理方法を提供する。
ここで、「第二のパターンが変数を含まない場合」とは、ホーン節(ルール)において、ヘッド部に含まれるすべての変数がボディ部「にも」含まれており、ボディ部のすべての変数が定数(固定文字列)で束縛された結果としてヘッド部のすべての変数も定数(固定文字列)で束縛(代入)されたことによりヘッド部の変数が消えてヘッド部が定数文字列と見なせるようになったことをいう。
これにより、変数を含むパターンと変数を含むヘッド部をもつホーン節(ルール)との単一化をシンプルな計算モデルにより、ユーザーがトレースしやすい流れで機械的・自動的に行うことができる。
すなわち、変数を含むパターンと変数を(各束縛情報により)含まなくなった(=定数文字列化した)ヘッド部との間のすべての解候補(パターンの各変数へ代入すべきもの)を洗い出して「結果」として返す形に、元々のより複雑な問題(変数対変数の単一化)を帰着(問題を変換)させることにより、上記「困難性A」克服のための基礎的な機構をシンプルに与え、思考プロセスとしても表現しやすいものにできている。また、この「帰着(問題の変換)」に当たって、より単純かつ再帰的な(または相互再帰的な)同一構造を持つ部分問題へとシンプルに変換しているため、推論過程の可視化や検証(完全性や健全性の)だけでなくルールの修正等といったユーザーの手を介した学習をも容易にする。
結局、変数を自然言語に埋め込む形式で表現するルールのヘッドが変数を含む場合の健全な機械的解釈と、シームレスでわかりやすくかつシンプルで統一的な処理メカニズムと、これらに該当する推論過程の説明を容易に与えることができる。
(0022)
また、特許文献1の請求項14は、
変数を含む事実が入力されることをコンピュータが制限することを特徴とする
特許文献1の請求項1から13のいずれか一項に記載の処理方法を提供する。
ここで、変数を含む事実(ルールでない知識源)とは、例えば、「$Xは$Xである。」(トートロジー的に恒真となる事実)や「$Xは$Yである。」(表層的な文型だけが合致していれば真となってしまう根拠のない事実)等がある。
これらがコンピュータに入力されることを制限することにより、パターン(変数を含みうる文)と事実(変数を含まない文(=固定文字列))との自動単一化処理の計算が単純になり、自動処理による高速な回答が可能となる。また、根拠のない事実を知識源に混入しにくくする。
(0023)
また、特許文献1の請求項15は、
前記ルールがいわゆるホーン節と同様の形式であり、ヘッド部がボディ部に出現しない変数を含むことをコンピュータが制限することを特徴とする
特許文献1の請求項1から14のいずれか一項に記載の処理方法を提供する。
ここで、「ヘッド部がボディ部に出現しない変数を含むことをコンピュータが制限する」とは、ヘッド部が「$Xは素敵」であり、ボディ部が「$Yは強い,$Yは$Zに優しい,$Zは子供,$Yは賢い」といったように、ボディ部のすべての文中の変数(この例では、$Yと$Z)が束縛(代入)されても、ヘッド部の変数(この例では、$X)が束縛されないまま残るようなルールが知識源として入力されたり、記憶されたり、起動されたりすることをコンピュータが制限することをいう。このようなルールは、事実の場合と同様に、ヘッド部に束縛されない変数を残すことにつながるため、健全でない推論結果を生み出しやすく、推論のスピードをも低下させる原因となる。
こうしたルールがコンピュータに入力されることを制限することにより、パターン(変数を含みうる文)とヘッド部(特許文献1の請求項13により変数を含まない文(=固定文字列)の集
合に帰着可能)との自動単一化処理の計算が単純になり、自動処理による高速な回答が可能となる。また、根拠のない推論結果を生み出しにくくする。
(0024)
また、特許文献1の請求項16は、
前記自動単一化処理又は自動導出処理において、
束縛されない変数が互いに残っているパターンとヘッド部又は事実との自動単一化処理を、
固定文字列として極小となる解の集合を求めて返すことにより行うことを特徴する、
特許文献1の請求項1から13のいずれか一項に記載の処理方法を提供する。
ここで、「固定文字列として極小となる解の集合」の例としては、「$Aは$B」と「$Cも$D」との間の自動単一化の結果として、{($A=”も”、$B=<空>、$C=<空>、$D=”は”),($A=空、$B=”も”、$C=”は”、$D=空)}という2つの解を提供することがある。
これにより、無限個の解が存在する場合にも解の例(特に最小のシンプルな例)を提供することが可能になる。
(0025)
また、特許文献1の請求項17は、
前記自動単一化処理又は自動導出処理において、
束縛されない変数が互いに残っているパターンとヘッド部又は事実との自動単一化処理を、
変数を含む文字列として極小となる解の集合を求めて返すことにより行うことを特徴する、
特許文献1の請求項1から13のいずれか一項に記載の処理方法を提供する。
ここで、「固定文字列として極小となる解の集合」の例としては、「$Aは$B」と「$Cも$D」との間の自動単一化の結果として、{($A=”$Cも”、$B=<自由>、$C=<自由>、$D=”は$B”),($A=<自由>、$B=”も$D”、$C=”$Aは”、$D=<自由>)}という2つの解を提供すること等がある。変数を束縛する値(変数に代入される値)の文字列長(ただし、変数が含まれる場合は変数の出現あたり1文字と見なす)の合計(解組みを通じた)が極小となるものと考えることができる。
これにより、無限個の解が存在する場合にも解の一般形を提供することが可能になる。
(0026)
また、特許文献1の請求項18は、
束縛されない変数が互いに残っているパターンとヘッド部又は事実との各文字列の頭及び尾に共通して存在する文字数分の固定文字が一致していない場合、
偽を返すことを特徴とする、
特許文献1の請求項16又は17に記載の処理方法を提供する。
これにより、単一化の可能性のない自動探索を節約し、自動処理を高速化することができる。
(0027)
また、特許文献1の請求項19は、
前記固定文字列又は変数を含む文字列として極小となる解の集合を求める際、
束縛されない変数が互いに残っているパターンとヘッド部又は事実とからなる両文字列(第一の文字列と第二の文字列とする)に含まれる各変数が、各文字列内では共通に束縛され、文字列間では独立に束縛されるものとしながら(あるいは、同名変数を共通に束縛するスコープを各文字列内のみ(あるいは、文字列間は変数のスコープ外)としながら)、
各変数に相手の文字列(第一の文字列中の変数には第二の文字列、第二の文字列中の変数には第一の文字列)のあらゆる部分文字列(<空>及び文字列全体も含む)又は自分自身を代入してみて両文字列が一致する場合を探す全探索により極小となる解の集合を求めることを特徴する、
特許文献1の請求項16又は17に記載の処理方法を提供する。
「又は自分自身を・・・代入」とは、文字列中の「$X」には「$X」そのものを代入することをいい、たまたま第一の文字列にも第二の文字列にも$X(互いのスコープは異なっている)が含まれるときは、第一の文字列の$Xと第二の文字列の$Xをあえて区別できるように(例えば、「$X1」と「$X2」、等として)代入することによっても明らかに健全な計算を行うことができる。
これにより、健全性と停止性(計算の有限性)を確保しながら解集合の一定の網羅性(問題(パターン対)の性質によっては完全性)を確保することができる。
(0028)
また、特許文献1の請求項20は、
束縛されない変数が互いに残っているパターンとヘッド部又は事実とからなる両文字列そのものではなく、
束縛されない変数が互いに残っているパターンとヘッド部又は事実との各文字列の頭及び尾に共通して存在する文字数分の固定文字を両者から除いて残る二つの文字列に相当する両文字列について、
特許文献1の請求項19に記載の処理をする処理方法を提供する。
これにより、解集合の一定の網羅性(場合によっては完全性)を保ちながら全探索の空間を小さくでき、処理が高速化される。
例えば、「石川の$Aは$Bが好き。」と「石川の$Cも$Dアイスが好き。」との間の自動単一化の過程として、そのまま解を探すのではなく、頭尾の共通部分を削除して
”$Aは$B”

”$Cも$Dアイス”
とした上で、全探索により「$A」と「$B」それぞれに、”$Cも$Dアイス”の全ての部分文字列(これは、$Cや$Dといった変数(${・・・}形式の変数も同じ)は1文字とすると、6文字であるため、6×(6+1)/2+1(<空>分)+1(自分自身を代入分)=23通りある)を代入しつつ、同様に、「$C」と「$D」それぞれに”$Aは$B”の全ての部分文字列(これは、同様に3文字であるため、3×(3+1)/2+1+1=8通りある)を代入してみてできる全ての両文字列(23×23×8×8通り)について、両文字列が一致した場合(例えば、(
”もはアイス”,
”はもアイス”,
”$Aはもアイス”,
”$Cもはアイス”,
”$Aはも$Dアイス”
※ちなみに”$Cもは$Bアイス”は一致しない
)となった場合の代入組の集合{
($A=”も”、$B=”アイス”、$C=<空>、$D=”は”),
($A=<空>,$B=”もアイス”,$C=”は”,$D=<空>),
($A=”$A”,$B=”もアイス”,$C=”$Aは”,$D=<空>),
($A=”$Cも”,$B=”アイス”,$C=”$C”,$D=”は”),
($A=”$A”,$B=”も$Dアイス”,$C=”$Aは”,$D=”$D”)
}又は、各代入組の部分的代入の集合(例えば{
($A=”も”、$B=”アイス”),
($A=<空>,$B=”もアイス”),
($A=”$A”,$B=”もアイス”),
($A=”$Cも”,$B=”アイス”),
($A=”$A”,$B=”も$Dアイス”)
})
を解として答えることができる。
なお、$A=”$A”や$B=”も$Dアイス”は、$Aや$Dが自由であり、そこにどのような文字列を代入しても単一化できる(すなわち、無限の解があるということと、その無限個の解(文字列)の制約(正規表現的な形)のあり方)を示すことができる。
(0029)
また、特許文献1の請求項21は、
各変数に相手の文字列のあらゆる部分文字列(<空>及び文字列全体も含む)又は自分自身を代入してみて両文字列が一致する場合を探す全探索により極小となる解の集合を求める際、
変数に代入する部分文字列に変数が含まれる場合に、当該部分文字列に含まれる変数を両文字列にそれまで存在しなかった新しい変数で置き換えながら、該新しい変数に対しての同様の代入も以後再帰的に行いながら両文字列が一致する場合を探す全探索を行うことを特徴とする
特許文献1の請求項19又は20に記載の処理方法を提供する。
これにより、自文字列内の固定文字を相手文字列内の変数を介して反射的に自文字列内の変数に代入した解をも探す必要のある性格の問題(例えば、両文字列={”$Xは$X”,”い$Yう”}の場合では、解候補として($X=”いう”,$Y=”うはい”)を列挙できなければならない)について、解探索の健全性を維持したまま、解候補列挙の網羅性をより高めることができる。上の例では、両文字列(「パターン対」とも呼ぶ)={”$Xは$X”,”い$Yう”}から($X=”いう”,$Y=”うはい”)という解候補を列挙できることを、本発明により再帰的に($X=”い${Y1}う”)⇒(${Y1}=<空>)⇒($Y=”うはい”)という探索枝探索木の一部であり、本発明に沿った幅優先探索の場合は有限回で生成可能である)を生成しうることによって、示すことができる。
「再帰的に・・・全探索」とは、例えば、各変数への各ありうる代入(前の特許文献1の請求項と同
じ)を再帰的に繰り返す幅優先探索をしながら一致する代入系列(例えば、上記の($X=”い${Y1}う”)⇒(${Y1}=<空>)⇒($Y=”うはい”)、等)を列挙することである。最初の代入のバリエーションは、両文字列中の変数の種類がそれぞれ2個と3個であり文字列の長さがそれぞれ6字と7字(変数はまとめて1字と数える)であれば、2個×(7×(7+1)/2+1+1)+3個×(6×(6+1)/2+1+1)=60+69=129通りとなる。これらの枝から派生するさらなる枝の最長深さが均等になるように幅優先探索を行う場合、代入回数等によるリミッター(上限値と比較するプログラムステップ等)を設けることにより、一回一回の探索を適当な計算量に制限することができる(再帰性によって保証されなくなった停止性や応答速度の確保)。なお、深さ優先探索とした場合にも、深さの制限や代入回数等によって計算量を制限することができる。いずれも自己再帰や相互再帰による無限ループを、再帰的な関数の呼び出しを管理するスタック構造(構造体の配列)等を設けて、先祖(より根方向)となる枝の呼出しパラメータ(その代入系列(代入文脈)に応じた両文字列の状態表現を含んでいてもよい)を現在の呼出しパラメータと比較したりすることにより回避することができる。また、両文字列の頭尾に存在する固定文字列が共通して存在する文字数分一致しているかどうかなどにより、単一化しえない枝の枝刈りを行うこともできる。なお、制限した計算量(例えば代入百万回や探索深さ20以内)の探索により解が見つからなかった場合に「解なし(精度:代入百万回かつ探索深さ20以内)」として、見つかった場合に、「($X=”いう”,$Y=”うはい”),(・・・),・・・(但し、精度:代入百万回かつ探索深さ20以内)」等として探索精度を明示しながらユーザに答えることもできる。また、代入の制限回数以内かつ制限探索深さ以内で明らかに全探索できた場合(完全性のある場合)には、その旨を「解なし(全探索済)」あるいは「($X=”いう”,$Y=”うはい”),(・・・),・・・(全探索済)」等と明示して、ユーザに答えることもできる。
(0030)
また、特許文献1の請求項22は、
変数に代入した結果についても、各文字列の頭及び尾に共通して存在する文字数分の固定文字を両者から除いて残る二つの文字列を、
「相手の文字列のあらゆる部分文字列(<空>及び文字列全体も含む)」の対象となるの「相手の文字列」として、探索が進むごとに、文字列の頭又は尾に存在する固定文字数が少なくすることを特徴とする、
特許文献1の請求項19〜21のいずれか一項に記載の処理方法を提供する。
これにより、探索を進めるごとに(先の枝にいくほど)枝の個数が少なくなり計算量を節約することができる。
(0031)
また、特許文献1の請求項23は、
前記固定文字列又は変数を含む文字列として極小となる解の集合を求める際、
束縛されない変数が互いに残っているパターンとヘッド部又は事実とからなる両文字列(第一の文字列と第二の文字列とする)に含まれる各変数が、各文字列内では共通に束縛され、文字列間では独立に束縛されるものとしながら(あるいは、同名変数を共通に束縛するスコープを各文字列内のみ(あるいは、文字列間は変数のスコープ外)としながら)、
各変数に、固定文字列(空文字を含む)又は変数を含む文字列を再帰的に代入してみて解の集合を求める処理方法であって、
代入してみる変数を相手文字列の頭又は尾が固定文字である自文字列の対応する頭又は尾の変数に限定し、
代入値を、該頭である場合には該頭の固定文字もしくは固定文字列に続く新しい変数又は<空>とし、該尾である場合には新しい変数に続く該尾の固定文字もしくは固定文字列又は<空>とし、
変数に代入した結果について、各文字列の頭及び尾に共通して存在する文字数分の固定文字を両者から除くことを繰り返す、
ことを特徴とする特許文献1の請求項16又は17に記載の処理方法を提供する。
これにより、頭及び尾の固定文字の存在に着目して解の列挙範囲を(探索の網羅性を損なわずに)大幅に制限すること可能になり、大幅な計算量節約と高速化が可能になる。
(0032)
また、特許文献1の請求項24は、
前記固定文字列又は変数を含む文字列として極小となる解の集合を求める際、
束縛されない変数が互いに残っているパターンとヘッド部又は事実とからなる両文字列(第一の文字列と第二の文字列とする)に含まれる各変数が、各文字列内では共通に束縛され、文字列間では独立に束縛されるものとしながら(あるいは、同名変数を共通に束縛するスコープを各文字列内のみ(あるいは、文字列間は変数のスコープ外)としながら)、
各変数に、固定文字列(空文字を含む)を再帰的に代入してみて解の集合を求める処理方法であって、
各文字列の頭及び尾に存在する文字数分の共通する固定文字を除いてできる両文字列中の固定文字種(変数の識別子やデリミタを除いた文字種)だけを用いてできる束縛情報を、束縛する値の文字列長の合計が小さいものから順に列挙していくことにより求める、
特許文献1の請求項16又は17に記載の処理方法を提供する。
これにより、一定の性質をもった問題については、効率よく解に到達し、列挙することもできる。
(0033)
また、特許文献1の請求項25は、
求めた「変数を含む文字列として極小となる解の集合」をもとに、
当該ホーン節の変数を当該変数を含む文字列で一時的に書き換えてできるホーン節により探索を継続する特許文献1の請求項19〜24に記載の処理方法を提供する。
これにより、パターンとホーン節(ルール)のヘッド部とが単一化するために必要であることが計算された制約(上記の例では、変数「$C」が”$Aは”という形の文字列で束縛(代入)されることでしか単一化しえないという制約の働くような単一化方針(例えば、上記最後の代入組の場合)もある)を、そのホーン節のボディ部の探索プロセス伝播することができ、探索を効率化することができる。
(0034)
また、特許文献1の請求項26は、
求めた「変数を含む文字列として極小となる解の集合」をもとに、
「変数を含む文字列」の変数部分に、当該「変数を含む事実」の解組の集合としてあらかじめ定義された固定文字列組の集合の各要素を代入してできる固定文字列組の集合を返す、
特許文献1の請求項19〜25のいずれか一項に記載の処理方法を提供する。
これにより、変数(一個又は複数)を含む事実とその変数に埋めうる適切な答え(又は仮説)の集合とをひもづけたデータベース(例えば、「言葉方程式登録商標)」「VLANK(登録商標)」中の知識源)と効率的に連携した解探索を行うことができる。また、似た文型をもつ大量の事実を、本発明の枠組みと連携させて効率的に管理することができる。
(0035)
また、特許文献1の請求項27は、
前記自動単一化処理又は自動導出処理において、
変数を含む第一のパターンと変数を含む第二のパターンとの自動単一化を行う場合、
両パターンの頭及び尾に存在する文字数分の固定文字が一致しており、かつ、同じ変数が各パターン内で一度しか出現しない場合、
無限個の解の存在を意味する情報を返す、
特許文献1の請求項1から26のいずれか一項に記載の処理方法を提供する。
(0036)
また、特許文献1の請求項28は、
特許文献1の請求項1から27のいずれか一項の方法を実行するための装置を提供する。
(0037)
また、特許文献1の請求項29は、
特許文献1の請求項1から27のいずれか一項の方法をコンピュータに実行させるためのコンピュ
タプログラムを提供する。
(特許文献1の発明の効果)
(0038)
本発明の効果は、各特許文献1の請求項について上述したとおりである。
(特許文献1の図面の簡単な説明)
(0039)
図1図1は本発明を最も効果的に実施するネットワークシステムの全体図である
。(実施例1)
図2図2は本発明を実施するコンピュータのハードウエア構成を示した説明図で
ある。(実施例1)
(図3)図3は本発明を実施する端末における画面表示の例を示した説明図である。
(実施例1)
(特許文献1の発明を実施するための形態)
(0040)
本発明は、ネットワークに接続された/接続されてないあらゆる種類のコンピュータ(クラウドサーバー、大型汎用機デスクトップPC、ノートPC、携帯端末、本発明専用機)において実施することができるが、一般的なマルチタスク機能ウィンドウ機能をもちインターネットに接続されたPCにより実現した形態により説明する。
図1は本発明を最も効果的に実施するそのネットワークシステムの全体図であり、コンテンツ管理装置1は、利用者PC2又は利用者兼管理者PC2により、本発明で取り扱うコンテンツ(ルールや事実)の投稿受け付け、所定のポリシーによって共有アクセス権コンテンツ提供優先順位を制御しながらコンテンツを配信する公知のファイル共有サーバーでよい。利用者PC2は、その利用者ごとに、その信じる内容(や検討したい内容)を自然言語で表現したコンテンツ(ルールや事実)を本発明の方法に沿って入力して記憶し本発明の方法によって処理するコンピュータ、携帯端末等である。
図2は本発明で用いるコンピュータのハードウエア構成を示した説明図である。これは計算機の構成としては一般的なものであり、本発明の特徴は、不揮発性メモリ2hに記憶されたプログラム3及びコンテンツデータ4の指示や記載に従い自然法則を用いてCPU2eで処理される処理の内容、及び、利用者との対話プロトコル書式)の在り方にある。
図3は本発明を実施する端末における画面表示の例を示した説明図である。図では「?$Aしない」という問い(オープンクエスチョン形式)に対して、図示しない記憶したリストLの1行目の「されていやなことはなるべくしない」という事実を用いて「$A =
されて嫌なことをなるべく/1/」という答えを列挙し、同様にリストLの9行目の「いじめをしない」という事実を用いて「$A = いじめ/9/」と答えている。
(0041)
このような実施形態においては、C++言語等を介して製造されたコンピュータプログラムにより、コンピュータ(PC等)に可能なあらゆる動作を実施させることができる。したがって、自然法則を用いたコンピュータの公知の基本的な動作(レジスタメモリストレージへの記憶・取り出し、四則演算、比較、等)や既に開発環境等の標準ライブラリとなっている一般的な機能(変数やN次元配列への代入・比較・コピー、文字列や数値の操作/比較/表示、リスト構造キュー構造ハッシュ構造・ベクトル型等の操作、バイナリサーチソート操作、正規表現によるパターンマッチ操作、ネットワーク通信操作、等)の実現方法については、本発明の本質(新規性や進歩性につながる独自の構成)とも異なり、当業者にもよく知られているので、詳述はしない。一方、このような一般的な機能を組み合わせて、本発明に固有の処理をどのような操作順序や記憶の仕方(アルゴリズムやデータ構造)で実現するかについては、以下に詳述する。このアルゴリズム等の説明、上記した課題解決手段の説明及び本発明の図面の説明を提供して開発の参考とさせることにより、標準レベル職業的プログラマであれば、標準的なアプリケーションプログラム開発技法(C++によるGUIアプリケーション統合開発環境、等)を用いて、本発明の方法をコンピュータに実施させることが明らかに可能となり、また、この方法のための装置やプログラムを作成することも可能となる。
(0042)
以下に示すアルゴリズムは、C言語/C++言語等を用いて所望の「関数」を新たに定義した上で関数呼出しを行うという標準的な構造化プログラミングベースにしたアルゴリズムであり、当業者は、下記各関数の機能分担に応じた入出力や機能切り分けを行いながら(或いは、下記に示した仕様に沿って関数群をそのままコーディングすることにより)、本発明の解決手段に相当する処理手段(プログラムや計算機)を実現することが可能となる。
(0043)
■問い合わせPに対する知識リストLの処理アルゴリズム仕様
=====================================================================================================================
関数Q1(P:変数を含みうるパターン,L:知識リスト):★全特許文献1の請求項に共通するメイ
ン関数の実施例1★

1.Lの最初の行の内容B(事実又はホーン節)を取り出す。
ただし、Lが空の場合(最初の行が取り出せなかった場合)、偽を出力して終了。
2.変数の束縛情報Cの初期値を空とし、下記関数H(P,B,C)を呼出し、真となる(=マッチする)束縛情報(=解集合)Cを出力。
真(=マッチした)の場合
真(はい)を出力する(マッチした内容Bの行番号も添えて出力する)。
偽の場合
何もしない。
3.Lの次の行の内容B’が
ある場合
・B←B’とし、2に移動する。
ない場合
・2で真を一度も出力していない場合は偽(いいえ)を出力。
・終了。

(0044)
■問い合わせPに対する知識リストLの処理アルゴリズム仕様(事前固定文字列化版)
=====================================================================================================================
関数Q2(P:変数を含みうるパターン,L:知識リスト):★全特許文献1の請求項に共通するメイ
ン関数の実施例2(事前固定文字列化版)★

(事前の固定文字列化)
1.{Lのみから演繹できるすべての文字列/その各文字列を演繹する根拠として用いたLの行番集合}を各行とする固定文字列テキストTを求める。
具体的には、上記関数Q1(”$A”,L)の出力系列(A=解1/根拠1,A=解2/根拠2,・・・)の要素を各行としてマージしたテキストTを求める。
求める途中で無限ループになる場合について、明示的な呼出管理スタック等を用いた無限ループ検出機能により演繹を部分的に省略する。
・例えば、ホーン節の真偽の確認をある変数束縛条件下でコンピュータが行う途中で
同じホーン節の真偽を同じ変数束縛条件下で確認しようとしていないかを、
構造体(確認中のホーン節識別子,現在の変数束縛条件)をメンバーとする呼出管理スタックを管理し、
呼出し時にスタックの根に向かって同じ組み合わせがないかリニアサーチすることにより
無限ループを検出する。
(固定文字列のみである故にQ1よりシンプルな方法(関数F)で解集合を求める) 2.テキストTの各行tにつき、下記関数F(P,t,C)が真となるCをすべて出力する。
(最終結果の出力)
3.Cが一つでもあれば真を出力し、なければ偽を出力する。

(0045)
■問い合わせPに対する、一の事実(固定文字列)又はホーン節B(但し、ヘッドに含まれるすべての変数がボディにも存在)の処理アルゴリズム仕様
=====================================================================================================================
関数H(P:変数を含みうるパターン,B:一の事実(固定文字列)又はホーン節,C:変数の束縛情報):★特許文献1の請求項1〜15の発明で使用する関数の実施例1−1★

Pが変数を含まない場合{
Bが事実である場合{
P=Bの場合は、真を返す。
そうでない場合は偽を返す。

Bがホーン節である場合{
Bのヘッド部が変数を含まない場合{
P=Bのヘッド部の場合は、関数D(Bのボディ部,E)の真偽を返す。
そうでない場合は偽を返す。

Bのヘッド部が変数を含む場合{
F(Bのヘッド部,P,C1)を真とする各C1について、
関数D(Bのボディ部にC1を適用したもの,E)の結果が真となるC1があれば、 真を返す。
そうでない場合は偽を返す。



Pが変数を含む場合{
Bが事実である場合{
F(P,B,C1)が真となるC1が存在すれば、そのようなすべてのC1をCに加えて真を返す。
そのようなC1が存在しなければ、偽を返す。

Bがホーン節である場合{
Bのヘッド部が変数を含まない場合{
F(P,Bのヘッド部,C1)を真とするC1が存在する場合で、かつ
関数D(Bのボディ部,E)が真であれば、そのようなすべてのC1をCに加えて真を返す。
そうでない場合は偽を返す。

Bのヘッド部が変数を含む場合{
★特許文献1の請求項12の発明を実施する場合★
//高速化の工夫(オプション)開始
PとBのヘッド部の頭及び尾に存在する文字数分の固定文字が一致していない場合{ 偽を返す。
}//高速化の工夫(オプション)終了
★特許文献1の請求項13の発明の実施★
PとBのヘッド部の頭及び尾に存在する文字数分の固定文字が一致している場合{
関数D(Bのボディ部,E)の結果が真となるE中のいずれかの束縛情報Gについて、
関数F(P,Bのヘッド部をGで束縛したもの(固定文字列になるはず),C1)を真とするC1があれば
そのようなすべてのC1をCに加えて真を返す。
そのようなC1が存在しない場合は偽を返す。





(0046)
■ホーン節のボディ部(又は変数を共有する重文の問い合わせ)の解集合の列挙アルゴリズム仕様
=====================================================================================================================
呼出例
→関数D("$Aと$Bは友達だ,$Aは人間,$Bは人間", E);
戻り
←真(E=((A=花子,B=太郎),(A=太郎,B=次郎),(A=次郎,B=三郎)))
=====================================================================================================================
関数D(J:ボディ部(又は変数を共有する重文の問い合わせ),E:解集合):★請求項6の発明で使用する関数の実施例1−2A★
※ただし、知識源全体Lはグローバル変数に格納して参照可能とする

1.J中の最初の文Mを取り出す。最初の文が存在しない場合真を返す。
2.知識源全体Lに対して、前記関数Q1(M,L)又はQ2(M,L)を呼び出す。 結果が偽のときは
偽を返す。
真のとき
Mが変数を含まない場合
何もしない。
Mが変数を含む場合
Mを真とするためにとりうる束縛情報の集合Cを記憶する。
※真とするために束縛不要の変数は、その旨を明示的に示すこともできる。
※束縛値が無限集合でありながら真とするために一定の条件を要求する場合は、その条件を付記することもできる。
3.J中の次の文M’を取り出す。存在しない場合、真(E=束縛情報の集合C)を返す。
4.知識源全体Lに対して、前記関数Q1(M’,L)又はQ2(M’,L)を呼び出す。
結果が偽のときは
偽を返す。
真のとき
M’が変数を含まない場合
何もしない。
M’が変数を含む場合
M’を真とするためにとりうる束縛情報の集合C’と記憶してあった集合Cとの積集合を新たなCとする。
但し、元々の集合Cが空集合でなく積集合をとって空集合となったときは偽を返す。 ※真とするために束縛不要の変数は、その旨を明示的に示すこともできる。
※束縛値が無限集合でありながら真とするために一定の条件を要求する場合は、その条件を付記することもできる。
5.3に戻る。

関数D2(J:ボディ部(又は変数を共有する重文の問い合わせ),E:解集合):★請求項6の発明で使用する関数の別の実施例1−2B(関数の再帰呼び出しを用い束縛情報を他の文に波及させることにより高速化を図ったもの)★

1.J中の最初の文Mを取り出す。Mが存在しない場合真を返す。
2.知識源全体Lに対して、Q1(M,L)又はQ2(M,L)を呼び出す。
結果が偽のときは
偽を返す。
真のとき
Mが変数を含まない場合
Jの次の文がなければ真を返し
あれば次の文を新たなMとし2に戻る。
Mが変数を含む場合
Jの次の文がなければ、とりうる束縛情報をEに格納して真を返し
あればとりうる束縛情報を集合Cとして記憶する。
3.Eを空にし、集合C中の各束縛情報Kについて
再帰呼び出しD2(KによりJの次の文以降を束縛してできるボディ部J’,E’)を実行する
結果が真のときは
Eに、真となったそのKかつE’を加える
4.各Kについて一度も真となっていないときは偽を返し、一度でも真となっているときは真(E)を返す

関数D3(J:ボディ部(又は変数を共有する重文の問い合わせ),E:解集合):★請求項5の発明で使用する関数の実施例1−3★

1.J中の最初の文M1を取り出す。最初の文が存在しない場合真を返す。
2.知識源全体Lに対して、Q1(M1,L)又はQ2(M1,L)を呼び出す。
結果が偽のときは
偽を返す。
真のとき
M1が変数を含まない場合
何もしない。
M1が変数を含む場合
とりうる束縛情報の集合C1を記憶する。
3.同様に、偽とならないうちはM2,M3・・・についてC2,C3・・・を求めていく。
偽となった場合は偽を返す。
4.残ったC1,C2,C3・・・Cnについて積集合Cを求めて、真(C)を返す。}
(0047)
■問い合わせPに対する事実Sの多長一致解(複数も可)の列挙アルゴリズム仕様
=====================================================================================================================
呼出例
→関数F("$Aと$Bは友達だ","太郎と次郎と三郎は友達だ", "");
関数F(P:変数を含みうるパターン,S:定数文字列,C:変数の束縛情報):★請求項2の発明(ただし、「(又は最後)」と「又は前」を省いた実現例)で使用する関数の実施例1−4A★

(準備)
1.P中の変数の種類数Vと、出現する変数の名前N1,N2,・・・を出現順に求める
(Pがもともと変数を含まない場合への対応)
2.Vが0のときは、
⇒ P=Sのとき、真を返して終了。
⇒ P≠Sのとき、偽を返して終了。
(出力)
3.Vが1のときは、N1がP中に何回出現しようとも、PとSの単一化の解R1は1つしかないので、
⇒ マッチする場合、その唯一の解を「CかつN1=R1」として出力して、真を返して終了。
⇒ マッチしない場合、偽を返して終了。
※単一化そのものは、正規表現とのマッチ(同じ変数が二度以上出現する場合は後置参照あり)として実施可能
4.Vが2以上のとき
変数N1についての最長一致解R1で、P中の全てのN1を埋めてできるP’について 再帰呼び出しF(P’,S,CかつN1=R1)を実行
⇒ N1について最長一致解とした解集合が出力される
5.R1’←R1の最後の1文字を除いた文字列とし
P中の全てのN1をR1’で埋めてできるP’’について
再帰呼び出しF(P’’,S,CかつN1=R1’)を実行
⇒ N1について、最長一致解より1文字除いた解候補R1’とした解集合が出力される
6.R1’が
1文字以上の場合、(★特許文献1の請求項3では最短一致解の文字数より大きい場合)
⇒R1←R1’として5に戻る。
0文字の場合、(★特許文献1の請求項3では最短一致解の文字数である場合)
終了。

(0048)
関数F(P:変数を含みうるパターン,S:定数文字列,C:変数の束縛情報):★請求項4の発明で使用する関数の実施例1−4B★
//P中で変数が最初に出現した直後の固定文字列の最初の文字Cに着目して高速化の工夫その1をした関数F

(準備)
1.P中の変数の種類数Vと、出現する変数の名前N1,N2,・・・を出現順に求める
(Pがもともと変数を含まない場合への対応)
2.Vが0のときは、
⇒ P=Sのとき、真を返して終了。
⇒ P≠Sのとき、偽を返して終了。
(出力)
3.Vが1のときは、N1がP中に何回出現しようとも、PとSの単一化の解R1は1つしかないので、
⇒ マッチする場合、その唯一の解を「CかつN1=R1」として出力して、TRUEを返して終了。
⇒ マッチしない場合、偽を返して終了。
4.(高速化の工夫その2。この処理は5以降でカバーされるため省いてもよい。★この工夫2は、特許文献1の請求項にはしていない★)
Vが2以上のときで、
すべての変数(N1(=N),N2,・・・)について最長一致モードでマッチしてみた解と
すべての変数(N1(=N),N2,・・・)について最短一致モードでマッチしてみた解と
が同一(N1=R1,N2=R2,・・・)のとき
⇒ その唯一の解を「CかつN1=R1かつN2=R2かつ・・・」として出力して終了する
そもそもマッチしなかった場合、
⇒ 偽を返して終了。
同一でないとき
⇒ 5に続く
5.Vが2以上のとき
変数N1についての最長一致解R1で、P中の全てのN1を埋めてできるP’について 再帰呼び出しF(P’,S,CかつN1=R1)を実行
⇒ N1について最長一致解とした解集合が出力される
6.P中で変数N1の後すぐに
変数N1(自分自身)が続くとき
⇒ 7以降で処理する
別の変数N2が続くとき
⇒ 7以降で処理する(ただし、7で1文字CはN2の解R2の最初の1文字とする)
固定文字が続くとき
⇒ 7以降で処理する
7.P中で変数N1が最初に出現した直後の固定文字である1文字C(直後が別の変数N2であるときはR2の最初の1文字C)が
最長一致解R1に含まれる場合
⇒ 1)R1’←R1の文字列の最後からそのCにあたるまでの部分文字列を削除した文字列
⇒ 2)P’’←R1’でP中のすべてのNを埋めてできるパターン
⇒ 3)再帰呼び出しF(P’’,S,CかつN1=R1’)を実行
⇒N1について一段階だけ短めの解が存在すれば出力できるはず
最長一致解R1に含まれない場合
⇒ N1についてはより短い解の列挙が終わったので、終了。
8.R1←R1’として7に戻る。

=====================================================================================================================

実施例

0009

実施例では、若年有権者(質問したり場合によっては候補者に提言したりする立場のシステム利用者)の投票率を改善するために実際に構築した質問応答システムの例を示す。
このシステムは、選挙の候補者の所信(基本的マインドセット)や、政策アイディア)や、それらの優先順位(図1の最後の6行)や前提条件(根拠、図1の2行目〜3行目)について、選挙の候補者本人(自分の代わりに有権者に応答するための論理プログラムを編集できる立場の利用者)がシステムに投稿し、本発明によるコンピュータプログラムが、その投稿内容(論理プログラム)に基づいて、様々な有権者からの質問(図2の2、場合によっては提言にも)答えるものである。提言は図示しないプログラムによって各候補者にメールされる。有権者等への自動応答実績(応答内容や統計も含む)もメールされる。

0010

本発明は、診断用・設計用・相談用等のエキスパートシステム、人工無脳、ゲーム、対話型の知識獲得システム等において
明らかに利用可能である。

0011

1対話用固定応答文用の論理プログラム部分が反映されたクリック用リンク
2有権者等の一般利用者による質問文
3質問に対するコンピュータの推論中に利用者に事実を問い補うための逆質問文

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ