(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-20
(45)【発行日】2024-10-01
(54)【発明の名称】検索システム及び検索方法
(51)【国際特許分類】
G06F 16/33 20190101AFI20240924BHJP
G06F 8/36 20180101ALI20240924BHJP
【FI】
G06F16/33
G06F8/36
(21)【出願番号】P 2021145603
(22)【出願日】2021-09-07
【審査請求日】2023-07-27
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】忍頂寺 毅
(72)【発明者】
【氏名】山元 和子
(72)【発明者】
【氏名】山下 剛
(72)【発明者】
【氏名】張 磊
(72)【発明者】
【氏名】浜 功樹
【審査官】早川 学
(56)【参考文献】
【文献】特開2007-304685(JP,A)
【文献】特開平10-063495(JP,A)
【文献】特開2021-056581(JP,A)
【文献】特開2014-067154(JP,A)
【文献】特開2015-197722(JP,A)
【文献】特開2013-033387(JP,A)
【文献】特開2019-159919(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 8/00- 8/77
(57)【特許請求の範囲】
【請求項1】
複数のソフトウェア部品の各々に関する複数の第1文書ベクトルを記憶する記憶手段と
ソフトウェア部品の実行環境を表す第1単語とソフトウェア部品の機能を表す複数の第2単語を含む検索語句を受信し、前記第1単語と前記複数の第2単語の各々の組合せに基づく複数の第2文書ベクトルを生成する生成手段と、
前記複数の第2文書ベクトルと前記複数の第1文書ベクトルとの複数の類似度に基づいて前記複数の第1文書ベクトルの中から文書ベクトル組合せを探す検索手段と、
前記文書ベクトル組合せに関する複数のソフトウェア部品を表すソフトウェア部品組合せ情報を出力する出力手段と、
を具備する検索
システム。
【請求項2】
前記生成手段は、
単一のソフトウェア部品又はソフトウェア部品の組合せを選択する選択情報も受信し、
前記選択情報が単一のソフトウェア部品を選択する場合、前記第1単語と前記複数の第2単語に基づく第3文書ベクトルを生成し、
前記選択情報がソフトウェア部品の組合せを選択する場合、前記複数の第2文書ベクトルを生成し、
前記検索手段は、
前記選択情報が単一のソフトウェア部品を選択する場合、前記第3文書ベクトルと前記複数の第1文書ベクトルとの複数の類似度に基づいて前記複数の第1文書ベクトルの中から少なくとも1つの文書ベクトルを探し、
前記選択情報がソフトウェア部品の組合せを選択する場合、前記文書ベクトル組合せを探し、
前記出力手段は、
前記選択情報が単一のソフトウェア部品を選択する場合、前記少なくとも1つの文書ベクトルを表すソフトウェア部品単品情報を出力し、
前記選択情報がソフトウェア部品の組合せを選択する場合、前記ソフトウェア部品組合せ情報を出力する、請求項1記載の検索
システム。
【請求項3】
前記選択情報は、単一のソフトウェア部品及び複数のソフトウェア部品の組合せをさらに選択し、
前記生成手段は、
前記選択情報が単一のソフトウェア部品及びソフトウェア部品の組合せを選択する場合、前記第3文書ベクトルと前記複数の第2文書ベクトルを生成し、
前記検索手段は、
前記選択情報が単一のソフトウェア部品及びソフトウェア部品の組合せを選択する場合、前記少なくとも1つの文書ベクトル及び/又は前記文書ベクトル組合せを探し、
前記出力手段は、
前記選択情報が単一のソフトウェア部品及びソフトウェア部品の組合せを選択する場合、前記ソフトウェア部品単品情報及び/又は前記ソフトウェア部品組合せ情報を出力する、請求項2記載の検索
システム。
【請求項4】
前記生成手段は、
ソフトウェア部品の実行環境を表す複数の単語とソフトウェア部品の機能を表す複数の単語を記憶するテーブルを備え、
前記検索語句から単語を抽出し、抽出した単語が前記第1単語であるか前記第2単語であるかを前記テーブルを参照して判断する、請求項1乃至請求項3のいずれか一項記載の検索
システム。
【請求項5】
前記検索手段は、
前記複数の第2文書ベクトルの各々に含まれる単語の重み情報を受信し、
前記重み情報に応じて前記複数の類似度を計算する、請求項1記載の検索
システム。
【請求項6】
前記複数のソフトウェア部品の各々に関する文書に含まれる単語の出現頻度に応じて前記複数の第1文書ベクトルを生成する第2生成手段をさらに具備し、
前記記憶手段は、前記第2生成手段により生成された前記複数の第1文書ベクトルを記憶する、請求項1乃至請求項3のいずれか一項記載の検索
システム。
【請求項7】
前記検索語句を入力する入力手段と、
前記検索語句及び前記ソフトウェア部品組合せ情報を表示する表示手段と、
を
さらに具備する
請求項1乃至請求項6のいずれか一項記載の検索システム。
【請求項8】
前記表示手段は、前記複数のソフトウェア部品の並列組合せを示す第1情報又は前記複数のソフトウェア部品の従属組合せを示す第2情報を表示する、請求項7記載の
検索システム。
【請求項9】
前記表示手段は、前記複数の類似度の計算における第2文書ベクトル内の前記第1単語と前記複数の第2単語夫々の重みを前記第1単語と前記複数の第2単語と共に表示し、
前記入力手段は、前記重みを変更する手段を備える、請求項7記載の
検索システム。
【請求項10】
プロセッサがプログラムを実行することによりソフトウェア部品の実行環境を表す第1単語とソフトウェア部品の機能を表す複数の第2単語を含む検索語句を受信することと、
前記プロセッサが前記プログラムを実行することにより前記第1単語と前記複数の第2単語の各々の組合せに基づく複数の第2文書ベクトルを生成することと、
前記プロセッサが前記プログラムを実行することにより複数のソフトウェア部品の各々に関する複数の第1文書ベクトルと前記複数の第2文書ベクトルとの複数の類似度に基づいて前記複数の第1文書ベクトルから文書ベクトル組合せを探すことと、
前記プロセッサが前記プログラムを実行することにより前記文書ベクトル組合せに関する複数のソフトウェア部品を表すソフトウェア部品組合せ情報を出力すること、と
を具備する検索方法。
【請求項11】
前記プロセッサが前記プログラムを実行することにより前記検索語句及び前記ソフトウェア部品組合せ情報を表示することをさらに具備する、請求項10記載の検索方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、検索システム及び検索方法に関する。
【背景技術】
【0002】
検索装置は、ユーザにより入力された検索語句と多数の情報との類似度を求めて、類似度の高い情報を検索結果として出力する。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2001-14154号公報
【文献】国際公開第2016/151865号
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来の検索装置では、検索語句に基づき求めた類似度の高い情報が必ずしもユーザが必要としている情報ではない場合があった。
【0005】
本発明の目的は、ユーザが必要とする情報を出力する検索システム及び検索方法を提供することである。
【課題を解決するための手段】
【0006】
実施形態による検索システムは、複数のソフトウェア部品の各々に関する複数の第1文書ベクトルを記憶する記憶手段と、ソフトウェア部品の実行環境を表す第1単語とソフトウェア部品の機能を表す複数の第2単語を含む検索語句を受信し、前記第1単語と前記複数の第2単語の各々の組合せに基づく複数の第2文書ベクトルを生成する生成手段と、前記複数の第2文書ベクトルと前記複数の第1文書ベクトルとの複数の類似度に基づいて前記複数の第1文書ベクトルの中から文書ベクトル組合せを探す検索手段と、前記文書ベクトル組合せに関する複数のソフトウェア部品を表すソフトウェア部品組合せ情報を出力する出力手段と、を具備する。
【図面の簡単な説明】
【0007】
【
図1】第1実施形態による検索システムのハードウェアの一例を示すブロック図。
【
図2】検索システムの中の端末装置と検索装置の一例を示す機能ブロック図。
【
図3】端末装置の表示デバイスの画面構成の一例を示す図。
【
図12】データベースが記憶するデータの一例を示す図。
【
図13】ソフトウェア部品文書ベクトル生成部の処理の一例を示すフローチャート。
【
図14】ソフトウェア部品文書ベクトル管理部が記憶する管理テーブルの一例を示す図。
【
図15】クエリ生成部の処理の一例を示すフローチャート。
【
図16】類似度評価部の処理の一例を示すフローチャート。
【
図17】ソフトウェア部品文書ベクトル管理部の管理する管理情報の他の例を示す図。
【発明を実施するための形態】
【0008】
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。いくつかの要素に複数の呼称を付す場合があるが、これら呼称の例はあくまで例示であり、これらの要素に他の呼称を付すことを否定するものではない。複数の呼称が付されていない要素についても、他の呼称を付すことを否定するものではない。以下の説明において、「接続」は直接接続のみならず、他の要素を介して接続されることも意味する。
【0009】
以下、図面を参照しながら本実施の形態について詳細に説明する。
図1は、第1実施形態による検索システムのハードウェアの一例を示すブロック図である。検索システムは、端末装置10、検索装置30及びデータベース50を備える。端末装置10は、検索条件等を入力し、検索装置30から送信された検索結果を表示する。端末装置10は、ネットワークを介して検索装置30に接続される。検索装置30は、検索条件に基づいて、データベース50を検索し、検索条件に基づいてデータを探し、探したデータを検索結果として端末装置10に送信する。検索装置30は、サーバとも称される。端末装置10は、クライアントとも称される。端末装置10は、検索装置30の外付けの装置ではなく、検索装置30に内蔵される装置であってもよい。データベース50も、検索装置30の外付けの装置ではなく、検索装置30に内蔵される装置であってもよい。
【0010】
検索対象のデータは、どのようなデータでもよい。この明細書では、検索装置30は、データの一例としてソフトウェアを探す。近年、汎用的なハードウェアをソフトウェアにより制御することにより、汎用的なハードウェアに多彩な機能を実現させている。ソフトウェア開発の効率化のために、ソフトウェアのソースコードを一般に公開し、ソースコードの利用を許可するオープンソースソフトウェア(OSS)の活用が考えられている。OSSでは、ソフトウェアを効率よく探す仕組みが望まれている。
【0011】
実施形態による検索システムは、このような仕組みを提供するものである。ソフトウェアは、複数のソフトウェアを利用して開発されることがある。そのため、この明細書では、ソフトウェアを構成する単位をソフトウェア部品(以下、SW部品と称される)と称され、検索対象はSW部品と称され、データベース50は、多数のSW部品を記憶する。データベース50の例は、ソフトウェアレポジトリ(GitHub等)、パッケージマネージャーのレポジトリである。これらは、Perl(cpan.org)、Python(pypi.org)、javaScript(登録商標)(npmjs.com)やJAVA(登録商標)(mvnrepository.com)等のプログラミング言語毎、ディストリビューション(オペレーティングシステム(OS)、ライブラリ及びソフトウェアを一体化したもの)毎のものが知られている。
【0012】
端末装置10は、SW部品の実行環境や機能等を指定する検索語句を含む検索条件を検索装置30に送信する。実行環境の例は、動作OS、実装言語、CPUの種類、CPU搭載のボードの種類(組み込み機器か否か等)、フレームワーク(仮想マシンで動作するもの、モバイル用、クラウド上で動作するもの)である。機能の例は、認証、決裁である。
【0013】
端末装置10は、入力デバイス12、表示デバイス14、CPU16、通信デバイス18及びメモリ20を備える。入力デバイス12は、キーボード、マウス等である。入力デバイス12、表示デバイス14、CPU16、通信デバイス18及びメモリ20は、バスライン22に接続される。CPU16は、メモリ20に記憶されたプログラムを実行することにより、端末装置10の複数の機能を実現する。
【0014】
検索装置30は、CPU32、ストレージデバイス34及び通信デバイス36を備える。CPU32、ストレージデバイス34及び通信デバイス36は、バスライン38に接続される。CPU32は、ストレージデバイス34に記憶されたプログラムを実行することにより、検索装置30の複数の機能を実現する。端末装置10と検索装置30は通信デバイス18、36を介して互いにデータを通信する。
【0015】
データベース50は、通信デバイス36に接続される。データベース50を設けずに、検索装置30のストレージデバイス34がSW部品を記憶してもよい。さらに、ストレージデバイス34が一部のSW部品を記憶し、データベース50が残りのW部品を記憶してもよい。図示しないが、データベース50も通信デバイスを備え、検索装置30とデータベース50はデータを通信する。
【0016】
図2は、端末装置10と検索装置30の機能ブロック図である。
端末装置10のCPU16は、検索語句入力部102、検索オプション入力部104、検索条件送信部106、検索結果/検索オプション表示部108及び検索履歴読み出し部110として機能する。検索オプションは、検索を制約する情報や検索結果の表示態様を変更する情報である。検索オプションの詳細は後述するが、一例は検索対象をSW部品単品とするか、SW部品の組合せとするかを指定する情報である。例えば、検索条件が複数の機能を含む場合、検索装置30が複数の機能の全てを含むSW部品単品を探すように構成されてもよいし、複数の機能をそれぞれ含む複数のSW部品の組合せを探すように構成されてもよい。
【0017】
検索語句入力部102は、入力デバイス12を用いてユーザにより入力された検索語句を表示デバイス14で表示させるとともに、検索語句を検索条件送信部106に送信する。検索オプション入力部104は、入力デバイス12を用いてユーザにより入力された検索オプションを表示デバイス14で表示させるとともに、検索オプションを検索条件送信部106に送信する。検索条件送信部106は、検索語句と検索オプションを検索条件として検索装置30に送信する。
【0018】
検索結果/検索オプション表示部108は、検索装置30から送信された検索結果と検索オプションを表示デバイス14で表示させる。
【0019】
検索履歴読み出し部110は、検索装置30から検索結果の履歴(検索履歴)を読み出し、検索履歴を検索語句入力部102と検索オプション入力部104に送信する。
【0020】
検索装置30のCPU32は、検索条件受信部121、検索条件評価部122、ソフトウェア部品文書ベクトル生成部(SW部品文書ベクトル生成部)124、ソフトウェア部品文書ベクトル管理部(SW部品文書ベクトル管理部)126、類似度評価部128及び検索履歴管理部130として機能する。
【0021】
検索とは、ユーザが指定する検索条件に一致又は類似したSW部品をSW部品の集合の中から探すことである。検索装置30が検索条件に一致又は類似したSW部品単品を探すのか、又は検索条件に一致又は類似したSW部品の組合せを探すのかは、検索オプションによりユーザが指定可能である。
【0022】
検索条件との一致又は類似を判断する基準としては、種々の基準が利用できる。実施形態では、検索条件に関する文書ベクトルとSW部品に関する文書ベクトルとの間のベクトル類似度を判断基準として利用する例を説明する。ベクトル類似度はコサイン類似度により求めてもよい。
【0023】
SW部品文書ベクトル生成部124は、データベース50に記憶されている複数のSW部品に関するドキュメント及び/又はSW部品自身の属性からSW部品の特徴を表す単語(特徴語の候補)を抽出する。SW部品文書ベクトル生成部124は、単語の出現頻度等に基づくTF(Term Frequency:単語出現頻度)-IDF(Inverse Document Frequency:逆文書頻度)法により単語の中から特徴語を決定し、特徴語からなる複数のSW部品文書ベクトルを夫々生成する。
【0024】
SW部品文書ベクトル管理部126は、SW部品文書ベクトル生成部124が生成したSW部品文書ベクトルを管理する。具体的には、SW部品文書ベクトル管理部126は、複数のSW部品毎の複数のSW部品文書ベクトルを記憶する。SW部品文書ベクトル管理部126は、複数のSW部品文書ベクトルを類似度評価部128に送信する。
【0025】
検索条件受信部121は、検索条件送信部106から送信された検索条件を受信する。検索条件受信部121は、受信した検索条件に含まれる検索語句と検索オプションを検索条件評価部122へ送信する。検索条件受信部121は、検索オプションを類似度評価部128へ送信する。
【0026】
検索条件評価部122は、検索条件受信部121から送信された検索語句から特徴語を抽出し、検索条件受信部121から送信された検索オプションに応じて特徴語に基づいて1つのクエリ又は複数のクエリを生成する。検索オプションがSW部品単品を選択している場合、検索条件評価部122は、検索語句に含まれる全ての特徴語を含むSW部品単品検索用の1つのクエリを生成する。検索オプションがSW部品の組合せを選択している場合、検索条件評価部122は、検索語句に含まれる複数の特徴語の組合せを含むSW部品組合せ検索用の複数のクエリを生成する。検索条件評価部122は、1つのクエリ又は複数のクエリを類似度評価部128に送信する。
【0027】
類似度評価部128は、検索条件評価部122から送信されたクエリから特徴語を抽出し、特徴語の頻度等に基づくTF-IDF法によりクエリ文書ベクトルを生成する。類似度評価部128は、クエリ文書ベクトルとSW部品文書ベクトル管理部126から送信されたSW部品文書ベクトルとのベクトル類似度を計算し、クエリ文書ベクトルに対するベクトル類似度が或る値以上のSW部品文書ベクトルを探す。
【0028】
検索条件受信部121から送信された検索オプションがSW部品単品を選択している場合、類似度評価部128は、1つのクエリを受信し、1つのクエリから生成した1つのクエリ文書ベクトルに類似する少なくとも1つのSW部品文書ベクトルを探す。類似度評価部128は、少なくとも1つのSW部品文書ベクトルに関する少なくとも1つのSW部品単品を表すSW部品単品情報を検索結果として端末装置10に送信する。端末装置10では、少なくとも1つのSW部品単品情報が類似度の高い順に表示される。
【0029】
検索条件受信部121から送信された検索オプションがSW部品の組合せを選択している場合、類似度評価部128は、複数のクエリから生成した複数のクエリ文書ベクトル夫々に類似する複数のSW部品文書ベクトルからなる少なくとも1つのSW部品文書ベクトル組合せを探す。類似度評価部128は、少なくとも1つのSW部品文書ベクトル組合せに関する少なくとも1つのSW部品組合せを表すSW部品組合せ情報を検索結果として端末装置10に送信する。端末装置10では、少なくとも1つのSW部品組合せ情報が類似度の高い順に表示される。
【0030】
類似度評価部128は、検索結果を検索履歴管理部130にも送信する。検索履歴管理部130は、検索履歴を記憶する。検索履歴管理部130が記憶する検索履歴は、検索履歴読み出し部110により読み出される。検索履歴読み出し部110は、検索履歴に応じて検索語句や検索オプションの候補を求め、候補を表示デバイス14で表示させる。これにより、検索語句や検索オプションの入力効率が向上する。
【0031】
検索システムは、ベクトル類似度に基づいてSW部品を探したが、SW部品の組合せを探す際、検索対象が膨大な数になるので、組合せ最適化の問題として処理してもよい。すなわち、何らかの制約条件のもとである指標について最大化又は最小化をしつつ利用するSW部品の組合せ数を探すものとして処理することも考えられる。制約条件の例は、リソース(資源)である。リソースは、単純なハードウェア資源やソフトウェア資源に限らず、想定される開発工数、リリース時期、バイナリサイズ(インストール時のフットプリントに影響する)やメモリ消費量や組み合わせるSW部品数を含む。リソース量がある量を超えないという制約条件のもとで、文書ベクトルによるベクトル類似度を最大化する単一のSW部品又はSW部品の組合せ又は単一と組み合わせを検索してもよい。
【0032】
検索オプションについて説明する。
端末装置10が検索オプション入力部104を備えず、検索装置30の検索条件評価部122がSW部品単品検索用の1つのクエリを生成し、SW部品組合せ検索用の複数のクエリを生成しない場合を想定する。この場合、検索装置30は、クエリ文書ベクトルとのベクトル類似度が高い少なくとも1つのSW部品文書ベクトル、すなわちクエリ文書ベクトルに含まれる全ての特徴語を含む少なくとも1つのSW部品文書ベクトルを探す。少なくとも1つのSW部品文書ベクトルに夫々関する少なくとも1つのSW部品を表すSW部品単品情報が類似度の高い順に表示される。ユーザは、少なくとも1つのSW部品の中から1つのSW部品を選ぶことができる。
【0033】
しかし、ユーザが複数の機能を実現するソフトウェアを開発する際、複数の機能を実現する1つのSW部品を利用するより、複数の機能をそれぞれ実現する複数のSW部品の組合せを利用して開発したい場合がある。
【0034】
また、検索結果には、利用実績が無いSW部品又はリリースされてからほとんど更新されていないSW部品も含まれることがある。ユーザは、ソフトウェアを開発する際、単に複数の機能を実現するだけではなく、よく利用されているか否かも考慮してSW部品を選択したい場合がある。
【0035】
さらに、クエリ文書ベクトルとSW部品文書ベクトルとのベクトル類似度を計算する際、ベクトル内の特徴語に重みを付けたい場合もある。
【0036】
検索語句では表現できないこのようなユーザの意向を検索装置30に指示するために、端末装置10は、検索オプション入力部104を備える。検索オプションの例は、検索対象をSW部品単品とするかSW部品の組合せとするかの検索対象の種別選択、利用実績や更新実績に基づく検索対象の絞り込み及びベクトル類似度計算の際の特徴語の重み付けである。利用実績は、セキュリティ的な実装が出来ていること、十分に動作がテストされていること、既に製品に組み込まれた実績があること等を含む。
【0037】
図3は、端末装置10の表示デバイス14の画面構成の例を示す。表示デバイス14の画面は、検索語句エリア202、検索結果エリア204及び検索オプションエリア206を含む。検索語句エリア202は、ユーザが検索語句を入力する際に検索語句を表示する。検索結果エリア204は、検索装置30による検索結果を表示する。検索オプションエリア206は、ユーザが検索オプションを入力する際に検索オプションを表示する。
【0038】
検索システムは、データベース50に登録されたSW部品に関する情報から特徴語を抽出し、SW部品文書ベクトルを生成する。具体的には、SW部品文書ベクトル生成部124は、SW部品の説明書き(ディスクリプション)、SW部品の登録者が登録時に入力するキーワード、SW部品として登録されるソースコード等に含まれるプログラム言語、実現機能、実行環境、実施態様(SW部品の使われ方)、利用実績、評価等に関する特徴語を抽出し、特徴語の頻度に応じてSW部品文書ベクトルを生成する。
【0039】
SW部品の説明書きの例は、「このソフトウェアは、認証機能と支払い機能を備え、モバイル用途のアプリであり、リリース時期は〇〇、最新更新時期は〇〇である。このソフトウェアの動作環境は、オペレーティングシステム:OS1、実装言語:JAVA。CPU:CPU1である」である。抽出される特徴語の例は、OS1、JAVA、CPU1、認証、支払いである。
【0040】
検索条件評価部122は、検索語句から特徴語(例えば、OS1、認証、支払い)を抽出し、検索対象がSW部品単品であるかSW部品の組合せであるかに応じて特徴語からクエリを生成する。
【0041】
検索システムは、検索オプションを指定可能である。検索オプションがベクトル類似度計算の前に指定されると、類似度評価部128は、検索オプションを考慮してベクトル類似度を計算する。検索オプションはベクトル類似度計算の後にも指定又は変更可能である。検索オプションがベクトル類似度計算の後に指定又は変更されると、類似度評価部128は、検索オプションを考慮してベクトル類似度を再計算する。
【0042】
図4-
図11を参照して、ユーザの操作に従う端末装置10の表示デバイス14の画面の変化の一例を示す。
図4-
図7では、検索オプションは、単品/組合せの種別選択である。
図8-
図11では、検索オプションは、単品/組合せの種別選択及び特徴語制御情報である。
【0043】
図4は、ユーザが、機能a(例えば認証)、オペレーティングシステムの種類(例えばOS1)及び機能b(例えば支払い)という単語を含む検索語句を検索語句エリア202に入力し、検索オプションエリア206にて種別選択212として単品を選択した場合の表示デバイス14の画面の一例を示す。
図4の例は、ユーザが単語単位の検索語句を入力した場合を示すが、ユーザは単語を含む文章を入力してもよい。
【0044】
ユーザは、自分が必要とするSW部品の実行環境(オペレーティングシステムの種類等)や実現機能(認証、支払い等)を指定する特徴語を含む検索語句を検索語句エリア202に入力する。実行環境を表す特徴語は、共通特徴語と称され、機能を表す単語は機能特徴語と称される。共通特徴語とは、3以上の単語が検索語句として入力された時、他の2以上の単語の各々と組合せて検索に利用できる可能性が高い単語である。
【0045】
共通特徴語は、端末装置10のユーザ又は検索装置30の事業者による設定又は自動的な手段によりカテゴリに分類されてもよい。自動的な手段の例は、機械学習等の自然言語処理技術である。
【0046】
共通特徴語のカテゴリの例は、動作OS、実装言語、CPU、CPU搭載のボードの種類(組み込み機器か否か等)、フレームワーク(仮想マシンで動作するもの、モバイル用、クラウド上で動作するもの)、リリース時期(組合せのいずれか又は組合せの全てが選択可能であってもよい)、採用実績(組合せのいずれか、組み合わせの全て、又はSW部品単品が選択可能であってもよい)である。
【0047】
機能特徴語の例は、認証(オーセンチケーション、authenticationも同義である)や支払い(ペイメント、paymentも同義である)である。OauthやRFC6749等の技術仕様等の名称も機能特徴語である。
【0048】
検索条件評価部122は、検索条件に含まれる単語を抽出し、単語が共通特徴語か機能特徴語であるかを判断する。検索オプションの種別選択212が単品を選択しているので、検索条件評価部122は、共通特徴語と機能特徴語を全て含む、すなわち機能a、OS1及び機能bを含む1つのクエリ(機能a、OS1、機能b)を生成する。
【0049】
類似度評価部128は、1つのクエリから1つのクエリ文書ベクトルを生成し、クエリ文書ベクトルとのベクトル類似度が一定の類似度以上の少なくとも1つのSW部品文書ベクトルを探し、探した少なくとも1つのSW部品文書ベクトルに関する少なくとも1つのSW部品単品を表す単品情報を端末装置10へ送信する。
【0050】
検索結果エリア204には、全ての特徴語である機能a、OS1及び機能bに一致又は類似するSW部品単品(SW部品A、SW部品B、…)に関する単品情報(SW部品名と説明書き)214a、214b、…がベクトル類似度の高い順に表示される。
【0051】
図5は、ユーザが、機能a、OS1及び機能bを含む検索語句を検索語句エリア202に入力し、検索オプションエリア206にて種別選択212として組合せを選択した場合の表示デバイス14の画面の一例を示す。
【0052】
種別選択212が組合せを選択しているので、検索条件評価部122は、共通特徴語と複数の機能特徴語の各々を含む2つのクエリを生成する。すなわち、検索条件評価部122は、OS1と機能aを含む第1クエリと、OS1と機能bを含む第2クエリを生成する。
【0053】
類似度評価部128は、第1、第2クエリから第1、第2クエリ文書ベクトルを夫々生成する。類似度評価部128は、第1クエリ文書ベクトルとのベクトル類似度が一定の類似度以上の少なくとも1つの第1SW部品文書ベクトルを探す。類似度評価部128は、第2クエリ文書ベクトルとのベクトル類似度が一定の類似度以上の少なくとも1つの第2SW部品文書ベクトルを探す。類似度評価部128は、少なくとも1つの第1SW部品文書ベクトルと少なくとも1つの第2部品文書ベクトルの組合せに関する少なくとも1つのSW部品組合せを表す組合せ情報を端末装置10へ送信する。
【0054】
検索結果エリア204には、共通特徴語OS1と機能特徴語である機能aに一致又は類似するSW部品(SW部品A、SW部品C、…)と共通特徴語OS1と機能特徴語である機能bに一致又は類似するSW部品(SW部品B、SW部品D、…)の組合せに関する組合せ情報(組合せたSW部品名と説明書き)216a、216b、…がベクトル類似度の高い順に表示される。
【0055】
組合せ情報216a、216bの各々におけるSW部品の表示順番は、検索語句として入力された順番の特徴語に対応する機能を実現するSW部品の順番(上からの順番)である。
図6は、ユーザが機能a、OS1及び機能bを含む検索語句を検索語句エリア202に入力し、検索オプションエリア206にて種別選択212として組合せを選択した場合の表示デバイス14の画面の他の例を示す。
【0056】
検索結果エリア204には、共通特徴語OS1と機能特徴語である機能aに一致又は類似するSW部品(SW部品A、SW部品C、…)と共通特徴語OS1と機能特徴語である機能bに一致又は類似するSW部品(SW部品B、SW部品D、…)の組合せに関する組合せ情報(組合せ部品名と説明書き)218a、218b、…がベクトル類似度の高い順に表示される。
【0057】
図5と
図6はともに検索結果がSW部品の組合せである場合の表示例を示す。
図5と
図6の違いは、
図5は或るSW部品に並列的な依存関係(利用関係とも称する)にあるSW部品の組合せの表示例を示し、
図6は或るSW部品に他のSW部品が依存関係にあり、他のSW部品にさらに別のSW部品が依存関係にあるような従属的な依存関係にあるSW部品の組合せの表示例を示す点である。検索結果がどちらか一方のみの組合せのみであることは殆どなく、実際には、
図5の表示例と
図6の表示例が混在する。
【0058】
従属的なSW部品の組合せとは、JAVAのimport文のように、一方のSW部品が他方のSW部品を呼び出して他方のSW部品に或る処理を実行させ、他方の処理結果を読み込むような2つのSW部品の組合せである。これに対し、複数のSW部品が独立して動作する場合、これらのSW部品の組合せは並列的な組み合わせと称される。
【0059】
図7は、ユーザが機能a、OS1及び機能bを含む検索語句を検索語句エリア202に入力し、検索オプションエリア206にて種別選択212として単品と組合せの両方を選択した場合の表示デバイス14の画面の一例を示す。
【0060】
検索結果エリア204には、OS1と機能aに一致又は類似するSW部品(SW部品A、SW部品C、…)とOS1と機能bに一致又は類似するSW部品(SW部品B、SW部品D、…)の組合せに関する組合せ情報(組合せ部品名と説明書き)218a、218b、…と、OS1、機能a及び機能bの全てに一致又は類似するSW部品単品(SW部品E、SW部品F、…)に関する単品情報(部品名と説明書き)218c、218d、…がベクトル類似度の高い順に表示される。なお、種別選択212として単品と組合せの両方が選択された場合、組み合わせ情報と単品情報が類似度に応じた順番で表示されるので、組み合わせ情報のみ、又は単品情報のみが表示される場合もある。
【0061】
図8-
図11は、検索オプションに特徴語に関する制御情報が追加された場合の表示例を示す。
図4-
図7の何れに対しても特徴語制御情報は追加可能であるが、例として
図7の表示例に対して特徴語制御情報が追加される例を説明する。
【0062】
図8は、検索オプションエリア206は、種別選択212に加えて、特徴語制御情報222を表示する例を示す。特徴語制御情報222は、検索語句として入力されたOS1、機能a、機能bという3つの特徴語アイコンと、上向きアイコンと、下向きアイコンを含む。3つの特徴語アイコンは、上下方向に配列されている。
【0063】
検索オプションの種別選択212が組合せを選択している場合、検索条件評価部122は、検索語句から共通特徴語と機能特徴語の組合せを含む2つのクエリを生成する。すなわち、検索条件評価部122は、OS1と機能aの組合せを含むクエリと、OS1と機能bの組合せを含むクエリを生成し、生成した2つのクエリを類似度評価部128へ送信する。
【0064】
検索オプションの種別選択212が組合せを選択している場合、類似度評価部128は、2つのクエリからOS1が共通特徴語として認識されたことを検出し、OS1が共通特徴語として認識されたことを検索結果/検索オプション表示部108へ送信する。
【0065】
検索オプションエリア206の特徴語制御情報222では、共通特徴語として認識されたOS1のアイコンが最上行に表示され、その次の行から検索語句として入力された順番で機能特徴語のアイコン、すなわち機能aのアイコンと機能bのアイコンが表示される。
【0066】
もし、ユーザがOS1ではなく機能aを共通特徴語として検索条件を設定したい場合は、ユーザは上向きアイコン又は下向きアイコンを操作して、機能aのアイコンを最上行に表示させることができる。すなわち、ユーザは共通特徴語をOS1から機能aに変更することができる。特徴語制御情報222における情報の表示順番が機能a、OS1、機能bと変更されると、検索結果エリア204における表示は、機能2にOS1が従属し、OS1に機能bが従属するように変更される。
【0067】
検索オプションエリア206の特徴語制御情報222でのユーザの操作は、検索オプション入力部104から検索条件送信部106を介して検索条件評価部122と類似度評価部128に送信される。このため、検索条件評価部122は、検索語句から、機能aとOS1の組合せを含むクエリと機能aと機能bの組合せを含むクエリを生成し、生成した2つのクエリを類似度評価部128へ送信する。これにより、検索装置30は検索を再度実行し、ユーザの意向に従った検索結果を出力することができる。
【0068】
なお、3つの特徴語アイコンが左右方向に配列されてもよい。この場合は、上向きアイコンの代わりに右向きアイコンが、下向きアイコンの代わりに左向きアイコンが表示される。共通特徴語として認識された特徴語アイコンは最も左又は右に表示される。この認識結果を変更したい場合、ユーザは右向きアイコン又は左向きアイコンを操作して、共通特徴語として設定したい特徴語のアイコンを最も右又は左に表示させることができる。
【0069】
図9は、検索オプションエリア206は、種別選択212に加えて、特徴語制御情報224を表示する例を示す。特徴語制御情報224は、
図8の特徴語制御情報222の各特徴語アイコンの下に重み/制約条件欄が追加されている点が特徴語制御情報222と異なる。重み/制約条件欄は、スライドバーでもよいし、データが直に入力される欄でもよい。例えば、OS1の特徴語アイコンと機能aの特徴語アイコンの下には重み指定用のスライドバーが表示される。機能bの特徴語アイコンの下には制約条件の入力欄が表示される。重みは、クエリ文書ベクトルとSW部品文書ベクトルとのベクトル類似度を計算する際に特徴語に乗算される重みである。制約条件は、類似度評価部128がクエリ文書ベクトルとのベクトル類似度を計算する検索対象を絞り込むための情報である。制約条件の例は、文書の整備度合いやコミットの活発さの程度等の品質に関する情報や、利用実績の程度に関する情報や、ソフトウェアのリリース時期である。例えば、機能bの制約条件はリリース時期が2021年1月1日以降である。
【0070】
類似度評価部128は、重みや制約条件に基づいて、クエリ文書ベクトルとSW部品文書ベクトルとのベクトル類似度を計算するので、検索装置30はユーザの意向に従った検索結果を出力することができる。
【0071】
図10は、検索オプションエリア206は、種別選択212に加えて、特徴語制御情報226Aを表示する例を示す。特徴語制御情報226Aは、
図9の特徴語制御情報224に対して特徴語アイコンの纏まり方(ツリー構造)を示す接続線(破線)が追加されている点が特徴語制御情報224と異なる。
【0072】
図10では、検索オプションエリア206にて種別選択212として単品が選択されている。検索オプションの種別選択212が単品を選択している場合、検索条件評価部122は、検索語句として入力された機能a、OS1及び機能bを全て含むクエリを類似度評価部128へ送信する。類似度評価部128は、端末装置10の検索条件送信部106から送信された検索オプションを端末装置10の検索結果/検索オプション表示部108へ送信する。
【0073】
検索結果/検索オプション表示部108は、検索オプションエリア206の特徴語制御情報226Aで、OS1という特徴語アイコンと、機能aという特徴語アイコンと、機能bという特徴語アイコンが直列に接続されていることを示す破線を表示する。これは、検索オプションの種別選択が単品を選択し、検索装置30がOS1、機能a及び機能bの全てに一致又は類似するSW部品単品を探したことを意味する。
【0074】
もし、ユーザが単品ではなくSW部品の組合せを探したい場合、ユーザは、入力デバイス(例えば、マウス)12を用いて、特徴語制御情報226A内の特徴語アイコンのツリー構造を
図11に示すように共通特徴語をルートとし、複数の機能特徴語の各々をリーフとする複数のツリーとなるように変更する。
【0075】
図11の特徴語制御情報226Bは、OS1という特徴語アイコンをルートとし機能aという特徴語アイコンをリーフとする1つのツリーと、OS1という特徴語アイコンをルートとし機能bという特徴語アイコンをリーフとする別のツリーの計2つのツリーを表示している。このツリー構造の変更に伴い、検索オプションエリア206の種別選択212は単品から組合せに変更される。
【0076】
図12は、データベース50が記憶するデータの一例を示す。データベース50は、検索対象となるSW部品に関する情報を記憶する。検索システムの事業者がデータベース50を作成してもよいが、検索システムの事業者とは別のデータベース専門の事業者がデータベース50を作成してもよい。データベース50は、SW部品カタログ142、SW部品リポジトリ144及び成果物管理データ146を記憶する。SW部品カタログ142は、ライセンス情報、脆弱性情報、著作権や特許権等の知財関連情報、輸出管理情報等を含む。SW部品リポジトリ144は、ソースコード、説明書き等の関連文書、バイナリコード等を含む。成果物管理データ146はソフトウェアの評判等を含む。
【0077】
データベース50の記憶するデータの他の例は、SW部品のWebサイトの情報や、SW部品のディストリビューションのリポジトリに掲載の情報等をクロールして収集したデータがある。
【0078】
図13は、SW部品文書ベクトル生成部124の処理の一例を示すフローチャートである。
SW部品文書ベクトル生成部124は、S302で、データベース50に記憶されているSW部品の中で文書ベクトルが作成されていないSW部品の中の1つのSW部品を選択する。
【0079】
SW部品文書ベクトル生成部124は、S304で、選択されたSW部品に関する特徴語を、SW部品カタログ142、SW部品リポジトリ144、成果物管理データ146内のデータから抽出する。
【0080】
SW部品文書ベクトル生成部124は、S306で、特徴語を連結して疑似的な文書dを生成し、文書dからTF-IDF法によりSW部品文書ベクトルTF-IDF(t,d)を生成する。
【0081】
TF-IDF(t,d)=TF(t,d)・IDF(t) 式1
ここで、
TF(t,d)は文書dに含まれる特徴語tの数、
IDF(t)はlog(全文書D/特徴語tを含む文書数)である。
【0082】
SW部品文書ベクトル生成部124は、S308で、SW部品文書ベクトルをSW部品文書ベクトル管理部126に送信する。
【0083】
SW部品文書ベクトル生成部124は、S310で、文書ベクトル生成を停止する指示があるか否か判定し、指示があった場合は、処理を終了し、指示が無かった場合は、S302からの処理を再度実行する。
【0084】
図14は、SW部品文書ベクトル管理部126が記憶する管理テーブルの一例を示す。SW部品文書ベクトル管理部126は、特徴語(共通特徴語と機能特徴語)の各々についてIDFの値を管理する特徴語/IDFテーブル(
図14(a))を記憶する。SW部品文書ベクトル生成部124は、SW部品文書ベクトルを計算する際に、特徴語/IDFテーブルを作成する。また、SW部品文書ベクトル管理部126は、SW部品毎にSW部品文書ベクトルを管理するSW部品ID/文書ベクトルテーブル(
図14(b))を記憶する。さらに、SW部品文書ベクトル管理部126は、単語と特徴語(共通特徴語と機能特徴語)との対応関係を示す単語/特徴語テーブル(
図14(c))を記憶する。単語/特徴語テーブルは、辞書として検索装置30に予め記憶されている。単語/特徴語テーブルは類似の単語を同じ特徴語に対応付ける。類似の単語は、認証、オーセンチケーション、authenticationや支払い、ペイメント、payment等の同じ意味であるが言語が異なる単語である。
【0085】
図15は、検索条件評価部122の処理の一例を示すフローチャートである。
検索条件評価部122は、S402で、検索条件送信部106から送信された検索語句から単語を抽出する。
【0086】
検索条件評価部122は、S404で、単語を認識し、SW部品文書ベクトル管理部126の単語/特徴語テーブル(
図14(c))を参照して、認識した単語に対応する特徴語を求める。検索条件評価部122は、単語が単語/特徴語テーブルに登録されていれば、対応する特徴語を求め、単語が単語/特徴語テーブルに登録されていなければ、類似する単語に対応する特徴語を求める。
【0087】
検索条件評価部122は、S406で、検索オプションの種別選択212の選択内容を判断する。種別選択が単品を選択している場合、検索条件評価部122は、S408で、機能a、OS1、機能bを含むクエリを生成する。
【0088】
種別選択が組合せを選択している場合、検索条件評価部122は、S410で、OS1、機能aを含む第1クエリと、OS1、機能bを含む第2クエリという2つのクエリを生成する。
【0089】
検索条件評価部122は、S412で、S408又はS410で生成したクエリを類似度評価部128へ送信する。
【0090】
図16は、類似度評価部128の処理の一例を示すフローチャートである。
類似度評価部128は、S502で、検索オプションの種別選択は単品か組み合わせを選択しているかを判定する。
【0091】
類似度評価部128は、種別選択が単品を選択していると判定し場合、S504で、検索条件評価部122から送信されたクエリから特徴語を抽出する。
【0092】
類似度評価部128は、S506で、SW部品文書ベクトル管理部126の特徴語/IDFテーブル(
図14(a))を参照して、特徴語のIDF値を読み出し、式1に従い1つのクエリ文書ベクトルを生成する。
【0093】
類似度評価部128は、S508で、1つのクエリ文書ベクトルとSW部品文書ベクトル管理部126が記憶しているSW部品文書ベクトルの全てとのベクトル類似度(コサイン類似度)を、以下のように計算する。
【0094】
クエリ文書ベクトルをベクトルPとし、SW部品文書ベクトルをベクトルQとすると、ベクトルP、Qを正規化した上で、cos(Q,P)=(Q・P)/(|Q||P|)としてベクトルの内積(コサイン類似度)を求める。Q・PはベクトルP、Qの内積を表し、|P|、|Q|はそれぞれベクトルP、Qのノルムを表す。この内積の値が大きければ大きい程、そのSW部品文書ベクトルに関するSW部品が検索条件により適合していると評価できる。ベクトルの要素である特徴語は、検索オプションに基づいて重みが加えられる。重みの大きい特徴語の類似度が大きい程、コサイン類似度が大きくなる。そのため、ユーザは重視したい特徴語に対して
図9に示すような操作により重みを指定する。
【0095】
類似度評価部128は、S510で、コサイン類似度が或る値以上のSW部品文書ベクトルを特定する。類似度評価部128は、S512で、特定したSW部品文書ベクトルに関するSW部品単品を表す単品情報(例えば、
図4)を検索結果/検索オプション表示部108へ送信する。
【0096】
類似度評価部128は、S502で種別選択が組合せを選択していると判定し場合、S514で、検索条件評価部122から送信された第1クエリから第1特徴語を抽出し、第2クエリから第2特徴語を抽出する。
【0097】
類似度評価部128は、S516で、SW部品文書ベクトル管理部126の特徴語/IDFテーブル(
図14(a))を参照して、第1特徴語のIDF値を読み出し、式1に従い第1クエリ文書ベクトルを生成するとともに、特徴語/IDFテーブルを参照して、第2特徴語のIDF値を読み出し、式1に従い第2クエリ文書ベクトルを生成する。
【0098】
類似度評価部128は、S518で、第1クエリ文書ベクトルとSW部品文書ベクトル管理部126が記憶しているSW部品文書ベクトルの全てとの第1コサイン類似度を計算し、第2クエリ文書ベクトルとSW部品文書ベクトル管理部126が記憶しているSW部品文書ベクトルの全てとの第2コサイン類似度を計算する。
【0099】
類似度評価部128は、S518で2つのクエリ文書ベクトルとSW部品文書ベクトルとのベクトル類似度を計算するが、重複した機能を持つSW部品文書ベクトルのベクトル類似度の計算及び評価を削減するため、検索対象となるSW部品文書ベクトルを制限してもよい。例えば、第1クエリ文書ベクトルとSW部品文書ベクトルとのベクトル類似度を計算した後、第2クエリ文書ベクトルとSW部品文書ベクトルとのベクトル類似度を計算する際は、第1クエリ文書ベクトルに含まれる機能特徴語である機能aを含まないSW部品文書ベクトルとのベクトル類似度のみを計算してもよい。
【0100】
類似度評価部128は、S520で、第1コサイン類似度が或る値以上の第1SW部品文書ベクトルを特定し、第2コサイン類似度が或る値以上の第2SW部品文書ベクトルを特定する。類似度評価部128は、S522で、特定した第1SW部品文書ベクトルに関する第1SW部品と第2SW部品文書ベクトルに関する第2SW部品の組合せを表す組合せ情報(例えば、
図5、
図6)を検索結果/検索オプション表示部108へ送信する。
【0101】
なお、S508、S518で、制約条件や重みづけがある場合、類似度評価部128は、それに従って文書ベクトルの特徴語に重みをかけてもよいし、類似度を計算する検索対象としてのSW部品文書ベクトルを絞り込んでもよい。
【0102】
図17は、SW部品文書ベクトル管理部126が管理する管理情報の他の例を示す。この管理情報は、SW部品ID毎に修正履歴と、検索情報と、信頼性と、下位階層SW部品情報を含む。修正履歴は、バージョン番号と、バージョンアップ日時、バージョンアップ者、バージョンアップ内容を含む。バージョンアップ内容は変更箇所を示す情報である。検索情報は、カテゴリと、基本機能と、属性情報と、検索履歴を含む。カテゴリはSW部品の機能を分類する情報である。検索履歴は、過去に算出した文書ベクトル(TF-IDF(t,d))や過去に抽出した特徴語を含む。信頼性は、利用実績(SW部品の利用者の反応(利用者の生の声)も含む)と、品質(ドキュメント整備の程度やコミットの活発度を含む)と、セキュリティ安全度を含む。下位階層SW部品情報は、JAVAのimport文等を利用して他のSW部品を呼び出すSW部品において呼び出される他のSW部品(下位階層のSW部品)の情報である。下位階層SW部品情報は、下位階層SW部品IDと、下位階層SW部品呼出しタイミングと、下位階層SW部品動作確認レベルを含む。
【0103】
類似度評価部128は、S510又はS522でSW部品文書ベクトルを特定すると、特定したSW部品文書ベクトルに関する
図17に示す管理情報を参照して、当該SW部品に下位階層SW部品が従属されているか否かを判定する。類似度評価部128は、特定したSW部品に下位階層SW部品が従属されていることを認識すると、検索オプションの選択結果に関わらず、当該SW部品と下位階層SW部品との組み合わせを表す組み合わせ情報を端末装置10へ送信してもよい。
【0104】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組合せてもよい。
【符号の説明】
【0105】
10…端末装置、30…検索装置、50…データベース、102…検索語句入力部、104…検索オプション入力部、106…検索条件送信部、108…検索結果/検索オプション表示部、110…検索履歴読み出し部、122…検索条件評価部、124…SW部品文書ベクトル生成部、126…SW部品文書ベクトル管理部、128…類似度評価部、130…検索履歴管理部