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

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

▶ 富士通株式会社の特許一覧

特開2024-62515情報処理プログラム、情報処理方法および情報処理装置
<>
  • 特開-情報処理プログラム、情報処理方法および情報処理装置 図1
  • 特開-情報処理プログラム、情報処理方法および情報処理装置 図2
  • 特開-情報処理プログラム、情報処理方法および情報処理装置 図3
  • 特開-情報処理プログラム、情報処理方法および情報処理装置 図4
  • 特開-情報処理プログラム、情報処理方法および情報処理装置 図5
  • 特開-情報処理プログラム、情報処理方法および情報処理装置 図6
  • 特開-情報処理プログラム、情報処理方法および情報処理装置 図7
  • 特開-情報処理プログラム、情報処理方法および情報処理装置 図8
  • 特開-情報処理プログラム、情報処理方法および情報処理装置 図9
  • 特開-情報処理プログラム、情報処理方法および情報処理装置 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024062515
(43)【公開日】2024-05-10
(54)【発明の名称】情報処理プログラム、情報処理方法および情報処理装置
(51)【国際特許分類】
   G06F 8/36 20180101AFI20240501BHJP
   G06F 8/77 20180101ALI20240501BHJP
   G06F 16/906 20190101ALI20240501BHJP
【FI】
G06F8/36
G06F8/77
G06F16/906
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022170390
(22)【出願日】2022-10-25
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】溝渕 裕司
【テーマコード(参考)】
5B175
5B376
【Fターム(参考)】
5B175FA03
5B175HB03
5B376BC13
5B376BC62
5B376BC80
5B376DA16
5B376DA20
(57)【要約】
【課題】サンプルプログラムからのソフトウェア部品の作成を効率化する。
【解決手段】コンピュータは、複数のサンプルプログラムを2以上のクラスタに分類した分類結果であって、クラスタ数が異なる複数のレベルの分類結果を示すクラスタデータと、複数のサンプルプログラムそれぞれの実行性能を示す性能データとを取得する。コンピュータは、複数のレベルそれぞれにおける2以上のクラスタそれぞれに対して、クラスタに属する2以上のサンプルプログラムの再利用性に関する指標値と、2以上のサンプルプログラムの実行性能とに基づいて、第1の評価値を算出し、レベルに対して、2以上のクラスタに対応する2以上の第1の評価値に基づいて第2の評価値を算出する。コンピュータは、複数のレベルに対応する複数の第2の評価値に基づいて、複数のレベルのうちの何れかのレベルの分類結果を選択する。
【選択図】図6
【特許請求の範囲】
【請求項1】
複数のサンプルプログラムを2以上のクラスタに分類した分類結果であって、クラスタ数が異なる複数のレベルの分類結果を示すクラスタデータと、前記複数のサンプルプログラムそれぞれの実行性能を示す性能データとを取得し、
前記複数のレベルそれぞれにおける前記2以上のクラスタそれぞれに対して、当該クラスタに属する2以上のサンプルプログラムの再利用性に関する指標値と、前記2以上のサンプルプログラムの前記実行性能とに基づいて、第1の評価値を算出し、当該レベルに対して、前記2以上のクラスタに対応する2以上の第1の評価値に基づいて第2の評価値を算出し、
前記複数のレベルに対応する複数の第2の評価値に基づいて、前記複数のレベルのうちの何れかのレベルの前記分類結果を選択する、
処理をコンピュータに実行させる情報処理プログラム。
【請求項2】
前記複数のレベルは、異なるクラスタを統合することを繰り返す階層的クラスタリングによって生成される複数の階層である、
請求項1記載の情報処理プログラム。
【請求項3】
前記複数のサンプルプログラムそれぞれの前記実行性能は、当該サンプルプログラムを用いて訓練される機械学習モデルの予測精度である、
請求項1記載の情報処理プログラム。
【請求項4】
前記2以上のクラスタそれぞれに対する前記第1の評価値は、当該クラスタのサンプルプログラム数を示す第1の指標値と、当該クラスタに属する前記2以上のサンプルプログラムの記述に関する特徴量の分散に応じた凝集度を示す第2の指標値と、当該クラスタの前記実行性能の平均を示す第3の指標値と、当該クラスタの前記実行性能の分散を示す第4の指標値とに基づいて算出される、
請求項1記載の情報処理プログラム。
【請求項5】
複数のサンプルプログラムを2以上のクラスタに分類した分類結果であって、クラスタ数が異なる複数のレベルの分類結果を示すクラスタデータと、前記複数のサンプルプログラムそれぞれの実行性能を示す性能データとを取得し、
前記複数のレベルそれぞれにおける前記2以上のクラスタそれぞれに対して、当該クラスタに属する2以上のサンプルプログラムの再利用性に関する指標値と、前記2以上のサンプルプログラムの前記実行性能とに基づいて、第1の評価値を算出し、当該レベルに対して、前記2以上のクラスタに対応する2以上の第1の評価値に基づいて第2の評価値を算出し、
前記複数のレベルに対応する複数の第2の評価値に基づいて、前記複数のレベルのうちの何れかのレベルの前記分類結果を選択する、
処理をコンピュータが実行する情報処理方法。
【請求項6】
複数のサンプルプログラムを2以上のクラスタに分類した分類結果であって、クラスタ数が異なる複数のレベルの分類結果を示すクラスタデータと、前記複数のサンプルプログラムそれぞれの実行性能を示す性能データとを記憶する記憶部と、
前記複数のレベルそれぞれにおける前記2以上のクラスタそれぞれに対して、当該クラスタに属する2以上のサンプルプログラムの再利用性に関する指標値と、前記2以上のサンプルプログラムの前記実行性能とに基づいて、第1の評価値を算出し、当該レベルに対して、前記2以上のクラスタに対応する2以上の第1の評価値に基づいて第2の評価値を算出し、前記複数のレベルに対応する複数の第2の評価値に基づいて、前記複数のレベルのうちの何れかのレベルの前記分類結果を選択する処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理プログラム、情報処理方法および情報処理装置に関する。
【背景技術】
【0002】
情報処理装置は、再利用可能なプログラムをソフトウェア部品として保存しておくことがある。ソフトウェア開発の開発者は、保存されたソフトウェア部品を利用することでプログラミングを効率的に行うことができる。ソフトウェア部品は、様々な既存プログラムをサンプルプログラムとして収集し、収集されたサンプルプログラムを分析することによって作成されることがある。情報処理装置は、このようなサンプルプログラムからのソフトウェア部品の作成を支援することがある。
【0003】
例えば、複数のクラスを含むソースコードを分析して、他のクラスから比較的独立したクラス群をコンポーネントとして識別するコンポーネント識別方法が提案されている。提案のコンポーネント識別方法は、他のクラスの呼び出しの有無を示す特徴量を各クラスに対して付与し、特徴量に基づいてクラス間の類似度を定義する。コンポーネント識別方法は、1以上のクラスをそれぞれ含む複数のクラスタを、類似度に基づいて段階的に統合していく階層的クラスタリングを実行する。これにより、複数のクラスについてツリー型の階層構造を示す樹形図(デンドログラム)が生成される。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Jian Feng Cui and Heung Seok Chae, "Applying agglomerative hierarchical clustering algorithms to component identification for legacy systems", Information and Software Technology, Volume 53, Issue 6, pages 601-614, June 2011
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の非特許文献1に記載されたクラスタリング方法のように、情報処理装置は、サンプルプログラムの集合から、クラスタ数が異なる複数のレベルの分類結果を生成することがある。あるレベルの1つのクラスタから1つのソフトウェア部品が作成され得る。
【0006】
しかし、収集されるサンプルプログラムが多いと、クラスタ数が異なる多数のレベルの分類結果が生成され得る。例えば、階層的クラスタリングでは、階層の深い樹形図が生成される。この場合、何れのレベルのクラスタがソフトウェア部品に適しているかを人手で判断することは負担が大きい。そこで、1つの側面では、本発明は、サンプルプログラムからのソフトウェア部品の作成を効率化することを目的とする。
【課題を解決するための手段】
【0007】
1つの態様では、以下の処理をコンピュータに実行させる情報処理プログラムが提供される。複数のサンプルプログラムを2以上のクラスタに分類した分類結果であって、クラスタ数が異なる複数のレベルの分類結果を示すクラスタデータと、複数のサンプルプログラムそれぞれの実行性能を示す性能データとを取得する。複数のレベルそれぞれにおける2以上のクラスタそれぞれに対して、クラスタに属する2以上のサンプルプログラムの再利用性に関する指標値と、2以上のサンプルプログラムの実行性能とに基づいて、第1の評価値を算出し、レベルに対して、2以上のクラスタに対応する2以上の第1の評価値に基づいて第2の評価値を算出する。複数のレベルに対応する複数の第2の評価値に基づいて、複数のレベルのうちの何れかのレベルの分類結果を選択する。
【0008】
また、1つの態様では、コンピュータが実行する情報処理方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
【発明の効果】
【0009】
1つの側面では、サンプルプログラムからのソフトウェア部品の作成が効率化される。
【図面の簡単な説明】
【0010】
図1】第1の実施の形態の情報処理装置を説明するための図である。
図2】第2の実施の形態の情報処理装置のハードウェア例を示す図である。
図3】機械学習スクリプトとモデル精度の例を示す図である。
図4】機械学習スクリプトの分割例を示す図である。
図5】サンプルプログラムの特徴量の例を示す図である。
図6】階層的クラスタリングとクラスタ評価値の例を示す図である。
図7】クラスタサイズと凝集度のトレードオフの例を示す図である。
図8】モデル精度の平均と分散のトレードオフの例を示す図である。
図9】情報処理装置の機能例を示すブロック図である。
図10】クラスタリングの手順例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0012】
図1は、第1の実施の形態の情報処理装置を説明するための図である。
第1の実施の形態の情報処理装置10は、サンプルプログラムの集合から再利用可能なソフトウェア部品を作成することを支援する。ソフトウェア部品は、コード事例、コードパターン、プログラム部品、コードスニペット、プログラミングイディオムなどと呼ばれてもよい。情報処理装置10は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置10が、コンピュータ、分析装置またはクラスタリング装置と呼ばれてもよい。
【0013】
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12が、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路を含んでもよい。プロセッサは、例えば、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
【0014】
記憶部11は、クラスタデータ13および性能データ14を記憶する。クラスタデータ13は、複数のサンプルプログラムを2以上のクラスタに分類した分類結果であって、クラスタ数が異なる複数のレベルの分類結果を示す。各サンプルプログラムは、既存プログラムの一部分または全体である。サンプルプログラムはソースコードでもよい。サンプルプログラムは、関数やクラスなど一定の機能をもつプログラム単位でもよいし、ソースコードの連続するn行(n=1,2,3,…)でもよい。サンプルプログラムは、機械学習モデルを訓練するための機械学習スクリプトでもよい。
【0015】
複数のサンプルプログラムに対するクラスタリングは、情報処理装置10によって実行されてもよいし他の情報処理装置によって実行されてもよい。複数のサンプルプログラムは、特徴量が近いサンプルプログラムが同じクラスタに属し、特徴量が遠いサンプルプログラムが異なるクラスタに属するように、2以上のクラスタに分類される。特徴量は、サンプルプログラムに含まれる文字列から算出されてもよいし、実行時のメモリ状態などサンプルプログラムの実行状態から算出されてもよい。
【0016】
クラスタデータ13は、階層的クラスタリングやk平均法などのクラスタリングアルゴリズムを用いて生成される。階層的クラスタリングの場合、まず複数のサンプルプログラムが互いに異なるクラスタに分類される。ある階層においてクラスタ間の距離が算出され、距離が最も小さいクラスタのペアが、1つ上の階層では1つのクラスタに統合される。クラスタの統合は、最終的にクラスタ数が1になるまで繰り返される。階層的クラスタリングで生成される複数の階層は、上記の複数のレベルに相当する。
【0017】
例えば、クラスタデータ13は、サンプルプログラム#1~#6に対するレベルL1,L2の分類結果を含む。レベルL1の分類結果は、サンプルプログラム#1,#2を含むクラスタ15a(C1)と、サンプルプログラム#3,#4を含むクラスタ15b(C2)と、サンプルプログラム#5,#6を含むクラスタ15c(C3)を示す。レベルL2の分類結果は、サンプルプログラム#1~#4を含むクラスタ15d(C4)と、サンプルプログラム#5,#6を含むクラスタ15e(C5)を示す。よって、レベルL1よりもレベルL2の方がクラスタ数が少ない。
【0018】
性能データ14は、複数のサンプルプログラムそれぞれの実行性能を示す。実行性能は、各サンプルプログラムを実行することで測定されてもよい。実行性能は、情報処理装置10によって測定されてもよいし他の情報処理装置によって測定されてもよい。サンプルプログラムが機械学習スクリプトである場合、実行性能は、例えば、その機械学習スクリプトによって訓練される機械学習モデルの予測精度である。その場合、実行性能は、例えば、0以上1以下の数値で表される。
【0019】
処理部12は、クラスタデータ13および性能データ14に基づいて、クラスタデータ13が示す複数のレベルのうちの何れかのレベルの分類結果を選択する。選択されたレベルに含まれる1つのクラスタから1つのソフトウェア部品が作成される。処理部12は、適切なレベルを選択するため、以下のように複数のレベルを評価する。
【0020】
処理部12は、複数のレベルそれぞれにおける2以上のクラスタそれぞれに対して、第1の評価値を算出する。第1の評価値はクラスタ評価値と呼ばれてもよい。例えば、第1の評価値が高いクラスタほど、部品化に好適であることを示す。
【0021】
処理部12は、クラスタに含まれる2以上のサンプルプログラムの特徴量の分散に応じた凝集度を用いて、第1の評価値を算出する。クラスタ内での特徴量の分散が小さいほど凝集度が高くなる。他のクラスタとの距離が大きいほど凝集度が高くなってもよい。凝集度の指標として、Calinski-Harabasz指標またはDavies-Bouldin指標が用いられてもよい。例えば、凝集度が高いほど第1の評価値が高くなる。
【0022】
また、処理部12は、クラスタに含まれる2以上のサンプルプログラムの実行性能を更に用いて、第1の評価値を算出する。例えば、処理部12は、クラスタ内での実行性能の平均および分散を用いて第1の評価値を算出する。例えば、実行性能の平均が高いほど第1の評価値が高くなり、実行性能の分散が小さいほど第1の評価値が高くなる。
【0023】
また、処理部12は、クラスタに含まれるサンプルプログラムの個数であるクラスタサイズを更に用いて、第1の評価値を算出してもよい。第1の評価値は、クラスタサイズを示す第1の指標値と、凝集度を示す第2の指標値と、実行性能の平均を示す第3の指標値と、実行性能の分散を示す第4の指標値とから算出されてもよい。第1の評価値は、第1の指標値と第2の指標値と第3の指標値と第4の指標値の逆数との積であってもよい。
【0024】
処理部12は、複数のレベルそれぞれに対して、当該レベルの2以上のクラスタに対応する2以上の第1の評価値に基づいて、第2の評価値を算出する。第2の評価値は、レベル評価値または階層評価値と呼ばれてもよい。例えば、処理部12は、2以上の第1の評価値の合計を第2の評価値として算出する。例えば、処理部12は、クラスタ15a,15b,15cに対応する評価値16a,16b,16cを算出し、評価値16a,16b,16cを合成して、レベルL1に対する評価値17aを算出する。また、処理部12は、クラスタ15d,15eに対応する評価値16d,16eを算出し、評価値16d,16eを合成して、レベルL2に対する評価値17bを算出する。
【0025】
処理部12は、複数のレベルに対応する複数の第2の評価値に基づいて、部品化に好適なレベルを選択する。例えば、処理部12は、複数のレベルの間で第2の評価値を比較し、最も高い第2の評価値をもつレベルを選択する。例えば、評価値17aよりも評価値17bの方が高い場合、レベルL2の分類結果が選択され得る。この場合、クラスタ15d,15eから1つずつソフトウェア部品が作成され得る。
【0026】
処理部12は、選択したレベルの分類結果を出力する。処理部12は、選択したレベルの分類結果を不揮発性ストレージに保存してもよいし、表示装置に表示してもよいし、他の情報処理装置に送信してもよい。また、処理部12は、選択したレベルに含まれるクラスタからソフトウェア部品を作成するようユーザに促してもよい。ユーザは、クラスタに含まれる2以上のサンプルプログラムから共通のプログラムパターンを判定してもよく、判定したプログラムパターンを示すソフトウェア部品を作成してもよい。
【0027】
また、処理部12は、ソフトウェア部品の候補として、クラスタに含まれる1つまたは少数のサンプルプログラムをユーザに提示してもよい。提示されるサンプルプログラムは、クラスタの中で平均に近い特徴量をもつ中心のサンプルプログラムでもよい。また、処理部12は、クラスタに含まれる2以上のサンプルプログラムを何らかの基準でランク付けし、ランキング情報をユーザに対して提示してもよい。
【0028】
以上説明したように、第1の実施の形態の情報処理装置10は、サンプルプログラムについてクラスタ数が異なる複数のレベルの分類結果を示すクラスタデータ13と、サンプルプログラムの実行性能を示す性能データ14とを取得する。情報処理装置10は、各クラスタに対して、サンプルプログラムの特徴量の分散に応じた凝集度とサンプルプログラムの実行性能とに基づいて、第1の評価値を算出する。情報処理装置10は、各レベルに対して、第1の評価値に基づいて第2の評価値を算出する。そして、情報処理装置10は、第2の評価値に基づいて、何れかのレベルの分類結果を選択する。
【0029】
これにより、クラスタ数が異なる様々な分類結果の中から、ソフトウェア部品の作成に好適なクラスタを含む分類結果が特定される。例えば、階層的クラスタリングの結果の中から、好適なクラスタを含む階層が特定される。よって、多数のサンプルプログラムが収集された場合であっても、ソフトウェア部品の作成が効率化される。
【0030】
また、第1の評価値の算出に用いられる情報のうち、凝集度は、類似するプログラムパターンが高頻度で出現するという再利用性に関連する。また、実行性能は、ソフトウェア部品がソフトウェアの品質改善に寄与するという有用性に関連する。よって、第1の評価値が高いクラスタから作成されるソフトウェア部品は、高い再利用性および有用性をもつことが期待される。その結果、ソフトウェア部品の品質が向上する。
【0031】
なお、複数のレベルは、階層的クラスタリングによって生成される複数の階層であってもよい。これにより、深い階層をもつ樹形図の中から適切な階層が選択され、人手で適切な階層を探す場合と比べて部品化作業の負担が軽減される。
【0032】
また、実行性能は、サンプルプログラムを用いて訓練される機械学習モデルの予測精度であってもよい。これにより、機械学習スクリプトのプログラミングにとって有用なソフトウェア部品が作成されるものと期待される。ここで、既存の機械学習スクリプトは、オブジェクト指向言語で記述された業務システムプログラムなどと異なり、機能に基づく構造化が行われていないことが多い。また、既存の機械学習スクリプトは、アプリケーション分野を示すドメインで区別することが難しいことが多い。そのため、雑多な機械学習スクリプトが収集されることがあり、多数の機械学習スクリプトから、クラスタ数の異なる多数のレベルの分類結果が生成され得る。これに対し、情報処理装置10は、適切なレベルの分類結果を選択することができる。
【0033】
また、各クラスタに対する第1の評価値は、クラスタサイズを示す第1の指標値と、凝集度を示す第2の指標値と、実行性能の平均を示す第3の指標値と、実行性能の分散を示す第4の指標値とに基づいて算出されてもよい。クラスタサイズは、ソフトウェア部品の再利用性と関連する。クラスタサイズと凝集度を用いることで、適度に分割されたクラスタについて第1の評価値が高くなる。また、実行性能の平均および分散を用いることで、実行性能が平均的に高くかつばらつきが小さいクラスタについて第1の評価値が高くなる。よって、ソフトウェア部品の観点からクラスタの良否が適切に判断される。
【0034】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
第2の実施の形態の情報処理装置100は、既存の機械学習スクリプトを収集して分析し、再利用可能かつ有用なソフトウェア部品の作成を支援する。情報処理装置100は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置100が、コンピュータ、分析装置またはクラスタリング装置と呼ばれてもよい。情報処理装置100は、第1の実施の形態の情報処理装置10に対応する。
【0035】
図2は、第2の実施の形態の情報処理装置のハードウェア例を示す図である。
情報処理装置100は、バスに接続されたCPU101、RAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。
【0036】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムおよびデータをRAM102にロードし、プログラムを実行する。情報処理装置100は、複数のプロセッサを有してもよい。
【0037】
RAM102は、CPU101で実行されるプログラムおよびCPU101で演算に使用されるデータを一時的に記憶する揮発性半導体メモリである。情報処理装置100は、RAM以外の種類の揮発性メモリを有してもよい。
【0038】
HDD103は、オペレーティングシステム(OS:Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラムと、データとを記憶する不揮発性ストレージである。情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の不揮発性ストレージを有してもよい。
【0039】
GPU104は、CPU101と連携して画像処理を行い、情報処理装置100に接続された表示装置111に画像を出力する。表示装置111は、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイまたはプロジェクタである。情報処理装置100に、プリンタなどの他の種類の出力デバイスが接続されてもよい。また、GPU104は、GPGPU(General Purpose Computing on Graphics Processing Unit)として使用されてもよい。GPU104は、CPU101からの指示に応じてプログラムを実行し得る。情報処理装置100は、RAM102以外の揮発性半導体メモリをGPUメモリとして有してもよい。
【0040】
入力インタフェース105は、情報処理装置100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112は、例えば、マウス、タッチパネルまたはキーボードである。情報処理装置100に複数の入力デバイスが接続されてもよい。
【0041】
媒体リーダ106は、記録媒体113に記録されたプログラムおよびデータを読み取る読み取り装置である。記録媒体113は、例えば、磁気ディスク、光ディスクまたは半導体メモリである。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)およびHDDが含まれる。光ディスクには、CD(Compact Disc)およびDVD(Digital Versatile Disc)が含まれる。媒体リーダ106は、記録媒体113から読み取られたプログラムおよびデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、CPU101によって実行されることがある。
【0042】
記録媒体113は、可搬型記録媒体であってもよい。記録媒体113は、プログラムおよびデータの配布に用いられることがある。また、記録媒体113およびHDD103が、コンピュータ読み取り可能な記録媒体と呼ばれてもよい。
【0043】
通信インタフェース107は、ネットワーク114を介して他の情報処理装置と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0044】
次に、分析対象となるサンプルプログラム群について説明する。
図3は、機械学習スクリプトとモデル精度の例を示す図である。
情報処理装置100は、機械学習スクリプト131,132を含む複数の機械学習スクリプトを記憶する。機械学習スクリプトは、機械学習の手順を規定したソースコードである。機械学習は、訓練データを用いて機械学習モデルを訓練し、テストデータを用いて機械学習モデルのモデル精度を測定することを含む。
【0045】
機械学習スクリプトは、クラスやメソッドを含む機械学習ライブラリを利用することがある。機械学習モデルは、例えば、ランダムフォレスト、サポートベクタマシン、ニューラルネットワークなどである。モデル精度は、例えば、正答率(Accuracy)である。正答率は、0以上1以下の数値であり、高いほど機械学習モデルが良好であることを示す。
【0046】
訓練データおよびテストデータは、例えば、CSV(Comma Separated Value)などのテーブルデータである。テーブルデータは、複数のカラムおよび複数のレコードを含む。複数のカラムのうちの一部のカラムが説明変数として使用され、他のカラムが目的変数として使用される。説明変数の値は、機械学習モデルに入力される入力データである。目的変数の値は、機械学習モデルの出力に対する正解を示す教師ラベルである。機械学習スクリプトは、テーブルデータに対して前処理を実行することがある。前処理は、例えば、テーブルデータの中の特定のカラムの値を一定範囲の数値に変換する正規化を含む。
【0047】
機械学習スクリプト131は、空行を除いて14行のコードを含む。コードは、命令または命令文と呼ばれてもよい。機械学習スクリプト131は、訓練データテーブルに対して前処理を行い、訓練データテーブルの中から説明変数を示すカラムおよび目的変数を示すカラムを指定し、機械学習モデルとしてランダムフォレストを訓練する。機械学習スクリプト131は、テストデータテーブルの中から説明変数を示すカラムおよび目的変数を示すカラムを指定し、ランダムフォレストに説明変数の値を入力して予測値を算出し、予測値と教師ラベルとを比較してモデル精度として正答率を算出する。
【0048】
機械学習スクリプト132は、空行を除いて12行のコードを含む。機械学習スクリプト132は、機械学習スクリプト131の4行目および5行目に相当する前処理のコードを含まない。その他の点は機械学習スクリプト131と同じである。
【0049】
情報処理装置100は、機械学習スクリプトと対応付けて、当該機械学習スクリプトで使用される訓練データおよびテストデータを記憶する。情報処理装置100は、記憶された訓練データおよびテストデータを用いて機械学習スクリプトを実行することで、当該機械学習スクリプトによって訓練された機械学習モデルのモデル精度を測定する。情報処理装置100は、測定されたモデル精度を、機械学習スクリプトと対応付けて記憶する。ただし、他の情報処理装置がモデル精度を測定してもよい。
【0050】
例えば、情報処理装置100は、機械学習スクリプト131を実行することでモデル精度133を測定する。また、情報処理装置100は、機械学習スクリプト132を実行することでモデル精度134を測定する。なお、後述するように、情報処理装置100は、実行時のメモリ状態に基づいてサンプルプログラムの特徴量を規定してもよい。その場合、情報処理装置100は、機械学習スクリプトの実行時に、1ステップ毎(例えば、1行毎)に、メモリイメージを実行履歴として保存しておく。
【0051】
図4は、機械学習スクリプトの分割例を示す図である。
情報処理装置100は、複数の機械学習スクリプトそれぞれを分割することで、再利用可能なソフトウェア部品の候補である複数のサンプルプログラムを抽出する。機械学習スクリプトは、大規模な業務システムプログラムと異なり、十分に構造化されていないことが多い。このため、情報処理装置100は、クラスや関数のように機能的まとまりを示すプログラム単位を機械学習スクリプトの中から識別することが難しい。そこで、情報処理装置100は、機械学習スクリプトに含まれる連続するn行(n=1,2,3,…)のコードを、サンプルプログラムとして網羅的に抽出する。
【0052】
例えば、情報処理装置100は、機械学習スクリプト131から、1行目のコードを示すサンプルプログラム141と、2行目のコードを示すサンプルプログラム142と、3行目のコードを示すサンプルプログラム143とを抽出する。このように、情報処理装置100は、1行のコードをそれぞれ示す14個のサンプルプログラムを抽出する。
【0053】
また、情報処理装置100は、1~2行目のコードを示すサンプルプログラム144と、2~3行目のコードを示すサンプルプログラム145と、3~4行目のコードを示すサンプルプログラム146とを抽出する。このように、情報処理装置100は、連続する2行のコードをそれぞれ示す13個のサンプルプログラムを抽出する。また、情報処理装置100は、1~3行目のコードを示すサンプルプログラム147と、2~4行目のコードを示すサンプルプログラム148と、3~5行目のコードを示すサンプルプログラム149とを抽出する。このように、情報処理装置100は、連続する3行のコードをそれぞれ示す12個のサンプルプログラムを抽出する。
【0054】
1つのサンプルプログラムに含まれ得る行数については、事前に上限が決められていてもよいし、上限が存在しなくてもよい。情報処理装置100は、機械学習スクリプト132からも、機械学習スクリプト131と同様に複数のサンプルプログラムを抽出する。情報処理装置100は、抽出された各サンプルプログラムに対して、元の機械学習スクリプトから測定されたモデル精度を付与する。例えば、情報処理装置100は、サンプルプログラム141~149に、機械学習スクリプト131のモデル精度133を付与する。
【0055】
なお、基準となる機械学習スクリプトが存在する場合、情報処理装置100は、基準の機械学習スクリプトと他の機械学習スクリプトとの差分をサンプルとして抽出してもよい。例えば、機械学習スクリプト132を基準とすると、情報処理装置100は、機械学習スクリプト131から4~5行目のコードをサンプルプログラムとして抽出する。差分を抽出することで、モデル精度の向上に寄与するコードが識別されやすくなる。
【0056】
この場合、情報処理装置100は、抽出された差分のサンプルプログラムに対して、基準の機械学習スクリプトのモデル精度との差を示す相対モデル精度を付与してもよい。相対モデル精度は負数であることもある。例えば、情報処理装置100は、機械学習スクリプト131の4~5行目に対し、+0.1という相対モデル精度を付与する。
【0057】
図5は、サンプルプログラムの特徴量の例を示す図である。
情報処理装置100は、サンプルプログラム間の類似度を示す「距離」を規定するため、各サンプルプログラムの特徴量を算出する。特徴量は、2以上の次元に対応する2以上の数値を列挙したベクトルである。以降の第2の実施の形態の説明では、サンプルプログラムに含まれる文字列自体から特徴量を算出する場合を想定する。ただし、後述するように、情報処理装置100は、他の方法によって特徴量を算出してもよい。
【0058】
情報処理装置100は、複数のサンプルプログラムそれぞれから1以上のトークンを抽出する。トークンは、変数名や関数名のようにプログラミング言語上で意味をもつ文字列であり、単語と呼ばれてもよい。情報処理装置100は、例えば、空白やドットやカンマなどの区切り文字を検出して、サンプルプログラムをトークンに分割する。
【0059】
ただし、サンプルプログラム間の類似度を判断する上で、ユーザ定義の変数名の重要度は低い。ユーザ定義の変数名が異なっても、2つのサンプルプログラムが実質的に同じデータ処理を実行していることがあるためである。そこで、情報処理装置100は、ライブラリ名、ライブラリに含まれるクラスのクラス名、ライブラリに含まれるメソッドのメソッド名など、既知の名称のみをトークンとして抽出してもよい。
【0060】
情報処理装置100は、複数のサンプルプログラムの中に1回以上出現するトークンを列挙したトークンセット151を生成する。情報処理装置100は、トークンセット151を参照して、サンプルプログラム毎に1つの特徴量を算出する。特徴量は、トークンベクトルと呼ばれてもよく、トークンセット151と同じ次元数をもつ。サンプルプログラムに1回以上出現するトークンに対応する次元の値が「1」であり、サンプルプログラムに1回も出現しないトークンに対応する次元の値が「0」である。
【0061】
例えば、トークンセット151の第1次元はトークン「pd」を示し、第2次元はトークン「read_csv」を示し、第3次元はトークン「df」を示し、第4次元はトークン「replace」を示す。情報処理装置100は、サンプルプログラム152から特徴量154を生成し、サンプルプログラム153から特徴量155を算出する。
【0062】
サンプルプログラム152は、トークン「pd」、「read_csv」および「df」を含み、トークン「replace」を含まない。よって、特徴量154の第1~3次元の値は「1」であり、特徴量154の第4次元の値は「0」である。サンプルプログラム153は、トークン「pd」および「read_csv」を含まず、トークン「df」および「replace」を含む。よって、特徴量155の第1~2次元の値は「0」であり、特徴量155の第3~4次元の値は「1」である。
【0063】
なお、情報処理装置100は、機械学習スクリプトの実行履歴から特徴量を算出してもよい。例えば、情報処理装置100は、サンプルプログラムの始点または終点において保存されたメモリイメージから、その時点のテーブルデータを抽出する。情報処理装置100は、テーブルデータに含まれる各カラムの平均値、最大値、最小値などの統計量を特徴量として算出してもよい。サンプルプログラムによって異なる構造のテーブルデータが使用される場合や、テーブルデータに対して前処理が行われる場合、テーブルデータの統計量は、サンプルプログラムの特徴を示す有用な特徴量となり得る。
【0064】
図6は、階層的クラスタリングとクラスタ評価値の例を示す図である。
情報処理装置100は、上記で算出された特徴量を用いて、上記で抽出された複数のサンプルプログラムに対して階層的クラスタリングを行う。階層的クラスタリングでは、情報処理装置100は、まずサンプルプログラムと同数のクラスタを生成し、複数のサンプルプログラムを互いに異なるクラスタに分類する。情報処理装置100は、クラスタに属するサンプルプログラムの特徴量に基づいてクラスタ間距離を算出し、クラスタ間距離が最小であるクラスタのペアを1つのクラスタに統合する。情報処理装置100は、クラスタ間距離の算出とクラスタのペアの統合とを、クラスタ数が1になるまで繰り返す。
【0065】
2つのサンプルプログラムの間の距離は、例えば、2つの特徴量の間のユークリッド距離である。クラスタ間距離は、例えば、異なるクラスタに属するサンプルプログラムの間の距離のうちの最小値または最大値である。最小値を用いる方法は最短距離法と呼ばれることがあり、最大値を用いる方法は最長距離法と呼ばれることがある。また、異なるクラスタに属するサンプルプログラムの間の距離の平均値が用いられてもよい。
【0066】
これにより、図6に示すような樹形図が生成される。樹形図は、全てのサンプルプログラムを含む1つのクラスタを示すルートノードと、互いに異なるクラスタに属する複数のサンプルプログラムを示す葉ノードとを含む。樹形図では、階層的クラスタリングの進行度を示す階層tが規定される。葉ノードの階層ではt=0であり、ルートノードの階層ではt=1である。階層tは、0以上1以下の数値をとる。
【0067】
樹形図から1つの階層を選択すると、選択された階層において形成されている1以上のクラスタが特定される。通常、t=0,t=1以外の階層が選択される。ユーザは、特定された1つのクラスタから1つのソフトウェア部品を作成する。同一のクラスタに属する2以上のサンプルプログラムは、共通する特徴をもつことが期待される。そこで、例えば、ユーザは、それら2以上のサンプルプログラムから共通する特徴のコードを抽出し、再利用可能な形式に書き換えることでソフトウェア部品を作成する。
【0068】
例えば、t=0.8の階層では、複数のサンプルプログラムがクラスタ161,162,163に分類されている。ユーザは、クラスタ161から1つのソフトウェア部品を作成する。また、ユーザは、クラスタ162から1つのソフトウェア部品を作成する。また、ユーザは、クラスタ163から1つのソフトウェア部品を作成する。なお、ソフトウェア部品は再利用可能なプログラムであり、コード事例、コードパターン、プログラム部品、コードスニペットまたはプログラミングイディオムと呼ばれてもよい。
【0069】
しかし、前述した機械学習スクリプトの性質上、機械学習スクリプトからはソフトウェア部品の候補となる多数のサンプルプログラムが抽出される。多数のサンプルプログラムに対して階層的クラスタリングを行うと、階層の深い樹形図が生成される。そのため、ソフトウェア部品に適した階層をユーザが樹形図から選択することが難しいことがある。そこで、情報処理装置100は、複数の階層それぞれに対して、ソフトウェア部品に適しているか否かを示す階層評価値を算出し、階層評価値に基づいて適切な階層を選択する。
【0070】
階層tの階層評価値Pは、数式(1)のように算出される。階層評価値Pは、階層tで形成されたクラスタCt,i(i=1,2,3,…)に対して算出されるクラスタ評価値Pt,iの合計である。クラスタ評価値Pt,iは、下記の第1項から第4項の積である。
【0071】
【数1】
【0072】
第1項は、クラスタに含まれるサンプルプログラムの個数を示すクラスタサイズである。数式(1)において、|Ct,i|はクラスタCt,iのクラスタサイズを表す。クラスタサイズは、ソフトウェア部品の再利用性と関連する。類似するコードが頻繁に出現することは、ソフトウェア部品の再利用性が高いことを示す。そこで、クラスタサイズが大きいほどクラスタ評価値Pt,iが大きくなる。
【0073】
第2項は、クラスタに含まれる2以上のサンプルプログラムの凝集度である。数式(1)において、1/Dt,iはクラスタCt,iの凝集度を表す。クラスタ内でのサンプルプログラム相互の距離が小さいほど凝集度が高く、他のクラスタに属するサンプルプログラムとの距離が大きいほど凝集度が高くなる。凝集度の計算に使用する特徴量と階層的クラスタリングに使用する特徴量とは、同じでもよいし異なってもよい。凝集度は、ソフトウェア部品の再利用性と関連する。凝集度が高いクラスタは、他のクラスタとは異なる特有のコードの特徴を表す。そこで、凝集度が高いほどクラスタ評価値Pt,iが大きくなる。
【0074】
凝集度には、例えば、Calinski-Harabasz指標またはDavies-Bouldin指標が利用される。Calinski-Harabasz指標は、クラスタ内の特徴量の分散に反比例し、クラスタ間の特徴量の分散に比例する。クラスタ間の特徴量の分散は、全サンプルプログラムの特徴量の中心と複数のクラスタそれぞれの特徴量の中心との間の距離についての分散である。特徴量の中心は、例えば、特徴量の平均値である。
【0075】
Davies-Bouldin指標は、クラスタ内の特徴量の分散と、最も類似する相手クラスタ内の特徴量の分散との和を、クラスタ間距離で割ったものである。相手クラスタは、クラスタ間距離が最も小さい他のクラスタである。このクラスタ間距離は、一方のクラスタの特徴量の中心と他方のクラスタの特徴量の中心との間の距離である。
【0076】
なお、凝集度は、クラスタ毎に算出されてもよいし、同一の階層にある複数のクラスタ全体にとって共通に算出されてもよい。全クラスタ共通のCalinski-Harabasz指標は、複数のクラスタのクラスタ内分散の平均値を用いて算出される。全クラスタ共通のDavies-Bouldin指標は、個々のクラスタのDavies-Bouldin指標の平均値である。
【0077】
Calinski-Harabasz指標は、下記の非特許文献に記載されている。T. Calinski and J. Harabasz, "A Dendrite Method for Cluster Analysis", Communications in Statistics, Volume 3, Issue 1, pages 1-27, January 1974。Davies-Bouldin指標は、下記の非特許文献に記載されている。David Davies and Donald Bouldin, "A Cluster Separation Measure", IEEE Transactions on Pattern Analysis and Machine Intelligence, Volume 1, Issue 2, pages 224-227, April 1979。
【0078】
第3項は、クラスタに含まれるサンプルプログラムのモデル精度の平均である。数式(1)において、ut,iはクラスタCt,iに含まれるサンプルプログラムのモデル精度を表す。平均モデル精度は、ソフトウェア部品の有用性と関連する。ソフトウェア部品を用いて訓練される機械学習モデルのモデル精度が高いことは、ソフトウェア部品の有用性が高いことを示す。そこで、平均モデル精度が高いほどクラスタ評価値Pt,iが大きくなる。
【0079】
第4項は、クラスタに含まれるサンプルプログラムのモデル精度の分散の逆数である。数式(1)において、βは分散がゼロになることを回避するための微小な定数である。例えば、β=0.01である。モデル精度の分散の逆数は、ソフトウェア部品の有用性と関連する。ソフトウェア部品を用いて訓練される機械学習モデルのモデル精度が不安定であることは、ソフトウェア部品が十分に細分化されていないことを示す。そこで、モデル精度の分散が小さいほどクラスタ評価値Pt,iが大きくなる。
【0080】
例えば、前述のクラスタ161について、クラスタサイズが100、凝集度が13、平均モデル精度が0.7、モデル精度の分散が1.25と算出される。この場合、クラスタ161のクラスタ評価値は728である。また、クラスタ162について、クラスタサイズが150、凝集度が8、平均モデル精度が0.55、モデル精度の分散が1.0と算出される。この場合、クラスタ162のクラスタ評価値は660である。また、クラスタ163について、クラスタサイズが1、凝集度が1、平均モデル精度が0.92、モデル精度の分散が0.01と算出される。この場合、クラスタ163のクラスタ評価値は92である。よって、t=0.8の階層の階層評価値は1480である。
【0081】
図7は、クラスタサイズと凝集度のトレードオフの例を示す図である。
ここでは、ソフトウェア部品の再利用性に関して、クラスタサイズと凝集度との間のトレードオフについて説明する。クラスタ164は、全てのサンプルプログラムを包含する。クラスタ164のクラスタサイズは大きい。一方、クラスタ164は広い特徴量の分布をもち、クラスタ164の凝集度は低い。よって、クラスタ164について、クラスタサイズを示す第1項と凝集度を示す第2項との積である再利用度は小さくなる。
【0082】
クラスタ165,166は、同一階層に現れるクラスタである。クラスタ165,166は、中程度のクラスタサイズをもつ。また、クラスタ165,166は、中程度の凝集度をもつ。よって、クラスタ165,166の再利用度は大きくなる。t=0の階層では、各サンプルプログラムが1つの原始クラスタを形成する。原始クラスタのクラスタサイズは小さい。一方、原始クラスタは最小のクラスタ内分散をもつため、原始クラスタの凝集度は高い。よって、原始クラスタの再利用度は小さくなる。このように、サンプルプログラム群を適度に分割することで、クラスタサイズと凝集度の積が大きくなる。
【0083】
図8は、モデル精度の平均と分散のトレードオフの例を示す図である。
ここでは、ソフトウェア部品の有用性に関して、モデル精度の平均と分散との間のトレードオフについて説明する。クラスタ167は、5個のサンプルプログラムを含む。4個のサンプルプログラムのモデル精度が1.0であり、1個のサンプルプログラムのモデル精度が0.5である。クラスタ167のモデル精度の平均は0.9、分散は0.042である。よって、クラスタ167について、平均モデル精度を示す第3項とモデル精度の分散の逆数を示す第4項との積である有用度は21である。
【0084】
クラスタ168,169は、同一階層に現れるクラスタである。クラスタ168は、モデル精度が1.0である4個のサンプルプログラムを含む。クラスタ169は、モデル精度が0.5である1個のサンプルプログラムを含む。クラスタ168のモデル精度の平均は1.0、分散は0.0025である。よって、クラスタ168の有用度は400である。クラスタ169のモデル精度の平均は0.5、分散は0.01である。よって、クラスタ169の有用度は50である。このように、モデル精度の近いサンプルプログラム同士が集まった方が、モデル精度の平均と分散の逆数との積の合計が大きくなる。
【0085】
次に、情報処理装置100の機能および処理手順について説明する。
図9は、情報処理装置の機能例を示すブロック図である。
情報処理装置100は、スクリプト記憶部121、スクリプト実行部122、スクリプト分割部123、特徴量算出部124、クラスタリング部125およびクラスタ評価部126を有する。スクリプト記憶部121は、例えば、RAM102またはHDD103を用いて実装される。スクリプト実行部122、スクリプト分割部123、特徴量算出部124、クラスタリング部125およびクラスタ評価部126は、例えば、CPU101またはGPU104とプログラムとを用いて実装される。
【0086】
スクリプト記憶部121は、収集された既存の機械学習スクリプトを記憶する。また、スクリプト記憶部121は、機械学習スクリプトを実行するための訓練データおよびテストデータを記憶する。また、スクリプト記憶部121は、機械学習スクリプトに対応するモデル精度を記憶する。モデル精度は、スクリプト実行部122によって測定される。
【0087】
スクリプト実行部122は、スクリプト記憶部121に記憶された機械学習スクリプトを、訓練データおよびテストデータを用いて実行する。機械学習スクリプトの実行には、GPU104が使用されてもよい。スクリプト実行部122は、機械学習スクリプトによって測定されたモデル精度をスクリプト記憶部121に保存する。
【0088】
なお、モデル精度を測定するコードが機械学習スクリプトに含まれていない場合、スクリプト実行部122は、訓練された機械学習モデルのモデル精度を機械学習スクリプトの外部で測定してもよい。また、サンプルプログラムの特徴量がメモリ状態から算出される場合、スクリプト実行部122は、機械学習スクリプトの実行中、ステップ毎にメモリイメージをスクリプト記憶部121に保存する。
【0089】
スクリプト分割部123は、スクリプト記憶部121に記憶された機械学習スクリプトを複数のサンプルプログラムに分割する。例えば、スクリプト分割部123は、機械学習スクリプトに含まれる連続するn行(n=1,2,3,…)のコードを、サンプルプログラムとして抽出する。ここで生成されるサンプルプログラムの集合には、異なる機械学習スクリプトから抽出されたサンプルプログラムが混在していてよい。スクリプト分割部123は、サンプルプログラムに対し、元の機械学習スクリプトのモデル精度を付与する。
【0090】
特徴量算出部124は、スクリプト分割部123で抽出されたサンプルプログラムの特徴量を算出する。例えば、特徴量算出部124は、サンプルプログラムからトークンを抽出し、トークンの出現の有無を示すトークンベクトルを特徴量として算出する。
【0091】
クラスタリング部125は、特徴量算出部124で算出された特徴量に基づいて、スクリプト分割部123で抽出された複数のサンプルプログラムに対して階層的クラスタリングを実行する。これにより、クラスタ数が異なる複数の階層それぞれにおけるサンプルプログラムの分類結果を示す樹形図(デンドログラム)が生成される。
【0092】
クラスタ評価部126は、クラスタリング部125による階層的クラスタリングの結果と各サンプルプログラムに付与されたモデル精度とから、前述の数式(1)に従って各クラスタのクラスタ評価値を算出する。クラスタ評価部126は、複数の階層それぞれに対して、その階層にあるクラスタのクラスタ評価値を合計した階層評価値を算出する。クラスタ評価部126は、階層評価値が最も大きい階層を選択する。
【0093】
クラスタ評価部126は、選択した階層のクラスタリング結果を不揮発性ストレージに保存してもよいし、表示装置111に表示してもよいし、他の情報処理装置に送信してもよい。また、クラスタ評価部126は、選択した階層のクラスタからソフトウェア部品を作成するようユーザに促してもよい。また、クラスタ評価部126は、選択した階層のクラスタ毎に、サンプルプログラムを一定の基準でランク付けし、ランクが上位のサンプルプログラムをソフトウェア部品の有力候補としてユーザに提示してもよい。
【0094】
また、クラスタ評価部126は、クラスタ内で特徴量が中心に最も近いサンプルプログラムを、ソフトウェア部品の有力候補として選択してもよい。また、クラスタ評価部126は、選択した階層に現れる2以上のクラスタのうち、クラスタ評価値が閾値を超えるクラスタまたはクラスタ評価値が上位のクラスタのみをユーザに提示してもよい。情報処理装置100は、サンプルプログラムに基づいて編集されたソフトウェア部品をユーザから受け付け、受け付けたソフトウェア部品を保存してもよい。また、情報処理装置100は、受け付けたソフトウェア部品を他の情報処理装置に送信してもよい。
【0095】
図10は、クラスタリングの手順例を示すフローチャートである。
(S10)スクリプト実行部122は、機械学習スクリプトを実行することで、その機械学習スクリプトを用いて訓練された機械学習モデルのモデル精度を測定する。
【0096】
(S11)スクリプト分割部123は、機械学習スクリプトを分割して複数のサンプルプログラムを生成し、各サンプルプログラムに対してモデル精度を付与する。
(S12)特徴量算出部124は、複数のサンプルプログラムからトークンを抽出し、各サンプルプログラムに対してトークンの出現の有無を示す特徴量を算出する。
【0097】
(S13)クラスタリング部125は、ステップS12の特徴量を用いて、クラスタ数を段階的に減少させながら複数のサンプルプログラムをクラスタに分類する階層的クラスタリングを実行する。これにより、クラスタリング部125は、階層的クラスタリングの結果を示す樹形図(デンドログラム)を生成する。
【0098】
(S14)クラスタ評価部126は、樹形図から1つの階層を選択する。クラスタ評価部126は、選択した階層に現れる1つのクラスタを選択する。クラスタ評価部126は、前述の数式(1)に従って、選択したクラスタのクラスタ評価値を算出する。クラスタ評価値は、クラスタサイズを示す第1項と、凝集度を示す第2項と、平均モデル精度を示す第3項と、モデル精度の分散の逆数を示す第4項との積である。
【0099】
(S15)クラスタ評価部126は、選択された階層内の全てのクラスタを評価したか判断する。全てのクラスタが評価済みである場合、ステップS16に処理が進む。未評価のクラスタがある場合、ステップS14に処理が戻り、次のクラスタが選択される。
【0100】
(S16)クラスタ評価部126は、選択された階層に現れる全てのクラスタのクラスタ評価値を合算することで、選択された階層の階層評価値を算出する。
(S17)クラスタ評価部126は、樹形図に含まれる全ての階層を評価したか判断する。全ての階層が評価済みである場合、ステップS18に処理が進む。未評価の階層がある場合、ステップS14に処理が戻り、次の階層が選択される。
【0101】
(S18)クラスタ評価部126は、樹形図から階層評価値が最大の階層を選択する。クラスタ評価部126は、選択した階層のクラスタリング結果を出力する。
以上説明したように、第2の実施の形態の情報処理装置100は、既存の機械学習スクリプトからサンプルプログラムの集合を抽出し、階層的クラスタリングによってサンプルプログラムの集合を2以上のクラスタに分類する。これにより、1つのソフトウェア部品にすることが好適なクラスタがユーザに提示され、機械学習スクリプトに関するソフトウェア部品を作成する作業が効率化される。
【0102】
また、情報処理装置100は、各クラスタに対してクラスタ評価値を算出し、複数の階層それぞれに対してクラスタ評価値から階層評価値を算出する。そして、情報処理装置100は、クラスタ数の異なる複数の階層のクラスタリング結果のうち、階層評価値が最も高い階層のクラスタリング結果を選択する。これにより、複数の階層の中から適切な階層を人手で判断しなくてよく、ソフトウェア部品を作成する作業が効率化される。特に、多数のサンプルプログラムから階層の深い樹形図が生成された場合であっても、ソフトウェア部品の作成に好適な階層が自動的に判定される。
【0103】
また、情報処理装置100は、クラスタサイズを示す第1項と、クラスタ内の特徴量の凝集度を示す第2項と、クラスタ内の平均モデル精度を示す第3項と、クラスタ内のモデル精度の分散の逆数を示す第4項との積を、クラスタ評価値として算出する。これにより、ソフトウェア部品の再利用性および有用性の観点からクラスタが評価され、クラスタ評価値の高いクラスタから高品質なソフトウェア部品が作成される。
【符号の説明】
【0104】
10 情報処理装置
11 記憶部
12 処理部
13 クラスタデータ
14 性能データ
15a,15b,15c,15d,15e クラスタ
16a,16b,16c,16d,16e,17a,17b 評価値
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10