JP7014301B2 - 情報処理装置、分析システム、分析方法及び分析プログラム - Google Patents
情報処理装置、分析システム、分析方法及び分析プログラム Download PDFInfo
- Publication number
- JP7014301B2 JP7014301B2 JP2020540889A JP2020540889A JP7014301B2 JP 7014301 B2 JP7014301 B2 JP 7014301B2 JP 2020540889 A JP2020540889 A JP 2020540889A JP 2020540889 A JP2020540889 A JP 2020540889A JP 7014301 B2 JP7014301 B2 JP 7014301B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- node
- conceptual
- unit
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004458 analytical method Methods 0.000 title claims description 50
- 230000010365 information processing Effects 0.000 title claims description 34
- 238000000605 extraction Methods 0.000 claims description 44
- 238000000034 method Methods 0.000 claims description 28
- 239000000284 extract Substances 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 14
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000009635 antibiotic susceptibility testing Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 239000000470 constituent Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Description
本発明は、情報処理装置、分析システム、分析方法及び分析プログラムに関し、特に、複数のソースコードの間で共通する処理を抽出するための情報処理装置、分析システム、分析方法及び分析プログラムに関する。
特許文献1には、グラフ構造により表現された複数のオブジェクトから、多頻度部分グラフの組を抽出する技術が開示されている。また、特許文献2には、プログラムのソースコードの構文解析により得られた構文木の関数について、引数の数やデータ型を推測する技術が開示されている。また、特許文献3には、テーブルのカラムの意味とテーブルの意味の間の規則性を示すモデルを生成し、入力テーブルのカラムの意味からモデルを用いて、入力テーブルの意味を推定する技術が開示されている。尚、非特許文献1には、頻出する部分グラフのマイニングに関する技術が開示されている。
Kuramochi, M. and Karypis, G.: Frequent Subgraph Discovery, in Proceedings of the 2001 IEEE International Conference on Data Mining, 29 November - 2 December 2001, San Jose, California, USA, pp. 313-320 (2001)
近年、多数及び多種類のソフトウェアプログラムが開発され、そのソースコードが大量に蓄積されている。そして、新規案件のプログラム開発時に、過去の類似案件のソースコードの一部を再利用する必要性が高まっている。そのため、蓄積された大量のソースコードを解析し、共通処理を抽出して、再利用可能なコードを見出すことが考えられる。しかしながら、大量のソースコードの中から再利用可能な情報(知見やノウハウ等)を人手で抽出することが困難であるという問題点がある。その理由は、ソースコード内の記述は、論理的には同等の処理(演算式やアルゴリズム)であっても開発者や部門が異なれば、変数名や実装上の具体的な記述が異なってしまうためである。
ここで、特許文献1にかかる技術は、対象とするオブジェクトが化学式や画面遷移であり、ソースコードを対象としたものではない。また、特許文献1にかかる技術は、グラフ形状のみで抽出しているため、精度が不十分である。また、特許文献2にかかる技術は、構文木が字句解析に基づくものであり、異なるソースコード間の記述上の違いは異なる処理として認識されてしまう。また、特許文献3にかかる技術は、ソースコードを対象としたものではない。尚、非特許文献1にかかる技術は、複数のソースコード間で同様の処理であっても変数名が異なる場合等に対応できない。
本開示は、このような問題点を解決するためになされたものであり、複数のソースコードの中から再利用可能な情報を効率的に抽出するための情報処理装置、分析システム、分析方法及び分析プログラムを提供することを目的とする。
本開示の第1の態様にかかる情報処理装置は、
所定の要素値を参照するために用いられる複数種類の要素情報と、当該要素値の概念を示す概念情報との対応関係を含む知識情報を記憶する記憶部と、
前記要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する付与部と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する抽出部と、
を備える。
所定の要素値を参照するために用いられる複数種類の要素情報と、当該要素値の概念を示す概念情報との対応関係を含む知識情報を記憶する記憶部と、
前記要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する付与部と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する抽出部と、
を備える。
本開示の第2の態様にかかる分析システムは、
所定の要素値を参照するために用いられる複数種類の要素情報と、当該要素値の概念を示す概念情報との対応関係を含む知識情報を記憶する記憶装置と、
前記要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する付与部と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する抽出部と、
を備える。
所定の要素値を参照するために用いられる複数種類の要素情報と、当該要素値の概念を示す概念情報との対応関係を含む知識情報を記憶する記憶装置と、
前記要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する付与部と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する抽出部と、
を備える。
本開示の第3の態様にかかる分析方法は、
コンピュータが、
所定の要素値を参照するために用いられる複数種類の要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記複数種類の要素情報と前記要素値の概念を示す概念情報との対応関係を含む知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与し、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する。
コンピュータが、
所定の要素値を参照するために用いられる複数種類の要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記複数種類の要素情報と前記要素値の概念を示す概念情報との対応関係を含む知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与し、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する。
本開示の第4の態様にかかる分析プログラムは、
所定の要素値を参照するために用いられる複数種類の要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記複数種類の要素情報と前記要素値の概念を示す概念情報との対応関係を含む知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する処理と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する処理と、
をコンピュータに実行させる。
所定の要素値を参照するために用いられる複数種類の要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記複数種類の要素情報と前記要素値の概念を示す概念情報との対応関係を含む知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する処理と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する処理と、
をコンピュータに実行させる。
本発明により、複数のソースコードの中から再利用可能な情報を効率的に抽出するための情報処理装置、分析システム、分析方法及び分析プログラムを提供することができる。
以下では、本開示の実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一又は対応する要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
<実施の形態1>
図1は、本実施の形態1にかかる情報処理装置1の構成を示すブロック図である。情報処理装置1は、複数のソースコードの間で実質的に同等の処理が実装された部分を抽出するための分析を行うコンピュータである。尚、情報処理装置1は、2台以上のコンピュータにより構成されていてもよい。ここで、「実質的に同等の処理」とは、論理的には同等の処理(演算式やアルゴリズム)だが、変数名や実装上の具体的な記述が異なるプログラムコードの塊を指すものとする。
図1は、本実施の形態1にかかる情報処理装置1の構成を示すブロック図である。情報処理装置1は、複数のソースコードの間で実質的に同等の処理が実装された部分を抽出するための分析を行うコンピュータである。尚、情報処理装置1は、2台以上のコンピュータにより構成されていてもよい。ここで、「実質的に同等の処理」とは、論理的には同等の処理(演算式やアルゴリズム)だが、変数名や実装上の具体的な記述が異なるプログラムコードの塊を指すものとする。
情報処理装置1は、記憶部11と、付与部12と、抽出部13とを備える。記憶部11は、ハードディスク、フラッシュメモリ等の記憶装置であり、少なくとも知識情報111を記憶する。ここで、知識情報111は、複数種類の要素情報1111から111n(nは2以上の自然数。)と、概念情報1110との対応関係を含む情報である。要素情報1111等のそれぞれは、所定の要素値を参照するために用いられる情報である。要素情報1111等は、例えば、コンピュータプログラムのソースコードに記述される変数名、プロパティ(属性)名、構造体もしくはクラスのメンバ変数名等である。または、要素情報1111等は、配列、リストもしくは行列のインデクス情報、キー文字列、要素番号、要素名もしくはカラム名等である。よって、要素情報1111等は、文字列又は数値の情報である。そして、要素情報1111から111nは、異なる値であるものとする。また、概念情報1110は、要素値の概念を示す文字列又は数値の情報である。概念情報1110は、例えば、要素値の意味を示す文字列である。そして、要素情報1111から111nは、同一の概念情報1110と対応付けられている。例えば、要素情報1111が「Name」、要素情報1112が「顧客名」である場合、これらに対応付けられる概念情報1110が「氏名」となる。知識情報111は、上述した対応関係を含む、知識ベース、単語ネットワーク、辞書情報等の複数の単語の関係が定義された情報、データベースである。知識情報111は、人間の知識に基づき予め作成されたものであるか、所定の学習データに基づき機械学習により生成されたものであってもよい。
付与部12は、複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、知識情報111に基づき、当該グラフ内の各ノードに対応する要素情報1111等から特定される概念情報1110を当該ノードに関連する属性情報として付与する。ここで、複数の「ソースコード」のそれぞれは、要素情報1111等のいずれかが記述されているものとする。また、「グラフ」とは、グラフ理論によるグラフの実装であり、複数のノードである「ノード群」とノード間の連結関係を表す「エッジ群」とにより構成されたものである。また、「ノード」は、1以上の属性情報を有する。特に、本実施形態にかかるグラフは、ソースコードにおける処理構造を表したものである。そして、本実施形態にかかるグラフには、例えば、抽象構文木等が挙げられるが、これに限定されない。また、「当該ノードに関連する属性情報」とは、当該「ノード」自体、当該ノードが属する「親ノード」、又は、当該ノード及び親ノードを含む「ノード群」のいずれかの属性情報を指すものとする。そして、「ノードに対応する要素情報」とは、当該ノード自体もしくは当該ノードが属する親ノード又は当該ノード及び親ノードを含むノード群のいずれかの属性情報として設定された要素情報を指すものとする。
抽出部13は、付与部12により属性情報に概念情報が付与された後の各グラフの間で、付与された概念情報1110に基づき、共通する部分グラフを抽出する。ここで、部分グラフとは、グラフ内の一部のノード又はノード群である。そして、共通する部分グラフとは、ノード群に含まれるノードの集合やノード間の連結関係が共通する部分グラフを示す。
図2は、本実施の形態1にかかる分析方法の流れを示すフローチャートである。まず、付与部12は、複数のソースコードのそれぞれにおける処理構造を表す複数のグラフを入力する。そして、付与部12は、記憶部11内の知識情報111を参照し、各グラフに対して、各ノードに対応する要素情報1111等から特定される概念情報1110を当該ノードに関連する属性情報として付与する(S1)。例えば、付与部12は、知識情報111内の対応関係から、ノードに属性情報として設定された要素情報と対応付けられた概念情報1110を特定する。そして、付与部12は、特定された概念情報1110を、該当するノードに関連する属性情報として付与する。また、付与部12は、複数のグラフのそれぞれについてこのような付与を行う。
次に、抽出部13は、ステップS1により概念情報が付与された各グラフの間で、概念情報1110に基づき、共通する部分グラフを抽出する(S2)。
尚、情報処理装置1は、図示しない構成としてプロセッサ及びメモリを備えるものである。また、記憶部11その他の記憶装置には、本実施の形態にかかる分析方法の処理が実装されたコンピュータプログラムが記憶されている。そして、当該プロセッサは、記憶部11等からコンピュータプログラムを前記メモリへ読み込み、当該コンピュータプログラムを実行する。これにより、前記プロセッサは、付与部12及び抽出部13の機能を実現する。
または、付与部12及び抽出部13は、それぞれが専用のハードウェアで実現されていてもよい。また、各装置の各構成要素の一部又は全部は、汎用または専用の回路(circuitry)、プロセッサ等やこれらの組合せによって実現されもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組合せによって実現されてもよい。
また、情報処理装置1の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
ここで、例えば、様々なデータ解析用のプログラムでは、異なるソースコードの間で実質的に同等の処理が実装されていることが多いと考えられる。例えば、演算式、処理ロジック、アルゴリズム等の処理内容が共通している場合がある。しかしながら、プログラムの開発者が異なっている場合や開発する部門が異なっている場合には、ソースコードレベルでは変数名や具体的な記述が異なること(表記のゆれ)が一般的である。そのため、異なるソースコードから生成されたグラフ同士を単純に比較したとしても、要素情報が異なるため、共通の部分グラフとしては抽出できない。
そこで、本実施の形態では、知識情報111を用いて、要素情報自体が異なるとしても同一の概念情報に対応付けられる場合には、概念情報を手掛かりに共通の部分グラフを抽出する。そして、共通する部分グラフに対応するコードは、実装された頻度が高いことを示すため、再利用される可能性が高い。また、概念情報を手掛かりにグラフ内のノードやエッジの構成を比較することで、共通する部分グラフを効率的かつ高精度に抽出できる。そのため、本実施の形態により、複数のソースコードの中から再利用可能な情報を効率的に抽出することができる。
<実施の形態2>
本実施の形態2は、上述した実施の形態1の応用例である。本実施の形態2にかかる分析システムは、複数のソースコードの間で実質的に同等の処理が実装された部分を抽出するための分析を行うコンピュータシステムである。当該分析システムは、記憶装置と、付与部と、抽出部とを少なくとも備える。ここで、記憶装置と、付与部と、抽出部とは、上述した実施の形態1の記憶部11、付与部12及び抽出部13と同様の機能を有するものであればよい。
本実施の形態2は、上述した実施の形態1の応用例である。本実施の形態2にかかる分析システムは、複数のソースコードの間で実質的に同等の処理が実装された部分を抽出するための分析を行うコンピュータシステムである。当該分析システムは、記憶装置と、付与部と、抽出部とを少なくとも備える。ここで、記憶装置と、付与部と、抽出部とは、上述した実施の形態1の記憶部11、付与部12及び抽出部13と同様の機能を有するものであればよい。
また、前記付与部は、各ノードに含まれる前記ソースコード内の記述を前記要素情報とした場合に、前記知識情報において当該要素情報に対応付けられた前記概念情報を特定し、当該特定した概念情報を当該ノード、当該ノードが属する親ノード、又は、当該ノード及び親ノードを含むノード群のいずれかの属性情報として付与することが望ましい。これにより、より適切な概念情報を付与できる。
また、前記要素情報は、前記要素値を参照するために、所定のソースコード内で記述された属性名であり、前記概念情報は、前記要素値の意味を示す文字列であるものとする。また、前記知識情報は、複数種類の前記属性名と前記意味とを含む学習データに基づいて予め機械学習された、前記属性名と前記意味との間の規則性を示す意味推論モデルであるものとする。この場合、前記付与部は、各ノードに対応する前記ソースコード内の前記属性名を前記意味推論モデルに入力して求められる前記意味を示す文字列を当該ノードに関連する属性情報として付与することが望ましい。これにより、ソースコード内の記述によらず、実質的な処理内容による共通性を抽出することができる。
さらに、前記複数のソースコードのそれぞれは、前記要素情報を属性名として指定可能な構成要素として含む所定のデータ構造を用いて記述されているものとする。この場合、前記複数のソースコードのそれぞれから前記データ構造のデータ型を判別し、当該判別したデータ型を示す型情報を該当するノードに関連する前記属性情報に付与する型判別部をさらに備えるとよい。そして、前記抽出部は、前記型情報をさらに加味して、前記部分グラフを抽出するとよい。これにより、ソースコードが型宣言不要であるプログラム言語で記述されている場合であっても、部分グラフの抽出精度が向上する。
さらに、前記付与部は、前記型判別部により前記型情報が付与されたノードに基づいて前記概念情報を特定し、当該特定した概念情報を当該ノードに関連する属性情報として付与するとよい。これにより、概念情報をより精度良く特定できる。
また、前記抽出部は、前記付与後の各グラフの間で、前記属性情報として付与された複数の前記概念情報の位置関係が共通するノードの集合を前記部分グラフとして抽出することが望ましい。これにより、部分グラフがある程度の大きさとなり、より具体的な処理を再利用することができる。
また、前記抽出部は、前記複数のグラフ内での前記部分グラフの出現回数を計数するとよい。これにより、複数の部分グラフが抽出された場合に、頻出の処理を容易に把握でき、再利用性が高まる。
さらに、前記複数のグラフのそれぞれは、前記複数のソースコードのそれぞれから生成された抽象構文木であることが望ましい。これにより、プログラミング上の形式的、記述的な差異を除外した上で、より有用な部分グラフを抽出できる。
図3は、本実施の形態2にかかる分析システム2の構成を示すブロック図である。分析システム2は、1又は複数台のコンピュータ装置により実現される。分析システム2は、記憶部21と、制御部22と、メモリ23と、IF(InterFace)部24とを備える。
記憶部21は、ハードディスク、フラッシュメモリ等の記憶装置である。記憶部21は、ソースコード2111から211m(mは、2以上の自然数。)、ナレッジ212、対象型リスト213、AST(Abstract Syntax Tree)2141から214m、部分木2151から215L(Lは、2以上の自然数。)、分析プログラム216を記憶する。
ソースコード2111等は、上述した実施形態1にかかる複数のソースコードの一例である。ソースコード2111等のそれぞれは、複数種類の要素情報のいずれかを構成要素とする所定のデータ構造を用いて記述されているものである。但し、少なくとも一部のソースコードの間では、要素情報の種類が異なるものとする。
図4は、本実施の形態2にかかる所定のデータ構造が用いられて記述されたソースコード2111の例を示す図である。ソースコード2111は、データ構造としてDataFrame型が用いられていることを示す。そして、DataFrame型の変数dfのcolumnsには、要素情報として「社員番号」、「年齢」、「体重」、「身長」が定義されていることを示す。また、対象コードC1には、変数dfの「体重」及び「身長」を用いて所定の演算を行い、演算結果を変数dfのcolumns「feat_BMI」に代入する処理が記述されていることを示す。そのため、ソースコード2111の変数dfは、「社員番号」、「年齢」、「体重」、「身長」、「feat_BMI」を構成要素として含むデータ構造といえる。
図5は、本実施の形態2にかかる所定のデータ構造が用いられて記述された他のソースコード2112の例を示す図である。ソースコード2112は、データ構造としてソースコード2111と同じDataFrame型を用いられていることを示す。そして、DataFrame型の変数dfのcolumnsには、要素情報として「userID」、「age」、「bloodtype」、「weight」、「height」が定義され、変数dfはこれらを構成要素としていることを示す。尚、変数dfの変数名は異なるものであっても良いことはもちろんである。また、対象コードC2には、変数dfの「weight」及び「height」を用いて、対象コードC1と同等の演算を行い、演算結果を変数dfのcolumns「bmi」に代入する処理が記述されていることを示す。そのため、ソースコード2112の変数dfは、「userID」、「age」、「bloodtype」、「weight」、「height」、「bmi」を構成要素として含むデータ構造といえる。さらに、対象コードC2には、変数dfの値を用いて機械学習する処理も記述されていることを示す。
このように、対象コードC1とC2とはいずれも、BMIを特徴量として算出する処理を含む。但し、対象コードC1とC2とは一部の処理が実質的に同等であるが、要素情報の文字列が異なっており、また、機械学習の処理自体は対象コードC2にしか存在しない。尚、要素情報2511及び2512以外については、これらと同等の構成であるため図示及び説明を省略する。
図3に戻り説明を続ける。ナレッジ212は、上述した知識情報111の一例であり、単語ネットワークや対応関係等が規定された情報である。ナレッジ212は、DataFrame型の変数に属性名として指定される複数種類のカラム名(要素情報)とその要素値の意味とを含む学習データに基づいて予め機械学習された、属性名と(要素値の)意味との間の規則性を示す意味推論モデルを含むものとする。ここで、「意味」とは、上述した概念情報1110の一例であり、要素値の意味又は概念を示す文字列である。
ここで、ナレッジ212には、要素情報「体重」及び「weight」が概念情報「Weight」に対応付けられているものとする。また、ナレッジ212には、要素情報「身長」及び「height」が概念情報「Height」に対応付けられているものとする。さらに、ナレッジ212には、要素情報「feat_BMI」及び「bmi」が概念情報「BMI」に対応付けられているものとする。
対象型リスト213は、後述する意味推論処理において対象とするデータ型のリストを示す。対象型リスト213は、要素情報を属性名として指定可能な構成要素として含む所定のデータ構造を含む。ここで、所定のデータ構造とは、複数の要素を含むデータ列の集合であり、要素名やインデクスにより特定の要素に対応する要素値を参照可能なものであり、構造体やクラスも含むものとする。例えば、対象型リスト213は、DataFrame型、配列、行列、リスト等である。
AST2141から214mは、上述した「グラフ」の一例である、抽象構文木である。AST2141は、通常の構文木から、言語の意味に関係ない情報を取り除き、意味に関係ある情報のみを取り出した(抽象化した)木構造のデータ構造である。
AST2141は、複数のノード251から25k(kは、2以上の自然数。)を含む。ノード251は、要素情報2511、型情報2512及び意味情報2513の少なくとも一部を属性情報として付与されている。つまり、ノードによりこれらの属性情報のうち一部しか付与されていないものがあるものとする。尚、接続された複数のノードの集合であるノード群に対しても、属性情報が付与される場合があるものとする。要素情報2511は、上述した要素情報1111等の一例であり、対応するソースコードに記述された属性名である。型情報2512は、後述する型推論処理により推論されたデータ型を示す文字列である。意味情報2513は、後述する意味推論処理により推論された「意味」を示す文字列である。尚、ノード252から25kは、ノード251と同等の構成であるため図示及び説明を省略する。また、ASTの数は、m以上であっても構わない。例えば、1つのソースコードから2以上のASTに分割して変換された場合には、ASTの数はmより多くなる。
部分木2151から215Lは、上述した共通する部分グラフの一例であり、後述する部分木抽出処理により抽出された部分木である。分析プログラム216は、本実施の形態にかかる上述した分析方法が少なくとも実装されたコンピュータプログラムである。
メモリ23は、RAM(Random Access Memory)等の揮発性記憶装置であり、制御部22の動作時に一時的に情報を保持するための記憶領域である。IF部24は、分析システム2の外部との入出力を行うインタフェースである。例えば、IF部24は、キーボード、マウス、タッチパネル等の入力デバイス(不図示)を介して、ユーザの操作を受け付け、受け付けた操作内容を制御部22へ出力する。また、IF部24は、制御部22からの指示に応じて、タッチパネル、表示装置、プリンタ等(不図示)へ出力を行う。
制御部22は、CPU(Central Processing Unit)等のプロセッサであり、分析システム2の各構成を制御する。制御部22は、記憶部21から分析プログラム216をメモリ23へ読み込み、分析プログラム216を実行する。これにより、制御部22は、入力部221、AST変換部222、型推論部223、意味推論部224及び部分木抽出部225の機能を実現する。尚、意味推論部224は、上述した付与部12の一例である。また、部分木抽出部225は、上述した抽出部13の一例である。
入力部221は、記憶部21からソースコード2111から211mを入力として取得する。AST変換部222は、入力部221により入力されたソースコード2111から211mのそれぞれをAST2141から214mに変換し、記憶部21に格納する。型推論部223は、型判別部の一例であり、ソースコード2111から211mのそれぞれからデータ構造のデータ型を判別し、当該判別したデータ型を示す型情報を該当するノードの属性情報に付与する。すなわち、型推論部223は、所定の解析処理によりAST2141等の中のノード251における型情報2512を推論し、ノード251に付与して記憶部21に格納する。
意味推論部224は、各ノードに含まれるソースコード内の記述を要素情報とした場合に、ナレッジ212において当該要素情報に対応付けられた意味情報を特定し、当該特定した意味情報を当該ノードに関連する属性情報として付与する。尚、「ノードに関連する」とは、上述した通り、当該ノード、当該ノードが属する親ノード、又は、当該ノード及び親ノードを含むノード群のいずれかに相当する。特に、意味推論部224は、各ノードに対応するソースコード内の属性名をナレッジ212の意味推論モデルに入力して求められる意味情報を当該ノードに関連する属性情報として付与する。また、意味推論部224は、型推論部223により型情報2512が付与されたノード251に基づいて意味情報を特定し、当該特定した意味情報を当該ノードに関連する属性情報として付与する。
部分木抽出部225は、意味推論部224による意味情報の付与後の各ASTの間で、属性情報として付与された複数の意味情報の位置関係が共通するノードの集合を、部分木として抽出する。また、部分木抽出部225は、型推論部223により付与された型情報をさらに加味して、部分木を抽出するとよい。また、部分木抽出部225は、複数のグラフ内での前記部分グラフの出現回数を計数する。
図6は、本実施の形態2にかかる構文木の抽出方法の流れを示すフローチャートである。まず、入力部221は、分析対象のソースコードを入力する(S21)。例えば、入力部221は、記憶部21のソースコード2111から211mのうちASTに変換されていない一つのソースコード(例えば、ソースコード2111)を、記憶部21からメモリ23へロードする。
次に、AST変換部222は、入力されたソースコードをASTに変換する(S22)。ここでは、AST変換部222は、ソースコード2111からAST2141に変換し、AST2141を記憶部21に格納する。例えば、AST変換部222は、Top-down parser等を利用してASTに変換することができる。図7は、本実施の形態2にかかるソースコード2111(図4)から変換された抽象構文木(AST2141)の例を示す図である。
図6に戻り説明を続ける。続いて、型推論部223は、AST内のノードに型情報を付与する(S23)。ここでは、型推論部223は、記憶部21からAST2141をメモリ23にロードし、AST2141の各ノード又はノード群に対して型情報2512を付与し、メモリ23に格納する。例えば、型推論部223は、static type inference技術等を利用してノード群に対して型情報を特定し、特定した型情報を付与する。
図8は、本実施の形態2にかかる抽象構文木(AST2141)に対して型情報が付与された例を示す図である。ここでは、型推論部223がノード群N1に含まれるノードN12からデータ型が「DataFrame」であることを判別し、ノード群N1の属性情報としてデータ型dt1「DataFrame」を付与したことを示す。同様に、型推論部223がノード群N2に含まれるノードN22及びノード群N3に含まれるノードN32からデータ型「DataFrame」と判別し、ノード群N2及びN3のそれぞれの属性情報としてデータ型dt2及びdt3「DataFrame」を付与したことを示す。尚、ノード群N1、N2及びN3の代わりに、ノードN12、N22及びN32の親ノードであるノードN11、N21及びN31の属性情報としてデータ型dt1、dt2及びdt3が付与されたと表現してもよい。つまり、AST内の一部のノードに対して型情報が付与されることとなる。
図6に戻り説明を続ける。続いて、意味推論部224は、AST内のノードに意味情報を付与する(S24)。ここでは、意味推論部224は、ステップS23により更新され、メモリ23に保持されているAST2141について、対象型リスト213を参照して対象の型情報が付与されたノードであるか否かを判定する。そして、対象の型情報が付与されたノードである場合、意味推論部224は、ナレッジ212を参照して当該ノード、親ノード又はノード群に対して意味情報2513を付与し、メモリ23に格納する。例えば、意味推論部224は特許文献3にかかる技術等を利用してノード群に対して意味情報を特定し、特定した意味情報を付与する。
図9は、本実施の形態2にかかる型情報2512が付与された抽象構文木(AST2141)に対して意味情報2513が付与された例を示す図である。ここでは、意味推論部224は、ノード群N1又はノードN11に付与された型情報2512が、対象型リスト213に含まれる「DataFrame」であると判定する。そして、意味推論部224は、ノード群N1に含まれるノードN13の要素情報e1「feat_BMI」を、ナレッジ212の意味推論モデルに入力して意味情報「BMI」を求める。そして、意味推論部224は、ノード群N1又はノードN11の属性情報に意味情報m1「BMI」を設定する。同様に、意味推論部224は、ノード群N2及びN3を対象のデータ型であると判定する。そして、意味推論部224は、ノード群N2に含まれるノードN23の要素情報e2「体重」を、ナレッジ212の意味推論モデルに入力して意味情報「Weight」を求める。そして、意味推論部224は、ノード群N2又はノードN21の属性情報に意味情報m2「Weight」を設定する。また、意味推論部224は、ノード群N3に含まれるノードN33の要素情報e3「身長」を、ナレッジ212の意味推論モデルに入力して意味情報「Height」を求める。そして、意味推論部224は、ノード群N3又はノードN31の属性情報に意味情報m3「Height」を設定する。
図6に戻り説明を続ける。意味推論部224は、メモリ23に保持されたAST2141を記憶部21に保存する(S25)。その後、入力部221は、全ソースコードがAST変換済みか否かを判定する(S26)。ASTに未変換のソースコードが残っている場合、ステップS21からS26を繰り返す。ここでは、ソースコード2111がAST変換済みであり、他のソースコードが未変換であるものとする。
そのため、入力部221は、ASTに変換されていない一つのソースコード(例えば、ソースコード2112)を、記憶部21からメモリ23へロードする(S21)。そして、AST変換部222は、ソースコード2112からAST2142に変換し、AST2142を記憶部21に格納する(S22)。図10は、本実施の形態2にかかる他のソースコード2112(図5)から変換された抽象構文木(AST2142)の例を示す図である。このように、AST2141(図7)及び2142(図10)は、一部が実質的に同様の処理を含むが、要素名の文字列が異なるため、共通する部分木を単純には抽出できないといえる。
続いて、型推論部223は、記憶部21からAST2142をメモリ23にロードし、AST2142の各ノード又はノード群に対して型情報2512を付与し、メモリ23に格納する(S23)。そして、意味推論部224は、上記同様に、AST2142について、意味情報を付与する(S24)。
図11は、本実施の形態2にかかる他のソースコード2112(図5)から変換された抽象構文木(AST2142)(図10)に対して型情報2512及び意味情報2513が付与された例を示す図である。まず、上記と同様の処理により、ノード群N4、N5及びN6の属性情報にデータ型dt4、dt5及びdt6「DataFrame」が付与されていることを示す。また、ノード群N4の属性情報に意味情報m4「BMI」、ノード群N5の属性情報に意味情報m5「Weight」、ノード群N6の属性情報に意味情報m6「Height」が付与されていることを示す。尚、ノード群N4、N5及びN6の代わりに、ノードN41、N51及びN61の属性情報に意味情報m4、m5及びm6がそれぞれ付与されてもよい。
図6に戻り説明を続ける。そして、意味推論部224は、メモリ23に保持されたAST2142を記憶部21に保存する(S25)。その後、入力部221は、全ソースコードがAST変換済みか否かを判定する(S26)。同様に、残りのソースコードについてもステップS21からS25が行われたものとする。その後、全ソースコードがAST変換済みと判定され、ステップS27へ進む。
部分木抽出部225は、AST群の中で頻出する部分木を抽出する(S27)。すなわち、部分木抽出部225は、記憶部21からAST2141から214mをメモリ23へロードし、全ASTの中で共通する部分木を抽出し、その出現回数を計数する。例えば、部分木抽出部225は、非特許文献1にかかる技術を用いて、AST内の意味情報2513を比較して、共通する部分木を抽出する。特に、部分木抽出部225は、複数の意味情報の位置関係が共通するノードの集合を、部分木として抽出する。尚、部分木抽出部225は、複数の部分木を抽出してもよい。
図12は、本実施の形態2にかかる型情報及び意味情報が付与された複数の抽象構文木の間で共通する部分木の例を示す図である。例えば図9のAST2141と図11のAST2142とを比較し、意味情報m1、m2及びm3の組合せと、意味情報m4、m5及びm6の組合せとが共通するため、部分木2151が抽出されたことを示す。特に、この場合、ノード「Assign」の左辺の意味情報m1とm4とが「BMI」で一致し、右辺の意味情報m2及びm3と意味情報m5及びm6とが「Weight」及び「Height」で一致することを示す。さらに、意味情報m3とm6の「Height」がべき乗(Pow)されている点で一致することを示す。
図6に戻り説明を続ける。部分木抽出部225は、抽出した部分木を出力する(S28)。例えば、部分木抽出部225は、抽出した部分木2151から215Lのそれぞれに、出現回数を対応付けて出力する。これにより、ユーザは、複数のソースコードの間で共通する部分グラフについて、出願頻度ごとに把握することができる。そのため、より出現頻度の高い部分グラフを容易に特定でき、再利用の効率がより高まる。
このように、本実施の形態では、複数のソースコードの間で似たような情報を処理している場合に、処理を抽象化し、変数名等の要素情報の記述を要素の意味を示す文字列に置き換えた上で比較を行うため、実質的に同等な処理を精度良く抽出することができる。つまり、記述が異なる変数名(要素情報)を「意味」という概念に包摂することで、記述上の差異を除外することで、大量のソースコードであっても効率的に抽出できる。
<実施の形態3>
本実施の形態3は、上述した実施の形態2の改良例である。本実施の形態3にかかる情報処理装置又は分析システムは、前記抽出された部分グラフから、再利用するための情報、ノウハウに相当する分析ルールを生成する生成部をさらに備えるものである。ここで、生成部は、前記抽出された部分グラフの中に含まれる複数の前記概念情報のうち、一部の概念情報を用いて残りの概念情報を導出できることを示す条件情報を分析ルールとして生成してもよい。また、生成部は、前記抽出された部分グラフの中に含まれる複数の前記概念情報のうち、一部の概念情報を用いて残りの概念情報を導出するための処理コードを分析ルールとして生成してもよい。これにより、部分グラフに対応する個別のソースコードの実装を確認する前に、部分グラフが参考となる条件や、抽象的な表記を用いた処理ロジックを容易に把握することができる。
本実施の形態3は、上述した実施の形態2の改良例である。本実施の形態3にかかる情報処理装置又は分析システムは、前記抽出された部分グラフから、再利用するための情報、ノウハウに相当する分析ルールを生成する生成部をさらに備えるものである。ここで、生成部は、前記抽出された部分グラフの中に含まれる複数の前記概念情報のうち、一部の概念情報を用いて残りの概念情報を導出できることを示す条件情報を分析ルールとして生成してもよい。また、生成部は、前記抽出された部分グラフの中に含まれる複数の前記概念情報のうち、一部の概念情報を用いて残りの概念情報を導出するための処理コードを分析ルールとして生成してもよい。これにより、部分グラフに対応する個別のソースコードの実装を確認する前に、部分グラフが参考となる条件や、抽象的な表記を用いた処理ロジックを容易に把握することができる。
図13は、本実施の形態3にかかる分析システム2aの構成を示すブロック図である。分析システム2aは、上述した分析システム2を改良したものであり、分析プログラム216が分析プログラム216aに置き換わり、記憶部21内に分析ルール217、制御部22a内に生成部226が追加されたものである。それ以外の構成は、図3と同等であるため、詳細な説明を省略する。
分析プログラム216aは、分析プログラム216の機能に加え、後述する生成部226の処理が実装されたコンピュータプログラムである。分析ルール217は、条件情報217a及び処理コード217bを含む。条件情報217aは、部分木抽出部225により抽出された部分木2151等の中に含まれる複数の意味情報2513のうち、一部の意味情報を用いて残りの意味情報を導出できることを示す条件情報である。処理コード217bは、部分木抽出部225により抽出された部分木2151等の中に含まれる複数の意味情報2513のうち、一部の意味情報を用いて残りの意味情報を導出するための処理コードである。
図14は、本実施の形態3にかかる分析ルールの抽出方法の流れを示すフローチャートである。ここで、ステップS21からS27は、上述した図6と同様であるため、説明を省略する。そこで、生成部226は、ステップS27により抽出された部分木に含まれる複数の意味情報を用いて、条件情報217a及び処理コード217b(分析ルール)を生成する(S29)。そして、部分木抽出部225及び生成部226は、抽出した部分木2151等、生成した条件情報217a及び処理コード217bを出力する(S28a)。
図15は、本実施の形態3にかかる抽出された分析ルール217の例を示す図である。条件情報217aは、一部の意味情報である「Weight」及び「Height」の組合せを有する場合に、残りの意味情報である「BMI」を導出できることを示す条件式である。処理コード217bは、一部の意味情報である「Weight」及び「Height」を用いて、残りの意味情報である「BMI」を導出するための演算式のコードを示す。
このように、本実施の形態では、実施の形態1及び2の効果に加えて、部分グラフに含まれる複数の概念情報の関係から導かれる情報をユーザに提示することができる。例えば、解析対象のデータに体重や身長が含まれている場合には、過去の類似の処理コードを参酌することで、BMIという値を導出できることをユーザは知得することができる。また、解析対象のデータに含まれる体重や身長を用いてBMIという値を導出するための処理コードの概要をユーザは把握することができる。これにより、既存のソースコードの再利用をさらに促進することができる。
<その他の実施の形態>
尚、上述の実施の形態では、ハードウェアの構成として説明したが、これに限定されるものではない。本開示は、任意の処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。
尚、上述の実施の形態では、ハードウェアの構成として説明したが、これに限定されるものではない。本開示は、任意の処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、DVD(Digital Versatile Disc)、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
なお、本開示は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。また、本開示は、それぞれの実施の形態を適宜組み合わせて実施されてもよい。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
(付記1)
所定の要素値を参照するために用いられる複数種類の要素情報と、当該要素値の概念を示す概念情報との対応関係を含む知識情報を記憶する記憶部と、
前記要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する付与部と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する抽出部と、
を備える情報処理装置。
(付記2)
前記付与部は、
各ノードに含まれる前記ソースコード内の記述を前記要素情報とした場合に、前記知識情報において当該要素情報に対応付けられた前記概念情報を特定し、当該特定した概念情報を当該ノード、当該ノードが属する親ノード、又は、当該ノード及び親ノードを含むノード群のいずれかの前記属性情報として付与する
付記1に記載の情報処理装置。
(付記3)
前記要素情報は、前記要素値を参照するために、所定のソースコード内で記述された属性名であり、
前記概念情報は、前記要素値の意味を示す文字列であり、
前記知識情報は、複数種類の前記属性名と前記意味とを含む学習データに基づいて予め機械学習された、前記属性名と前記意味との間の規則性を示す意味推論モデルであり、
前記付与部は、各ノードに対応する前記ソースコード内の前記属性名を前記意味推論モデルに入力して求められる前記意味を示す文字列を当該ノードに関連する属性情報として付与する
付記1又は2に記載の情報処理装置。
(付記4)
前記複数のソースコードのそれぞれは、前記要素情報を属性名として指定可能な構成要素として含む所定のデータ構造を用いて記述されており、
前記複数のソースコードのそれぞれから前記データ構造のデータ型を判別し、当該判別したデータ型を示す型情報を該当するノードに関連する前記属性情報に付与する型判別部をさらに備え、
前記抽出部は、前記型情報をさらに加味して、前記部分グラフを抽出する
付記1乃至3のいずれか1項に記載の情報処理装置。
(付記5)
前記付与部は、前記型判別部により前記型情報が付与されたノードに基づいて前記概念情報を特定し、当該特定した概念情報を当該ノードに関連する属性情報として付与する
付記4に記載の情報処理装置。
(付記6)
前記抽出部は、
前記付与後の各グラフの間で、前記属性情報として付与された複数の前記概念情報の位置関係が共通するノードの集合を前記部分グラフとして抽出する
付記1乃至5のいずれか1項に記載の情報処理装置。
(付記7)
前記抽出された部分グラフの中に含まれる複数の前記概念情報のうち、一部の概念情報を用いて残りの概念情報を導出できることを示す条件情報を生成する生成部をさらに備える
付記6に記載の情報処理装置。
(付記8)
前記抽出された部分グラフの中に含まれる複数の前記概念情報のうち、一部の概念情報を用いて残りの概念情報を導出するための処理コードを生成する生成部をさらに備える
付記6に記載の情報処理装置。
(付記9)
前記抽出部は、
前記複数のグラフ内での前記部分グラフの出現回数を計数する、
付記1乃至8のいずれか1項に記載の情報処理装置。
(付記10)
前記複数のグラフのそれぞれは、前記複数のソースコードのそれぞれから生成された抽象構文木である
付記1乃至9のいずれか1項に記載の情報処理装置。
(付記11)
所定の要素値を参照するために用いられる複数種類の要素情報と、当該要素値の概念を示す概念情報との対応関係を含む知識情報を記憶する記憶装置と、
前記要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する付与部と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する抽出部と、
を備える分析システム。
(付記12)
前記付与部は、
各ノードに含まれる前記ソースコード内の記述を前記要素情報とした場合に、前記知識情報において当該要素情報に対応付けられた前記概念情報を特定し、当該特定した概念情報を当該ノード、当該ノードが属する親ノード、又は、当該ノード及び親ノードを含むノード群のいずれかの前記属性情報として付与する
付記11に記載の分析システム。
(付記13)
前記抽出部は、
前記付与後の各グラフの間で、前記属性情報として付与された複数の前記概念情報の位置関係が共通するノードの集合を前記部分グラフとして抽出する
付記11又は12に記載の分析システム。
(付記14)
コンピュータが、
所定の要素値を参照するために用いられる複数種類の要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記複数種類の要素情報と前記要素値の概念を示す概念情報との対応関係を含む知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与し、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する
分析方法。
(付記15)
所定の要素値を参照するために用いられる複数種類の要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記複数種類の要素情報と前記要素値の概念を示す概念情報との対応関係を含む知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する処理と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する処理と、
をコンピュータに実行させる分析プログラムが格納された非一時的なコンピュータ可読媒体。
(付記1)
所定の要素値を参照するために用いられる複数種類の要素情報と、当該要素値の概念を示す概念情報との対応関係を含む知識情報を記憶する記憶部と、
前記要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する付与部と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する抽出部と、
を備える情報処理装置。
(付記2)
前記付与部は、
各ノードに含まれる前記ソースコード内の記述を前記要素情報とした場合に、前記知識情報において当該要素情報に対応付けられた前記概念情報を特定し、当該特定した概念情報を当該ノード、当該ノードが属する親ノード、又は、当該ノード及び親ノードを含むノード群のいずれかの前記属性情報として付与する
付記1に記載の情報処理装置。
(付記3)
前記要素情報は、前記要素値を参照するために、所定のソースコード内で記述された属性名であり、
前記概念情報は、前記要素値の意味を示す文字列であり、
前記知識情報は、複数種類の前記属性名と前記意味とを含む学習データに基づいて予め機械学習された、前記属性名と前記意味との間の規則性を示す意味推論モデルであり、
前記付与部は、各ノードに対応する前記ソースコード内の前記属性名を前記意味推論モデルに入力して求められる前記意味を示す文字列を当該ノードに関連する属性情報として付与する
付記1又は2に記載の情報処理装置。
(付記4)
前記複数のソースコードのそれぞれは、前記要素情報を属性名として指定可能な構成要素として含む所定のデータ構造を用いて記述されており、
前記複数のソースコードのそれぞれから前記データ構造のデータ型を判別し、当該判別したデータ型を示す型情報を該当するノードに関連する前記属性情報に付与する型判別部をさらに備え、
前記抽出部は、前記型情報をさらに加味して、前記部分グラフを抽出する
付記1乃至3のいずれか1項に記載の情報処理装置。
(付記5)
前記付与部は、前記型判別部により前記型情報が付与されたノードに基づいて前記概念情報を特定し、当該特定した概念情報を当該ノードに関連する属性情報として付与する
付記4に記載の情報処理装置。
(付記6)
前記抽出部は、
前記付与後の各グラフの間で、前記属性情報として付与された複数の前記概念情報の位置関係が共通するノードの集合を前記部分グラフとして抽出する
付記1乃至5のいずれか1項に記載の情報処理装置。
(付記7)
前記抽出された部分グラフの中に含まれる複数の前記概念情報のうち、一部の概念情報を用いて残りの概念情報を導出できることを示す条件情報を生成する生成部をさらに備える
付記6に記載の情報処理装置。
(付記8)
前記抽出された部分グラフの中に含まれる複数の前記概念情報のうち、一部の概念情報を用いて残りの概念情報を導出するための処理コードを生成する生成部をさらに備える
付記6に記載の情報処理装置。
(付記9)
前記抽出部は、
前記複数のグラフ内での前記部分グラフの出現回数を計数する、
付記1乃至8のいずれか1項に記載の情報処理装置。
(付記10)
前記複数のグラフのそれぞれは、前記複数のソースコードのそれぞれから生成された抽象構文木である
付記1乃至9のいずれか1項に記載の情報処理装置。
(付記11)
所定の要素値を参照するために用いられる複数種類の要素情報と、当該要素値の概念を示す概念情報との対応関係を含む知識情報を記憶する記憶装置と、
前記要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する付与部と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する抽出部と、
を備える分析システム。
(付記12)
前記付与部は、
各ノードに含まれる前記ソースコード内の記述を前記要素情報とした場合に、前記知識情報において当該要素情報に対応付けられた前記概念情報を特定し、当該特定した概念情報を当該ノード、当該ノードが属する親ノード、又は、当該ノード及び親ノードを含むノード群のいずれかの前記属性情報として付与する
付記11に記載の分析システム。
(付記13)
前記抽出部は、
前記付与後の各グラフの間で、前記属性情報として付与された複数の前記概念情報の位置関係が共通するノードの集合を前記部分グラフとして抽出する
付記11又は12に記載の分析システム。
(付記14)
コンピュータが、
所定の要素値を参照するために用いられる複数種類の要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記複数種類の要素情報と前記要素値の概念を示す概念情報との対応関係を含む知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与し、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する
分析方法。
(付記15)
所定の要素値を参照するために用いられる複数種類の要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記複数種類の要素情報と前記要素値の概念を示す概念情報との対応関係を含む知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する処理と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する処理と、
をコンピュータに実行させる分析プログラムが格納された非一時的なコンピュータ可読媒体。
1 情報処理装置
11 記憶部
111 知識情報
1111 要素情報
111n 要素情報
1110 概念情報
12 付与部
13 抽出部
2 分析システム
2a 分析システム
21 記憶部
2111 ソースコード
2112 ソースコード
211m ソースコード
212 ナレッジ
213 対象型リスト
2141 AST
251 ノード
2511 要素情報
2512 型情報
2513 意味情報
25k ノード
2142 AST
214m AST
2151 部分木
215L 部分木
216 分析プログラム
216a 分析プログラム
217 分析ルール
217a 条件情報
217b 処理コード
22 制御部
22a 制御部
221 入力部
222 AST変換部
223 型推論部
224 意味推論部
225 部分木抽出部
226 生成部
23 メモリ
24 IF部
C1 対象コード
C2 対象コード
N1 ノード群
N11 ノード
N12 ノード
N13 ノード
dt1 データ型
m1 意味情報
e1 要素情報
N2 ノード群
N21 ノード
N22 ノード
N23 ノード
dt2 データ型
m2 意味情報
e2 要素情報
N3 ノード群
N31 ノード
N32 ノード
N33 ノード
dt3 データ型
m3 意味情報
e3 要素情報
N4 ノード群
N41 ノード
dt4 データ型
m4 意味情報
N5 ノード群
N51 ノード
dt5 データ型
m5 意味情報
N6 ノード群
N61 ノード
dt6 データ型
m6 意味情報
11 記憶部
111 知識情報
1111 要素情報
111n 要素情報
1110 概念情報
12 付与部
13 抽出部
2 分析システム
2a 分析システム
21 記憶部
2111 ソースコード
2112 ソースコード
211m ソースコード
212 ナレッジ
213 対象型リスト
2141 AST
251 ノード
2511 要素情報
2512 型情報
2513 意味情報
25k ノード
2142 AST
214m AST
2151 部分木
215L 部分木
216 分析プログラム
216a 分析プログラム
217 分析ルール
217a 条件情報
217b 処理コード
22 制御部
22a 制御部
221 入力部
222 AST変換部
223 型推論部
224 意味推論部
225 部分木抽出部
226 生成部
23 メモリ
24 IF部
C1 対象コード
C2 対象コード
N1 ノード群
N11 ノード
N12 ノード
N13 ノード
dt1 データ型
m1 意味情報
e1 要素情報
N2 ノード群
N21 ノード
N22 ノード
N23 ノード
dt2 データ型
m2 意味情報
e2 要素情報
N3 ノード群
N31 ノード
N32 ノード
N33 ノード
dt3 データ型
m3 意味情報
e3 要素情報
N4 ノード群
N41 ノード
dt4 データ型
m4 意味情報
N5 ノード群
N51 ノード
dt5 データ型
m5 意味情報
N6 ノード群
N61 ノード
dt6 データ型
m6 意味情報
Claims (10)
- 所定の要素値を参照するために用いられる複数種類の要素情報と、当該要素値の概念を示す概念情報との対応関係を含む知識情報を記憶する記憶部と、
前記要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する付与部と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する抽出部と、
を備える情報処理装置。 - 前記付与部は、
各ノードに含まれる前記ソースコード内の記述を前記要素情報とした場合に、前記知識情報において当該要素情報に対応付けられた前記概念情報を特定し、当該特定した概念情報を当該ノード、当該ノードが属する親ノード、又は、当該ノード及び親ノードを含むノード群のいずれかの前記属性情報として付与する
請求項1に記載の情報処理装置。 - 前記要素情報は、前記要素値を参照するために、所定のソースコード内で記述された属性名であり、
前記概念情報は、前記要素値の意味を示す文字列であり、
前記知識情報は、複数種類の前記属性名と前記意味とを含む学習データに基づいて予め機械学習された、前記属性名と前記意味との間の規則性を示す意味推論モデルであり、
前記付与部は、各ノードに対応する前記ソースコード内の前記属性名を前記意味推論モデルに入力して求められる前記意味を示す文字列を当該ノードに関連する属性情報として付与する
請求項1又は2に記載の情報処理装置。 - 前記複数のソースコードのそれぞれは、前記要素情報を属性名として指定可能な構成要素として含む所定のデータ構造を用いて記述されており、
前記複数のソースコードのそれぞれから前記データ構造のデータ型を判別し、当該判別したデータ型を示す型情報を該当するノードに関連する前記属性情報に付与する型判別部をさらに備え、
前記抽出部は、前記型情報をさらに加味して、前記部分グラフを抽出する
請求項1乃至3のいずれか1項に記載の情報処理装置。 - 前記付与部は、前記型判別部により前記型情報が付与されたノードに基づいて前記概念情報を特定し、当該特定した概念情報を当該ノードに関連する属性情報として付与する
請求項4に記載の情報処理装置。 - 前記抽出部は、
前記付与後の各グラフの間で、前記属性情報として付与された複数の前記概念情報の位置関係が共通するノードの集合を前記部分グラフとして抽出する
請求項1乃至5のいずれか1項に記載の情報処理装置。 - 前記抽出された部分グラフの中に含まれる複数の前記概念情報のうち、一部の概念情報を用いて残りの概念情報を導出できることを示す条件情報を生成する生成部をさらに備える
請求項6に記載の情報処理装置。 - 所定の要素値を参照するために用いられる複数種類の要素情報と、当該要素値の概念を示す概念情報との対応関係を含む知識情報を記憶する記憶装置と、
前記要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する付与部と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する抽出部と、
を備える分析システム。 - コンピュータが、
所定の要素値を参照するために用いられる複数種類の要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記複数種類の要素情報と前記要素値の概念を示す概念情報との対応関係を含む知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与し、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する
分析方法。 - 所定の要素値を参照するために用いられる複数種類の要素情報のいずれかが記述された複数のソースコードのそれぞれにおける処理構造を表す複数のグラフのそれぞれに対して、前記複数種類の要素情報と前記要素値の概念を示す概念情報との対応関係を含む知識情報に基づき、当該グラフ内の各ノードに対応する前記要素情報から特定される前記概念情報を当該ノードに関連する属性情報として付与する処理と、
前記付与後の各グラフの間で、前記概念情報に基づき、共通する部分グラフを抽出する処理と、
をコンピュータに実行させる分析プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2018/032670 WO2020049622A1 (ja) | 2018-09-03 | 2018-09-03 | 情報処理装置、分析システム、分析方法及び分析プログラムが格納された非一時的なコンピュータ可読媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2020049622A1 JPWO2020049622A1 (ja) | 2021-08-12 |
JP7014301B2 true JP7014301B2 (ja) | 2022-02-01 |
Family
ID=69721755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020540889A Active JP7014301B2 (ja) | 2018-09-03 | 2018-09-03 | 情報処理装置、分析システム、分析方法及び分析プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11416246B2 (ja) |
JP (1) | JP7014301B2 (ja) |
WO (1) | WO2020049622A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11947677B2 (en) * | 2020-09-03 | 2024-04-02 | Oracle International Corporation | Dynamic taint tracking in abstract syntax tree interpreters |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006018693A (ja) | 2004-07-02 | 2006-01-19 | Fujitsu Ltd | 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法 |
JP2011096082A (ja) | 2009-10-30 | 2011-05-12 | Hitachi Ltd | プログラム解析方法、プログラム解析プログラムおよびプログラム解析装置 |
US20170308380A1 (en) | 2016-04-26 | 2017-10-26 | Korea University Research And Business Foundation | Apparatus and method for detecting code cloning of software |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4363764A (en) | 1980-12-30 | 1982-12-14 | Union Carbide Corporation | Preparation of rhodium complex compounds |
JP4039488B2 (ja) | 2003-08-18 | 2008-01-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 多頻度パターン抽出装置、多頻度パターン抽出方法、及びそのプログラムと記録媒体 |
JP2007249264A (ja) | 2006-03-13 | 2007-09-27 | Fujitsu Ltd | プログラム解析プログラム、プログラム解析方法およびプログラム解析装置 |
US9043921B2 (en) * | 2013-04-12 | 2015-05-26 | Fujitsu Limited | Determining software metrics |
KR101568224B1 (ko) * | 2014-12-26 | 2015-11-11 | 고려대학교 산학협력단 | 소프트웨어 취약점 분석방법 및 분석장치 |
US11062213B2 (en) | 2016-08-05 | 2021-07-13 | Nec Corporation | Table-meaning estimation system, method, and program |
CA3038797A1 (en) * | 2016-09-30 | 2018-04-05 | Rovi Guides, Inc. | Systems and methods for correcting errors in caption text |
US10878309B2 (en) * | 2017-01-03 | 2020-12-29 | International Business Machines Corporation | Determining context-aware distances using deep neural networks |
-
2018
- 2018-09-03 JP JP2020540889A patent/JP7014301B2/ja active Active
- 2018-09-03 US US17/271,913 patent/US11416246B2/en active Active
- 2018-09-03 WO PCT/JP2018/032670 patent/WO2020049622A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006018693A (ja) | 2004-07-02 | 2006-01-19 | Fujitsu Ltd | 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法 |
JP2011096082A (ja) | 2009-10-30 | 2011-05-12 | Hitachi Ltd | プログラム解析方法、プログラム解析プログラムおよびプログラム解析装置 |
US20170308380A1 (en) | 2016-04-26 | 2017-10-26 | Korea University Research And Business Foundation | Apparatus and method for detecting code cloning of software |
Also Published As
Publication number | Publication date |
---|---|
US20210318867A1 (en) | 2021-10-14 |
WO2020049622A1 (ja) | 2020-03-12 |
US11416246B2 (en) | 2022-08-16 |
JPWO2020049622A1 (ja) | 2021-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10705809B2 (en) | Pruning engine | |
Chang et al. | TokensRegex: Defining cascaded regular expressions over tokens | |
US9626353B2 (en) | Arc filtering in a syntactic graph | |
Harris et al. | Glast: Learning formal grammars to translate natural language specifications into hardware assertions | |
US20180039890A1 (en) | Adaptive knowledge base construction method and system | |
JP6309795B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
CN109857458B (zh) | 基于ANTLR的AltaRica 3.0的扁平化的转化方法 | |
US11093223B2 (en) | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods | |
CN114077534A (zh) | 测试用例生成方法、装置和计算机可读存储介质 | |
CN111723192B (zh) | 代码推荐方法和装置 | |
JP2021060800A (ja) | データ抽出方法、及びデータ抽出装置 | |
Barducci et al. | XQCAT: eXtra Quark Combined Analysis Tool | |
Ďuračík et al. | Searching source code fragments using incremental clustering | |
JP7014301B2 (ja) | 情報処理装置、分析システム、分析方法及び分析プログラム | |
Zhu et al. | A neural network architecture for program understanding inspired by human behaviors | |
KR20230065017A (ko) | 인공지능 분석 기반 프로그램 소스코드의 요약문 생성 장치 및 방법 | |
JP6263420B2 (ja) | テンプレート生成装置及びテンプレート生成プログラム | |
JP7172986B2 (ja) | 構成管理装置、構成管理方法および構成管理プログラム | |
KR102206742B1 (ko) | 자연언어 텍스트의 어휘 지식 그래프 표현 방법 및 장치 | |
JP7343820B2 (ja) | オントロジを用いた文章データ解析情報生成装置、文章データ解析情報生成方法、および文章データ解析情報生成プログラム | |
JP5447054B2 (ja) | データ生成方法,データ生成装置,およびデータ生成プログラム | |
JPWO2018116522A1 (ja) | 判定装置、判定方法及び判定プログラム | |
KR20220135655A (ko) | 서비스 시나리오 기반 소스 코드 자동 생성 방법 | |
Zafar et al. | Classification of reusable components based on clustering | |
JP2016051367A (ja) | データ解析装置、データ解析方法、および、プログラム。 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210217 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210217 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20211221 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220103 |