(57)【要約】【課題】自然言語の曖昧さを許容しつつ、自然言語で記述された文章からコンピュータプログラムを簡単に生成する。【解決手段】自然言語処理部６ａは、変換対象に係る文章を自然言語処理によって解析する。特徴抽出部６ｂは、自然言語処理部６ａの解析結果を低次元の要素で特徴化した特徴ベクトルを生成する。学習器６ｄは、ある特徴ベクトルの入力に応じて、特定のコンピュータプログラムを指定する識別子が出力されるように、自己が有する関数の内部パラメータが調整されている。プログラムデータベース８は、コンピュータの処理手順が規定された複数のコンピュータプログラムをコンピュータプログラム毎に固有の識別子と対応付けて保持する。生成処理部６ｃは、特徴ベクトルを学習器６ｄに入力するとともに、学習器６ｄから出力された識別子に基づいてプログラムデータベース８を検索し、この識別子に対応するコンピュータプログラムを出力する。【選択図】図２
2019200756.tif 000002
【特許請求の範囲】
【請求項１】
人工知能プログラミングサーバにおいて、
コンピュータプログラムへの変換対象として、コンピュータの処理内容が自然言語で記述された文章を受信する受信部と、
前記変換対象に係る文章を自然言語処理によって解析する自然言語処理部と、
前記自然言語処理部による解析結果を低次元の要素で特徴化した特徴ベクトルを生成する特徴抽出部と、
ある特徴ベクトルの入力に応じて、特定のコンピュータプログラムを指定する識別子が出力されるように、自己が有する関数の内部パラメータが調整された学習器と、
コンピュータの処理手順が規定された複数のコンピュータプログラムをコンピュータプログラム毎に固有の識別子と対応付けて保持するプログラムデータベースと、
前記特徴抽出部によって生成された特徴ベクトルを前記学習器に入力するとともに、前記学習器から出力された識別子に基づいて前記プログラムデータベースを検索し、当該識別子に対応するコンピュータプログラムを出力する生成処理部と、
前記生成処理部から出力されたコンピュータプログラムを、前記変換対象に係る文章の変換結果として送信する送信部と
を有することを特徴とする人工知能プログラミングサーバ。
【請求項２】
前記プログラムデータベースは、前記コンピュータプログラムに対応付けて前記特徴ベクトルを保持しており、
前記プログラムデータベースに前記コンピュータプログラムを新規に登録する場合、前記識別子を新たに採番するとともに、前記識別子と、前記コンピュータプログラムと、前記特徴ベクトルとを対応付けて前記プログラムデータベースに追加するデータベース管理部をさらに有することを特徴とする請求項１に記載された人工知能プログラミングサーバ。
【請求項３】
前記プログラムデータベースに保持されている前記特徴ベクトルおよび前記識別子の対を教師データとして用いた教師あり学習によって、前記学習器が有する関数の内部パラメータを調整する学習処理部をさらに有することを特徴とする請求項２に記載された人工知能プログラミングサーバ。
【請求項４】
前記学習器は、ある特徴ベクトルの入力に対して複数の識別子が出力されることが許容されており、
前記生成処理部は、一つのコンピュータプログラムを出力するために、前記複数の識別子のいずれかを選択することを特徴とする請求項１から３のいずれかに記載された人工知能プログラミングサーバ。
【請求項５】
前記生成処理部は、前記変換対象に係る特徴ベクトルと、前記学習器から出力された前記複数の識別子のそれぞれに対応付けられた特徴ベクトルとの類似度に基づいて、前記複数の識別子のいずれかを選択することを特徴とする請求項４に記載された人工知能プログラミングサーバ。
【請求項６】
前記生成処理部は、前記学習器から出力された前記複数の識別子のいずれかをランダムで選択することを特徴とする請求項４に記載された人工知能プログラミングサーバ。
【請求項７】
前記自然言語処理部は、前記コンピュータプログラムの内容に関連する語句が記述された辞書テーブルを備え、前記自然言語処理による解析結果のうち、前記辞書テーブルに記述された語句を抽出するフィルタリング処理を行うことを特徴とする請求項１から３のいずれかに記載された人工知能プログラミングサーバ。
【請求項８】
人工知能プログラミング用プログラムにおいて、
コンピュータプログラムへの変換対象として入力された、コンピュータの処理内容が自然言語で記述された文章について、自然言語処理を行う第１のステップと、
前記自然言語処理の解析結果を低次元の要素で特徴化した特徴ベクトルを生成する第２のステップと、
ある特徴ベクトルの入力に応じて、特定のコンピュータプログラムを指定する識別子が出力されるように、自己が有する関数の内部パラメータが調整された学習器に対して、前記特徴抽出部によって生成された特徴ベクトルを入力する第３のステップと、
コンピュータの処理手順が規定された複数のコンピュータプログラムをコンピュータプログラム毎に固有の識別子と対応付けて保持するプログラムデータベースを検索して、前記学習器から出力された識別子に対応するコンピュータプログラムを前記変換対象に係る文章の変換結果として出力する第４のステップと
を有する処理をコンピュータに実行させることを特徴とする人工知能プログラミング用プログラム。
【請求項９】
前記プログラムデータベースは、前記コンピュータプログラムに対応付けて前記特徴ベクトルを保持しており、
前記プログラムデータベースに前記コンピュータプログラムを新規に登録する場合、前記識別子を新たに採番するとともに、前記識別子と、前記コンピュータプログラムと、前記特徴ベクトルとを対応付けて前記プログラムデータベースに追加する第５のステップをさらに有することを特徴とする請求項８に記載された人工知能プログラミング用プログラム。
【請求項１０】
前記プログラムデータベースに保持されている前記特徴ベクトルおよび前記識別子の対を教師データとして用いた教師あり学習によって、前記学習器が有する関数の内部パラメータを調整する第６のステップをさらに有することを特徴とする請求項９に記載された人工知能プログラミング用プログラム。
【請求項１１】
前記学習器は、ある特徴ベクトルの入力に対して複数の識別子が出力されることが許容されており、
前記第４のステップは、一つのコンピュータプログラムを出力するために、前記複数の識別子のいずれかを選択するステップを含むことを特徴とする請求項８から１０のいずれかに記載された人工知能プログラミング用プログラム。
【請求項１２】
前記第４のステップは、前記変換対象に係る特徴ベクトルと、前記学習器から出力された前記複数の識別子のそれぞれに対応付けられた特徴ベクトルとの類似度に基づいて、前記複数の識別子のいずれかを選択するステップを含むことを特徴とする請求項１１に記載された人工知能プログラミング用プログラム。
【請求項１３】
前記第４のステップは、前記学習器から出力された前記複数の識別子のいずれかをランダムで選択するステップを含むことを特徴とする請求項１１に記載された人工知能プログラミング用プログラム。
【請求項１４】
前記第１のステップは、前記コンピュータプログラムの内容に関連する語句が記述された辞書テーブルを参照して、前記自然言語処理による解析結果のうち、前記辞書テーブルに記述された語句を抽出するフィルタリング処理を行うステップを含むことを特徴とする請求項８から１０のいずれかに記載された人工知能プログラミング用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自然言語で記述された文章からコンピュータプログラムを生成する人工知能プログラミングサーバおよびそのプログラムに関する。
【背景技術】
【０００２】
従来、自然言語で記述された文章をベースとしてコンピュータプログラムを生成、または、これを補助する技術が知られている。例えば、特許文献１には、自然言語に基づいた命令語で機器等に対する操作の指示を可能にしたデータ処理装置が開示されている。このデータ処理装置は、機器の行動パターンが用語に対応付けて保持された用語付きデータベースを備えている。機器の操作を指示する用語が入力された場合、入力された用語と、用語付きデータベースに保持された各用語とが比較され、入力された用語と一致する用語に対応付けられた行動パターンが選択される。そして、この行動パターンに基づいて機器が制御される。
【０００３】
また、特許文献２には、ユーザと日常言語コンピュータシステムとの間において、ユーザによって入力された言語テクストの対話的なやりとりを個々のユーザに特化した形で柔軟にかつ精密に行う秘書エージェントシステムが開示されている。このエージェントシステムは、日常言語の意味の体系を構造化したセミオティックベースを備えており、まず、このセミオティックベースを参照して、言語テクストの意味理解を行うことで言語テクストの言語的特徴が得られる。つぎに、この言語的特徴に基づいて、進行中の対話の構造を各プランユニット間の依存関係として表すプラン構造における現時点のステージが同定される。そして、現時点のステージに続く可能性のあるステージのうち、実質的な動作を表すステージである最適なムーブが選択される。そして、これに基づいて、他のエージェントへ出力される操作指示が生成される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３８８４１６０号公報
【特許文献２】特開２００４−１３９４４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般に、コンピュータプログラムは、プログラミング言語で記述された構文や変数についての曖昧さは許されず、これらを厳密に規定しない限り、正しい処理結果を得ることができない。これは、コンピュータやロボットなどの制御対象について、処理や動作の正確性を担保する上では好ましいものの、プログラミングに関する高度な理解が要求されるため、これを熟知していないユーザにとっては敷居が高いという欠点がある。これに対して、自然言語は誰もが簡単に記述できる反面、本来的に曖昧さが内在しているため、プログラミング用途には向いていない。
【０００６】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、自然言語の曖昧さを許容しつつ、自然言語で記述された文章からコンピュータプログラムを簡単に生成することである。
【課題を解決するための手段】
【０００７】
かかる課題を解決すべく、第１の発明は、受信部と、自然言語処理部と、特徴抽出部と、学習器と、プログラムデータベースと、生成処理部と、送信部とを有する人工知能プログラミングサーバを提供する。受信部は、コンピュータプログラムへの変換対象として、コンピュータの処理内容が自然言語で記述された文章を受信する。自然言語処理部は、変換対象に係る文章を自然言語処理によって解析する。特徴抽出部は、自然言語処理部による解析結果を低次元の要素で特徴化した特徴ベクトルを生成する。学習器は、ある特徴ベクトルの入力に応じて、特定のコンピュータプログラムを指定する識別子が出力されるように、自己が有する関数の内部パラメータが調整されている。プログラムデータベースは、コンピュータの処理手順が規定された複数のコンピュータプログラムをコンピュータプログラム毎に固有の識別子と対応付けて保持する。生成処理部は、特徴抽出部によって生成された特徴ベクトルを学習器に入力するとともに、学習器から出力された識別子に基づいてプログラムデータベースを検索し、この識別子に対応するコンピュータプログラムを出力する。送信部は、生成処理部から出力されたコンピュータプログラムを、変換対象に係る文章の変換結果として送信する。
【０００８】
ここで、第１の発明において、上記プログラムデータベースは、コンピュータプログラムに対応付けて特徴ベクトルを保持することが好ましく、この場合、データベース管理部をさらに設けることが好ましい。このデータベース管理部は、プログラムデータベースにコンピュータプログラムを新規に登録する場合、識別子を新たに採番するとともに、識別子と、コンピュータプログラムと、特徴ベクトルとを対応付けてプログラムデータベースに追加する。また、この場合、プログラムデータベースに保持されている特徴ベクトルおよび識別子の対を教師データとして用いた教師あり学習によって、学習器が有する関数の内部パラメータを調整する学習処理部をさらに設けてもよい。
【０００９】
第１の発明において、上記学習器は、ある特徴ベクトルの入力に対して複数の識別子が出力されることが許容されており、上記生成処理部は、一つのコンピュータプログラムを出力するために、複数の識別子のいずれかを選択してもよい。この場合、上記生成処理部は、変換対象に係る特徴ベクトルと、学習器から出力された複数の識別子のそれぞれに対応付けられた特徴ベクトルとの類似度に基づいて、複数の識別子のいずれかを選択してもよいし、あるいは、学習器から出力された複数の識別子のいずれかをランダムで選択してもよい。また、上記自然言語処理部は、コンピュータプログラムの内容に関連する語句が記述された辞書テーブルを備え、自然言語処理による解析結果のうち、辞書テーブルに記述された語句を抽出するフィルタリング処理を行ってもよい。
【００１０】
第２の発明は、第１のステップから第４のステップを有する処理をコンピュータに実行させる人工知能プログラミング用プログラムを提供する。第１のステップでは、コンピュータプログラムへの変換対象として入力された、コンピュータの処理内容が自然言語で記述された文章について、自然言語処理を行う。第２のステップでは、自然言語処理の解析結果を低次元の要素で特徴化した特徴ベクトルを生成する。第３のステップでは、ある特徴ベクトルの入力に応じて、特定のコンピュータプログラムを指定する識別子が出力されるように、自己が有する関数の内部パラメータが調整された学習器に対して、特徴抽出部によって生成された特徴ベクトルを入力する。第４のステップでは、コンピュータの処理手順が規定された複数のコンピュータプログラムをコンピュータプログラム毎に固有の識別子と対応付けて保持するプログラムデータベースを検索して、学習器から出力された識別子に対応するコンピュータプログラムを変換対象に係る文章の変換結果として出力する。
【００１１】
ここで、第２の発明において、上記プログラムデータベースは、コンピュータプログラムに対応付けて特徴ベクトルを保持することが好ましく、この場合、第５のステップをさらに設けることが好ましい。第５のステップでは、プログラムデータベースにコンピュータプログラムを新規に登録する場合、識別子を新たに採番するとともに、識別子と、コンピュータプログラムと、特徴ベクトルとを対応付けてプログラムデータベースに追加する。また、この場合、プログラムデータベースに保持されている特徴ベクトルおよび識別子の対を教師データとして用いた教師あり学習によって、学習器が有する関数の内部パラメータを調整する第６のステップをさらに設けてもよい。
【００１２】
第２の発明において、上記学習器は、ある特徴ベクトルの入力に対して複数の識別子が出力されることが許容されており、上記第４のステップは、一つのコンピュータプログラムを出力するために、複数の識別子のいずれかを選択するステップを含んでいてもよい。この場合、上記第４のステップは、変換対象に係る特徴ベクトルと、学習器から出力された複数の識別子のそれぞれに対応付けられた特徴ベクトルとの類似度に基づいて、複数の識別子のいずれかを選択してもよいし、あるいは、学習器から出力された複数の識別子のいずれかをランダムで選択してもよい。また、上記第１のステップは、コンピュータプログラムの内容に関連する語句が記述された辞書テーブルを参照して、自然言語処理による解析結果のうち、辞書テーブルに記述された語句を抽出するフィルタリング処理を行うステップを含んでいてもよい。
【発明の効果】
【００１３】
本発明によれば、コンピュータプログラムへの変換対象として入力された自然言語による文章の曖昧さを学習器を用いた機械学習で補完することによって、この文章と関連性を有するコンピュータプログラムが出力される。これにより、自然言語の曖昧さを許容しつつ、文章を記述したユーザの意図を反映したコンピュータプログラムを簡単に生成できる。
【図面の簡単な説明】
【００１４】
【図１】ネットワークシステムの全体構成図
【図２】人工知能プログラミングサーバの構成図
【図３】第１の実施形態に係る学習器の説明図
【図４】プログラムデータベースの説明図
【図５】プログラム生成ルーチンのフローチャート
【図６】第１の例に係る文章の変換結果の説明図
【図７】第２の例に係る文章の変換結果の説明図
【図８】第２の実施形態に係る変形例に係る学習器の説明図
【図９】特徴ベクトルの類似度の説明図
【発明を実施するための形態】
【００１５】
（第１の実施形態）
図１は、本実施形態に係るネットワークシステムの全体構成図である。このネットワークシステム１は、依頼者が操作する依頼元クライアント２と、実行対象３と、人工知能プログラミングサーバ４とを主体としたサーバクライアント型のネットワーク構成を有している。依頼者は、依頼元クライアント２を操作して、自然言語で記述された文章からコンピュータプログラムへ変換を依頼する。人工知能プログラミングサーバ４は、依頼元クライアント２からの変換依頼を受けて、コンピュータの処理内容が自然言語で記述された文章からプログラムを生成し、実行対象３に送信する。実行対象３は、人工知能プログラミングサーバ４より受信した変換結果としてのコンピュータプログラムを実行する主体であり、例えば、コンピュータや、コンピュータやマイコンによって動作が制御される玩具ロボットなどが想定される。また、この実行対象３は依頼元クライアント２との異同を問わない。例えば、依頼元クライアント２自体でコンピュータプログラムを実行する場合、依頼元クライアント２と実行対象３とは同一の主体となる。また、例えば、依頼元クライアント２からの依頼に基づき玩具ロボットを制御する場合、依頼元クライアント２と実行対象３とは異なる主体となる。
【００１６】
人工知能プログラミングサーバ４は、予め定められた用途について、ユーザ（依頼者）の意向に沿った適切なコンピュータプログラムを提供する。このコンピュータプログラムは、ユーザによって自然言語で記述された文章に基づき生成される。したがって、ユーザは、この用途に即した内容を文章として記述する必要があり、これとは無関係な内容を記述しても、適切なコンピュータプログラムを取得することはできない。例えば、アバターの挙動を依頼元クライアント２の画面上に表示するコンピュータプログラムを生成するためには、アバターの挙動に関する文章でなければならない。また、例えば、玩具ロボットの挙動を規定するコンピュータプログラムを生成するためには、玩具ロボットの挙動に関する文章でなければならない。コンピュータプログラムの生成対象を特定の用途に特化・限定することにより、自然言語の文章に曖昧さが存在しても、ユーザの意図に近いコンピュータプログラムを提供することが可能になる。
【００１７】
図２は、人工知能プログラミングサーバ４の構成図である。この人工知能プログラミングサーバ４は、受信部５と、処理モジュール６と、送信部７と、プログラムデータベース８とを主体に構成されている。受信部５は、インターネット等のネットワークに接続された依頼元クライアント２から、文章をコンピュータプログラムに変換すべき旨の依頼を受信する。この変換依頼に際しては、コンピュータプログラムへの変換対象として、コンピュータの処理内容が自然言語で記述された文章も併せて受信される。
【００１８】
処理モジュール６は、変換対象となる文章からコンピュータプログラムを生成するための処理を行うモジュールであり、自然言語処理部６ａ、特徴抽出部６ｂ、生成処理部６ｃ、および、学習器６ｄに加えて、データベース管理部６ｅおよび学習処理部６ｆが付加されている。処理モジュール６をコンピュータプログラムで実現する場合、これらの機能的なブロック６ａ〜６ｆはサブルーチンとして形成することができる。
【００１９】
自然言語処理部６ａは、変換対象に係る文章（自然言語文）を自然言語処理によって解析する。周知のように、自然言語処理には、形態素解析、構文解析、意味解析、文脈解析などがある。形態素解析は、文を形態素と呼ばれる最も小さな文法単位に分割する解析であり、ヒューリスティックな候補選択法、コスト最小化法、統計的アプローチ（例えばｎ−ｇｒａｍモデル）、二値分類問題としてのアプローチなどが知られている。構文解析は、与えられた言語の文法に従って文法構造を特定する解析であり、句構造解析や係り受け解析などが知られている。文章が日本語の場合、文節が係り受けの単位となるので、構文解析の前に単語を文節にまとめる処理が行われる。意味解析は、単語間の意味関係を解析して文の曖昧さを低減するための解析であり、格文法などが知られている。文脈解析は、単一の文だけでは解析できない代名詞の差し先や省略された主語などを複数の文を参照することによって特定する解析である。なお、自然言語処理部６ａとして、形態素解析、構文解析、意味解析および文脈解析のすべてを用いる必要性は必ずしもなく、システムの処理能力や出力結果の妥当性などを考慮した上で、これらを選択的にまたは組み合わせて用いてもよい。
【００２０】
自然言語処理によって非構造化テキスト（文章）を解析するためにＡＰＩとしては、例えば、グーグル社が提供する「Cloud Natural Language」が知られている。このＡＰＩは、機械学習モデルを用いてテキストの構造と意味とを解析し、文章に含まれる特徴的な情報を重要度付きで抽出する。
【００２１】
なお、自然言語処理部６ａにおいて、特定用途のコンピュータプログラムに関連するキーワードのみを抽出すべく、自然言語処理によって抽出された語句のフィルタリング処理を行ってもよい。この場合、出力すべきコンピュータプログラムの内容に関係する語句（キーワード）が記述された辞書テーブルを予め作成しておく。例えば、図６に示す第１の例のように、アバターの存在状況を描画するコンピュータプログラムの場合、アバターの存在状況に関係する語句、例えば、「部屋」、「テーブル」、「イス」などがキーワードとなる。また、図７に示す第２の例のように、玩具ロボットの挙動を制御するコンピュータプログラムの場合、玩具ロボットの動作に関係する語句、例えば、「走る」、「センサ」、「左」、「右」などがキーワードとなる。そして、自然言語処理によって抽出された語句のうち、辞書テーブルの記述内容に合致するものが抽出され、特徴抽出部６ｂに出力される。このようなフィルタリング処理を行うことで、生成すべきコンピュータプログラムの内容との関連性が希薄な語句を除外して、情報の冗長性の低減が図れる。
【００２２】
特徴抽出部６ｂは、自然言語処理部６ａによる解析結果を低次元の要素で特徴化した特徴ベクトルを生成する。特徴ベクトル化する手法としては、例えば、ＢｏＷ（Bag-of-Word）やＴＦ−ＩＤＦ（単語出現頻度−逆文書頻度）などを用いることができる。このように、文章を特徴ベクトルに変換することで、換言すれば、機械学習やパターン認識ができるように高次元の文章を低次化（抽象化）することで、演算量を大幅に低減しつつ、後述する学習器６ｄによる分類精度を確保することが可能になる。
【００２３】
生成処理部６ｃは、特徴抽出部６ｂによって生成された特徴ベクトルを学習器６ｄに入力する。それとともに、生成処理部６ｃは、学習器６ｄから出力された識別子に基づいて、プログラムデータベース８を検索し、この識別子に対応するコンピュータプログラムを出力する。
【００２４】
学習器６ｄは、特徴ベクトルの入力に対して、特定のコンピュータプログラムを指定する識別子を出力する。図３は、学習器６ｄの説明図である。学習器６ｄは、所定の関数Ｙ＝ｆ（Ｘ，θ）を有している。ここで、入力Ｘは、特徴抽出部６ｂによって生成された特徴ベクトルＦＶであり、ｍ次元の要素（ｘ1，ｘ2，・・・，ｘm）によって構成されている。また、出力Ｙは、ｎ次元の要素（y1，y2，・・・，ｙn）よりなる識別子ＩＤである。さらに、θは、この関数の内部パラメータである。学習器６ｄの内部パラメータθは最適化されており、これによって、学習器６ｄは、ある特徴ベクトルＦＶの入力に適した識別子ＩＤを出力する。このような学習器６ｄとしては、例えば、機械学習の一分類である「教師あり学習」、より具体的には、ニューラルネットワーク、サポートベクターマシン、自己組織化マップ（ＳＯＭ：Self-Organizing Map）などを用いることができる。
【００２５】
データベース管理部６ｅは、プログラムデータベース８を管理する。プログラムデータベース８は、コンピュータの処理手順が規定された複数のコンピュータプログラムをコンピュータプログラム毎に固有の識別子と対応付けて保持している。図４は、プログラムデータベース８の説明図である。このプログラムデータベース８は、多数のレコードによって構成されており、それぞれのレコードによって、識別子ＩＤと、特徴ベクトルＦＶと、コンピュータプログラムＣＰとが対応付けられている。識別子ＩＤは、コンピュータプログラムＣＰ毎に採番されたプログラム固有の情報である。特徴ベクトルＦＶは、コンピュータプログラムＣＰの処理内容を自然言語で記述した文章の特徴ベクトルである。この特徴ベクトルＦＶは、上述した変換対象に係る特徴ベクトルと同様、自然言語処理による解析結果を低次元の要素で特徴化したものである。コンピュータプログラムＣＰは、プログラム本体であってもよいし、プログラム本体が格納されている格納場所を指定するアドレスであってもよい。データベース管理部６ｅは、新たなコンピュータプログラムをプログラムデータベース８に登録する場合、新たな識別子ＩＤを採番するとともに、この識別子ＩＤと、外部から与えられた教師データ（特徴ベクトルＦＶおよびコンピュータプログラムＣＰとの対）とが記述された新規レコードをプログラムデータベース８に追加する。
【００２６】
学習処理部６ｆは、プログラムデータベース８に保持されている特徴ベクトルＦＶ（入力）と識別子ＩＤ（出力）との対を教師データとして用いた教師あり学習によって、学習器６ｄが有する関数の内部パラメータθが調整されている。具体的には、図３に示したように、特徴ベクトルＦＶの入力に対して出力された識別子ＩＤの合否が「教師ベクトル」として学習器６ｄにフィードバックされる。これに基づいて、学習器６ｄは、正しい識別子ＩＤが出力されるように、内部パラメータθ（例えば、ニューラルネットワークの結合重み）の値を更新する。このような処理をプログラムデータベース８に記憶された全てのレコードについて繰り返すことで、内部パラメータθの学習（調整）が行われる。このような学習は、人工知能プログラミング４の初期構築時のみならず、プログラムデータベース８におけるデータの蓄積が進んだ時点での再学習としても実行される。プログラムデータベース８の蓄積に応じた再学習を行うことで、ユーザの意図をより的確に反映した精度の高いコンピュータプログラムの提示が可能となる。
【００２７】
送信部７は、生成処理部６ｃから出力されたコンピュータプログラムＣＰを、変換対象に係る文章の変換結果として実行対象３に送信する。変換結果の送信は、変換依頼の受信と同様、インターネット等のネットワークを介して行われる。
【００２８】
図５は、処理モジュール６において実行されるプログラム生成ルーチンのフローチャートである。まず、ステップ１において、コンピュータプログラムへの変換対象として、コンピュータの処理内容を自然言語で記述した文章が自然言語処理部６ａに入力される。つぎに、ステップ２において、自然言語処理部６ａにおいて、変換対象に係る文章が自然言語処理によって解析される。ステップ３において、自然言語処理の解析結果を低次元の要素で特徴化した特徴ベクトルＦＶが生成される。ステップ４において、学習器６ｄに対して特徴ベクトルＦＶが入力される。上述したように、学習器６ｄの内部パラメータθは、ある特徴ベクトルの入力ＦＶに応じて、特定のコンピュータプログラムを指定する識別子ＩＤが出力されるように、予め調整されている。ステップ５において、学習器６ｄから出力された識別子ＩＤをキーとしてプログラムデータベース８を検索して、この識別子ＩＤに対応するコンピュータプログラムＣＰが特定される。最後に、このコンピュータプログラムＣＰが変換対象に係る文章の変換結果として出力され、本ルーチンが終了する。
【００２９】
図６は、第１の例に係る文章の変換結果の説明図である。自然言語による文章には曖昧さが内在しており、アバターの状況を記述した同例では、「私」の位置や姿勢などに不確定要素が存在する。しかしながら、このような曖昧さは学習器６ｄを用いた機械学習によって補完され、この文章と関連性を有するコンピュータプログラムが得られる。その結果、ユーザ側の端末（依頼元クライアント２）において、ユーザの意図に近い実行結果（表示結果）が得られる。また、厳密な意味でユーザの意図どおりの実行結果が得られなかったとしても、意外性という点で面白みを演出することができる。なお、ユーザ側の端末がスマートフォン等の場合、コンピュータプログラムはＦＬＡＳＨのような形態でアプリとして実行される。
【００３０】
図７は、第２の例に係る文章の変換結果の説明図である。玩具ロボットの挙動を記述した同例では、学習器６ｄの学習の程度次第で、３つの例ａ〜ｃの入力から同じコンピュータプログラムが得られる。その結果、実行対象３である玩具ロボットにおいて、ユーザの意図に近い実行結果が得られる。また、厳密な意味でユーザの意図どおりの実行結果が得られなかったとしても、玩具ロボットという用途であれば、意外性という点で面白みを演出することができる。
【００３１】
このように、本実施形態によれば、コンピュータプログラムへの変換対象として入力された自然言語による文章の曖昧さを学習器６ｄを用いた機械学習で補完することによって、この文章と関連性を有するコンピュータプログラムが出力される。これにより、自然言語の曖昧さを許容しつつ、文章を記述したユーザの意図を反映したコンピュータプログラムを簡単に生成できる。また、特に、厳密な処理結果が要求されない玩具等の用途であれば、コンピュータプログラムの実行結果の意外性という点で面白みを演出することができる。
【００３２】
（第２の実施形態）
図８は、第２の実施形態に係る変形例に係る学習器の説明図である。この学習器６ｇは、第１の実施形態で述べた学習器６ｄとは異なり、ある特徴ベクトルＦＶの入力に対して、ｎ個（ｎ≧２）の識別子ＩＤ1〜ＩＤnの出力が許容されている。このような学習器６ｇとしては、例えば、マイクロソフト・リサーチが提案しているＡｔｔｎＧＡＮ（Attentional Generative Adversarial Networks）が知られている。ＡｔｔｎＧＡＮは、機械学習を用いて自然言語から画像を生成するものであるが、本発明のようなコンピュータプログラムの生成用途でも利用することが可能である。生成処理部６ｃは、学習器６ｇから出力された複数の識別子ＩＤ1〜ＩＤnのいずれかを選択し、これをキーにプログラムデータベース８を検索して、一つのコンピュータプログラムＣＰを変換結果として出力する。
【００３３】
識別子ＩＤ1〜ＩＤnの選択方法としては、様々なものが考えられる。例えば、変換対象に係る特徴ベクトルと、学習器６ｇから出力された複数の識別子ＩＤ1〜ＩＤnのそれぞれに対応付けられた特徴ベクトルＦＶとの類似度を個別に算出し、類似度が最も大きい識別子のコンピュータプログラムＣＰを出力してもよい。図９は、特徴ベクトルの類似度の説明図である。ｍ次元の特徴空間上において、変換対象に係る特徴ベクトルが指し示す点を特徴点１とし、プログラムデータベース８に保持された特徴ベクトルＦＶが指し示す点を特徴点２とする。これらの特徴ベクトルの類似度が高いということは、特徴点１，２間の距離が短いことを意味する。そこで、ユークリッド距離や座標成分差の絶対総和といった周知の手法を用いて、特徴点１，２間の距離を算出すれば、特徴ベクトルＦＶの類似度を評価することができる。
【００３４】
また、別の選択手法として、学習器６ｇから出力された複数の識別子ＩＤ1〜ＩＤnのいずれかをランダムで選択してもよい。
【００３５】
なお、学習器６ｇによって複数の識別子ＩＤ1〜ＩＤnが出力される点、および、生成処理部６ｃによってこれらのいずれかが選択される点以外は、第１の実施形態と同様なので、ここでの説明を省略する。
【００３６】
このように、本実施形態によれば、第１の実施形態と同様の作用効果を奏するほか、学習器６gから出力された複数の識別子ＩＤ1〜ＩＤnのいずれかを選択的に用いることで、変換対象に係る文章との関連性がより高いコンピュータプログラムを生成することができる。また、識別子ＩＤ1〜ＩＤnの選択をランダムで行う場合には、コンピュータプログラムの実行結果の意外性という点で面白みを演出することができる。
【符号の説明】
【００３７】
１  ネットワークシステム
２  依頼元クライアント
３  実行対象
４  人工知能プログラミングサーバ
５  受信部
６  処理モジュール
６ａ  自然言語処理部
６ｂ  特徴抽出部
６ｃ  生成処理部
６ｄ，６ｇ  学習器
６ｅ  データベース管理部
６ｆ  学習処理部
７  送信部
８  プログラムデータベース
【図１】
2019200756.tif 000003
【図２】
2019200756.tif 000004
【図３】
2019200756.tif 000005
【図４】
2019200756.tif 000006
【図５】
2019200756.tif 000007
【図６】
2019200756.tif 000008
【図７】
2019200756.tif 000009
【図８】
2019200756.tif 000010
【図９】
2019200756.tif 000011