JP4560608B2 - 類似度評価プログラム、類似度評価装置及び類似度評価方法 - Google Patents

類似度評価プログラム、類似度評価装置及び類似度評価方法 Download PDF

Info

Publication number
JP4560608B2
JP4560608B2 JP2006219079A JP2006219079A JP4560608B2 JP 4560608 B2 JP4560608 B2 JP 4560608B2 JP 2006219079 A JP2006219079 A JP 2006219079A JP 2006219079 A JP2006219079 A JP 2006219079A JP 4560608 B2 JP4560608 B2 JP 4560608B2
Authority
JP
Japan
Prior art keywords
source code
similarity
target
codes
correlation matrix
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.)
Expired - Fee Related
Application number
JP2006219079A
Other languages
English (en)
Other versions
JP2008046695A (ja
Inventor
元 村尾
麻子 大野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kobe University NUC
Original Assignee
Kobe University NUC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kobe University NUC filed Critical Kobe University NUC
Priority to JP2006219079A priority Critical patent/JP4560608B2/ja
Publication of JP2008046695A publication Critical patent/JP2008046695A/ja
Application granted granted Critical
Publication of JP4560608B2 publication Critical patent/JP4560608B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

本発明は、複数の一次元データ列間の類似度評価プログラム、類似度評価装置及び類似度評価方法に関する。
コードクローンとは、ソースコード中の同一又は極めて類似したコード断片を指す。コードクローンは、バグの温床になる虞があり、ソフトウェアの修正を困難にするため、ソフトウェア管理・保守における大きな問題となっている。従って、ソフトウェアの開発やその管理においては、新たにコードクローンを作らない工夫が必要であり、また、既存のコードクローンを検出し、除去(リファクタリング)する取り組みが重要となる。
また、近年では、ソフトウェア開発現場において、プログラムソース資源の再利用による開発効率向上を目的とした、分類・検索システムの需要が高まっている。このようなシステムの実現のために、コードクローンを検出する様々なコードクローン検出ツールが提案されている。
上記のような、既存のコードクローン検出ツールの中でも、最も盛んに研究開発が行われているコードクローン検出ツールが、非特許文献1に示されるCCFinderである。コードクローンは、主にソースコードを再利用する際に生じるが、元のソースコードがそのまま使用されることは少なく、通常は、変数名・関数名の変更や構造の変更等の改変が行われる。従って、単に文字列を比較するのみではコードクローンの発見に十分な効果が得られない。しかし、上記のCCfinderは、入力されたソースコードに対し、まず字句解析処理を行い、トークン列化し、規定の文字列に変換する標準化処理を行う。この処理により得られた2つのトークン列は表形式で表現され、文字列ベースによるマッチングが行われるので、上記CCfinderは、ソースコードに変数名・関数名の変更等があってもソースコードの類似度を検出することができる。
また、非特許文献2に示されるように、Baxterらが開発したCloneDRは、抽象構文木(Abstract Syntax Tree:AST)の部分木の比較によりソースコードの類似度を検出するものである。このASTとは、プログラムソースを、そのまま木構造に変換した構文木(Parse Tree)から、コンパイルに不要なトークンを取り除いたものである。この手法は、入力ソースコードから形成されたASTの各ノードのハッシュ値が同じであるなら、それらはコードクローンであると判断するものである。
更に別の角度からのアプローチとして、意味的構造を用いたソースコードの類似度検出方法がある。例えば、非特許文献3に示されるように、Marcusらは、ソースコード中のコメントや識別子等のテキストを調べ、意味的・構造的情報に基づいたクラスタリングを行っている。ソースコード断片から抽出した意味的・構造的情報に、潜在的意味解析(Latent Semantic Analysis : LSA)を適用して得られたプロファイルを用い、グラフ理論的なアプローチにより、部品を意味的に類似したクラスタにまとめるという手法を、MOSAICというツールにより実現している。この手法では、類似した構造や機能をもつ関数の識別ができないため、他の構造情報ベースのコードクローン検出手法と統合する必要がある。
CCFinder Official Site.インターネット<URL : http://ccfinder.net/ccfinderx.html.> I.D. Baxter, A. Yahin, L. Moura, M. Sant’Anna, and L. Bier. On finding duplication and near-duplication in large software systems.In IEEE International Conference on Softwave Maintenance, pp. 368-377, 1995 Andrian Marcus and Jonathan I. Maletic. Identification of High-Level Concept Clones in Source Code.In 16th IEEE International Conference on Softwave Maintenance, pp. 107-115, 2001
しかしながら、上記の各非特許文献に記載の類似度検出ツール等は、夫々に長所及び短所があり、コードクローンの定義自体も微妙に異なる為、特に他のツールよりも優れているものはなかった。また、近年では、大学のプログラミング授業等において、受講生に課題として特定のプログラムを作成させることが広く行われているが、指導員等がこれらを採点したり、プログラムの盗用がないかを発見する上で、プログラムソースコードの類似度を検出する技術が必要となる。しかし、上記のソースコード類似度検出ツールは、大学のプログラミング授業等における採点支援ツールとして、その要求を十分に満たすものとは言えなかった。
更に、上記のソースコード類似度検出ツールは、主に、類似度の算出対象となる全てのソースコードの夫々を直接比較するため、比較対象のソースコードが多数あるときには、それらの類似度算出における計算量が膨大となり、ソースコード間の類似度を算出するのに多くの時間を要した。
本発明は、上記課題を解決するものであって、複数の一次元データ列(例えば、プログラムソースコード)に共通する有効な類似度尺度を用いることにより、それら一次元データの類似度算出時間を削減し、また、多対一のソースコードの類似度の評価を正確かつ短時間で行うことを可能とする類似度評価検出プログラム、類似度評価装置及び類似度評価方法を提供するものである。
上記課題を解決するため、請求項1に記載の発明は、所定のプログラム言語で作成された複数のソースコード間の類似度を算出して評価するものであって、コンピュータの記憶装置に記憶されたソースコード群の中から、ユーザにより任意に選択された複数のソースコードを参照ソースコードとして登録し、該参照ソースコードを標準化して、参照ソースコードトークン列を作成する参照ソースコード登録手順と、前記ソースコード群の中から、類似度の算出対象となる少なくとも2つ以上のソースコードを対象ソースコードとして登録し、該対象ソースコードを標準化して、夫々の対象ソースコードについて対象ソースコードトークン列を作成する対象ソースコード登録手順と、前記参照ソースコードトークン列及び対象ソースコードトークン列から、前記参照ソースコードと対象ソースコードとの相関マトリックスを夫々作成する相関マトリックス作成手順と、前記作成された夫々の相関マトリックスを二値化された画像とみなして、各相関マトリックスにおいて複数のテクスチャ特徴量を算出するテクスチャ特徴量算出手順と、前記複数のテクスチャ特徴量を参照ベクトルとし、夫々の相関マトリックスに対応する各参照ベクトル間の距離を算出することにより、前記対象ソースコードの類似度を算出する類似度算出手順と、を更にコンピュータに実行させるものである。
請求項に記載の発明は、請求項1に記載の類似度評価プログラムにおいて、前記類似度算出手順の結果を、前記コンピュータと接続された画像表示装置に一覧表示する結果表示手順を更にコンピュータに実行させるものである。
請求項に記載の発明は、所定のプログラム言語で作成された複数のソースコード間の類似度を算出して評価する類似度評価装置であって、前記複数のソースコードを記憶する記憶手段と、前記記憶手段に記憶されたソースコード群の中から、ユーザにより任意に選択された複数のソースコードを参照ソースコードとして登録し、該参照ソースコードを標準化して、参照ソースコードトークン列を作成する参照ソースコード登録手段と、前記記憶手段に記憶されたソースコード群の中から、類似度の算出対象となる少なくとも2つ以上のソースコードを対象ソースコードとして登録し、該対象ソースコードを標準化して、夫々の対象ソースコードについて対象ソースコードトークン列を作成する対象ソースコード登録手段と、前記参照ソースコード登録手段により作成された参照ソースコードトークン列と前記対象ソースコード登録手段により作成された対象ソースコードトークン列から、前記参照ソースコードと対象ソースコードとの相関マトリックスを夫々作成する相関マトリックス作成手段と、前記相関マトリックス作成手段により作成された夫々の相関マトリックスを二値化された画像とみなして、各相関マトリックスにおいて複数のテクスチャ特徴量を算出するテクスチャ特徴量算出手段と、前記テクスチャ特徴量算出手段により算出された複数のテクスチャ特徴量を参照ベクトルとし、夫々の相関マトリックスに対応する各参照ベクトル間の距離を算出することにより、前記対象ソースコードの類似度を算出する類似度算出手段と、を備えたものである。
請求項に記載の発明は、請求項に記載の類似度評価装置において、前記類似度算出手段の結果を一覧表示する結果表示手段を更に備えたものである。
請求項に記載の発明は、コンピュータによって、所定のプログラム言語で作成された複数のソースコード間の類似度を算出して評価する類似度評価方法であって、前記コンピュータが、該コンピュータの記憶装置に記憶されたソースコード群の中から、ユーザにより任意に選択された複数のソースコードを参照ソースコードとして登録し、該参照ソースコードを標準化して、参照ソースコードトークン列を作成するステップと、前記コンピュータが、前記ソースコード群の中から、類似度の算出対象となる少なくとも2つ以上のソースコードを対象ソースコードとして登録し、該対象ソースコードを標準化して、夫々の対象ソースコードについて対象ソースコードトークン列を作成するステップと、前記コンピュータが、前記参照ソースコードトークン列と対象ソースコードトークン列から、前記参照ソースコードと対象ソースコードとの相関マトリックスを夫々作成するステップと、前記コンピュータが、前記作成された夫々の相関マトリックスを二値化された画像とみなして、各相関マトリックスにおいて複数のテクスチャ特徴量算出するステップと、前記コンピュータが、前記複数のテクスチャ特徴量を参照ベクトルとし、夫々の相関マトリックスに対応する各参照ベクトル間の距離を算出することにより、前記対象ソースコードの類似度を算出するステップと、を含むものである。
請求項に記載の発明は、請求項に記載の類似度評価方法において、前記コンピュータが、前記算出された少なくとも2つ以上の対象データ列の類似度を、前記コンピュータと接続された画像表示装置に一覧表示するステップを更に含むものである。
本発明によれば、対比されるソースコードの夫々についての参照ベクトルを用いて類似度が算出されるので、各ソースコードの各々のテキストデータを直接比較するよりも、はるかに高速に類似度の算出が行われるようになる。
また、対象ソースコード及び参照ソースコードから作成された参照ベクトルは、参照ソースコード又は対象ソースコードが変更されない限り、何度も繰り返し用いることができるので、多対一の対象ソースコード間の類似度の算出及び評価を極めて高速に行うことが可能となる。
また、ソースコードは類似度の算出にあたって標準化されるため、一見類似していないように見えるソースコード間の類似度も正確に算出することができ、ソースコード間の類似度を的確に評価することが可能となる。
以下に、本発明の一実施形態に係る類似度評価プログラムを用いた類似度評価装置について、図1を参照して説明する。類似度評価装置1は、ソースコード等の複数の一次元データ列を記憶する記憶手段であるハードディスク等の記憶部2(請求項における記憶装置)と、ユーザーインタフェース部3と、類似度評価装置1全体を制御する制御部4と、を備える。この記憶部2には、本実施形態に係る類似度評価プログラム5が記憶されている。
上記の類似度評価プログラム5は、制御部4を、参照ソースコード登録手段である参照ソースコード登録部11(又は参照データ登録手段である参照データ登録部)、対象ソースコード登録手段である対象ソースコード登録部12(又は対象データ登録手段である対象データ登録部)、相関マトリックス作成手段である相関マトリックス作成部13、テクスチャ特徴量算出手段であるテクスチャ特徴量算出部14、及び類似度算出手段である類似度算出部15として機能させる。
また、類似度評価装置1には、結果表示手段である結果表示部6(請求項における画像表示装置)が接続される。この結果表示部6の画像上には、上記の類似度算出部15において算出された対象ソースコード(対象データ列)の類似度が表示される。
次に、本実施形態の類似度評価プログラム5の概要について、図2及び図3を参照して説明する。類似度評価プログラム5は、複数の一次元データ列間の類似度を算出して評価するものであるが、本実施形態においては、プログラムソースコード(以下、ソースコードという)の類似度を評価する場合について説明する。
上記の制御部4は、類似度評価プログラム5に基づいて、以下の手順をコンピュータに実行させる。まず、類似度評価プログラム5と同じく、上記の記憶部2に記憶されたソースコード群の中から、ユーザが複数のソースコードを参照ソースコードとして選出すると、制御部4は、これらの参照ソースコードに対して後述する標準化の処理を行い、参照ソースコードトークン列を作成する(S1の参照ソースコード登録手順)。なお、ソースコードに限らず、複数の一次元データ列間の類似度を算出して評価する場合も、制御部4は、記憶部2に記憶された一次元データ列群の中から、ユーザにより任意に選択された複数の一次元データ列を参照データとして登録し、データ列の特徴に応じた処理を行う(請求項における参照データ登録手順に相当)。
次に、ユーザが、上記の記憶部2に記憶されたソースコードの中から、類似度の算出対象となる少なくとも2つ以上のソースコードを対象ソースコードとして抽出すると、制御部4は、上記参照ソースコードと同様に、夫々の対象ソースコードについて対象ソースコードトークン列を作成する(S2の対象ソースコード登録手順)。ここで、多対一のソースコードの類似度の算出するとき、すなわち、ある1つの対象ソースコードに対する複数の対象ソースコードの類似度を夫々に算出するとき、上記の1つの対象ソースコードを対象ソースコードβとし、複数の対象ソースコードを対象ソースコードαとする。また、以下の説明において、単に対象ソースコードというときは、上記の対象ソースコードα及び対象ソースコードβの両方をいうものとする。なお、複数の一次元データ列間の類似度を算出して評価する場合も、上記の参照データ登録手順と同様である。
続いて、制御部4は、上記の参照ソースコードトークン列及び対象ソースコードトークン列から、上記の参照ソースコードと各対象ソースコードとの相関マトリックスを夫々作成する(S3の相関マトリックス作成手順)。
次に、制御部4は、作成された2つの相関マトリックスを二値化された画像とみなして、夫々の相関マトリックスについてテクスチャ特徴量を算出する(S4のテクスチャ特徴量算出手順)。
そして、制御部4は、算出されたテクスチャ特徴量を参照ベクトルとし、夫々の相関マトリックスに対応する各参照ベクトル間の距離を算出することにより、上記の対象ソースコード間の類似度を算出する(S5の類似度算出手順)。また、上記の類似度算出手順S5で得られた結果は、結果表示部6に一覧表示される(S7の結果表示手順)。
上記の参照ソースコード登録手順S1、対象ソースコード登録手順S2、相関マトリックス作成手順S3、テクスチャ特徴量算出手順S4及び類似度算出手順S5の各手順は、図4に示されるSourceCodeNormalizer、CodeCloneFinder、TexturalFeatures及びSourceCodeSimilarityの4つのクラスライブラリにより構成されるプログラム(SourceCodeSimilarityCalculating)に基づいて制御部4が実行する。ここで、図4に示されるSimpleSourceCodeSearchは、上記のクラスライブラリを用いるためのCUIアプリケーションである。例えば、ユーザが1つのソースコードを入力すると、制御部4は、このソースコードと予め登録されていた参照ソースコードとから参照ベクトルを算出し、別に登録されていた複数の対象ソースコードの参照ベクトルとの距離を夫々算出し、その近い順に対象ソースコードをソートして、その結果を結果表示部6に一覧表示する。以下に、上記の各手順と夫々のクラスライブラリについて簡単な解説を行う。
まず、上記の参照ソースコード登録手順S1について説明する。まず、ユーザはソースコードの類似度の算出に先立ち、記憶部2に記憶されたソースコード群Sより、m個の参照ソースコードs1,s2,・・・,smを選出する。これら選出された参照ソースコードSi'は下記の一般式(1)により表される。なお、選出方法は任意であるが、類似度を比較するソースコードの特徴をより良く反映するため、ユーザは互いに相関の低い参照ソースコードを選出することが望ましい。
次に、制御部4は、選出された参照ソースコードSi'の標準化を行う。ここでいう標準化とは、ソースコードから、類似度の比較において、コメント部のような直接的には関係のない情報を除去し、トークン単位で分割し、また、それらの定数及び変数を置換する処理をいう。この処理は、表1に示されるように、SourceCode、CommentRemover、ConstantRemover及びVariableTableの4つのクラスから構成されるSourceCodeNormalizerライブラリに基づいて制御部4が実行する。上記のSourceCodeは、ソースコードファイルを読み込み、CommentRemover、ConstantRemover及びVariableTableクラスにより標準化されたトークン列を受け取り、これを記録装置に保持させる機能を持つクラスである。また、CommentRemoverは、コメント文を削除するクラスであり、このConstantRemoverは、「“」と「”」で囲まれた文字列や、定数を規定の文字列に変換する。VariableTableは、変数の置換を担当するクラスである。これらのクラスが用いられることにより、制御部4は、ソースコード中のコメントを除去し、定数を所定の決められたトークンへ置換し又は変数名をその型を表すトークンへ置換する処理を行う。
上記手順により標準化されるソースコード及び標準化されたトークン列の具体例を図5(a)(b)に示す。図5(a)に示される元のソースコード(Source Code 1及びSource Code 2)を標準化したものが、図5(b)に示されるトークン列(Normalized Source Code 1及びNormalized Source Code 2)である。一見して相互の類似度が低く見えるようなソースコード間であっても、ソースコードの標準化により、それらの類似度を的確に算出することが可能となる。
そして、参照ソースコードを標準化して得られた参照ソースコードトークン列T'iは、下記の一般式(2)により表される。ここで、nは参照ソースコードトークン列T'iを構成するトークンの総数を示している。
また、対象ソースコードの登録手順S2も、参照ソースコード登録手順S1と同様に、上記のSourceCodeNormalizerライブラリに基づいて制御部4が実行する。まず、類似度の算出対象であるm個のソースコードs1,s2,・・・,smが、上記のソースコード群Sから抽出され、上記と同様の手順により、夫々対象ソースコードトークン列T1,T2が作成される。なお、対象ソースコードは、必ずしも2つに限定されるものではない。ここで、作成される対象ソースコードトークン列Tjは、下記の数式(3)のように表される。なお、nは対象ソースコードトークン列Tjを構成する総トークン数を示している。
次に、相関マトリックス作成手順S3について説明する。本手順では、CCFinderで用いられている表形式の表現が採用される。この相関マトリックス作成手順を制御部4に実行させるプログラムがCodeCloneFinderライブラリである。このCodeCloneFinderライブラリは、単一のCodeCloneMatrixクラスで構成される。また、CodeCloneMatrixクラスは、2つのソースコードクラスのインスタンスを受け取り、相関マトリックスを作成、保持する。相関マトリックスは、目的に応じてbitmapプロパティを通じてビットマップ画像の形で、又はbyteArrayプロパティを通じて2次元byte型配列の形で作成される。
上記のCodeCloneMatrixクラスにより作成された相関マトリックスは、図6に示されるように、2つのソースファイルから夫々作成されたトークン列を縦及び横軸に並べた共起マトリックスである。なお、図6におけるA,B,C,Dは、夫々標準化されたトークンを表している。
相関マトリックスの各セルには、縦と横の要素が一致すれば“1”が出力され、一致しなければ“0”が出力される。そして、マトリックス上に表現された“1”と“0”の分布から2つのトークン列間の類似度が算出される。仮に、2つのソースコードが同一である場合には、作成されたマトリックスにおいて、左上から右下にかけて、対角線上に“1”が表示されることになる。また、この直線の左右の領域の“1”の分布は線対称となる。
この様なマトリックスは、例えば、2つの対象ソースコードs1,s2が抽出されているとき、対象ソースコードs1に対応する対象ソースコードトークン列T1と参照ソースコードトークン列T'1,T'2,・・・,T'mの夫々について、また同様に、対象ソースコードs2に対応する対象ソースコードトークンT2と参照ソースコードトークン列T'1,T'2,・・・,T'mの夫々について作成される。
続いて、テクスチャ特徴量算出手順S4について説明する。ここで、テクスチャ特徴量とは、画像の特徴を定量化したものをいう。テクスチャ特徴量の算出方法は、一般に統計的特徴の抽出、局所的幾何学的特徴による解析、モデル当てはめによる解析、構造的解析の4つの方法に大別される。これらのうち、統計的なテクスチャ特徴量の算出法には、濃度ヒストグラム、同時生起行列、差分統計計算量、ランレングス行列、パワースペクトルを用いるもの等がある。
上記の各方法によって得られる統計量は夫々に異なるが、本実施形態においては、同時生起行列を用いてテクスチャ特徴量を算出するものとし、算出されたテクスチャ特徴量を参照ベクトルとする。ここで、仮に、4つの参照ソースコードを用い、5種類のテクスチャ特徴量が算出されたとすると、類似度を求めたいソースコードの夫々に対して、20次元の参照ベクトルが算出されることになる。
上記の同時生起行列は、画像領域上において、δだけ離れたピクセル間の階調の変化の生起確率を成分とした行列である。上記のδは、図7に示されるように、距離と角度を用いてδ=(d,θ)として又はx軸方向とy軸方向の変位を用いてδ=(dx,dy)として表される。
ここでは、横方向Nx画素,縦方向Ny画素の画像について考える。画像に含まれる画素の階調が、0からNg−1までの離散的な値をとるとき、同時生起行列Pδは、画像の大きさに依らずNg階の正方行列となる。その要素Pδ(i,j)(i,j=0,1,2,・・・,Ng−1)は、階調iの点から一定の変位δ=(d,θ)だけ離れた点の階調がjである確率であり、数式(4)の様に表される。なお、上記のg,i及びjは何れも任意の数である。また、cδ(i,j)は、階調iの点から一定の変位δだけ離れた点の階調がjである組の数であり、Rδは、δだけ離れた点の組の総数である。
また、Rδは、δ=(dx,dy)のとき、数式(5)のように表される。
図8は、Nx=4,Ny=4の画像に対する、d=1の場合の同時生起行列を示す。なお、δ=(d,0°)と(d,180°),(d,45°)と(d,225°),(d,90°)と(d,270°),また(d,135°)と(d,315°)は同じ同時生起行列となる。
Haralickらは、同時生起行列を用いて14種類のテクスチャ特徴量を定義している。ここでは、上記14種類のうち、代表的な5種類のテクスチャ特徴量を以下に紹介する。
(i)ASM(Angular Second Moment):
ASMは、テクスチャの一様性を示し、数式(6)により算出される。なお、Pδ(i,j)が大きな値を持つとASMは大きくなる。つまり、テクスチャの一様性が高いと判断できる。
(ii)CON(Contrast):
CONは、濃度変化の強さを示し、数式(7)により算出される。画素対の濃度差|i.j|の画素全体についての平均であり、濃度差の高い画素対が多いほど値が大きくなる。
(iii)COR(Correlation):
CORは、相関の強さを示し、数式(8)により算出される。この値は、画像内に特定のパターンが現れる場合に大きくなる。なお、μxy及びσxyは夫々、数式(9)に示されるPx(j),Py(i)の平均と標準偏差である。
(iv)IDM(Inverse Difference Moment):
IDMは、濃度変化の一様性を示し、数式(11)により算出される。これは画像が局所的な変化に乏しい場合に大きな値を持つ。
(v)ENT(Entropy):
ENTは、画像の複雑さの尺度であると同時に情報量も表しており、数式(12)により算出される。これはPδ(i,j)の値が均等に割り当てられている程大きくなる。つまり、ENTが大きい場合には、画像中に多くの階調が満遍なく利用されていることを示す。
本実施形態においては、上記の相関マトリックス作成手順S3で作成されたマトリックスを二値化された画像とみなして、テクスチャ特徴量が算出される。ここでは、特に対角方向の要素の相関が重要であるので、例えば、ユーザが、m個の参照ソースコードを選出し、2つの対象ソースコードs1,s2を抽出したとき、制御部4は、これらの対象ソースコードの夫々について、斜め135度、すなわちδ=(d,135°)におけるテクスチャ特徴量を、m個の参照ソースコードに対して求める。これにより、対象ソースコードs1に対応する参照ベクトルr1及び対象ソースコードs2に対応する参照ベクトルr2が作成される。上記の14種類のテクスチャ特徴量のうち、k種類の特徴量が算出されたとき、テクスチャ特徴量rは、一般式(13)で表され、対象ソースコードs1,s2の夫々に対するテクスチャ特徴量r1,r2の大きさ(要素数)は何れもkmとなる。
上記のテクスチャ特徴量算出手順S4は、TexturalFeaturesライブラリに基づいて制御部4が実行する。このTexturalFeaturesライブラリは、表2に示されるように、CoOccurrenceMatrix、BitmapCoMatrix、ByteArrayCoMatrix及びBasicFeaturesの4つのクラスから構成される。BitmapCoMatrix及びByteArrayCoMatrixは、抽象クラスCoOccurrenceMatrixを共通の親とし、夫々ビットマップ画像及び2次元byte配列から相関マトリックスを作成し、保持するクラスである。一般に、画像を操作するよりもbyte配列を操作する方が高速であり、CodeCloneFinderで作成された相関マトリックスを画像として表示する必要がない場合は、2次元byte配列の利用が推奨される。上記のBasicFeaturesは、CoOccurenceMatrixのインスタンスとδを指定して、対応するテクスチャ特徴量を算出、保持するクラスである。
以下に、参照ベクトルを用いた類似度算出手順S5について説明する。2つの対象ソースコードs1,s2間の類似度Rs1,s2は、ソースコードs1の参照ベクトルr1及びソースコードs2の参照ベクトルr2を用いて、数式(14)により算出される。なお、ここで、wj(0<wj <1.0, j=1,・・・,k)は、j番目のテクスチャ特徴量に対する重みである。
上記の類似度算出手順S5を制御部4に実行させるSourceCodeSimilarityライブラリは、単一のReferenceVectorクラスから構成される。このReferenceVectorクラスは、SourceCodeクラスと対応する参照ベクトルを保持するクラスである。互いの参照ベクトル間の距離を算出するdistanceTo()メソッドを有し、間接的にソースコード間の類似度を算出するのに用いられる。
以下に、本実施形態に係る類似度評価プログラム5を用いた類似度評価装置1によるソースプログラム類似度評価方法について、図9乃至図12を参照して説明する。本実施形態において、類似度の算出対象となるソースプログラムの使用言語はjava J2SE 5.0とし、また、開発環境はEclipse SDK 3.1.1とする。ここでは、ある1つの対象ソースコードβ(以下、検索ソースコードという)に対する複数の対象ソースコードαの類似度を算出するものとする。
上記の各手順は、ユーザが、図9に示されるようなCUIを有するアプリケーションであるSimpleSourceCodeSearchに基づき制御部4が実行する。図9は、結果表示部6に一覧表示される類似度評価装置1のメインメニューを示しており、ユーザは、このメインメニューから参照ソースコードや対象ソースコードの登録及び除去を行ったり、類似度比較を行う等の操作を選択し、実行することができる。
アプリケーションの操作手順は以下の通りである。まず、ユーザはメインメニューにて“1”を入力し、参照ソースコードの入力モードに切り替えた後、参照ソースコードを任意の数だけ登録する。この登録手順は、必ずしも上記のCUIによるものとは限られず、GUIによるものでもよい。例えば、ユーザがコンピュータに接続されたマウス等を操作して、ファイル名をコピー&ペーストすることにより、複数の参照ソースコードを一度に登録することができる。
ソースコードは、登録される度に上述のSourceCodeクラスによって標準化され、記憶部2に保持される。参照ソースコードの登録時に、既に対象ソースコードが登録されている場合は、制御部4は、それらについてのテクスチャ特徴量の算出を行う。登録された参照ソースコードは、図10に示される様に、結果表示部6に一覧表示される。上記のSimpleSourceCodeSearchには、登録された参照ソースコードを閲覧するためのコマンドも用意されている。また、SimpleSourceCodeSearchを用いてユーザは一度登録された参照ソースコードを消去することや、追加登録を行うこともできる。
上記の一覧表示処理の後、ユーザはメインメニューにて“4”を入力し、対象ソースコードの入力モードに切り替えて、類似度の算出対象である対象ソースコードを登録する。登録された対象ソースコードは直ちに標準化され、登録済みの参照ソースコードとの相関マトリックスの作成及びテクスチャ特徴量の算出が行われる。算出されたテクスチャ特徴量は、ReferenceVectorクラスのインスタンスとして、参照ベクトルとソースコードが組になった形で記憶部2に保持される。登録された対象ソースコードは、図11に示される様に、一覧表示される。また、上記のテクスチャ特徴量算出手順S4の実行に要した時間も表示される。なお、ユーザは対象ソースコードの登録後に、一度登録された参照ソースコードを消去することや追加登録を行うこともできる。
続いて、ユーザは、メインメニューにて“6”を入力し、検索ソースコードを入力するモードに切り替え、検索ソースコードを入力する。なお、請求項における対象ソースコードには、この検索ソースコードも含まれる。入力された検索ソースコードは標準化され、参照ソースコードとの相関マトリックスの作成、テクスチャ特徴量算出を経て参照ベクトルの作成が行われる。
その後、直ちに対象ソースコードと参照ソースコードとの相関マトリックスから作成された参照ベクトルと、検索ソースコードと参照ソースコードとの相関マトリックスから作成された参照ベクトルと、の夫々の参照ベクトル間の距離が算出されることにより、検索ソースコードに対する対象ソースコードの類似度の算出が行われる。そして、対象ソースコードは、図12に示されるように、検索ソースコードとの類似度が高い順に、算出された類似度と共に一覧表示される。
上記のように、対比されるソースコードの夫々についての参照ベクトルを用いて類似度を算出すると、各ソースコードの各々のテキストデータを直接比較するよりも、はるかに高速で類似度の算出が行われるようになる。
また、上記の対象ソースコードの登録による参照ベクトルの作成については、入力された対象ソースコードの数が多くなるほど、参照ソースコードとの相関マトリックスの作成や、テクスチャ特徴量算出に多くの時間を要することになる。しかし、対象ソースコードと参照ソースコードとの相関マトリックスから作成された参照ベクトルについては、一度作成されると、参照ソースコード又は対象ソースコードが変更されない限り、何度も繰り返し用いることができる。従って、検索ソースコードと対象ソースコードとの類似度の算出の都度、対象ソースコードと参照ソースコードとの相関マトリックスに基づいて参照ベクトルを作成する必要はない。また、検索ソースコードと参照ソースコードとの相関マトリックスに基づく参照ベクトルの作成については、検索ソースコードと対象ソースコードとの類似度の算出の度に行う必要があるが、検索ソースコードは1つのソースコードであるから、この検索ソースコードの登録による参照ベクトルの作成は、極めて短時間に行われる。従って、本実施形態の類似度評価方法を用いることにより、多対一のソースコードの類似度の算出及び評価を、極めて高速に行うことが可能となる。
以下に、本実施形態の類似度評価方法の有効性を検証するための実施例について説明する。本実施例では、大学のプログラミング授業における採点支援を目的とした類似度評価方法について示す。ここでいう採点支援とは、ソースコード盗用の発見と模範解答とのマッチングの二点を自動化することを指す。実験の対象となるデータは、神戸大学工学部情報知能工学科「情報知能工学演習IV」Java(登録商標)プログラム課題において、受講生が作成したものであり、ファイル総数は434である。なお、コンピュータにはSONY VAIO VGN-S94PSが用いられ、このコンピュータの計算機環境は、CPUがIntel(R) Pentium(登録商標)(R) M processor 2.26GHz、主記憶容量が1.00GB RAMであった。
実験対象となるソースコードは、Infoseekのテレビ番組表で公開されているiEPGファイルの情報を保存・出力するというJava(登録商標)プログラム課題であり、これはEPGCollectorFromInfoseek、EPGManager、EPGItem及びPerformerItemの4つのクラスにより構成される。これらのうち、EPGCollectorFromInfoseek及びPerformerItemの2つのクラスは担当教員によって予めほぼ完成されており、受講者はEPGManagerクラスの4つのメソッドとEPGItemクラス1つのメソッドを各自記述する。授業用WEBページ上で各メソッド記述のヒントや推奨APIの提示が行われており、また、いくつかの課題メソッドは、部分的に記述がなされた状態の穴埋め形式となっているため、提出されたソースコード間の類似度は高いことが予想される。
本実施例では、まず、ユーザ(担当教員)は、受講生から提出されたソースコードから適当に選んだ任意個数のソースコードが参照ソースコードとして登録すると、制御部4は、参照ソースコードを含む全てのソースコードに対し、参照ベクトルの算出を行う。次に、ユーザは単一のソースコードを選び、これを検索ソースコードとすると、制御部4は、検索ソースコードとこれを含む全てのソースコード間で、上記の数式(14)に従って類似度を算出する。
本実施例では、参照ソースコードの数による性能の違いを検証するため、参照ソースコードの個数を1,3,5,7,14と変えて実験が行われた。また、テクスチャ特徴量による性能の違いを検証するため、参照ベクトルの算出に用いられるテクスチャ特徴量として、ASM、CON、COR、ENT及びIDMの夫々が用いられた場合と、5つの特徴量全てが用いられた場合の夫々について実験が行われた。なお、これらの設定による性能の違いを評価するため、以下では、同一のソースコードx-A0-EPGManager.javaを検索ソースコードとして類似度の算出に用いることとした。
この課題では、作成されるプログラム(ファイル名)に命名規則が与えられて、同じファイル名を持つソースコードは同じ意図を持って作成されているので、類似したソースコードであると考えられる。なお、本実施例において、検索ソースコードとして用いられるx-A0-EPGManager.javaと同じEPGManager.javaという名称のソースコードは、全ソースコード中に73個含まれていた。以下では、これらを適合ソースコードと呼ぶものとする。
算出された類似度に従って、検索ソースコードに類似した50個又は73個の対象ソースコードが選出され、以下の評価式(15)に従って評価が行われた。
上記の5種類全てのテクスチャ特徴量が用いられ、参照ソースコード数を1,3,5,7,14と変えた場合における、各対象ソースコードと各参照ソースコードとの夫々の組み合わせについて、異なる参照ソースコードを用いて8回ずつ実験が行われた。図13は、上記実験の評価の平均と標準偏差を示す。同図より、参照ソースコード数が1の場合は、評価が低く分散も大きいが、3,5,7,14と増えるに従って高くなっている。従って、参照ソースコードは複数個用いられることが望ましい。
図14は、参照ソースコード数を14に固定し、テクスチャ特徴量の算出に上記のASM、CON、COR、ENT及びIDMの夫々が用いられた場合とこれら5種類全てが用いられた場合について同様の実験を行った結果を示す。この場合も、参照ソースコードを変えて夫々8回の実験が行われ、評価の平均と標準偏差が算出された。対象ソースコード群に含まれる適合ソースコードの最大数が50の場合は、特徴量による差は僅かあるが、73の場合は評価が大きく分かれる。5つの特徴量の全てが用いられた場合については、高い評価となっているが、斜め方向の相関を表すCORもこれに近い評価を示している。従って、CORが単独で用いられた場合でも、5種類の特徴量全てが用いられた場合に匹敵する性能が得られることが期待される。
図15は、テクスチャ特徴量としてCORのみを用いた場合と5種類全てを用いた場合について、類似度の算出時間の平均と標準偏差を示したものである。参照ソースコード数が7以下の場合は、算出時間の増加はあまり観測されないが、参照ソースコード数が14の場合は、急激に算出時間が増加している。この結果からは明確ではないが、全体的には、参照ソースコード数が増加するに従って、算出時間が増加傾向にあり、参照ソースコード数と算出時間はトレードオフの関係にあると予想される。また、テクスチャ特徴量としてCORのみを用い、参照ソースコード数を14とした場合でも、5種類全てのテクスチャ特徴量を用い、参照ソースコード数を7とした場合と同等の算出時間であり、テクスチャ特徴量としてCORのみを用いた場合の算出時間が短いことがわかる。これらの結果より、テクスチャ特徴量としてCORのみを用いることにより、算出時間の増加を抑えつつ、評価の高い類似度の算出を行うことができると言える。
また、全検索結果を集計した結果、検索ソースコードx-A0-EPGManagerに対する類似度が最も高いと判断された対象ソースコードx-A39-EPGManagerと類似度が最も低いとされた対象ソースコードx-A38-EPGManagerとを直接比較し、出力結果が実際の類似度を反映できているかを検証した。図16乃至図18は、検索ソースコードx-A0-EPGManager、対象ソースコードx-A39-EPGManager及びx-A38-EPGManagerのプログラムソースコード本文の同一箇所の抜粋である。これらのソースコード本文を目視で比較したところ、x-A0-EPGManager(図16)とx-A39-EPGManager(図17)には類似した記述が多く見られ、x-A0-EPGManager(図16)とx-A38-EPGManager(図18)とを比較した場合に比べて、明らかに類似度が高いことが確認された。これら3つのソースプログラムは、例えば、多くの部分において、x-A0-EPGManagerとx-A39-EPGManagerとは同様の記述方式を採っている部分が多いが、x-A38-EPGManagerは、他の2つと処理の順序が異なる場合があり、冗長な部分も見られる。強調した箇所の様に、同じ目的であっても処理の仕方が若干異なる箇所も確認された。
次に、x-A0-EPGManagerとx-A39-EPGManagerとの相関マトリックス及びx-A0-EPGManagerとx-A38-EPGManagerとの相関マトリックスの夫々を図19及び図20に示す。図19に示される相関マトリックスでは、左上から右下に向かって斜め方向の直線がはっきりと確認できるが、これは2つのソースコード間に共起するトークンが多いことを示す。一方、図20に示される相関マトリックスにも多くの類似した部分列は見られるが、図19に示されるように、はっきりとした斜め方向の直線は見られない。このことからもx-A0-EPGManagerに対し、x-A39-EPGManagerがx-A38-EPGManagerより高い類似度をもつことが確認できる。これらより、本実施形態の類似度評価方法が、実際に類似度の高いテキストに対して、正確な類似度を算出できること及び僅かな構造や処理順序の改変についても、類似度の差を算出できることが分かる。
本発明の一実施形態に係る類似度評価装置のブロック構成図。 本発明の一実施形態に係る類似度評価プログラムにより実行される手順の概略を示す図。 上記手順を示すフローチャート。 上記プログラムを構成するクロスライブラリを示す図。 (a)(b)はソースコードの標準化処理の例を説明する図。 ソースコードトークン列から作成される相関マトリックスの例を示す図。 変位δ=(d,θ)とδ=(dx,dy)の関係の例を示す図。 (a)〜(e)は同時生起行列の例を示す図。 類似度評価装置の表示部に表示されるメインメニューの例を示す図。 参照ソースコードの登録例を示す図。 対象ソースコードの登録例を示す図。 類似度算出結果の表示例を示す図。 選択された参照ソースコードの数による類似度評価の比較例を示す図。 テクスチャ特徴量の種類による類似度評価の比較例を示す図。 選択された参照ソースコードの数及びテクスチャ特徴量の種類による類似度算出時間の比較例を示す図 x-A0-EPGManager.javaのソースコードの一部を示す図。 x-A39-EPGManager.javaのソースコードの一部を示す図。 x-A38-EPGManager.javaのソースコードの一部を示す図。 x-A0-EPGManager.javaとx-A39-EPGManager.javaとの相関マトリックスを示す図。 x-A0-EPGManager.javaとx-A38-EPGManager.javaとの相関マトリックスを示す図。
符号の説明
1 類似度評価装置
2 記憶部(記憶装置)
3 ユーザインタフェース部
4 制御部
5 類似度評価プログラム
6 結果表示部(結果表示手段)
11 参照ソースコード登録部(参照ソースコード登録手段)
12 対象ソースコード登録部(対象ソースコード登録手段)
13 相関マトリックス作成部(相関マトリックス作成手段)
14 テクスチャ特徴量算出部(テクスチャ特徴量算出手段)
15 類似度算出部(類似度算出手段)

Claims (6)

  1. 所定のプログラム言語で作成された複数のソースコード間の類似度を算出して評価する類似度評価プログラムであって、
    コンピュータの記憶装置に記憶されたソースコード群の中から、ユーザにより任意に選択された複数のソースコードを参照ソースコードとして登録し、該参照ソースコードを標準化して、参照ソースコードトークン列を作成する参照ソースコード登録手順と、
    前記ソースコード群の中から、類似度の算出対象となる少なくとも2つ以上のソースコードを対象ソースコードとして登録し、該対象ソースコードを標準化して、夫々の対象ソースコードについて対象ソースコードトークン列を作成する対象ソースコード登録手順と、
    前記参照ソースコードトークン列及び対象ソースコードトークン列から、前記参照ソースコードと対象ソースコードとの相関マトリックスを夫々作成する相関マトリックス作成手順と、
    前記作成された夫々の相関マトリックスを二値化された画像とみなして、各相関マトリックスにおいて複数のテクスチャ特徴量を算出するテクスチャ特徴量算出手順と、
    前記複数のテクスチャ特徴量を参照ベクトルとし、夫々の相関マトリックスに対応する各参照ベクトル間の距離を算出することにより、前記対象ソースコードの類似度を算出する類似度算出手順と、を更にコンピュータに実行させることを特徴とする類似度評価プログラム。
  2. 前記類似度算出手順の結果を、前記コンピュータと接続された画像表示装置に一覧表示する結果表示手順を更にコンピュータに実行させることを特徴とする請求項1に記載の類似度評価プログラム。
  3. 所定のプログラム言語で作成された複数のソースコード間の類似度を算出して評価する類似度評価装置であって、
    前記複数のソースコードを記憶する記憶手段と、
    前記記憶手段に記憶されたソースコード群の中から、ユーザにより任意に選択された複数のソースコードを参照ソースコードとして登録し、該参照ソースコードを標準化して、参照ソースコードトークン列を作成する参照ソースコード登録手段と、
    前記記憶手段に記憶されたソースコード群の中から、類似度の算出対象となる少なくとも2つ以上のソースコードを対象ソースコードとして登録し、該対象ソースコードを標準化して、夫々の対象ソースコードについて対象ソースコードトークン列を作成する対象ソースコード登録手段と、
    前記参照ソースコード登録手段により作成された参照ソースコードトークン列と前記対象ソースコード登録手段により作成された対象ソースコードトークン列から、前記参照ソースコードと対象ソースコードとの相関マトリックスを夫々作成する相関マトリックス作成手段と、
    前記相関マトリックス作成手段により作成された夫々の相関マトリックスを二値化された画像とみなして、各相関マトリックスにおいて複数のテクスチャ特徴量を算出するテクスチャ特徴量算出手段と、
    前記テクスチャ特徴量算出手段により算出された複数のテクスチャ特徴量を参照ベクトルとし、夫々の相関マトリックスに対応する各参照ベクトル間の距離を算出することにより、前記対象ソースコードの類似度を算出する類似度算出手段と、を備えたことを特徴とするソースコード類似度評価装置。
  4. 前記類似度算出手段の結果を一覧表示する結果表示手段を更に備えたことを特徴とする請求項3に記載の類似度評価装置。
  5. コンピュータによって、所定のプログラム言語で作成された複数のソースコード間の類似度を算出して評価する類似度評価方法であって、
    前記コンピュータが、該コンピュータの記憶装置に記憶されたソースコード群の中から、ユーザにより任意に選択された複数のソースコードを参照ソースコードとして登録し、該参照ソースコードを標準化して、参照ソースコードトークン列を作成するステップと、
    前記コンピュータが、前記ソースコード群の中から、類似度の算出対象となる少なくとも2つ以上のソースコードを対象ソースコードとして登録し、該対象ソースコードを標準化して、夫々の対象ソースコードについて対象ソースコードトークン列を作成するステップと、
    前記コンピュータが、前記参照ソースコードトークン列と対象ソースコードトークン列から、前記参照ソースコードと対象ソースコードとの相関マトリックスを夫々作成するステップと、
    前記コンピュータが、前記作成された夫々の相関マトリックスを二値化された画像とみなして、各相関マトリックスにおいて複数のテクスチャ特徴量算出するステップと、
    前記コンピュータが、前記複数のテクスチャ特徴量を参照ベクトルとし、夫々の相関マトリックスに対応する各参照ベクトル間の距離を算出することにより、前記対象ソースコードの類似度を算出するステップと、を含むことを特徴とする類似度評価方法。
  6. 前記コンピュータが、前記算出された少なくとも2つ以上の対象データ列の類似度を、前記コンピュータと接続された画像表示装置に一覧表示するステップを更に含むことを特徴とする請求項5に記載の類似度評価方法。
JP2006219079A 2006-08-11 2006-08-11 類似度評価プログラム、類似度評価装置及び類似度評価方法 Expired - Fee Related JP4560608B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006219079A JP4560608B2 (ja) 2006-08-11 2006-08-11 類似度評価プログラム、類似度評価装置及び類似度評価方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006219079A JP4560608B2 (ja) 2006-08-11 2006-08-11 類似度評価プログラム、類似度評価装置及び類似度評価方法

Publications (2)

Publication Number Publication Date
JP2008046695A JP2008046695A (ja) 2008-02-28
JP4560608B2 true JP4560608B2 (ja) 2010-10-13

Family

ID=39180409

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006219079A Expired - Fee Related JP4560608B2 (ja) 2006-08-11 2006-08-11 類似度評価プログラム、類似度評価装置及び類似度評価方法

Country Status (1)

Country Link
JP (1) JP4560608B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495150B2 (en) 2014-03-18 2016-11-15 Kabushiki Kaisha Toshiba Information processing apparatus and method, and computer program product

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5342407B2 (ja) * 2009-10-30 2013-11-13 株式会社日立製作所 プログラム解析方法、プログラム解析プログラムおよびプログラム解析装置
JP5564448B2 (ja) * 2011-02-08 2014-07-30 株式会社日立製作所 ソフトウェアの類似性評価方法
JP5875961B2 (ja) * 2012-09-18 2016-03-02 株式会社日立製作所 ソースコード類似度評価プログラム、ソースコード類似度評価装置、および、コンピュータ読み取り可能な記憶媒体
US11099842B2 (en) 2019-01-08 2021-08-24 Saudi Arabian Oil Company Source code similarity detection using digital fingerprints

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003029978A (ja) * 2001-07-13 2003-01-31 Japan Science & Technology Corp 同形パターン検出システム
JP2003216425A (ja) * 2002-01-24 2003-07-31 Japan Science & Technology Corp 類似度計測システム
JP2004073814A (ja) * 2002-08-21 2004-03-11 Kenji Ogaki 非採血式ハンディ血糖計(3)
JP2006018693A (ja) * 2004-07-02 2006-01-19 Fujitsu Ltd 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11308222A (ja) * 1998-04-22 1999-11-05 Sumitomo Electric Ind Ltd ネットワーク管理システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003029978A (ja) * 2001-07-13 2003-01-31 Japan Science & Technology Corp 同形パターン検出システム
JP2003216425A (ja) * 2002-01-24 2003-07-31 Japan Science & Technology Corp 類似度計測システム
JP2004073814A (ja) * 2002-08-21 2004-03-11 Kenji Ogaki 非採血式ハンディ血糖計(3)
JP2006018693A (ja) * 2004-07-02 2006-01-19 Fujitsu Ltd 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495150B2 (en) 2014-03-18 2016-11-15 Kabushiki Kaisha Toshiba Information processing apparatus and method, and computer program product

Also Published As

Publication number Publication date
JP2008046695A (ja) 2008-02-28

Similar Documents

Publication Publication Date Title
Wang et al. Metamorphic object insertion for testing object detection systems
Soibelman et al. Management and analysis of unstructured construction data types
US20160253596A1 (en) Geometry-directed active question selection for question answering systems
WO2022048363A1 (zh) 网站分类方法、装置、计算机设备及存储介质
US20050246353A1 (en) Automated transformation of unstructured data
Sethi et al. DLPaper2Code: Auto-generation of code from deep learning research papers
CN111512315A (zh) 文档元数据的按块提取
JP4560608B2 (ja) 類似度評価プログラム、類似度評価装置及び類似度評価方法
US20140301644A1 (en) Extracting Reading Order Text and Semantic Entities
CN110909531A (zh) 信息安全的甄别方法、装置、设备及存储介质
Haraldsson et al. Exploring fitness and edit distance of mutated python programs
AU2015204339B2 (en) Information processing apparatus and information processing program
CN110633456A (zh) 语种识别方法、装置、服务器及存储介质
Becker et al. Free benchmark corpora for preservation experiments: using model-driven engineering to generate data sets
US20230385037A1 (en) Method and system for automated discovery of artificial intelligence (ai)/ machine learning (ml) assets in an enterprise
Boillet et al. Confidence estimation for object detection in document images
Wu et al. Maximizing correctness with minimal user effort to learn data transformations
Ghaemmaghami et al. A new semantic approach to improve webpage segmentation
JP2011191834A (ja) 文書分類方法、文書分類装置、およびプログラム
CN111562943B (zh) 一种基于事件嵌入树及gat网络的代码克隆检测方法和装置
CN114780577A (zh) Sql语句生成方法、装置、设备及存储介质
Goel et al. Hybrid Elephant Herding Optimization–Big Bang Big Crunch for pattern recognition from natural images
CN113704108A (zh) 一种相似代码检测方法及装置、电子设备、存储介质
Watanabe et al. Layout cross-platform and cross-browser incompatibilities detection using classification of DOM elements
CN105677827A (zh) 一种表单的获取方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100302

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100506

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: 20100601

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100628

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130806

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees