JP6895037B2 - 音声認識方法、コンピュータプログラム及び装置 - Google Patents
音声認識方法、コンピュータプログラム及び装置 Download PDFInfo
- Publication number
- JP6895037B2 JP6895037B2 JP2016216820A JP2016216820A JP6895037B2 JP 6895037 B2 JP6895037 B2 JP 6895037B2 JP 2016216820 A JP2016216820 A JP 2016216820A JP 2016216820 A JP2016216820 A JP 2016216820A JP 6895037 B2 JP6895037 B2 JP 6895037B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- computer
- information module
- recognition
- variable
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Machine Translation (AREA)
Description
高齢者が利用する際のもっとも効果的な用途は、実際の配偶者や旅行ガイドの人格を知識として表現した情報モジュール(論理プログラム/思考プログラム)等との音声を主とした対話である。
しかし、現状の音声認識の技術レベルについていえば、特に短文の認識パターンについては、音声認識しなければならないそのような認識パターンの種類が多くなればなるほど認識品質が低下するため、認識パターンの種類が多い大規模なコンテンツを開発しにくくなっていた。このため、音声インターフェースに頼って利用者の満足するコンテンツを提供していくことが困難となっていた。
コンピュータが利用者と相互作用する方法であって、
コンピュータが利用者(人に限らない。以下、同じ)の声又は環境音を所定の認識パターンであると音声認識することに応じて利用者変数の遷移、利用者への出力(テキスト、音声、画像等)又はその両方をコンピュータが行うための情報(一以上の認識パターンの情報も含む)を含んだ複数の情報モジュールについて、
第一の情報モジュールがコンピュータに第二の情報モジュールを参照させるための情報(URI、メモリ内ポインタ、構造体配列のインデックス、等)を含んでおり、
コンピュータが第一の情報モジュールの該参照させるための情報に基づいて第二の情報モジュールを参照したときに、
コンピュータが第一の情報モジュールに含まれる認識パターンの情報よりも第二の情報モジュールに含まれる認識パターンの情報を優先して音声認識を行うようにした方法を提供する。
:ここで「優先して」とは、第二の情報モジュールに含まれる認識パターンとの一致度閾値を第一のモジュールに含まれる認識パターンに比して下げたりするだけでなく、第一の情報モジュールに含まれる認識パターンの情報を全く無効化すること(例えば、いわゆる「コマンドリスト」(音声認識する文字列の集合)から削除したり、一時的にマスクしたりすること)も含む。
>このようにすることにより、システムとして音声認識すべきコマンド(文字列)の種類が非常に多い(例えば、インターネットで相互される情報モジュール集合が不特定多数の利用者によってアップロードされる場合は時間を経るごとに大きくなり続ける)場合でも、利用者との対話の文脈や状況ごとに認識が必要な文字列(コマンド)のみをコマンドリストに登録する等することができ、(通常はコマンド種類が多くなるにつれてコマンド間の差異が小さくなり)誤認識しがちになる音声認識の品質を維持しやすくなる。
また、請求項2は、
コンピュータが、前記参照させるための情報により、情報モジュール(たとえば、URIが指す静的ファイルや動的生成ファイル)間を移動して、認識パターンの情報以外の情報も第二の情報モジュールの情報を優先するようにした
請求項1に記載の方法を提供する。
:ここで、例えば、<URI>で指定できる情報モジュールをインターネットページとみなして移動するルールは「<認識パータン>/<認識パターン表示条件>:#<変数(グローバル/ローカル)の変動>;<演出スクリプト>;moveto "";」等と人間が記載するようにコーディング規則を設け、情報モジュールの解釈プログラムがそのコーディング規則に依存して解釈するようにすることができる。
>これにより、インターネットページの編集アップロード/ダウンロード表示と同様の作法/プロトコルにより、コンテンツを編集/実行することが可能となり、コンテンツの運用が容易になる。
また、請求項3は、
コンピュータが、前記参照させるための情報により、情報モジュール(たとえば、URIが指す静的ファイルや動的生成ファイル)間をサブルーチン呼び出しして戻るまでの間、認識パターンの情報以外の情報も第二の情報モジュールの情報を優先するようにした
請求項1に記載の方法を提供する。
:ここで、例えば、<URI>で指定できる情報モジュールをインターネットページとみなして移動するルールは「<認識パータン>/<認識パターン表示条件>:#<変数(グローバル/ローカル)の変動>;<演出スクリプト>;call "";」等と人間が記載するようにコーディング規則を設け、情報モジュールの解釈プログラムがそのコーディング規則に依存して解釈するようにすることができる。
>これにより、インターネットページの編集アップロード/ダウンロード表示と同様の作法/プロトコルにより、コンテンツを編集/実行することが可能となり、コンテンツの運用が容易になる。
:サブルーチンの呼び出し関係の管理は、スタック配列等公知の手法で明らかに行うことができる。
>これにより、呼び出した後の最終的な遷移先である呼び出し元をスタック配列等として簡潔に管理することができ、階層構造化したメニュー情報や樹系図的なまとまりのあるストーリー制御情報の管理・運用が容易となる。
また、請求項4は、
コンピュータが、
前記サブルーチン呼び出しのその時点での呼び出し関係の連鎖上にある情報モジュールに含まれる認識パターンの情報のみを用いて音声認識をするようにした
請求項3に記載の方法を提供する。
>これにより、元の認識パターンにも対応しながら、より具体的な状況の進展に応じた新しい認識パターンにも対応する場合に、認識パターンの拡大と縮小の範囲の決定と制御を簡潔に行うことができる。
>特に、階層のトップからは、認識品質を保ちながら、すべてのページにたどりやすくなる。
また、請求項5は、
コンピュータが、
前記サブルーチン呼び出しのその時点での呼び出し関係の連鎖の先端にある情報モジュールに含まれる認識パターンの情報のみを用いて音声認識をするようにした
請求項4に記載の方法を提供する。
>これにより、階層的に構成したコマンドメニュー等に応じて、認識パターンも移動した階層のものに変更することや、任意の状態から一つ上の階層にもどる(したがって認識パターン集合も元にもどる)ように状態遷移することも容易となる。
また、請求項6は、
前記サブルーチン呼び出しのその時点での呼び出し関係を戻るための固定の認識パターン
を情報モジュールにかかわらずにもつようにした
請求項4又は5に記載の方法を提供する。
:「固定の認識パターン」の例としては、「前に戻る」「リターン」「元のページへ」等が考えられる。
>これにより、利用者が、どの情報モジュールに遷移しても、より状況の適した元の場所まで戻れるという安心感をもって音声認識をさせることが可能になる。
また、請求項7は、
前記サブルーチン呼び出しのその時点での呼び出し関係をすべて清算して戻るための固定の認識パターン
を情報モジュールにかかわらずにもつようにした
請求項4又は5に記載の方法を提供する。
:「清算して戻る」先の例としては、アプリケーションの環境変数やレジストリに所定の「ホーム」として指定されたページやURIを指定してアクセスしたページ等を挙げることができる。
:「固定の認識パターン」の例としては、「オールキャンセル」「ホームへ戻る」「トップへ」「最初からやりなおし」等が考えられる。
>これにより、利用者が、どの情報モジュールに遷移しても元に戻れるという安心感をもって音声認識をさせることが可能になる。
また、請求項8は、
認識されるパターンが所定時間存在しないときに
コンピュータが、
前記サブルーチン呼び出しのその時点での呼び出し関係を
自動で戻るようにプログラムした
請求項4又は5に記載の方法を提供する。
>これにより、慣れていない利用者でも、しばらくだまっていさえすれば元のホームメニュー等に自然にもどることができ、前とは別のメニューを試したり(つまり発声したり)して、自分の行いたい命令や質問に、時間をかければたどりつくことができる可能性が高まる。
また、請求項9は、
コンピュータが、
音声認識しなければならない認識パターンが多い場合に、
その一部のみを画面表示した上で、
所定の認識パターンに応じて画面スクロール又は画面切り替えを行う
請求項1から8のいずれか一項に記載の方法を提供する。
:「所定の認識パターン」の例としては、「右」(右スクロール)、「左」(左スクロール)、「上」(上スクロール)、「下」(下スクロール)、「トップ」(最左又は最上位までスクロール)、「ボトム」(再右又は最下位までスクロール)などが挙げられる。
>これにより、音声認識のみにより選択肢のすべてを確認することが容易になる。
また、請求項10は、
コンピュータが、
表示できている認識パターンのみを音声認識の対象にする
請求項9に記載の方法を提供する。
>これにより、選択肢を網羅しながらの、さらなる認識パターンの絞り込みによる認識品質改善が可能になる。
また、請求項11は、
コンピュータが、
前記一部のみを画面表示する際に、
音声認識で混同しにくいもの同士をグループ化して
グループ化してできた複数のグループにわたって画面スクロール又は画面切り替えを行う
請求項9又は10に記載の方法を提供する。
:音声認識で混同しにくいもの同士のグループ化は、たとえば認識パターンを表現したテキスト(又はその音素列を表現したテキスト)間の編集距離を計算して、距離の近いもの同士を別グループにするようにして実現することができる。
:また、画面スクロールを部分的に(すなわち表示されている認識パターンの一部のみについて)行う場合は、スクロールアウトする認識パターン集合に含まれない認識パターンのうち、スクロールアウトされずに残るいずれの認識パターンにも編集距離が近くない(例えば、所定の閾値以上の)認識パターンであって、まだ表示(初期表示又はスクロールイン)されたこともなくスクロールアウトされたこともない認識パターンを優先的にスクロールインするようにプログラムすることができる。
>これにより、スクロールや画面切り替えの効率が向上する。
また、請求項12は、
コンピュータが、
音声認識する認識パターンの範囲を、
利用者が直前に音声指定した状況ごとに変更できる
請求項1から11のいずれか一項に記載の方法を提供する。
:以下に、「直前に音声指定した状況」(「状況イコール○○」と音声指定する場合)と、対応する「認識パターンの範囲」(集合)の例を示す。
===
状況イコール「連絡」
・本日の作業無事終了
・予定より遅れている
・応援頼む
===
状況イコール「お天気調査」
・金沢
・小松
・東京
===
状況イコール「現在」
・時刻は?
・ドル相場は?
===
>これにより、状況に応じた適切な認識パターンのしぼりこみと認識品質の向上が可能となる。しぼりこみは、人間があらかじめ列挙したり、品詞などの型を定義してしぼりこんでおいたり、PROLOG等を用いて動的にしぼりこんでおいてもよい。
また、請求項13は、
コンピュータが、
音声認識する認識パターンの範囲を、
利用者が直前に音声指定又は音声によりコンピュータに自動推測させた
文章タイプ又は格もしくは格の値(深層格、表層格、など)ごとに変更する
請求項1から12のいずれか一項に記載の方法を提供する。
:以下に、プログラミング担当者が会社にヒアリングして「ホームメニュー」の下の「通信メニュー」として情報モジュールを設定した例を示す。
===
(とある会社社長の「ホームメニュー」の下の「通信メニュー」の認識パターン集合)
・タイプは自発報告
・タイプは報告依頼
・タイプは打ち合わせ
・タイプはプレゼン申込
・タイプはメールによる商談申込
・タイプは電話による商談申込
・タイプははがきによる商談申込
===
主体は(コンピュータが自動プロンプトする。「タイプは電話による商談申込」であったことに依存して表示されかつ認識パターンとなる集合。担当者が事前にコンピュータに設定する等する。以下同じ)
・僕
・秘書
・営業部長
・製造部長
・「キャンセル」(通信メニュー配下で用いる)→ホームの下の通信メニューに戻る
・「オールキャンセル」(どのような状況・文脈でも常に存在する)→ホームメニューに戻る
−−−
相手は(コンピュータが自動プロンプトする。「タイプは電話による商談」「(主体は)営業部長」であったことに依存して表示されかつ認識パターンとなる集合)
・○○工業
・□□商会
・△△鉄工所
−−−
商品は(コンピュータが自動プロンプトする。「タイプは電話による商談」「(主体は)営業部長」「(相手は)○○工業」であったことに依存して表示されかつ認識パターンとなる集合)
・原料A
・製品B
・メンテナンスC
===
また、請求項14は、
複数の前記情報モジュールを、
該情報モジュールに関連する実際の緯度、経度もしくは高度、又は、仮想の座標に関係づけて記憶し、
利用者の指定した座標範囲内に位置する情報モジュールに含まれる認識パターンの情報のみを
音声認識可能にする
請求項1から13のいずれか一項に記載の方法を提供する。
:「情報モジュールに関連する」とは、たとえば情報モジュールが住民人格に似せたAIと対話するための情報モジュールの場合は、その住民の住所の緯度・経度・高度等であり、情報モジュールが移動体(たとえば実際の旅人やロールプレイングゲーム内の仮想のモンスター等)と対話するための情報モジュールの場合は、その現在位置の座標等である。
>これにより、「注目する場所付近に大声で呼びかけてみる」ことに相当する機能をコンピュータ上で果たすことができる。
>この方法においては、緯度、経度、高度や仮想座標等を連続的に移動しながら地域や仮想空間を探索する旅のような感覚を利用者に味わっていただくようにユーザーインターフェイスを構成することも有利であり、移動が不自由な高齢者等が生まれ故郷付近を探訪したい欲求等をかなえることができ、幅広い層のQOLが劇的に向上する。
>また、散策コンテンツやアドベンチャーゲームと連動するマルチメディアコンテンツ(音声だけでなく画像も表示してもよい)として構成する場合には、緯度・経度上の特定の方角を前進後退したり、左右に方向転換(30度単位、45度単位、90度単位など)したりできるようにUIを構成することもでき、散策やゲーム自体にふくらみを持たせるのに役立てることができる。
また、請求項15は、
複数の前記情報モジュールを、
該情報モジュールの内容に関連する階層的なテーマタグ(地域階層、勉強分野階層、機能分野階層、等)に関係づけて記憶し、
利用者の指定したテーマタグ配下に位置する情報モジュールに含まれる認識パターンの情報のみを
音声認識可能にする
請求項1から14のいずれか一項に記載の方法を提供する。
:階層的なテーマタグの例を以下に示す。この例では、利用者が松村を指定したときは「日本>石川>金沢>松村>1丁目」のディレクトリに配置された情報モジュール(又は「日本>石川>金沢>松村>1丁目」というテーマタグを含む情報モジュール)だけでなく「日本>石川>金沢>松村>2丁目」のディレクトリに配置された情報モジュール(又は「日本>石川>金沢>松村>2丁目」というテーマタグを含む情報モジュール)の認識パターン情報も同時に音声認識することになる。
===
日本
東京
石川
金沢
松村
1丁目
2丁目
・・・
小松
白山
・・・
===
勉強
国語
文法
語彙
・・・
算数
四則演算
ツルカメ算
===
機能
安全
QOL向上
安心
衛生
自己実現
・・・
===
>これにより、さまざまな粒度の範囲指定が簡単になる。
また、請求項16は、
同一の認識パターンが、コンピュータが行う複数の出力に関連づけられているとき
乱数を用いて一の出力だけを実行する
請求項1から15のいずれか一項に記載の方法を提供する。
>これにより、何度も同じことを発声する意味とコンテンツの深みが出てくることになり、再訪などを促すことができる。
また、請求項17は、
所定の情報モジュールに値が固定された変数をもたせ、
利用者が該情報モジュールを読み込んだときに該変数と該固定された値を記憶し、
他の情報モジュールを優先して参照した場合にも
該変数と該固定された値は該他の情報モジュールから参照はできるが変更や削除はできないように
構成した
請求項1から16のいずれか一項に記載の方法を提供する。
:例えば、あるリッチクライアントを用いたある処理系において、利用者ごとのホームとなる情報モジュール内の「&&」ではじまる変数や事実やルールは、その利用者固有のものなので、そのリッチクライアントのカレントURI(現在最も優先している情報モジュール)が、ホームとなる情報モジュール(PC内の所定のローカルファイルとして設定している)から、他のどの情報モジュール(URIで示す他のローカルファイルやネットページ等)に移動してもかわらないし、追加されたり削除されたり更新されたりすることもなく、ただし他の情報モジュールから参照だけはされるように構成することができる。これは、例えば、リッチクライアント内外にそのリッチクライアントのみが参照できるグローバルメモリ領域又は環境変数と同様の仕組みを設けることにより実現することができる。リッチクライアントがプログラムリストとして情報モジュールを読み込めるようにする場合には、プログラムの最初に、&&ではじまる変数や、PROLOGで用いるような事実やルール(ただし、&&ではじまるものに限る)が常に残るようにしてもよい。
>これにより、どのような情報モジュールに移動等しても、その利用者が好む特定の認識パターンを認識させて処理すること等が可能になる。
また、請求項18は、
所定の情報モジュールに静的又はグローバルである旨を指定した変数をもたせ、
利用者が該情報モジュールを読み込んだときに該変数をグローバルに宣言かつ定義し、
他の情報モジュールを優先して参照した場合にも
該変数を該他の情報モジュールから参照、変更又は削除できるようにプログラムした
請求項1から17のいずれか一項に記載の方法。
:例えば、あるリッチクライアントを用いたある処理系において、情報モジュール内の「&」ではじまる変数や事実やルールは、静的又はグローバルであり、そのリッチクライアントのカレントURI(現在最も優先している情報モジュール)が、他のどの情報モジュール(URIで示す他のローカルファイルやネットページ等)に移動しても維持され、その静的な値をもつ変数(例えば&${所持金}=100000000円)を、その新しい情報モジュール内で明示的に参照したり更新したり削除したりすることもできる。
>これにより、情報モジュールを移動しても維持されるべき値や属性を維持することができ、文脈の整合性が高いアドベンチャーゲームや情報モジュール間のコミュニケーションの実現が可能になる(参照範囲を一律に制限することの弊害の除去)。
:上の例では、緯度・経度の近いページへ方向転換と前進で移動したときに、&ではじまる変数が残り蓄積されていく。緯度・経度が近い移動だけでなく、新幹線や飛行機で移動する旨の認識パターン「東京へ新幹線で移動」に対してはそのような遷移、たとえば、「{&${所持金}=&${所持金}−21000};VLOAD http://humanote.xyz/jploc_kkh/0234/8562/56/東京駅.jpl;」といった情報モジュール内処理スクリプトを充てることができる。
また、請求項19は、
音声認識する認識パターンの集合を変化する毎に
コンピュータが
その旨を音声又は画面表示により示すようにプログラムした
請求項1から18のいずれか一項に記載の方法。
:ここで、「その旨を示す」例としては、「動物園の情報モジュール(ページ)に入りました(仮想散策ゲーム内)」として大きな区切りを示してもよく、「魔法使いが近くにいなくなりました(仮想アドベンチャーゲーム内)」や「英語の質問をすることができるようになりました(地域散策コンテンツ内)」等と選択肢の差分を示してもよく、変化後のすべての選択肢(認識パターンの集合)を逆にコンピュータが読み上げ、読み上げの途中や読み上げた直後に「それをお願い」と利用者が言った認識パターンに紐づく処理を行うようにしてもよい。
>これにより、音声の場合は音声のみでのコミュニケーションが可能になり、ドライブ中でも複雑な内容をより効果的に伝達しあうことが可能になる。
:ここで出力する音声は、明らかに、自動推論等により動的に生成したテキストからの音声合成(読み上げ音)だけでなく、現地ライブ音声(play http://hoge.jp/aa.live)や録音音声も再生(play http://hoge.jp/aa.mp3)することができる。これにより、音声だけでコミュニケーションを行いたい場面や利用者層に対して、より臨場感の高い仮想アドベンチャーゲームや地域散策コンテンツの提供することが可能となる。
また、請求項20は、
当該方法に関連して
音声認識させるために利用者が発話しコンピュータが受話した内容及び認識パターンにより認識した結果とを
コンピュータが蓄積して、
利用者の行動、傾向又は実績(発音上達度を除く。除いたもの以外は、勉強カリキュラムや業務ノルマ等の消化度や消化範囲等も含む)を分析又は評価することを特徴とする
請求項1から19のいずれか一項に記載の方法を提供する。
:なお、ここでは、利用者の発話行動に関連づけて日時(クライアント又はサーバーが管理する時計における)や場所(情報モジュールのURI、利用者端末のGPS位置、等)も蓄積することが、精密な分析や評価にとって有利である。
また、請求項21は、
同一の情報モジュール又は座標の近接した情報モジュール集合を同時にアクセスしている利用者の集合が
テキスト、音声又は音声動画によるグループ通信をできるようにプログラムした
請求項1から20のいずれか一項に記載の方法を提供する。
>これにより、仮想アドベンチャーコンテンツや散策コンテンツとして、特に音声に頼る利用者からの満足度が、他の利用者とのコミュニケーション機会、コンテンツの価値を自らの情報補足等により向上させる機会、等により、向上する。
:なお、ここで用いられる利用者の識別は、通常のIDとは異なるIDが示されることが有利である。
:このグループ通信は、明示的に開始しなくても、現実世界と同様に、抑制しないかぎり(抑制オプションなどをチェックしない限り)利用者のリッチクライアントに自然と表示されたり音声として流れてくることが有利である。
:ただし、音声認識させるための自分の発言とは区別されないといけないので、「雑談開始」と「コマンド開始」という予約語の音声認識により、周囲の人と雑談するモードと、コンピュータに音声認識させるモードとを切り替えて使用するようにしてもよい。
:なお、座標が近接した情報モジュールとして、テーマ(地域、勉強、機能)の階層における枝が近いものも含めることもできる。
また、請求項22は、
音声以外のコンテンツ(画像表示、現在のグローバル変数の状態、現在参照している情報モジュールが示す状況テキスト)にそれぞれフォーカスするための予約語を用意した
請求項1から21のいずれか一項に記載の方法を提供する。
>これにより音声以外のコンテンツの出力を確認することが容易になる。
また、請求項23は、
請求項1から22のいずれか一項に記載の方法を実施するためのコンピュータプログラムを提供する。
また。請求項24は、
請求項1から22のいずれか一項に記載の方法を実施するための装置を提供する。
===
<特許文献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に戻る。
}
=====================================================================================================================
以上が、特許文献1(特願2014−087008)からの抜粋である。
===========================================================
特許文献6は、請求項1として、
テキスト読み上げ機能を有するコンピュータプログラムであって、
該コンピュータプログラムからアクセス可能なテキスト(文字列の集合。文字列間の順序性を問うものでもよく問わないものでもよい)と、
変数を含んだ文字列をリテラルとして許容しかつリテラルを真とするように変数を埋める文字列を答えとする質問文を含む論理式とから、
該論理式に応じた該質問文の答えとなる文字列を抽出又は合成して読み上げることを特徴とする
コンピュータプログラム、を提供する。
:ここで、「アクセス可能なテキスト」は、たとえば、自然言語で記述された事実の集合、及び、リテラルとして自然言語に変数を埋め込める形式を用いたPROLOGのホーン節であるルール(推論規則)の集合であり、ルール(推論規則)を含んでいてもよく、含んでいなくてもよい。
:「変数を埋める文字列を答えとする質問文を含む論理式」は、そのような質問文以外の事実やルール(推論規則)を含んでいてもよく、含んでいなくてもよい。正規表現またはそのサブセットと等価なものさらにそれらを拡張したものであってもよい。
:「ルール(推論規則)」は、プロダクションルール、項書き換え規則、PROLOGのホーン節、等であってもよく、さらに、これらを文字列に変数を埋め込んだリテラルを許す形式に拡張したものであってよい。
>これにより、自然言語テキストだけのときや、論理式だけのときよりも、論理の表現と(読み上げ機能のための)音声合成のための表層的自然言語表現とが一体となったテキスト形式の知識表現として、一元的に管理することができるようになり、知識の追加、編集、削除等が、一般的な論理型(宣言型)/手続型プログラミング言語(PROLOG、AWK、SQL、PERL、PHP、C++、JAVA(登録商標)、等)を知らない小学生でも気軽に実施可能となる。
>また、変数を埋める文字列を答えとする質問文を含む論理式を用いることから、各答えを含む各文章全体や各文全体でなく、各答えのポイントとなる文字列のみ(共通部分が多い文字列の相違部分のみ)を、動的に(すなわち質問文の異なりに応じて)要領よく(退屈/冗長とならないように)抽出・合成して読み上げることが可能となる。
(0006)
特許文献6は、請求項2として、
前記アクセス可能なテキストが推論規則を含んでいる
請求項1に記載のコンピュータプログラムを提供する。
:ここで、「推論規則」は、例えば、PROLOGのホーン節のリテラルとして、文字列に変数を含んだ形式を許し、「ご近所は$X:-req "http://hoge.net/JP/ISHIKAWA/KOMATSU/BIRUGAWA.jpl"; $X;」等とすることができる。この意味は、「インターネットの所定URL(この例では、地域を階層的にフォルダ管理しているサイト)からBIRUGAWA.jplファイルを取得し、その各行を”ご近所は”に連接することにより得られる文字列の全体を真とする」である。
>これにより、遠隔で更新されるインターネット上のローカルニュースのうち関心のあるファイルにのみアクセスして関心のある部分だけを(「$Yと$Zが結婚した」などと)抽出して(場合によってはさらに「$Yと$Zは新婚夫婦である」などとテキスト同士の新たな合成をもして)読み上げる等といった機能をモジュール定義して、動的にそのまま利用したり、あるいは静的に一部の機能だけを修正して再利用したり、さらに関連分野の分析・抽出用途に流用したりすることを容易にする。
(0007)
特許文献6は、請求項3として、
前記論理式が事実を含んでいる
請求項1または2に記載のコンピュータプログラムを提供する。
:ここで、「事実を含む論理式」の簡単な例として”「今日は天気がよい」「太郎は趣味の$Xに夢中になれる」”を挙げる。
:この場合、「今日は天気がよい」は事実であり、
推論規則を含むテキスト(例えば、
「太郎は趣味の釣りに夢中になれる:−今日は天気がよい;」
「太郎は趣味の読書に夢中になれる:−今日は天気が悪い;」
「太郎は好きな仕事に夢中になれる」
)に、
この事実(「今日は天気がよい」)を付加した上で
「太郎は趣味の$Xに夢中になれる」の「$X」を埋められる解(この場合「釣り」)を求めることになる。
>これにより、動的に(質問時に、一時的に)成立しうるルールとそうでないルールを切り分けたり、論理式内の質問文に答えるヒントを自ら提供したり、問題や解の範囲を広げたり制限したりすることが可能になる。
(0008)
特許文献6は、請求項4として、
前記論理式が推論規則を含んでいる
請求項1から3のいずれか一項に記載のコンピュータプログラムを提供する。
:ここで「推論規則を含む論理式」は、例えば、”「小松市小1算数は$X:-req "http://hoge.net/JP/ISHIKAWA/KOMATSU/ELEMENTARY/1/ARITH.jpl"; $X;」「小松市$X?」”等であってもよい。
>これにより、動的に(質問時に、一時的に)適用したい(解釈、書き換え、等のための)ルールを質問ごとに付記することができるようになる。また、その解釈の真偽を通じて、事実の場合と同様に、成立しうるルールとそうでないルールを切り分けたり、論理式内の質問文に答えるヒントを自ら提供したり、問題や解の範囲を広げたり制限したりすることが可能になる。
(0009)
特許文献6は、請求項5として、
前記アクセス可能なテキストを、
予め限った選択肢(テキスト集合)の中から
利用者が選択するユーザーインターフェースを有する
請求項1から4のいずれか一項に記載のコンピュータプログラムを提供する。
:このようなインターフェースは、ハードウエアとしてのドラムロール、ジョグダイアル、ソフトウエアコントロールとしてのリストボックス(N段組み形式でもよい)、コンボボックス、ラジオボタン等、または、それらを組み合わせて表現したコンピュータグラフィック、等とすることができる。
:テキスト集合は、例えば、ローカルファイルへのパスの集合、社内LAN共有フォルダへのパスの集合、インターネットファイルへのURL/URIパスの集合、メモリ内のテキストへのポインタ、又はそれらの組み合わせとすることができる。
>これにより、小中学生を含めた未成年教育用途などの場合に、コンテンツを制限することができる。また、科目ごとに対象とするテキストを分けて低学年や高齢者でも効率的にアクセス・編集・管理することができる。
(0010)
特許文献6は、請求項6として、
アクセス可能なテキスト毎にテキストと対応する論理式集合を関連づけて記憶し、
アクセスしているテキストと対応する論理式集合から論理式を利用者が選択するユーザーインターフェースを有する
請求項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個を選択できるインターフェースであれば、ボタン式に限るものではなく、ドラムロール式タッチ式、脳波測定選択式など、種々の方法を利用することができる。
:また、従業員の顔認識センサーと連動させるときは、従業員ごとによく押下するボタンをコンピュータに記憶させたり、管理者側が従業員毎に覚えさせたい内容(ルール、専門知識、最新情報、英単語、連絡事項など)を表す論理式をコンピュータに記憶させたりして、従業員が近づいて認識されたときに、ボタンを押さなくても、その従業員に知らせる/勉強させるべき内容を音声等で出力することができる。
:また、高齢者については、分野別に整理された身近な内容(友達一覧、親戚一覧、買い物先一覧、電話先一覧・・・を示す各ボタン)により物忘れの防止にも用いることもできる。
:また、学校では、その学校で遵守させたい道徳やルール(携帯してはいけないもの一覧、服装規則一覧、等)、覚えてほしい先生の名前一覧、地域の身近な知識一覧(周辺の歴史、地理など)、学年ごとに覚えてほしい英単語や古語や年表や定理の一覧、等の体系的な列挙にも用いることができる。
(0011)
特許文献6は、請求項7として、
抽出又は合成して読み上げる質問文の答えとなる文字列が複数存在する場合、
乱数生成アルゴリズムを用いてランダムな順序で読み上げることを特徴とする
請求項1から6のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、記憶する必要のない知識間の順序性を排して、それぞれを独立した知識として認識させることが容易になる。
(0012)
特許文献6は、請求項8として、
抽出又は合成して読み上げる質問文の答えとなる文字列が複数存在する場合であって、
一以上の文字列を読み上げた後に読み上げを中断して再開した場合、
中断までにまだ読み上げていない文字列を優先して読み上げることを特徴とする
請求項1から7のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、中断に左右されずに、満遍なく答えのすべてをもれなくだぶりなく伝えることが可能となる。
(0013)
特許文献6は、請求項9として、
抽出又は合成して読み上げる質問文の答えとなる文字列が複数存在する場合、
該複数存在する文字列の間又は該複数存在する文字列を抽出するテキストの間に比率を設定し、
該設定した比率に沿った頻度割合で該複数存在する文字列を繰り返し読み上げることを特徴とする
請求項1から8のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、重点的に覚えるべきものとそうでないものとをバランスよく暗記するときに用いることなどが可能となる。
(0014)
特許文献6は、請求項10として、
更新されるテキストを、
所定の時刻または頻度で所定の場所から自動ロードして
前記アクセス可能なテキストとし、
所定の論理式に応じた質問文の答えとなる文字列を、
該アクセス可能なテキストから自動的に抽出又は合成して読み上げることを特徴とする
請求項1から9のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、ニュースサイトが更新するインターネット上のHTMLテキストを「更新されるテキスト」としていた場合には、論理式でフィルタしたニュースのみを所定の時刻や頻度でチェックすることも可能になる。
>また、複数のコンテンツを組み合わせることにより、例えば、目覚まし勉強&ニュースチェック機能が提供できる。
>また、更新されるテキストが社内外のインターフェースとして指定された基幹業務系のドキュメントやデータベースカラムである場合には、さらにテンプレートエンジン等と連携させることにより、タイムリーな自動業務文書作成なども容易となる。
(0015)
特許文献6は、請求項11として、
所定の時刻または頻度で、
所定の論理式に応じた質問文の答えとなる文字列を、
所定のアクセス可能なテキストから自動的に抽出又は合成して読み上げることを特徴とする
請求項1から9のいずれか一項に記載のコンピュータプログラムを提供する。
:自動読み上げの時刻又は頻度は、例えば、日ごと時刻設定、時ごと分設定、分ごと秒設定、日時指定、曜日指定など種々の指定方法があってもよい。
>これにより、社内ルールなど不正確な記憶となりがちな知識をくりかえしにより正確に覚えさせることができる。
(0016)
特許文献6は、請求項12として、
前記アクセス可能なテキストを、
不特定多数の利用者からの投稿に応じて追加することを特徴とする、
請求項1から11のいずれか一項に記載のコンピュータプログラムを提供する。
:投稿への対応は、所定の共有フォルダやインターネットサイトへの投稿を検知する形でもよく、不特定のインターネットサイトへの投稿をいわゆるクローラーが収集する形でもよい。
>これにより、勉強用のテキストや業務用/趣味用の情報の収集・交換・共有・相互ブラッシュアップ等が可能となる。
(0017)
特許文献6は、請求項13として、
前記アクセス可能なテキストを、
不特定多数の利用者からの投稿に応じて編集することを特徴とする、
請求項1から12のいずれか一項に記載のコンピュータプログラムを提供する。
:投稿への対応は、所定の共有フォルダやインターネットサイトへの編集による更新投稿を検知する形でもよく、不特定のインターネットサイトへの編集による更新投稿をクローラーが収集する形でもよい。
>これにより、勉強用のテキストや業務用/趣味用の情報の相互補完・相互チェック等が可能となる。
(0018)
特許文献6は、請求項14として、
前記投稿をテーマのカテゴリ階層を明確にして行い、
答えとなる文字列の抽出又は合成に用いるアクセス可能なテキストのユーザー又は論理式による絞り込みを
該階層を指定して行うことを特徴とする
請求項12又は13に記載のコンピュータプログラムを提供する。
:投稿は、以下の内容を明確にしながら行われることが好ましい。
・サーバー
・ファイル名
・タイトル
・バージョン番号
・テキストの内容
・テーマの階層的分類(ツリー状のテーマ)
:カテゴリ(分類)の例としては、以下のようなものが挙げられる。
・地域ニュースツリー(地域による細分)
・研究専門分野ツリー(研究分野による細分)
・イベントツリー(イベント分野による細分(音楽、リサイクル、スポーツ、等))
(0019)
特許文献6は、請求項15として、
前記答えとなる文字列に応じた画像または音声を
文字列と同時に又は文字列の代わりに出力(遠隔の複数のコンピュータからなるシステムで機能分割する場合又は同一コンピュータにおいて機能分割する場合には送信であってもよい)することを特徴とする請求項1から14のいずれか一項に記載のコンピュータプログラムを提供する。
:この「音声」は動的な合成音声ではなく事前録音した音声などとすることができる。
:画像は動画であってもよい。
>これにより、論理式に応じたテーマの答えの集合やテキストの内容をより具体的に臨場感をもって表現することができる。
(0020)
特許文献6は、請求項16として、
前記答えとなる文字列のみ(一又は複数)、又は、論理式によってはアクセス可能なテキスト自体(一又は複数の組み合わせ)を
端末(スマートフォンであってよい)、又は、該端末のためのアプリケーションソフト宛てに送信し、
該端末又は該アプリケーションソフトにより出力を行うことを特徴とする請求項1から15のいずれか一項に記載のコンピュータプログラムを提供する。
:端末は携帯端末であることが有利であり、このようにして行われる文字列やテキスト自体は、電車やすきま時間での勉強のため、あるいは、ビジネスの現場での情報・知識共有のために使用できる。
>これにより、より自由により適した態様で答えやテキストを提供することが可能となる。
(0021)
特許文献6は、請求項17として、
前記抽出、合成又は送信を、中継するコンピュータ経由で行う
請求項16に記載のコンピュータプログラム。
>これにより、複数の利用者に配信しやすくなり、配信もコントロールしやすくなり、コンテンツの配信順を制御したり、コンテンツに広告を挿入したりでき、広告モデルでの安価な提供も可能となる。
>また、発信端末側に複雑な論理演算を用いた抽出や合成や音声合成の機能をもたせる必要がなくなり、発信端末をスマートフォン等の携帯端末とすることが容易となり、投稿(発信)数の向上を期待でき、携帯端末において特に重要な電力の消耗やメモリの使用を減らすことが可能となる。
>また、発信と出力をいずれも同一利用者のスマートフォンとすること等により、(自分や他人の過去の)読み上げを楽しみながら、さらに追加や変更の候補を中継するコンピュータに投稿するスパイラルを楽しむことも容易となる。
(0022)
特許文献6は、請求項18として、
前記中継するコンピュータが複数の利用者の端末に配信するように構成した
請求項17に記載のコンピュータプログラム。
:この場合、配信内容に目印をつけるなどすることにより、発信した利用者以外の利用者にのみ配信するように設定することもできる。
:また、配信することを契約した利用者にのみ、あるいは、配信する利用者の数の制限内の利用者にのみ配信するように構成することもできる。
:契約した制限内の数の利用者にのみ配信する場合であって、中継するコンピュータが複数の端末からの要求に応じて配信する場合、IDとパスワードによる認証の他、端末のMACアドレスやその他の端末・利用者属性の組み合わせを(傍受した人が再現できない)ハッシュ値に変換して送信するように端末用アプリケーションソフトをプログラムすることができ、配信要求とともに端末から中継コンピュータに送信されるハッシュ値の種類によって、何台の端末が配信を要求しているかを(たとえ、利用者間で共通のID/パスワードを採用している場合でも)、中継コンピュータが計算することができ、配信数を抑制する等することができる。
>これにより、答えやテキストを、それを必要とする可能性の大きい複数の利用者にタイミングよく配信することが可能となる。
(0023)
特許文献6は、請求項19として、
前記中継するコンピュータが、
該中継するコンピュータに新しく送信されたコンテンツからそれ以前に配信されたコンテンツへと
さかのぼるように、
配信を要求した端末または利用者に対して、
内容を送信する
請求項17又は18に記載のコンピュータプログラム。
:ここでコンテンツとは、ひとかたまりの内容をいい、例えば、論理式に応じた複数の解が存在するときはこうした複数の解をまとめて一つのコンテンツとすることができ、一つのニュース記事を構成する複数の文(もともとその順序にも意味がある)はまとめて一つのコンテンツとなる。
>これにより、新しい(多くの場合にその利用者にとってより重要な)コンテンツにより早く触れることが可能となる。
(0024)
特許文献6は、請求項20として、
同一の利用者IDまたは利用者グループが所属しているグループチャンネルについて
新しいコンテンツが関係する利用者から中継するコンピュータに送信された場合に
前記さかのぼる制御をリセットして当該新しいコンテンツを先頭として再度さかのぼるように制御する
請求項19に記載のコンピュータプログラム。
>これにより、新しいニュースなどにより敏感に反応して情報共有を行うことができる。
(0025)
特許文献6は、請求項21として、
質問文を含む論理式も出力することを特徴とする
請求項1から20のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、読み上げる順序における各順番の意味や位置づけを簡潔に表示することが可能になる。
>また、中継コンピュータ等においてクイズ形式のコンテンツを生成したり、各端末でクイズ形式のコンテンツを実施することが容易になる。
>答えとなる文字列と論理式との組み合わせは、「テーマが何か」とその「答え(解)」を、共通部分と差異部分(複数解のときは複数)として、メリハリのある、しかも少ない通信量/表示量/発話量で最終利用者に伝えることが可能となる。関連したメール配信/連絡等も同じ契機で実施する場合にはパケット量の節約等にもつながる。
(0026)
特許文献6は、請求項22として、
出力する答えを導くために用いたテキストまたはその一部も出力することを特徴とする
請求項1から21のいずれか一項に記載のコンピュータプログラムを提供する。
>これにより、答えだけでなく、根拠も憶えたり確認したりすることが可能となる。
>また、論理的思考力の醸成につながる。
(0027)
特許文献6は、請求項23として、
出力する答えを指定する変数(または可変領域)が一種類(例えば、「$Xは$Yが好き」ではなく「$Xは花子が好き」のように主語のみのとき、等)の場合に、
項目名を省略して出力することを特徴とする
請求項1から22のいずれか一項に記載のコンピュータプログラム。
>これにより、区別する必要もなく本質的でもない変数名などを伝えてしまうコスト(時間、通信、電気、メモリなど)を省略することができる。
(0028)
特許文献6は、請求項24として、
出力する答えを指定する変数(または可変領域)が英文アルファベット1文字以外(例えば、「${主語}は${目的語}が好き」等)の場合に、
項目名を省略せずに出力することを特徴とする
請求項1から23のいずれか一項に記載のコンピュータプログラム。
>これにより、複数のフィールドからなる答えのフィールドの位置づけを間違う可能性を減らすことができる。
(0029)
特許文献6は、請求項25として、
前記答えとなる文字列もしくはアクセス可能なテキスト自体と、
質問文を含む論理式とから、
前記発信するコンピュータ、前記中継するコンピュータ、又は、前記中継するコンピュータから配信されたコンピュータが、
クイズ形式のコンテンツを生成し、
いずれかのコンピュータで実施することを特徴とする
請求項21に記載のコンピュータプログラムを提供する。
:ここで、もっとも単純なクイズ生成方法は、質問文を自然言語に機械的におきなおし(自然言語を機械生成し)、「答えとなる文字列」をそのクイズの答えとすることである。
:出力する答えを導くために用いたテキストまたはその一部を参照できるときは、それを答えの参考情報として加えることができ、参照できないときは、アクセス可能なテキスト(一つ又は組み合わせ)自体を参考情報として加えることもできる。
>これにより、身近な情報(山田さんの家のポチが子犬を2匹生んだ、等)を蓄積したテキストと身近な質問文を含む論理式(「$Xが$Yを生んだ」、等)とから、身近なクイズ問題を簡易に自動生成することができ、例えば、中継するコンピュータの利用者IDを共有する老人ホームの入居者や特定の学級の生徒が、それらの「内輪ネタ」等を継続的にクイズコンテンツ(例えば、{クイズ問題例1:□が子犬を2匹生んだ,答え:山田さんの家のポチ}、等)にして楽しむことが可能になる。この場合、中継するコンピュータにWEBサーバー機能をもたせ、利用者IDを共有する範囲の端末に対して、生成されたクイズコンテンツをレンダリングするようにしてもよい。
:なお、スクリーンセーバー形式で必要な知識を覚えたり情報を伝達したりするアプリケーションソフトに対して穴埋め形式のコンテンツを提供する場合も同様である。
(0030)
特許文献6は、請求項26として、
前記中継するコンピュータが、
配信する前に、
コンテンツに所定の広告を挿入する
請求項21に記載のコンピュータプログラムを提供する。
:テキストに対しては広告テキストだけでなく広告画像や広告音声へのリンクを挿入することができ、音声や動画についてはそれらを挿入したり合成することができる。
>これにより、広告モデルのマネタイズが可能となり、一般消費者に対してより安価に答えやテキストを提供することが可能となる。
(0031)
特許文献6は、請求項27として、
前記論理式が前向き推論のための式を含み、
閾値以上になった項目を読み上げた上で閾値以下に戻す
ことを特徴とする請求項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して付け加えられた内容や確信度は論式による問い合わせごと又は利用者によるセッションごとにリセットされるように構成してもよい。
:また、前記ボタン(複数ある)は、前向き推論により又はよらずに、特定の命題を真としたり偽としたり設定できるように定義づけられていることが好ましい。
>これにより、社員や生徒の、影響連鎖についての判断力を強化したり学習させたりさせることができる(単純な前向き推論論理式や複数の条件を含む前向き推論論理式による)。
>また、ニュースとその影響の仮説を自動生成したり、自動判断/自動分析をすることが容易になる。
(0032)
特許文献6は、請求項28として、
請求項1から27のいずれか一項に記載のコンピュータプログラムを含む装置を提供する。
(0033)
特許文献6は、請求項29として、
請求項1から27のいずれか一項に記載のコンピュータプログラムを用いた方法を提供する。
================================================
以上が特許文献6(特願2016−196069)の概要抜粋である。
図1は、本発明の方法による複数の情報モジュールの階層的な参照の連鎖(メニュー階層の段階的操作)の例を示す説明図である。
コンピュータは、本発明による方法を実施するための図示しないコンピュータプログラム(遷移の制御の実現方法は自明のため詳述しない)に基づき、利用者の声を所定の認識パターンであると音声認識することに応じて、
利用者変数を遷移(例えば、この例の情報モジュール1において認識パターン”仕事”を認識したときは図示しない変数「&${現在のURI}」を"002.jpl"に設定した上で情報モジュール2に優先参照する情報モジュールを遷移する等)させ、かつ、
利用者への出力(例えば、「仕事ページに移動しました」とテキスト表示しかつ同内容を音声合成して発声すること)を行う。
この遷移を行った後は、コンピュータは、情報モジュール1に含まれる認識パターンの情報よりも情報モジュール2に含まれる認識パターンの情報を優先して音声認識を行うようにする。例えば、この例で、利用者が”製造仕事計画”と発音した場合には、情報モジュール1内の”仕事”にではなく、情報モジュール2内の”製造計画”に該当するとコンピュータが判断し、共有フォルダから製造計画を取得して表示するコマンド「s」を実行している。この例では、”仕事”という認識パターンは、コマンドリストに登録しないようプログラムされている。
この例では、図示しない予約語「前のページに戻る」が、情報モジュールでなく、情報モジュールを解釈して実行するリッチクライアント(実行プログラム)に組み込まれており、利用者の希望に応じて遷移した後のいずれの情報モジュールからも遷移前の元の情報モジュールに戻ってさらにさかのぼれるように遷移の連鎖を蓄積した(図示しない)スタックデータ構造を管理している。
この例では、図示しないが、いずれの情報モジュールを参照している場合も、認識パターンのすべてを画面表示して、どのような認識パターンを想定しているかを利用者に示し、利用者がそのいずれかを意思表示として発音することを促している。
また別の実施例では、メニューの階層が実際の地域や趣味の分野等になっており、階層上の遷移経路の近い利用者同士が公知のグループ会話技術によりグループ会話できるように構成しており、似た状況の他人との会話を楽しめるようにしている。他人との会話と認識パターンによる音声認識とのモードの切り替えは、”他人との会話モードへ”と”音声認識パターンへ”という予約語を、各利用者のホームとなる情報モジュール(図1では情報モジュール1にあたるもの)内の2つの変数(先頭に&&がついている、&&${グループ会話}と&&${音声認識})にそれぞれ登録することにより行っている。
また別の実施例では、階層ではなく、情報モジュールが実際の緯度・経度等に関連する座標値や仮想世界の座標値をもつように構成しており、座標の近い情報モジュールに遷移した利用者同士が同様に話せるように構成している。
また別の実施例では、ホームとなる情報モジュールからの遷移経路にあるすべての情報モジュール内の認識パターンをコマンドリストにいれて音声認識可能にしている。
また別の実施例では、すべてではなく、現在画面に表示している認識パターンのみを認識するように構成しており、スクロール操作により、認識パターン集合を総入れ替えできるようにしている。
また別の実施例では、部分的なスクロール操作により消えずに残った認識パターン集合と同時に認識する候補の認識パターンとしても(すなわち同時認識用のコマンドリストにいれても)編集距離が大きいため認識品質を起こしにくい認識パターンのみをスクロールインするようにプログラムしている。
2 情報モジュール2(仕事用情報モジュール(ページファイル)の例)
3 情報モジュール3(勉強用情報モジュール(ページファイル)の例)
4 情報モジュール4(勉強/知財用情報モジュール(ページファイル)の例)
Claims (24)
- コンピュータが利用者と相互作用する方法であって、
コンピュータが利用者(人に限らない。以下、同じ)の声又は環境音を所定の認識パターンであると音声認識することに応じて利用者変数の遷移、利用者への出力(テキスト、音声、画像等)又はその両方をコンピュータが行うための情報(一以上の認識パターンの情報も含む)を含んだ複数の情報モジュールについて、
第一の情報モジュールがコンピュータに第二の情報モジュールを参照させるための情報(URI、メモリ内ポインタ、構造体配列のインデックス、等)を含んでおり、
コンピュータが第一の情報モジュールの該参照させるための情報に基づいて第二の情報モジュールを参照したときに、
コンピュータが第一の情報モジュールに含まれる認識パターンの情報よりも第二の情報モジュールに含まれる認識パターンの情報を優先して音声認識を行うようにした方法。 - コンピュータが、前記参照させるための情報により、情報モジュール(たとえば、URIが指す静的ファイルや動的生成ファイル)間を移動して、認識パターンの情報以外の情報も第二の情報モジュールの情報を優先するようにした
請求項1に記載の方法。 - コンピュータが、前記参照させるための情報により、情報モジュール(たとえば、URIが指す静的ファイルや動的生成ファイル)間をサブルーチン呼び出しして戻るまでの間、認識パターンの情報以外の情報も第二の情報モジュールの情報を優先するようにした
請求項1に記載の方法。 - コンピュータが、
前記サブルーチン呼び出しのその時点での呼び出し関係の連鎖上にある情報モジュールに含まれる認識パターンの情報のみを用いて音声認識をするようにした
請求項3に記載の方法。 - コンピュータが、
前記サブルーチン呼び出しのその時点での呼び出し関係の連鎖の先端にある情報モジュールに含まれる認識パターンの情報のみを用いて音声認識をするようにした
請求項4に記載の方法。 - 前記サブルーチン呼び出しのその時点での呼び出し関係を戻るための固定の認識パターン
を情報モジュールにかかわらずにもつようにした
請求項4又は5に記載の方法。 - 前記サブルーチン呼び出しのその時点での呼び出し関係をすべて清算して戻るための固定の認識パターン
を情報モジュールにかかわらずにもつようにした
請求項4又は5に記載の方法。 - 認識されるパターンが所定時間存在しないときに
コンピュータが、
前記サブルーチン呼び出しのその時点での呼び出し関係を
自動で戻る、
請求項4又は5に記載の方法。 - コンピュータが、
音声認識しなければならない認識パターンが多い場合に、
その一部のみを画面表示した上で、
所定の認識パターンに応じて画面スクロール又は画面切り替えを行う
請求項1から8のいずれか一項に記載の方法。 - コンピュータが、
表示できている認識パターンのみを音声認識の対象にする
請求項9に記載の方法。 - コンピュータが、
前記一部のみを画面表示する際に、
音声認識で混同しにくいもの同士をグループ化して
グループ化してできた複数のグループにわたって画面スクロール又は画面切り替えを行う
請求項9又は10に記載の方法。 - コンピュータが、
音声認識する認識パターンの範囲を、
利用者が直前に音声指定した状況ごとに変更できる
請求項1から11のいずれか一項に記載の方法。 - コンピュータが、
音声認識する認識パターンの範囲を、
利用者が直前に音声指定又は音声によりコンピュータに自動推測させた
文章タイプ又は格もしくは格の値(深層格、表層格、など)ごとに変更する
請求項1から12のいずれか一項に記載の方法。 - 複数の前記情報モジュールを、
該情報モジュールに関連する実際の緯度、経度もしくは高度、又は、仮想の座標に関係づけて記憶し、
利用者の指定した座標範囲内に位置する情報モジュールに含まれる認識パターンの情報のみを
音声認識可能にする
請求項1から13のいずれか一項に記載の方法。 - 複数の前記情報モジュールを、
該情報モジュールの内容に関連する階層的なテーマタグ(地域階層、勉強分野階層、機能分野階層、等)に関係づけて記憶し、
利用者の指定したテーマタグ配下に位置する情報モジュールに含まれる認識パターンの情報のみを
音声認識可能にする
請求項1から14のいずれか一項に記載の方法。 - 同一の認識パターンが、コンピュータが行う複数の出力に関連づけられているとき
乱数を用いて一の出力だけを実行する
請求項1から15のいずれか一項に記載の方法。 - 所定の情報モジュールに値が固定された変数をもたせ、
利用者が該情報モジュールを読み込んだときに該変数と該固定された値を記憶し、
他の情報モジュールを優先して参照した場合にも
該変数と該固定された値は該他の情報モジュールから参照はできるが変更や削除はできないように
構成した
請求項1から16のいずれか一項に記載の方法。 - 所定の情報モジュールに静的又はグローバルである旨を指定した変数をもたせ、
利用者が該情報モジュールをコンピュータに読み込ませたときにコンピュータが該変数をグローバルに宣言かつ定義し、
コンピュータが他の情報モジュールを優先して参照した場合にも
コンピュータが該変数を該他の情報モジュールから参照、変更又は削除できるようにする
請求項1から17のいずれか一項に記載の方法。 - 音声認識する認識パターンの集合が変化する毎に
コンピュータが
その旨を音声又は画面表示により示す、
請求項1から18のいずれか一項に記載の方法。 - 当該方法に関連して
音声認識させるために利用者が発話しコンピュータが受話した内容及び認識パターンにより認識した結果とを
コンピュータが蓄積して、
利用者の行動、傾向又は実績(発音上達度を除く。除いたもの以外は、勉強カリキュラムや業務ノルマ等の消化度や消化範囲等も含む)を分析又は評価することを特徴とする
請求項1から19のいずれか一項に記載の方法。 - 同一の情報モジュール又は座標の近接した情報モジュール集合を同時にアクセスしている
利用者の集合が
テキスト、音声又は音声動画によるグループ通信をできるように、コンピュータがする、
請求項1から20のいずれか一項に記載の方法。 - コンピュータが音声以外のコンテンツ(画像表示、現在のグローバル変数の状態、現在参照している情報モジュールが示す状況テキスト)にそれぞれフォーカスするための予約語を用意した
請求項1から21のいずれか一項に記載の方法。 - 請求項1から22のいずれか一項に記載の方法を実施するためのコンピュータプログラム。
- 請求項1から22のいずれか一項に記載の方法を実施するための装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016216820A JP6895037B2 (ja) | 2016-11-06 | 2016-11-06 | 音声認識方法、コンピュータプログラム及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016216820A JP6895037B2 (ja) | 2016-11-06 | 2016-11-06 | 音声認識方法、コンピュータプログラム及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018072784A JP2018072784A (ja) | 2018-05-10 |
JP6895037B2 true JP6895037B2 (ja) | 2021-06-30 |
Family
ID=62111665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016216820A Expired - Fee Related JP6895037B2 (ja) | 2016-11-06 | 2016-11-06 | 音声認識方法、コンピュータプログラム及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6895037B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110737331B (zh) * | 2019-09-11 | 2023-10-27 | 浙江迈联医疗科技有限公司 | 基于多任务脑机接口的个性化认知训练及康复方法、装置及设备 |
CN112967718B (zh) * | 2021-04-02 | 2024-04-12 | 深圳吉祥星科技股份有限公司 | 基于声音的投影仪控制方法、装置、设备及存储介质 |
CN117316159B (zh) * | 2023-11-30 | 2024-01-26 | 深圳市天之眼高新科技有限公司 | 车辆语音控制方法、装置、设备及存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3337588B2 (ja) * | 1995-03-31 | 2002-10-21 | 松下電器産業株式会社 | 音声応答装置 |
JPH10222337A (ja) * | 1997-02-13 | 1998-08-21 | Meidensha Corp | コンピュータシステム |
JP3645104B2 (ja) * | 1998-11-02 | 2005-05-11 | 富士通株式会社 | 辞書検索装置及び辞書検索プログラムを記録した記録媒体 |
JP3941299B2 (ja) * | 1999-10-12 | 2007-07-04 | 三菱電機株式会社 | 音声対話装置 |
JP4232943B2 (ja) * | 2001-06-18 | 2009-03-04 | アルパイン株式会社 | ナビゲーション用音声認識装置 |
JP2003091412A (ja) * | 2001-09-18 | 2003-03-28 | Hcx:Kk | ドキュメント処理装置およびドキュメント処理方法 |
TW200301460A (en) * | 2001-12-17 | 2003-07-01 | Asahi Chemicl Ind | Voice recognition method, remote control, data terminal device, telephone communication terminal, and voice recognition device |
JP4004885B2 (ja) * | 2002-07-26 | 2007-11-07 | 株式会社デンソー | 音声制御装置 |
JP2004317914A (ja) * | 2003-04-18 | 2004-11-11 | Nissan Motor Co Ltd | 音声認識装置 |
JP4624825B2 (ja) * | 2005-03-08 | 2011-02-02 | 日産自動車株式会社 | 音声対話装置および音声対話方法 |
JP4680691B2 (ja) * | 2005-06-15 | 2011-05-11 | 富士通株式会社 | 対話システム |
JP4728905B2 (ja) * | 2006-08-02 | 2011-07-20 | クラリオン株式会社 | 音声対話装置および音声対話プログラム |
JP2008293168A (ja) * | 2007-05-23 | 2008-12-04 | Seiko Epson Corp | 業務管理システム、および、業務管理方法 |
JP6417104B2 (ja) * | 2014-04-16 | 2018-10-31 | 株式会社日立システムズ | テキスト編集装置、テキスト編集方法、及びプログラム |
-
2016
- 2016-11-06 JP JP2016216820A patent/JP6895037B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2018072784A (ja) | 2018-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lane et al. | Natural language processing in action | |
US9081411B2 (en) | Rapid development of virtual personal assistant applications | |
US9489625B2 (en) | Rapid development of virtual personal assistant applications | |
US20200327432A1 (en) | Intelligent communication manager and summarizer | |
Ahmed et al. | AIML based voice enabled artificial intelligent chatterbot | |
CN110717017A (zh) | 一种处理语料的方法 | |
US20160364377A1 (en) | Language Processing And Knowledge Building System | |
CN101004737A (zh) | 基于关键词的个性化文档处理系统 | |
CN114912448B (zh) | 一种文本扩展方法、装置、设备及介质 | |
Arumugam et al. | Hands-On Natural Language Processing with Python: A practical guide to applying deep learning architectures to your NLP applications | |
CN116700839B (zh) | 一种任务处理方法、装置、设备、存储介质及程序产品 | |
JP6895037B2 (ja) | 音声認識方法、コンピュータプログラム及び装置 | |
Donnarumma | Against the norm: othering and otherness in AI aesthetics | |
Attigeri et al. | Advanced nlp models for technical university information chatbots: Development and comparative analysis | |
US20240184982A1 (en) | Hierarchical text generation using language model neural networks | |
JP6905729B2 (ja) | 探索枝刈り方法、コンピュータプログラム及び装置 | |
CN115481221B (zh) | 对话数据的增强方法、装置、设备、计算机存储介质 | |
JP7427405B2 (ja) | 発想支援システム及びその制御方法 | |
JP7020659B2 (ja) | テキストをもとに出力するコンピュータプログラム、装置及び方法 | |
JP6858721B2 (ja) | コンテンツに関する対話を実施可能な対話制御装置、プログラム及び方法 | |
de Seta | An algorithmic folklore: Vernacular creativity in times of everyday automation | |
Patel et al. | My Buddy App: Communications between Smart Devices through Voice Assist | |
Sakharkar et al. | Python based AI assistant for computer | |
JP2018063509A (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: 20161202 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20191106 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200715 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200825 |
|
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: 20201222 |
|
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: 20210204 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210308 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6895037 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |