(57)【要約】      （修正有）【課題】ソフトウェア資産管理におけるソフトウェアの名寄せを支援する。【解決手段】複数の情報装置にインストールされているソフトウェア資産を管理する管理装置であって、少なくともソフトウェア名がそれぞれ含まれる複数のソフトウェア定義情報を用いて、情報装置にインストールされているソフトウェアを名寄せする名寄せ手段と、名寄せ手段によるソフトウェアの名寄せが失敗した場合、機械学習の手法により、複数のソフトウェア定義情報のうち、名寄せが失敗したソフトウェアとの類似度に基づきソフトウェア定義情報を選択する選択手段と、選択手段により選択されたソフトウェア定義情報を、名寄せが失敗したソフトウェアに類似するソフトウェアに関する情報としてユーザにレコメンドするレコメンド手段とを有する。【選択図】図１０
2020004005.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報装置にインストールされているソフトウェア資産を管理する管理装置であって、
少なくともソフトウェア名がそれぞれ含まれる複数のソフトウェア定義情報を用いて、前記情報装置にインストールされているソフトウェアを名寄せする名寄せ手段と、
前記名寄せ手段によるソフトウェアの名寄せが失敗した場合、機械学習の手法により、前記複数のソフトウェア定義情報のうち、前記名寄せが失敗したソフトウェアとの類似度に基づきソフトウェア定義情報を選択する選択手段と、
前記選択手段により選択された前記ソフトウェア定義情報を、前記名寄せが失敗したソフトウェアに類似するソフトウェアに関する情報としてユーザにレコメンドするレコメンド手段と、
を有することを特徴とする管理装置。
【請求項２】
前記レコメンド手段によりレコメンドされた前記ソフトウェアに関する情報の中からユーザにより選択されたソフトウェアに関する情報を用いて、前記名寄せが失敗したソフトウェアのソフトウェア名と、前記ソフトウェアに関する情報のうちの所定の情報とが含まれるソフトウェア定義情報を作成する作成手段を有し、
前記名寄せ手段は、
前記作成手段により作成されたソフトウェア定義情報も含む複数のソフトウェア定義情報を用いて、前記情報装置にインストールされているソフトウェアを名寄せする、ことを特徴とする請求項１に記載の管理装置。
【請求項３】
前記名寄せ手段は、
前記複数のソフトウェア定義情報の中に、前記情報装置にインストールされているソフトウェアのソフトウェア名が含まれるソフトウェア定義情報が存在するか否かを判定することで、前記情報装置にインストールされているソフトウェアを名寄せする、ことを特徴とする請求項１又は２に記載の管理装置。
【請求項４】
前記名寄せ手段によるソフトウェアの名寄せが失敗した場合、該名寄せに失敗したことを所定の端末に通知するための通知手段を有し、
前記レコメンド手段は、
前記端末のユーザに対して、前記ソフトウェア定義情報を、前記名寄せが失敗したソフトウェアに類似するソフトウェアに関する情報としてレコメンドする、ことを特徴とする請求項１乃至３の何れか一項に記載の管理装置。
【請求項５】
前記選択手段は、
前記名寄せ手段によるソフトウェアの名寄せが失敗した場合、機械学習の手法により、前記複数のソフトウェア定義情報のうち、前記名寄せが失敗したソフトウェアとの類似度が高い順に所定の件数のソフトウェア定義情報を選択する、ことを特徴とする請求項１乃至４の何れか一項に記載の管理装置。
【請求項６】
前記機械学習の手法は、近傍探索であり、
前記選択手段は、
前記名寄せ手段による前記ソフトウェアの名寄せが失敗した場合、前記複数のソフトウェア定義情報のうち、前記名寄せが失敗したソフトウェアとの所定の距離が近い順に上位Ｌ件のソフトウェア定義情報を選択する、ことを特徴とする請求項５に記載の管理装置。
【請求項７】
前記距離は、ソフトウェア名の特徴ベクトル間のユークリッド距離、コサイン類似度又はマンハッタン距離のいずれかである、ことを特徴とする請求項６に記載の管理装置。
【請求項８】
複数の情報装置にインストールされているソフトウェア資産を管理する管理装置が、
少なくともソフトウェア名がそれぞれ含まれる複数のソフトウェア定義情報を用いて、前記情報装置にインストールされているソフトウェアを名寄せする名寄せ手順と、
前記名寄せ手順によるソフトウェアの名寄せが失敗した場合、機械学習の手法により、前記複数のソフトウェア定義情報のうち、前記名寄せが失敗したソフトウェアとの類似度に基づきソフトウェア定義情報を選択する選択手順と、
前記選択手順により選択された前記ソフトウェア定義情報を、前記名寄せが失敗したソフトウェアに類似するソフトウェアに関する情報としてユーザにレコメンドするレコメンド手順と、
を実行することを特徴とする管理方法。
【請求項９】
コンピュータを、請求項１乃至７の何れか一項に記載の管理装置における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理装置、管理方法及びプログラムに関する。
【背景技術】
【０００２】
企業等では、ネットワーク内に大量の情報装置（例えば、ＰＣ（パーソナルコンピュータ）等の各種端末やサーバ装置等）が存在し、これらの情報装置にインストールされているソフトウェアの数も膨大である。このため、各企業等では、保有しているソフトウェア資産やライセンス等を効率的に管理するため、ＩＴ（Information Technology）資産管理システムを導入している場合が多い。
【０００３】
ＩＴ資産管理システムでは、例えば、企業内で保有しているソフトウェア資産を台帳（この台帳は「ソフトウェア資産管理台帳」とも呼ばれる。）を用いて管理している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−００５６５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、ソフトウェア資産管理台帳で管理されていないソフトウェアが情報装置にインストールされてしまう事態が起こり得る。これは、情報装置の利用者が、例えば、自身の判断でソフトウェアを購入及びインストールしてしまう場合があるためである。
【０００６】
このような場合、ＩＴ資産管理システムの管理者等は、情報装置にインストールされたソフトウェアを特定した上で、特定したソフトウェアをソフトウェア資産管理台帳に登録する必要がある。このようなソフトウェアの特定は名寄せとも呼ばれ、ソフトウェアの名称（以降、「ソフトウェア名」とも表す。）と、メーカ等から提供されるソフトウェア辞書とを用いて行われる。
【０００７】
しかしながら、ソフトウェアのバージョン等によってはソフトウェア名が異なる場合があり、ソフトウェアの名寄せを適切に行うことができないことがある。このため、ソフトウェアの名寄せが行えずに不明なソフトウェアと扱われてしまったり、実際とは異なるソフトウェアと名寄せされてしまったりする場合がある。
【０００８】
本発明の実施の形態は、上記の点に鑑みてなされたもので、ソフトウェアの名寄せを支援することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の実施の形態は、複数の情報装置にインストールされているソフトウェア資産を管理する管理装置であって、少なくともソフトウェア名がそれぞれ含まれる複数のソフトウェア定義情報を用いて、前記情報装置にインストールされているソフトウェアを名寄せする名寄せ手段と、前記名寄せ手段によるソフトウェアの名寄せが失敗した場合、機械学習の手法により、前記複数のソフトウェア定義情報のうち、前記名寄せが失敗したソフトウェアとの類似度に基づきソフトウェア定義情報を選択する選択手段と、前記選択手段により選択された前記ソフトウェア定義情報を、前記名寄せが失敗したソフトウェアに類似するソフトウェアに関する情報としてユーザにレコメンドするレコメンド手段と、を有することを特徴とする。
【発明の効果】
【００１０】
ソフトウェアの名寄せを支援することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係る資産管理システムの全体構成の一例を示す図である。
【図２】本実施形態に係る管理装置の機能構成の一例を示す図である。
【図３】ソフトウェアインベントリ情報の一例を示す図である。
【図４】ソフトウェア定義情報の一例を示す図である。
【図５】ソフトウェア定義情報の作成処理の一例を示すフローチャートである。
【図６】名寄せ処理の一例を示すフローチャートである。
【図７】アラート画面の一例を示す図である。
【図８】追加ソフトウェア定義レコードの一例を説明する図である。
【図９】ソフトウェア定義情報の更新処理の一例を示すフローチャートである。
【図１０】ソフトウェア定義情報への反映及びフィードバックの一例を説明する図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態（以降、「本実施形態」とも表す。）について、図面を参照しながら説明する。本実施形態では、ＩＴ資産としてソフトウェア資産を管理する資産管理システム１について説明する。なお、以下で説明する実施形態は一例に過ぎず、本発明が適用される実施形態は、以下の実施形態に限られるわけではない。
【００１３】
＜全体構成＞
まず、本実施形態に係る資産管理システム１の全体構成について、図１を参照しながら説明する。図１は、本実施形態に係る資産管理システム１の全体構成の一例を示す図である。
【００１４】
図１に示すように、本実施形態に係る資産管理システム１は、管理装置１０と、収集装置２０と、１以上の情報装置３０と、管理者端末４０とを有する。
【００１５】
情報装置３０は、例えばＰＣやスマートフォン、タブレット端末等の各種端末やサーバ装置等である。情報装置３０には、例えば、各種ソフトウェアがインストールされている。情報装置３０にインストールされているソフトウェアが、管理装置１０による管理対象のソフトウェア資産である。また、情報装置３０自身（又は、情報装置３０に含まれる各種機器又は装置等）は、管理装置１０による管理対象のハードウェア資産である。なお、ソフトウェアには、ライセンス契約等により購入したソフトウェアやプリインストールされているソフトウェア、或るソフトウェアに対する更新プログラム、セキュリティパッチ等が含まれる。
【００１６】
また、情報装置３０には、当該情報装置３０にインストールされているソフトウェアに関する情報を示すソフトウェアインベントリ情報を収集装置２０に送信する専用のソフトウェア（インベントリ収集用ソフトウェア）がインストールされている。なお、インベントリ収集用ソフトウェアは、当該情報装置３０自身（又は、情報装置３０に含まれる各種機器又は装置等）に関する情報を示すハードウェアインベントリ情報も収集装置２０に送信しても良い。以降では、インベントリ収集用ソフトウェアは、ソフトウェアインベントリ情報を収集装置２０に送信するものとして説明をする。
【００１７】
ここで、インベントリとは、保有資産を示す用語であり、ＩＴ資産管理等の分野で広く用いられている用語である。なお、インベントリ収集用ソフトウェア自身も、管理装置１０による管理対象のソフトウェアに含まれていても良い。
【００１８】
ただし、収集装置２０が情報装置３０からソフトウェアインベントリ情報を取得することができる場合（すなわち、例えば、エージェントレス方式のインベントリ収集用ソフトウェアが収集装置２０にインストールされている場合等）には、当該情報装置３０にインベントリ収集用ソフトウェアがインストールされていなくても良い。
【００１９】
収集装置２０は、情報装置３０から送信されたソフトウェアインベントリ情報を収集するコンピュータ又はコンピュータシステムである。収集装置２０は、情報装置３０から収集したソフトウェアインベントリ情報を管理装置１０に送信する。
【００２０】
なお、収集装置２０は、管理装置１０と一体で構成されていても良い。すなわち、収集装置２０が備える機能（ソフトウェアインベントリ情報の収集機能）を管理装置１０が有していても良い。
【００２１】
管理装置１０は、ＩＴ資産を管理するコンピュータ又はコンピュータシステムである。管理装置１０は、収集装置２０が収集したソフトウェアインベントリ情報を用いて、ソフトウェア名の名寄せを行って、ソフトウェアをソフトウェア資産として登録する。また、管理装置１０は、機械学習の手法を用いて、名寄せができなかったソフトウェアに対して、当該ソフトウェアに近いソフトウェアをユーザ（例えば、管理者端末４０のユーザ等）にレコメンドする。
【００２２】
ここで、名寄せとは、ソフトウェアインベントリ情報に含まれる各ソフトウェア名に対して、後述するソフトウェア定義レコードを特定することである。ソフトウェア定義レコードには、ソフトウェアを一意に識別するＩＤ（ソフトウェアＩＤ）と、ソフトウェア名とが含まれている。したがって、ソフトウェアインベントリ情報に含まれる各ソフトウェア名に対して名寄せが行われることで、特定されたソフトウェア定義レコードに含まれるソフトウェアＩＤを用いて、これらのソフトウェアＩＤに対応するソフトウェアがソフトウェア資産管理台帳に登録されているか否かを判定することができるようになる。
【００２３】
管理者端末４０は、例えばＰＣやスマートフォン、タブレット端末等の各種端末であり、例えば、情報装置３０の管理者等が利用する。管理者端末４０には、例えば、管理装置１０から通知されたアラートの一覧等が表示される。なお、管理者端末４０は、管理装置１０と一体で構成されていても良い。
【００２４】
＜機能構成＞
次に、本実施形態に係る管理装置１０の機能構成について、図２を参照しながら説明する。図２は、本実施形態に係る管理装置１０の機能構成の一例を示す図である。
【００２５】
図２に示すように、本実施形態に係る管理装置１０は、ソフトウェア定義処理部１１０と、名寄せ処理部１２０と、台帳登録部１３０とを有する。これら各機能部は、管理装置１０にインストールされた１以上のプログラムがＣＰＵ（Central Processing Unit）に実行させる処理により実現される。
【００２６】
また、本実施形態に係る管理装置１０は、記憶部１４０を有する。当該記憶部は、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等を用いて実現可能である。なお、当該記憶部は、管理装置１０とネットワークを介して接続される記憶装置等を用いて実現されていても良い。
【００２７】
記憶部１４０には、ソフトウェアインベントリ情報２１０と、ソフトウェア定義情報２２０と、ソフトウェア資産管理台帳情報２３０とが記憶されている。なお、これらの各情報は、１つの記憶装置を用いて実現された記憶部１４０に記憶されていても良いし、複数の記憶装置を用いて実現された記憶部１４０に記憶されていても良い。
【００２８】
ソフトウェアインベントリ情報２１０は、収集装置２０により、情報装置３０毎に収集されたソフトウェアインベントリ情報である。１つのソフトウェアインベントリ情報２１０には、当該情報装置３０にインストールされているソフトウェア毎に、当該ソフトウェアに関する情報（例えば、ソフトウェア名やインストール日等）を示すレコード（以降、「ソフトウェアインベントリレコード」とも表す。）が含まれている。ソフトウェアインベントリ情報の詳細については後述する。
【００２９】
ソフトウェア定義情報２２０は、ソフトウェアの定義やソフトウェアの特徴量等が含まれる情報である。１つのソフトウェア定義情報２２０には、ソフトウェア毎に、当該ソフトウェアの定義（例えば、ソフトウェア名等）や特徴量等で構成されるレコード（以降、「ソフトウェア定義レコード」とも表す。）が含まれる。このようなソフトウェア定義情報２２０は、機械学習の手法を用いて、ソフトウェア定義処理部１１０により作成される。ソフトウェア定義情報２２０の詳細については後述する。
【００３０】
ソフトウェア資産管理台帳情報２３０は、ソフトウェア資産管理台帳を示す情報である。ソフトウェアＩＤやソフトウェア名、メーカ名等が含まれる情報がソフトウェア資産管理台帳情報２３０に登録されることで、当該ソフトウェアＩＤにより識別されるソフトウェアがソフトウェア資産として管理される。
【００３１】
ソフトウェア定義処理部１１０は、機械学習の手法を用いて、ソフトウェア辞書情報２４０からソフトウェア定義情報２２０を作成する処理を行う。また、ソフトウェア定義処理部１１０は、当該機械学習の手法を用いて、ソフトウェア定義情報２２０と、レコメンドしたソフトウェア定義レコードのうちのユーザにより選択されたソフトウェア定義レコードとからソフトウェア定義情報２２０を更新する処理を行う。
【００３２】
ここで、ソフトウェア定義情報２２０は、当該機械学習の手法における学習データセットであり、当該ソフトウェア定義情報２２０を構成する各ソフトウェア定義レコードは、学習データである。機械学習の手法としては、レコメンデーションのタスクに用いられる任意の手法（例えば、近傍探索や協調フィルタリング等）を用いることができるが、本実施形態では、一例として、近傍探索を用いる場合について説明する。近傍探索では、ソフトウェア名の特徴量を用いて、名寄せができなかったソフトウェアと距離が近い順に所定の件数のソフトウェア定義レコードがユーザにレコメンドされる。なお、距離は、類似度と称されても良い。
【００３３】
ソフトウェア定義処理部１１０には、トークン分割部１１１と、頻度計算部１１２と、特徴ベクトル計算部１１３と、レコード作成部１１４とが含まれる。
【００３４】
トークン分割部１１１は、ソフトウェア定義情報２２０の作成時に、ソフトウェア辞書情報２４０を構成する各レコードに含まれるソフトウェア名を所定のトークンに分割する。また、トークン分割部１１１は、ソフトウェア定義情報２２０の更新時に、更新対象のソフトウェア定義情報２２０を構成する各レコードに含まれるソフトウェア名を所定のトークンに分割する。ソフトウェア名をトークンに分割する手法としては、例えば、Ｎ−ｇｒａｍやわかち書き等の手法が用いられる。なお、わかち書きとは、例えば、文字列をスペースや形態素解析により分割する手法のことである。
【００３５】
頻度計算部１１２は、トークン分割部１１１により分割されたトークンを用いて、ＴＦ−ＩＤＦ（単語頻度−逆文書頻度）によりＴＦ値及びＩＤＦ値を計算する。
【００３６】
特徴ベクトル計算部１１３は、頻度計算部１１２により計算されたＴＦ値及びＩＤＦ値を用いて、ソフトウェア辞書情報２４０又は更新対象のソフトウェア定義情報２２０を構成する各レコードに含まれるソフトウェア名の特徴ベクトルを計算する。ここで、特徴ベクトルは、例えば、Ｂａｇ−ｏｆ−Ｗｏｒｄｓによって表現されたベクトルである。
【００３７】
レコード作成部１１４は、ソフトウェア辞書情報２４０又は更新対象のソフトウェア定義情報２２０を構成する各レコードと、頻度計算部１１２により計算されたＴＦ値と、特徴ベクトル計算部１１３により計算された特徴ベクトルとを用いて、ソフトウェア定義レコードを作成する。例えば、ソフトウェア定義情報２２０の作成時では、レコード作成部１１４は、ソフトウェア辞書情報２４０を構成する各レコードに含まれるソフトウェア定義（例えば、ソフトウェア名等）と、ＴＦ値と、特徴ベクトルとを対応付けることで、ソフトウェア定義レコードを作成する。また、例えば、ソフトウェア定義情報２２０の更新時では、レコード作成部１１４は、ＴＦ値及び特徴ベクトルを用いて、更新対象のソフトウェア定義情報２２０を構成するソフトウェア定義レコードを更新する。なお、以降では、ソフトウェア辞書情報２４０を構成するレコードを「ソフトウェア辞書レコード」とも表す。
【００３８】
名寄せ処理部１２０は、ソフトウェア定義情報２２０を用いて、ソフトウェアインベントリ情報２１０を構成する各レコードに含まれるソフトウェア名の名寄せを行う。ここで、名寄せ処理部１２０には、取得部１２１と、判定部１２２と、トークン分割部１２３と、頻度計算部１２４と、特徴ベクトル計算部１２５と、レコメンド対象選択部１２６と、アラート通知部１２７と、名寄せ登録部１２８とが含まれる。
【００３９】
取得部１２１は、ソフトウェアインベントリ情報２１０からソフトウェアインベントリレコードを１件取得する。
【００４０】
判定部１２２は、取得部１２１により取得されたソフトウェアインベントリレコードに含まれるソフトウェア名がソフトウェア定義情報２２０に登録されているか否かを判定する。言い換えれば、判定部１２２は、ソフトウェアインベントリレコードに含まれるソフトウェア名の名寄せを行うことができたか否かを判定する。このとき、判定部１２２は、ソフトウェアインベントリレコードに含まれるソフトウェア名がソフトウェア定義情報２２０に登録されていると判定された場合、当該ソフトウェア名の名寄せが行われたと判定する。一方で、判定部１２２は、ソフトウェアインベントリレコードに含まれるソフトウェア名がソフトウェア定義情報２２０に登録されていないと判定された場合、当該ソフトウェア名の名寄せを行うことができなかったと判定する。
【００４１】
トークン分割部１２３は、ソフトウェアインベントリレコードに含まれるソフトウェア名の名寄せを行うことができなかった場合（すなわち、名寄せが失敗した場合）、当該ソフトウェア名を所定のトークンに分割する。ソフトウェア名をトークンに分割する手法は、ソフトウェア定義処理部１１０のトークン分割部１１１と同様の手法を用いる。
【００４２】
頻度計算部１２４は、トークン分割部１２３により分割されたトークンを用いて、ＴＦ−ＩＤＦによりＴＦ値を計算する。
【００４３】
特徴ベクトル計算部１２５は、頻度計算部１２４により計算されたＴＦ値と、予め計算されているＩＤＦ値とを用いて、取得部１２１により取得されたソフトウェアインベントリレコードに含まれるソフトウェア名の特徴ベクトルを計算する。
【００４４】
レコメンド対象選択部１２６は、特徴ベクトル計算部１２５により計算された特徴ベクトルと、ソフトウェア定義情報２２０を構成する各ソフトウェア定義レコードに含まれる特徴ベクトルとを用いて、レコメンド対象のソフトウェア定義レコードを選択する。これにより、ユーザにレコメンドされるソフトウェア定義レコードが選択される。
【００４５】
アラート通知部１２７は、レコメンド対象選択部１２６によりソフトウェア定義レコードが選択された場合（すなわち、名寄せを行うことができなかったソフトウェア名がソフトウェアインベントリ情報２１０に存在する場合）、アラートを通知する。アラートの通知先としては、例えば、管理者端末４０が挙げられる。なお、名寄せを行うことができなかったソフトウェア名のソフトウェアがインストールされている情報装置３０にアラートが通知されても良い。
【００４６】
名寄せ登録部１２８は、例えば管理者端末４０等の操作に応じて、名寄せを行うことができなかったソフトウェア名と、ユーザにより選択されたソフトウェア定義レコードとを用いて、追加ソフトウェア定義レコードを作成する。そして、名寄せ登録部１２８は、追加ソフトウェア定義レコードをソフトウェア定義情報２２０に追加する。これにより、名寄せを行うことができなかったソフトウェア名が含まれるレコードがソフトウェア定義情報２２０に追加される。
【００４７】
なお、名寄せ処理部１２０には、トークン分割部１２３と、頻度計算部１２４と、特徴ベクトル計算部１２５とが含まれていなくても良い。この場合、名寄せ処理部１２０は、ソフトウェア定義処理部１１０のトークン分割部１１１と、頻度計算部１１２と、特徴ベクトル計算部１１３によってトークン分割とＴＦ値の計算と特徴ベクトルの計算とを行えば良い。
【００４８】
台帳登録部１３０は、名寄せ処理部１２０による名寄せが失敗した場合、名寄せ登録部１２８により作成された追加ソフトウェア定義レコードを用いて、当該追加ソフトウェア定義レコードに含まれるソフトウェアＩＤやソフトウェア名等をソフトウェア資産管理台帳情報２３０に登録する。これにより、当該ソフトウェアＩＤ及びソフトウェア名のソフトウェアがソフトウェア資産として管理される。
【００４９】
また、台帳登録部１３０は、名寄せ処理部１２０による名寄せが行われたソフトウェアであっても（すなわち、名寄せが成功した場合であっても）、ソフトウェア資産管理台帳情報２３０に登録されていない場合は、当該ソフトウェアに関する情報をソフトウェア資産管理台帳情報２３０に登録する。なお、本実施形態では、名寄せ処理部１２０により名寄せが行われたソフトウェアは、ソフトウェア資産管理台帳情報２３０に登録されているものとする。
【００５０】
＜ソフトウェアインベントリ情報２１０＞
ここで、ソフトウェアインベントリ情報２１０について、図３を参照しながら説明する。図３は、ソフトウェアインベントリ情報２１０の一例を示す図である。
【００５１】
図３に示すように、ソフトウェアインベントリ情報２１０には、１以上のソフトウェアインベントリレコードが含まれる。また、これらの各レコードには、「ハードウェアＩＤ」、「ソフトウェア名」、「メーカ名」及び「インストール日」等が含まれる。
【００５２】
「ハードウェアＩＤ」は、ソフトウェアインベントリ情報２１０の収集元の情報装置３０を一意に識別するＩＤである。「ソフトウェア名」は、当該情報装置３０にインストールされているソフトウェアの名称である。なお、この名称は、例えば、ソフトウェアのインストール名である。
【００５３】
「メーカ名」は、当該ソフトウェアの製造メーカの名称である。「インストール日」は、当該ソフトウェアを当該情報装置３０にインストールした日付である。なお、「インストール日」は、当該ソフトウェアを当該情報装置３０にインストールした日時であっても良い。
【００５４】
このように、１つのソフトウェアインベントリ情報２１０は、１台の情報装置３０にインストールされている各ソフトウェアのソフトウェア名等が含まれるソフトウェアインベントリレコードで構成されている。
【００５５】
＜ソフトウェア定義情報２２０＞
次に、ソフトウェア定義情報２２０について、図４を参照しながら説明する。図４は、ソフトウェア定義情報２２０の一例を示す図である。
【００５６】
図４に示すように、ソフトウェア定義情報２２０には、１以上のソフトウェア定義レコードが含まれる。また、これらの各レコードには、「ソフトウェアＩＤ」、「ソフトウェア名」、「メーカ名」、「有償／無償区分」、「種別」、「ＴＦ値」及び「特徴ベクトル」等が含まれる。
【００５７】
「ソフトウェアＩＤ」は、上述したように、ソフトウェアを一意に識別するＩＤである。「ソフトウェア名」は、ソフトウェアの名称である。なお、この名称は、インストール名であっても良いし、例えば正規化された名称であっても良い。正規化された名称とは、例えば、半角や全角、空白の有無等の表記法を統一したソフトウェア名のことである。
【００５８】
「メーカ名」は、上述したように、当該ソフトウェアの製造メーカの名称である。「有償／無償区分」は、当該ソフトウェアが有償又は無償のいずれであるかを示す区分である。「種別」は、当該ソフトウェアの種別である。ソフトウェアの種別としては、例えば、「業務系」、「ユーティリティ」、「その他」等がある。「業務系」とは、各種業務を直接的又は間接的に支援する機能を提供するソフトウェアであり、例えば、ワープロソフトや表計算ソフト等の各種アプリケーションソフトウェアが挙げられる。「ユーティリティ」とは、補助的な機能を提供するソフトウェアであり、例えば、プリンタドライバや暗号化ソフトウェア等が挙げられる。「その他」とは、「業務系」及び「ユーティリティ」以外のソフトウェアであり、例えば、ソフトウェアの更新プログラムやセキュリティパッチ等が挙げられる。
【００５９】
「ＴＦ値」は、頻度計算部１１２又は頻度計算部１２４により計算されたＴＦ値（ソフトウェア名に含まれる各トークンのＴＦ値）である。「特徴ベクトル」は、特徴ベクトル計算部１１３又は特徴ベクトル計算部１２５により計算された特徴ベクトルである。
【００６０】
このように、ソフトウェア定義情報２２０は、ソフトウェアＩＤやソフトウェア名、有償／無償区分、ＴＦ値、特徴ベクトル等が含まれるソフトウェア定義レコードで構成されている。ここで、例えば、ソフトウェアＩＤと、ソフトウェア名と、メーカ名と、有償／無償区分と、種別とがソフトウェア定義に該当する。ただし、ソフトウェア定義には、少なくともソフトウェアＩＤとソフトウェア名とが含まれていれば良い。
【００６１】
＜ソフトウェア定義情報２２０の作成処理＞
以降では、ソフトウェア辞書情報２４０からソフトウェア定義情報２２０を作成する処理について、図５を参照しながら説明する。図５は、ソフトウェア定義情報の作成処理の一例を示すフローチャートである。なお、ソフトウェア定義情報２２０の作成処理は、例えば、本実施形態に係る資産管理システム１の稼働を開始する際に、１度実行されれば良い。ただし、必要に応じて、適宜、ソフトウェア定義情報２２０の作成処理が実行されても良い。
【００６２】
まず、ソフトウェア定義処理部１１０のトークン分割部１１１は、ソフトウェア辞書情報２４０を構成する各ソフトウェア辞書レコードに含まれるソフトウェア名を所定のトークンに分割する（ステップＳ１０１）。ここで、トークン分割部１１１は、例えば、Ｎ−ｇｒａｍやわかち書き等の手法により、各ソフトウェア辞書レコードにそれぞれ含まれるソフトウェア名をトークンに分割すれば良い。
【００６３】
なお、上記のソフトウェア辞書情報２４０は、記憶部１４０に記憶されていても良いし、例えばネットワークを介して取得されても良い。
【００６４】
次に、ソフトウェア定義処理部１１０の頻度計算部１１２は、トークン分割部１１１により分割されたトークンを用いて、各トークンのＴＦ値及びＩＤＦ値を計算する（ステップＳ１０２）。なお、ＴＦ値とは、１つの文書（すなわち、１つのソフトウェア名）中におけるトークンの出現頻度（例えば、出現回数）のことである。一方で、ＩＤＦ値とは、全ての文書（すなわち、全てのソフトウェア名）中におけるトークンの出現頻度の逆数のことである。なお、ＩＤＦ値は、トークン毎に、例えば、記憶部１４０に記憶される。
【００６５】
次に、ソフトウェア定義処理部１１０の特徴ベクトル計算部１１３は、頻度計算部１１２により計算されたＴＦ値及びＩＤＦ値を用いて、各ソフトウェア定義レコードに含まれるソフトウェア名の特徴ベクトルを計算する（ステップＳ１０３）。ここで、上記のステップＳ１０１でトークン分割部１１１により分割されたトークンの異なり語数をＭとすれば、各特徴ベクトルはＭ次元のベクトルで表すことができる。以降では、特徴ベクトルの各要素のうち、或るトークンｉ（１≦ｉ≦Ｍ）に対応する要素をｘｉで表す。
【００６６】
特徴ベクトル計算部１１３は、Ｂａｇ−ｏｆ−Ｗｏｒｄｓにより、例えば、ソフトウェア定義レコード毎に、当該ソフトウェア定義レコードのソフトウェア名に含まれるトークンｉのＴＦ値とＩＤＦ値との積（すなわち、ＴＦ−ＩＤＦ値）を要素ｘｉとするベクトルを特徴ベクトルとすれば良い。又は、特徴ベクトル計算部１１３は、例えば、ソフトウェア定義レコード毎に、当該ソフトウェア定義レコードのソフトウェア名にトークンｉが含まれる場合は要素ｘｉを１、そうでない場合は要素ｘｉを０としたベクトルを特徴ベクトルとしても良い。
【００６７】
次に、ソフトウェア定義処理部１１０のレコード作成部１１４は、ソフトウェア辞書情報２４０を構成する各レコードに含まれるソフトウェア定義と、頻度計算部１１２により計算されたＴＦ値と、特徴ベクトル計算部１１３により計算された特徴ベクトルとを用いて、ソフトウェア定義レコードを作成する（ステップＳ１０４）。すなわち、レコード作成部１１４は、ソフトウェア辞書情報２４０を構成する各レコード毎に、当該レコードに含まれるソフトウェア定義と、当該レコードから計算されたＴＦ値と、当該レコードから計算された特徴ベクトルとを対応付けたソフトウェア定義レコードを作成する。これにより、これらのソフトウェア定義レコードにより構成されるソフトウェア定義情報２２０が作成される。なお、ソフトウェア定義情報２２０が作成された後は、ソフトウェア辞書情報２４０が削除されても良い。
【００６８】
＜名寄せ処理＞
以降では、ソフトウェア定義情報２２０を用いて、ソフトウェアインベントリ情報２１０を構成する各ソフトウェアインベントリレコードのソフトウェア名を名寄せする処理について、図６を参照しながら説明する。図６は、名寄せ処理の一例を示すフローチャートである。以降では、或る情報装置３０から収集されたソフトウェアインベントリ情報２１０を構成する各ソフトウェアインベントリレコードのソフトウェア名を名寄せする場合について説明する。
【００６９】
まず、名寄せ処理部１２０の取得部１２１は、ソフトウェアインベントリ情報２１０からソフトウェアインベントリレコードを１件取得する（ステップＳ２０１）。
【００７０】
次に、名寄せ処理部１２０の判定部１２２は、取得部１２１により取得されたソフトウェアインベントリレコードに含まれるソフトウェア名がソフトウェア定義情報２２０に登録されているか否かを判定する（ステップＳ２０２）。すなわち、判定部１２２は、ソフトウェア定義情報２２０を構成する各レコードのうち、当該ソフトウェアインベントリレコードに含まれるソフトウェア名が含まれるレコードが存在するか否かを判定する。
【００７１】
ステップＳ２０２で当該ソフトウェア名がソフトウェア定義情報２２０に登録されていると判定された場合、名寄せ処理部１２０は、ステップＳ２０７に進む。この場合は、当該ソフトウェア名の名寄せが行われた場合である。
【００７２】
一方で、ステップＳ２０２で当該ソフトウェア名がソフトウェア定義情報２２０に登録されていないと判定された場合、名寄せ処理部１２０のトークン分割部１２３は、ソフトウェアインベントリレコードに含まれるソフトウェア名を所定のトークンに分割する（ステップＳ２０３）。ソフトウェア名をトークンに分割する手法は、上記のステップＳ１０１と同様の手法を用いる。
【００７３】
次に、名寄せ処理部１２０の頻度計算部１２４は、トークン分割部１２３により分割されたトークンを用いて、各トークンのＴＦ値を計算する（ステップＳ２０４）。
【００７４】
次に、名寄せ処理部１２０の特徴ベクトル計算部１２５は、頻度計算部１２４により計算されたＴＦ値と、記憶部１４０に記憶されているＩＤＦ値とを用いて、当該ソフトウェアインベントリレコードに含まれるソフトウェア名の特徴ベクトルを計算する（ステップＳ２０５）。すなわち、特徴ベクトル計算部１２５は、上記のステップＳ１０３と同様に、Ｂａｇ−ｏｆ−Ｗｏｒｄｓにより、特徴ベクトルを計算する。
【００７５】
次に、名寄せ処理部１２０のレコメンド対象選択部１２６は、特徴ベクトル計算部１２５により計算された特徴ベクトルと、ソフトウェア定義情報２２０を構成する各ソフトウェア定義レコードに含まれる特徴ベクトルとを用いて、レコメンド対象のソフトウェア定義レコードを選択する（ステップＳ２０６）。例えば、レコメンド対象選択部１２６は、特徴ベクトル計算部１２５により計算された特徴ベクトルと、ソフトウェア定義情報２２０を構成する各ソフトウェア定義レコードに含まれる特徴ベクトルとの距離を計算した上で、距離が近い順にＬ件のソフトウェア定義レコードをソフトウェア定義情報２２０から取得する。これにより、レコメンド対象として、Ｌ件のソフトウェア定義レコードが選択される。このように選択されたレコメンド対象は、例えば、当該ソフトウェアインベントリレコードと対応付けて記憶部１４０に記憶される。
【００７６】
なお、上記のＬは、管理装置１０の管理者等のユーザ等によって任意の値が設定される。また、上記の距離としては、例えば、ユークリッド距離、コサイン類似度、マンハッタン距離等の任意の距離を用いることができる。
【００７７】
ステップＳ２０６に続いて又はステップＳ２０２で該当のソフトウェア名がソフトウェア定義情報２２０に登録されていると判定された場合、名寄せ処理部１２０の取得部１２１は、ソフトウェアインベントリ情報２１０から全てのソフトウェアインベントリレコードを取得したか否かを判定する（ステップＳ２０７）。
【００７８】
ステップＳ２０７でソフトウェアインベントリ情報２１０から全てのソフトウェアインベントリレコードを取得したと判定されなかった場合、名寄せ処理部１２０は、ステップＳ２０１に戻る。これにより、ソフトウェアインベントリ情報２１０を構成する各ソフトウェアインベントリレコードに対して、上記のステップＳ２０２〜ステップＳ２０７の処理（ただし、ステップＳ２０３〜ステップＳ２０６の処理はステップＳ２０２でＮＯと判定された場合のみ）が繰り返し実行される。
【００７９】
一方で、ステップＳ２０７でソフトウェアインベントリ情報２１０から全てのソフトウェアインベントリレコードを取得したと判定された場合、名寄せ処理部１２０のアラート通知部１２７は、アラート通知要であるか否かを判定する（ステップＳ２０８）。アラート通知部１２７は、例えば、上記のステップＳ２０６でレコメンド対象が選択された場合はアラート通知要と判定し、一方で、上記のステップＳ２０６でレコメンド対象が選択されなかった場合（すなわち、上記のステップＳ２０６の処理が実行されなかった場合）はアラート通知不要と判定する。
【００８０】
ステップＳ２０８でアラート通知要であると判定されなかった場合、名寄せ処理部１２０は、名寄せ処理を終了する。この場合、当該ソフトウェアインベントリ情報２１０を構成する各ソフトウェアインベントリレコードに含まれる全てのソフトウェア名の名寄せが行われたことを意味する。
【００８１】
一方で、ステップＳ２０８でアラート通知要であると判定された場合、名寄せ処理部１２０のアラート通知部１２７は、アラートとして、名寄せが行われなかった（すなわち、名寄せが失敗した）ソフトウェアが存在することを通知する（ステップＳ２０９）。アラートの通知先としては、例えば、管理者端末４０が挙げられる。
【００８２】
＜アラート画面＞
ここで、例えば、アラートが通知された管理者端末４０は、Ｗｅｂブラウザ等により管理装置１０にアクセスすることで、例えば図７に示すアラート画面Ｇ１００を表示させることができる。図７は、アラート画面Ｇ１００の一例を示す図である。
【００８３】
図７に示すアラート画面Ｇ１００は、名寄せに失敗したソフトウェアが存在することを示す画面であり、アラート情報欄Ｇ１１０と、ソフトウェア定義レコメンド欄Ｇ１２０とが含まれる。
【００８４】
アラート情報欄Ｇ１１０には、名寄せに失敗したソフトウェアが存在することを示すアラートが表示される。ソフトウェア定義レコメンド欄Ｇ１２０には、名寄せに失敗したソフトウェアに近いソフトウェアの一覧が表示されるレコメンド欄Ｇ１２１が含まれる。このレコメンド欄Ｇ１２１には、上記のステップＳ２０６で選択されたレコメンド対象のソフトウェア定義レコードが一覧で表示される。
【００８５】
また、このレコメンド欄Ｇ１２１には、スコア一覧Ｇ１２２も表示される。スコアとは、上記のステップＳ２０６で計算された距離に基づく値であり、距離が小さい程、スコアが１に近くなる。すなわち、スコアが１に近い程、名寄せに失敗したソフトウェアのソフトウェア名と、ソフトウェア定義レコードのソフトウェア名とが近いことを表している。
【００８６】
ユーザは、レコメンド欄Ｇ１２１において、スコア一覧Ｇ１２２を参考にして、名寄せに失敗したソフトウェアと最も近いソフトウェアのソフトウェア定義レコードに対応する登録ボタンＧ１２３を押下する。これにより、名寄せ登録部１２８により追加ソフトウェア定義レコードが作成される。そして、名寄せ登録部１２８により追加ソフトウェア定義レコードがソフトウェア定義情報２２０に追加される。
【００８７】
このように、ユーザによって登録ボタンＧ１２３が押下されることで、名寄せを行うことができなかったソフトウェア名が含まれるレコード（追加ソフトウェア定義レコード）がソフトウェア定義情報２２０に追加される。後述するように、このソフトウェア定義情報２２０が更新されることで（すなわち、特徴ベクトルの再計算等が行われることで）、追加ソフトウェア定義レコードも名寄せ処理に用いることができるようになる。
【００８８】
＜追加ソフトウェア定義レコード＞
ここで、名寄せ登録部１２８により作成される追加ソフトウェア定義レコードについて、図８を参照しながら説明する。図８は、追加ソフトウェア定義レコードの一例を説明する図である。
【００８９】
図８に示すように、追加ソフトウェア定義レコードには、「ソフトウェアＩＤ」、「ソフトウェア名」、「メーカ名」、「有償／無償区分」、「種別」、「ＴＦ値」及び「特徴ベクトル」等が含まれる。
【００９０】
ここで、「ソフトウェアＩＤ」は、例えば、ソフトウェア定義情報２２０を構成する各レコードで一意になるように、名寄せ登録部１２８により生成される。「ソフトウェア名」は、名寄せに失敗したソフトウェアインベントリレコードのソフトウェア名が設定される。また、「メーカ名」、「有償／無償区分」及び「種別」は、ユーザにより選択されたソフトウェア定義レコード（すなわち、ユーザが押下した登録ボタンＧ１２３に対応するソフトウェア定義レコード）のメーカ名、有償／無償区分及び種別がそれぞれ設定される。一方で、「ＴＦ値」及び「特徴ベクトル」には値が設定されない。これらの「ＴＦ値」及び「特徴ベクトル」には、後述するように、ソフトウェア定義情報２２０の更新処理で値が設定される。ただし、「ＴＦ値」及び「特徴ベクトル」には、例えば、上記のステップＳ２０４及びステップＳ２０５で計算されたＴＦ値及び特徴ベクトル（すなわち、名寄せに失敗したソフトウェア名のＴＦ値及び特徴ベクトル）が設定されても良い。
【００９１】
このように、追加ソフトウェア定義レコードでは、名寄せに失敗したソフトウェアのソフトウェア名と、このソフトウェアに近いとユーザにより選択されたソフトウェアのソフトウェア定義（ただし、ソフトウェア名を除く）とが対応付けられている。これは、名寄せに失敗したソフトウェアのメーカ名や有償／無償区分、種別等として、このソフトウェアに近いとユーザにより選択されたソフトウェアのメーカ名や有償／無償区分、種別等を設定した追加ソフトウェア定義レコードが作成されることを意味する。
【００９２】
＜ソフトウェア定義情報２２０の更新処理＞
以降では、ソフトウェア定義情報２２０を更新する処理について、図９を参照しながら説明する。図９は、ソフトウェア定義情報２２０の更新処理の一例を示すフローチャートである。なお、ソフトウェア定義情報２２０の更新処理は、例えば、日次等の所定の時間毎に繰り返し実行される。図９の更新処理で更新対象となるソフトウェア定義情報２２０には、追加ソフトウェア定義レコードが含まれているものとする。
【００９３】
ただし、更新対象のソフトウェア定義情報２２０に追加ソフトウェア定義レコードが含まれていなくても良い。この場合、更新前後でソフトウェア定義情報２２０は同一となる。
【００９４】
まず、ソフトウェア定義処理部１１０のトークン分割部１１１は、ソフトウェア定義情報２２０を構成する各ソフトウェア定義レコード（追加ソフトウェア定義レコードも含む。）に含まれるソフトウェア名を所定のトークンに分割する（ステップＳ３０１）。ソフトウェア名をトークンに分割する手法は、上記のステップＳ１０１と同様の手法を用いる。
【００９５】
次に、ソフトウェア定義処理部１１０の頻度計算部１１２は、トークン分割部１１１により分割されたトークンを用いて、各トークンのＴＦ値及びＩＤＦ値を計算する（ステップＳ３０２）。なお、ＩＤＦ値は、トークン毎に、例えば、記憶部１４０に記憶（上書き）される。
【００９６】
次に、ソフトウェア定義処理部１１０の特徴ベクトル計算部１１３は、頻度計算部１１２により計算されたＴＦ値及びＩＤＦ値を用いて、各ソフトウェア定義レコードに含まれるソフトウェア名の特徴ベクトルを計算する（ステップＳ３０３）。すなわち、特徴ベクトル計算部１１３は、上記のステップＳ１０３と同様に、Ｂａｇ−ｏｆ−Ｗｏｒｄｓにより、特徴ベクトルを計算する。
【００９７】
次に、ソフトウェア定義処理部１１０のレコード作成部１１４は、ソフトウェア定義レコード毎に、上記のステップＳ３０２で計算されたＴＦ値と、上記のステップＳ３０３で計算された特徴ベクトルとで、当該ソフトウェア定義レコードに含まれるＴＦ値と特徴ベクトルとをそれぞれ更新する（ステップＳ３０４）。これにより、ソフトウェア定義情報２２０が更新される。すなわち、追加ソフトウェア定義レコードも含む、ソフトウェア定義情報２２０の各レコードが更新される。したがって、この更新後のソフトウェア定義情報２２０を用いて、上記の名寄せ処理を行うことができる。
【００９８】
＜まとめ＞
以上のように、本実施形態に係る資産管理システム１では、情報装置３０にインストールされているソフトウェアの名寄せを行うことができる。このとき、本実施形態に係る資産管理システム１では、機械学習の手法を用いて、名寄せができなかったソフトウェアに近いソフトウェアをユーザにレコメンドする。そして、本実施形態に係る資産管理システム１では、レコメンドしたソフトウェアに対するユーザの選択に応じて、レコメンドに用いられる学習データセット（ソフトウェア定義情報２２０）を再学習する。
【００９９】
すなわち、本実施形態に係る資産管理システム１では、図１０に示すように、ソフトウェア定義情報２２０の作成処理により学習データセット（ソフトウェア定義情報２２０）を作成した後、名寄せ処理により、名寄せに失敗したソフトウェアに近いソフトウェアをユーザにレコメンドする。そして、本実施形態に係る資産管理システム１では、レコメンドしたソフトウェアに対するユーザの選択を、ソフトウェア定義情報２２０の更新処理によって反映する。これにより、学習データセットの再学習が行われ、再学習の結果が名寄せ処理にフィードバックされる。
【０１００】
このように、本実施形態に係る資産管理システム１は、レコメンドしたソフトウェアに対するユーザの選択の反映と、学習データセットの再学習とを繰り返す。これにより、本実施形態に係る資産管理システム１では、ソフトウェアの名寄せに失敗した場合に、より高い精度で、名寄せに失敗したソフトウェアに近いソフトウェアをレコメンドすることができるようになる。
【０１０１】
なお、本実施形態では、機械学習の手法として近傍探索を用いたが、レコメンデーションのタスクに用いられる任意の機械学習の手法を用いることができる。
【０１０２】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０１０３】
１        資産管理システム
１０      管理装置
２０      収集装置
３０      情報装置
１１０    ソフトウェア定義処理部
１１１    トークン分割部
１１２    頻度計算部
１１３    特徴ベクトル計算部
１１４    レコード作成部
１２０    名寄せ処理部
１２１    取得部
１２２    判定部
１２３    トークン分割部
１２４    頻度計算部
１２５    特徴ベクトル計算部
１２６    レコメンド対象選択部
１２７    アラート通知部
１２８    名寄せ登録部
１３０    台帳登録部
１４０    記憶部
２１０    ソフトウェアインベントリ情報
２２０    ソフトウェア定義情報
２３０    ソフトウェア資産管理台帳情報
２４０    ソフトウェア辞書情報
【図１】
2020004005.tif 000003
【図２】
2020004005.tif 000004
【図３】
2020004005.tif 000005
【図４】
2020004005.tif 000006
【図５】
2020004005.tif 000007
【図６】
2020004005.tif 000008
【図７】
2020004005.tif 000009
【図８】
2020004005.tif 000010
【図９】
2020004005.tif 000011
【図１０】
2020004005.tif 000012