(57)【要約】      （修正有）【課題】自然言語に近い形式のホーン節を機械学習して推論する。【解決手段】学習源となる単一テキスト内の共通の部分文字列を、同一の値で束縛されるべき変数で置換する。自然言語に変数を埋め込んだリテラルを用いたホーン節や共起ツリーを得る。変数名等の表記ゆれの可能性を、同一用語から置換される変数名、代入されうる値の性格、複数単一テキスト間での同名変数の位置関係、の統一の観点から自動解消する。ホーン節等の採用／不採用及び信用度を、妥当するテキスト数で算出。ホーン節が、テキストに存在しない文字列を導出する程度／存在する文字列が導出できる程度により、ホーン節の採用／不採用、信用度、必要度を決定する。利用者に選択させて集成したテキスト集合から、機械学習した規則性を出力してセンスを身に着けさせる。単独で置換されるべきでない単独置換禁止文字列を使用。条件つきでテキスト同士をマージしたものを加えて学習する。【選択図】なし【特許請求の範囲】
【請求項１】
所定テキスト集合の要素（単一テキスト）間での、
包含文字列の
実質的な共起等から
規則性を機械学習する
コンピュータプログラムであって
単一テキスト内の共通の部分文字列を同一の値で束縛されるべき変数で置換するステップを
有することを特徴とするコンピュータプログラム。
【請求項２】
前記機械学習する規則性が、
前記テキスト集合の包含文字列に変数の埋め込まれた形式の命題、同様の形式のリテラルから構成されたホーン節、又は、同様の形式のリテラルから構成された共起ツリーである
請求項１に記載の
コンピュータプログラム。
【請求項３】
前記所定テキスト集合中の各単一テキストを文ごと又は意味の区切りごとに分割してできた包含文字列集合の各要素（包含文字列）又は該各要素の組合せ（例えば、いわゆる「構成要件」等）についての、
前記所定テキスト集合の要素（単一テキスト）内での実質的な共起、又は、該所定テキスト集合における共起頻度を、
前記変数での置換による抽象化又は正規化を介して求め、
該実質的な共起の存在又は共起頻度により、
規則性を学習することを特徴とする
請求項１又は２に記載の
コンピュータプログラム。
【請求項４】
変数名の表記ゆれの可能性を、
各単一テキストの、単一包含文字列内でのおよび複数包含文字列間での、同一用語から置換される変数名の統一の観点（以降、「観点１」とする）、
前記所定テキスト集合内の共起を分析する複数単一テキスト内での、
変数名があらわす変数に代入されうる値の性格（文字列の集合の意味的共通点等）
もしくは
複数単一テキスト間で対応する各包含文字列における他の部分文字列との位置関係に応じた変数名の統一の観点（以降、「観点２」とする）、
又は、
その両方の観点
から自動的に解消して
比較しながら
前記実質的な共起の存在又は共起頻度を求めること
を特徴とする
請求項３に記載の
コンピュータプログラム。
【請求項５】
ホーン節タイプの規則性が
所定テキスト集合のいくつの要素（単一テキスト）の包含文字列集合に対して妥当するかの度合いによって、
ルールの採用／不採用又はルールに付与する信用度を
算出する
請求項１から４のいずれか一項に記載の
コンピュータプログラム。
【請求項６】
各単一テキストごとに定義されたプログラム解釈可能な意味論、
テキスト内部又は外部で定義されたプログラム解釈可能な意味論、
又は、その両方に基づいて
一部追加又は一部削除された文字列集合を該単一テキストの包含文字列の集合として処理を行う、
請求項１から５のいずれか一項に記載の
コンピュータプログラム。
【請求項７】
単一テキスト毎に、
該包含文字列集合の可能な組合せ及び変数置換の可能な組み合わせから
可能なホーン節集合を列挙して、
各ホーン節により、
所定テキスト集合中の各単一テキストに存在しない包含文字列を該単一テキスト内の他の包含文字列集合から導出できてしまう程度、
所定テキスト集合中の各単一テキストに存在する包含文字列が該単一テキスト内の他の包含文字列集合から導出できる程度、
または、その組み合わせにより、
各ホーン節の採用／不採用、信用度、必要度を決定する
請求項１から６のいずれか一項に記載の
コンピュータプログラム。
【請求項８】
所定のテキストの包含文字列の集合の部分集合を
利用者にいくつか選択させて集成した前記所定テキスト集合から
請求項１から７のいずれか一項に記載のコンピュータプログラムにより
機械学習した規則性を
出力することにより
利用者に機械学習のセンスを身に着けさせる
コンピュータプログラム。
【請求項９】
単独で置換されるべきでない単独置換禁止文字列リストを有し、
単独置換禁止文字列リスト中の文字列を単独では置換しないようにする
請求項１から８のいずれか一項に記載の
コンピュータプログラム。
：たとえば、よく使用されるひらがなや記号を含めた言い回し「は」「が」「で」「る」「した。」等をそのようなリストの要素として採用することが有利である。
＞これにより、不要な変数化による一般化（テンプレート化）や同定（根拠としてのカウント）等を防ぐことができる。
【請求項１０】
包含文字列を所定の程度以上共有する単一テキスト同士をマージしてできた単一テキストを、所定テキスト集合に加えて機械学習する、
請求項１から９のいずれか一項に記載のコンピュータプログラム。
【請求項１１】
請求項１から１０のいずれか一項に記載のコンピュータプログラムを用いた方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習に関する。また、機械学習を利用した自動推論に関する。
【背景技術】
【０００２】
自然言語を用いた本格的な推論技術（特許文献１）や、複数の制作者のプログラムを動的に引用・合成して問題解決等を行う技術（特許文献２、３、５等）が存在する。また、自然言語の表記ゆれのリスクをコントロールする技術もある程度は存在する（特許文献４）。
また、自然言語コーパス等からテンプレート等を学習する技術もは存在した。
しかし、自然言語に変数を埋め込んだ形のリテラルを用いつつ、論理プログラミング言語Ｐｒｏｌｏｇと同様の意味論（機械解釈）を有するホーン節を学習することは、従来、行われていなかった。これは、そもそも自然言語に変数を埋め込んだ形のリテラルから構成されるホーン節による推論が（特許文献１の公開以前は）難しかったためであり、結果として、そのようなホーン節の効率的な学習も困難であったためである。また、このため、子供がなじみやすい自然言語のままの形での機械推論や機械学習を（さらにはトレースや説明の可能な態様で）提供することができず、子供がＡＩになじむのを困難にしていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第６２６３８５８号
【特許文献２】特許第５２４６６８０号
【特許文献３】特願２０１７−１９２２９６
【特許文献４】特願２０１６−１０３０１０
【特許文献５】特願２０１５−２１９００７
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、このような課題を解決し、自然言語に変数を埋め込んだ形のホーン節等を
トレースや説明が可能な形で効率的に機械学習して機械推論を可能にすること、
これにより、子供がＡＩになじみやすくすることを目的とする。
【課題を解決するための手段】
【０００５】
かかる課題を解決するため、
本発明の請求項１は、
所定テキスト集合の要素（単一テキスト）間での、
包含文字列の
実質的な共起等から
規則性を機械学習する
コンピュータプログラムであって
単一テキスト内の共通の部分文字列を同一の値で束縛されるべき変数で置換するステップを
有することを特徴とするコンピュータプログラムを提供する。
：ここで、「所定テキスト集合」は、要素が一つの場合も許容するものとし、要素はそれぞれが単一テキストである。
また、「包含文字列」とは、例えば、単一テキストを自然言語の文の区切り（「。」等）やその他（自由文や形式言語文等）の意味の区切り（単語、デリミタ、格、スロット、段落、節、章、等）で区切ったできた各文字列をいう。
：また、以降で、「要素間での包含文字列の実質的な共起等」とは、１の要素の場合にはその要素にのみ包含文字列が存在する場合を指し、２以上の要素の場合にはそれらの要素に共通して包含文字列が含まれる場合を指す。
：また、「規則性」とは、所定テキスト集合の要素が一つ（単一テキスト一つだけ）の場合は、「共起」ではなく「存在」という規則性を学べるものと解する。
：また、「同一の値」とは、例えば、固定文字列（「晴れ」）や変数を含む文字列（「晴れのち＄Ｘ」）等である。
：また、「コンピュータプログラム」とは、同様の処理をＦＰＧＡや並列システム等として実装したハードウエアが主体のシステム（ソフトウエア部分を含んでいてもよい）をも指すものとする。
：例えば、単一テキストが「太郎は太郎の娘を愛している」の場合、置換後は「＄Ａは＄Ａの娘を愛している」となることができる。
：また、単一テキストが「太郎は娘を愛している。彼の娘は素直だから。」の場合、置換後は「太郎は＄Ａを愛している。彼の＄Ａは素直だから。」等となることができる。なお、「太郎は息子を愛している。彼の息子は素直だから。」の場合、置換後はやはり「太郎は＄Ａを愛している。彼の＄Ａは素直だから。」となる（これにより、表層（元の固定文字列）が異なっても、実質的に関連しうる２つの事象により根拠づけられた、より確からしい仮説（規則性）を機械学習することができる）。
＞この手法により、テキストや包含文字列の一部を変数化したテンプレートとして効率的に一般化した形式の機械学習が可能となる。
【０００６】
また、請求項２に係る発明は、
前記機械学習する規則性が、
前記テキスト集合の包含文字列に変数の埋め込まれた形式の命題、同様の形式のリテラルから構成されたホーン節、又は、同様の形式のリテラルから構成された共起ツリーである
請求項１に記載の
コンピュータプログラムを提供する。
：ここで「変数の埋め込まれた形式の命題」の例としては、「＄Ａは＄Ａの子に餌を与える」等を挙げることができる。これは「＄Ｂは＄Ａの子⇒＄Ａは＄Ｂに餌を与える」等と条件と効果に分離したルール、ないしは、ホーン節（「＄Ａは＄Ｂに餌を与える :- ＄Ｂは＄Ａの子, ・・・」）になおして書くこともできる。
：ここで「ホーン節」とは、Ｐｒｏｌｏｇのルールを記述するためのホーン節と同様の構造と意味論をもつものである。ただし、基本的なリテラルの記法は、一階述語論理形式（「好き（太郎，Ｘ）」等）ではなく、固定文字列に変数（例えば、主語、述語、副詞、程度パラメータ等の具体的な値（文字列）を代入するためのもの）を埋め込んだもの（「太郎は＄Ｘが好き」等）である。
：ここで「共起ツリー」とは、例えば、｛｛Ａ，Ｂ，Ｃ｝，｛Ａ，Ｂ，Ｄ｝，｛Ｂ，Ｄ｝，｛Ｂ，Ｅ｝，｛Ｄ，Ｅ｝｝という、（共起の要素と頻度を表す）集合族（集合の集合）があった場合に、以下のように表示するものである。
＝＝＝＝＝＝＝＝＝
Ａ−２−Ｂ−１−Ｃ
｜      １−Ｄ
１−Ｃ−１−Ｂ
１−Ｄ−１−Ｂ
＝＝＝＝＝＝＝＝＝
Ｂ−２−Ａ−１−Ｃ
｜      １−Ｄ
２−Ｄ−１−Ａ
１−Ｃ−１−Ａ
１−Ｅ
＝＝＝＝＝＝＝＝＝
Ｃ−１−Ａ−１−Ｂ
１−Ｂ−１−Ａ
＝＝＝＝＝＝＝＝＝
Ｄ−２−Ｂ−１−Ａ
１ーＡ−１−Ｂ
１−Ｅ
＝＝＝＝＝＝＝＝＝
Ｅ−１−Ｂ
１−Ｄ
＝＝＝＝＝＝＝＝＝
〇ここで、最初のツリーは、
Ａと共起するものがＢ，Ｃ，Ｄで
それぞれの頻度が２，１，１であること、
ＡかつＢと共起するものがＣとＤで
それぞれの頻度が１，１であること、
ＡかつＣと共起するものがＢで
その頻度が１であること
ＡかつＤと共起するものがＢで
その頻度が１であること
等を表している。
〇こうした共起ツリーは、
仮定した事象（例えばＡとＢ）にもとづき、
・確率の高い事象（例えばＣとＤ）
・同時に存在しえた事象（この例では同じくＣとＤ）
・同時には存在しなかった事象（この例ではＥ）
を効率的に特定できるようにするものである。
〇ここでは、表記「Ａ」「Ｂ」等に変数を省略している（例えば、「Ａ」は実際には「＄｛拾得人｝が＄｛権利者｝に返却した」であってもよい）が、
変数が含まれている（左のような）場合は変数名（識別子ないしはスロット名）が異なることにより
命題自体（この場合は述語自体も）も異なるものとみなしてツリーを構築するようプログラミングすることになる。この場合、もちろん、変数名に応じた特別な意味をもたせた運用（例えば変数名が「＄｛権利者｝」であるときは、それを埋める文字列として人間又は法人の具体名しか許容しないようプログラムしたり）とすることも可能である。
〇そして、ツリーの葉に向かうパスに存在する同名の変数には同じ値を代入（束縛）することができるとすることにより、変数によりさらに抽象化した（すなわち、よりゆるい同定基準とした）簡潔な共起ツリーを得て運用することができるようになる。
また、このようなツリーにおいて、根への部分パス（又は、ノード（の包含文字列等））を所定の基準（例えば、３分の１）以上の割合で共有するような（又は、閾値以上の意味的／表層的類似度を示すような）サブツリーを単一テキスト（本来は単一テキストを構成するパスは枝分かれがあってはならないだが）と「みなして」機械学習することにより、例えば、以下のように泣き別れしていた潜在的かつ有用な制約（この例では、「＄Ｘは天気に関すること」）を顕在化した学習結果を得ることができる。
＝＝＝
「２０１８年８月のデータ。金沢は雨が降った。小松は雨が降った。」
「２０１８年８月のデータ。雨が降ったとは天気に関すること。」
↓
↓機械学習（「２０１８年８月のデータ」を共通の根とできる）
↓
「＄Ｗ  ＆  金沢は＄Ｘ  ＆  ＄Ｘとは天気に関すること  ⇒  小松は＄Ｘ」
「＄Ｗ  ＆  小松は＄Ｘ  ＆  ＄Ｘとは天気に関すること  ⇒  金沢は＄Ｘ」
＝＝＝
＞これにより、得られるルールをそれぞれの観点で有利な書式（命題／ホーン節／共起ツリー）で、効率的に表現することが可能になる。
【０００７】
また、請求項３に係る発明は、
前記所定テキスト集合中の各単一テキストを文ごと又は意味の区切りごとに分割してできた包含文字列集合の各要素（包含文字列）又は該各要素の組合せ（例えば、いわゆる「構成要件」等）についての、
前記所定テキスト集合の要素（単一テキスト）内での実質的な共起、又は、該所定テキスト集合における共起頻度を、
前記変数での置換による抽象化又は正規化を介して求め、
該実質的な共起の存在又は共起頻度により、
規則性を学習することを特徴とする
請求項１又は２に記載の
コンピュータプログラムを提供する。
：ここで「抽象化又は正規化」とは、固有名詞等が置換されるより一般的な変数名により、その場所に出現しがちな統計的文字列集合として抽象化されたり、修飾語や表記ゆれが吸収されたりすること、また、さらに各単一テキストで複数個順番に表現される意味的な単位が実質的にＪＳＯＮ形式等に相当する場合（単一テキストが単純なＪＳＯＮ形式の並びからなる場合だけでなく、ＪＳＯＮ形式のネスト（複文）も含みうる）に、格要素（主格、目的格、等）の出現順についての事前定義された正規化規則等に基づいて機械的に正規化されること等をいう。
＞これにより、用語や語順等の表記ゆれによる共起要素の泣き別れを簡単に排して、実質的な共起又は共起頻度をより簡単な自動計算で自動分析することが可能になる。
【０００８】
また、請求項４に係る発明は、
変数名の表記ゆれの可能性を、
各単一テキストの、単一包含文字列内でのおよび複数包含文字列間での、同一用語から置換される変数名の統一の観点（以降、「観点１」とする）、
前記所定テキスト集合内の共起を分析する複数単一テキスト内での、
変数名があらわす変数に代入されうる値の性格（文字列の集合の意味的共通点等）
もしくは
複数単一テキスト間で対応する各包含文字列における他の部分文字列との位置関係に応じた変数名の統一の観点（以降、「観点２」とする）、
又は、
その両方の観点
から自動的に解消して
比較しながら
前記実質的な共起の存在又は共起頻度を求めること
を特徴とする
請求項３に記載の
コンピュータプログラムを提供する。
：ここでは、変数名以外の文字列部分の表記ゆれの機械的解消や、上記ＪＳＯＮに関連して言及した格構造の出現順の正規化等といった機械的解消も、当然併用することができる。
：なお、「同一用語から置換される変数名の統一」（観点１）は、変数に置換するごとにその単一テキスト内のすべての同一用語を同じ変数名（たとえば＄１から＄Ｎまでの連番）で置換することにより、実現することができる。
：また、「前記所定テキスト集合内の共起を分析する複数単一テキスト内での、
変数名があらわす変数に代入されうる値の性格（文字列の集合の意味的共通点等）もしくは
複数単一テキスト間で対応する各包含文字列における他の部分文字列との位置関係に応じた変数名の統一の観点」は、単純には、単一テキストごとに、前の包含文字列から、たとえば、新たな＄１からの連番を付与していくことにより実現することができる。
：「他の文字列との位置関係の統一」は、いわゆるｄ−ｂｉｇｒａｍ技術や特開平11-250062及び特開平10-307724などに記載される技術により、統一の程度を求めることができる。
：また、それぞれの単一テキストに一旦付与し終えたのち、付与後の両テキストの包含文字列集合間の要素包含文字列の完全一致件数（又は、部分一致件数や類似度）が最も大きくなるように番号を付与しなおす全探索アルゴリズム等を採用してもよい。
：また、いずれの単一テキストについても、包含文字列集合への分割したのちに、それぞれの集合の中で「あいうえお」順などで文字列ソートした順番で、上記それぞれ置換（単一テキストごとに＄１からの連番の付与）を実施していってもよい（これにより一定の場合には、他の文字列との位置関係が揃ったもの、ひいては位置関係の一致度等を計算しやすいものになる）。
：例えば、単一テキスト１「太郎は花子が好き。花子は次郎が好き。次郎は花子が好き。」とする。
：同様に、単一テキスト２「太郎は夢子が好き。夢子は次郎が好き。次郎は夢子が好き。」とする。
：これら（単一テキスト１、２）は、女子の名前だけを例えば＄｛女子｝としてそれぞれ抽象化したときの文の順番が最初から揃っている（第一文から第三文まで完全一致で対応がとれる）ため、上記「あいうえお」順のソートは不要である。
：これらについて、「観点１」および「観点２」から、以下のような正（〇）と不正（×）の置換例を挙げることができる。
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
⇒単一テキスト１の包含文字列集合を置換した集合
｛太郎は＄１が好き，＄１は＄２が好き，＄２は＄１が好き｝
〇単一テキスト１における「観点１（同一用語から置換される変数名の統一）」に配慮されている。
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
⇒単一テキスト１の包含文字列集合を置換した集合
｛太郎は＄１が好き，＄２は＄３が好き，＄３は＄１が好き｝
×単一テキスト１の各包含文字列における同一用語「花子」から置換される変数名の統一（「観点１」に配慮されていない（第１文では＄１、第２文では＄３、第３文では＄１）。
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
⇒単一テキスト２の包含文字列集合を置換した集合
｛太郎は＄１が好き，＄１は＄２が好き，＄２は＄１が好き｝
〇単一テキスト２における「観点１」に配慮されている（結果は同一）。
〇単一テキスト１と２の間における「観点２」にも配慮されている。
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
⇒×単一テキスト２の包含文字列集合を置換した集合
｛太郎は＄２が好き，＄２は＄３が好き，＄３は＄２が好き｝
〇単一テキスト２における「観点１」には配慮されている
×単一テキスト１と２との間における「観点２」の統一には配慮されていない！
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
：こうした統一度（観点１および２の）の計算は、例えば、異なる場所の同一の変数名に同一の値（文字列等。ただし、変数名ごとには異なる値）が代入されうる度合い（代入した後、単一テキストの包含文字列集合間で対応する完全一致（又は上記ｄ−ｂｉｇｒａｍや特開平に開示されたｂｉｇｒａｍ集合類似度が閾値以上）の相手がみつかる度合い）を自動計算することにより可能である。また、「観点１」および「観点２」での不統一の自動的な解消は、変数の割り当てを左記の統一度が最大となるように全探索したりすることにより可能となる。
＞こうした工夫により、実質的な共起のための比較が文字列の単純比較のみで可能になり、学習が高速化される。
【０００９】
また、請求項５に係る発明は、
ホーン節タイプの規則性が
所定テキスト集合のいくつの要素（単一テキスト）の包含文字列集合に対して妥当するかの度合いによって、
ルールの採用／不採用又はルールに付与する信用度を
算出する
請求項１から４のいずれか一項に記載の
コンピュータプログラムを提供する。
：ここで「信用度」としては、「妥当したサンプル数」／「全サンプル数」の値の表示、「妥当するサンプルが存在する」旨の表示、などを採用することができる。
＞これにより、ホーン節タイプの規則性（仮説）の妥当性の確認及び表示を効率化・正確化することができる。
【００１０】
また、請求項６に係る発明は、
各単一テキストごとに定義されたプログラム解釈可能な意味論、
テキスト内部又は外部で定義されたプログラム解釈可能な意味論、
又は、その両方に基づいて
一部追加又は一部削除された文字列集合を該単一テキストの包含文字列の集合として処理を行う、
請求項１から５のいずれか一項に記載の
コンピュータプログラムを提供する。
＞これにより、元の各単一テキストを簡潔にしたり、内容統一したりすることができる。
：「一部追加」の例としては、示されたライブラリのパス（ＵＲＬやＬＡＮ／ＰＣ内パス）にあるテキスト（複数の包含文字列を含みうる）を展開した集合を対象とする等である。
：「一部削除」の例としては、外部で定義された「科学的／道徳的にあってはならない内容を示す文」に合致する包含文字列のみを削除した集合を対象とする場合等である。
【００１１】
また、請求項７に係る発明は、
単一テキスト毎に、
該包含文字列集合の可能な組合せ及び変数置換の可能な組み合わせから
可能なホーン節集合を列挙して、
各ホーン節により、
所定テキスト集合中の各単一テキストに存在しない包含文字列を該単一テキスト内の他の包含文字列集合から導出できてしまう程度、
所定テキスト集合中の各単一テキストに存在する包含文字列が該単一テキスト内の他の包含文字列集合から導出できる程度、
または、その組み合わせにより、
各ホーン節の採用／不採用、信用度、必要度を決定する
請求項１から６のいずれか一項に記載の
コンピュータプログラムを提供する。
：ここで、可能なホーン節は、単純な全探索の他、上記共起ツリーの根から葉への各パス上の根をヘッド、それ以外をボディの各条件とする、等して機械的に列挙することができる。
：「各ホーン節により、所定テキスト集合中の各単一テキストに存在しない包含文字列を該単一テキスト内の他の包含文字列集合から導出できてしまう程度」は、ホーン節の信用度を低下させたり、必要度を上昇させたりするようにそれぞれの度合いの計算式を構成することができる。
：「各ホーン節により、・・・所定テキスト集合中の各単一テキストに存在する包含文字列が該単一テキスト内の他の包含文字列集合から導出できる程度」は、ホーン節の信用度を上昇させたり、必要度を低下させたりするようにそれぞれの度合いの計算式を構成することができる。
：「採用／不採用」は、例えば、信用度が所定閾値以上となり、必要度が別の所定閾値以上となるものを、ここで機械学習されるべきホーン節として採用する等といった方針とすることができる。
＞これにより、信用度（過汎化等が少ない）と必要性（学習される仮説の不足がない）のバランスのとれた機械学習を行うことができる。
【００１２】
また、請求項８に係る発明は、
所定のテキストの包含文字列の集合の部分集合を
利用者にいくつか選択させて集成した前記所定テキスト集合から
請求項１から７のいずれか一項に記載のコンピュータプログラムにより
機械学習した規則性を
出力することにより
利用者に機械学習のセンスを身に着けさせる
コンピュータプログラム。
：ここで、例えば、「所定のテキスト」が「燕が低く飛ぶ。燕が高く飛ぶ。もうすぐ雨。晴れが続く。」である場合、利用者が｛燕が低く飛ぶ、もうすぐ雨｝｛燕が高く飛ぶ、晴れが続く｝という２つの包含文字列の部分集合を選択して所定テキスト集合｛｛燕が低く飛ぶ、もうすぐ雨｝、｛燕が高く飛ぶ、晴れが続く｝｝を集成した場合、「燕が低く飛ぶ:-もうすぐ雨」「燕が高く飛ぶ:-晴れが続く」（およびそれぞれの逆向きのホーン節）といった規則性（ホーン節）が学習される。
＞これにより、利用者は、自分の選択に応じて、どのような規則性が機械学習されるかを確認でき、機械学習のセンスを身近な因果関係などを題材にして簡単に身に着けることができる。  
【００１３】
また、請求項９に係る発明は、
単独で置換されるべきでない単独置換禁止文字列リストを有し、
単独置換禁止文字列リスト中の文字列を単独では置換しないようにする
請求項１から８のいずれか一項に記載の
コンピュータプログラムを提供する。
：たとえば、よく使用されるひらがなや記号を含めた言い回し「は」「が」「で」「る」「した。」等をそのようなリストの要素として採用することが有利である。
＞これにより、不要な変数化による一般化（テンプレート化）や同定（根拠としてのカウント）等を防ぐことができる。
【００１４】
また、請求項１０に係る発明は、
包含文字列を所定の程度以上共有する単一テキスト同士をマージしてできた単一テキストを、所定テキスト集合に加えて機械学習する、
請求項１から９のいずれか一項に記載のコンピュータプログラムを提供する。
【００１５】
また、本発明は、このようなコンピュータプログラムを用いた装置や方法も提供する。
【発明を実施するための形態】
【００１６】
本実施の形態では、以下のような方針に従って、図１に示す簡易なコンピュータプログラムを構成する。
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
方針１）学習源となる単一テキスト内の共通の部分文字列を同一の値で束縛されるべき変数で置換する。
方針２）学習する規則性の形式は、自然言語に変数を埋め込んだ命題、同様の形式のリテラルを用いたホーン節、又は、共起ツリーである。
方針３）変数での置換による抽象化又は正規化により、規則性を求めるための実質的な共起（機械学習の根拠）をカウントし易くする。
方針４）変数名の表記ゆれの可能性を、同一用語から置換される変数名の統一、変数名があらわす変数に代入されうる値の性格（文字列の集合の意味的共通点等）の統一、もしくは、複数単一テキスト間での同名変数の位置関係の観点から自動的に解消する。
方針５）所定テキスト集合のいくつの要素（単一テキスト）に対して妥当するかの度合いによって、ルールの採用／不採用又はルールに付与する信用度を算出する。
方針６）関連するプログラム解釈可能な意味論により一部追加又は一部削除された文字列集合を対象とする。
方針７）ホーン節が、テキストに存在しない文字列／存在する文字列が導出できる程度によりホーン節の採用／不採用、信用度、必要度を決定する。
方針８）利用者にいくつか選択させて集成したテキスト集合から機械学習した規則性を出力して、利用者に機械学習のセンスを身に着けさせる、
方針９）単独で置換されるべきでない単独置換禁止文字列リストを有し単独では置換しないようにする。
方針１０）包含文字列を所定の程度以上共有する等といった所定条件（利用者やプログラマが指示できる）のもと、単一テキスト同士をマージしてできた新しい単一テキストを、「所定テキスト集合」に加えて機械学習する（加えるタイミングについての議論は段落００１７で後述する）。
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
図１は、以上の方針の一部を簡単に実装したアルゴリズムを示すものである。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■処理１）所定テキスト集合Ｔの各単一テキスト（ｔ１、ｔ２，．．．，ｔＮ）の文単位で区切った包含文字列集合（ｔ１１、ｔ１２、ｔ１ｅ（１）、ｔ２１、・・・ｔ２e（２）、・・・、ｔNe(N)）（ＪＯＩＮではなく繰り返しの出現を許すもの）を求める
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■処理２）共通の包含文字列を一つでも有する単一テキスト同士をマージした新しい単一テキストを生成し、共通の包含文字列の数と双方のそうでない包含文字列の数の割合により仮説の強さ（結束性）を付記する
※１  仮説の強さ（テキスト数２の場合）＝（テキストＸの包含文字列のうちＹにも存在する数＋テキストＹの包含文字列のうちＸにも存在する数）／（テキストＸの包含文字列の数＋テキストＹの包含文字列の数）
※２  仮説の強さ（テキスト数３の場合）＝（テキストＸの包含文字列のうちＹＺにも存在する数＋テキストＹの包含文字列のうちＸＺにも存在する数＋テキストＺの包含文字列のうちＸＹにも存在する数）＊（３−１）／（テキストＸの包含文字列の数＋テキストＹの包含文字列の数＋テキストＺの包含文字列の数）
※３  仮説の強さ（テキスト数Ｎの場合）＝（各テキストの包含文字列のうち他のＮ−１個のテキストにも存在する数（他の複数のテキストにあればあっただけ＋１と数える））＊（Ｎ−１）／（各テキストの包含文字列の数の合計）
※４理論上２のＮ乗個の組合せについて結束性を計算することが可能になる
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■処理３）結束性が閾値以上の「単一テキスト及び合成単一テキスト（処理２）で生成）からなる集合」の各テキストについて、
そのテキストに含まれる複数の包含文字列に共通に含まれる文字列（ただし、ひらがなの場合は３文字以上の共通性があるもの。共通であれば、変数を含む文字列すらも置き換える（ただし、置き換えた結果ある包含文字列で消える変数が他の包含文字列にのみ残る場合は置き換えない））を＄｛＜その文字列＞｝という変数で置き換えていく
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■処理４）「異なる」テキスト間で変数名を共通化すると同じ包含文字列が双方の単一（又は合成単一）テキストにできるような変数（当初はもともと何であったかわかりやすい名前になっているはず）は、変数名を＄１、＄２などとより簡単な共通変数名に、所定テキスト集合全体Ｔ’として、共通化していく（共通化できなくなるまで）
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■処理５）すべての包含文字列の種類について、ヘッドとみなした場合の、構成要件の仮説を、その包含文字列が含まれる単一（又は合成単一）テキストごとに検証する。すなわち、その構成要件（変数名までも同じでなければならない）が含まれるテキスト数が多いほど、かつ、構成要件の条件数が多いほど、信頼できる。
※５信頼度＝（（共起するテキスト数ー共起しないテキスト数）／全部のテキスト数）×（構成要件の条件数／テキストごとの平均包含文字列数）
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■処理６）ホーン節と信頼度の組として出力して終了する
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
【００１７】
また、別の視点（及び、順番の入替に伴う長短所の分析）からも説明した別の実施形態の処理概略は、以下のようになる。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■ステップ１）所定テキスト集合Ｓから包含文字列集合族Ｉを求める
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■ステップ２）Ｉ内の包含文字列の共起をもとにＳ中の複数の単一テキストをマージして信頼度とともにＳに加えたＳ’を求める
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■ステップ３）Ｉ（ステップ２より先に行うときはＳがベース、後に行うときはＳ’がベース）内の包含文字列中の各単一テキスト内の共通文字列を変数（元の文字列を＄｛変数名｝として保持した形）に変換する
※ステップ２よりも先に行うときは、変数化されたものとされていないものがステップ２で泣き別れることがある
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■ステップ４）変数名を、よりマッチしやすい数字やアルファベットなどへと正規化する（「動物名」：１、「動物名」：２、「人物名」：１、「地名」：１、等の型を併用してもよい）。ここでは、例えば「・・・が〇〇〇を捕食し、〇〇〇が□□□を捕食する。」という重文の「後半の主格」であるという「役割」（や捕食階層２位などという「位置づけ」）の共通性を考慮したい。
※ステップ３と４をステップ２よりも先に行うときは、変数化されたものとされていないもの、テキスト中で変数化される順位等によって、ステップ２で泣き別れることがある
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■ステップ５）信頼度を閾値としてホーン節を生成し、
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
■ステップ６）出力する
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
【００１８】
別の実施形態では、
利用者が、事前に用意された文集合のサブセットを並べてつなげたものを単一テキストとし、それを集成したものを所定テキスト集合（単一テキストの集合）としてシステム（計算機を含む装置）に与え、システムがこれをもとに機械学習した結果を利用者に表示するようにプログラムされている。
【００１９】
また別の実施形態は、いわば動的な機械学習（抽象化、標準化、パターン化）であり、
利用者等が自然言語等で入力した具体的な問題や質問さらにはそれまでに途中計算された結果等を加えた文脈等を元に、十分少ない（動的機械学習の速度の必要等のための）要素数の所定テキスト集合を、ネット等（ＷＥＢテキスト全般、特定企業限りの共有フォルダ、個人ＰＣ内、等）に配置された知識テキスト集合から（従来の自動検索技術で自動検索する等して）動的に選択しかつそこで得られた知識テキスト集合に本発明を適用して得られたいわば「動的な仮説としてのホーン節」等（すなわち命題形式、共起ツリー、等）により、（先に自動検索のキーとして用いた）具体的な問題や質問等に解答したり応答したりするようプログラムされている。
これにより、自然言語テキスト（集合）を推論根拠として、動的により柔軟に抽象化した、推論が可能になり知識獲得ボトルネックやいわゆるフレーム問題の解決にもつながりやすくなる。
自動検索のための記事のマッチ度評価基準としては、通常のｎ−ｇｒａｍ等を用いた検索（近接する文字など用語の統計的な傾向の類似等をとらえる）の他、ｄ−ｂｉｇｒａｍや前述の出願公開に示す基準を用いることができる。
この場合、解答や応答における解等の表示とともに、どのような（十分少ない要素数の）所定テキスト集合からどのような「動的な仮説としてのホーン節」を生成し、各解のためにどのような推論（例えばホーン節の適用）を行ったか（又はそれらの抜粋情報）を利用者に表示することが有利である。
一般的な自然言語を含む自由文にもとづく自動推論のプログラミングの実施可能性については、本件の主題ではないので、特許文献１を参考にされたい。
【００２０】
また別の実施形態では、上記のような動的な機械学習ではないが、十分要素数の多い「所定のテキスト集合」を、ランダムに分割して、「所定のテキスト集合」の集合として、それぞれの「所定のテキスト集合」から得られた仮説（ホーン節等の規則性）を集合をマージすることにより、より高速に多くの仮説を得るようにプログラムしている。
【００２１】
また別の実施形態では、自然言語テキストを所定の基準（文内の標準的な格順・修飾法・語彙、日本語化／英語化、等）であらかじめ正規化した上で、機械学習を開始するようプログラムする。
【００２２】
また別の実施形態では、機械学習により得られたホーン節の条件部の各リテラル（固定文字列又は変数を埋め込んだ文字列。自然言語でも形式言語でもよい自由文）の真／偽や可能な変数束縛を動的に定義する別途のＡＰＩとの適合度をリテラルの表層から求めて、そのＡＰＩを用いて解答等できるように解釈系（インタープリタ）を構成しつつ、そのＡＰＩ名をプログラマや利用者に学習結果や推論根拠として示すように構成する。学習結果として示す場合は、ホーン節内にＡＰＩのＵＲＩ等を埋め込むよう構成する場合がある。
【実施例】
【００２３】
利用者が、選択肢の中から選択した又は自由に入力した「いくつかの文」又は「いくつかの文の集合」から、ＡＩが機械学習した内容を確認して遊ぶおもちゃ（パソコンを土台としたもの）提供する。以下、その入力（選択にもとづくテキスト（「いくつかの文」）／テキスト集合（「いくつかの文の集合」）と出力（変数を伴う規則（変数の頭の＄は子供用のために省略すしている）が出る例）について解説する。
-------------------------------------------------------
〇例１（「いくつかの文」の場合その１）
「金沢は雨が降った。金沢はすずしくなった。」
からは、以下の規則が自動的に学習されて利用者に示される。
第１規則「Ｘは雨が降った  ⇒  Ｘはすずしくなった」
第２規則「Ｘはすずしくなった  ⇒  Ｘは雨が降った」
-------------------------------------------------------
〇例２（「いくつかの文」の場合その２）
「金沢は雨が降った。小松は雨が降った。」
からは、以下の規則が自動的に学習されて利用者に示される。
第１規則「金沢はＸ  ⇒  小松はＸ」
第２規則「小松はＸ  ⇒  金沢はＸ」
-------------------------------------------------------
〇例３（「いくつかの文」の場合その３）
「小松は雨が降った。金沢はすずしくなった。金沢と小松は近い。」
からは、以下の規則が自動的に学習されて利用者に示される。
第１規則「Ｙは雨が降った  ＆  ＸとＹは近い  ⇒  Ｘはすずしくなった」
第２規則「Ｙはすずしくなった  ＆  ＸとＹは近い  ⇒  Ｘは雨が降った」
第３規則「Ｙはすずしくなった  ＆  Ｘは雨が降った  ⇒  ＸとＹは近い」
-------------------------------------------------------
〇例４（「いくつかの文の集合」の場合その１、集合の要素となる「いくつかの文」をマージしかつ抽象化・正規化した後に根拠となる例の数を明示する場合）
第１テキスト「金沢は雨が降った。金沢はすずしくなった。」
第２テキスト「小松は雨が降った。小松はすずしくなった。」
第３テキスト「金沢は雨が降った。小松は雨が降った。」
第４テキスト「雨が降ったとは天気に関すること。」
からは、以下の規則が自動的に学習されて利用者に示される。
なお、ここでは、”雨が降った”が２回以上出現する第３テキストと、”雨が降った”を含みかつ１文しかない（すなわち、単体ではホーン節になりにくい）第４テキストとをマージすることにより、以下の第３規則と第４規則を自動で得ている。
第１規則「Ｘは雨が降った  ⇒  Ｘはすずしくなった」根拠数２／３
第２規則「Ｘはすずしくなった  ⇒  Ｘは雨が降った」根拠数２／３
第３規則「金沢はＸ  ＆  Ｘとは天気に関すること  ⇒  小松はＸ」根拠数１／３
第４規則「小松はＸ  ＆  Ｘとは天気に関すること  ⇒  金沢はＸ」根拠数１／３
-------------------------------------------------------
なお、これらの規則は、明らかに自然言語に変数（＄つき）を埋め込んだホーン節（特許文献１を参照）に変換可能である。例えば上記の第４規則は以下のようになる。
-------------------------------------------------------
第４規則「金沢は＄Ｘ :- 小松は＄Ｘ；＄Ｘとは天気に関すること；」根拠数１／３
-------------------------------------------------------
【図面の簡単な説明】
【００２４】
【図１】本発明による機械学習のコンピュータプログラムの一実施の形態の概略を示した図である。
【図１】
2020047030.tif 000002