以下に、本願に係る公開装置、公開方法および公開プログラムを実施するための形態(以下、「実施形態」と記載する。)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る公開装置、公開方法および公開プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
[実施形態]
〔1-1.公開装置の一例〕
まず、図1を用いて、公開装置が実行する処理の一例について説明する。なお、以下の説明では、公開装置が実行する処理の一例として、所定のサービスを提供するためのアプリケーション(すなわち、ソフトウェア)を自動生成し、生成したアプリケーションを公開する処理、および、アプリケーションの利用に伴う利用者の登録を受付け、アプリケーションとそのアプリケーションを利用する利用者のリスト(すなわち、ユーザーリスト)とを販売対象として提供する処理の一例について説明するが、実施形態は、これに限定されるものではない。
図1は、実施形態に係る公開装置が実行する処理の一例を示す図である。図1では、公開装置10は、以下に説明する判定処理を実行する情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。
より具体的には、公開装置10は、インターネット等の所定のネットワークNを介して、管理装置100、事業者装置200、および利用者端末300(例えば、図2を参照)といった任意の装置と通信が可能である。
管理装置100は、各種のコンテンツを管理する情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。例えば、管理装置100は、各種の技術分野に属する論文や特許出願に係る公開公報等のコンテンツを管理する。なお、管理装置100は、例えば、利用者により投稿されたレシピやSNS(Social Networking Service)に対する投稿等、テキストを含む任意の情報をコンテンツとして管理してよい。
事業者装置200は、各種の事業者が使用する端末装置であり、例えば、サーバ装置やクラウドシステム、PC(Personal Computer)等により実現される。例えば、事業者装置200は、アプリケーションとユーザーリストとの組を販売可能なサービスを示すサービス情報として受付けると、受付けたサービス情報の内容を事業者に対して提示し、このようなサービス情報の購入を公開装置10へと通知する機能を有する。
〔1-2.公開処理および提供処理の概要について〕
ここで、従来技術について説明する。利用者に対して提供されるサービスのライフサイクルが短期化している。しかしながら、従来、利用者に対してサービスの起案から提供までを自動化する手法については、提案がなされていなかった。
そこで、公開装置10は、以下の公開処理を実行する。まず、公開装置10は、所定の処理を示す文章に含まれる単語組であって、所定の構造を有する単語組を抽出する。続いて、公開装置10は、抽出された単語組を用いて、所定の処理を実現するプログラムを生成する。そして、公開装置10は、生成されたプログラムを公開する。
また、公開装置10は、以下の提供処理を実行する。まず、公開装置10は、公開されたプログラムを利用する利用者の情報を取得する。そして、公開装置10は、プログラムに関する情報と、そのプログラムを利用する利用者の情報とを対応付けたサービス情報を、販売可能なサービスに関する情報として事業者等に提供する。
すなわち、公開装置10は、単語組からプログラムの生成を行い、生成されたプログラムの公開を行う。また、公開装置10は、公開されたプログラムの利用に関する利用者の情報登録を受けつける。そして、公開装置10は、プログラムとそのプログラムを利用する利用者のユーザーリストとの組であるサービス情報を販売対象として開示する。すなわち、公開装置10は、新たなビジネスを実現するプログラムを自動生成し、自動生成したプログラムとそのプログラムを利用する利用者の情報とをセットで販売対象とする。このような処理の結果、公開装置10は、サービスの生成およびサービスの売却という一連の流れ、換言すると、会社の生成および会社の売却という一連の流れを自動化することができる。
〔1-3.プログラムの生成について〕
ここで、公開装置10は、単語組からプログラムの生成を行う。例えば、公開装置10は、単語組として、名詞となる単語と、副詞句となる単語若しくは単語組と、名詞となる単語に関する動詞となる単語とを含む単語組を抽出する。そして、公開装置10は、単語組に含まれる名詞句が示す情報を入力した際に、その単語組に含まれる副詞句が示す情報を出力するように、プログラムの生成を行う。
具体例を説明すると、例えば、発想や発明の特徴、すなわちアイデアの特徴を説明しているであろう文章は、処理の対象を示す名詞、名詞が示す対象の状態を示す状態表現語若しくは副詞句、および処理の内容を示す動詞とを含むと予測される。また、このような文章は、助詞などの単語間に存在しうる品詞を中括弧で囲むと、「(名詞){を}(状態表現語、副詞句){で、によって、にして}(動詞){する、できる}」といった構造を有すると予測される。
そこで、公開装置10は、所定の分野に属するコンテンツから上述した構造を有する文章を抽出し、抽出した文章に含まれる3つの単語、すなわち、名詞、状態表現語若しくは副詞句、および動詞を、発想を示す単語組として抽出する。このようにして抽出された単語組は、所定の格助詞を追加するのみで、発明や発想などのアイデアを示す文章を再現することができるため、単語組の抽出元となる文章が示す概念、すなわち、発明や発想等のアイデアの概念を示すことができる。
ここで、「AをBによりCする」という文章から、単語組「A」、「B」、および「C」を抽出し、「A」が示す情報を入力とした際に、「C」が示す情報を出力するようにプログラムの生成を行った場合、公開装置10は、文章が示す概念を実現するプログラムの生成を行うことができると考えられる。そこで、公開装置10は、単語組から抽出した名詞となる「A」が示す情報を入力した際に、動詞となる「C」が示す情報を出力するように、プログラムの自動生成を行う。
すなわち、入力「A」と出力「C」の教師データのペアを集め、ニューラルチューリングマシンを活用したプログラム自動生成装置により、内部パラメータを変えることにより、「B」にあてはまるプログラムを生成できる。または、任意のいくつかの内部パラメータを変えることにより、プログラムをいくつか自動生成し、その自動生成されたプログラムの中から単語「B」にあてはまるものを抽出してもよい。
例えば、公開装置10は、「利用者を属性情報によりグルーピングする」という文章から、上記「A」に対応する「利用者」、上記「B」に対応する「属性情報」、および上記「C」に対応する「グルーピング」を抽出する。そして、公開装置10は、単語「利用者」が示す情報として、利用者に関する各種の情報を収集する。また、同様に「グルーピング」に関する情報を収集する。例えば、公開装置10は、単語「利用者」が示す性別情報や、男女のグルーピング情報のペアなどを教師データとして、プログラムを自動生成するニューラルチューリングマシン装置に入力し、内部パラメータとして、「属性情報」に関するものの重みが大きくななるような調整をすることにより、この3つの単語が意図するプログラムを自動生成できるようになる。
なお、このような情報の取得は、例えば、各種のデータが格納されたデータベースの項目名と、単語組として抽出された名詞との類似性に基づいて収集すればよい。例えば、公開装置10は、データベースに登録された項目の分散表現と、抽出された名詞の分散表現との類似性が所定の閾値を超える場合は、その項目の情報を名詞が示す情報として収集すればよい。また、例えば、公開装置10は、データベースの各項目から、抽出された名詞の分散表現と、抽出された副詞句の分散表現との和に類似する分散表現と対応する項目を特定し、特定した項目の情報を取得すればよい。
また、公開装置10は、「グルーピング」と対応する情報を収集する。例えば、公開装置10は、単語「利用者」および「グルーピング」と対応する情報を収集する。より具体的な例を挙げると、公開装置10は、データベースから、利用者が属するグループを示す各種の情報を収集する。
そして、公開装置10は、収集した情報からプログラムの自動生成を行う。例えば、公開装置10は、抽出した名詞となる単語が示す情報を入力した際に、動詞となる単語が示す情報を出力するように、ニューラルチューリングマシンを用いてプログラムを生成する。例えば、非特許文献1に示すように、ニューラルネットワークを用いたチューリングマシンであるニューラルチューリングマシンを用いて、入力データから出力データを生成するプログラムを自動生成する手法が提案されている。
このようなニューラルチューリングマシンM1は、例えば、図1に示すように、メモリ(Memory)と、チューリングマシンの読出しヘッド(Read Heads)と、チューリングマシンの書込みヘッド(Write Heads)と、入力(External Input)に基づいて読出しヘッドおよび書込みヘッドを操作し、入力に応じた出力(External Output)を生成するコントローラ(Controller)とを有する。また、このようなニューラルチューリングマシンM1において、コントローラは、RNN(Recurrent Neural Network)やLSTM(Long short-term memory)といった再帰型ニューラルネットワークにより実現される。
このようなニューラルチューリングマシンM1について、ある入力データからある出力データを生成するように学習を行った場合、ニューラルチューリングマシンM1のメモリには、ある入力データからある出力データを出力するためのプログラムが格納されることとなる。そこで、公開装置10は、コンテンツから抽出した単語組の名詞が示す情報から、動詞が示す情報を出力するようにニューラルチューリングマシンM1の学習を行うことで、プログラムの自動生成を実現する。
〔1-4.グラフを用いた分野の絞り込みについて〕
ここで、上述したように、単語組を学習データとしてプログラムの自動生成を行う場合、生成されるプログラムの斬新さは、学習データとなる単語組に依存すると考えられる。このため、抽出される単語組は、斬新な技術分野、すなわち、イノベーションが発生しやすい分野に属する概念を示す単語組であることが望ましい。
このようなイノベーションが発生しやすい分野、すなわち、発展性が豊かな分野においては、既存技術から新たな技術が生じやすい分野における新たな技術の生じやすさは、その分野に属する既存技術から新たな技術がどのように生じるかを特定することで判断できると考えられるものの、このような技術の発展を精度良く連続的にとらえるには、多くの情報が必要になると考えられる。また、利用者の対話に要する場合以外にも、イノベーションを起こしやすい分野を特定することができるのであれば、技術開発等の用途に用いることも可能である。
そこで、公開装置10は、技術分野に属するコンテンツの増加率に基づいて成長を推定し、推定された成長性が所定の条件を満たす技術分野を選択する。例えば、公開装置10は、成長性が所定の閾値を超える技術分野を選択する。そして、公開装置10は、選択された技術分野に属するコンテンツから通出された文章に含まれる単語組を抽出する。
例えば、公開装置10は、所定の技術分野に属する単語組で表される技術要素をノードとし、各要素間の関係性をノード間のリンクとして示すグラフ情報(以下、「技術グラフ」と記載する。)を生成する。このようなグラフ情報は、ある分野に属する技術要素が、どのような技術要素から生じたものであるかを示す情報である。例えば、第1技術要素が、第2技術要素と第3技術要素との組合せである場合や、第2技術要素と第3技術要素とから発展した技術である場合、第1技術要素と対応するノードは、リンクを介して、第2技術要素と対応するノードおよび第3技術要素と対応するノードと接続される。
ここで、公開装置10は、ある分野に属する技術を示す情報であれば、任意の情報を技術要素としてよい。例えば、公開装置10は、ある分野に属する特許発明や特許出願を技術要素とし、各技術要素同士の関係性を技術グラフに落とし込んでもよい。また、公開装置10は、1つの論文を1つの技術要素と見做し、引用関係がある論文同士をリンクにより接続することで、技術グラフを生成してもよい。また、公開装置10は、共通性を有する複数の論文を1つの技術要素と見做してもよい。
このような技術グラフにおいて、ノードの数の増加傾向は、その分野に属する技術要素の増加傾向、すなわち、新たな技術要素の増加傾向を示す。このような新たな技術要素の増加傾向は、その分野におけるイノベーションの生じやすさの指標と見做すことができる。また、このような技術グラフにおいて、リンクの数の増加傾向は、その分野においてある技術から他の技術がどれくらい生じやすいかを示すと考えられる。すなわち、リンクの数の増加傾向は、その分野において新たな技術が生じた際に、その技術に基づいて新たな技術がどれくらい生じやすいか、潜在的な技術発展の可能性の指標となりえる情報である。
そこで、公開装置10は、ある分野に対応する技術グラフを生成し、生成した技術グラフの発展態様を特定する。より具体的には、公開装置10は、ノードの数の増加傾向とリンクの数の増加傾向とを推定する。そして、公開装置10は、推定した増加傾向に基づいて、技術グラフと対応する分野が成長しやすい分野であるか否か、その分野が成長する分野であるか否か等、その分野における技術発展の傾向を推定する。
例えば、公開装置10は、ノードの数の増加傾向に基づいて、対応する分野に属する新たな技術の発生傾向を推定してもよい。例えば、公開装置10は、処理対象となる分野と対応する技術グラフにおいて、所定の時間内に増加するノードの数が所定の閾値を超える場合は、処理対象となる分野が成長しやすい分野である旨を推定してもよい。
また、例えば、公開装置10は、リンクの数の増加傾向に基づいて、対応する分野に属する新たな技術の発生傾向を推定してもよい。例えば、公開装置10は、処理対象となる分野と対応する技術グラフにおいて、所定の時間内に増加するリンクの数が所定の閾値を超える場合は、対象分野が成長しやすい分野である旨を推定してもよい。
ここで、ノードの数の増加傾向とリンクの数の増加傾向とが類似する場合(例えば、ノードが1つ増加した際にリンクが1つ増加する場合)、その分野における技術は、既存技術から段階的に発展していくと推定される。また、ノードの数の増加傾向をリンクの数の増加傾向が所定の閾値だけ上回る場合(例えば、ノードが1つ増加した際にリンクが5つ以上増加する傾向にある場合)は、ある1つの技術から新たな複数の技術が生じやすい分野であると推定される。
そこで、公開装置10は、ノードの数の増加傾向とリンクの数の増加傾向とに基づいて、対応する分野に属する新たな技術の発生傾向を推定してもよい。例えば、公開装置10は、ノードの数の増加傾向とリンクの数の増加傾向と差に基づいて、対応する分野に属する新たな技術の発生傾向を推定してもよい。例えば、公開装置10は、ノードの数の増加傾向と比較して、リンクの数の増加傾向が多い場合は、対象分野に属する技術が発展しやすい技術である旨を推定してもよい。
このように、公開装置10は、技術グラフにおけるノードの数の増加傾向やリンクの数の増加傾向に基づいて、その分野における技術発展のしやすさを推定する。この結果、公開装置10は、イノベーションが生じやすい分野を利用者に対して提示することができる。
〔1-5.技術グラフの発展について〕
ここで、公開装置10は、過去の技術要素の数の変化や、技術要素間の関係性の変化に基づいて、その分野における技術グラフの発展を示すパラメータを推定し、推定したパラメータに基づいて技術グラフに含まれるノードやリンクの数を変化させることで、対象分野における将来の技術発展のしやすさを予測してもよい。
例えば、ある分野における技術の発展は、技術グラフにおけるノードやリンクの数の変化と見做すことができるが、このようなノードやリンクの数の変化は、冪分布で仮想的に再現されると予測される(例えば、非特許文献1参照)。そこで、公開装置10は、冪分布に従って、既存のノードから、そのノードとリンクにより接続される新たなノードが発生するものとして、ノードの数とリンクの数との変化の傾向を推定してもよい。
なお、公開装置10は、任意の構成を有するグラフを技術グラフの初期モデルとして採用してもよい。例えば、公開装置10は、バラバシ・アルバートモデルを用いて、技術グラフの初期状態を生成し、生成したグラフ情報に含まれるノードから、そのノードとリンクにより接続される新たなノードが発生するものとして、ノードの数とリンクの数との変化の傾向を推定してもよい。
例えば、公開装置10は、技術グラフの初期モデルとして、m個のノードを有する完全グラフを生成する。続いて、公開装置10は、新しいノードを1つ追加し、追加したノードと他のノードとの間を所定の確率で接続するリンクを設定する。このような処理をノードの数が所定の数になるまで繰り返すことで、公開装置10は、初期モデルの生成を行ってもよい。なお、上述した技術以外にも、公開装置10は、例えば、ワッツ・ストロガッツモデル等、複雑グラフの初期モデルを生成するための各種の手法を採用して、技術グラフの初期モデルを生成してよい。
〔1-6.ポリアの壺アルゴリズムについて〕
ここで、非特許文献3で示されるように、技術分野の発展をポリアの壺アルゴリズムにより数学的に表す手法が考えられる。そこで、公開装置10は、ポリアの壺アルゴリズムを用いて、技術グラフを発展させ、技術グラフのノードやリンクの数の増加傾向に基づいて、対象分野における将来の発展傾向を推定してもよい。より具体的には、公開装置10は、ある技術分野に属する文章により示される技術要素をノードとし、各技術要素間の関係性をノード間のリンクとして示すグラフ構造において、ポリアの壺に基づく確率で既存のノードから、そのノードとリンクにより接続される新たなノードが発生するものとして、ノードの数とリンクの数との変化の傾向を推定し、ノードの数とリンクの数との増加率が所定の閾値を超える技術分野を選択してもよい。
以下、ポリアの壺アルゴリズムの一例について説明する。例えば、ポリアの壺アルゴリズムにおいては、それぞれ異なる色の玉が入れられた壺からランダムに1つの玉が取り出され、取り出された玉が、初めて取り出された玉の色であるか否かが判定される。そして、取り出された玉が、過去に取り出された玉と同じ色である場合は、取り出された玉が壺に戻されるとともに、その玉と同じ色の玉が所定の数だけ壺に追加される。一方、取り出された玉が初めて取り出された色である場合は、取り出された玉が壺に戻され、その玉と同じ色の玉が所定の数だけ壺に追加されるとともに、それぞれ色が異なる所定の数の玉であって、それぞれが新たな色を有する玉が壺に入れられる。
このようなポリアの壺アルゴリズムは、ある分野における技術要素の発展の確率モデルと見做せる。例えば、壺の中に入れられた玉を技術要素とした場合、壺の中から取り出された玉の色が初めて取り出された玉の色である確率は、新たな技術要素が発生する確率と対応付けることができる。また、取り出された玉が初めて取り出された色である場合に、新たに壺の中に入れられる新たな色の玉の数は、新たな技術要素が発生した際にその技術から将来発生する新たな技術要素の数を示すパラメータと対応付けることができる。また、取り出された玉とともに壺に入れられる玉であって、壺の中から取り出された玉と同じ色の玉の数は、技術要素間の関係性、すなわち、リンクが生じるパラメータと対応付けることができる。
そこで、公開装置10は、ポリアの壺アルゴリズムを用いて、技術グラフを発展させ、対象分野における将来の発展傾向を推定する。例えば、公開装置10は、複数種別の要素の集合からいずれかの要素が選択された際に、選択された要素とともに選択された要素とは異なる種別の要素を集合に加えた後において各種別の要素が選択される確率に基づいて、既存のノードから、そのノードとリンクにより接続される新たなノードが発生するものとして、ノードの数とリンクの数との変化の傾向を推定してもよい。
〔1-7.データの拡張について〕
ここで、ニューラルチューリングマシンを学習することでプログラムの自動生成を行う場合、多くの学習データが必要になるとも考えられる。そこで、公開装置10は、データの自動拡張を行ってもよい。例えば、公開装置10は、抽出した単語組と、所定の操作を示す複数の単語とを組み合わせることで、抽出した単語組から新たな単語組を生成し、生成した単語組を用いて、プログラムを生成してもよい。
例えば、公開装置10は、複数の名詞が登録された事象データを有し、単語組に含まれる名詞をあらかじめ記憶した名詞に変更した単語組を新たに生成してもよい。また、公開装置10は、word2vec等の技術を用いて、単語組に含まれる名詞をベクトル化し、ベクトルの比較結果に基づいて、単語組に含まれる名詞と類似する他の名詞を特定する。そして、公開装置10は、単語組に含まれる名詞を特定した他の名詞に変換した単語組を生成してもよい。また、公開装置10は、名詞のベクトルとベクトル空間上におけるユークリッド距離が所定の閾値以上となるが、コサイン距離が所定の範囲内となるベクトルと対応する単語を特定し、特定した単語を含む単語組を生成することで、分野が異なるが概念が類似する単語組の生成を行ってもよい。
また、例えば、公開装置10は、単語組に含まれる各単語をベクトル化し、各単語のベクトルに基づいて、単語組が示す概念を示すベクトルを生成する。そして、公開装置10は、生成したベクトルと類似するベクトルを特定し、特定したベクトルと対応する単語組を学習データとして抽出してもよい。
〔1-8.処理の一例について〕
以下、図1を用いて、公開装置10が実行する処理の一例について説明する。まず、公開装置10は、管理装置100から各技術分野に属するコンテンツを収集する(ステップS1)。例えば、公開装置10は、各技術分野に属する公開公報や論文を収集する。このような場合、公開装置10は、ある分野に属する技術要素をノードとし、技術要素間の関係性をリンクとすることで、技術分野ごとに、その分野に属する技術要素と技術要素間の関係とを示すグラフ情報、すなわち技術グラフを生成する(ステップS2)。
例えば、公開装置10は、所定の第1カテゴリに属する特許発明や論文を技術要素とし、技術要素間の関係性を特定する。そして、公開装置10は、技術要素をノードにあてはめ、技術要素間の関係性を示すリンクを設定した技術グラフを生成する。なお、このような技術グラフの生成については、任意のグラフ生成技術が採用可能である。
続いて、公開装置10は、ポリアの壺アルゴリズムに基づいて、将来の技術要素と関係性との増加態様を推定する(ステップS3)。例えば、公開装置10は、ポリアの壺アルゴリズムにおいて関連性が生じる確率のパラメータに対し、新たなリンクが生じる速度に応じた値を設定し、新たな技術要素が生まれる確率のパラメータに対し、新たな技術要素が生じる速度に応じた値を設定する。このようなパラメータに対して設定される値は、例えば、対象分野における過去の複数時点における技術グラフを生成し、生成した技術グラフ同士の比較結果に基づいて、設定されてもよい。
続いて、公開装置10は、各分野におけるノードとリンクとの数の変化に基づいて、対象分野の成長傾向を推定する(ステップS4)。例えば、公開装置10は、第1カテゴリと対応する技術グラフの状態であって、将来のタイミングT1における状態N1(T1)、将来のタイミングT2における状態N1(T2)、および将来のタイミングT3におけるN1(T3)を推定する。そして、公開装置10は、状態N1(T1)、N1(T2)、およびN1(T3)の変化に基づいて、第1カテゴリの成長速度#1を推定する。例えば、公開装置10は、状態N1(T1)におけるノードとリンクとの数、N1(T2)におけるノードとリンクとの数、およびN1(T3)におけるノードとリンクとの数の変化に基づいて、第1カテゴリの成長速度#1を推定する。例えば、公開装置10は、ノードの数の増加量の平均値やリンクの数の増加量の平均値に基づいて、成長速度#1を推定してもよい。
同様に、公開装置10は、第2カテゴリと対応する技術グラフの状態であって、将来のタイミングT1における状態N2(T1)、将来のタイミングT2における状態N2(T2)、および将来のタイミングT3におけるN2(T3)を推定する。そして、公開装置10は、状態N2(T1)、N2(T2)、およびN2(T3)の変化に基づいて、第2カテゴリの成長速度#2を推定する。
そして、公開装置10は、成長速度が速いカテゴリを選択し、選択したカテゴリ、すなわち、技術分野に属する文献から所定の構造を有する単語組を抽出する(ステップS5)。例えば、図1中(A)に示すように、アイデアの特徴を示す文章は、「(名詞){を}(状態表現語、副詞句){で、によって、にして}(動詞){する、できる}」という構造を有すると予測される。そこで、公開装置10は、選択した技術分野に属する文献から形態素解析等の技術を用いて、「(名詞){を}(状態表現語、副詞句){で、によって、にして}(動詞){する、できる}」という構造の文章を抽出する。
そして、公開装置10は、図1中(B)に示すように、抽出した文章に含まれる名詞を単語#1とし、状態表現語又は副詞句を単語#2とし、動詞を単語#3として抽出し、抽出した各単語#1~#3を含む単語組を生成する。なお、このようにして生成された単語組は、図1中(C)に示すように、抽出した文章が示すアイデアの特徴、すなわち概念cεを含むこととなる。
そして、公開装置10は、抽出した単語組に含まれる単語が示す情報を学習データとして、ニューラルチューリングマシンの学習を行うことで、プログラムの自動生成を行う(ステップS6)。すなわち、公開装置10は、抽出した単語組が示す概念cεを実現するプログラムの生成を行う。例えば、公開装置10は、単語組に含まれる名詞と対応する情報を入力した際に、単語組に含まれる動詞と対応する情報を出力するように、ニューラルチューリングマシンM1の学習を行うことで、プログラムの自動生成を行う。
続いて、公開装置10は、生成したプログラムを利用者に対して公開する(ステップS7)。そして、公開装置10は、公開したプログラムを利用するための利用登録を利用者から受付ける(ステップS8)。すなわち、公開装置10は、プログラムについてのユーザ登録を受付ける。
このようなプログラムとそのプログラムに対するユーザ登録を行った利用者のユーザーリストとの組は、販売可能なサービスと見做すことができる。そこで、公開装置10は、プログラムと、利用登録した利用者のリストとの組を、販売可能なサービス内容を示すサービス情報として事業者に公開する(ステップS9)。このような処理の結果、公開装置10は、所定のサービスを提供するプログラムの自動生成からサービスの販売、ひいては会社の販売までの一連の流れを自動化することができる。
なお、公開装置10は、図示を省略した所定の決済サーバ等と連携することにより、サービスの販売までを自動的に行ってもよい。
〔1-9.公開後における人気度に応じた成長性の推定について〕
ここで、公開装置10は、プログラムを公開した後の売上げ値を反映させた状態で、成長性の推定を行ってもよい。例えば、公開装置10は、公開されたプログラムの売上げ値に基づいて、プログラムと関連する技術分野の成長性を推定してもよい。より具体的には、公開装置10は、ベイズ最適化により成長性を示す値の最適値を推定してもよい。
例えば、公開装置10は、ある技術分野のコンテンツから自動生成したプログラムの売上値を特定し、特定した売上値に基づいて、技術分野の成長性を推定する。例えば、公開装置10は、売上値が高ければ高い程、技術分野の成長性がより高いものとして、技術分野の成長性を推定する。例えば、公開装置10は、ベイズ推定におけるベイズ最適化の技術を用いて、売上値から、技術分野の成長性を示す値の最適値を推定する。すなわち、公開装置10は、プログラムの売上値に基づいてベイズ推定における事後確率を特定し、特定した事後確率から、成長性を示すより確度の高い確率分布を推定すればよい。
〔2.公開装置の構成〕
以下、上記した提供処理を実現する公開装置10が有する機能構成の一例について説明する。図2は、実施形態に係る公開装置の構成例を示す図である。図2に示すように、公開装置10は、通信部20、記憶部30、および制御部40を有する。
通信部20は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部20は、ネットワークNと有線または無線で接続され、管理装置100、利用者端末300、および事業者装置200との間で情報の送受信を行う。
記憶部30は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部30は、文献データベース31、拡張単語データベース32、ニューラルチューリングマシン33、、技術グラフデータベース34およびサービス情報データベース35を記憶する。
文献データベース31には、コンテンツとしての文献の情報が登録される。例えば、図3は、実施形態に係る文献データベースに登録される情報の一例を示す図である。図3に示すように、文献データベース31には、「文献ID(Identifier)」、「文章データ」、および「分野」といった情報が対応付けて登録されている。
ここで、「文献ID」とは、文献を示す識別子である。また、「文章データ」とは、文献に含まれるテキスト、すなわち、文章のデータである。また、「分野」とは、対応付けられた「文献ID」が示す文献が属する技術分野(すなわち、カテゴリ)を示す情報である。例えば、図3に示す例では、文献データベース31には、文献ID「文献#1」、文章データ「データ#1」、分野「分野#1」が対応付けて登録されている。このような情報は、文献ID「文献#1」が示す文献に含まれるテキストが文章データ「データ#1」であり、文献ID「文献#1」が示す文献が分野「分野#1」に属する文献である旨を示す。
なお、図3に示す例では、「文献#1」、「データ#1」、「分野#1」等といった概念的な値について記載したが、実際には、文献を識別する文字列や数値、文章を構成する文字列、技術分野を示す数値や文字列等が登録されることとなる。また、図3に示す情報は、あくまで一例であり、文献データベース31には、図3に示す情報以外にも任意の情報が登録されていてよい。
図2に戻り、説明を続ける。拡張単語データベース32は、単語組を拡張する際に用いる操作的動詞が登録されている。例えば、拡張単語データベース32には、コバーク&バクナールの操作的動詞を含む操作的動詞リストが予め登録されている。
ニューラルチューリングマシン33は、入力データから出力データを生成するためのプログラムを生成するモデルであり、例えば、RNNやLSTM等のニューラルネットワークと、ニューラルネットワークがアクセス可能なメモリとにより構成される。
技術グラフデータベース34には、技術グラフが登録されている。例えば、図4は、実施形態に係る技術グラフデータベースに登録される情報の一例を示す図である。図4に示す例では、技術グラフデータベース34には、「カテゴリ」、「パラメータ」、「リンクID(Identifier)」、「第1ノードID」、および「第2ノードID」等といった項目を有する情報が、技術グラフごとに登録される。
ここで、「カテゴリ」とは、技術グラフと対応する対応カテゴリを示す情報である。また、「パラメータ」とは、対応する技術グラフにおいてノードやリンクの数がどのように増加していくかを示すパラメータである。また、「リンクID」とは、技術グラフに含まれるリンクを識別するための情報である。また、「第1ノードID」および「第2ノードID」とは、対応付けられた「リンクID」が示すリンクによって接続されたノード、すなわち、関連性を有する2つの技術要素を示すノードを識別する情報である。
例えば、図4に示す例では、「技術グラフ#1」が示す技術グラフの情報として、カテゴリ「カテゴリ#1」、パラメータ「パラメータ#1」、リンクID「リンク#1」、第1ノードID「ノード#1」、および第2ノードID「ノード#2」が対応付けて登録されている。このような情報は、「技術グラフ#1」が示す技術グラフが、「カテゴリ#1」と対応する技術グラフであり、上述したρやvの値として、パラメータ「パラメータ#1」が設定され、リンクID「リンク#1」が示すリンクにより、第1ノードID「ノード#1」が示すノードと、第2ノードID「ノード#2」が示すノードとが接続されている旨を示す。
なお、図4に示す例では、「カテゴリ#1」、「リンク#1」、「ノード#1」等といった概念的な値について記載したが、実際には、カテゴリを示す文字列や数値、リンクやノードを示す文字列や数値等が登録されることとなる。また、図4に示す情報は、あくまで一例であり、技術グラフデータベース31には、グラフ構造を有するデータであれば、任意の形式のデータが登録されていてよい。
図2に戻り、説明を続ける。サービス情報データベース35には、プログラムと、そのプログラムの利用登録を行った利用者のユーザーリストとが対応付けて登録されている。例えば、図5は、実施形態に係るサービス情報データベースに登録される情報の一例を示す図である。図5に示す例では、サービス情報データベース35には、「サービスID」、「プログラム」、および「ユーザーリスト」等といった項目を有する情報が対応付けて登録されている。
ここで、「サービスID」とは、サービス情報を識別するための識別子である。また、「プログラム」とは、公開装置10が公開したプログラムである。また、「ユーザーリスト」とは、対応付けられた「プログラム」についての利用登録を行った利用者のリストであり、例えば、利用登録の際に登録された各種の利用者情報である。
例えば、図5に示す例では、サービス情報データベース35には、サービスID「サービス#1」、プログラム「プログラム#1」、およびユーザーリスト「リスト#1」といった情報が対応付けて登録されている。このような情報は、サービスID「サービス#1」が示すサービス情報として、プログラム「プログラム#1」とユーザーリスト「リスト#1」とが対応付けられている旨を示す。
なお、図5に示す例では「サービス#1」、「プログラム#1」、および「リスト#1」といった概念的な値を記載したが、実際には、サービス情報データベース35には、サービス情報を識別するための文字列や数値、プログラムコード、および複数の利用者情報を対応付けたユーザーリストの情報等が登録されることとなる。また、サービス情報データベース35には、図5に示す情報以外にも、任意の情報が登録されていてよい。
図2に戻り、説明を続ける。制御部40は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等のプロセッサによって、公開装置10内部の記憶装置に記憶されている各種プログラムがRAM等を作業領域として実行されることにより実現される。また、制御部40は、コントローラ(controller)であり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
図2に示すように、制御部40は、収集部41、推定部42、選択部43、抽出部44、生成部45、公開部46、取得部47、及び提供部48を有する。
収集部41は、単語組の抽出元となるコンテンツとして、各技術分野に属する文献を収集する。例えば、収集部41は、管理装置100が管理する文献を収集し、収集した文献を文献データベース31に登録する。
推定部42は、技術分野ごとに、技術分野に属するコンテンツの増加率に基づいて成長性を推定する。例えば、推定部42は、ある技術分野に属する文章により示される技術要素をノードとし、各技術要素間の関係性をノード間のリンクとして示すグラフ構造において、ポリアの壺に基づく確率で既存のノードから、そのノードとリンクにより接続される新たなノードが発生するものとして、ノードの数とリンクの数との変化の傾向を推定する。
例えば、推定部42は、カテゴリごとに技術グラフの初期グラフを生成する。例えば、推定部42は、あるカテゴリに属する論文や特許発明等を技術要素とするとともに、技術要素間の関係性を特定する。例えば、推定部42は、形態素解析や文章解析の各種公知技術を用いて、論文や特許発明の明細書に含まれる単語群を抽出し、抽出した単語群が示す技術要素と、技術要素同義の関係性とを特定する。このような特定は、例えば、各種意図解析の技術を用いて、イノベーションの単位となる技術を特定することにより実現されてもよい。また、推定した技術同士の関係性を単語群の共起姓に基づいて、技術要素間の関係性を特定してもよい。すなわち、推定部42は、各種の意図解析技術を用いて、技術要素を特定し、単語群の類似性や共起性に基づいて単語群が示す意味同士の関係性を推定する推定技術を用いて、技術要素間の関係性を特定するのであれば、任意の意図解析技術や推定技術を採用してよい。
そして、推定部42は、特定した技術要素をノードとし、技術要素間の関係性をリンクとした技術グラフを生成し、生成した技術グラフを技術グラフデータベース34に登録する。なお、推定部42は、バラバシ・アルバートモデルを用いて、グラフ情報の初期状態を生成し、生成したグラフ情報を技術グラフとして技術グラフデータベース34に登録してもよい。
また、推定部42は、技術グラフごとに、グラフの成長を示す各種パラメータの値を設定する。例えば、推定部42は、実際の論文数や特許発明数等といった技術要素の数の変化に基づいて、単位時間あたりのノードの増加量を特定してもよい。また、推定部42は、実際の技術要素間の関係性の変化に基づいて、単位時間あたりのリンクの増加量を特定してもよい。そして、推定部42は、これらノードの増加量やリンクの増加量に基づいて、グラフの成長を示す各種パラメータを、技術グラフデータベース34に登録する。
続いて、推定部42は、技術文献に属する単語群で表される技術要素をノードとし、各要素間の関係性をノード間のリンクとして示すグラフ情報に含まれるノードの数とリンクの数との変化の傾向に基づいて、各技術分野における変化の傾向を推定する。例えば、推定部42は、技術グラフデータベース31に登録された各技術グラフごとに、対応するパラメータに基づいて、各技術グラフのノードやリンクの数を増加させる。すなわち、推定部42は、パラメータに基づいて、技術グラフを成長させる。そして、推定部42は、成長させた技術グラフを将来の技術グラフと見做すことで、ノードやリンクの数の増加量を特定し、特定した増加量に基づいて、対象分野の成長態様を推定する。
例えば、推定部42は、対象分野における変化の傾向として、対象分野が成長するか否かを推定してもよい。また、推定部42は、ノードの数の増加傾向に基づいて、対象分野に属する新たな技術の発生傾向を推定してもよい。また、推定部42は、ノードの数の増加傾向と、リンクの数の増加傾向とに基づいて、対象分野に属する技術の発展のしやすさを推定してもよい。
なお、推定部42は、ノードの数の増加傾向やリンクの数の増加傾向に基づいて、対象分野の成長速度がどの程度であるか、どのような態様で対象分野が成長するかを推定してもよい。例えば、推定部42は、ノードの数の増加傾向と比較して、リンクの数の増加傾向が多い場合は、対象分野に属する技術が発展しやすい技術である旨を推定してもよい。
ここで、推定部42は、冪分布に従って、既存のノードから、そのノードとリンクにより接続される新たなノードが発生するものとして、ノードの数とリンクの数との変化の傾向を推定する。例えば、推定部42は、技術グラフデータベース34に登録された技術グラフと、技術グラフと対応するパラメータとを読み出す。そして、推定部42は、複数種別の要素の集合からいずれかの要素が選択された際に、選択された要素とともに選択された要素とは異なる種別の要素を集合に加えた後において各種別の要素が選択される確率に基づいて、既存のノードから、そのノードとリンクにより接続される新たなノードが発生するものとして、ノードの数とリンクの数との変化の傾向を推定する。すなわち、推定部42は、ポリアの壺アルゴリズムに基づいて、ノードの数とリンクの数との変化の傾向を推定する。
選択部43は、推定された成長性が所定の条件を満たす技術分野を選択する。例えば、選択部43は、成長性が所定の閾値を超える技術分野を選択する。また、選択部43は、ノードの数とリンクの数との増加率が所定の閾値を超える技術分野を選択する。例えば、選択部43は、ノードの数の増加傾向やリンクの数の増加傾向が所定の閾値を超える技術分野、成長速度が所定の閾値を超える技術分野等、推定部42によって発展しやすいと推定された技術分野を選択する。
抽出部44は、所定の処理を示す文章に含まれる単語組であって、所定の構造を有する単語組を抽出する。例えば、抽出部44は、選択部43により選択された技術分野に属する文献を文献データベース31から抽出し、抽出した文献に含まれる文章から所定の構造を有する単語組を抽出する。例えば、抽出部44は、単語組として、名詞となる単語と、副詞句となる単語若しくは単語組と、前記名詞となる単語に関する動詞となる単語とを含む単語組を抽出する。
生成部45は、抽出された単語組を用いて、所定の処理を実現するプログラムを生成する。例えば、生成部45は、抽出した単語組に含まれる単語のうち、名詞となる単語が示す情報を入力した際に、動詞となる単語が示す情報を出力するように、ニューラルチューリングマシンを用いてプログラムを生成する。また、生成部45は、抽出部44が抽出した単語組を受付けると、抽出した単語組と、所定の操作を示す複数の単語とを組み合わせることで、抽出した単語組から新たな単語組を生成し、生成した単語組を用いて、プログラムを生成する。
例えば、生成部45は、単語組に含まれる単語を拡張単語データベース32に登録された単語に置き換えることで、抽出部44が抽出した単語組から新たな単語組を生成する。そして、生成部45は、生成した単語組に基づいて、入力データおよび出力データを取得する。例えば、生成部45は、単語組の名詞と対応する情報、若しくは、単語組の名詞および副詞句と対応する情報を入力データとして収集するとともに、単語組の動詞と対応する情報を収集する。
そして、生成部45は、収集した情報を用いて、ニューラルチューリングマシン33の学習を行う。このような処理の結果、ニューラルチューリングマシン33のメモリには、入力データから出力データを生成するプログラムが格納されることとなる。このため、生成部45は、ニューラルチューリングマシン33のメモリに格納されたプログラムを生成されたプログラムとして取得する。
公開部46は、生成部45により生成されたプログラムを公開する。例えば、公開部46は、生成部45により生成されたプログラムの内容を示す情報を利用者端末300に対して配信する。そして、公開部46は、例えば、利用者がプログラムの利用登録を行った場合は、利用登録の対象となるプログラムを利用者端末300に配信する。
取得部47は、公開されたプログラムを利用する利用者の情報を取得する。より具体的には、取得部47は、利用者からプログラムの利用登録を受付ける。例えば、取得部47は、利用登録が行われる際、利用者端末300から利用者の氏名、年齢、住所等といった利用者情報を取得する。そして、取得部47は、プログラムごとに、そのプログラムと、そのプログラムに対する利用登録を行った利用者情報とを対応付けたサービス情報を生成し、生成したサービス情報をサービス情報データベース35に登録する。
提供部48は、プログラムに関する情報と、プログラムを利用する利用者の情報とを対応付けたサービス情報を、販売可能なサービスに関する情報として提供する。例えば、提供部48は、サービス情報データベース35を参照し、各種のサービス情報を示すサムネイルを生成する。なお、このようなサムネイルには、例えば、サービス情報に含まれるプログラムの一部や、プログラムが実現する処理の内容等を示す文字列が含まれていてもよい。そして、提供部48は、販売可能なサービスを示す情報として、生成したサムネイルを事業者装置200に送信する。
また、例えば、提供部48は、事業者装置200からいずれかのサービスを購入する旨の通知を受付けた場合や、図示を省略した決済サーバによりサービスの購入に関する決済処理が完了した場合は、購入対象となったサービスのサービス情報、すなわち、購入対象となったプログラムとそのプログラムを利用する利用者のユーザーリストとを、事業者装置200に対して送信する。
〔3.公開装置が実行する処理の流れの一例〕
次に、図6を用いて、公開装置10が実行する処理の流れの一例について説明する。図6は、実施形態に係る公開装置が実行する処理の流れの一例を説明するフローチャートである。
まず、公開装置10は、技術グラフを生成し(ステップS101)、ポリアの壺アルゴリズムによる各パラメータに基づいて、各技術グラフのノードとリンクとの数の増加傾向を推定する(ステップS102)。続いて、公開装置10は、推定結果に基づいて、成長性が所定の閾値を超える技術分野を特定し(ステップS103)、特定した技術分野に属する文章から所定の構造を有する単語群を抽出する(ステップS104)。そして、公開装置10は、所定の操作単語を用いて、単語群の拡張を行い(ステップS105)、公開装置10は、単語群に含まれる単語を入力データおよび出力データと見做し、ニューラル
チューリングマシンの学習を行うことで、プログラムの生成を行う(ステップS106)。
また、公開装置10は、生成したプログラムを公開し(ステップS107)、プログラムを利用する利用者の情報を収集する(ステップS108)。そして、公開装置10は、利用者の情報とプログラムとの組を販売可能なサービス情報として提供し(ステップS109)、処理を終了する。
〔4.変形例〕
上記では、公開装置10による処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、公開装置10が実行する処理のバリエーションについて説明する。
〔4-1.装置構成〕
上述した例では、公開装置10は、公開装置10内で公開処理および提供処理を実行した。しかしながら、実施形態は、これに限定されるものではない。例えば、公開装置10は、プログラムを自動生成する生成サーバと、公開処理を実行する公開サーバと、提供処理を実行する提供サーバとが協調することで実現されてもよい。このような場合、生成サーバは、図2に示す収集部41、推定部42、選択部43、抽出部44および生成部45を有し、公開サーバは、図2に示す公開部46および取得部47を有し、提供サーバは、図2に示す提供部48を有することとなる。
〔4-2.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
〔4-3.プログラム〕
また、上述してきた実施形態に係る公開装置10は、例えば図7に示すような構成のコンピュータ1000によって実現される。図7は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力IF(Interface)1060、入力IF1070、ネットワークIF1080がバス1090により接続された形態を有する。
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置1040は、RAM等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD、フラッシュメモリ等により実現される。
出力IF1060は、モニタやプリンタといった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインタフェースであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力IF1070は、マウス、キーボード、およびスキャナ等といった各種の入力装置1020から情報を受信するためのインタフェースであり、例えば、USB等により実現される。
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置1020は、USBメモリ等の外付け記憶媒体であってもよい。
ネットワークIF1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。
演算装置1030は、出力IF1060や入力IF1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
例えば、コンピュータ1000が公開装置10として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムまたはデータを実行することにより、制御部40の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムまたはデータを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
〔5.効果〕
上述したように、公開装置10は、所定の処理を示す文章に含まれる単語組であって、所定の構造を有する単語組を抽出する。また、公開装置10は、抽出された単語組を用いて、所定の処理を実現するプログラムを生成する。そして、公開装置10は、生成されたプログラムを公開する。この結果、公開装置10は、サービスの起案から提供までを自動化することができる。
また、公開装置10は、公開されたプログラムを利用する利用者の情報を取得する。そして、公開装置10は、プログラムに関する情報と、そのプログラムを利用する利用者の情報とを対応付けたサービス情報を、販売可能なサービスに関する情報として提供する。このため、公開装置10は、自動生成したサービスの販売までを自動化することができる。
また、公開装置10は、技術分野ごとに、その技術分野に属するコンテンツの増加率に基づいて成長性を推定し、推定された成長性が所定の条件を満たす技術分野を選択する。そして、公開装置10は、選択された技術分野に属するコンテンツから抽出された文章に含まれる単語組を抽出する。例えば、公開装置10は、成長性が所定の閾値を超える技術分野を選択する。また、公開装置10は、ある技術分野に属する文章により示される技術要素をノードとし、各技術要素間の関係性をノード間のリンクとして示すグラフ構造において、ポリアの壺に基づく確率で既存のノードから、そのノードとリンクにより接続される新たなノードが発生するものとして、ノードの数とリンクの数との変化の傾向を推定し、ノードの数とリンクの数との増加率が所定の閾値を超える技術分野を選択する。また、公開装置10は、公開されたプログラムの売上げ値に基づいて、プログラムと関連する技術分野の成長性を推定する。すなわち、公開装置10は、公開した後の売上げ値を反映させた状態で、成長性の推定を行う。例えば、公開装置10は、ベイズ最適化により成長性を示す値の最適値を推定する。このため、公開装置10は、より先進的な概念を実現するプログラム、すなわち、利用者が興味を有するプログラムを自動生成することができる。
また、公開装置10は、単語組として、名詞となる単語と、副詞句となる単語若しくは単語組と、名詞となる単語に関する動詞となる単語とを含む単語組を抽出する。そして、公開装置10は、抽出した名詞となる単語が示す情報を入力した際に、動詞となる単語が示す情報を出力するように、ニューラルチューリングマシンを用いてプログラムを生成する。また、公開装置10は、抽出した単語組と、所定の操作を示す複数の単語とを組み合わせることで、抽出した単語組から新たな単語組を生成し、生成した単語組を用いて、プログラムを生成する。このため、公開装置10は、ある分野に属するコンテンツから、その分野に属する概念を実現するプログラムの自動生成を実現することができる。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、生成部は、生成手段や生成回路に読み替えることができる。