JP7020659B2 - テキストをもとに出力するコンピュータプログラム、装置及び方法 - Google Patents
テキストをもとに出力するコンピュータプログラム、装置及び方法 Download PDFInfo
- Publication number
- JP7020659B2 JP7020659B2 JP2016196069A JP2016196069A JP7020659B2 JP 7020659 B2 JP7020659 B2 JP 7020659B2 JP 2016196069 A JP2016196069 A JP 2016196069A JP 2016196069 A JP2016196069 A JP 2016196069A JP 7020659 B2 JP7020659 B2 JP 7020659B2
- Authority
- JP
- Japan
- Prior art keywords
- computer program
- variable
- character string
- text
- program according
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
テキスト読み上げ機能を有するコンピュータプログラムであって、
該コンピュータプログラムからアクセス可能なテキスト(文字列の集合。文字列間の順序性を問うものでもよく問わないものでもよい)と、
変数を含んだ文字列をリテラルとして許容しかつリテラルを真とするように変数を埋める文字列を答えとする質問文を含む論理式とから、
該論理式に応じた該質問文の答えとなる文字列を抽出又は合成して読み上げることを特徴とする
コンピュータプログラム、を提供する。
:ここで、「アクセス可能なテキスト」は、たとえば、自然言語で記述された事実の集合、及び、リテラルとして自然言語に変数を埋め込める形式を用いたPROLOGのホーン節であるルール(推論規則)の集合であり、ルール(推論規則)を含んでいてもよく、含んでいなくてもよい。
:「変数を埋める文字列を答えとする質問文を含む論理式」は、そのような質問文以外の事実やルール(推論規則)を含んでいてもよく、含んでいなくてもよい。正規表現またはそのサブセットと等価なものさらにそれらを拡張したものであってもよい。
:「ルール(推論規則)」は、プロダクションルール、項書き換え規則、PROLOGのホーン節、等であってもよく、さらに、これらを文字列に変数を埋め込んだリテラルを許す形式に拡張したものであってよい。
>これにより、自然言語テキストだけのときや、論理式だけのときよりも、論理の表現と(読み上げ機能のための)音声合成のための表層的自然言語表現とが一体となったテキスト形式の知識表現として、一元的に管理することができるようになり、知識の追加、編集、削除等が、一般的な論理型(宣言型)/手続型プログラミング言語(PROLOG、AWK、SQL、PERL、PHP、C++、JAVA、等)を知らない小学生でも気軽に実施可能となる。
>また、変数を埋める文字列を答えとする質問文を含む論理式を用いることから、各答えを含む各文章全体や各文全体でなく、各答えのポイントとなる文字列のみ(共通部分が多い文字列の相違部分のみ)を、動的に(すなわち質問文の異なりに応じて)要領よく(退屈/冗長とならないように)抽出・合成して読み上げることが可能となる。
前記アクセス可能なテキストが推論規則を含んでいる
請求項1に記載のコンピュータプログラムを提供する。
:ここで、「推論規則」は、例えば、PROLOGのホーン節のリテラルとして、文字列に変数を含んだ形式を許し、「ご近所は$X:-req "http://hoge.net/JP/ISHIKAWA/KOMATSU/BIRUGAWA.jpl"; $X;」等とすることができる。この意味は、「インターネットの所定URL(この例では、地域を階層的にフォルダ管理しているサイト)からBIRUGAWA.jplファイルを取得し、その各行を”ご近所は”に連接することにより得られる文字列の全体を真とする」である。
>これにより、遠隔で更新されるインターネット上のローカルニュースのうち関心のあるファイルにのみアクセスして関心のある部分だけを(「$Yと$Zが結婚した」などと)抽出して(場合によってはさらに「$Yと$Zは新婚夫婦である」などとテキスト同士の新たな合成をもして)読み上げる等といった機能をモジュール定義して、動的にそのまま利用したり、あるいは静的に一部の機能だけを修正して再利用したり、さらに関連分野の分析・抽出用途に流用したりすることを容易にする。
前記論理式が事実を含んでいる
請求項1または2に記載のコンピュータプログラムを提供する。
:ここで、「事実を含む論理式」の簡単な例として”「今日は天気がよい」「太郎は趣味の$Xに夢中になれる」”を挙げる。
:この場合、「今日は天気がよい」は事実であり、
推論規則を含むテキスト(例えば、
「太郎は趣味の釣りに夢中になれる:-今日は天気がよい;」
「太郎は趣味の読書に夢中になれる:-今日は天気が悪い;」
「太郎は好きな仕事に夢中になれる」
)に、
この事実(「今日は天気がよい」)を付加した上で
「太郎は趣味の$Xに夢中になれる」の「$X」を埋められる解(この場合「釣り」)を求めることになる。
>これにより、動的に(質問時に、一時的に)成立しうるルールとそうでないルールを切り分けたり、論理式内の質問文に答えるヒントを自ら提供したり、問題や解の範囲を広げたり制限したりすることが可能になる。
前記論理式が推論規則を含んでいる
請求項1から3のいずれか一項に記載のコンピュータプログラムを提供する。
:ここで「推論規則を含む論理式」は、例えば、”「小松市小1算数は$X:-req "http://hoge.net/JP/ISHIKAWA/KOMATSU/ELEMENTARY/1/ARITH.jpl"; $X;」「小松市$X?」”等であってもよい。
>これにより、動的に(質問時に、一時的に)適用したい(解釈、書き換え、等のための)ルールを質問ごとに付記することができるようになる。また、その解釈の真偽を通じて、事実の場合と同様に、成立しうるルールとそうでないルールを切り分けたり、論理式内の質問文に答えるヒントを自ら提供したり、問題や解の範囲を広げたり制限したりすることが可能になる。
前記アクセス可能なテキストを、
予め限った選択肢(テキスト集合)の中から
利用者が選択するユーザーインターフェースを有する
請求項1から4のいずれか一項に記載のコンピュータプログラムを提供する。
:このようなインターフェースは、ハードウエアとしてのドラムロール、ジョグダイアル、ソフトウエアコントロールとしてのリストボックス(N段組み形式でもよい)、コンボボックス、ラジオボタン等、または、それらを組み合わせて表現したコンピュータグラフィック、等とすることができる。
:テキスト集合は、例えば、ローカルファイルへのパスの集合、社内LAN共有フォルダへのパスの集合、インターネットファイルへのURL/URIパスの集合、メモリ内のテキストへのポインタ、又はそれらの組み合わせとすることができる。
>これにより、小中学生を含めた未成年教育用途などの場合に、コンテンツを制限することができる。また、科目ごとに対象とするテキストを分けて低学年や高齢者でも効率的にアクセス・編集・管理することができる。
アクセス可能なテキスト毎にテキストと対応する論理式集合を関連づけて記憶し、
アクセスしているテキストと対応する論理式集合から論理式を利用者が選択するユーザーインターフェースを有する
請求項1から5のいずれか一項に記載のコンピュータプログラムを提供する。
:「論理式集合」の要素はアクセス可能なテキスト毎にひとつでもよい。
:「テキストと対応する論理式」とは、過去にそのテキストに対して問われた論理式、そのテキストに対して有用なことがわかっている論理式、そもそもそのテキストに問われることを想定して(用語等が)設計された論理式、等である。
>これにより、コンピュータや論理式に慣れていないユーザー(小学生、高齢者、等)でも、補助者なしで、ワンクリックで簡単に実質的な対話等が可能となる。
>「テキストと対応する論理式」は、アクセス可能なテキストに所定の書式により一つ又は複数埋め込んで管理するのが好ましい。以下の例では、2つのボタンから選択するだけで、問い合わせをすることができる。以下の例では「:&」は選択ボタンとしてヘッドを表示するという意味である。
===
私の父は78歳
私の母は73歳
私の妹は45歳
私の妹は43歳
私の男の家族の年令は$X歳 :& 私の男の家族は$X歳; //1つ目の選択ボタン
私の男の家族は$X歳 :- 私の父は$X歳;
私の男の家族は$X歳 :- 私の祖父は$X歳;
私の男の家族は$X歳 :- 私の兄は$X歳;
私の男の家族は$X歳 :- 私の弟は$X歳;
私の男の家族は$X歳 :- 私の息子は$X歳;
私の女の家族の年令は$X歳 :& 私の女の家族は$X歳; //2つ目の選択ボタン
私の男の家族は$X歳 :- 私の母は$X歳;
私の男の家族は$X歳 :- 私の祖母は$X歳;
私の男の家族は$X歳 :- 私の姉は$X歳;
私の男の家族は$X歳 :- 私の妹は$X歳;
私の男の家族は$X歳 :- 私の娘は$X歳;
===
:この場合、データの前半を外部ファイルから動的に読み込むようにプログラムすることができ(C言語の#includeやPHPのrequire_onceなどと類似する機能をもった組み込み関数による)、その場合は外部ファイルの更新(社外のニュース配信会社、社内の知識編集者、家族内のIT担当者、等による)に応じて答えを更新することができる。
:アクセス可能なテキストがローカルファイル(共有設定もされていない)の場合には自分のみが更新するファイルという運用になる。共有ファイルの場合やインターネット公開ファイルの場合にはそれぞれのアクセス権をもった担当者が更新するファイルという運用になる。
:選択するためのボタンは、N段組みのリストボックスや、それをレンガ式にずらして並べたものや、ボタンを代表する漢字一字のラベルを平面や疑似3Dに配置したものや、使用頻度に応じて大きさの異なる円内に論理式の内容や要約を記載したもの、等とすることができる。
:なお、ボタンコントロールをマウス押下できない利用者や、より簡便に利用したい利用者向けに、各ボタンに対応する論理式の内容を音声認識や目線認識で選択するように構成してもよい(このような認識のための要素技術は現在では自明のための詳述はしない)。また、本質的にN個から1個を選択できるインターフェースであれば、ボタン式に限るものではなく、ドラムロール式タッチ式、脳波測定選択式など、種々の方法を利用することができる。
:また、従業員の顔認識センサーと連動させるときは、従業員ごとによく押下するボタンをコンピュータに記憶させたり、管理者側が従業員毎に覚えさせたい内容(ルール、専門知識、最新情報、英単語、連絡事項など)を表す論理式をコンピュータに記憶させたりして、従業員が近づいて認識されたときに、ボタンを押さなくても、その従業員に知らせる/勉強させるべき内容を音声等で出力することができる。
:また、高齢者については、分野別に整理された身近な内容(友達一覧、親戚一覧、買い物先一覧、電話先一覧・・・を示す各ボタン)により物忘れの防止にも用いることもできる。
:また、学校では、その学校で遵守させたい道徳やルール(携帯してはいけないもの一覧、服装規則一覧、等)、覚えてほしい先生の名前一覧、地域の身近な知識一覧(周辺の歴史、地理など)、学年ごとに覚えてほしい英単語や古語や年表や定理の一覧、等の体系的な列挙にも用いることができる。
抽出又は合成して読み上げる質問文の答えとなる文字列が複数存在する場合、
乱数生成アルゴリズムを用いてランダムな順序で読み上げることを特徴とする
請求項1から6のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、記憶する必要のない知識間の順序性を排して、それぞれを独立した知識として認識させることが容易になる。
抽出又は合成して読み上げる質問文の答えとなる文字列が複数存在する場合であって、
一以上の文字列を読み上げた後に読み上げを中断して再開した場合、
中断までにまだ読み上げていない文字列を優先して読み上げることを特徴とする
請求項1から7のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、中断に左右されずに、満遍なく答えのすべてをもれなくだぶりなく伝えることが可能となる。
抽出又は合成して読み上げる質問文の答えとなる文字列が複数存在する場合、
該複数存在する文字列の間又は該複数存在する文字列を抽出するテキストの間に比率を設定し、
該設定した比率に沿った頻度割合で該複数存在する文字列を繰り返し読み上げることを特徴とする
請求項1から8のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、重点的に覚えるべきものとそうでないものとをバランスよく暗記するときに用いることなどが可能となる。
更新されるテキストを、
所定の時刻または頻度で所定の場所から自動ロードして
前記アクセス可能なテキストとし、
所定の論理式に応じた質問文の答えとなる文字列を、
該アクセス可能なテキストから自動的に抽出又は合成して読み上げることを特徴とする
請求項1から9のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、ニュースサイトが更新するインターネット上のHTMLテキストを「更新されるテキスト」としていた場合には、論理式でフィルタしたニュースのみを所定の時刻や頻度でチェックすることも可能になる。
>また、複数のコンテンツを組み合わせることにより、例えば、目覚まし勉強&ニュースチェック機能が提供できる。
>また、更新されるテキストが社内外のインターフェースとして指定された基幹業務系のドキュメントやデータベースカラムである場合には、さらにテンプレートエンジン等と連携させることにより、タイムリーな自動業務文書作成なども容易となる。
所定の時刻または頻度で、
所定の論理式に応じた質問文の答えとなる文字列を、
所定のアクセス可能なテキストから自動的に抽出又は合成して読み上げることを特徴とする
請求項1から9のいずれか一項に記載のコンピュータプログラムを提供する。
:自動読み上げの時刻又は頻度は、例えば、日ごと時刻設定、時ごと分設定、分ごと秒設定、日時指定、曜日指定など種々の指定方法があってもよい。
>これにより、社内ルールなど不正確な記憶となりがちな知識をくりかえしにより正確に覚えさせることができる。
前記アクセス可能なテキストを、
不特定多数の利用者からの投稿に応じて追加することを特徴とする、
請求項1から11のいずれか一項に記載のコンピュータプログラムを提供する。
:投稿への対応は、所定の共有フォルダやインターネットサイトへの投稿を検知する形でもよく、不特定のインターネットサイトへの投稿をいわゆるクローラーが収集する形でもよい。
>これにより、勉強用のテキストや業務用/趣味用の情報の収集・交換・共有・相互ブラッシュアップ等が可能となる。
前記アクセス可能なテキストを、
不特定多数の利用者からの投稿に応じて編集することを特徴とする、
請求項1から12のいずれか一項に記載のコンピュータプログラムを提供する。
:投稿への対応は、所定の共有フォルダやインターネットサイトへの編集による更新投稿を検知する形でもよく、不特定のインターネットサイトへの編集による更新投稿をクローラーが収集する形でもよい。
>これにより、勉強用のテキストや業務用/趣味用の情報の相互補完・相互チェック等が可能となる。
前記投稿をテーマのカテゴリ階層を明確にして行い、
答えとなる文字列の抽出又は合成に用いるアクセス可能なテキストのユーザー又は論理式による絞り込みを
該階層を指定して行うことを特徴とする
請求項12又は13に記載のコンピュータプログラムを提供する。
:投稿は、以下の内容を明確にしながら行われることが好ましい。
・サーバー
・ファイル名
・タイトル
・バージョン番号
・テキストの内容
・テーマの階層的分類(ツリー状のテーマ)
:カテゴリ(分類)の例としては、以下のようなものが挙げられる。
・地域ニュースツリー(地域による細分)
・研究専門分野ツリー(研究分野による細分)
・イベントツリー(イベント分野による細分(音楽、リサイクル、スポーツ、等))
前記答えとなる文字列に応じた画像または音声を
文字列と同時に又は文字列の代わりに出力(遠隔の複数のコンピュータからなるシステムで機能分割する場合又は同一コンピュータにおいて機能分割する場合には送信であってもよい)することを特徴とする請求項1から14のいずれか一項に記載のコンピュータプログラムを提供する。
:この「音声」は動的な合成音声ではなく事前録音した音声などとすることができる。
:画像は動画であってもよい。
>これにより、論理式に応じたテーマの答えの集合やテキストの内容をより具体的に臨場感をもって表現することができる。
前記答えとなる文字列のみ(一又は複数)、又は、論理式によってはアクセス可能なテキスト自体(一又は複数の組み合わせ)を
端末(スマートフォンであってよい)、又は、該端末のためのアプリケーションソフト宛てに送信し、
該端末又は該アプリケーションソフトにより出力を行うことを特徴とする請求項1から15のいずれか一項に記載のコンピュータプログラムを提供する。
:端末は携帯端末であることが有利であり、このようにして行われる文字列やテキスト自体は、電車やすきま時間での勉強のため、あるいは、ビジネスの現場での情報・知識共有のために使用できる。
>これにより、より自由により適した態様で答えやテキストを提供することが可能となる。
前記抽出、合成又は送信を、中継するコンピュータ経由で行う
請求項16に記載のコンピュータプログラム。
>これにより、複数の利用者に配信しやすくなり、配信もコントロールしやすくなり、コンテンツの配信順を制御したり、コンテンツに広告を挿入したりでき、広告モデルでの安価な提供も可能となる。
>また、発信端末側に複雑な論理演算を用いた抽出や合成や音声合成の機能をもたせる必要がなくなり、発信端末をスマートフォン等の携帯端末とすることが容易となり、投稿(発信)数の向上を期待でき、携帯端末において特に重要な電力の消耗やメモリの使用を減らすことが可能となる。
>また、発信と出力をいずれも同一利用者のスマートフォンとすること等により、(自分や他人の過去の)読み上げを楽しみながら、さらに追加や変更の候補を中継するコンピュータに投稿するスパイラルを楽しむことも容易となる。
前記中継するコンピュータが複数の利用者の端末に配信するように構成した
請求項17に記載のコンピュータプログラム。
:この場合、配信内容に目印をつけるなどすることにより、発信した利用者以外の利用者にのみ配信するように設定することもできる。
:また、配信することを契約した利用者にのみ、あるいは、配信する利用者の数の制限内の利用者にのみ配信するように構成することもできる。
:契約した制限内の数の利用者にのみ配信する場合であって、中継するコンピュータが複数の端末からの要求に応じて配信する場合、IDとパスワードによる認証の他、端末のMACアドレスやその他の端末・利用者属性の組み合わせを(傍受した人が再現できない)ハッシュ値に変換して送信するように端末用アプリケーションソフトをプログラムすることができ、配信要求とともに端末から中継コンピュータに送信されるハッシュ値の種類によって、何台の端末が配信を要求しているかを(たとえ、利用者間で共通のID/パスワードを採用している場合でも)、中継コンピュータが計算することができ、配信数を抑制する等することができる。
>これにより、答えやテキストを、それを必要とする可能性の大きい複数の利用者にタイミングよく配信することが可能となる。
前記中継するコンピュータが、
該中継するコンピュータに新しく送信されたコンテンツからそれ以前に配信されたコンテンツへと
さかのぼるように、
配信を要求した端末または利用者に対して、
内容を送信する
請求項17又は18に記載のコンピュータプログラム。
:ここでコンテンツとは、ひとかたまりの内容をいい、例えば、論理式に応じた複数の解が存在するときはこうした複数の解をまとめて一つのコンテンツとすることができ、一つのニュース記事を構成する複数の文(もともとその順序にも意味がある)はまとめて一つのコンテンツとなる。
>これにより、新しい(多くの場合にその利用者にとってより重要な)コンテンツにより早く触れることが可能となる。
同一の利用者IDまたは利用者グループが所属しているグループチャンネルについて
新しいコンテンツが関係する利用者から中継するコンピュータに送信された場合に
前記さかのぼる制御をリセットして当該新しいコンテンツを先頭として再度さかのぼるように制御する
請求項19に記載のコンピュータプログラム。
>これにより、新しいニュースなどにより敏感に反応して情報共有を行うことができる。
質問文を含む論理式も出力することを特徴とする
請求項1から20のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、読み上げる順序における各順番の意味や位置づけを簡潔に表示することが可能になる。
>また、中継コンピュータ等においてクイズ形式のコンテンツを生成したり、各端末でクイズ形式のコンテンツを実施することが容易になる。
>答えとなる文字列と論理式との組み合わせは、「テーマが何か」とその「答え(解)」を、共通部分と差異部分(複数解のときは複数)として、メリハリのある、しかも少ない通信量/表示量/発話量で最終利用者に伝えることが可能となる。関連したメール配信/連絡等も同じ契機で実施する場合にはパケット量の節約等にもつながる。
出力する答えを導くために用いたテキストまたはその一部も出力することを特徴とする
請求項1から21のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、答えだけでなく、根拠も憶えたり確認したりすることが可能となる。
>また、論理的思考力の醸成につながる。
出力する答えを指定する変数(または可変領域)が一種類(例えば、「$Xは$Yが好き」ではなく「$Xは花子が好き」のように主語のみのとき、等)の場合に、
項目名を省略して出力することを特徴とする
請求項1から22のいずれか一項に記載のコンピュータプログラム。
>これにより、区別する必要もなく本質的でもない変数名などを伝えてしまうコスト(時間、通信、電気、メモリなど)を省略することができる。
出力する答えを指定する変数(または可変領域)が英文アルファベット1文字以外(例えば、「${主語}は${目的語}が好き」等)の場合に、
項目名を省略せずに出力することを特徴とする
請求項1から23のいずれか一項に記載のコンピュータプログラム。
>これにより、複数のフィールドからなる答えのフィールドの位置づけを間違う可能性を減らすことができる。
前記答えとなる文字列もしくはアクセス可能なテキスト自体と、
質問文を含む論理式とから、
前記発信するコンピュータ、前記中継するコンピュータ、又は、前記中継するコンピュータから配信されたコンピュータが、
クイズ形式のコンテンツを生成し、
いずれかのコンピュータで実施することを特徴とする
請求項21に記載のコンピュータプログラムを提供する。
:ここで、もっとも単純なクイズ生成方法は、質問文を自然言語に機械的におきなおし(自然言語を機械生成し)、「答えとなる文字列」をそのクイズの答えとすることである。
:出力する答えを導くために用いたテキストまたはその一部を参照できるときは、それを答えの参考情報として加えることができ、参照できないときは、アクセス可能なテキスト(一つ又は組み合わせ)自体を参考情報として加えることもできる。
>これにより、身近な情報(山田さんの家のポチが子犬を2匹生んだ、等)を蓄積したテキストと身近な質問文を含む論理式(「$Xが$Yを生んだ」、等)とから、身近なクイズ問題を簡易に自動生成することができ、例えば、中継するコンピュータの利用者IDを共有する老人ホームの入居者や特定の学級の生徒が、それらの「内輪ネタ」等を継続的にクイズコンテンツ(例えば、{クイズ問題例1:□が子犬を2匹生んだ,答え:山田さんの家のポチ}、等)にして楽しむことが可能になる。この場合、中継するコンピュータにWEBサーバー機能をもたせ、利用者IDを共有する範囲の端末に対して、生成されたクイズコンテンツをレンダリングするようにしてもよい。
:なお、スクリーンセーバー形式で必要な知識を覚えたり情報を伝達したりするアプリケーションソフトに対して穴埋め形式のコンテンツを提供する場合も同様である。
前記中継するコンピュータが、
配信する前に、
コンテンツに所定の広告を挿入する
請求項21に記載のコンピュータプログラムを提供する。
:テキストに対しては広告テキストだけでなく広告画像や広告音声へのリンクを挿入することができ、音声や動画についてはそれらを挿入したり合成することができる。
>これにより、広告モデルのマネタイズが可能となり、一般消費者に対してより安価に答えやテキストを提供することが可能となる。
前記論理式が前向き推論のための式を含み、
閾値以上になった項目を読み上げた上で閾値以下に戻す
ことを特徴とする請求項1から26のいずれか一項に記載のコンピュータプログラム。
:前向き推論のための式とは、例えばPROLOGのassert文である。変数を文字列に埋め込んだ形式のリテラルを許容する処理系でも、同様のassert文を定義し実施することができる。また別の論理式の例として、「”$A地方で風がふく”―>”$A地方の桶屋が儲かる”:0.6」等と確信度を導入して、所定の命題”北陸地方で風がふく”が真となったときに別の命題”北陸地方の桶屋が儲かる”の当初確信度0.2を0.68(=0.2+0.6-0.2×0.6)などと更新してもよい。別の例では、条件側の確信度が1.0(真)でなく所定閾値0.5のときにも、K←K×0.5として、新しい確信度=0.44(=0.2+0.3-0.2×0.3)とすることにしてもよい。また、条件となる命題やリテラルを複数にして前向き推論を行ってもよく、各条件について確信度が各所定閾値以上の場合に条件を満たすことにしてもよい。
:命題等の真をトリガーとする場合には、テキストを新たにロードしたときに元々真である命題等および直後に真であることが証明できる命題等について前向き推論の論理式を適用することができ、真の命題等に変更(追加、削除など)があったときに確信度をリセットして最初から再適用することなどが可能である。
:確信度が不要なとき(assert文とその逆の文のみのとき)は従来のPROLOG動作時と同様のメモリ構成で対応できるが、確信度を設けるときはクローズドハッシュ等専用のメモリ領域を設けることが好ましい。assertして付け加えられた内容や確信度は論式による問い合わせごと又は利用者によるセッションごとにリセットされるように構成してもよい。
:また、前記ボタン(複数ある)は、前向き推論により又はよらずに、特定の命題を真としたり偽としたり設定できるように定義づけられていることが好ましい。
>これにより、社員や生徒の、影響連鎖についての判断力を強化したり学習させたりさせることができる(単純な前向き推論論理式や複数の条件を含む前向き推論論理式による)。
>また、ニュースとその影響の仮説を自動生成したり、自動判断/自動分析をすることが容易になる。
請求項1から27のいずれか一項に記載のコンピュータプログラムを含む装置を提供する。
請求項1から27のいずれか一項に記載のコンピュータプログラムを用いた方法を提供する。
===
<特許文献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★
{
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-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:解集合):★特許文献1の請求項6の発明で使用する関数の特許文献1の実施例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:解集合):★特許文献1の請求項6の発明で使用する関数の特許文献1の別の実施例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:解集合):★特許文献1の請求項5の発明で使用する関数の特許文献1の実施例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:変数の束縛情報):★特許文献1の請求項2の発明(ただし、「(又は最後)」と「又は前」を省いた実現例)で使用する関数の特許文献1の実施例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に戻る。
}
=====================================================================================================================
ボタンの表示は、テキストを編集するには冗長であるため、例えば、「中2で習う単語は$X:-C2_$X;」などといった書き換えルールがテキストの中に備わっており、「C2_pleasure_楽しみ」「C2_happiness_幸せ」などと各行に表現するだけで「中2で習う単語は$X」の「$X」に「pleasure_楽しみ」「happiness_幸せ」の2つが該当することとなり、読み上げられることとなる。
表示されるボタン集合(論理式を示している)は、どのテキストを選択したかで異なってくる。この例では、テキストごとにボタン集合を定義できるようにしており、PROLOGGのルール(ホーン節)を示す「:-」を「:&」と変えたルールについて、そのヘッドの集合をボタンに表示する論理式の集合としている。
なお、(図示しない)別の実施例では、複数のテキストからなる組み合わせ(論理的にも組み合わせとなり互いのルールと事実が影響しあう)を選択できるように、アクセス可能なテキストの選択がリストボックスではなくチェックボックスになっている。
2 論理式選択ボタン
Claims (17)
- テキスト読み上げ機能を有するコンピュータプログラムであって、
該コンピュータプログラムからアクセス可能なテキスト(文字列の集合。文字列間の順序
性を問うものでもよく問わないものでもよい)であって推論規則
(リテラルとして自然言語に変数を埋め込める形式を用いたPROLOGで表現できる範囲のホーン節に限る)を含んでいるものと、
変数を含んだ文字列をリテラルとして許容しかつリテラルを真とするように変数を埋める
文字列を答えとする質問文を含む論理式とから、
該論理式に応じた該質問文の答えとなる文字列を抽出又は合成して読み上げることを特徴
とする
コンピュータプログラム。 - 前記論理式が事実を含んでいる
請求項1に記載のコンピュータプログラム。 - 前記論理式が推論規則を含んでいる
請求項1又は2に記載のコンピュータプログラム。 - 前記アクセス可能なテキストを、
予め限った選択肢(テキスト集合)の中から
利用者が選択するユーザーインターフェースを有する
請求項1から3のいずれか一項に記載のコンピュータプログラム。 - 更新されるテキストを、
所定の時刻または頻度で所定の場所から自動ロードして
前記アクセス可能なテキストとし、
所定の論理式に応じた質問文の答えとなる文字列を、
該アクセス可能なテキストから自動的に抽出又は合成して読み上げることを特徴とする
請求項1から4のいずれか一項に記載のコンピュータプログラム。 - 前記アクセス可能なテキストを、
不特定多数の利用者からの投稿に応じて追加又は編集することを特徴とする、
請求項1から5のいずれか一項に記載のコンピュータプログラム。 - 前記投稿をテーマの階層的分類を指定して行い、
答えとなる文字列の抽出又は合成に用いるアクセス可能なテキストのユーザー又は論理式
による絞り込みを
該階層的分類を指定して行うことを特徴とする
請求項6に記載のコンピュータプログラム。 - 前記答えとなる文字列に応じた画像または音声を
文字列と同時に又は文字列の代わりに出力(遠隔の複数のコンピュータからなるシステム
で機能分割する場合又は同一コンピュータにおいて機能分割する場合には送信であっても
よい)することを
特徴とする
請求項1から7のいずれか一項に記載のコンピュータプログラム。 - 前記答えとなる文字列のみ(一又は複数)、又は、論理式によってはアクセス可能なテキ
スト自体(一又は複数の組み合わせ)を
端末(スマートフォンであってよい)、又は、該端末のためのアプリケーションソフト宛
てに送信し、
該端末又は該アプリケーションソフトにより出力を行うことを
特徴とする
請求項1から8のいずれか一項に記載のコンピュータプログラム。 - 前記抽出又は合成を、中継するコンピュータ経由で行う
請求項5に記載のコンピュータプログラム。 - 前記中継するコンピュータが、
該中継するコンピュータに新しく送信されたコンテンツからそれ以前に配信されたコンテ
ンツへと
さかのぼるように、
配信を要求した端末または利用者に対して、
内容を送信し、
同一の利用者IDまたは利用者グループが所属しているグループチャンネルについて
新しいコンテンツが関係する利用者から中継するコンピュータに送信された場合に
前記さかのぼる制御をリセットして当該新しいコンテンツを先頭として再度さかのぼるよ
うに制御する
請求項10に記載のコンピュータプログラム。 - 出力する答えを指定する変数(または可変領域)が一種類(例えば、「$Xは$Yが好き
」ではなく「$Xは花子が好き」のように主語のみのとき、等)の場合に、
項目名を省略して出力することを特徴とする
請求項1から11のいずれか一項に記載のコンピュータプログラム。 - 出力する答えを指定する変数(または可変領域)が英文アルファベット1文字以外(例え
ば、「${主語}は${目的語}が好き」等)の場合に、
項目名を省略せずに出力することを特徴とする
請求項1から12のいずれか一項に記載のコンピュータプログラム。 - 質問文を含む論理式も出力し、
前記答えとなる文字列もしくはアクセス可能なテキスト自体と、
質問文を含む論理式とからクイズ形式のコンテンツを生成し実施することを特徴とする
請求項1から13のいずれか一項に記載のコンピュータプログラム。 - 前記論理式が確信度を含む前向き推論のための論理式を含み、
確信度が所定の閾値以上になった項目を読み上げる
ことを特徴とする請求項1から14のいずれか一項に記載のコンピュータプログラム。 - 請求項1から15のいずれか一項に記載のコンピュータプログラムを含む装置。
- 請求項1から15のいずれか一項に記載のコンピュータプログラムを用いた方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016196069A JP7020659B2 (ja) | 2016-10-03 | 2016-10-03 | テキストをもとに出力するコンピュータプログラム、装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016196069A JP7020659B2 (ja) | 2016-10-03 | 2016-10-03 | テキストをもとに出力するコンピュータプログラム、装置及び方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2018060298A JP2018060298A (ja) | 2018-04-12 |
JP2018060298A5 JP2018060298A5 (ja) | 2019-12-05 |
JP7020659B2 true JP7020659B2 (ja) | 2022-02-16 |
Family
ID=61910021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016196069A Active JP7020659B2 (ja) | 2016-10-03 | 2016-10-03 | テキストをもとに出力するコンピュータプログラム、装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7020659B2 (ja) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005071027A (ja) | 2003-08-22 | 2005-03-17 | Nippon Telegr & Teleph Corp <Ntt> | コミュニティ位置インデックスサーバ |
JP2006047570A (ja) | 2004-08-03 | 2006-02-16 | Konan Gakuen | 学習者の情意面を考慮した電子教育システム並びに教育用コンテンツ配信方法及びプログラム |
JP2014130192A (ja) | 2012-12-28 | 2014-07-10 | Green Leaf Co Ltd | 英語教材配信システム |
JP2014211725A (ja) | 2013-04-17 | 2014-11-13 | ナレルシステム有限会社 | 知識や情報を処理する方法、装置及びコンピュータプログラム |
JP2015060545A (ja) | 2013-09-20 | 2015-03-30 | 本田技研工業株式会社 | 情報処理システム及びクライアント端末 |
JP2016118598A (ja) | 2014-12-19 | 2016-06-30 | 日本電信電話株式会社 | 単語提示装置、計算装置、これらの方法及びプログラム |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02205885A (ja) * | 1988-12-28 | 1990-08-15 | Roehm Properties Bv | 電子学習装置 |
-
2016
- 2016-10-03 JP JP2016196069A patent/JP7020659B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005071027A (ja) | 2003-08-22 | 2005-03-17 | Nippon Telegr & Teleph Corp <Ntt> | コミュニティ位置インデックスサーバ |
JP2006047570A (ja) | 2004-08-03 | 2006-02-16 | Konan Gakuen | 学習者の情意面を考慮した電子教育システム並びに教育用コンテンツ配信方法及びプログラム |
JP2014130192A (ja) | 2012-12-28 | 2014-07-10 | Green Leaf Co Ltd | 英語教材配信システム |
JP2014211725A (ja) | 2013-04-17 | 2014-11-13 | ナレルシステム有限会社 | 知識や情報を処理する方法、装置及びコンピュータプログラム |
JP2015060545A (ja) | 2013-09-20 | 2015-03-30 | 本田技研工業株式会社 | 情報処理システム及びクライアント端末 |
JP2016118598A (ja) | 2014-12-19 | 2016-06-30 | 日本電信電話株式会社 | 単語提示装置、計算装置、これらの方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP2018060298A (ja) | 2018-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11823074B2 (en) | Intelligent communication manager and summarizer | |
US10496749B2 (en) | Unified semantics-focused language processing and zero base knowledge building system | |
US20170017635A1 (en) | Natural language processing system and method | |
Shawar et al. | A comparison between Alice and Elizabeth chatbot systems | |
Park et al. | Systematic review on chatbot techniques and applications | |
Patel et al. | Applied Natural Language Processing in the Enterprise | |
CN108710695A (zh) | 基于电子书的思维导图生成方法及电子设备 | |
CN110851797A (zh) | 基于区块链的作品创作方法及装置、电子设备 | |
JP6895037B2 (ja) | 音声認識方法、コンピュータプログラム及び装置 | |
Donnarumma | Against the norm: othering and otherness in AI aesthetics | |
JP2014211725A (ja) | 知識や情報を処理する方法、装置及びコンピュータプログラム | |
Heflin | AI-generated literature and the vectorized word | |
Attigeri et al. | Advanced NLP Models for Technical University Information Chatbots: Development and Comparative Analysis | |
Androutsopoulos et al. | Source authoring for multilingual generation of personalised object descriptions | |
JP6905729B2 (ja) | 探索枝刈り方法、コンピュータプログラム及び装置 | |
Tamla | Supporting access to textual resources using named entity recognition and document classification | |
JP7020659B2 (ja) | テキストをもとに出力するコンピュータプログラム、装置及び方法 | |
JP2018190184A (ja) | 自然言語テキストからアイディアを自動合成する方法、コンピュータプログラム及び装置 | |
Mabunda | An intelligent chatbot for guiding visitors and locating venues | |
JP6924461B2 (ja) | 変数を含んだ文字列をリテラルとして許容する論理プログラムを処理する方法、コンピュータプログラム及び装置 | |
JP2018063509A (ja) | テキストをもとに出力するコンピュータプログラム、装置及び方法 | |
Hypský et al. | Definition of Business Rules Using Business Vocabulary and Semantics. | |
Jali et al. | Behavioral model generation from use cases based on ontology mapping and GRASP patterns | |
JP2018081598A (ja) | 広告方法、コンピュータプログラム及び装置 | |
JP2018085002A (ja) | 発言や思いに対しデジタルで実時間対応する方法、コンピュータプログラム及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A80 | Written request to apply exceptions to lack of novelty of invention |
Free format text: JAPANESE INTERMEDIATE CODE: A80 Effective date: 20161021 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191003 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20191003 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200812 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200827 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20201026 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20201228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210622 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210823 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20211026 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211123 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20211228 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220127 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7020659 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |