(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-02
(45)【発行日】2022-11-11
(54)【発明の名称】人工知能プログラミングサーバおよびそのプログラム
(51)【国際特許分類】
G06F 8/10 20180101AFI20221104BHJP
G06F 8/36 20180101ALI20221104BHJP
G06F 16/2452 20190101ALI20221104BHJP
【FI】
G06F8/10
G06F8/36
G06F16/2452
(21)【出願番号】P 2018096693
(22)【出願日】2018-05-20
【審査請求日】2021-05-11
(73)【特許権者】
【識別番号】000003584
【氏名又は名称】株式会社タカラトミー
(74)【代理人】
【識別番号】100101982
【氏名又は名称】久米川 正光
(72)【発明者】
【氏名】海上 貴信
(72)【発明者】
【氏名】加藤 國彦
(72)【発明者】
【氏名】向井 忠
【審査官】杉浦 孝光
(56)【参考文献】
【文献】特開平07-311773(JP,A)
【文献】特開平05-233707(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00- 8/77
G06F 16/00-16/958
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
人工知能プログラミングサーバにおいて、
コンピュータプログラムへの変換対象として、コンピュータの処理内容が自然言語で記述された文章を受信する受信部と、
前記変換対象に係る文章を自然言語処理によって解析する自然言語処理部と、
前記自然言語処理部による解析結果
を特徴化した特徴ベクトルを生成する特徴抽出部と、
ある特徴ベクトルの入力に応じて、特定のコンピュータプログラムを指定する識別子が出力されるように、自己が有する関数の内部パラメータが調整された学習器と、
コンピュータの処理手順が規定された
コンピュータプログラムと、当該コンピュータプログラムに対応する特徴ベクトルとを、コンピュータプログラム毎に固有の識別子と対応付けて保持するプログラムデータベースと、
前記特徴抽出部によって生成された特徴ベクトルを前記学習器に入力するとともに、前記学習器から出力された識別子に基づいて前記プログラムデータベースを検索し、当該識別子に対応するコンピュータプログラムを出力する生成処理部と、
前記生成処理部から出力されたコンピュータプログラムを、前記変換対象に係る文章の変換結果として送信する送信部と
、
前記プログラムデータベースに前記コンピュータプログラムを新規に登録する場合、前記識別子を新たに採番するとともに、前記識別子と、前記コンピュータプログラムと、前記特徴ベクトルとを対応付けて前記プログラムデータベースに追加するデータベース管理部と
を有することを特徴とする人工知能プログラミングサーバ。
【請求項2】
前記プログラムデータベースに保持されている前記特徴ベクトルおよび前記識別子の対を教師データとして用いた教師あり学習によって、前記学習器が有する関数の内部パラメータを調整する学習処理部をさらに有することを特徴とする請求項
1に記載された人工知能プログラミングサーバ。
【請求項3】
前記学習器は、ある特徴ベクトルの入力に対して複数の識別子が出力されることが許容されており、
前記生成処理部は、一つのコンピュータプログラムを出力するために、前記複数の識別子のいずれかを選択することを特徴とする請求項1
または2に記載された人工知能プログラミングサーバ。
【請求項4】
前記生成処理部は、前記変換対象に係る特徴ベクトルと、前記学習器から出力された前記複数の識別子のそれぞれに対応付けられた特徴ベクトルとの類似度に基づいて、前記複数の識別子のいずれかを選択することを特徴とする請求項
3に記載された人工知能プログラミングサーバ。
【請求項5】
前記生成処理部は、前記学習器から出力された前記複数の識別子のいずれかをランダムで選択することを特徴とする請求項
3に記載された人工知能プログラミングサーバ。
【請求項6】
前記自然言語処理部は、前記コンピュータプログラムの内容に関連する語句が記述された辞書テーブルを備え、前記自然言語処理による解析結果のうち、前記辞書テーブルに記述された語句を抽出するフィルタリング処理を行うことを特徴とする請求項1
または2に記載された人工知能プログラミングサーバ。
【請求項7】
人工知能プログラミング用プログラムにおいて、
コンピュータプログラムへの変換対象として入力された、コンピュータの処理内容が自然言語で記述された文章について、自然言語処理を行う第1のステップと、
前記自然言語処理の解析結果
を特徴化した特徴ベクトルを生成する第2のステップと、
ある特徴ベクトルの入力に応じて、特定のコンピュータプログラムを指定する識別子が出力されるように、自己が有する関数の内部パラメータが調整された学習器に対して、前記特徴抽出部によって生成された特徴ベクトルを入力する第3のステップと、
コンピュータの処理手順が規定された
コンピュータプログラムと、当該コンピュータプログラムに対応する特徴ベクトルとを、コンピュータプログラム毎に固有の識別子と対応付けて保持するプログラムデータベースを検索して、前記学習器から出力された識別子に対応するコンピュータプログラムを前記変換対象に係る文章の変換結果として出力する第4のステップと
、
前記プログラムデータベースに前記コンピュータプログラムを新規に登録する場合、前記識別子を新たに採番するとともに、前記識別子と、前記コンピュータプログラムと、前記特徴ベクトルとを対応付けて前記プログラムデータベースに追加する第5のステップと
を有する処理をコンピュータに実行させることを特徴とする人工知能プログラミング用プログラム。
【請求項8】
前記プログラムデータベースに保持されている前記特徴ベクトルおよび前記識別子の対を教師データとして用いた教師あり学習によって、前記学習器が有する関数の内部パラメータを調整する第6のステップをさらに有することを特徴とする請求項
7に記載された人工知能プログラミング用プログラム。
【請求項9】
前記学習器は、ある特徴ベクトルの入力に対して複数の識別子が出力されることが許容されており、
前記第4のステップは、一つのコンピュータプログラムを出力するために、前記複数の識別子のいずれかを選択するステップを含むことを特徴とする請求項
7または8に記載された人工知能プログラミング用プログラム。
【請求項10】
前記第4のステップは、前記変換対象に係る特徴ベクトルと、前記学習器から出力された前記複数の識別子のそれぞれに対応付けられた特徴ベクトルとの類似度に基づいて、前記複数の識別子のいずれかを選択するステップを含むことを特徴とする請求項
9に記載された人工知能プログラミング用プログラム。
【請求項11】
前記第4のステップは、前記学習器から出力された前記複数の識別子のいずれかをランダムで選択するステップを含むことを特徴とする請求項
9に記載された人工知能プログラミング用プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自然言語で記述された文章からコンピュータプログラムを生成する人工知能プログラミングサーバおよびそのプログラムに関する。
【背景技術】
【0002】
従来、自然言語で記述された文章をベースとしてコンピュータプログラムを生成、または、これを補助する技術が知られている。例えば、特許文献1には、自然言語に基づいた命令語で機器等に対する操作の指示を可能にしたデータ処理装置が開示されている。このデータ処理装置は、機器の行動パターンが用語に対応付けて保持された用語付きデータベースを備えている。機器の操作を指示する用語が入力された場合、入力された用語と、用語付きデータベースに保持された各用語とが比較され、入力された用語と一致する用語に対応付けられた行動パターンが選択される。そして、この行動パターンに基づいて機器が制御される。
【0003】
また、特許文献2には、ユーザと日常言語コンピュータシステムとの間において、ユーザによって入力された言語テクストの対話的なやりとりを個々のユーザに特化した形で柔軟にかつ精密に行う秘書エージェントシステムが開示されている。このエージェントシステムは、日常言語の意味の体系を構造化したセミオティックベースを備えており、まず、このセミオティックベースを参照して、言語テクストの意味理解を行うことで言語テクストの言語的特徴が得られる。つぎに、この言語的特徴に基づいて、進行中の対話の構造を各プランユニット間の依存関係として表すプラン構造における現時点のステージが同定される。そして、現時点のステージに続く可能性のあるステージのうち、実質的な動作を表すステージである最適なムーブが選択される。そして、これに基づいて、他のエージェントへ出力される操作指示が生成される。
【先行技術文献】
【特許文献】
【0004】
【文献】特許第3884160号公報
【文献】特開2004-139446号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
一般に、コンピュータプログラムは、プログラミング言語で記述された構文や変数についての曖昧さは許されず、これらを厳密に規定しない限り、正しい処理結果を得ることができない。これは、コンピュータやロボットなどの制御対象について、処理や動作の正確性を担保する上では好ましいものの、プログラミングに関する高度な理解が要求されるため、これを熟知していないユーザにとっては敷居が高いという欠点がある。これに対して、自然言語は誰もが簡単に記述できる反面、本来的に曖昧さが内在しているため、プログラミング用途には向いていない。
【0006】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、自然言語の曖昧さを許容しつつ、自然言語で記述された文章からコンピュータプログラムを簡単に生成することである。
【課題を解決するための手段】
【0007】
かかる課題を解決すべく、第1の発明は、受信部と、自然言語処理部と、特徴抽出部と、学習器と、プログラムデータベースと、生成処理部と、送信部と、データベース管理部とを有する人工知能プログラミングサーバを提供する。受信部は、コンピュータプログラムへの変換対象として、コンピュータの処理内容が自然言語で記述された文章を受信する。自然言語処理部は、変換対象に係る文章を自然言語処理によって解析する。特徴抽出部は、自然言語処理部による解析結果を特徴化した特徴ベクトルを生成する。学習器は、ある特徴ベクトルの入力に応じて、特定のコンピュータプログラムを指定する識別子が出力されるように、自己が有する関数の内部パラメータが調整されている。プログラムデータベースは、コンピュータの処理手順が規定されたコンピュータプログラムと、このコンピュータプログラムに対応する特徴ベクトルとを、コンピュータプログラム毎に固有の識別子と対応付けて保持する。生成処理部は、特徴抽出部によって生成された特徴ベクトルを学習器に入力するとともに、学習器から出力された識別子に基づいてプログラムデータベースを検索し、この識別子に対応するコンピュータプログラムを出力する。送信部は、生成処理部から出力されたコンピュータプログラムを、変換対象に係る文章の変換結果として送信する。データベース管理部は、プログラムデータベースにコンピュータプログラムを新規に登録する場合、識別子を新たに採番するとともに、識別子と、コンピュータプログラムと、特徴ベクトルとを対応付けてプログラムデータベースに追加する。
【0008】
ここで、第1の発明において、プログラムデータベースに保持されている特徴ベクトルおよび識別子の対を教師データとして用いた教師あり学習によって、学習器が有する関数の内部パラメータを調整する学習処理部をさらに設けてもよい。
【0009】
第1の発明において、上記学習器は、ある特徴ベクトルの入力に対して複数の識別子が出力されることが許容されており、上記生成処理部は、一つのコンピュータプログラムを出力するために、複数の識別子のいずれかを選択してもよい。この場合、上記生成処理部は、変換対象に係る特徴ベクトルと、学習器から出力された複数の識別子のそれぞれに対応付けられた特徴ベクトルとの類似度に基づいて、複数の識別子のいずれかを選択してもよいし、あるいは、学習器から出力された複数の識別子のいずれかをランダムで選択してもよい。また、上記自然言語処理部は、コンピュータプログラムの内容に関連する語句が記述された辞書テーブルを備え、自然言語処理による解析結果のうち、辞書テーブルに記述された語句を抽出するフィルタリング処理を行ってもよい。
【0010】
第2の発明は、第1のステップから第5のステップを有する処理をコンピュータに実行させる人工知能プログラミング用プログラムを提供する。第1のステップでは、コンピュータプログラムへの変換対象として入力された、コンピュータの処理内容が自然言語で記述された文章について、自然言語処理を行う。第2のステップでは、自然言語処理の解析結果を特徴化した特徴ベクトルを生成する。第3のステップでは、ある特徴ベクトルの入力に応じて、特定のコンピュータプログラムを指定する識別子が出力されるように、自己が有する関数の内部パラメータが調整された学習器に対して、特徴抽出部によって生成された特徴ベクトルを入力する。第4のステップでは、コンピュータの処理手順が規定されたコンピュータプログラムと、このコンピュータプログラムに対応する特徴ベクトルとを、コンピュータプログラム毎に固有の識別子と対応付けて保持するプログラムデータベースを検索して、学習器から出力された識別子に対応するコンピュータプログラムを変換対象に係る文章の変換結果として出力する。第5のステップでは、プログラムデータベースにコンピュータプログラムを新規に登録する場合、識別子を新たに採番するとともに、識別子と、コンピュータプログラムと、特徴ベクトルとを対応付けてプログラムデータベースに追加する。
【0011】
ここで、第2の発明において、プログラムデータベースに保持されている特徴ベクトルおよび識別子の対を教師データとして用いた教師あり学習によって、学習器が有する関数の内部パラメータを調整する第6のステップをさらに設けてもよい。
【0012】
第2の発明において、上記学習器は、ある特徴ベクトルの入力に対して複数の識別子が出力されることが許容されており、上記第4のステップは、一つのコンピュータプログラムを出力するために、複数の識別子のいずれかを選択するステップを含んでいてもよい。この場合、上記第4のステップは、変換対象に係る特徴ベクトルと、学習器から出力された複数の識別子のそれぞれに対応付けられた特徴ベクトルとの類似度に基づいて、複数の識別子のいずれかを選択してもよいし、あるいは、学習器から出力された複数の識別子のいずれかをランダムで選択してもよい。また、上記第1のステップは、コンピュータプログラムの内容に関連する語句が記述された辞書テーブルを参照して、自然言語処理による解析結果のうち、辞書テーブルに記述された語句を抽出するフィルタリング処理を行うステップを含んでいてもよい。
【発明の効果】
【0013】
本発明によれば、コンピュータプログラムへの変換対象として入力された自然言語による文章の曖昧さを学習器を用いた機械学習で補完することによって、この文章と関連性を有するコンピュータプログラムが出力される。これにより、自然言語の曖昧さを許容しつつ、文章を記述したユーザの意図を反映したコンピュータプログラムを簡単に生成できる。
【図面の簡単な説明】
【0014】
【
図8】第2の実施形態に係る変形例に係る学習器の説明図
【発明を実施するための形態】
【0015】
(第1の実施形態)
図1は、本実施形態に係るネットワークシステムの全体構成図である。このネットワークシステム1は、依頼者が操作する依頼元クライアント2と、実行対象3と、人工知能プログラミングサーバ4とを主体としたサーバクライアント型のネットワーク構成を有している。依頼者は、依頼元クライアント2を操作して、自然言語で記述された文章からコンピュータプログラムへ変換を依頼する。人工知能プログラミングサーバ4は、依頼元クライアント2からの変換依頼を受けて、コンピュータの処理内容が自然言語で記述された文章からプログラムを生成し、実行対象3に送信する。実行対象3は、人工知能プログラミングサーバ4より受信した変換結果としてのコンピュータプログラムを実行する主体であり、例えば、コンピュータや、コンピュータやマイコンによって動作が制御される玩具ロボットなどが想定される。また、この実行対象3は依頼元クライアント2との異同を問わない。例えば、依頼元クライアント2自体でコンピュータプログラムを実行する場合、依頼元クライアント2と実行対象3とは同一の主体となる。また、例えば、依頼元クライアント2からの依頼に基づき玩具ロボットを制御する場合、依頼元クライアント2と実行対象3とは異なる主体となる。
【0016】
人工知能プログラミングサーバ4は、予め定められた用途について、ユーザ(依頼者)の意向に沿った適切なコンピュータプログラムを提供する。このコンピュータプログラムは、ユーザによって自然言語で記述された文章に基づき生成される。したがって、ユーザは、この用途に即した内容を文章として記述する必要があり、これとは無関係な内容を記述しても、適切なコンピュータプログラムを取得することはできない。例えば、アバターの挙動を依頼元クライアント2の画面上に表示するコンピュータプログラムを生成するためには、アバターの挙動に関する文章でなければならない。また、例えば、玩具ロボットの挙動を規定するコンピュータプログラムを生成するためには、玩具ロボットの挙動に関する文章でなければならない。コンピュータプログラムの生成対象を特定の用途に特化・限定することにより、自然言語の文章に曖昧さが存在しても、ユーザの意図に近いコンピュータプログラムを提供することが可能になる。
【0017】
図2は、人工知能プログラミングサーバ4の構成図である。この人工知能プログラミングサーバ4は、受信部5と、処理モジュール6と、送信部7と、プログラムデータベース8とを主体に構成されている。受信部5は、インターネット等のネットワークに接続された依頼元クライアント2から、文章をコンピュータプログラムに変換すべき旨の依頼を受信する。この変換依頼に際しては、コンピュータプログラムへの変換対象として、コンピュータの処理内容が自然言語で記述された文章も併せて受信される。
【0018】
処理モジュール6は、変換対象となる文章からコンピュータプログラムを生成するための処理を行うモジュールであり、自然言語処理部6a、特徴抽出部6b、生成処理部6c、および、学習器6dに加えて、データベース管理部6eおよび学習処理部6fが付加されている。処理モジュール6をコンピュータプログラムで実現する場合、これらの機能的なブロック6a~6fはサブルーチンとして形成することができる。
【0019】
自然言語処理部6aは、変換対象に係る文章(自然言語文)を自然言語処理によって解析する。周知のように、自然言語処理には、形態素解析、構文解析、意味解析、文脈解析などがある。形態素解析は、文を形態素と呼ばれる最も小さな文法単位に分割する解析であり、ヒューリスティックな候補選択法、コスト最小化法、統計的アプローチ(例えばn-gramモデル)、二値分類問題としてのアプローチなどが知られている。構文解析は、与えられた言語の文法に従って文法構造を特定する解析であり、句構造解析や係り受け解析などが知られている。文章が日本語の場合、文節が係り受けの単位となるので、構文解析の前に単語を文節にまとめる処理が行われる。意味解析は、単語間の意味関係を解析して文の曖昧さを低減するための解析であり、格文法などが知られている。文脈解析は、単一の文だけでは解析できない代名詞の差し先や省略された主語などを複数の文を参照することによって特定する解析である。なお、自然言語処理部6aとして、形態素解析、構文解析、意味解析および文脈解析のすべてを用いる必要性は必ずしもなく、システムの処理能力や出力結果の妥当性などを考慮した上で、これらを選択的にまたは組み合わせて用いてもよい。
【0020】
自然言語処理によって非構造化テキスト(文章)を解析するためにAPIとしては、例えば、グーグル社が提供する「Cloud Natural Language」が知られている。このAPIは、機械学習モデルを用いてテキストの構造と意味とを解析し、文章に含まれる特徴的な情報を重要度付きで抽出する。
【0021】
なお、自然言語処理部6aにおいて、特定用途のコンピュータプログラムに関連するキーワードのみを抽出すべく、自然言語処理によって抽出された語句のフィルタリング処理を行ってもよい。この場合、出力すべきコンピュータプログラムの内容に関係する語句(キーワード)が記述された辞書テーブルを予め作成しておく。例えば、
図6に示す第1の例のように、アバターの存在状況を描画するコンピュータプログラムの場合、アバターの存在状況に関係する語句、例えば、「部屋」、「テーブル」、「イス」などがキーワードとなる。また、
図7に示す第2の例のように、玩具ロボットの挙動を制御するコンピュータプログラムの場合、玩具ロボットの動作に関係する語句、例えば、「走る」、「センサ」、「左」、「右」などがキーワードとなる。そして、自然言語処理によって抽出された語句のうち、辞書テーブルの記述内容に合致するものが抽出され、特徴抽出部6bに出力される。このようなフィルタリング処理を行うことで、生成すべきコンピュータプログラムの内容との関連性が希薄な語句を除外して、情報の冗長性の低減が図れる。
【0022】
特徴抽出部6bは、自然言語処理部6aによる解析結果を低次元の要素で特徴化した特徴ベクトルを生成する。特徴ベクトル化する手法としては、例えば、BoW(Bag-of-Word)やTF-IDF(単語出現頻度-逆文書頻度)などを用いることができる。このように、文章を特徴ベクトルに変換することで、換言すれば、機械学習やパターン認識ができるように高次元の文章を低次化(抽象化)することで、演算量を大幅に低減しつつ、後述する学習器6dによる分類精度を確保することが可能になる。
【0023】
生成処理部6cは、特徴抽出部6bによって生成された特徴ベクトルを学習器6dに入力する。それとともに、生成処理部6cは、学習器6dから出力された識別子に基づいて、プログラムデータベース8を検索し、この識別子に対応するコンピュータプログラムを出力する。
【0024】
学習器6dは、特徴ベクトルの入力に対して、特定のコンピュータプログラムを指定する識別子を出力する。
図3は、学習器6dの説明図である。学習器6dは、所定の関数Y=f(X,θ)を有している。ここで、入力Xは、特徴抽出部6bによって生成された特徴ベクトルFVであり、m次元の要素(x1,x2,・・・,xm)によって構成されている。また、出力Yは、n次元の要素(y1,y2,・・・,yn)よりなる識別子IDである。さらに、θは、この関数の内部パラメータである。学習器6dの内部パラメータθは最適化されており、これによって、学習器6dは、ある特徴ベクトルFVの入力に適した識別子IDを出力する。このような学習器6dとしては、例えば、機械学習の一分類である「教師あり学習」、より具体的には、ニューラルネットワーク、サポートベクターマシン、自己組織化マップ(SOM:Self-Organizing Map)などを用いることができる。
【0025】
データベース管理部6eは、プログラムデータベース8を管理する。プログラムデータベース8は、コンピュータの処理手順が規定された複数のコンピュータプログラムをコンピュータプログラム毎に固有の識別子と対応付けて保持している。
図4は、プログラムデータベース8の説明図である。このプログラムデータベース8は、多数のレコードによって構成されており、それぞれのレコードによって、識別子IDと、特徴ベクトルFVと、コンピュータプログラムCPとが対応付けられている。識別子IDは、コンピュータプログラムCP毎に採番されたプログラム固有の情報である。特徴ベクトルFVは、コンピュータプログラムCPの処理内容を自然言語で記述した文章の特徴ベクトルである。この特徴ベクトルFVは、上述した変換対象に係る特徴ベクトルと同様、自然言語処理による解析結果を低次元の要素で特徴化したものである。コンピュータプログラムCPは、プログラム本体であってもよいし、プログラム本体が格納されている格納場所を指定するアドレスであってもよい。データベース管理部6eは、新たなコンピュータプログラムをプログラムデータベース8に登録する場合、新たな識別子IDを採番するとともに、この識別子IDと、外部から与えられた教師データ(特徴ベクトルFVおよびコンピュータプログラムCPとの対)とが記述された新規レコードをプログラムデータベース8に追加する。
【0026】
学習処理部6fは、プログラムデータベース8に保持されている特徴ベクトルFV(入力)と識別子ID(出力)との対を教師データとして用いた教師あり学習によって、学習器6dが有する関数の内部パラメータθが調整されている。具体的には、
図3に示したように、特徴ベクトルFVの入力に対して出力された識別子IDの合否が「教師ベクトル」として学習器6dにフィードバックされる。これに基づいて、学習器6dは、正しい識別子IDが出力されるように、内部パラメータθ(例えば、ニューラルネットワークの結合重み)の値を更新する。このような処理をプログラムデータベース8に記憶された全てのレコードについて繰り返すことで、内部パラメータθの学習(調整)が行われる。このような学習は、人工知能プログラミング4の初期構築時のみならず、プログラムデータベース8におけるデータの蓄積が進んだ時点での再学習としても実行される。プログラムデータベース8の蓄積に応じた再学習を行うことで、ユーザの意図をより的確に反映した精度の高いコンピュータプログラムの提示が可能となる。
【0027】
送信部7は、生成処理部6cから出力されたコンピュータプログラムCPを、変換対象に係る文章の変換結果として実行対象3に送信する。変換結果の送信は、変換依頼の受信と同様、インターネット等のネットワークを介して行われる。
【0028】
図5は、処理モジュール6において実行されるプログラム生成ルーチンのフローチャートである。まず、ステップ1において、コンピュータプログラムへの変換対象として、コンピュータの処理内容を自然言語で記述した文章が自然言語処理部6aに入力される。つぎに、ステップ2において、自然言語処理部6aにおいて、変換対象に係る文章が自然言語処理によって解析される。ステップ3において、自然言語処理の解析結果を低次元の要素で特徴化した特徴ベクトルFVが生成される。ステップ4において、学習器6dに対して特徴ベクトルFVが入力される。上述したように、学習器6dの内部パラメータθは、ある特徴ベクトルの入力FVに応じて、特定のコンピュータプログラムを指定する識別子IDが出力されるように、予め調整されている。ステップ5において、学習器6dから出力された識別子IDをキーとしてプログラムデータベース8を検索して、この識別子IDに対応するコンピュータプログラムCPが特定される。最後に、このコンピュータプログラムCPが変換対象に係る文章の変換結果として出力され、本ルーチンが終了する。
【0029】
図6は、第1の例に係る文章の変換結果の説明図である。自然言語による文章には曖昧さが内在しており、アバターの状況を記述した同例では、「私」の位置や姿勢などに不確定要素が存在する。しかしながら、このような曖昧さは学習器6dを用いた機械学習によって補完され、この文章と関連性を有するコンピュータプログラムが得られる。その結果、ユーザ側の端末(依頼元クライアント2)において、ユーザの意図に近い実行結果(表示結果)が得られる。また、厳密な意味でユーザの意図どおりの実行結果が得られなかったとしても、意外性という点で面白みを演出することができる。なお、ユーザ側の端末がスマートフォン等の場合、コンピュータプログラムはFLASHのような形態でアプリとして実行される。
【0030】
図7は、第2の例に係る文章の変換結果の説明図である。玩具ロボットの挙動を記述した同例では、学習器6dの学習の程度次第で、3つの例a~cの入力から同じコンピュータプログラムが得られる。その結果、実行対象3である玩具ロボットにおいて、ユーザの意図に近い実行結果が得られる。また、厳密な意味でユーザの意図どおりの実行結果が得られなかったとしても、玩具ロボットという用途であれば、意外性という点で面白みを演出することができる。
【0031】
このように、本実施形態によれば、コンピュータプログラムへの変換対象として入力された自然言語による文章の曖昧さを学習器6dを用いた機械学習で補完することによって、この文章と関連性を有するコンピュータプログラムが出力される。これにより、自然言語の曖昧さを許容しつつ、文章を記述したユーザの意図を反映したコンピュータプログラムを簡単に生成できる。また、特に、厳密な処理結果が要求されない玩具等の用途であれば、コンピュータプログラムの実行結果の意外性という点で面白みを演出することができる。
【0032】
(第2の実施形態)
図8は、第2の実施形態に係る変形例に係る学習器の説明図である。この学習器6gは、第1の実施形態で述べた学習器6dとは異なり、ある特徴ベクトルFVの入力に対して、n個(n≧2)の識別子ID1~IDnの出力が許容されている。このような学習器6gとしては、例えば、マイクロソフト・リサーチが提案しているAttnGAN(Attentional Generative Adversarial Networks)が知られている。AttnGANは、機械学習を用いて自然言語から画像を生成するものであるが、本発明のようなコンピュータプログラムの生成用途でも利用することが可能である。生成処理部6cは、学習器6gから出力された複数の識別子ID1~IDnのいずれかを選択し、これをキーにプログラムデータベース8を検索して、一つのコンピュータプログラムCPを変換結果として出力する。
【0033】
識別子ID1~IDnの選択方法としては、様々なものが考えられる。例えば、変換対象に係る特徴ベクトルと、学習器6gから出力された複数の識別子ID1~IDnのそれぞれに対応付けられた特徴ベクトルFVとの類似度を個別に算出し、類似度が最も大きい識別子のコンピュータプログラムCPを出力してもよい。
図9は、特徴ベクトルの類似度の説明図である。m次元の特徴空間上において、変換対象に係る特徴ベクトルが指し示す点を特徴点1とし、プログラムデータベース8に保持された特徴ベクトルFVが指し示す点を特徴点2とする。これらの特徴ベクトルの類似度が高いということは、特徴点1,2間の距離が短いことを意味する。そこで、ユークリッド距離や座標成分差の絶対総和といった周知の手法を用いて、特徴点1,2間の距離を算出すれば、特徴ベクトルFVの類似度を評価することができる。
【0034】
また、別の選択手法として、学習器6gから出力された複数の識別子ID1~IDnのいずれかをランダムで選択してもよい。
【0035】
なお、学習器6gによって複数の識別子ID1~IDnが出力される点、および、生成処理部6cによってこれらのいずれかが選択される点以外は、第1の実施形態と同様なので、ここでの説明を省略する。
【0036】
このように、本実施形態によれば、第1の実施形態と同様の作用効果を奏するほか、学習器6gから出力された複数の識別子ID1~IDnのいずれかを選択的に用いることで、変換対象に係る文章との関連性がより高いコンピュータプログラムを生成することができる。また、識別子ID1~IDnの選択をランダムで行う場合には、コンピュータプログラムの実行結果の意外性という点で面白みを演出することができる。
【符号の説明】
【0037】
1 ネットワークシステム
2 依頼元クライアント
3 実行対象
4 人工知能プログラミングサーバ
5 受信部
6 処理モジュール
6a 自然言語処理部
6b 特徴抽出部
6c 生成処理部
6d,6g 学習器
6e データベース管理部
6f 学習処理部
7 送信部
8 プログラムデータベース