IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ナレルシステム有限会社の特許一覧

特許7515094自然言語に変数を埋め込んだリテラルからなるホーン節を学習するコンピュータプログラム、方法及び装置
<>
  • 特許-自然言語に変数を埋め込んだリテラルからなるホーン節を学習するコンピュータプログラム、方法及び装置 図1
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-04
(45)【発行日】2024-07-12
(54)【発明の名称】自然言語に変数を埋め込んだリテラルからなるホーン節を学習するコンピュータプログラム、方法及び装置
(51)【国際特許分類】
   G06N 5/02 20230101AFI20240705BHJP
   G06F 40/247 20200101ALI20240705BHJP
【FI】
G06N5/02
G06F40/247
【請求項の数】 9
(21)【出願番号】P 2018175748
(22)【出願日】2018-09-20
(65)【公開番号】P2020047030
(43)【公開日】2020-03-26
【審査請求日】2021-09-20
【新規性喪失の例外の表示】特許法第30条第2項適用 ▲1▼ 「金沢ものづくりアイディアコンテスト」応募用紙(写し)
(73)【特許権者】
【識別番号】301062798
【氏名又は名称】ナレルシステム株式会社
(72)【発明者】
【氏名】中村圭介
【審査官】牛丸 太希
(56)【参考文献】
【文献】特開2015-028697(JP,A)
【文献】特開平10-078951(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 40/00-40/58
(57)【特許請求の範囲】
【請求項1】
所定テキスト集合の要素(単一テキスト)間での、
包含文字列の共起か
規則性を機械学習する
コンピュータプログラムであって
単一テキスト内の共通の部分文字列を同一の値で束縛されるべき変数で置換するステップ
を有すること、

前記機械学習する規則性が、
前記テキスト集合の包含文字列に変数の埋め込まれた形式の命題、同様の形式のリテラルから構成されたホーン節、又は、同様の形式のリテラルから構成された共起ツリーであること、

前記所定テキスト集合中の各単一テキストを文ごと又は意味の区切りごとに分割してできた包含文字列集合の各要素(包含文字列)又は該各要素の組合せについての、
前記所定テキスト集合の要素(単一テキスト)内での共起、又は、該所定テキスト集合における共起頻度を、
前記変数での置換による抽象化又は正規化を介して求め、
該共起の存在又は共起頻度により、
規則性を学習することを特徴とする
コンピュータプログラム。
【請求項2】
変数名の表記ゆれの可能性を、
各単一テキストの、単一包含文字列内でのおよび複数包含文字列間での、同一用語から置換される変数名の統一の観点(以降、「観点1」とする)、
前記所定テキスト集合内の共起を分析する複数単一テキスト内での、変数名があらわす変数に代入されうる値の性
しくは
複数単一テキスト間で対応する各包含文字列における他の部分文字列との位置関係に応じた変数名の統一の観点(以降、「観点2」とする)、
又は、
その両方の観点
から自動的に解消して
比較しながら
記共起の存在又は共起頻度を求めること
を特徴とする
請求項1に記載のコンピュータプログラム。
【請求項3】
ホーン節タイプの規則性が
所定テキスト集合のいくつの要素(単一テキスト)の包含文字列集合に対して妥当するかの度合いによって、
ルールの採用/不採用又はルールに付与する信用度を算出する
請求項1または2に記載のコンピュータプログラム。
【請求項4】
示されたライブラリのパスにあるテキストを展開した集合を一部追加
又は
外部で定義された「科学的/道徳的にあってはならない内容を示す文」に合致する包含文字列のみを一部削除された文字列集合を該単一テキストの包含文字列の集合として処理を行う、
請求項1から3のいずれか一項に記載の
コンピュータプログラム。
【請求項5】
単一テキスト毎に、
該包含文字列集合の可能な組合せ及び変数置換の可能な組み合わせから可能なホーン節集合を列挙して、
各ホーン節により、
所定テキスト集合中の各単一テキストに存在しない包含文字列を該単一テキスト内の他の包含文字列集合から導出できてしまう程度、
所定テキスト集合中の各単一テキストに存在する包含文字列が該単一テキスト内の他の包含文字列集合から導出できる程度、
または、その組み合わせにより、
各ホーン節の採用/不採用、信用度、必要度を決定する
請求項1から4のいずれか一項に記載の
コンピュータプログラム。
【請求項6】
所定のテキストの包含文字列の集合の部分集合を
利用者にいくつか選択させて集成した前記所定テキスト集合から
請求項1から5のいずれか一項に記載のコンピュータプログラムにより
機械学習した規則性を出力す
コンピュータプログラム。
【請求項7】
単独で置換されるべきでない単独置換禁止文字列リストを有し、
単独置換禁止文字列リスト中の文字列を単独では置換しないようにする
請求項1から6のいずれか一項に記載の
コンピュータプログラム。
【請求項8】
包含文字列を所定の程度以上共有する単一テキスト同士をマージしてできた単一テキストを、所定テキスト集合に加えて機械学習する、
請求項1から7のいずれか一項に記載のコンピュータプログラム。
【請求項9】
請求項1から8のいずれか一項に記載のコンピュータプログラムを用いた方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習に関する。また、機械学習を利用した自動推論に関する。
【背景技術】
【0002】
自然言語を用いた本格的な推論技術(特許文献1)や、複数の制作者のプログラムを動的に引用・合成して問題解決等を行う技術(特許文献2、3、5等)が存在する。また、自然言語の表記ゆれのリスクをコントロールする技術もある程度は存在する(特許文献4)。
また、自然言語コーパス等からテンプレート等を学習する技術もは存在した。
しかし、自然言語に変数を埋め込んだ形のリテラルを用いつつ、論理プログラミング言語Prologと同様の意味論(機械解釈)を有するホーン節を学習することは、従来、行われていなかった。これは、そもそも自然言語に変数を埋め込んだ形のリテラルから構成されるホーン節による推論が(特許文献1の公開以前は)難しかったためであり、結果として、そのようなホーン節の効率的な学習も困難であったためである。また、このため、子供がなじみやすい自然言語のままの形での機械推論や機械学習を(さらにはトレースや説明の可能な態様で)提供することができず、子供がAIになじむのを困難にしていた。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第6263858号
【文献】特許第5246680号
【文献】特願2017-192296
【文献】特願2016-103010
【文献】特願2015-219007
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、このような課題を解決し、自然言語に変数を埋め込んだ形のホーン節等を
トレースや説明が可能な形で効率的に機械学習して機械推論を可能にすること、
これにより、子供がAIになじみやすくすることを目的とする。
【課題を解決するための手段】
【0005】
かかる課題を解決するため、
本発明の請求項1は、
所定テキスト集合の要素(単一テキスト)間での、
包含文字列の
実質的な共起等から
規則性を機械学習する
コンピュータプログラムであって
単一テキスト内の共通の部分文字列を同一の値で束縛されるべき変数で置換するステップを
有することを特徴とするコンピュータプログラムを提供する。
:ここで、「所定テキスト集合」は、要素が一つの場合も許容するものとし、要素はそれぞれが単一テキストである。
また、「包含文字列」とは、例えば、単一テキストを自然言語の文の区切り(「。」等)やその他(自由文や形式言語文等)の意味の区切り(単語、デリミタ、格、スロット、段落、節、章、等)で区切ったできた各文字列をいう。
:また、以降で、「要素間での包含文字列の実質的な共起等」とは、1の要素の場合にはその要素にのみ包含文字列が存在する場合を指し、2以上の要素の場合にはそれらの要素に共通して包含文字列が含まれる場合を指す。
:また、「規則性」とは、所定テキスト集合の要素が一つ(単一テキスト一つだけ)の場合は、「共起」ではなく「存在」という規則性を学べるものと解する。
:また、「同一の値」とは、例えば、固定文字列(「晴れ」)や変数を含む文字列(「晴れのち$X」)等である。
:また、「コンピュータプログラム」とは、同様の処理をFPGAや並列システム等として実装したハードウエアが主体のシステム(ソフトウエア部分を含んでいてもよい)をも指すものとする。
:例えば、単一テキストが「太郎は太郎の娘を愛している」の場合、置換後は「$Aは$Aの娘を愛している」となることができる。
:また、単一テキストが「太郎は娘を愛している。彼の娘は素直だから。」の場合、置換後は「太郎は$Aを愛している。彼の$Aは素直だから。」等となることができる。なお、「太郎は息子を愛している。彼の息子は素直だから。」の場合、置換後はやはり「太郎は$Aを愛している。彼の$Aは素直だから。」となる(これにより、表層(元の固定文字列)が異なっても、実質的に関連しうる2つの事象により根拠づけられた、より確からしい仮説(規則性)を機械学習することができる)。
>この手法により、テキストや包含文字列の一部を変数化したテンプレートとして効率的に一般化した形式の機械学習が可能となる。
【0006】
また、請求項2に係る発明は、
前記機械学習する規則性が、
前記テキスト集合の包含文字列に変数の埋め込まれた形式の命題、同様の形式のリテラルから構成されたホーン節、又は、同様の形式のリテラルから構成された共起ツリーである
請求項1に記載の
コンピュータプログラムを提供する。
:ここで「変数の埋め込まれた形式の命題」の例としては、「$Aは$Aの子に餌を与える」等を挙げることができる。これは「$Bは$Aの子⇒$Aは$Bに餌を与える」等と条件と効果に分離したルール、ないしは、ホーン節(「$Aは$Bに餌を与える :- $Bは$Aの子, ・・・」)になおして書くこともできる。
:ここで「ホーン節」とは、Prologのルールを記述するためのホーン節と同様の構造と意味論をもつものである。ただし、基本的なリテラルの記法は、一階述語論理形式(「好き(太郎,X)」等)ではなく、固定文字列に変数(例えば、主語、述語、副詞、程度パラメータ等の具体的な値(文字列)を代入するためのもの)を埋め込んだもの(「太郎は$Xが好き」等)である。
:ここで「共起ツリー」とは、例えば、{{A,B,C},{A,B,D},{B,D},{B,E},{D,E}}という、(共起の要素と頻度を表す)集合族(集合の集合)があった場合に、以下のように表示するものである。

=========
A-2-B-1-C
| 1-D
1-C-1-B
1-D-1-B
=========
B-2-A-1-C
| 1-D
2-D-1-A
1-C-1-A
1-E
=========
C-1-A-1-B
1-B-1-A
=========
D-2-B-1-A
1ーA-1-B
1-E
=========
E-1-B
1-D
=========
〇ここで、最初のツリーは、
Aと共起するものがB,C,Dで
それぞれの頻度が2,1,1であること、
AかつBと共起するものがCとDで
それぞれの頻度が1,1であること、
AかつCと共起するものがBで
その頻度が1であること
AかつDと共起するものがBで
その頻度が1であること
等を表している。

〇こうした共起ツリーは、
仮定した事象(例えばAとB)にもとづき、
・確率の高い事象(例えばCとD)
・同時に存在しえた事象(この例では同じくCとD)
・同時には存在しなかった事象(この例ではE)
を効率的に特定できるようにするものである。

〇ここでは、表記「A」「B」等に変数を省略している(例えば、「A」は実際には「${拾得人}が${権利者}に返却した」であってもよい)が、
変数が含まれている(左のような)場合は変数名(識別子ないしはスロット名)が異なることにより
命題自体(この場合は述語自体も)も異なるものとみなしてツリーを構築するようプログラミングすることになる。この場合、もちろん、変数名に応じた特別な意味をもたせた運用(例えば変数名が「${権利者}」であるときは、それを埋める文字列として人間又は法人の具体名しか許容しないようプログラムしたり)とすることも可能である。

〇そして、ツリーの葉に向かうパスに存在する同名の変数には同じ値を代入(束縛)することができるとすることにより、変数によりさらに抽象化した(すなわち、よりゆるい同定基準とした)簡潔な共起ツリーを得て運用することができるようになる。
また、このようなツリーにおいて、根への部分パス(又は、ノード(の包含文字列等))を所定の基準(例えば、3分の1)以上の割合で共有するような(又は、閾値以上の意味的/表層的類似度を示すような)サブツリーを単一テキスト(本来は単一テキストを構成するパスは枝分かれがあってはならないだが)と「みなして」機械学習することにより、例えば、以下のように泣き別れしていた潜在的かつ有用な制約(この例では、「$Xは天気に関すること」)を顕在化した学習結果を得ることができる。

===
「2018年8月のデータ。金沢は雨が降った。小松は雨が降った。」
「2018年8月のデータ。雨が降ったとは天気に関すること。」

↓機械学習(「2018年8月のデータ」を共通の根とできる)

「$W & 金沢は$X & $Xとは天気に関すること ⇒ 小松は$X」
「$W & 小松は$X & $Xとは天気に関すること ⇒ 金沢は$X」
===

>これにより、得られるルールをそれぞれの観点で有利な書式(命題/ホーン節/共起ツリー)で、効率的に表現することが可能になる。
【0007】
また、請求項3に係る発明は、
前記所定テキスト集合中の各単一テキストを文ごと又は意味の区切りごとに分割してできた包含文字列集合の各要素(包含文字列)又は該各要素の組合せ(例えば、いわゆる「構成要件」等)についての、
前記所定テキスト集合の要素(単一テキスト)内での実質的な共起、又は、該所定テキスト集合における共起頻度を、
前記変数での置換による抽象化又は正規化を介して求め、
該実質的な共起の存在又は共起頻度により、
規則性を学習することを特徴とする
請求項1又は2に記載の
コンピュータプログラムを提供する。
:ここで「抽象化又は正規化」とは、固有名詞等が置換されるより一般的な変数名により、その場所に出現しがちな統計的文字列集合として抽象化されたり、修飾語や表記ゆれが吸収されたりすること、また、さらに各単一テキストで複数個順番に表現される意味的な単位が実質的にJSON形式等に相当する場合(単一テキストが単純なJSON形式の並びからなる場合だけでなく、JSON形式のネスト(複文)も含みうる)に、格要素(主格、目的格、等)の出現順についての事前定義された正規化規則等に基づいて機械的に正規化されること等をいう。
>これにより、用語や語順等の表記ゆれによる共起要素の泣き別れを簡単に排して、実質的な共起又は共起頻度をより簡単な自動計算で自動分析することが可能になる。
【0008】
また、請求項4に係る発明は、
変数名の表記ゆれの可能性を、
各単一テキストの、単一包含文字列内でのおよび複数包含文字列間での、同一用語から置換される変数名の統一の観点(以降、「観点1」とする)、
前記所定テキスト集合内の共起を分析する複数単一テキスト内での、
変数名があらわす変数に代入されうる値の性格(文字列の集合の意味的共通点等)
もしくは
複数単一テキスト間で対応する各包含文字列における他の部分文字列との位置関係に応じた変数名の統一の観点(以降、「観点2」とする)、
又は、
その両方の観点
から自動的に解消して
比較しながら
前記実質的な共起の存在又は共起頻度を求めること
を特徴とする
請求項3に記載の
コンピュータプログラムを提供する。

:ここでは、変数名以外の文字列部分の表記ゆれの機械的解消や、上記JSONに関連して言及した格構造の出現順の正規化等といった機械的解消も、当然併用することができる。

:なお、「同一用語から置換される変数名の統一」(観点1)は、変数に置換するごとにその単一テキスト内のすべての同一用語を同じ変数名(たとえば$1から$Nまでの連番)で置換することにより、実現することができる。

:また、「前記所定テキスト集合内の共起を分析する複数単一テキスト内での、
変数名があらわす変数に代入されうる値の性格(文字列の集合の意味的共通点等)もしくは
複数単一テキスト間で対応する各包含文字列における他の部分文字列との位置関係に応じた変数名の統一の観点」は、単純には、単一テキストごとに、前の包含文字列から、たとえば、新たな$1からの連番を付与していくことにより実現することができる。

:「他の文字列との位置関係の統一」は、いわゆるd-bigram技術や特開平11-250062及び特開平10-307724などに記載される技術により、統一の程度を求めることができる。

:また、それぞれの単一テキストに一旦付与し終えたのち、付与後の両テキストの包含文字列集合間の要素包含文字列の完全一致件数(又は、部分一致件数や類似度)が最も大きくなるように番号を付与しなおす全探索アルゴリズム等を採用してもよい。

:また、いずれの単一テキストについても、包含文字列集合への分割したのちに、それぞれの集合の中で「あいうえお」順などで文字列ソートした順番で、上記それぞれ置換(単一テキストごとに$1からの連番の付与)を実施していってもよい(これにより一定の場合には、他の文字列との位置関係が揃ったもの、ひいては位置関係の一致度等を計算しやすいものになる)。
:例えば、単一テキスト1「太郎は花子が好き。花子は次郎が好き。次郎は花子が好き。」とする。
:同様に、単一テキスト2「太郎は夢子が好き。夢子は次郎が好き。次郎は夢子が好き。」とする。
:これら(単一テキスト1、2)は、女子の名前だけを例えば${女子}としてそれぞれ抽象化したときの文の順番が最初から揃っている(第一文から第三文まで完全一致で対応がとれる)ため、上記「あいうえお」順のソートは不要である。
:これらについて、「観点1」および「観点2」から、以下のような正(〇)と不正(×)の置換例を挙げることができる。

===========================
⇒単一テキスト1の包含文字列集合を置換した集合
{太郎は$1が好き,$1は$2が好き,$2は$1が好き}
〇単一テキスト1における「観点1(同一用語から置換される変数名の統一)」に配慮されている。

===========================
⇒単一テキスト1の包含文字列集合を置換した集合
{太郎は$1が好き,$2は$3が好き,$3は$1が好き}
×単一テキスト1の各包含文字列における同一用語「花子」から置換される変数名の統一(「観点1」に配慮されていない(第1文では$1、第2文では$3、第3文では$1)。

===========================
⇒単一テキスト2の包含文字列集合を置換した集合
{太郎は$1が好き,$1は$2が好き,$2は$1が好き}
〇単一テキスト2における「観点1」に配慮されている(結果は同一)。
〇単一テキスト1と2の間における「観点2」にも配慮されている。

===========================
⇒×単一テキスト2の包含文字列集合を置換した集合
{太郎は$2が好き,$2は$3が好き,$3は$2が好き}
〇単一テキスト2における「観点1」には配慮されている
×単一テキスト1と2との間における「観点2」の統一には配慮されていない!
===========================
:こうした統一度(観点1および2の)の計算は、例えば、異なる場所の同一の変数名に同一の値(文字列等。ただし、変数名ごとには異なる値)が代入されうる度合い(代入した後、単一テキストの包含文字列集合間で対応する完全一致(又は上記d-bigramや特開平に開示されたbigram集合類似度が閾値以上)の相手がみつかる度合い)を自動計算することにより可能である。また、「観点1」および「観点2」での不統一の自動的な解消は、変数の割り当てを左記の統一度が最大となるように全探索したりすることにより可能となる。
>こうした工夫により、実質的な共起のための比較が文字列の単純比較のみで可能になり、学習が高速化される。
【0009】
また、請求項5に係る発明は、
ホーン節タイプの規則性が
所定テキスト集合のいくつの要素(単一テキスト)の包含文字列集合に対して妥当するかの度合いによって、
ルールの採用/不採用又はルールに付与する信用度を
算出する
請求項1から4のいずれか一項に記載の
コンピュータプログラムを提供する。

:ここで「信用度」としては、「妥当したサンプル数」/「全サンプル数」の値の表示、「妥当するサンプルが存在する」旨の表示、などを採用することができる。
>これにより、ホーン節タイプの規則性(仮説)の妥当性の確認及び表示を効率化・正確化することができる。
【0010】
また、請求項6に係る発明は、
各単一テキストごとに定義されたプログラム解釈可能な意味論、
テキスト内部又は外部で定義されたプログラム解釈可能な意味論、
又は、その両方に基づいて
一部追加又は一部削除された文字列集合を該単一テキストの包含文字列の集合として処理を行う、
請求項1から5のいずれか一項に記載の
コンピュータプログラムを提供する。
>これにより、元の各単一テキストを簡潔にしたり、内容統一したりすることができる。
:「一部追加」の例としては、示されたライブラリのパス(URLやLAN/PC内パス)にあるテキスト(複数の包含文字列を含みうる)を展開した集合を対象とする等である。
:「一部削除」の例としては、外部で定義された「科学的/道徳的にあってはならない内容を示す文」に合致する包含文字列のみを削除した集合を対象とする場合等である。
【0011】
また、請求項7に係る発明は、
単一テキスト毎に、
該包含文字列集合の可能な組合せ及び変数置換の可能な組み合わせから
可能なホーン節集合を列挙して、
各ホーン節により、
所定テキスト集合中の各単一テキストに存在しない包含文字列を該単一テキスト内の他の包含文字列集合から導出できてしまう程度、
所定テキスト集合中の各単一テキストに存在する包含文字列が該単一テキスト内の他の包含文字列集合から導出できる程度、
または、その組み合わせにより、
各ホーン節の採用/不採用、信用度、必要度を決定する
請求項1から6のいずれか一項に記載の
コンピュータプログラムを提供する。
:ここで、可能なホーン節は、単純な全探索の他、上記共起ツリーの根から葉への各パス上の根をヘッド、それ以外をボディの各条件とする、等して機械的に列挙することができる。
:「各ホーン節により、所定テキスト集合中の各単一テキストに存在しない包含文字列を該単一テキスト内の他の包含文字列集合から導出できてしまう程度」は、ホーン節の信用度を低下させたり、必要度を上昇させたりするようにそれぞれの度合いの計算式を構成することができる。
:「各ホーン節により、・・・所定テキスト集合中の各単一テキストに存在する包含文字列が該単一テキスト内の他の包含文字列集合から導出できる程度」は、ホーン節の信用度を上昇させたり、必要度を低下させたりするようにそれぞれの度合いの計算式を構成することができる。
:「採用/不採用」は、例えば、信用度が所定閾値以上となり、必要度が別の所定閾値以上となるものを、ここで機械学習されるべきホーン節として採用する等といった方針とすることができる。
>これにより、信用度(過汎化等が少ない)と必要性(学習される仮説の不足がない)のバランスのとれた機械学習を行うことができる。
【0012】
また、請求項8に係る発明は、
所定のテキストの包含文字列の集合の部分集合を
利用者にいくつか選択させて集成した前記所定テキスト集合から
請求項1から7のいずれか一項に記載のコンピュータプログラムにより
機械学習した規則性を
出力することにより
利用者に機械学習のセンスを身に着けさせる
コンピュータプログラム。
:ここで、例えば、「所定のテキスト」が「燕が低く飛ぶ。燕が高く飛ぶ。もうすぐ雨。晴れが続く。」である場合、利用者が{燕が低く飛ぶ、もうすぐ雨}{燕が高く飛ぶ、晴れが続く}という2つの包含文字列の部分集合を選択して所定テキスト集合{{燕が低く飛ぶ、もうすぐ雨}、{燕が高く飛ぶ、晴れが続く}}を集成した場合、「燕が低く飛ぶ:-もうすぐ雨」「燕が高く飛ぶ:-晴れが続く」(およびそれぞれの逆向きのホーン節)といった規則性(ホーン節)が学習される。
>これにより、利用者は、自分の選択に応じて、どのような規則性が機械学習されるかを確認でき、機械学習のセンスを身近な因果関係などを題材にして簡単に身に着けることができる。
【0013】
また、請求項9に係る発明は、
単独で置換されるべきでない単独置換禁止文字列リストを有し、
単独置換禁止文字列リスト中の文字列を単独では置換しないようにする
請求項1から8のいずれか一項に記載の
コンピュータプログラムを提供する。
:たとえば、よく使用されるひらがなや記号を含めた言い回し「は」「が」「で」「る」「した。」等をそのようなリストの要素として採用することが有利である。
>これにより、不要な変数化による一般化(テンプレート化)や同定(根拠としてのカウント)等を防ぐことができる。
【0014】
また、請求項10に係る発明は、
包含文字列を所定の程度以上共有する単一テキスト同士をマージしてできた単一テキストを、所定テキスト集合に加えて機械学習する、
請求項1から9のいずれか一項に記載のコンピュータプログラムを提供する。
【0015】
また、本発明は、このようなコンピュータプログラムを用いた装置や方法も提供する。
【発明を実施するための形態】
【0016】
本実施の形態では、以下のような方針に従って、図1に示す簡易なコンピュータプログラムを構成する。
============================
方針1)学習源となる単一テキスト内の共通の部分文字列を同一の値で束縛されるべき変数で置換する。
方針2)学習する規則性の形式は、自然言語に変数を埋め込んだ命題、同様の形式のリテラルを用いたホーン節、又は、共起ツリーである。
方針3)変数での置換による抽象化又は正規化により、規則性を求めるための実質的な共起(機械学習の根拠)をカウントし易くする。
方針4)変数名の表記ゆれの可能性を、同一用語から置換される変数名の統一、変数名があらわす変数に代入されうる値の性格(文字列の集合の意味的共通点等)の統一、もしくは、複数単一テキスト間での同名変数の位置関係の観点から自動的に解消する。
方針5)所定テキスト集合のいくつの要素(単一テキスト)に対して妥当するかの度合いによって、ルールの採用/不採用又はルールに付与する信用度を算出する。
方針6)関連するプログラム解釈可能な意味論により一部追加又は一部削除された文字列集合を対象とする。
方針7)ホーン節が、テキストに存在しない文字列/存在する文字列が導出できる程度によりホーン節の採用/不採用、信用度、必要度を決定する。
方針8)利用者にいくつか選択させて集成したテキスト集合から機械学習した規則性を出力して、利用者に機械学習のセンスを身に着けさせる、
方針9)単独で置換されるべきでない単独置換禁止文字列リストを有し単独では置換しないようにする。
方針10)包含文字列を所定の程度以上共有する等といった所定条件(利用者やプログラマが指示できる)のもと、単一テキスト同士をマージしてできた新しい単一テキストを、「所定テキスト集合」に加えて機械学習する(加えるタイミングについての議論は段落0017で後述する)。
============================
図1は、以上の方針の一部を簡単に実装したアルゴリズムを示すものである。

----------------------------
■処理1)所定テキスト集合Tの各単一テキスト(t1、t2,...,tN)の文単位で区切った包含文字列集合(t11、t12、t1e(1)、t21、・・・t2e(2)、・・・、tNe(N))(JOINではなく繰り返しの出現を許すもの)を求める
----------------------------
■処理2)共通の包含文字列を一つでも有する単一テキスト同士をマージした新しい単一テキストを生成し、共通の包含文字列の数と双方のそうでない包含文字列の数の割合により仮説の強さ(結束性)を付記する
※1 仮説の強さ(テキスト数2の場合)=(テキストXの包含文字列のうちYにも存在する数+テキストYの包含文字列のうちXにも存在する数)/(テキストXの包含文字列の数+テキストYの包含文字列の数)
※2 仮説の強さ(テキスト数3の場合)=(テキストXの包含文字列のうちYZにも存在する数+テキストYの包含文字列のうちXZにも存在する数+テキストZの包含文字列のうちXYにも存在する数)*(3-1)/(テキストXの包含文字列の数+テキストYの包含文字列の数+テキストZの包含文字列の数)
※3 仮説の強さ(テキスト数Nの場合)=(各テキストの包含文字列のうち他のN-1個のテキストにも存在する数(他の複数のテキストにあればあっただけ+1と数える))*(N-1)/(各テキストの包含文字列の数の合計)
※4理論上2のN乗個の組合せについて結束性を計算することが可能になる
----------------------------
■処理3)結束性が閾値以上の「単一テキスト及び合成単一テキスト(処理2)で生成)からなる集合」の各テキストについて、
そのテキストに含まれる複数の包含文字列に共通に含まれる文字列(ただし、ひらがなの場合は3文字以上の共通性があるもの。共通であれば、変数を含む文字列すらも置き換える(ただし、置き換えた結果ある包含文字列で消える変数が他の包含文字列にのみ残る場合は置き換えない))を${<その文字列>}という変数で置き換えていく
----------------------------
■処理4)「異なる」テキスト間で変数名を共通化すると同じ包含文字列が双方の単一(又は合成単一)テキストにできるような変数(当初はもともと何であったかわかりやすい名前になっているはず)は、変数名を$1、$2などとより簡単な共通変数名に、所定テキスト集合全体T’として、共通化していく(共通化できなくなるまで)
----------------------------
■処理5)すべての包含文字列の種類について、ヘッドとみなした場合の、構成要件の仮説を、その包含文字列が含まれる単一(又は合成単一)テキストごとに検証する。すなわち、その構成要件(変数名までも同じでなければならない)が含まれるテキスト数が多いほど、かつ、構成要件の条件数が多いほど、信頼できる。
※5信頼度=((共起するテキスト数ー共起しないテキスト数)/全部のテキスト数)×(構成要件の条件数/テキストごとの平均包含文字列数)
----------------------------
■処理6)ホーン節と信頼度の組として出力して終了する
----------------------------
【0017】
また、別の視点(及び、順番の入替に伴う長短所の分析)からも説明した別の実施形態の処理概略は、以下のようになる。

----------------------------
■ステップ1)所定テキスト集合Sから包含文字列集合族Iを求める
----------------------------
■ステップ2)I内の包含文字列の共起をもとにS中の複数の単一テキストをマージして信頼度とともにSに加えたS’を求める
----------------------------
■ステップ3)I(ステップ2より先に行うときはSがベース、後に行うときはS’がベース)内の包含文字列中の各単一テキスト内の共通文字列を変数(元の文字列を${変数名}として保持した形)に変換する
※ステップ2よりも先に行うときは、変数化されたものとされていないものがステップ2で泣き別れることがある
----------------------------
■ステップ4)変数名を、よりマッチしやすい数字やアルファベットなどへと正規化する(「動物名」:1、「動物名」:2、「人物名」:1、「地名」:1、等の型を併用してもよい)。ここでは、例えば「・・・が〇〇〇を捕食し、〇〇〇が□□□を捕食する。」という重文の「後半の主格」であるという「役割」(や捕食階層2位などという「位置づけ」)の共通性を考慮したい。
※ステップ3と4をステップ2よりも先に行うときは、変数化されたものとされていないもの、テキスト中で変数化される順位等によって、ステップ2で泣き別れることがある
----------------------------
■ステップ5)信頼度を閾値としてホーン節を生成し、
----------------------------
■ステップ6)出力する
----------------------------
【0018】
別の実施形態では、
利用者が、事前に用意された文集合のサブセットを並べてつなげたものを単一テキストとし、それを集成したものを所定テキスト集合(単一テキストの集合)としてシステム(計算機を含む装置)に与え、システムがこれをもとに機械学習した結果を利用者に表示するようにプログラムされている。
【0019】
また別の実施形態は、いわば動的な機械学習(抽象化、標準化、パターン化)であり、
利用者等が自然言語等で入力した具体的な問題や質問さらにはそれまでに途中計算された結果等を加えた文脈等を元に、十分少ない(動的機械学習の速度の必要等のための)要素数の所定テキスト集合を、ネット等(WEBテキスト全般、特定企業限りの共有フォルダ、個人PC内、等)に配置された知識テキスト集合から(従来の自動検索技術で自動検索する等して)動的に選択しかつそこで得られた知識テキスト集合に本発明を適用して得られたいわば「動的な仮説としてのホーン節」等(すなわち命題形式、共起ツリー、等)により、(先に自動検索のキーとして用いた)具体的な問題や質問等に解答したり応答したりするようプログラムされている。
これにより、自然言語テキスト(集合)を推論根拠として、動的により柔軟に抽象化した、推論が可能になり知識獲得ボトルネックやいわゆるフレーム問題の解決にもつながりやすくなる。
自動検索のための記事のマッチ度評価基準としては、通常のn-gram等を用いた検索(近接する文字など用語の統計的な傾向の類似等をとらえる)の他、d-bigramや前述の出願公開に示す基準を用いることができる。
この場合、解答や応答における解等の表示とともに、どのような(十分少ない要素数の)所定テキスト集合からどのような「動的な仮説としてのホーン節」を生成し、各解のためにどのような推論(例えばホーン節の適用)を行ったか(又はそれらの抜粋情報)を利用者に表示することが有利である。
一般的な自然言語を含む自由文にもとづく自動推論のプログラミングの実施可能性については、本件の主題ではないので、特許文献1を参考にされたい。
【0020】
また別の実施形態では、上記のような動的な機械学習ではないが、十分要素数の多い「所定のテキスト集合」を、ランダムに分割して、「所定のテキスト集合」の集合として、それぞれの「所定のテキスト集合」から得られた仮説(ホーン節等の規則性)を集合をマージすることにより、より高速に多くの仮説を得るようにプログラムしている。
【0021】
また別の実施形態では、自然言語テキストを所定の基準(文内の標準的な格順・修飾法・語彙、日本語化/英語化、等)であらかじめ正規化した上で、機械学習を開始するようプログラムする。
【0022】
また別の実施形態では、機械学習により得られたホーン節の条件部の各リテラル(固定文字列又は変数を埋め込んだ文字列。自然言語でも形式言語でもよい自由文)の真/偽や可能な変数束縛を動的に定義する別途のAPIとの適合度をリテラルの表層から求めて、そのAPIを用いて解答等できるように解釈系(インタープリタ)を構成しつつ、そのAPI名をプログラマや利用者に学習結果や推論根拠として示すように構成する。学習結果として示す場合は、ホーン節内にAPIのURI等を埋め込むよう構成する場合がある。
【実施例
【0023】
利用者が、選択肢の中から選択した又は自由に入力した「いくつかの文」又は「いくつかの文の集合」から、AIが機械学習した内容を確認して遊ぶおもちゃ(パソコンを土台としたもの)提供する。以下、その入力(選択にもとづくテキスト(「いくつかの文」)/テキスト集合(「いくつかの文の集合」)と出力(変数を伴う規則(変数の頭の$は子供用のために省略すしている)が出る例)について解説する。

-------------------------------------------------------
〇例1(「いくつかの文」の場合その1)
「金沢は雨が降った。金沢はすずしくなった。」
からは、以下の規則が自動的に学習されて利用者に示される。

第1規則「Xは雨が降った ⇒ Xはすずしくなった」
第2規則「Xはすずしくなった ⇒ Xは雨が降った」

-------------------------------------------------------
〇例2(「いくつかの文」の場合その2)
「金沢は雨が降った。小松は雨が降った。」
からは、以下の規則が自動的に学習されて利用者に示される。

第1規則「金沢はX ⇒ 小松はX」
第2規則「小松はX ⇒ 金沢はX」

-------------------------------------------------------
〇例3(「いくつかの文」の場合その3)
「小松は雨が降った。金沢はすずしくなった。金沢と小松は近い。」
からは、以下の規則が自動的に学習されて利用者に示される。

第1規則「Yは雨が降った & XとYは近い ⇒ Xはすずしくなった」
第2規則「Yはすずしくなった & XとYは近い ⇒ Xは雨が降った」
第3規則「Yはすずしくなった & Xは雨が降った ⇒ XとYは近い」

-------------------------------------------------------
〇例4(「いくつかの文の集合」の場合その1、集合の要素となる「いくつかの文」をマージしかつ抽象化・正規化した後に根拠となる例の数を明示する場合)
第1テキスト「金沢は雨が降った。金沢はすずしくなった。」
第2テキスト「小松は雨が降った。小松はすずしくなった。」
第3テキスト「金沢は雨が降った。小松は雨が降った。」
第4テキスト「雨が降ったとは天気に関すること。」
からは、以下の規則が自動的に学習されて利用者に示される。
なお、ここでは、”雨が降った”が2回以上出現する第3テキストと、”雨が降った”を含みかつ1文しかない(すなわち、単体ではホーン節になりにくい)第4テキストとをマージすることにより、以下の第3規則と第4規則を自動で得ている。

第1規則「Xは雨が降った ⇒ Xはすずしくなった」根拠数2/3
第2規則「Xはすずしくなった ⇒ Xは雨が降った」根拠数2/3
第3規則「金沢はX & Xとは天気に関すること ⇒ 小松はX」根拠数1/3
第4規則「小松はX & Xとは天気に関すること ⇒ 金沢はX」根拠数1/3

-------------------------------------------------------
なお、これらの規則は、明らかに自然言語に変数($つき)を埋め込んだホーン節(特許文献1を参照)に変換可能である。例えば上記の第4規則は以下のようになる。

-------------------------------------------------------
第4規則「金沢は$X :- 小松は$X;$Xとは天気に関すること;」根拠数1/3
-------------------------------------------------------
【図面の簡単な説明】
【0024】
図1】本発明による機械学習のコンピュータプログラムの一実施の形態の概略を示した図である。
図1