(57)【要約】      （修正有）【課題】あるユーザが類似する複数のソースコードのうち１つを修正した場合、変更前の当該１つの文書と類似度の高い他の文書に関係するユーザに、変更があった旨を通知する。【解決手段】複数の文書間の類似度を算出する算出部と、第１の文書が変更されたことに応じて、変更前における第１の文書に対して第１基準以上の類似度を有する第２の文書を特定する特定部と、特定された第２の文書をユーザに通知する通知部とを備える情報処理装置、当該情報処理装置を用いた情報処理方法、及び、プログラムを提供する。【選択図】図１
2014149564.tif 000002
【特許請求の範囲】
【請求項１】
複数の文書間の類似度を算出する算出部と、
第１の文書が変更されたことに応じて、変更前における前記第１の文書に対して第１基準以上の類似度を有する第２の文書を特定する特定部と、
特定された前記第２の文書をユーザに通知する通知部と、
を備える情報処理装置。
【請求項２】
前記複数の文書のそれぞれに関係するユーザを記憶するユーザ記憶部を備え、
前記通知部は、特定された前記第２の文書に関係するユーザを前記ユーザ記憶部から取得して、当該ユーザに対して前記第１の文書の変更を通知する
請求項１に記載の情報処理装置。
【請求項３】
前記複数の文書のうち互いに第１基準以上の類似度を有する２以上の文書をグループ化するグループ生成部をさらに備え、
前記特定部は、前記第１の文書が変更されたことに応じて、前記第１の文書と同一のグループに属する前記第２の文書を特定する
請求項１または２に記載の情報処理装置。
【請求項４】
前記グループ生成部は、前記第１の文書が変更されたことに応じて前記第１の文書が属するグループ内の他の文書に対する前記第１の文書の類似度が第１基準未満となった場合においても、前記第１の文書を当該グループ内の文書として維持し、
前記特定部は、前記第１の文書が変更されたことに応じて、前記第１の文書と同一のグループに属し、かつ変更前の前記第１の文書に対して第１基準以上の類似度を有する前記第２の文書を特定する
請求項３に記載の情報処理装置。
【請求項５】
前記グループ生成部は、第１のグループに属する文書の組が、第２のグループに属する文書の組の部分集合となったことに応じて、前記第１のグループを削除して前記第２のグループに統合する請求項３または４に記載の情報処理装置。
【請求項６】
前記第１の文書の変更内容を説明する説明文をユーザから取得する説明取得部をさらに備え、
前記通知部は、前記第２の文書に関係するユーザに対して前記説明文を通知する
請求項１から５のいずれか一項に記載の情報処理装置。
【請求項７】
前記第１の文書の変更に伴う他の文書の変更が必要か否かを示す必要性情報をユーザから取得する必要性取得部をさらに備え、
前記通知部は、前記第２の文書に関係するユーザに対して前記必要性情報を通知する
請求項１から５のいずれか一項に記載の情報処理装置。
【請求項８】
変更前における前記第１の文書および前記第２の文書の類似度が、前記第１基準よりも高い第２基準以上であることを条件として、前記第１の文書に対する変更を前記第２の文書に対して反映した前記第２の文書の更新版を生成する更新部をさらに備える請求項１から７のいずれか一項に記載の情報処理装置。
【請求項９】
前記第１の文書の変更を前記第２の文書に関係するユーザに対して通知するか否かをユーザからの指示に基づき設定する設定部をさらに備え、
前記通知部は、前記第１の文書の変更を前記第２の文書に関係するユーザに対して通知しない旨の設定がされていないことを条件として、前記第１の文書の変更をユーザに通知する
請求項１から８のいずれか一項に記載の情報処理装置。
【請求項１０】
前記算出部は、変更前の前記第１の文書および変更後の前記第１の文書の類似度を算出し、
変更前後の前記第１の文書の類似度が第３基準以上であることを条件として、前記第１の文書と他の一部の文書との間の類似度の再計算を省略する
請求項１から９のいずれか一項に記載の情報処理装置。
【請求項１１】
当該情報処理装置は、プログラム開発において作成される複数のソースファイルを管理する管理装置として機能し、
前記算出部は、一のソースファイルの更新版がチェックインされたことに応じて、当該管理装置が管理する前記複数のソースファイルの少なくとも一部分のソースコードである前記複数の文書間の類似度を算出する
請求項１から１０のいずれか一項に記載の情報処理装置。
【請求項１２】
コンピュータを
複数の文書間の類似度を算出する算出部と、
第１の文書が変更されたことに応じて、変更前における前記第１の文書に対して第１基準以上の類似度を有する第２の文書を特定する特定部と、
特定された前記第２の文書をユーザに通知する通知部と、
として機能させるプログラム。
【請求項１３】
複数の文書間の類似度を算出する算出段階と、
第１の文書が変更されたことに応じて、変更前における前記第１の文書に対して第１基準以上の類似度を有する第２の文書を特定する特定段階と、
特定された前記第２の文書をユーザに通知する通知段階と、
を備える情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
ソースファイルに含まれる類似する複数のソースコードを検出し、これらのソースコードをユーザに共通化させる方法が知られている。（例えば、特許文献１参照）。
［特許文献１］  特開２００９−０８６８１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、あるユーザが類似する複数のソースコードのうち１つを修正した場合、他のソースコードは修正されないままとなり、不具合の原因となることがあった。このような問題は、ソースコードのみならず各種の文書の間でも発生する。
【課題を解決するための手段】
【０００４】
本発明の第１の態様においては、複数の文書間の類似度を算出する算出部と、第１の文書が変更されたことに応じて、変更前における第１の文書に対して第１基準以上の類似度を有する第２の文書を特定する特定部と、特定された第２の文書をユーザに通知する通知部とを備える情報処理装置、当該情報処理装置に用いられるプログラム、及び、当該銃砲処理装置により実行される方法を提供する。
【０００５】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【０００６】
【図１】本実施形態の情報処理装置１０の構成を示す。
【図２】本実施形態の情報処理装置１０の処理フローを示す。
【図３】本実施形態の情報処理装置１０が処理する複数の文書の例を示す。
【図４】本実施形態の情報処理装置１０によるグループ化の一例を示す。
【図５】本実施形態の情報処理装置１０による通知及び再グループ化の一例を示す。
【図６】本実施形態の情報処理装置１０による通知及び再グループ化の一例を示す。
【図７】本実施形態の情報処理装置１０による通知及び再グループ化の一例を示す。
【図８】コンピュータ１９００のハードウェア構成の一例を示す。
【発明を実施するための形態】
【０００７】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【０００８】
図１は、本実施形態の情報処理装置１０の構成を示す。本実施形態において情報処理装置１０は、複数のソースコード等の文書間の類似度を算出し、複数の文書のうち１つの文書に変更があった場合に、変更前の当該１つの文書と類似度の高い他の文書に関係するユーザ（例えば、文書の作成者、文書のレビュー担当者、及び／又は、複数の文書に係るプログラム開発をマネジメントするプロジェクトマネージャ）に、変更があった旨を通知する。
【０００９】
これにより、例えば、ある文書から引用されて記載されることにより、類似する文書が生成された場合等において、情報処理装置１０は、一方の文書が変更されたことを他方の文書の関係者に知らせることができる。情報処理装置１０は、入力部１００、設定部１０６、算出部１１０、グループ生成部１２０、記憶部１３０、特定部１４０、更新部１５０、及び通知部１６０を備える。
【００１０】
入力部１００は、複数の文書を入力する。本実施形態において、複数の文書のそれぞれはプログラムのソースコードである。ここで、各文書は、ソースファイル全体であってよく、ソースファイルのコードの一部（例えば、ルーチン、関数、その他の任意の単位）であってもよい。これに代えて、複数の文書のそれぞれは、自然言語で書かれた文章、ドキュメント等であってもよい。ここで、複数の文書の中には、他の文書をコピー又は引用して作成したクローン（ソースコードの場合にはコードクローン）が存在し得る。
【００１１】
入力部１００は、入力した複数の文書を、複数の文書のそれぞれに関係するユーザの名前及びメールアドレス等のユーザ情報とともに、記憶部１３０に格納する。
【００１２】
入力部１００は、ユーザによる編集作業により変更された文書を入力する。例えば、入力部１００は、複数の文書のうち、変更対象となる第１の文書（「変更対象文書」と示す）が編集されたことに応じて、編集による変更後の変更対象文書を入力し、算出部１１０及び記憶部１３０に供給すると共に、変更対象文書に変更があった旨を特定部１４０に通知する。また、入力部１００は、文書の変更の通知に関する設定を受け取り、設定部１０６に供給する。入力部１００は、説明取得部１０２及び必要性取得部１０４を有する。
【００１３】
説明取得部１０２は、変更対象文書の変更に伴い、変更対象文書の変更内容を説明する説明文を、ユーザから取得する。説明取得部１０２は、取得した説明文を記憶部１３０に格納する。
【００１４】
必要性取得部１０４は、変更対象文書の変更に伴い、他の文書の変更が必要か否かを示す必要性情報をユーザから取得する。必要性取得部１０４は、取得した必要性情報を記憶部１３０に格納する。
【００１５】
設定部１０６は、入力部１００を介して、変更前の変更対象文書に類似する１又は複数の第２の文書（「類似文書」と示す）に関係するユーザに対して、変更対象文書の変更を通知するか否かの指示をユーザから受け取る。設定部１０６は、当該指示に基づく設定を記憶部１３０に格納する。
【００１６】
算出部１１０は、記憶部１３０から複数の文書を読み出して、複数の文書間の類似度を算出する。算出部１１０は、算出した複数の文書間の類似度をグループ生成部１２０に供給する。
【００１７】
グループ生成部１２０は、算出部１１０から受け取った複数の文書間の類似度に基づいて、複数の文書のうち互いに予め定められた第１基準以上の類似度を有する２以上の文書をグループ化する。グループ生成部１２０は、複数の文書間の類似度及び各文書が属するグループの情報を記憶部１３０に格納する。
【００１８】
記憶部１３０は、情報処理装置１０の各要素から受け取った情報を格納し、格納した情報を各要素に供給する。記憶部１３０は、情報処理装置１０の主記憶装置、補助記憶装置、又は、情報処理装置１０の外部に設けられた記憶装置であってもよい。記憶部１３０は、文書記憶部１３１、属性記憶部１３２、設定記憶部１３３、及び、ユーザ記憶部１３４を有する。
【００１９】
文書記憶部１３１は、入力部１００から受け取った複数の文書を格納する。属性記憶部１３２は、複数の文書のそれぞれに対応付けて、文書の属性を記憶する。ここで、属性記憶部１３２は、文書の属性の一例として、複数の文書間の類似度及び各文書が属するグループの情報、文書の変更に伴い入力された説明文、文書が変更された場合の通知の要否を示す必要性情報を格納する。設定記憶部１３３は、設定部１０６から受け取った設定を格納する。ユーザ記憶部１３４は、入力部１００から受け取った複数の文書のそれぞれに関係するユーザを格納する。
【００２０】
特定部１４０は、変更対象文書が変更されたことに応じて、変更対象文書と同一のグループに属する文書を特定し、同一のグループに属する文書のうち、変更前における変更対象文書に対して予め定められた第１基準以上の類似度を有する類似文書を特定する。
【００２１】
また、特定部１４０は、変更前における変更対象文書及び類似文書が非常に高い類似度を有するか否か、より具体的には、変更前における変更対象文書及び類似文書の類似度が、第１基準よりも高い第２基準以上であるか否かを判断する。特定部１４０は、当該判断結果に応じて、特定された類似文書の情報を更新部１５０又は通知部１６０に供給する。
【００２２】
更新部１５０は、類似度が非常に高い文書間の変更に伴い、他方の文書の更新情報を自動的に生成する。具体的には、更新部１５０は、類似文書の情報を特定部１４０から受け取り、変更対象文書に対する変更を類似文書に対して反映した類似文書の更新版を生成する。更新部１５０は、類似文書の更新版を文書記憶部１３１に格納し、更新した旨の更新情報を通知部１６０に供給する。
【００２３】
通知部１６０は、特定された類似文書の情報を特定部１４０から受け取り、ユーザに通知する。例えば、通知部１６０は、類似文書に関係するユーザをユーザ記憶部１３４から取得して、当該ユーザに対して、変更対象文書の変更情報及び類似文書を特定する情報を通知する。また、通知部１６０は、更新部１５０から更新情報を受け取った場合、類似文書の情報等に代えて、当該更新情報を通知してよい。
【００２４】
このように、本実施形態の情報処理装置１０は、複数の文書の類似度を算出し、複数の文書のうち変更対象文書が変更されたことに応じて、変更前の変更対象文書と第１基準以上類似する類似文書を特定し、類似文書に関係するユーザに変更対象文書に変更があったこと等を通知する。これにより、情報処理装置１０は、類似文書に関係するユーザに、変更対象文書と同様に類似文書を変更するように促すことができる。
【００２５】
図２は、本実施形態の情報処理装置１０の処理フローを示す。本実施形態において、情報処理装置１０は、プログラム開発において作成される１又は複数のソースファイルを管理する管理装置であってよく、Ｓ１００からＳ１２２までの処理を実行する。
【００２６】
Ｓ１００において、入力部１００は、複数の文書として、情報処理装置１０が管理する１又は複数のソースファイルを入力し、当該ソースファイルの少なくとも一部分の互いに類似する複数のソースコードを複数の文書として検出する。具体的には、入力部１００は、１又は複数のソースファイルから、予め定められた長さ以上の同一の／類似する複数の文字列を検出することにより、ソースファイルから複数の類似する範囲を複数の文書として切り出す。
【００２７】
一例として、入力部１００は、１又は複数のプログラムのソースファイルを入力し、ソースファイルからＣＣＦｉｎｄｅｒ等のコードクローン検出ツールを用いて複数の類似する又は同一のソースコードをコードクローンとして検出する。入力部１００は、当該検出された複数のソースコードを複数の文書として文書記憶部１３１に格納する。
【００２８】
これに代えて、入力部１００は、ソースファイルの一部であるルーチン又は関数等を単位として切り出し、このソースコードを複数の文書として格納してよい。入力部１００は、複数の文書とともに当該複数の文書のそれぞれに関係するユーザを文書記憶部１３１に格納する。
【００２９】
また、設定部１０６は、入力部１００を介して、文書の変更を当該文書と類似する文書に関係するユーザに対して通知するか否かの指示をユーザから受け取り、設定記憶部１３３に記憶する。
【００３０】
次に、Ｓ１０２において、算出部１１０は、複数の文書間の類似度を算出する。具体的には、算出部１１０は、文書記憶部１３１から複数の文書を読み出し、当該複数の文書において一致する文字列の数及び／又は長さ、及び／又は、複数の文書に含まれるコマンド、クラス、ファンクション、及び、変数の種類及び／又は名称等に基づいて、複数の文書間の類似度を算出する。この際、算出部１１０は、文書となるソースコードの処理フローの類似性に応じて類似度を算出してもよい。算出部１１０は、算出した複数の文書間の類似度をグループ生成部１２０に供給する。
【００３１】
次に、Ｓ１０４において、グループ生成部１２０は、算出部１１０から受け取った複数の文書間の類似度に基づいて、複数の文書のうち互いに予め定められた第１基準以上の類似度を有する２以上の文書をグループ化する。
【００３２】
例えば、グループ生成部１２０は、文書Ａと文書Ｂの類似度、文書Ａと文書Ｃの類似度、及び、文書Ｂと文書Ｃの類似度がいずれも予め定められた第１基準以上である場合、文書Ａ、文書Ｂ、及び文書Ｃを同一グループとなるようにグループ化する。グループ生成部１２０は、複数の文書間の類似度及びグループの情報を属性記憶部１３２に格納する。
【００３３】
次に、Ｓ１０６において、入力部１００は、複数の文書のうち変更対象文書が変更されたことに応じて、変更された変更対象文書を入力する。例えば、入力部１００は、ソースファイルの更新版をチェックインし、当該更新版を、文書記憶部１３１から読み出した複数の文書と対比する。これにより、入力部１００は、更新版に含まれる複数の文書に対応する文書を検出する。入力部１００は、検出された複数の文書にする文書のうち更新版において変更があった文書を、変更された変更対象文書として入力する。
【００３４】
これに代えて、入力部１００は、複数の文書のいずれかに対応する、変更されたソースコード等の文書を、変更された変更対象文書としてユーザから直接入力してもよい。入力部１００は、変更後の変更対象文書を文書記憶部１３１に格納し、変更対象文書に変更があった旨を特定部１４０に通知する。
【００３５】
ここで、説明取得部１０２は、変更対象文書の変更内容を説明する説明文を、ユーザからの入力を受け、又は、ソースファイルの更新版から抽出することにより取得し、属性記憶部１３２に格納してよい。また、必要性取得部１０４は、変更対象文書の変更に伴う他の文書の変更が必要か否かを示す必要性情報をソースファイルの更新版又はユーザから直接から取得して属性記憶部１３２に記憶してよい。
【００３６】
次に、Ｓ１１０において、特定部１４０は、属性記憶部１３２に格納された複数の文書に係るグループ及び類似度の情報を読み出し、複数の文書から変更対象文書と同一のグループに属する文書を特定する。特定部１４０は、変更対象文書と同じグループに属する文書のうち、変更前における変更対象文書に対して第１基準以上の類似度を有する１又は複数の類似文書を特定する。
【００３７】
次に、Ｓ１１２において、特定部１４０は、変更前の変更対象文書との類似度が第１基準よりも高い第２基準以上となる類似文書が１つ以上存在するか否かを判断する。特定部１４０は、類似度が第２基準以上となる文書が１つ以上存在すれば、第２基準以上となる類似文書及び他の類似文書の情報を更新部１５０に供給し、処理をＳ１１４に進める。
【００３８】
特定部１４０は、全ての特定された類似文書と変更前の変更対象文書との類似度が第２基準未満であれば、類似文書の情報を通知部１６０に供給し、処理をＳ１１６に進める。
【００３９】
Ｓ１１４において、更新部１５０は、類似文書の情報を特定部１４０から受け取り、文書記憶部１３１から変更後の変更対象文書及び変更対象文書との類似度が第２基準以上となる類似文書を読み出す。更新部１５０は、読み出した類似文書に対して、変更対象文書に対する変更と同一の変更をしてよい。
【００４０】
また、例えば、更新部１５０は、変更対象文書と類似文書との間で処理フローは同じであるが使用される変数名が異なる場合には、変更対象文書に対する変更を類似文書における変数名を用いて適用させてよい。これにより、更新部１５０は、変更対象文書の変更を類似文書に反映した類似文書の更新版を生成する。
【００４１】
更新部１５０は、類似文書の更新版を文書記憶部１３１に格納し、類似文書を更新した旨の更新情報を通知部１６０に供給する。通知部１６０は、更新された類似文書に関係するユーザをユーザ記憶部１３４から取得して、当該ユーザに対して当該更新情報を通知する。また、通知部１６０は、更新されなかった類似文書に関係するユーザをユーザ記憶部１３４から取得して、当該ユーザに対して当該変更対象文書の変更及び類似文書の情報を通知する。
【００４２】
Ｓ１１６において、通知部１６０は、特定された類似文書の情報を特定部１４０から受け取り、類似文書に関係するユーザをユーザ記憶部１３４から取得して、当該ユーザに対して、変更対象文書の変更及び類似文書の情報を通知する。
【００４３】
ここで、通知部１６０は、設定記憶部１３３から変更対象文書の変更を類似文書に関係するユーザに対して通知するか否かの指示に基づく設定を読み出し、変更対象文書の変更を類似文書に関係するユーザに対して通知しない旨の設定がされていないことを条件として、変更対象文書の変更等をユーザに通知してもよい。これにより、通知部１６０は、文書の作成者等が通知を希望する場合のみ変更対象文書の変更を通知することができる。
【００４４】
また、通知部１６０は、属性記憶部１３２から変更対象文書の変更内容を説明する説明文を読み出し、類似文書に関係するユーザに対して当該説明文を通知してよい。これにより、情報処理装置１０は、類似文書に関係するユーザが類似文書を変更する際に、変更対象文書の変更内容を参考させることができる。
【００４５】
また、通知部１６０は、属性記憶部１３２から変更対象文書の変更に伴う他の文書の変更が必要か否かを示す必要性情報を読み出し、類似文書に関係するユーザに対して当該必要性情報を通知してよい。これにより、情報処理装置１０は、類似文書を変更する必要がないにもかかわらず、類似文書に関係するユーザが類似文書を変更することを防ぐ。
【００４６】
次に、Ｓ１１８において、算出部１１０は、文書記憶部１３１から変更前後の変更対象文書を読み出し、変更前の変更対象文書および変更後の変更対象文書の類似度を算出する。算出部１１０は、算出した類似度が予め定められた第３基準以上であれば処理をＳ１０６に戻し、当該第３基準未満であれば処理をＳ１２０に進める。
【００４７】
Ｓ１２０において、算出部１１０は、変更された変更対象文書を含む複数の文書間の類似度をＳ１０２と同様に再計算する。算出部１１０は、変更された文書と他の文書との間の類似度を算出し、変更されなかった文書同士の類似度の算出を省略してよい。
【００４８】
例えば、算出部１１０は、Ｓ１１４の処理が実行された場合、変更対象文書と他の文書との類似度、及び、類似文書のうち更新された文書と他の文書との類似度を計算してよい。算出部１１０は、Ｓ１１６の処理が実行された場合、変更対象文書と他の文書との類似度を計算してよい。算出部１１０は、算出した複数の文書間の類似度をグループ生成部１２０に供給する。
【００４９】
次に、Ｓ１２２において、グループ生成部１２０は、算出部１１０から受け取った複数の文書間の類似度に基づいて、変更後の変更対象文書を含む複数の文書のうち互いに予め定められた第１基準以上の類似度を有する２以上の文書を再グループ化する。
【００５０】
例えば、グループ生成部１２０は、変更された文書が、既存の一のグループを構成する全ての文書との間で予め定められた第１基準以上の類似度を有する場合、当該変更された文書を当該一のグループに加える。
【００５１】
一例として、文書Ａ、Ｂ及びＣが一のグループに含まれ、文書Ｄが変更されたことにより、文書Ｄが文書Ａ、Ｂ及びＣの全ての間の類似度が予め定められた第１基準以上となった場合には、グループ生成部１２０は、文書Ｄを文書Ａ、Ｂ及びＣからなる一のグループに追加する。
【００５２】
また、グループ生成部１２０は、変更された文書が、既存の一のグループを構成する文書の一部との間で予め定められた第１基準以上の類似度を有する場合、当該変更された文書と一部の文書とで構成される新しいグループを生成する。
【００５３】
一例として、文書Ａ、Ｂ及びＣが一のグループに含まれ、当該変更された文書Ｄと文書Ａの類似度が第１基準以上となるが、文書Ｄと文書Ｂ及びＣとの間の類似度が第１基準未満となる場合は、グループ生成部１２０は、文書Ａと文書Ｄからなる新しいグループを生成する。
【００５４】
グループ生成部１２０は、変更された変更対象文書が属するグループ内の他の文書に対する変更対象文書の類似度が予め定められた第１基準未満となった場合においても、変更対象文書を当該グループ内の文書として維持してよい。
【００５５】
例えば、文書Ｂ及びＣと同一グループに含まれる文書Ａを修正したことにより、文書Ｂと文書Ｃの類似度が予め定められた第１基準以上となるが、文書Ａと文書Ｂの類似度及び文書Ａと文書Ｃの類似度が当該第１基準未満となるに至ったとしても、グループ生成部１２０は、文書Ａ、文書Ｂ及び文書Ｃを同一グループとして維持してよい。
【００５６】
また、グループ生成部１２０は、再グループ化の結果、第１のグループに属する文書の組が、第２のグループに属する文書の組の部分集合となったことに応じて、第１のグループを削除して第２のグループに統合してよい。これにより、情報処理装置１０は、重複するグループの処理を省略することができる。
【００５７】
グループ生成部１２０は、再計算された複数の文書間の類似度、及び、再グループ化されたグループの情報を属性記憶部１３２に格納する。次に、情報処理装置１０は、処理をＳ１０６に戻す。
【００５８】
このように、本実施形態の情報処理装置１０は、変更前の変更対象文書と類似する類似文書に関係するユーザに通知をすることにより、類似文書のユーザに対して変更対象文書と同様の変更をするように促すことができる。
【００５９】
また、本実施形態の情報処理装置１０は、変更前の変更対象文書と類似文書が第１基準よりも大きい第２基準以上に類似するか否かを判断し、第２基準以上に類似する場合には類似文書を変更対象文書の変更に追随するように変更する。これにより、情報処理装置１０は、変更前の変更対象文書が類似文書のコピーである等、両者が非常に類似する場合に、類似文書のユーザが類似文書を自ら変更する手間を省くことができる。
【００６０】
また、本実施形態の情報処理装置１０は、変更前後の変更対象文書の類似度が予め定められた第３の基準以上であることを条件として、Ｓ１２０及びＳ１２２における変更対象文書と他の一部の文書との間の類似度の再計算を省略する。これにより、情報処理装置１０は、変更対象文書の変更が軽微である場合には、再グループ化の処理を省略して処理負担を軽減することができる。
【００６１】
また、本実施形態の情報処理装置１０は、一度グループに組み入れた文書を、グループ内の他の文書との類似度が下がった場合においてもグループ内に維持してよい。これにより、情報処理装置１０は、元々の関連性の高かった複数の文書同士を、後の変更に関わらず紐づけておくことができる。
【００６２】
また、本実施形態の変形例として、情報処理装置１０は、Ｓ１１２の判断結果を条件としてＳ１１４で類似文書を更新することに代えて／加えて、Ｓ１０６において「変更対象文書の変更に伴う他の文書の変更が必要である」旨の必要性情報を取得したことをさらに条件として、Ｓ１１４で類似文書を更新してもよい。
【００６３】
また、本実施形態の変形例として、情報処理装置１０は、Ｓ１１８において「変更前後の変更対象文書の類似度が第３基準以上である」と判断した場合であっても、変更前の変更対象文書との類似度が、第１基準に対して予め定められた範囲内にある類似文書と変更後の変更対象文書との類似度を再計算し、変更対象文書と他の文書及び当該類似文書と他の文書とを再グループ化してもよい。
【００６４】
例えば、算出部１１０は、類似文書の少なくとも一部と変更前の変更対象文書との類似度が、第１基準−予め定められた値以上である場合、又は、第１基準±予め定められた値の範囲内である場合、当該少なくとも一部の類似文書と変更後の変更対象文書との類似度を再計算してよい。これにより、情報処理装置１０は、変更対象文書と類似文書との類似度が第１の基準近傍であり、変更対象文書の変更により変更対象文書と類似文書のグループ関係が変更される可能性が高い場合に、グループ化の処理を実行することができる。
【００６５】
図３は、本実施形態の情報処理装置１０が処理する複数の文書の例を示す。図示するように複数の文書Ａ〜Ｄは、ソースファイルに含まれるコードクローン等の複数の類似するソースコードである。複数の文書Ａ〜Ｄは、単一のソースファイルに複数含まれてよく、複数のソースファイル１及び２にまたがって含まれてよい。
【００６６】
図４〜７は、本実施形態の情報処理装置１０による通知及びグループ化の一例を示す。まず、図４に示す通り、情報処理装置１０は、文書Ａ、文書Ｂ、文書Ｃ、及び文書Ｄを文書記憶部１３１に格納して管理する。文書Ａは、文書Ｂ及びＣとの類似度が０．９であり、文書Ｄとの類似度が０．８である。文書Ｂは、文書Ｃとの類似度は０．９であり、文書Ｄとの類似度が０．６である。文書Ｃは、文書Ｄとの類似度が０．６である。
【００６７】
情報処理装置１０は、例えば、類似度０．７を第１基準として用い、類似度が０．７以上である文書Ａ及びＤをグループ化し（グループ１）、同様に相互の類似度が０．７以上である文書Ａ、Ｂ及びＣをグループ化する（グループ２）。
【００６８】
図５は、文書Ａを変更した場合における情報処理装置１０の通知及び再グループ化の一例を示す。通知部１６０は、文書Ａを変更したことに応じて、変更前の文書Ａとの類似度が第１基準の０．７以上であった文書Ｂ、文書Ｃ及び文書Ｄに関係するユーザに対して、文書Ａを変更した旨の通知をする。
【００６９】
また、算出部１１０は、変更された文書Ａと文書Ｂ、文書Ｃ及び文書Ｄとの類似度を再計算する。その結果、算出部１１０は、文書Ａと文書Ｂとの類似度を０．６と算出し、文書Ａと文書Ｃとの類似度を０．６と算出し、文書Ａと文書Ｄとの類似度を０．９と算出する。
【００７０】
グループ生成部１２０は、類似度０．７を第１基準として、再計算された類似度が０．７以上である文書Ａ及びＤをグループ１として維持する。ここで、グループ生成部１２０は、変更後の文書Ａと文書Ｂ及びＣとの類似度は第１基準よりも小さい０．６であるが、文書Ａの変更前に同一のグループであった文書Ａ、Ｂ及びＣをグループ２として維持する。
【００７１】
図６は、さらに文書Ｂを変更した場合における情報処理装置１０の通知及び再グループ化の一例を示す。通知部１６０は、文書Ｂを変更したことに応じて、変更前の文書Ｂとの類似度が第１基準の０．７以上であった文書Ｃに関係するユーザに対して、文書Ｂを変更した旨の通知をする。情報処理装置１０は、文書Ｂの変更を変更済の文書Ａのユーザに通知しない。
【００７２】
また、算出部１１０は、変更された文書Ｂと文書Ａ、文書Ｃ及び文書Ｄとの類似度を再計算する。その結果、算出部１１０は、文書Ｂと文書Ａとの類似度を０．９と算出し、文書Ｂと文書Ｃとの類似度を０．６と算出し、文書Ｂと文書Ｄとの類似度を０．９と算出する。
【００７３】
グループ生成部１２０は、類似度０．７を第１基準として、文書Ａ、Ｂ及びＤ間の類似度が全て第１基準０．７以上になったことに応じて、文書Ａ及びＤからなるグループ１に文書Ｂを追加する。また、グループ生成部１２０は、文書Ｂの変更前に同一のグループであった文書Ａ、Ｂ及びＣをグループ２として維持する。
【００７４】
図７は、さらに文書Ｃを変更した場合における情報処理装置１０の通知及び再グループ化の一例を示す。変更前の文書Ｃとの類似度が第１基準の０．７以上であった文書が存在しないので、通知部１６０は、変更済の文書Ａ及びＢのいずれのユーザに対しても文書Ｃを変更した旨の通知をしない。
【００７５】
算出部１１０は、変更された文書Ｃと文書Ａ、文書Ｂ及び文書Ｄとの類似度を再計算する。その結果、算出部１１０は、文書Ｃと文書Ａとの類似度を０．９と算出し、文書Ｂと文書Ｃとの類似度を０．９と算出し、文書Ｂと文書Ｄとの類似度を０．９と算出する。
【００７６】
グループ生成部１２０は、類似度０．７を第１基準として、文書Ａ、Ｂ、Ｃ及びＤ間の類似度が全て第１基準０．７以上になったことに応じて、文書Ａ、Ｂ及びＤからなるグループ１に文書Ｃを追加し、文書Ａ、Ｂ及びＣからなるグループ２に文書Ｄを追加する。ここで、グループ生成部１２０は、グループ１とグループ２が文書Ａ、Ｂ、Ｃ及びＤから構成される同一集合になったので、属性記憶部１３２からグループ１を削除してグループ２に統合する。
【００７７】
このように、本実施形態の情報処理装置１０は、変更前の変更対象文書と類似する類似文書に関係するユーザに対して通知をする。これにより、情報処理装置１０は、ユーザへの第１の文章の変更の通知が冗長になることを防ぐ。
【００７８】
図８は、情報処理装置１０として機能するコンピュータ１９００のハードウェア構成の一例を示す。本実施形態に係るコンピュータ１９００は、ホスト・コントローラ２０８２により相互に接続されるＣＰＵ２０００、ＲＡＭ２０２０、グラフィック・コントローラ２０７５、及び表示装置２０８０を有するＣＰＵ周辺部と、入出力コントローラ２０８４によりホスト・コントローラ２０８２に接続される通信インターフェイス２０３０、ハードディスクドライブ２０４０、及びＣＤ−ＲＯＭドライブ２０６０を有する入出力部と、入出力コントローラ２０８４に接続されるＲＯＭ２０１０、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０を有するレガシー入出力部を備える。
【００７９】
ホスト・コントローラ２０８２は、ＲＡＭ２０２０と、高い転送レートでＲＡＭ２０２０をアクセスするＣＰＵ２０００及びグラフィック・コントローラ２０７５とを接続する。ＣＰＵ２０００は、ＲＯＭ２０１０及びＲＡＭ２０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ２０７５は、ＣＰＵ２０００等がＲＡＭ２０２０内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置２０８０上に表示させる。これに代えて、グラフィック・コントローラ２０７５は、ＣＰＵ２０００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００８０】
入出力コントローラ２０８４は、ホスト・コントローラ２０８２と、比較的高速な入出力装置である通信インターフェイス２０３０、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０を接続する。通信インターフェイス２０３０は、有線又は無線によりネットワークを介して他の装置と通信する。また、通信インターフェイスは、入力部１００、更新部１５０、及び通知部１６０等が情報処理装置１０の外部のユーザ等と通信を行うハードウェアとして機能する。ハードディスクドライブ２０４０は、コンピュータ１９００内のＣＰＵ２０００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ２０６０は、ＣＤ−ＲＯＭ２０９５からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。
【００８１】
また、入出力コントローラ２０８４には、ＲＯＭ２０１０と、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０の比較的低速な入出力装置とが接続される。ＲＯＭ２０１０は、コンピュータ１９００が起動時に実行するブート・プログラム、及び／又は、コンピュータ１９００のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ２０５０は、フレキシブルディスク２０９０からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。入出力チップ２０７０は、フレキシブルディスク・ドライブ２０５０を入出力コントローラ２０８４へと接続するとともに、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ２０８４へと接続する。
【００８２】
ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供されるプログラムは、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ２０２０を介してコンピュータ１９００内のハードディスクドライブ２０４０にインストールされ、ＣＰＵ２０００において実行される。
【００８３】
コンピュータ１９００にインストールされ、コンピュータ１９００を情報処理装置１０として機能させるプログラムは、入力モジュールと、説明取得モジュールと、必要性取得モジュールと、設定モジュールと、算出モジュールと、グループ生成モジュールと、特定モジュールと、通知モジュールと、更新モジュールとを備える。これらのプログラム又はモジュールは、ＣＰＵ２０００等に働きかけて、コンピュータ１９００を、入力部１００と、説明取得部１０２と、必要性取得部１０４と、設定部１０６と、算出部１１０と、グループ生成部１２０と、特定部１４０と、更新部１５０と、通知部１６０としてそれぞれ機能させてよい。
【００８４】
これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である入力部１００と、説明取得部１０２と、必要性取得部１０４と、設定部１０６と、算出部１１０と、グループ生成部１２０と、特定部１４０と、更新部１５０と、通知部１６０として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ１９００の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有の情報処理装置１０が構築される。
【００８５】
一例として、コンピュータ１９００と外部の装置等との間で通信を行う場合には、ＣＰＵ２０００は、ＲＡＭ２０２０上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス２０３０に対して通信処理を指示する。通信インターフェイス２０３０は、ＣＰＵ２０００の制御を受けて、ＲＡＭ２０２０、ハードディスクドライブ２０４０、フレキシブルディスク２０９０、又はＣＤ−ＲＯＭ２０９５等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス２０３０は、ＤＭＡ（ダイレクト・メモリ・アクセス）方式により記憶装置との間で送受信データを転送してもよく、これに代えて、ＣＰＵ２０００が転送元の記憶装置又は通信インターフェイス２０３０からデータを読み出し、転送先の通信インターフェイス２０３０又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【００８６】
また、ＣＰＵ２０００は、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０（ＣＤ−ＲＯＭ２０９５）、フレキシブルディスク・ドライブ２０５０（フレキシブルディスク２０９０）等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をＤＭＡ転送等によりＲＡＭ２０２０へと読み込ませ、ＲＡＭ２０２０上のデータに対して各種の処理を行う。そして、ＣＰＵ２０００は、処理を終えたデータを、ＤＭＡ転送等により外部記憶装置へと書き戻す。このような処理において、ＲＡＭ２０２０は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはＲＡＭ２０２０及び外部記憶装置等をメモリ、記憶部、または記憶装置等と総称し、例えば、記憶部１３０、文書記憶部１３１、属性記憶部１３２、設定記憶部１３３、及び、ユーザ記憶部１３４として機能する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、ＣＰＵ２０００は、ＲＡＭ２０２０の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはＲＡＭ２０２０の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもＲＡＭ２０２０、メモリ、及び／又は記憶装置に含まれるものとする。
【００８７】
また、ＣＰＵ２０００は、ＲＡＭ２０２０から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、ＲＡＭ２０２０へと書き戻す。例えば、ＣＰＵ２０００は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすか否かを判断し、条件が成立した場合（又は不成立であった場合）に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
【００８８】
また、ＣＰＵ２０００は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第１属性の属性値に対し第２属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、ＣＰＵ２０００は、記憶装置に格納されている複数のエントリの中から第１属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第２属性の属性値を読み出すことにより、所定の条件を満たす第１属性に対応付けられた第２属性の属性値を得ることができる。
【００８９】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５の他に、ＤＶＤ又はＣＤ等の光学記録媒体、ＭＯ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ１９００に提供してもよい。
【００９０】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００９１】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【００９２】
１０  情報処理装置、１００  入力部、１０２  説明取得部、１０４  必要性取得部、１０６  設定部、１１０  算出部、１２０  グループ生成部、１３０  記憶部、１３１  文書記憶部、１３２  属性記憶部、１３３  設定記憶部、１３４  ユーザ記憶部、１４０  特定部、１５０  更新部、１６０  通知部、１９００  コンピュータ、２０００  ＣＰＵ、２０１０  ＲＯＭ、２０２０  ＲＡＭ、２０３０  通信インターフェイス、２０４０  ハードディスクドライブ、２０５０  フレキシブルディスク・ドライブ、２０６０  ＣＤ−ＲＯＭドライブ、２０７０  入出力チップ、２０７５  グラフィック・コントローラ、２０８０  表示装置、２０８２  ホスト・コントローラ、２０８４  入出力コントローラ、２０９０  フレキシブルディスク、２０９５  ＣＤ−ＲＯＭ
【図１】
2014149564.tif 000003
【図２】
2014149564.tif 000004
【図３】
2014149564.tif 000005
【図４】
2014149564.tif 000006
【図５】
2014149564.tif 000007
【図６】
2014149564.tif 000008
【図７】
2014149564.tif 000009
【図８】
2014149564.tif 000010