(57)【要約】      （修正有）【課題】Ｗｅｂ  ＡＰＩおよび関連エンドポイントの推薦を提供する。【解決手段】方法は、ＡＰＩリポジトリから、複数のＷｅｂ  ＡＰＩに関連付けられた第1の情報を抽出し、抽出された第1の情報に対して第1の組の情報処理動作を実行することによって、前記複数のＷｅｂ  ＡＰＩに関連付けられた初期データセットを構築する。構築された初期データセットに対して第2の組の情報処理動作を実行することによって、トレーニング・データセットを構築し、構築されたトレーニング・データセットに基づいて機械学習（ＭＬ）モデルを得る。電子ユーザー・インターフェース（ＵＩ）を介して、入力自然言語クエリーを受領し、受領された入力自然言語クエリーを前記得られたMLモデルに提供する。ＭＬモデルへの提供された入力自然言語クエリーに基づいて、一組の推薦結果を出力する。各推薦結果は、特定のＡＰＩ名および特定のエンドポイントを含む。【選択図】図３
2020191075.tif 000002
【特許請求の範囲】
【請求項１】
Webアプリケーション・プログラミング・インターフェース（API）リポジトリから、複数のWeb  APIに関連する第1の情報を抽出する段階と；
抽出された第1の情報に対して第1の組の情報処理動作を実行することによって前記複数のWeb  APIに関連する初期データセットを構築する段階と；
構築された初期データセットに対して第2の組の情報処理動作を実行することによってトレーニング・データセットを構築する段階であって、
構築されたトレーニング・データセットは、複数の自然言語クエリー、複数のWeb  API名、および該複数のWeb  API名に関連付けられた複数のエンドポイントを含む、段階と；
構築されたトレーニング・データセットに基づいて機械学習（ML）モデルを得る段階であって、該MLモデルは、構築されたトレーニング・データセットに基づいてトレーニングされる、段階と；
ユーザー装置の電子ユーザー・インターフェース（UI）を介して入力自然言語クエリーを受領する段階と；
得られた前記MLモデルに受領された入力自然言語クエリーを提供する段階と；
得られた前記MLモデルへの提供された入力自然言語クエリーに基づいて一組の推薦結果を出力する段階とを含み、
各推薦結果は、前記複数のWeb  API名のうちの特定のAPI名および前記複数のエンドポイントのうちの特定のエンドポイントを含む、
方法。
【請求項２】
前記Web  APIリポジトリは、前記複数のWeb  APIに関連する複数の文書を含み、
前記複数の文書の各文書は、前記複数のWeb  APIのうち対応するWeb  APIに関連付けられた複数のフィールドにマップされた情報を含む、
請求項１に記載の方法。
【請求項３】
前記Web  APIリポジトリ内の複数の文書の各文書をパースする段階と；
前記複数の文書のうちの各文書において、前記複数の文書のうちの対応する文書の前記パースに基づいて、対応するWeb  APIに関連する情報を識別する段階と；
前記複数の文書のうちの各文書における識別された情報に基づいて前記第1の情報を抽出する段階であって、
前記抽出された第1の情報は、前記複数のWeb  APIのうちの各Web  APIに関連付けられたAPI記述、エンドポイント記述、入力パラメータ記述、出力パラメータ記述、第1のカテゴリ、第2のカテゴリ、一つまたは複数のタグ、およびAPIタイトルを含む、段階とをさらに含む、
請求項１に記載の方法。
【請求項４】
前記第1の組の情報処理動作は：
前記抽出された第1の情報に基づいて複数の文トークンを生成する段階と；
生成された複数の文トークンから、ストップワード、シンボル、特殊文字、2文字間のスペース、または短記述文のうちの一つまたは複数を除去することに基づいて、生成された複数の文トークンをフィルタリングする段階と；
フィルタリングされた複数の文トークンに対して語幹処理動作を適用することにより、複数の文を得る段階とを含む、
請求項１に記載の方法。
【請求項５】
前記の得られた複数の文、前記複数のWeb  API名、および前記複数のWeb  API名に関連付けられた前記複数のエンドポイントをテーブルに入れる段階と；
中身を入れられたテーブルを前記初期データセットに含めることにより、前記初期データセットを構築する段階とをさらに含む、
請求項４に記載の方法。
【請求項６】
前記複数の自然言語クエリーは、一組の質問型クエリー、一組のコマンド型クエリー、一組のキーワード型クエリー、および一組のタイトル型クエリーを含む、請求項１に記載の方法。
【請求項７】
前記第2の組の情報処理動作は：
構築された初期データセットにおける複数の文のうちの各文についての複数の品詞（POS）タグを決定し；
構築された初期データセットにおける前記複数の文のうちの各文についての統語依存木を形成し；
前記複数の文のうちの各文についての決定された複数のPOSタグおよび形成された統語依存木に基づいて、前記複数の自然言語クエリーを形成することを含む、
請求項１に記載の方法。
【請求項８】
前記複数の自然言語のクエリーを形成することはさらに：
前記複数の文のうちの第1の文から、前記第1の文についての形成された統語依存木におけるルートノードが前記第1の文についての前記決定された複数のPOSタグにおける動詞であるという判定に基づいて、第1のコマンド型クエリーを形成する段階と；
前記複数の文のうちの第2の文から、前記第2の文におけるサブジェクトが前記第2の文についての形成された統語依存木における名詞的サブジェクトであり、前記サブジェクトが前記第2の文についての前記決定された複数のPOSタグにおける動詞であるという判定に基づいて、第2のコマンド型クエリーを形成する段階と；
Web  API  マッシュアップに関連したウェブ文書上のAPIマッシュアップ記述に基づいて第3のコマンド型クエリーを形成する段階と；
前記複数のWeb  APIのうちのWeb  APIに関連付けられたアプレット記述文書上のAPI記述に基づいて第4のコマンド型クエリーを形成する段階と；
前記ウェブ文書上の前記APIマッシュアップ記述におけるトリガー文セグメントおよびアクション文セグメントに基づいて、第5のコマンド型クエリーを形成する段階と；
形成された第1のコマンド型クエリー、形成された第2のコマンド型クエリー、形成された第3のコマンド型クエリー、形成された第4のコマンド型クエリー、および形成された第5のコマンド型クエリーに基づいて前記トレーニング・データセットを構築する段階とを含む、
請求項７に記載の方法。
【請求項９】
前記複数の文のうちの第1の文から、前記第1の文についての形成された統語依存木におけるルートノードが前記第1の文についての前記決定された複数のPOSタグにおける動詞であるという判定に基づいて、第1の質問型クエリーを形成する段階と；
前記複数の文のうちの第2の文から、前記第2の文におけるサブジェクトが前記第2の文についての形成された統語依存木における名詞的サブジェクトであり、前記サブジェクトが前記第2の文についての前記決定された複数のPOSタグにおける動詞であるという判定に基づいて、第2の質問型クエリーを形成する段階と；
構築された初期データセットにおける少なくとも入力パラメータ記述または出力パラメータ記述に基づいて第3の質問型クエリーを形成する段階と；
形成された第1の質問型クエリー、形成された第2の質問型クエリー、および形成された第3の質問型クエリーに基づいて前記トレーニング・データセットを構築する段階とをさらに含む、
請求項７に記載の方法。
【請求項１０】
前記複数の文のうちの各文から、一つまたは複数のキーワード、一つまたは複数の名詞句、一つまたは複数の一次カテゴリ、一つまたは複数の二次カテゴリ、および一つまたは複数のタグを抽出する段階と；
抽出された一つまたは複数のキーワード、一つまたは複数の名詞句、一つまたは複数の一次カテゴリ、一つまたは複数の二次カテゴリ、および一つまたは複数のタグに基づいてキーワード型クエリーを形成する段階と；
形成されたキーワード型クエリーに基づいて前記トレーニング・データセットを構築する段階とをさらに含む、
請求項７記載の方法。
【請求項１１】
前記MLモデルは、第1ステージおよび第2ステージを含む2ステージ転移学習モデルであり、
前記第1ステージは、並列構成に配置された第1のモデルおよび第2のモデルを含み、
前記第1のモデルは、第1の埋め込み層と、前記第1の埋め込み層に結合された第1の双長短期メモリ（Bi-LSTM）ネットワークとを含み、
前記第2のモデルは、第2の埋め込み層と、前記第2の埋め込み層に結合された第2のBi-LSTMネットワークとを含み、
前記第2ステージは、前記第1のモデルおよび前記第2のモデルの対応する出力層に結合された人工ニューラルネットワーク（ANN）を含む、
請求項１に記載の方法。
【請求項１２】
前記複数の自然言語クエリーのうちの第1の自然言語クエリーを前記第1の埋め込み層および前記第2の埋め込み層のそれぞれに提供し：
前記第1の埋め込み層および前記第2の埋め込み層のそれぞれから、提供された第1の自然言語クエリーの第1の単語ベクトル表現を出力し；
前記第1の自然言語クエリーの前記出力単語ベクトル表現を、前記第1のBi-LSTMネットワークへの第1の入力および前記第2のBi-LSTMネットワークへの第2の入力として提供することをさらに含む、
請求項１１記載の方法。
【請求項１３】
前記MLモデルを得る段階は：
前記トレーニング・データセットの複数のクエリー‐API名ペアに基づいて、前記第1のBi-LSTMネットワークをトレーニングする段階であって、
前記トレーニング・データセットの各クエリー‐API名ペアは、自然言語クエリーと、前記複数のWeb  APIのうちの対応するWeb  APIについてのWeb  API名とを含む、段階と；
前記トレーニング・データセットの複数のクエリー‐エンドポイント・ペアに基づいて、前記第2のBi-LSTMネットワークをトレーニングする段階であって、
前記トレーニング・データセットの各クエリー‐エンドポイント・ペアは、自然言語クエリーと、前記対応するWeb  APIについてのエンドポイントとを含む、段階と；
トレーニングされた第1のBi-LSTMネットワークおよびトレーニングされた第2のBi-LSTMネットワークをトレーニング不可と設定する段階と；
該設定の後、前記トレーニング・データセットの複数のクエリー‐API名‐エンドポイント・ペアに基づいて、前記第1ステージおよび前記第2ステージ上でモデル・フィッティング動作を適用する段階であって、各クエリー‐エンドポイント‐API名ペアは、前記対応するWeb  APIについての前記自然言語クエリー、前記Web  API名、および前記エンドポイントを含む、段階とを含み、
前記MLモデルは、前記第1ステージおよび前記第2ステージ上のモデル・フィッティング動作の前記適用に基づいて得られる、
請求項１１に記載の方法。
【請求項１４】
得られたMLモデルを推薦システム上に配備し；
前記ユーザー装置の前記電子UIを介して前記入力自然言語クエリーを受領するために前記推薦システム上に前記電子UIを配備することをさらに含む、
請求項１に記載の方法。
【請求項１５】
前記電子UIを介して前記入力自然言語クエリーを受領するために前記電子UI上に第1のUI要素を描画する段階と；
出力される一組の推薦結果から、前記複数のWeb  APIのうちの特定のWeb  APIに対応する前記特定のAPI名および前記特定のエンドポイントを含む第1の推薦結果のユーザー選択を受領する段階と；
前記ユーザー選択を示すために、前記電子UI上に第2のUI要素を描画する段階と；
ユーザーが前記出力される一組の推薦結果に関するフィードバックを提出できるようにするために、前記電子UI上に第3のUI要素を描画する段階であって、前記フィードバックは肯定的なフィードバックまたは否定的なフィードバックのいずれかである、段階とを含む、
請求項１に記載の方法。
【請求項１６】
少なくとも前記フィードバック、前記第1の推薦結果の前記ユーザー選択、または前記入力自然言語クエリーに基づいて前記トレーニング・データセットを更新する段階をさらに含み、
前記更新する段階は：
描画された第1のUI要素を介して受領された前記入力自然言語クエリーを前記トレーニング・データセットに記録し；
描画された第3のUI要素を介して受領された前記フィードバックを記録し；
前記入力自然言語クエリーについての記録されたフィードバックが肯定的なフィードバックであるかどうかを判定し；
前記記録されたフィードバックが肯定的なフィードバックであるという判定に基づいて、前記記録された入力自然言語クエリーを前記トレーニング・データセットに保持し；
前記記録されたフィードバックが肯定的なフィードバックであるという判定に基づいて、前記ユーザー選択を前記トレーニング・データセットに記録し；
前記記録されたフィードバックが否定的なフィードバックであるという判定に基づいて、前記トレーニング・データセットから前記記録された入力自然言語クエリーを除去することを含む、
請求項１５に記載の方法。
【請求項１７】
前記の更新されたトレーニング・データセットに基づいて前記MLモデルを再トレーニングする段階と；
再トレーニングされたMLモデルを前記推薦システム上に再配備する段階とをさらに含む、
請求項１６記載の方法。
【請求項１８】
前記出力される一組の推薦結果は、尤度値の集合と、前記尤度値の集合に対応するAPI名およびエンドポイントの出力ペアの集合とを含む、請求項１に記載の方法。
【請求項１９】
前記尤度値の集合と前記API名およびエンドポイントの出力ペアの集合とを昇順に並べ替え；
API名およびエンドポイントの出力ペアのソートされた集合を前記電子UI上に表示することをさらに含む、
請求項１８記載の方法。
【請求項２０】
実行されることに応答して、推薦システムに動作を実行させる命令を記憶するように構成された一つまたは複数の非一時的なコンピュータ読取可能な記憶媒体であって、前記動作は：
Webアプリケーション・プログラミング・インターフェース（API）リポジトリから、複数のWeb  APIに関連する第1の情報を抽出する段階と；
抽出された第1の情報に対して第1の組の情報処理動作を実行することによって前記複数のWeb  APIに関連する初期データセットを構築する段階と；
構築された初期データセットに対して第2の組の情報処理動作を実行することによってトレーニング・データセットを構築する段階であって、
構築されたトレーニング・データセットは、複数の自然言語クエリー、複数のWeb  API名、および該複数のWeb  API名に関連付けられた複数のエンドポイントを含む、段階と；
構築されたトレーニング・データセットに基づいて機械学習（ML）モデルを得る段階であって、該MLモデルは、構築されたトレーニング・データセットに基づいてトレーニングされる、段階と；
ユーザー装置の電子ユーザー・インターフェース（UI）を介して入力自然言語クエリーを受領する段階と；
得られた前記MLモデルに受領された入力自然言語クエリーを提供する段階と；
得られた前記MLモデルへの提供された入力自然言語クエリーに基づいて一組の推薦結果を出力する段階とを含み、
各推薦結果は、前記複数のWeb  API名のうちの特定のAPI名および前記複数のエンドポイントのうちの特定のエンドポイントを含む、
媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示において論じられる実施形態は、ウェブ・アプリケーション・プログラミング・インターフェース（API）および関連するエンドポイントに関する。
【背景技術】
【０００２】
多くの企業や組織が、発話処理やソーシャルメディア分析などのいくつかの応用のための種々のWeb  APIをサードパーティー開発者および／またはサードパーティー組織に提供するWeb  APIインフラストラクチャーを提供している。典型的には、Web  APIは、サードパーティー・ソフトウェアがリソースにアクセスできる場所を指定する公開されたエンドポイントとのプログラマティック・インターフェースである。サードパーティー開発者は、所望のWeb  APIが提供する機能を統合するために、所望のWeb  APIについての特定のコードを自分のアプリケーション・コードに含める必要がある。多くのシナリオでは、Web  APIにより、これらのサードパーティー開発者は、顧客の期待に応える、よりアクセシブルで有用なあらゆる型のソリューションを、より短時間で、より低コストで、設計できる。サードパーティー開発者にWeb  APIを提供するオープン・プラットフォームを運営すること伴う成長機会を企業が認識するにつれて、利用可能なWeb  APIの数は過去数年にわたって一貫して増加してきた。Web  APIの急速な成長に伴い、これらのサードパーティー開発者は「どのAPIが自分のニーズに合うか」という質問に直面する。これらのサードパーティー開発者が、自分の特定のソフトウェア・アプリケーションのための所望されるAPI／エンドポイントを見つけるには、多くの時間がかかるであろう。従来のプラットフォームは、APIリポジトリからのWeb  API／エンドポイントのキーワード・ベースの検索を提供している。キーワード・ベースの検索は、検索クエリー内のキーワード（単数または複数）とAPIリポジトリ内のAPI情報との正確な一致に頼る。しばしば、キーワード・ベースの検索は、検索結果を与えなかったり、あるいは不正確な、もしくはそれほど網羅的でない／関連性のない結果を与えたりする。
【０００３】
本願で請求される主題は、何らかの欠点を解決する、または上述のような環境においてのみ動作する実施形態に限定されない。むしろ、この背景は、本明細書に記載されるいくつかの実施形態が実施されうる一つの例示的な技術分野を示すためにのみ与えられている。
【発明の概要】
【課題を解決するための手段】
【０００４】
ある実施形態のある側面によれば、動作は、ウェブ・アプリケーション・プログラミング・インターフェース（API）リポジトリから、複数のWeb  APIに関連付けられた第1の情報を抽出し、抽出された第1の情報に対して第1の組の情報処理動作を実行することによって、前記複数のWeb  APIに関連付けられた初期データセットを構築することを含んでいてもよい。前記動作は、さらに、構築された初期データセットに対して第2の組の情報処理動作を実行することによって、トレーニング・データセットを構築することを含んでいてもよい。構築されたトレーニング・データセットは、複数の自然言語クエリー、複数のWeb  API名、および該複数のWeb  API名に関連付けられた複数のエンドポイントを含んでいてもよい。前記動作はさらに、構築されたトレーニング・データセットに基づいて機械学習（ML）モデルを取得することをさらに含んでいてもよい。MLモデルは、構築されたトレーニング・データセットに基づいてトレーニングされてもよい。前記動作は、さらに、ユーザー装置の電子ユーザー・インターフェース（UI）を介して、入力自然言語クエリーを受領し、受領された入力自然言語クエリーを前記取得されたMLモデルに提供することを含んでいてもよい。前記動作はさらに、MLモデルへの提供された入力自然言語クエリーに基づいて、一組の推薦結果を出力することをさらに含んでいてもよい。各推薦結果は、複数のWeb  API名の特定のAPI名および複数のエンドポイントの特定のエンドポイントを含んでいてもよい。
【０００５】
実施形態の目的および利点は、少なくとも特許請求の範囲において特に指摘された要素、特徴、および組み合わせによって実現され、達成される。
【０００６】
上記の一般的な説明および下記の詳細な説明は、いずれも単に例でおよび説明であり、特許請求の範囲に記載された本発明を制約するものではないことを理解しておくべきである。
【図面の簡単な説明】
【０００７】
例示的な実施形態は、添付の図面を使用することにより、追加の具体性および詳細さをもって記述および説明される。
【０００８】
【図１】Web  APIおよび関連エンドポイントを推薦することに関連する例示的な環境を表わす図である。
【０００９】
【図２】Web  APIおよび関連エンドポイントを推薦するための例示的な推薦システムのブロック図である。
【００１０】
【図３】Web  APIおよび関連エンドポイントを推薦する例示的な方法のフローチャートを示す。
【００１１】
【図４Ａ】図４B、４CとともにWeb  APIリポジトリ内の例示的な文書を示す。
【図４Ｂ】図４A、４CとともにWeb  APIリポジトリ内の例示的な文書を示す。
【図４Ｃ】図４A、４BとともにWeb  APIリポジトリ内の例示的な文書を示す。
【００１２】
【図５】Web  APIに関連付けられた情報を使用して初期データセットを構築する例示的な方法のフローチャートを示す。
【００１３】
【図６】図5の初期データセットを使用してトレーニング・データセットを構築するための例示的な方法のフローチャートを示す。
【００１４】
【図７】例示的な文についての統語依存木およびPOSタグの例を示す。
【００１５】
【図８】例示的なMLモデルのブロック図を示す。
【００１６】
【図９Ａ】図９Bとともに、図2の例示的な推薦システム上のMLモデルを再トレーニングおよび再配備するための例示的方法のフローチャートを示す。
【図９Ｂ】図９Aとともに、図2の例示的な推薦システム上のMLモデルを再トレーニングおよび再配備するための例示的方法のフローチャートを示す。
【００１７】
【図１０Ａ】入力自然言語クエリーを受領するためのUI要素を表示するための例示的な電子ユーザー・インターフェースを示す図である。
【００１８】
【図１０Ｂ】推薦結果を表示し、推薦結果の品質に関するフィードバックを受領するための別のUI要素を表示するための例示的な電子ユーザー・インターフェースを示す図である。
【００１９】
図面はみな、本開示に記載される少なくとも一つの実施形態による。
【発明を実施するための形態】
【００２０】
本開示に記載されるいくつかの実施形態は、ウェブ・アプリケーション・プログラミング・インターフェース（API）および関連するエンドポイントを推薦するための方法および非一時的なコンピュータ読取可能媒体に関する。本開示は、Web  APIリポジトリから複数のWeb  APIに関連する情報を抽出し、開発者のようなエンドユーザーからの入力自然言語クエリーについて、一つまたは複数のAPI名および一つまたは複数のエンドポイントを含む推薦結果を出力する機械学習（ML）モデルを構築するためのトレーニング・データセットを構築するための推薦システムの使用に関する。
【００２１】
本開示の一つまたは複数の実施形態によれば、提供された入力自然言語クエリーに基づいて推薦システムが推薦結果を出力できるように推薦システム上にMLモデル（すなわち、トレーニングされたMLモデル）を提供することによって、ウェブ／ソフトウェア・アプリケーション開発および深層学習の技術分野が改善されうる。また、ユーザー（たとえば、アプリ開発者）が、ユーザー装置の電子ユーザー・インターフェース（UI）を介して入力自然言語クエリーを提供できるようにするために、ユーザーに電子ユーザー・インターフェースが提供される。
【００２２】
本開示の一つまたは複数の実施形態によれば、MLモデルは、二段階学習アーキテクチャーに基づく。二段階学習アーキテクチャーにより、MLモデルは標準的な深層学習モデルと比較して高い分類精度（たとえば、約90%の精度）を達成する。たとえば、同じ問題について、Web  APIおよびそのエンドポイントを推薦するために、従来の双長短期メモリ（LSTM）（Bi-Long  Short-Term  Memory）のみのネットワークを用いて「〜50%」の分類精度が達成される。MLモデルは、Web  API推薦のために特別に設計され、ユーザーのクエリーに基づいて最も好適なWeb  APIおよびそのエンドポイントを発見することに焦点を当てているため、他の従来の検索／推薦システムとは異なる。また、MLモデルは、APIとそのエンドポイントとの関係を考慮しながら、APIとそのエンドポイントの両方を一緒に推薦する。
【００２３】
典型的には、従来の方法は、ユーザーによって提供された検索クエリーを使用してWeb  API名／エンドポイントを推薦するためのキーワード・ベースの検索アプローチに頼る。キーワード・ベースの検索アプローチは、典型的には、検索クエリー内のキーワード（単数または複数）の、管理された検索データベースに存在するAPI情報との厳密な一致を探す。しばしば、キーワード・ベースの検索は、ユーザーにとってそれほど重要でないかもしれない不正確な、またはそれほど網羅的でない結果を与える。多くの場合、ソフトウェア・アプリケーションにおいて使用するための好適なAPIおよびエンドポイントを見つけることは、既存のWeb  APIの膨大な数のため、フラストレーションを起こし、時間がかかることがあり、しかもその数は急速に増加しつつある。検索は、大量のAPI文書を読み、特定のアプリケーションのために好適で、信頼できるWeb  APIを特定しようとして、オンライン・ウェブサイトを探索することを含みうる。格別な困難の一つは、既存のAPIの多くが、ソフトウェア開発者のガイドとして使用されうる詳細な文書を欠いていることである。もう一つの困難は、Web  APIを含むソースコードの大きなリポジトリをホストするオープンソース・ウェブサイトでさえ、実世界での使用法やキーワードなどによって容易に検索できないことである。
【００２４】
対照的に、本開示は、ユーザーからの入力自然言語クエリーに密接に一致するWeb  API（単数または複数）および関連するエンドポイント（単数または複数）を決定するMLモデルを提供する。この方法は、入力自然言語クエリーに基づいて、Web  APIおよびそのエンドポイントの両方を同時に推薦するために使用できる。MLモデルは、合成された（synthesized）自然言語クエリー、Web  API名、および前記合成された自然言語クエリーにマッピングされたエンドポイントを含むトレーニング・データセット、すなわちクエリー・コーパスでトレーニングされる。MLモデルをトレーニングするためのトレーニング・データセットは、質問型クエリー、コマンド型クエリー、キーワード型クエリー、およびAPIタイトル型クエリーを生成するための異なるアプローチを組み込んでいる。本開示はまた、新しい入力言語クエリーおよびユーザーのフィードバックに基づいてトレーニング・データセットを更新し、MLモデルをさらに再トレーニングすることによって、時間とともにMLモデルの性能を改善する方法をも含む。再トレーニングされたMLモデルは、入力自然言語クエリーのより多くのバリエーションに基づいて学習するので、改善された推薦結果を出力する。
【００２５】
開示される方法は、内容的な意味は同様だが単語または文構造が異なる入力自然言語クエリーを扱うことができる堅牢な検索アプローチを提供する。これは、従来のキーワード・ベースの検索アプローチを用いてより良い結果を生じるクエリーを形成する開発者の努力を減らすのに役立つかもしれない。その代わりに、開示される方法は、Web  API名およびエンドポイントの両方を一緒に推薦することとともに、該推薦についての信頼スコアを許容する。
【００２６】
Web  APIおよびそのエンドポイントを推薦するために、入力自然言語クエリーを信頼できる形で効率的に使用できることは、コンピュータ自体の動作に対するいくつかの恩恵および、コンピュータ・プログラミングの関連分野への改善を提供しうる。コンピュータ自体に関しては、入力自然言語クエリーに基づいて、どのWeb  APIおよびその関連エンドポイントがユーザーに推薦されるべきかを決定するためのトレーニングされたMLの使用は、コンピュータに改善された機能を提供しうる。また、それによりコンピュータは、これまで存在しなかった新しい機能を呼び出すおよび／または実装することができ、自動化された仕方でそのような機能を生成することができる。たとえば、本開示は、開発者のようなユーザーが、適切なWeb  APIおよびエンドポイントの機能を所望のソフトウェア・アプリケーションに組み込むことができるように、推薦結果の生成を容易にしうる。
【００２７】
コンピュータ・プログラミングの改善に関しては、本開示は、ソフトウェア開発のための向上された機能を提供しうる。たとえば、本開示は、Web  API名およびエンドポイントを含む関連性のある推薦結果を提供することができ、これは、ユーザーが、推薦結果からの所望のWeb  APIのためのコンピュータ・コードをソフトウェア・アプリケーションに組み込む助けとなりうる。これにより、ソフトウェア開発者はさらに、より効率的に、信頼できる形で、ソフトウェア・ソリューションをクライアントに提供することが可能になる。
【００２８】
本開示の実施形態は、添付の図面を参照して説明される。
【００２９】
図1は、本開示に記載される少なくとも一つの実施形態に従って配置された、Web  APIおよび関連エンドポイントに関係した例示的な環境を表わす図である。図1を参照すると、例示的な環境100が示されている。例示的な環境100では、推薦システム102と、複数のWeb  APIに関連する複数の文書106を含むウェブ・アプリケーション・プログラミング・インターフェース（以下、API）リポジトリ104とが示されている。さらに、ユーザー装置108と通信ネットワーク110とが示されている。推薦システム102、Web  APIリポジトリ104、およびユーザー装置108は、通信ネットワーク110を介して互いに通信上結合されてもよい。推薦システム102は、機械学習（以下、ML）モデル102Aを含んでいてもよい。さらに、ユーザー装置108に関連付けられてもよいユーザー112が示されている。
【００３０】
推薦システム102は、ソフトウェア・プロセス、コンピュータ装置上の一組の機械実行可能命令、または装置、ソフトウェア・コード、またはそれらの組み合わせを含むコンピュータ・システムのうちの一つまたは複数であってもよい。推薦システム102は、ユーザー（ユーザー112のような）の入力自然言語クエリーに一致するWeb  APIおよび関連エンドポイントのリストを含む一組の推薦結果を出力するために、MLモデル102Aを配備するように構成されてもよい。MLモデル102Aを配備するために、MLモデル102Aは、まず、トレーニング・データセットに基づいてトレーニングされる必要があることがある。トレーニング・データセットは、インターネット・ネットワークまたはイントラネット・ネットワークを介してアクセス可能な、公に利用可能な情報から抽出されうる情報に基づいて得られてもよい。
【００３１】
推薦システム102は、API文書、API仕様文書、APIリポジトリ上のウェブページ、APIマッシュアップ、および使用ガイドを含むがこれらに限定されない、公に利用可能な情報の検索を実行する必要があることがある。検索は、インターネット・ネットワークまたはイントラネット・ネットワークを介して、ウェブ上で実行されうる。たとえば、推薦システム102は、ウェブ上に公に利用可能な情報を記憶している一つまたは複数のコンピュータ・ベースのソースから、前記複数のWeb  APIに関連する公に利用可能な情報を探し、収集するように構成されていてもよいウェブクローラーまたはウェブスクレーパー（たとえば、クローラーボットまたはスクレーパーボット）を含みうる。公に利用可能な情報は、前記Web  APIリポジトリ104とも称されてもよく、前記複数のWeb  APIに関連する前記複数の文書106を含んでいてもよい。前記複数の文書106の各文書は、前記複数のWeb  APIの対応するWeb  APIに関連付けられた複数のフィールドにマップされた情報を含んでいてもよい。各文書において、前記複数のフィールドは、たとえば、API記述フィールド、エンドポイント記述フィールド、APIタイトル・フィールド、ならびに入出力パラメータ、一次カテゴリ、二次カテゴリ、および一つまたは複数のタグのための諸フィールドを含んでいてもよい。
【００３２】
Web  APIリポジトリ104は、複数のWeb  APIに関連する公に利用可能な情報のための前記一つまたは複数のコンピュータ・ベースのソースから収集されてもよい。前記一つまたは複数のコンピュータ・ベースのソースは、ウェブサーバー、クライアントコンピュータ、専用APIストア、API文書を格納するファイルサーバー、およびAPI検索プラットフォームを含みうるが、これらに限定されない。前記一つまたは複数のコンピュータ・ベースのソースにおける前記複数の文書106は、機械読取り可能および／または人間読取可能なフォーマットであってもよい任意の電子フォーマットでありうる。また、前記複数の文書106は、たとえば、英語、日本語、ドイツ語等の任意の言語で利用可能であってもよい。一つまたは複数の実施形態において、少なくとも一つのコンピュータ・ベースのソースは、ユーザー（ユーザー116など）が所望のWeb  APIに関連する情報を探し、見つけることを可能にしうる検索プラットフォームであってもよい。
【００３３】
推薦システム102は、Web  APIリポジトリ104から、前記複数のWeb  APIに関連する第1の情報を抽出するように構成されてもよい。抽出された第1の情報は、前記複数のWeb  APIの各Web  APIに関連付けられたAPI記述、エンドポイント記述、入力パラメータ記述、出力パラメータ記述、一次カテゴリ、二次カテゴリ、前記一つまたは複数のタグ、およびAPIタイトルを含んでいてもよい。第1の情報がそれに基づいて抽出される前記複数の文書のいくつかの例は、図4A、4B、および4Cにおいて与えられる。
【００３４】
推薦システム102は、抽出された第1の情報に対して第1の組の情報処理動作を実行することによって、前記複数のWeb  APIに関連する初期データセットを構築するように構成されてもよい。前記第1の組の情報処理動作は、たとえば、トークン化、文フィルタリング（ストップワード、記号、前後スペースの除去など）、および、語幹処理（stemming）動作を含みうる。さらに、推薦システム102は、構築された初期データセットに対して第2の組の情報処理動作を実行することによって、トレーニング・データセットを構築するように構成されてもよい。構築されたトレーニング・データセットは、複数の自然言語クエリー、複数のWeb  API名、および前記複数のWeb  API名に関連する複数のエンドポイントを含んでいてもよい。初期データセットおよびトレーニング・データセットの構築は、たとえば、それぞれ図5および図6に詳細に記載されている。構築されたトレーニング・データセットは、MLモデル102Aをトレーニングするために使用されうるクエリー・コーパスに対応しうる。ひとたびトレーニングされると、MLモデル102Aは、推薦システム102上に配備されうる。推薦システム102は、ユーザー装置108の電子ユーザー・インターフェース（以下、UI）を介して入力自然言語クエリーを受領するように構成されてもよい。
【００３５】
ユーザー装置108は、ユーザー装置108のディスプレイ上に電子UIを表示するように構成されうる好適な論理、回路、およびインターフェースを含んでいてもよい。電子UI  214は、ユーザー（ユーザー112など）から入力自然言語クエリーを受領するための検索インターフェースを含んでいてもよい。ユーザー装置108は、通信ネットワーク110を介して、入力自然言語クエリーを含むユーザー要求を推薦システム102に通信するように構成されてもよい。ユーザー装置108は、プロセッサ、メモリを含み、通信機能のためのネットワーク・インターフェースを含む、コンピュータ・ベースのハードウェア装置であってもよい。ユーザー装置108のいくつかの例は、携帯電話、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、サーバー、または他のコンピューティング装置を含みうるが、これらに限定されない。
【００３６】
推薦システム102は、受領された入力自然言語クエリーをMLモデル102Aに提供するように構成されてもよい。MLモデル102Aは、一組の推薦結果〔推薦結果の集合〕を出力するように構成されてもよい。各推薦結果は、前記複数のWeb  API名のうちの特定のAPI名および前記複数のエンドポイントのうちの特定のエンドポイントを含んでいてもよい。入力自然言語クエリーに基づいて、該特定のAPI名および特定のエンドポイントがユーザーに推薦されうる。推薦システム102は、通信ネットワーク110を介して、一組の推薦結果をユーザー装置108に通信するように構成されてもよい。ユーザー装置108は、一組の推薦結果を電子UI上に表示するように構成されてもよい。
【００３７】
ある種の実施形態では、前記一組の推薦結果は、尤度値の集合と、尤度値の集合に対応するAPI名とエンドポイントの出力ペアの集合とを含んでいてもよい。尤度値の集合の各尤度値は、API名およびエンドポイントの対応する出力ペアについての、入力自然言語クエリーとの一致度／信頼スコアを示しうる。
【００３８】
一つまたは複数の実施形態において、推薦システム102は、一組の推薦結果のうちの第1の推薦結果のユーザー選択を受領するようにさらに構成されてもよい。また、推薦システム102は、表示された一組の推薦結果に関する、ユーザーからのフィードバックを受領するようにさらに構成されてもよい。フィードバックは、肯定的フィードバックまたは否定的フィードバックの一方であってもよい。推薦システム102は、少なくとも前記ユーザー選択、前記フィードバック、およびユーザーからの前記入力自然言語クエリーに基づいて、トレーニング・データセットを更新するように構成されてもよい。所定の期間後（たとえば、ある時間が経過した後、または所定の数のフィードバックを受け取った後）、推薦システム102は、更新されたトレーニング・データセットに基づいてMLモデル102Aを再トレーニングし、再トレーニングされたMLモデル102Aを再配備するように構成されてもよい。
【００３９】
ここで、推薦システム102、Web  APIリポジトリ104、およびユーザー装置108の間の通信は、通信ネットワーク110を介して実行されうることを注意しておくべきである。通信ネットワーク110は、推薦システム102がウェブを介してWeb  APIリポジトリ104にアクセスし、ユーザー装置108および／または異なる装置（図示せず）と通信することができる通信媒体を含んでいてもよい。通信ネットワーク110の例は、インターネット、クラウドネットワーク、ワイヤレスフィデリティ（Wi-Fi）ネットワーク、パーソナル・エリア・ネットワーク（PAN）、ローカル・エリア・ネットワーク（LAN）、および／またはメトロポリタン・エリア・ネットワーク（MAN）を含みうるが、これらに限定されない。例示的な環境100内のさまざまな装置は、さまざまな有線および無線通信プロトコルに従って、通信ネットワーク110に接続するように構成されてもよい。そのような有線および無線通信プロトコルの例は、伝送制御プロトコルおよびインターネットプロトコル（TCP/IP）、ユーザーデータグラムプロトコル（UDP）、ハイパーテキスト転送プロトコル（HTTP）、ファイル転送プロトコル（FTP）、ZigBee、EDGE、IEEE802.11、ライトフィデリティ（Li-Fi）、802.16、IEEE802.11s、IEEE802.11g、マルチホップ通信、無線アクセスポイント（AP）、装置間通信、セルラー通信プロトコル、および／またはBluetooth(登録商標)（BT）通信プロトコル、またはそれらの組み合わせのうちの少なくとも一つを含みうるが、これらに限定されない。
【００４０】
本開示の範囲から逸脱することなく、推薦システム102に修正、追加、または省略を行なうことができる。たとえば、推薦システム102は、入力自然言語クエリーの形のユーザー要求に基づいてユーザー装置108に前記一組の推薦結果を集団的に提供しうる諸サーバーの分散ネットワークであってもよい。
【００４１】
図2は、本開示に記載される少なくとも一つの実施形態に従って構成された、Web  APIおよび関連エンドポイントを推薦するための例示的な推薦システムのブロック図である。図2は、図1の要素との関連で説明される。図2を参照すると、図1の例示的な推薦システム202のブロック図  200が示されている。例示的な推薦システム202は、プロセッサ204、メモリ206、永続的データ記憶装置208、およびネットワーク・インターフェース210を含んでいてもよい。さらに、通信ネットワーク110を介して、例示的な推薦システム202に通信上結合されたユーザー装置108が示されている。ユーザー装置108は、電子ユーザー・インターフェース214を含む入出力（I/O）装置212を含んでいてもよい。例示的な推薦システム202は、図1の推薦システム102に対応していてもよい。
【００４２】
プロセッサ204は、例示的な推薦システム202によって実行される種々の動作に関連するプログラム命令を実行するように構成されうる、好適な論理、回路、および／またはインターフェースを含んでいてもよい。たとえば、動作のいくつかは、Web  APIリポジトリ104からWeb  APIに関連する情報を抽出し、トレーニング・データセットを構築し、トレーニング・データセットに基づいてMLモデル102aを得て、得られたMLモデル102aを用いて推薦結果を出力することなどを含みうる。プロセッサ204は、さまざまなコンピュータ・ハードウェアまたはソフトウェア・モジュールを含む、任意の好適な特殊目的または汎用のコンピュータ、コンピューティング・エンティティ、または処理装置を含んでいてもよく、任意の適用可能なコンピュータ読み取り可能記憶媒体に記憶された命令を実行するように構成されてもよい。たとえば、プロセッサ204は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（DSP）、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）、またはプログラム命令を解釈および／または実行するおよび／またはデータを処理するように構成された任意の他のデジタルまたはアナログ回路を含んでいてもよい。図2には単一のプロセッサとして示されているが、プロセッサ204は、本開示に記載されているような例示的な推薦システム202の任意の数の動作を、個別にまたは集合的に、実行するまたはその実行を指揮するように構成された任意の数のプロセッサを含んでいてもよい。さらに、前記プロセッサの一つまたは複数が、一つまたは複数の異なる電子装置、たとえば、異なるサーバー上に存在してもよい。
【００４３】
いくつかの実施形態において、プロセッサ204は、メモリ206および／または永続的データ記憶208に記憶されたプログラム命令を解釈および／または実行するおよび／またはデータを処理するように構成されてもよい。いくつかの実施形態では、プロセッサ204は、永続的データ記憶208からプログラム命令を取り出し、該プログラム命令をメモリ206にロードしてもよい。プログラム命令がメモリ206にロードされた後、プロセッサ204は、プログラム命令を実行してもよい。プロセッサ204の例のいくつかは、GPU、CPU、RISCプロセッサ、ASICプロセッサ、CISCプロセッサ、コプロセッサ、および／またはそれらの組み合わせであってもよい。
【００４４】
メモリ206は、プロセッサ204によって実行可能なプログラム命令を記憶するように構成されうる好適な論理、回路、および／またはインターフェースを含んでいてもよい。ある種の実施形態では、メモリ206は、オペレーティング・システムおよび関連するアプリケーション固有の情報を記憶するように構成されてもよい。メモリ206は、コンピュータ実行可能なデータ構造を担持するまたは記憶するためのコンピュータ読取可能な記憶媒体を含んでいてもよい。そのようなコンピュータ読取可能な記憶媒体は、プロセッサ204のような汎用または専用コンピュータによってアクセスされうる任意の利用可能な媒体を含みうる。
【００４５】
たとえば、限定するものではないが、そのようなコンピュータ読取可能な記憶媒体は、有形なまたは非一時的なコンピュータ読取可能記憶媒体を含んでいてもよく、ランダムアクセスメモリ（RAM）、読み出し専用メモリ（ROM）、電気的に消去可能なプログラマブル読み出し専用メモリ（EEPROM）、コンパクトディスク読み出し専用メモリ（CD-ROM）、または他の光ディスク記憶、磁気ディスク記憶、または他の磁気記憶装置、フラッシュメモリデバイス（たとえば、固体メモリデバイス）、またはコンピュータ実行可能命令またはデータ構造の形で特定のプログラム・コードを担持または記憶するために使用されてもよく、汎用または特殊目的コンピュータによってアクセスされてもよい他の任意の記憶媒体を含む。上記の組み合わせも、コンピュータ読取可能な記憶媒体の範囲内に含まれてもよい。コンピュータ実行可能命令は、たとえば、プロセッサ204に、例示的な推薦システム202に関連するある動作または動作群を実行させるように構成された命令およびデータを含んでいてもよい。
【００４６】
永続的データ記憶208は、プロセッサ204によって実行可能なプログラム命令、オペレーティング・システム、および／またはログおよびアプリケーション固有のデータベースなどのアプリケーション固有の情報を記憶するように構成されうる好適な論理、回路、および／またはインターフェースを含んでいてもよい。永続的データ記憶208は、コンピュータ実行可能な命令またはデータ構造を担持または記憶するためのコンピュータ読取可能な記憶媒体を含んでいてもよい。そのようなコンピュータ読取可能な記憶媒体は、プロセッサ204のような汎用または専用コンピュータによってアクセスされうる任意の利用可能な媒体を含んでいてもよい。
【００４７】
たとえば、限定されるものではないが、そのようなコンピュータ読取可能な記憶媒体は、コンパクトディスク読み出し専用メモリ（CD-ROM）または他の光ディスク記憶、磁気ディスク記憶または他の磁気記憶装置（たとえば、ハードディスクドライブ（HDD））、フラッシュメモリデバイス（たとえば、固体ドライブ（SSD）、セキュアディジタル（SD）カード、他の固体メモリデバイス）、またはコンピュータ実行可能命令またはデータ構造の形で特定のプログラム・コードを担持または記憶するために使用されてもよく、汎用または特殊目的のコンピュータによってアクセスされてもよい任意の他の記憶媒体を含む、有形なまたは非一時的なコンピュータ読取可能な記憶媒体を含んでいてもよい。上記の組み合わせも、コンピュータ読取可能な記憶媒体の範囲内に含まれうる。コンピュータ実行可能命令は、たとえば、プロセッサ204に、例示的な推薦システム202に関連するある種の動作または動作群を実行させるように構成された命令およびデータを含んでいてもよい。
【００４８】
ネットワーク・インターフェース210は、通信ネットワーク110を介して、例示的な推薦システム202、Web  APIリポジトリ104、およびユーザー装置108間の通信を確立するように構成されうる好適な論理、回路、インターフェース、および／またはコードを含んでいてもよい。ネットワーク・インターフェース210は、通信ネットワーク110を介して、例示的な推薦システム202の有線または無線通信をサポートするために、さまざまな既知の技術を使用することによって実装されうる。ネットワーク・インターフェース210は、アンテナ、無線周波数（RF）トランシーバ、一つまたは複数の増幅器、チューナー、一つまたは複数の発振器、デジタル信号プロセッサ、符号化器-復号器（CODEC）チップセット、加入者識別モジュール（SIM）カード、および／またはローカル・バッファを含んでいてもよいが、これらに限定されない。
【００４９】
ネットワーク・インターフェース210は、インターネット、イントラネット、および／またはセルラー電話ネットワークのような無線ネットワーク、無線ローカル・エリア・ネットワーク（LAN）、および／または都市圏ネットワーク（MAN）などのネットワークと、無線通信を介して通信することができる。無線通信は、複数の通信規格、プロトコルおよび技術の任意のもの、たとえばグローバルシステムフォーモバイルコミュニケーションズ（GSM(登録商標)）、エンハンストデータGSMエンバイロンメント（EDGE）、広帯域符号分割多重アクセス（W-CDMA）、ロングタームエボリューション（LTE）、符号分割多重アクセス（CDMA）、時分割多重アクセス（TDMA）、Bluetooth、ワイヤレスフィデリティ（Wi-Fi）（たとえばIEEE802.11a、IEEE802.11b、IEEE802.11gおよび／またはIEEE802.11n）、ボイスオーバーインターネットプロトコル（VoIP）、ライトフィデリティ（Li-Fi）、またはWi-MAXを使用することができる。
【００５０】
I/O装置212は、ユーザー入力を受信するように構成されうる好適な論理、回路、インターフェース、および／またはコードを含んでいてもよい。I/O装置212はさらに、ユーザー入力に応答して出力を提供するように構成されてもよい。I/O装置212は、プロセッサ204およびネットワーク・インターフェース210などの他の構成要素と通信するように構成されうるさまざまな入出力装置を含みうる。入力装置の例は、タッチスクリーン、キーボード、マウス、ジョイスティック、および／またはマイクロフォンを含みうるが、これらに限定されない。出力装置の例は、表示装置およびスピーカーを含みうるが、これらに限定されない。
【００５１】
電子UI  214は、ユーザー（ユーザー112など）が、ユーザー装置108および／または例示的な推薦システム202などの他のシステムと対話することを可能にしうる、任意の好適なヒューマンマシンインターフェース（HMI）であってもよい。電子UI  214は、触覚特徴（タッチ）、視覚特徴（光景）、聴覚特徴（音声）、または複合特徴などの一つまたは複数のUI特徴を実装しうる。ある種の実施形態では、電子UIは、開発者（すなわち、ユーザー）が、入力自然言語クエリーを例示的な推薦システム202に提出し、一組の推薦結果を受領することを可能にするグラフィカルユーザーインターフェースまたはコマンドラインインターフェースであってもよい。
【００５２】
ある種の実施形態では、例示的な推薦システム202は、フロントエンド・サブシステムとバックエンド・サブシステムに分割されてもよい。フロントエンド・サブシステムは、サードパーティーサーバー、ウェブサーバー、クライアントマシン、ユーザー装置108、およびバックエンド・サブシステムのうちの一つまたは複数から要求／命令を受領するように構成されるだけであってもよい。これらの要求は、バックエンド・サブシステムに伝達されてもよく、バックエンド・サブシステムは、これらの要求に基づいて行動するように構成されてもよい。たとえば、例示的な推薦システム202が複数のサーバーを含む場合、それらのサーバーのうちのごく少数のサーバーが、バックエンド・サブシステムに関連する残りのサーバーに要求／命令を中継するように構成されたフロントエンド・サーバであってもよい。本開示の範囲から逸脱することなく、例示的な推薦システム202に修正、追加、または省略を行なうことができる。たとえば、いくつかの実施形態では、例示的な推薦システム202は、明示的に図示または説明されないことがありうる任意の数の他の構成要素を含んでいてもよい。
【００５３】
図3は、本開示に記載される少なくとも一つの実施形態による、Web  APIおよび関連エンドポイントを推薦する例示的な方法のフローチャートを示す。図3は、図1および図2の要素との関連で説明される。図3を参照すると、フローチャート300が示されている。フローチャート300に示されている方法は、302で始まってもよく、図2の例示的な推薦システム202など、任意の好適なシステム、装置、またはデバイスによって実行されうる。
【００５４】
302において、複数のWeb  APIに関連する第1の情報が、Web  APIリポジトリ104から抽出されてもよい。一つまたは複数の実施形態において、プロセッサ204が、Web  APIリポジトリ104から、前記複数のWeb  APIに関連する第1の情報を抽出するように構成されてもよい。抽出された第1の情報は、前記複数のWeb  APIの各Web  APIに関連付けられたAPI記述、エンドポイント名、エンドポイント記述、入力パラメータ記述、出力パラメータ記述、一次カテゴリ、二次カテゴリ、一つまたは複数のタグ、およびAPIタイトルを含みうるが、これらに限定されない。
【００５５】
Web  APIリポジトリ104は、前記複数のWeb  APIに関連する前記複数の文書106を含んでいてもよい。複数の文書106の各文書は、ファイル型に関連付けられてもよい。文書型の例は、ハイパーテキストマークアップ言語（HTML）、ポータブル文書フォーマット（PDF）、ユニコードプレーンテキスト（TxT）、オープンXML文書（DOCX）、コンマ区切り値（CSV）、拡張可能マークアップ言語（XML）、リッチテキスト文書（RTF）を含みうるが、これらに限定されない。ある種の実施形態では、複数の文書106の各文書は、前記複数のWeb  APIのうちの対応するWeb  APIに関連付けられた複数のフィールドにマップされた情報を含んでいてもよい。各文書において、複数のフィールドは、たとえば、API記述フィールド、エンドポイント記述フィールド、APIタイトル・フィールド、ならびに入出力パラメータ、一次カテゴリ、二次カテゴリ、および一つまたは複数のタグのための諸フィールドを含んでいてもよい。
【００５６】
一つまたは複数の実施形態において、プロセッサ204は、Web  APIリポジトリ104から前記複数の文書106のうちの第1の文書を取り出すことができ、取り出された文書に指定された第1のWeb  APIの機能を識別するために機械学習方法を使用してもよい。プロセッサ204は、第1のWeb  APIのオントロジーを決定するように構成されてもよい。オントロジーは、資源記述フレームワーク（Resource  Description  Framework、RDF）フォーマットのような任意のフォーマットに基づいて定義されうる。例としてRDFを使うと、RDFは、ワールド・ワイド・ウェブ・コンソーシアム（W3C）のRDFデータ・アクセス作業部会（DAWG）によって規定されているSPARQLクエリー処理方法のような種々の方法によってパース〔構文解析〕されうる。
【００５７】
一つまたは複数の実施形態において、プロセッサ204は、複数の文書106の各文書をトークン化するように構成されてもよい。トークン化において、テキストのストリーム（たとえば、文）は、トークンとも呼ばれる、単語、句、シンボル、または他の有意味な要素に分解されうる。トークンのリストは、構文解析やテキストマイニングのようなさらなる処理のための入力となってもよい。プロセッサ204は、Web  APIリポジトリ104内の複数の文書106の各文書を構文解析するようにさらに構成されてもよい。さらに、複数の文書106の各文書において、プロセッサ204は、複数の文書106のうちの対応する文書の構文解析に基づいて、対応するWeb  APIに関連する情報を同定するように構成されてもよい。同定された情報の一例が図4A、4B、4Cに与えられている。プロセッサ204は、複数の文書106の各文書における同定された情報に基づいて、第1の情報を抽出するようにさらに構成されてもよい。
【００５８】
たとえば、ソーシャルメディアプラットフォームのグラフAPIについての文書からの同定された情報は、以下のように与えられうる：
API記述  API  for  managing  Social  Media  Account  Comments.  At  our  core  is  the  social  graph;  people  and  the  connections  they  have  to  everything  they  care  about.  The  Graph  API  presents  a  simple,  consistent  view  of  our  social  graph,  uniformly  representing  objects  in  the  graph  (e.g.,  people,  photos,  events,  and  pages)  and  the  connections  between  them  (e.g.,  friend  relationships,  shared  content,  and  photo  tags).  Public  information  can  be  accessed  without  a  developer  key/application  key,  but  is  required  for  private  data  access.〔ソーシャルメディアアカウントのコメントを管理するためのAPI。我々の核心にあるのは、社会的グラフです；人々と、人々が関心をもつすべてのものに対して人々がもつつながりです。Graph  APIは、我々の社会的グラフの単純で一貫したビューを提示し、グラフ内のオブジェクト（たとえば、人々、写真、イベント、ページ）とそれらの間の関係（たとえば、友人関係、共有されるコンテンツ、写真タグ）を一様に表現します。公開情報は、開発者の鍵／アプリケーション鍵なしでアクセスできるが、プライベート・データ・アクセスには必要です。〕
エンドポイント  GET  /comments
エンドポイント記述  A  comment  can  be  made  on  various  types  of  content  on  Social  Media  Page〔ソーシャルメディアページ上のさまざまな型のコンテンツについてコメントすることができます。〕
入出力パラメータ記述
Attachment  -  コメントに添付されているリンクまたは写真
can_comment  -  閲覧者がこのコメントに返信できるかどうか
can_hide  -  閲覧者がこのコメントを非表示にできるかどうか
can_like  -  閲覧者がこのコメントを好きになれるかどうか
can_remove  -  閲覧者がこのコメントを除去できるかどうか
一次カテゴリ  ソーシャル
二次カテゴリ  人口統計
APIタイトル  グラフ（コメント）API
…  …
【００５９】
304では、抽出された第1の情報に対して第1の組の情報処理動作を実行することによって、複数のWeb  APIに関連する初期データセットが構築されてもよい。一つまたは複数の実施形態において、プロセッサ204が、抽出された第1の情報に対して第1の組の情報処理動作を実行することによって、初期データセットを構築するように構成されてもよい。第1の組の情報処理動作は、限定されるものではないが、文のトークン化、文のフィルタリング（たとえば、短い文、ストップワード、特殊文字、前後のスペース等）、および単語の語幹処理を含みうる。第1の組の情報処理動作の詳細は、たとえば、図5において与えられる。
【００６０】
初期データセットは、抽出された第1の情報に対する第1の組の情報処理動作の適用後に得られた複数の文を入れられてもよい表を含んでいてもよい。表は、3つの列、すなわちデータソース、API名、およびエンドポイントに分割されてもよい。前記複数の文の各文は、表の対応する行に中身を入れてもよく、API名および該API名（API  name）についてのエンドポイント（endpoint）にマッピングされてもよい。場合によって、エンドポイントの、行内の文に対する対応／関係が不確かでありうるときは、行内のエンドポイントは「該当なし」（N/A）と設定されてもよい。初期データセットの例示的なテンプレートが次の表１に与えられる。
【表１】
2020191075.tif 000003
【００６１】
たとえば、グラフAPI（graph  API）の例を参照すると、初期データセットは次のように表2によって与えられてもよい。
【表２】
2020191075.tif 000004
【００６２】
306では、構築された初期データセットに対して第2の組の情報処理動作を実行することによって、トレーニング・データセットが構築されてもよい。一つまたは複数の実施形態において、プロセッサ204が、構築された初期データセットに対して第2の組の情報処理動作を実行することによって、トレーニング・データセットを構築するように構成されてもよい。構築されたトレーニング・データセットは、クエリー・コーパスに対応してもよく、複数の自然言語クエリー、複数のWeb  API名、および前記複数のWeb  API名に関連する複数のエンドポイントを含んでいてもよい。第2の組の情報処理動作は、POSタグ付けと、構築された初期データセット内の複数の文の各文の統語依存木の生成とを含んでいてもよい。さらに、第2の組の情報処理動作は、構築された初期データセット内の複数の文の各文のPOSタグ付けおよび統語依存木に基づく、前記複数の自然言語クエリーの合成／形成を含んでいてもよい。第2の組の情報処理動作の詳細は、たとえば、図6において与えられる。
【００６３】
一つまたは複数の実施形態において、構築されたトレーニング・データセットは、クエリー・フィールド、Web  API名フィールド、およびエンドポイント・フィールドなどの一組のフィールドを含んでいてもよい。複数の自然言語クエリーは、構築されたトレーニング・データセットのクエリー・フィールドの下にマッピングされてもよい。同様に、複数のWeb  API名および複数のエンドポイントは、構築されたトレーニング・データセットのそれぞれWeb  API名フィールドおよびエンドポイント・フィールドの下にマッピングされてもよい。
【００６４】
複数の自然言語クエリー（natural  language  query）は、一組の質問型クエリー、一組のコマンド型クエリー、一組のキーワード型クエリー、および一組のタイトル型クエリーを含みうるが、これらに限定されない。各自然言語クエリーは、構築された初期データセット内の複数の文に基づいて形成／合成されてもよい。複数の自然言語クエリーの形成の詳細は、たとえば、図6において与えられる。トレーニング・データセットについての例示的なテンプレートは次のような表3によって与えられる。
【表３】
2020191075.tif 000005
【００６５】
たとえば、グラフAPI上の例を参照すると、構築されたトレーニング・データセットは、次のような表4によって与えられてもよい。
【表４】
2020191075.tif 000006
【００６６】
308では、構築されたトレーニング・データセットに基づいて、MLモデル102aが得られてもよい。より具体的には、MLモデル102aは、構築されたトレーニング・データセットに基づいてトレーニングされうる。一つまたは複数の実施形態において、プロセッサ204が、構築されたトレーニング・データセットに基づいてMLモデル102aを得るように構成されてもよい。MLモデル102aは、一組の推薦結果を出力するようにトレーニングされうる深層学習モデルに対応してもよい。該一組の推薦結果は、MLモデル102aへの入力自然言語クエリーに基づく、Web  API名およびエンドポイントの複数の出力ペアを含む。推薦結果の出力集合はまた、Web  API名およびエンドポイントの複数の出力ペアに対応する尤度値の集合（信頼スコアの集合とも称される）をも含んでいてもよい。ある推薦結果について尤度値が高いほど、その推薦結果がユーザーからの入力自然言語クエリーとより密接に一致していることを示しうる。MLモデル102aのアーキテクチャーおよびMLモデル102aのトレーニングのために実行される一組の動作は、たとえば、図8に記載される。
【００６７】
一つまたは複数の実施形態において、MLモデル102aは、第1段階および第2段階を含む二段階〔二ステージ〕（dual  stage）学習モデルであってもよい。第1段階は、並列構成で配置された第1のモデルと第2のモデルを含んでいてもよい。第1のモデルは、第1の埋め込み層と、第1の埋め込み層に結合された第1の双長短期メモリ（Bi-LSTM）ネットワークとを含んでいてもよい。同様に、第2のモデルは、第2の埋め込み層と、第2の埋め込み層に結合された第2のBi-LSTMネットワークとを含んでいてもよい。第2段階は、第1のモデルおよび第2のモデルの対応する出力層に結合された人工ニューラルネットワーク（Artificial  Neural  Network、ANN）を含んでいてもよい。第1のモデルは、自然言語クエリーとWeb  API名とのペアでトレーニングされてもよく、第2のモデルは、自然言語クエリーとエンドポイント名とのペアでトレーニングされてもよい。トレーニング動作は、第1のモデルおよび第2のモデルについてのトレーニング誤差またはコスト関数が最小化されるまで実行されてもよい。ひとたび第1のモデルと第2のモデルがトレーニングされたら、第1段階全体と第2段階がまとめて、トレーニング・データセット内で指定されている自然言語クエリー、Web  API名、およびエンドポイントの組み合わせを含む諸セットでトレーニングされる。第2段階のトレーニング中、第1のモデルおよび第2のモデル（たとえば、808A、808B、808C、810A、810B、および810C）における対応する層の重みは、凍結（トレーニングできないように設定）されてもよい。それらの重みは、第1段階のトレーニングの間にすでに最適化されているため、第2段階のトレーニングの間に再度トレーニングされない可能性がある。
【００６８】
一つまたは複数の実施形態において、MLモデル102a（すなわち、トレーニングされたMLモデル102a）は、例示的な推薦システム202上に配備されてもよい。ひとたび配備されると、MLモデル102aは、入力自然言語クエリーを例示的な推薦システム202に提出するために電子UI  214にアクセスしうるユーザーから入力自然言語クエリーを受領するように構成されてもよい。
【００６９】
310において、入力自然言語クエリーが、ユーザー装置108の電子UI  214を介して受領されてもよい。一つまたは複数の実施形態において、プロセッサ204が、ユーザー装置108の電子UI  214を介して入力自然言語クエリーを受領するように構成されてもよい。入力自然言語クエリーのフォーマットには制約条件はない。それは、質問型クエリー、コマンド型クエリー、キーワード型クエリー、またはAPIタイトル型クエリーのうちの一つであってもよい。
【００７０】
入力自然言語クエリーは、前記複数のWeb  APIのうちの一つまたは複数のWeb  APIに関連付けられた機能、用法、応用領域（単数または複数）、またはAPIプロバイダー（単数または複数）を示す一つまたは複数の単語を含んでいてもよい。いくつかの場合には、前記一つまたは複数の単語は、機能、用法、応用領域、またはAPIプロバイダーを記述するために、Web  APIリポジトリ104において維持されている文書で使用される単語と同じであってもよい。他の場合には、前記一つまたは複数の単語は、機能、用法、応用領域、またはAPIプロバイダーを記述するために前記文書において使用される単語とコンテキスト上の／意味上の類似性を帯びていてもよい。たとえば、開発者は、「Get  Glucose」〔グルコースを取得せよ〕のような入力自然言語クエリーを与えてもよい。入力自然言語クエリーは、少なくとも、「Glucose」という単語に関連付けられた機能、用法、応用領域、またはAPIプロバイダーを有する一つまたは複数のWeb  APIを検索するために与えられることがありうる。この場合、開発者は、自分のそれぞれのアプリケーション、製品またはサービスにおいて生の健康データから血糖値を記録するために使用されうるWeb  APIを探している可能性がある。
【００７１】
312では、受領された入力自然言語クエリーは、MLモデル102a（すなわち、トレーニングされたMLモデル102a）に提供されてもよい。一つまたは複数の実施形態において、プロセッサ204が、受領された入力自然言語クエリーをMLモデル102aに提供するように構成されてもよい。
【００７２】
314では、一組の推薦結果が、得られたMLモデル102aへの提供された入力自然言語クエリーに基づいて出力されうる。一つまたは複数の実施形態において、得られたMLモデル102aは、得られたMLモデル102aへの与えられた入力自然言語クエリーに基づいて、一組の推薦結果を出力するように構成されてもよい。各推薦結果は、前記複数のWeb  API名のうちの特定のAPI名および前記複数のエンドポイントのうちの特定のエンドポイントを含んでいてもよい。
【００７３】
一つまたは複数の実施形態において、一組の推薦結果は、尤度値の集合と、該尤度値の集合に対応するAPI名およびエンドポイントの出力ペアの集合とを含んでいてもよい。尤度値の集合は、API名およびエンドポイントの出力ペアの集合の、入力自然言語クエリーとの一致についてのMLモデル102aの分類器の信頼度を示しうる。一組の推薦結果の例が図10Bに与えられる。
【００７４】
316では、尤度値の集合、およびAPI名とエンドポイントの出力ペアの集合は、昇順でソートされてもよい。一つまたは複数の実施形態において、プロセッサ204が、尤度値の集合、およびAPI名とエンドポイントの出力ペアの集合を昇順でソートするように構成されてもよい。MLモデル102aは、API名とエンドポイントの出力ペアの集合の各出力ペアについて尤度値を出力しうる。API名とエンドポイントの出力ペアの集合は、前記集合の尤度値の昇順でソートされ、ランク付けされてもよい。ランクが高いほど、対応するAPI名とエンドポイントの出力ペアが、与えられた入力自然言語クエリーに照らして関連性をもつ可能性が高いことを示しうる。
【００７５】
318では、API名とエンドポイントの出力ペアのソートされた集合が、電子UI  214上に表示されてもよい。一組の推薦結果の電子UI  214上での表示の例が図10Bに与えられる。一つまたは複数の実施形態において、ユーザー装置108は、ユーザー装置108の電子UI  214上にAPI名およびエンドポイントの出力ペアのソートされた集合を表示するように構成されてもよい。例示的な推薦システム202によって実行されるさらなる動作は、たとえば、図5、図6、図8、図9Aおよび図９Bに詳細に与えられる。
【００７６】
制御は終了ブロックに渡される。フローチャート300は、302、304、306、308、310、312、314、316、および318のような離散的な動作として示されているが、ある種の実施形態では、開示された実施形態の本質を損なうことなく、具体的な実装に応じて、そのような離散的な動作はさらに追加的な動作に分割されたり、より少ない動作に組み合わされたり、または削除されたりしてもよい。
【００７７】
図4A、4B、および4Cは、集団的に、本開示に記載される少なくとも一つの実施形態に従った、Web  APIリポジトリ内の例示的な文書を示す。図4A、4B、4Cは、図1、図2、図3の要素との関連で説明する。図4A、4B、および4Cを参照するに、ここでの説明のためにMusified  APIと呼ばれる例示的なWeb  APIについて、第1の文書400A、第2の文書400B、および第3の文書400Cを含む文書の集合が示されている。第1の文書400A、第2の文書400B、および第3の文書400Cのそれぞれは、例示的なWeb  APIリポジトリから取得されてもよい。
【００７８】
第1の文書400Aは、Musified  APIに属するウェブ文書であってもよく、マークアップ／コード内にMusified  APIに関連する情報の第1の部分を含んでいてもよい。より具体的には、Musified  APIに関連する情報の第1の部分は、第1の文書400A上の一つまたは複数のマークアップ・タグおよび／またはマークアップ・カテゴリによって指定されてもよい。図示されるように、第1の文書400Aは、APIタイトル402を「title:  Musified」として、API記述404を「description:  Our  Web  API  lets  your  applications  fetch  data  from  the  Musified  music  catalog  and  manage  user’s  playlists  and  saved  music.」〔説明：我々のWeb  APIは、あなたのアプリケーションがMusified音楽カタログからデータを取り出し、ユーザーのプレイリストおよび保存された音楽を管理することを可能にします〕として含む。
【００７９】
第2の文書400Bも、Musified  APIに属するウェブ文書であってもよく、マークアップ／コード内にMusified  APIに関連する情報の第2の部分を含んでいてもよい。より具体的には、Musified  APIに関連する情報の第2の部分も、第2の文書400B上の一つまたは複数のマークアップ・タグおよび／またはマークアップ・カテゴリによって指定されてもよい。図示されるように、第2の文書400Bは、エンドポイント名／エンドポイント406を「albums/{id}」として、エンドポイント記述408を「[Get  an  album]  (https://developer.musified.com/web-api/get-album/)」〔[アルバムを取得]   (https://developer.musified.com/web-api/get-album/)〕として、API入出力パラメータ記述410を「The  Musified  ID  for  the  description」〔記述のためのMusified  ID〕として含む。
【００８０】
第3の文書は、Musified  APIに属するウェブページであってもよく、Musified  APIに関連する情報の第3の部分を含んでいてもよい。より具体的には、Musified  APIに関連する情報の第3の部分は、見出し、一つまたは複数のタグ、および／またはカテゴリの下で指定されてもよい。図示されるように、第2の文書400Bは、一つまたは複数のAPIタグ412を「Music」〔音楽〕および「Data  Mining」〔データマイニング〕として、API記述414を「The  Musified  Web  API  allows  developers  to  use  their  application  to  get  data  from  the  Musified  music  catalog.  The  endpoints  result  in  JSON  format  providing  information  such  as  artists,  albums,  and  tracks  directly  from  the  Musified  catalog.  Depending  on  user’s  authorization,  the  API  can  also  provide  developers  access  to  user-related  data,  i.e.  playlists  and  music  saved  in  user’s  library」〔Musified  Web  APIは、開発者がそのアプリケーションを使用してMusified音楽カタログからデータを取得できるようにします。エンドポイントは、アーティスト、アルバム、およびトラックなどの情報をMusifiedカタログから直接提供するJSONフォーマットに帰着します。ユーザーの許諾に依存して、APIは、ユーザー関連データ、すなわち、ユーザーのライブラリに保存されたプレイリストおよび音楽へのアクセスを開発者に提供することもできます。」として、一次カテゴリ（primary  category）／二次カテゴリ（secondary  category）416を「Music」〔音楽〕および「Data  Mining」〔データマイニング〕として含む。
【００８１】
一つまたは複数の実施形態において、プロセッサ204は、第1の文書400A、第2の文書400B、および第3の文書400Cのそれぞれを処理して、Musified  APIに関連する情報を抽出するように構成されてもよい。抽出された情報は、APIタイトル402、API記述404、エンドポイント名／エンドポイント406、エンドポイント記述408、入出力パラメータ記述410、前記一つまたは複数のタグ412、API記述414、および一次／二次カテゴリ416を含んでいてもよい。抽出された情報は、複数のWeb  APIについて取得された第1の情報の一部と考えられてもよい。
【００８２】
図5は、本開示に記載される少なくとも一つの実施形態による、Web  APIに関連付けられた情報を使用して初期データセットを構築する例示的な方法のフローチャートを示す。図5は、図1、図2、図3、図4A、図4B、および図4Cの要素との関連で説明される。図5を参照するに、フローチャート500が示されている。フローチャート500に示されている方法は、502で始まってもよく、図2の例示的な推薦システム202など、任意の好適なシステム、装置、またはデバイスによって実行されてもよい。フローチャート500に示される方法は、初期データセットを構築するために抽出された第1の情報に対して実行される情報処理動作の第1の集合に対応してもよい。
【００８３】
502において、抽出された第1の情報に基づいて複数の文トークンが生成されてもよい。一つまたは複数の実施形態において、プロセッサ204は、抽出された第1の情報に基づいて前記複数の文トークンを生成するように構成されてもよい。複数の文トークンの各文トークンは、抽出された第1の情報のテキスト部分の文トークン化の後に得られる単一の文であってもよい。
【００８４】
一例として、抽出された第1の情報のテキスト部分（P）は、次のようなものであってもよい：
P＝{"API  for  managing  Social  Media  Account  Comments.  At  our  core  is  the  social  graph;  people  and  the  connections  they  have  to  everything  they  care  about.  The  Graph  API  presents  a  simple,  consistent  view  of  our  social  graph,  uniformly  representing  objects  in  the  graph  and  the  connections  between  them.  Public  information  can  be  accessed  without  a  developer  key/application  key,  but  is  required  for  private  data  access."}〔P＝｛「ソーシャルメディアアカウントのコメントを管理するためのAPI。我々の核心にあるのは、社会的グラフです；人々と、人々が関心をもつすべてのものに対して人々がもつつながりです。Graph  APIは、我々の社会的グラフの単純で一貫したビューを提示し、グラフ内のオブジェクトとそれらの間の関係を一様に表現します。公開情報は、開発者の鍵／アプリケーション鍵なしでアクセスできるが、プライベート・データ・アクセスには必要です。」｝〕
"P"の文トークン化は、次のように与えられる文トークン（sentence-token）の集合（ST）を提供しうる：ST＝{"API  for  managing  Social  Media  Account  Comments",  "At  our  core  is  the  social  graph",  "people  and  the  connections  they  have  to  everything  they  care  about",  "The  Graph  API  presents  a  simple,  consistent  view  of  our  social  graph,  uniformly  representing  objects  in  the  graph  and  the  connections  between  them",  "Public  information  can  be  accessed  without  a  developer  key/application  key,  but  is  required  for  private  data  access"}〔ST＝{「ソーシャルメディアアカウントのコメントを管理するためのAPI」，「我々の核心にあるのは、社会的グラフです」，「人々と、人々が関心をもつすべてのものに対して人々がもつつながりです」，「Graph  APIは、我々の社会的グラフの単純で一貫したビューを提示し、グラフ内のオブジェクトとそれらの間の関係を一様に表現します」，公開情報は、開発者の鍵／アプリケーション鍵なしでアクセスできるが、プライベート・データ・アクセスには必要です」｝〕
【００８５】
504において、生成された複数の文トークンは、生成された複数の文トークンからのストップワード、シンボル、特殊文字、2文字間のスペース、または短記述文（short-description  sentence）の一つまたは複数の除去に基づいてフィルタリングされてもよい。一つまたは複数の実施形態において、プロセッサ204が、生成された複数の文トークンからストップワード、シンボル、特殊文字、2文字間のスペース、または短記述文の一つまたは複数を除去することに基づいて、生成された複数の文トークンをフィルタリングするように構成されてもよい。
【００８６】
たとえば、"Public  information  can  be  accessed  without  a  developer  key/application  key,  but  is  required  for  private  data  access"という文トークンについて、フィルタリングされた文トークンは次のようなものであってもよい：
"Public  information  can  accessed  without  developer  key  application  key  but  required  private  data  access"
文トークンから、"be"、"a"、"is"、"for"などのストップワードが除去され、特殊文字"/"が除去されている。また、フィルタリングされた文トークンを得るために、各単語についての前後のスペースが除去されてもよい。
【００８７】
506において、前記のフィルタリングされた複数の文トークンに対して語幹処理動作を適用することによって、複数の文が得られてもよい。一つまたは複数の実施形態において、プロセッサ204は、フィルタリングされた複数の文トークンに対して語幹処理動作を適用することによって、複数の文を得るように構成されてもよい。語幹処理動作では、フィルタリングされた複数の文の各文中の対応する単語について、ロート／ベース単語の形態論的異形が得られてもよい。より具体的には、語幹処理動作は、フィルタリングされた複数の文の各文中の単語を、ルート語またはルート語の形態論的異形に還元してもよい。たとえば、フィルタリングされた文トークン"Public  information  can  accessed  without  developer  key  application  key  but  required  private  data  access"は、"public  inform  can  access  without  develop  key  apply  key  but  require  private  data  access"という文（sentence）を与えてもよい。
【００８８】
508において、取得された複数の文、複数のWeb  API名、および複数のWeb  API名に関連付けられた複数のエンドポイントがテーブル〔表〕に入れられてもよい。一つまたは複数の実施形態において、プロセッサ204が、取得された複数の文、複数のWeb  API名、および複数のWeb  API名に関連付けられた複数のエンドポイントをテーブルに入れるように構成されてもよい。
【００８９】
510において、初期データセットは、中身を入れられたテーブルを初期データセットに含めることによって構築されてもよい。一つまたは複数の実施形態において、プロセッサ204が、中身を入れられたテーブルを初期データセットに含めるように構成されてもよい。さらに、MLモデル102aのためのトレーニング・データセットを構築するために、初期データセットに対して情報処理動作の第2の集合が実行されてもよい。情報処理動作の第2の集合は、たとえば、図6に詳細に記載される。
【００９０】
フローチャート500は、502、504、506、508、および510のような離散的な動作として示されているが、ある種の実施形態では、開示された実施形態の本質を損なうことなく、具体的な実装に応じて、かかる離散的な動作がさらに追加的な動作に分割されたり、より少ない動作に組み合わされたり、または削除されたりしてもよい。
【００９１】
図6は、本開示に記載される少なくとも一つの実施形態による、図5の初期データセットを使用してトレーニング・データセットを構築するための例示的方法のフローチャートを示す。図6は、図1、図2、図3、図4A、図4B、図4C、図5の要素との関連で説明される。図6を参照するに、フローチャート600が示されている。フローチャート600に示される方法は、602で始まってもよく、図2の例示的な推薦システム202など、任意の好適なシステム、装置、またはデバイスによって実行されてもよい。フローチャート600に示される方法は、構築された初期データセットに対して実行される情報処理動作の第2の集合に対応してもよい。
【００９２】
602では、構築された初期データセット内の複数の文の各文について、複数の品詞（Part-of-Speech、POS）タグが決定されてもよい。一つまたは複数の実施形態において、プロセッサ204が、構築された初期データセット内の複数の文の各文について複数のPOSタグを決定するように構成されてもよい。一般に、POSタグ付けは、文中の所与の単語を、特定の品詞に対応するものとしてマークすることをいう。POSタグの例は、形容詞（ADJ）、副詞（ADV）、助動詞（AUX）、等位接続詞（CCONJ）、決定詞（DET）、間投詞（INTJ）、名詞（NN）、固有名詞（PROPN）、接置詞（ADP）、シンボル（SYM）、単数固有名詞（Proper  Noun  Singular）（NNP）、句読点（PUNCT）、従位接続詞（SCONJ）およびその他（X）を含みうるが、これらに限定されない。例示的な複数のPOSタグが、図7の例示的な文について与えられる。
【００９３】
たとえば、構築された初期データセットの中の文は、"Public  information  can  be  accessed  without  a  developer  key"〔公開情報は、開発者の鍵なしでアクセスできる〕として与えられてもよい。この文についての複数のPOSタグは、次のような表5によって与えられる。
【表５】
2020191075.tif 000007
【００９４】
604では、統語依存木（syntactic  dependency  tree）が、構築された初期データセット内の複数の文の各文について形成されてもよい。一つまたは複数の実施形態において、プロセッサ204が、複数の文の各文について統語依存木を形成するように構成されてもよい。一般に、文中の一組のトークンの間の関係は、しばしば、依存性と称されることがある語と語の文法関係によって表現できる。これらの依存関係はさらに、文中の単語が有向リンクによって互いに接続されるという概念を記述する依存木によって表現されてもよい。有向リンクは、接続された単語が有する関係を記述する。統語依存木の例が図7に与えられる。
【００９５】
統語依存木における文のトークン間の関係は、関係によって記述されてもよい。統語依存木についての関係の例示的な表が、次のような表6に与えられる。
【表６】
2020191075.tif 000008
【００９６】
606において、複数の自然言語クエリーは、決定された複数のPOSタグと、複数の文の各文についての形成された統語依存木とに基づいて形成されてもよい。一つまたは複数の実施形態において、プロセッサ204が、決定された複数のPOSタグと、複数の文の各文についての形成された統語依存木とに基づいて複数の自然言語クエリーを形成するように構成されてもよい。各自然言語クエリーは、所望される機能を提供するWeb  APIを探しているかもしれないユーザー（開発者など）からの可能な入力自然言語クエリーを模倣するように形成されてもよい。
【００９７】
複数の自然言語クエリーは、一組の質問型クエリー、一組のコマンド型クエリー、一組のキーワード型クエリー、および一組のタイトル型クエリーを含んでいてもよいが、これらに限定されない。ここでは、複数の自然言語クエリーを形成する方法について説明する。
【００９８】
一つまたは複数の実施形態において、プロセッサ204は、複数の文の第1の文から第1の質問型クエリーを形成するように構成されてもよい。第1の質問型クエリーは、第1の文についての形成された統語依存木の中のルートノードが、第1の文についての決定された複数のPOSタグの中の動詞であるという判定に基づいて形成されてもよい。一例として、第1の質問型クエリーは、構築された初期データセットで指定されたAPI記述およびエンドポイント記述に基づいて形成されるルールベースの完全な質問型クエリーであってもよい。
第1の文"get  weather  information  based  on  location"〔位置に基づいて気象情報を取得〕について'ROOT'（すなわち、依存木におけるルートノード）が'VB'（すなわち動詞）であるとすると、対応する第1の質問型クエリーは、"How  to"＋'VB'＋残りの文?"、すなわち"How  to  get  weather  information  based  on  location?"〔どうやって位置に基づいて気象情報を取得するか〕として与えられてもよい。
もう一つの例として、第1の質問型クエリーは、次のように、構築された初期データセットにおいて指定されたAPI記述およびエンドポイント記述に基づいて形成されたルールベースの簡略化された質問であってもよい。
第1の文"get  weather  information  based  on  location"〔位置に基づいて気象情報を取得〕について'ROOT'が'VB'であるとすると、対応する第1の質問型クエリーは、"How  to"＋'VB'＋その'dobjNOUN句'?"、すなわち"How  to  get  weather  information?"〔どうやって気象情報を取得するか〕として与えられてもよい。
【００９９】
一つまたは複数の実施形態において、プロセッサ204は、複数の文の第2の文から第2の質問型クエリーを形成するように構成されてもよい。第2の質問型クエリーは、第2の文における主語が、第2の文についての形成された統語依存木における名詞的主語（nominal  subject）であり、該主語が、第2の文についての決定された複数のPOSタグの中の動詞であるという判定に基づいて形成されてもよい。例として、第2の質問型クエリーは、次のように、構築された初期データセットにおいて指定されたAPI記述およびエンドポイント記述に基づいて形成されるルールベースの完全な質問型クエリーであってもよい。
第2の文"this  API  can  get  the  you2tube  playlist  according  to…"〔このAPIは…に従ってyou2tubeプレイリストを取得できます〕について(subj.dep)==nsubjかつsubject.head.pos==VERBである場合、第2の質問型クエリーは"What  API"＋'VB'＋残りの文?"、すなわち"what  API  can  get  the  you2tube  playlist  according  to…?"〔どのAPIが…に従ってyou2tubeプレイリストを取得できるか〕として与えられてもよい。
もう一つの例として、第2の文"this  API  can  get  the  you2tube  playlist  according  to…"〔このAPIは…に従ってyou2tubeプレイリストを取得できます〕についてsubj.dep==nsubjかつsubject.head.pos==VERBである場合、対応する第2の質問型クエリーは"What  API"＋'VB'＋その'dobjNOUN句'?、すなわち"what  API  can  get  you2tube  playlist?"〔どのAPIがyou2tubeプレイリストを取得できるか〕として与えられてもよい。
【０１００】
一つまたは複数の実施形態において、プロセッサ204は、構築された初期データセット内の少なくとも入力パラメータ記述または出力パラメータ記述に基づいて、第3の質問型クエリーを形成するように構成されてもよい。一例として、第3の質問型クエリーは、"What  API  can  take  input  <input  descriptions>  [and  generate  output  <output  descriptions>]?"〔どのAPIが入力<入力記述>を受け［そして出力<出力記述>を生成す］るか〕であってもよい。ここで、出力パラメータ記述がない場合には、出力パラメータ記述は任意的であってもよい。
【０１０１】
一つまたは複数の実施形態において、他の質問型クエリーが、初期データセットにおけるAPI記述およびエンドポイント記述に基づいて定式化されてもよい。たとえば、ユーザーの質問が非常に詳細であることを考慮して、いくつかの質問型クエリーが定式化されてもよい。そのような場合、構築された初期データセットにおけるAPI記述またはエンドポイント記述の一つまたは複数の文が直接トランスレーションされてもよい。また、ほとんどのユーザーが、長くて詳細な質問ではなく、短く簡略化された質問を入力する傾向があることを考慮して、いくつかの質問型クエリーが定式化されてもよい。
【０１０２】
一つまたは複数の実施形態において、プロセッサ204は、複数の文の第1の文からの第1のコマンド型クエリーを形成するように構成されてもよい。第1のコマンド型クエリーは、第1の文についての形成された統語依存木におけるルートノードが、第1の文についての決定された複数のPOSタグ中の動詞であるという判定に基づいて形成されてもよい。一例として、第1のコマンド型クエリーは、次のように、ルールベースの長いコマンド型クエリーであってもよい：
第1の文"get  weather  information  based  on  location"〔位置に基づいて気象情報を取得〕について'ROOT'（すなわち依存木におけるルートノード）が'VB'（すなわち動詞）であるならば、対応する第1のコマンド型クエリーは第1の文と同じであってもよい。
もう一つの例として、第1の文"get  weather  information  based  on  location"について'ROOT'が'VB'であるならば、対応する第1のコマンド型クエリーは"VB＋そのdobj  NOUN句"、すなわち" get  weather  information "〔気象情報を取得〕として与えられてもよい。
【０１０３】
一つまたは複数の実施形態において、プロセッサ204は、複数の文の第2の文からの第2のコマンド型クエリーを形成するように構成されてもよい。第2のコマンド型クエリーは、第2の文の主語が、第2の文についての形成された統語依存木における名詞的主語であり、主語が、第2の文についての決定された複数のPOSタグ中の動詞であるという判定に基づいて形成されてもよい。一例として、第2のコマンド型クエリーは、次のように、ルールベースの長いコマンド型クエリーであってもよい：
第2の文"this  API  can  get  the  you2tube  playlist  according  to…"について(subject.dep)==nsubj  かつ  subject.head.pos==VERBであれば、第2のコマンド型クエリーは"VB"＋その名詞句"、すなわち"get  you2tube  playlist"として与えられてもよい。
もう一つの例として、第2の文"this  API  can  get  the  you2tube  playlist  according  to…"について(subject.dep)==nsubj  かつ  subject.head.pos==VERBであれば、第2のコマンド型クエリーは"VB"＋その名詞句"、すなわち"get  you2tube  playlist"として与えられてもよい。
【０１０４】
一つまたは複数の実施形態において、プロセッサ204は、Web  APIマッシュアップに関連するウェブ文書上のAPIマッシュアップ記述に基づいて、第3のコマンド型クエリーを形成するように構成されてもよい。たとえば、ウェブ文書は、クラウドソーシング知識ウェブサイトのウェブページであってもよく、ウェブ文書の"How  it  Works"〔仕組み〕セクションのもとで提供されるAPIマッシュアップ記述を含んでいてもよい。プロセッサ204は、APIマッシュアップ記述を抽出し、抽出されたAPIマッシュアップ記述から直接、第3のコマンド型クエリーを形成するように構成されてもよい。
【０１０５】
一つまたは複数の実施形態において、プロセッサ204は、複数のWeb  APIのWeb  APIに関連付けられたアプレット記述文書上のAPI記述に基づく第4のコマンド型クエリーを形成するように構成されてもよい。たとえば、アプレット記述文書は、クラウドソーシング知識ウェブサイトのウェブページであってもよく、API記述を含んでいてもよい。そのような場合、第4のコマンド型クエリーは、アプレット記述文書からのAPI記述を直接使用することによって形成されてもよい。
【０１０６】
一つまたは複数の実施形態において、プロセッサ204は、ウェブ文書上のAPIマッシュアップ記述内のトリガー文セグメントおよびアクション文セグメントに基づく第5のコマンド型クエリーを形成するように構成されてもよい。たとえば、APIマッシュアップ記述は、"Create  note  on  DoNote  from  new  Calendar  events"〔新たなカレンダー・イベントからDoNote上のノートを生成〕というものであってもよい。このマッシュアップ記述はトリガー文セグメント"from  new  Calendar  events"〔新たなカレンダー・イベントから〕およびアクション文セグメント"Create  note  on  DoNote"〔DoNote上のノートを作成〕に分割されてもよい。
【０１０７】
一例として、第5のコマンド型クエリーは、ウェブ文書に対する一組の動作の適用によって形成されてもよい。「トリガー」APIおよび「アクション」APIは、ウェブ文書から取り出され、取り出された「トリガー」APIおよび「アクション」APIの名前は、取り出された「トリガー」APIおよび「アクション」APIからクリーンされてもよい。APIマッシュアップ記述の句（または諸単語のスパン）は、トリガー名またはアクション名とマッチングされてもよい。APIマッシュアップ記述の各文に対して依存性パース動作が適用されて、依存木が得られてもよい。依存木は、トリガー名またはアクション名とマッチした「トリガー」または「アクション」句から、ノードが別の句の一部をカバーするまで、依存木のルートまでトレースされてもよい。
【０１０８】
一つまたは複数の実施形態において、他のコマンド型クエリーが、初期データセットにおけるAPI記述およびエンドポイント記述に基づいて定式化されてもよい。たとえば、ユーザーのコマンドが非常に詳細であることを考慮して、いくつかのコマンド型クエリーが定式化されてもよい。そのような場合、構築された初期データセットにおけるAPI記述またはエンドポイント記述の一つまたは複数の文が直接トランスレーションされてもよい。また、ほとんどのユーザーが、長くて詳細なコマンドではなく、短く簡略化されたコマンドを入力する傾向があることを考慮して、いくつかのコマンド型クエリーが定式化されてもよい。
【０１０９】
一つまたは複数の実施形態において、プロセッサ204は、前記複数の文の各文から、一つまたは複数のキーワード、一つまたは複数の名詞句、一つまたは複数の一次カテゴリ、一つまたは複数の二次カテゴリ、および一つまたは複数のタグを抽出するように構成されてもよい。その後、プロセッサ204は、抽出された一つまたは複数のキーワード、一つまたは複数の名詞句、一つまたは複数の一次カテゴリ、一つまたは複数の二次カテゴリ、および一つまたは複数のタグに基づくキーワード型クエリーを形成するように構成されてもよい。一例として、一つまたは複数のキーワードは、高速自動キーワード抽出（Rapid  Automatic  Keyword  Extraction、RAKE）法などの既存の自然言語処理（Natural  Language  Processing、NLP）法を使用して、複数の文の各文から抽出されてもよい。同様に、一つまたは複数の名詞句は、SpaCy（または他のNLPツール）のような既存のNLPライブラリを使用して抽出されてもよい。キーワード型クエリーは、"keyword1,  keyword2,  keyword3,  …"のようなフォーマットで与えられてもよい。
【０１１０】
一つまたは複数の実施形態において、プロセッサ204は、APIタイトルと、質問型クエリー、コマンド型クエリー、またはキーワード型クエリーのうちの一つとに基づくタイトル型クエリーを形成するように構成されてもよい。より具体的には、タイトル型クエリーは、APIタイトルと、質問型クエリー、コマンド型クエリー、またはキーワード型クエリーのうちの一つとの組み合わせであってもよい。タイトル型クエリーは、ユーザーからの入力クエリーがAPIタイトルを含む場合のトレーニング・サンプルを得るために形成されてもよい。一例として、Graph〔グラフ〕のようなAPIタイトルを用いて、タイトル型クエリー："retrieve  comments  using  Graph"〔グラフを用いてコメントを取得〕を得てもよい。
【０１１１】
608では、形成された複数の自然言語クエリーに基づいてトレーニング・データセットが構築されてもよい。一つまたは複数の実施形態において、プロセッサ204は、形成された複数の自然言語クエリーに基づいてトレーニング・データセットを構築するように構成されてもよい。トレーニング・データセットは、形成された第1の質問型クエリー、形成された第2の質問型クエリー、および形成された第3の質問型クエリーにさらに基づいて構築されてもよい。トレーニング・データセットは、形成された第1のコマンド型クエリー、形成された第2のコマンド型クエリー、形成された第3のコマンド型クエリー、形成された第4のコマンド型クエリー、および形成された第5のコマンド型クエリーにさらに基づいて構築されてもよい。トレーニング・データセットは、形成されたキーワード型クエリーおよび形成されたタイトル型クエリーにさらに基づいて構築されてもよい。トレーニング・データセットの例示的なテンプレートが次のように表7によって与えられる：
【表７】
2020191075.tif 000009
フローチャート600は、602、604、606、および608のような離散的な動作として示されているが、ある種の実施形態では、開示された実施形態の本質を損なうことなく、具体的な実装に応じて、かかる離散的な動作がさらに追加的な動作に分割されたり、より少ない動作に組み合わされたり、または削除されたりしてもよい。
【０１１２】
図7は、本開示に記載された少なくとも一つの実施形態による、例示的な文についての統語依存木およびPOSタグの例を示している。図7は、図1、図2、図3、図4A、図4B、図4C、図5、および図6の要素との関連で説明される。図7を参照するに、例示的な文706について、構文依存木702および複数のPOSタグ704の例700が示されている。
【０１１３】
例示的な文706は、"This  is  a  sentence"〔これは文である〕として与えられてもよく、例示的な文706についての複数のPOSタグ704は、「This:  DT」、「Is:  VB」、「A:  DT」、および「Sentence:  NN」として与えられてもよい。ここで、DT、VB、NNは決定詞、動詞、名詞を指す。
【０１１４】
図示されるように、「is」は、「VB」POSタグに割り当てられ、構文依存木702のルートノードである。例示的な文706における他の単語／トークンは、親ノードまたはルートノードとの文法関係によって記述されてもよい。よって、「this」は「DT」POSタグを割り当てられ、ルートノードを基準として名詞的主語（nsubj）の関係を有する。同様に、「sentence」は「NN」POSタグを割り当てられ、ルートノードを基準として関係、決定詞（det）を有する。また、「A」は、「DT」POSタグを割り当てられ、「sentence」に対応するノードを基準として関係（attr）を有する。
【０１１５】
図8は、本開示において記載される少なくとも一つの実施形態による、例示的なMLモデル802のブロック図を示す。図8は、図1、図2、図3、図4A、図4B、図4C、図5、図6、図7からの要素との関連で説明される。図8を参照するに、MLモデル102Aに対応しうる例示的なMLモデル802のブロック図800が示されている。
【０１１６】
一つまたは複数の実施形態において、例示的なMLモデル802は、たとえば、ソフトウェア・プログラム、ソフトウェア・プログラムのコード、ライブラリ、アプリケーション、スクリプト、またはプロセッサ204のような処理装置による実行のための他の論理または命令のような電子データを含んでいてもよい。例示的なMLモデル802は、プロセッサ204のようなコンピューティング装置が、入力自然言語クエリーについてWeb  API名および関連するエンドポイントを推薦するための一つまたは複数の動作を実行できるようにするように構成されたコードおよびルーチンを含んでいてもよい。追加的または代替的に、例示的なMLモデル802は、プロセッサ、マイクロプロセッサ（たとえば、一つまたは複数の動作を実行するまたはその動作を制御するため）、フィールドプログラマブルゲートアレイ（FPGA）、または特定用途向け集積回路（ASIC）を含むハードウェアを使用して実装されてもよい。いくつかの他の事例では、例示的なMLモデル802は、ハードウェアおよびソフトウェアの組み合わせを使用して実装されてもよい。
【０１１７】
例示的なMLモデル802は、第1ステージ804および第2ステージ806を含む2ステージ転移学習モデル（dual-stage  transfer  learning  model）であってもよい。第1ステージ804は、並列構成に配置された第1のモデル808および第2のモデル810を含んでいてもよい。第2ステージ806は、第1のモデル808および第2のモデル810の対応する出力層に結合された人工ニューラルネットワーク（ANN）を含んでいてもよい。ある種の実施形態では、第1ステージ804の出力層は連結層に結合されてもよく、該連結層はさらに第2ステージ806に結合されてもよい。第2ステージ806のANNの出力は、例示的なMLモデル802の最終出力を提供しうる高密度層814に結合されてもよい。
【０１１８】
第1のモデル808は、第1の入力層808A、第1の埋め込み層808B、第1のBi-LSTMネットワーク808C、および第1のBi-LSTMネットワーク808Cに結合された高密度層808Dを含んでいてもよい。第1の入力層808Aは、第1のBi-LSTMネットワーク808Cに結合されてもよい第1の埋め込み層808Bに結合されてもよい。同様に、第2のモデル810は、第2の入力層810A、第2の埋め込み層810B、第2のBi-LSTMネットワーク810C、および第2のBi-LSTMネットワーク810Cに結合された高密度層810Dを含んでいてもよい。第2の入力層810Aは、第2のBi-LSTMネットワーク810Cに結合されうる第2の埋め込み層810Bに結合されてもよい。
【０１１９】
第2段階806のANNは、一つまたは複数の高密度層および／または一つまたは複数のドロップアウト層を含んでいてもよい。たとえば、図8に示されるアーキテクチャーは、高密度層806A、ドロップアウト層806B、高密度層806C、およびドロップアウト層806Dを含む。高密度層806Aは、高密度層806Cに結合されてもよいドロップアウト層806Bに結合されてもよい。高密度層806Cは、高密度層814に結合されてもよいドロップアウト層806Dにさらに結合されてもよい。
【０１２０】
本明細書では、例示的なMLモデル802をトレーニングするための例示的方法が提供される。一つまたは複数の実施形態において、例示的方法は、図2の例示的な推薦システム202のような、任意の好適なシステム、装置、またはデバイスによって実行されてもよい。例示的な方法では、トレーニング・データセットからの複数の自然言語クエリーの第1の自然言語クエリーが、第1の埋め込み層808Bおよび第2の埋め込み層810Bのそれぞれに提供されてもよい。提供される第1の自然言語クエリーの第1の単語ベクトル表現が、第1の埋め込み層808Bおよび第2の埋め込み層810Bのそれぞれから出力されてもよい。第1の埋め込み層808Bおよび第2の埋め込み層810Bのそれぞれは、第1の自然言語クエリーについての第1の単語ベクトル表現を出力するために、単語埋め込み技術、たとえばWord2Vec技法を実装してもよい。Word2Vec技法は、浅いニューラルネットワークを用いて単語埋め込みを学習するために、スキップグラムモデル（skip  gram  model）または共通単語バッグ（Common  Bag  of  Words、CBOW）の一方を実装してもよい。
【０１２１】
第1の自然言語クエリーの出力単語ベクトル表現は、第1のBi-LSTMネットワーク808Cへの第1の入力および第2のBi-LSTMネットワーク810Cへの第2の入力として提供されてもよい。第1のBi-LSTMネットワーク808Cおよび第2のBi-LSTMネットワーク810Cのそれぞれは、2つのLSTMネットワーク、すなわち、第1のLSTMネットワークおよび第2のLSTMネットワークを有していてもよい。出力単語ベクトル表現は、第1のLSTMネットワークにそのまま提供されてもよい。一方、出力単語ベクトル表現の反転されたコピー（reversed  copy）が第2のLSTMネットワークへの入力シーケンスとして提供されてもよい。出力単語ベクトル表現の現状そのままのコピーおよび反転されたコピーを提供することによって、第1のBi-LSTMネットワーク808Cおよび第2のBi-LSTMネットワーク810Cのそれぞれは、第1の自然言語クエリーの追加的なコンテキストを学習し、より高速で正確な学習に帰結しうる。
【０１２２】
追加的または代替的に述べると、第1のBi-LSTMネットワーク808Cは、トレーニング・データセットの複数のクエリー‐API名のペアに基づいてトレーニングされてもよい。トレーニング・データセットの各クエリー‐API名のペアは、前記複数のWeb  APIのうちの対応するWeb  APIについての自然言語クエリーとWeb  API名を含んでいてもよい。自然言語クエリーは、第1のBi-LSTMネットワーク808Cへの入力として提供され、一方、Web  API名は、第1のBi-LSTMネットワーク808Cの重みを更新し、第1のBi-LSTMネットワーク808Cについてのコスト関数を最小化するための基礎的事実〔グラウンドトゥルース〕出力として使用されてもよい。同様に、第2のBi-LSTMネットワーク810Cは、トレーニング・データセットの複数のクエリー‐エンドポイント・ペアに基づいてトレーニングされてもよい。トレーニング・データセットの各クエリー‐エンドポイント・ペアは、複数のWeb  APIの対応するWeb  APIのための自然言語クエリーおよびエンドポイントを含んでいてもよい。自然言語クエリーは、第2のBi-LSTMネットワーク810Cへの入力として提供されてもよく、エンドポイントは、第2のBi-LSTMネットワーク810Cの重みを更新し、第2のBi-LSTMネットワーク810Cについてのコスト関数を最小化するための基礎的事実出力として使用されてもよい。
【０１２３】
トレーニングされた第1のBi-LSTMネットワーク808Cおよびトレーニングされた第2のBi-LSTMネットワーク810Cは、トレーニング不可として設定されてもよい。一例として、ニューラル重み値およびすべてのハイパーパラメータ、たとえば、ネットワーク構造／サイズ、学習率などが固定されてもよい。第1のBi-LSTMネットワーク808Cおよび第2のBi-LSTMネットワーク810Cの出力は、連結層812に提供されてもよく、該連結層812は、それらの出力を一緒に連結し、連結された出力を次の層、すなわち、例示的なMLモデル802の第2のステージ806におけるANNの高密度層806Aに提供する。
【０１２４】
設定後、トレーニング・データセットの複数のクエリー‐エンドポイント‐API名ペアに基づいて、第1ステージ804および第2ステージ806上で、モデル・フィッティング（model-fitting）動作が適用されてもよい。各クエリー‐API名‐エンドポイント・ペアは、自然言語クエリー、Web  API名、および対応するWeb  APIのエンドポイントを含んでいてもよい。自然言語クエリーは、第1ステージ804への入力として提供されてもよく（808および810における対応する層の重みは、トレーニング不可として設定されてもよい）、一方、API名およびエンドポイントは、例示的なMLモデル802の重みを更新し、MLモデル802全体についてのコスト関数を最小化するための基礎的事実出力として使用されてもよい。その後、例示的なMLモデル802、すなわちトレーニングされたMLモデル802は、第1ステージ804および第2ステージ806上でのモデル・フィッティング動作の適用に基づいて得られてもよい。一例として、モデル
フィッティング動作では、コスト関数が最小化されるまで、MLモデル802全体のための一つまたは複数のハイパーパラメータおよび重みが、複数のエポックにわたって再帰的に更新されてもよい。
【０１２５】
ひとたび例示的なMLモデル802が得られれば、高密度層814は、例示的なMLモデル802への入力としての自然言語クエリーについて、推薦結果の集合816を出力するように構成されてもよい。それぞれの推薦結果は、自然言語クエリーのコンテキスト／意図に一致する特定のWeb  APIおよび特定のエンドポイントを含んでいてもよい。高密度層814は、特定のWeb  APIおよび特定のエンドポイントに対する突出度（prominence）／一致度を示す尤度値（または信頼スコア）を出力してもよい。
【０１２６】
一つまたは複数の実施形態において、高密度層808Dは、予測結果808Eを出力するように構成されてもよく、高密度層810Dは、予測結果810Eを出力するように構成されてもよい。予測結果808Eは、与えられた自然言語クエリーに対する特定のWeb  API名であってもよい。同様に、予測結果810Eは、与えられた自然言語クエリーに対する特定のWeb  API名に対する特定のエンドポイントであってもよい。これらの2つの高密度層808Dおよび810Dは、トレーニング・データセットを使って、第1ステージ804における対応する層（808A、808B、808C、810A、810B、810C）の重みをトレーニングするために主に使用される。
【０１２７】
2ステージ転移学習アーキテクチャーのため、例示的なMLモデル802は、標準的な深層学習モデルと比較して、高い分類精度（〜90%の精度）を達成する。たとえば、Web  APIとそのエンドポイントを推薦するためにBi-LSTMだけを使用すると、「〜50%」の分類精度が達成されうる。
【０１２８】
図9Aおよび9Bは、まとまって、本開示において説明される少なくとも一つの実施形態による、図2の例示的な推薦システム上のMLモデル102Aを再トレーニングおよび再配備するための例示的方法のフローチャートを示している。図9Aおよび9Bは、図1、図2、図3、図4A、図4B、図4C、図5、図6、図7、および図8からの要素との関連で説明される。図9Aおよび9Bを参照するに、フローチャート900が示されている。フローチャート900に示されている方法は、902で始まってもよく、図2の例示的な推薦システム202など、任意の好適なシステム、装置、またはデバイスによって実行されうる。
【０１２９】
902では、MLモデル102A（すなわち、トレーニングされたMLモデル102A）が、例示的な推薦システム202上に配備されてもよい。一つまたは複数の実施形態において、プロセッサ204が、例示的な推薦システム202上にMLモデル102Aを配備するように構成されてもよい。ひとたび配備されると、すべてのハイパーパラメータおよび重みは、入力自然言語クエリーを含むユーザー入力を受け取るためにMLモデル102Aを準備するために凍結されてもよい。
【０１３０】
904では、ユーザー装置108の電子UI  214を介して入力自然言語クエリーを受領するために、電子UI  214が例示的な推薦システム202上に配備されてもよい。一例として、電子UI  214がユーザー装置108上に表示されるために、リソース（たとえば、ウェブページ要素、コード、グラフィックス等）が例示的な推薦システム202上に配備される必要があってもよい。ひとたび、ログインまたはウェブページ・アクセスのようなユーザー要求がユーザー装置108を介して行なわれると、例示的な推薦システム202は、ユーザー装置108上に電子UI  214をレンダリングするために、前記リソースをユーザー装置108に送信するように構成されてもよい。
【０１３１】
906では、第1のUI要素が、電子UI  214を介して入力自然言語クエリーを受領するために、電子UI  214上にレンダリングされてもよい。一つまたは複数の実施形態において、プロセッサ204が、入力自然言語のクエリーを受領するために、電子UI  214上に第1のUI要素をレンダリングするようにユーザー装置108に命令するように構成されてもよい。第1のUI要素は、ユーザー（たとえば、開発者）が入力自然言語クエリーを提供するために使用する検索インターフェース（たとえば、テキストベースの検索インターフェース）であってもよい。入力自然言語クエリーは、ユーザーの意図、関心のあるAPI機能、またはユーザーにとって関心のある問題陳述のうちの一つまたは複数を示してもよい。換言すれば、入力自然言語クエリーは、ユーザーが望ましいWeb  APIおよびそのエンドポイントを用いてユーザーのソフトウェア・アプリケーションに組み込むことを望むかもしれない問題に対する、機能性または解決策に対するユーザーの所望／意図を反映しうる。第1のUI要素の一例が図10Aに与えられる。MLモデル102A（すなわち、配備されトレーニングされたMLモデル）は、第1のUI要素を介して入力自然言語クエリーを受領し、入力自然言語クエリーに基づく一組の推薦結果を出力するように構成されてもよい。
【０１３２】
908では、出力された一組の推薦結果からの第1の推薦結果のユーザー選択が受領されてもよい。第1の推薦結果は、前記複数のWeb  APIのうちの特定のAPIに対応するAPI名および特定のエンドポイントを含んでいてもよい。一つまたは複数の実施形態において、プロセッサ204は、出力された一組の推薦結果からの第1の推薦結果のユーザー選択を受領するようにユーザー装置108に命令するように構成されてもよい。
【０１３３】
910では、ユーザー選択を示すために、第2のUI要素が電子UI  214上にレンダリングされてもよい。一つまたは複数の実施形態において、プロセッサ204は、出力される一組の推薦結果のうちの第1の推薦結果のユーザー選択を示すために、電子UI  214上に第2のUI要素をレンダリングするようにユーザー装置108に命令するように構成されてもよい。第2のUI要素の一例が図10Bに与えられている。この例示的なUIでは、APIおよびそのエンドポイントが同じページに一緒に示される。あるいはまた、UIは最初にAPI名を示すことができ、ユーザーが特定のAPIを選択すると、このAPIについての推薦されるエンドポイント名が表示される。
【０１３４】
912では、ユーザーが出力される一組の推薦結果に関するフィードバックを提出できるようにするために、第3のUI要素が電子UI  214上にレンダリングされてもよい。フィードバックは、肯定的なフィードバックまたは否定的なフィードバックの一方でありうる。肯定的なフィードバックは、出力される一組の推薦結果のうちの第1の推薦結果のユーザー選択がユーザーにとって有用である可能性があり、入力自然言語クエリーに照らして適切である可能性があることを示してもよい。同様に、否定的なフィードバックは、出力される一組の推薦結果がユーザーにとって無関係である可能性がある、または入力自然言語クエリーに照らして無関係である可能性があることを示してもよい。また、否定的なフィードバックは、出力される一組の推薦結果のうちのどの推薦結果も選択しないというユーザーの選択を示してもよい。ある種の実施形態では、フィードバックは、「1」から「5」個の星の評点で測られてもよい。たとえば、「4」または「5」個の星の評点は肯定的なフィードバックを示し、「1」または「2」個の星の評点は否定的なフィードバックを示し、「3」個の星の評点は中立のフィードバックを示してもよい。第3のUI要素の一例が図10Bに与えられている。
【０１３５】
914では、トレーニング・データセットは、少なくとも前記フィードバック、第1の推薦結果のユーザー選択、または入力自然言語クエリーに基づいて更新されてもよい。一つまたは複数の実施形態において、プロセッサ204が、少なくとも前記フィードバック、第1の推薦結果のユーザー選択、または入力自然言語クエリーに基づいてトレーニング・データセットを更新するように構成されてもよい。トレーニング・データセットを更新する方法が914Aから914Eに記述されている。
【０１３６】
914Aでは、レンダリングされた第1のUI要素を介して受領された入力自然言語クエリーが、トレーニング・データセットに記録されてもよい。一つまたは複数の実施形態において、プロセッサ204が、レンダリングされた第1のUI要素を介して受領された入力自然言語クエリーをトレーニング・データセットに記録するように構成されてもよい。
【０１３７】
914Bでは、レンダリングされた第3のUI要素を介して受領されたフィードバックが、トレーニング・データセットに記録されてもよい。一つまたは複数の実施形態において、プロセッサ204が、レンダリングされた第3のUI要素を介して受け取ったフィードバックをトレーニング・データセットに記録するように構成されてもよい。
【０１３８】
914Cでは、入力自然言語のクエリーに対する記録されたフィードバックが肯定的なフィードバックであるかどうかが判定されてもよい。一つまたは複数の実施形態において、プロセッサ204が、入力自然言語クエリーに対する記録されたフィードバックが肯定的なフィードバックであるかどうかを判定するように構成されてもよい。入力自然言語のクエリーに対する記録されたフィードバックが肯定的なフィードバックである場合、制御は914Dに渡されてもよい。さもなければ、制御は914Fに渡されてもよい。
【０１３９】
914Dでは、記録された入力自然言語クエリーは、記録されたフィードバックが肯定的なフィードバックであるという判定に基づいて、トレーニング・データセットに保持されてもよい。一つまたは複数の実施形態において、プロセッサ204が、記録されたフィードバックが肯定的なフィードバックであるという判定に基づいて、記録された入力自然言語クエリーをトレーニング・データセット内に保持するように構成されてもよい。一例として、所与の入力自然言語クエリーに対して、そのユーザーがどのAPI／エンドポイントを選択したかが検査されてもよく、ユーザーが一つまたは複数の推薦結果についての肯定的なフィードバック（たとえば、5つ星）を残す場合、入力自然言語クエリーは、トレーニング・データセットに記録されてもよい。
【０１４０】
914Eでは、ユーザー選択は、記録されたフィードバックが肯定的なフィードバックであるという判定に基づいて、トレーニング・データセットに記録されてもよい。一つまたは複数の実施形態において、プロセッサ204は、第1の推薦結果のユーザー選択をトレーニング・データセットに記録するように構成されてもよい。第1の推薦結果のユーザー選択は、たとえ第1の推薦結果が、出力される一組の推薦結果のうちの残りと比較して、より低い信頼スコアを割り当てられるとしても、第1の推薦結果が、出力される一組の推薦結果のうちの残りと比較して、より関連性があるかもしれないことを示してもよい。
【０１４１】
914Fにおいて、記録された入力自然言語クエリーは、記録されたフィードバックが否定的なフィードバックであるという判定に基づいて、トレーニング・データセットから除去されてもよい。一つまたは複数の実施形態において、プロセッサ204が、記録されたフィードバックが否定的なフィードバックであるという判定に基づいて、トレーニング・データセットから記録された入力自然言語クエリーを除去するように構成されてもよい。
【０１４２】
916において、MLモデル102Aは、更新されたトレーニング・データセットに基づいて再トレーニングされてもよい。一例として、MLモデル102Aの重みおよび／または一つまたは複数のハイパーパラメータは、コスト関数のグローバルな最小がある数のエポックで達成されるように調整されてもよい。一つまたは複数の実施形態において、プロセッサ204は、更新されたトレーニング・データセットに基づいてMLモデル102Aを再トレーニングするように構成されてもよい。
【０１４３】
918において、再トレーニングされたMLモデル102Aは、例示的な推薦システム202上に配備されてもよい。ひとたび再トレーニングされると、MLモデル102Aは、改善された精度およびより低い分類誤差で推薦結果を出力するようにトレーニングされうる。一つまたは複数の実施形態において、プロセッサ204は、例示的な推薦システム202上に再編成されたMLモデル102Aを再配備するように構成されてもよい。制御は、終了ブロックに進む。フローチャート900は、902、904、906、908、910、912、914、914A-914F、916、および918のような離散的な動作として示されているが、ある種の実施形態では、開示された実施形態の本質を損なうことなく、特定の実装に依存して、かかる離散的な動作は、さらに追加的な動作に分割されたり、より少ない動作に組み合わされたり、または削除されたりしてもよい。
【０１４４】
図10Aは、本開示に記載される少なくとも一つの実施形態による、入力自然言語クエリーを受領するためのUI要素を表示するための例示的な電子ユーザー・インターフェースを示している。図10Aは、図1、図2、図3、図4A、図4B、図4C、図5、図6、図7、図8、図9の要素との関連で説明される。図10Aを参照すると、例示的な電子UI  1000Aが示されている。例示的な電子UI  1000Aは、ブラウザウインドウ上にレンダリングされる電子的なウェブページのような電子ビューであってもよい。例示的な電子UI  1000Aは、ユーザーが例示的な推薦システム202に入力自然言語クエリーを提供することを許容するためのテキストベースの検索インターフェースであってもよい第1のUI要素1002を含んでいてもよい。一例として示されているように、入力自然言語クエリーは、"manage  bank  account"〔銀行口座を管理する〕であってもよく、通信ネットワーク110を介して例示的な推薦システム202に提供されてもよい。
【０１４５】
図10Bは、本開示に記載される少なくとも一つの実施形態による、推薦結果を表示し、推薦結果の品質に関するフィードバックを受領するための別のUI要素を表示するための例示的な電子ユーザー・インターフェースを示す。図10Bは、図1、図2、図3、図4A、図4B、図4C、図5、図6、図7、図8、図9、図10Aの要素との関連で説明される。図10Bを参照するに、例示的な電子UI  1000Bが示されている。例示的な電子UI  1000Bは、ブラウザウインドウ上にレンダリングされる電子的なウェブページのような電子ビューであってもよい。例示的な電子UI  1000Bは、第2のUI要素1004、第3のUI要素1006、および第4のUI要素1008を含んでいてもよい。第4のUI要素1008は、第1のUI要素1002を介して受領された入力自然言語クエリーについての一組の推薦結果を含んでいてもよい。一組の推薦結果は、「推薦されるAPI」、「推薦されるエンドポイント」、「可能性」、「API記述」および「エンドポイント記述」のような一組のフィールドをもつ表形式に構造化されてもよい。例示的な電子UI  1000Bでは、APIとそのエンドポイントが同じページに一緒に示される。あるいはまた、UIは最初にAPI名を示すことができ、ユーザーが特定のAPIを選択すると、UIはこのAPIについての推薦されるエンドポイント名を示す。
【０１４６】
第2のUI要素1004は、たとえば、"Use  it"〔それを使用する〕ボタンであってもよく、これは、ユーザーが、前記一組の推薦結果のうちの第1の推薦結果において指定されているWeb  APIおよびエンドポイントをユーザーのソフトウェア・アプリケーションに含めるのを助けることができる。また、第2のUI要素1004は、第1の推薦結果について、たとえば"Use  it"〔それを使用する〕ボタンのユーザー選択を示してもよい。同様に、第3のUI要素1006は、出力される一組の推薦結果に関するフィードバックをユーザーが提出することを許容してもよい。
【０１４７】
本開示のさまざまな実施形態は、実行されることに応答して、推薦システム（例示的な推薦システム202など）に動作を実行させる命令を記憶するように構成された一つまたは複数の非一時的コンピュータ読取可能記憶媒体を提供してもよい。前記動作は、Web  APIリポジトリ（たとえば、Web  APIリポジトリ104）から、複数のWeb  APIに関連する第1の情報を抽出することを含んでいてもよい。前記動作はさらに、抽出された第1の情報に対して第1の組の情報処理動作を実行することによって、前記複数のWeb  APIに関連する初期データセットを構築することを含んでいてもよい。前記動作はさらに、構築された初期データセットに対して第2の組の情報処理動作を実行することによって、トレーニング・データセットを構築することを含んでいてもよい。構築されたトレーニング・データセットは、複数の自然言語クエリー、複数のWeb  API名、および前記複数のWeb  API名に関連する複数のエンドポイントを含んでいてもよい。前記動作はさらに、構築されたトレーニング・データセットに基づいてMLモデル（たとえば、MLモデル102A）を取得し、ユーザー装置（たとえば、ユーザー装置108）の電子UI（たとえば、電子UI  214）を介して入力自然言語クエリーを受領することを含んでいてもよい。MLモデルは、構築されたトレーニング・データセットに基づいてトレーニングされてもよい。前記動作はさらに、受領された入力自然言語クエリーを取得されたMLモデルに提供し、前記取得されたMLモデルへの提供された入力自然言語クエリーに基づいて、一組の推薦結果を出力することを含んでいてもよい。各推薦結果は、前記複数のWeb  API名のうちの特定のAPI名および前記複数のエンドポイントのうちの特定のエンドポイントを含んでいてもよい。
【０１４８】
上述のように、本開示に記載される実施形態は、下記でより詳細に論じられるように、さまざまなコンピュータ・ハードウェアまたはソフトウェア・モジュールを含む、特殊目的または汎用コンピュータ（たとえば、図2のプロセッサ204）の使用を含んでいてもよい。さらに、上述のように、本開示に記載の実施形態は、コンピュータ実行可能命令またはデータ構造を担持するまたは記憶するために、コンピュータ可読媒体（たとえば、図2のメモリ206または持続的データ記憶208）を使用して実装されてもよい。
【０１４９】
本開示において使用されるところでは、用語「モジュール」または「コンポーネント」は、該モジュールまたはコンポーネントのアクションを実行するよう構成された具体的なハードウェア実装および／またはコンピューティング・システムの汎用ハードウェア（たとえば、コンピュータ可読媒体、処理装置、または他の何らかのハードウェア）に記憶されうるおよび／または実行されうるソフトウェア・オブジェクトまたはソフトウェア・ルーチンを指してもよい。いくつかの実施形態では、本開示に記載される異なるコンポーネント、モジュール、エンジン、およびサービスは、コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして（たとえば、別個のスレッドとして）実装されてもよい。本開示に記載されるシステムおよび方法のいくつかは、一般に、（汎用ハードウェアに記憶および／または実行される）ソフトウェアで実装されるものとして記載されるが、具体的なハードウェア実装またはソフトウェアと具体的なハードウェア実装の組み合わせも可能であり、考えられている。本稿において、「コンピューティング・エンティティ」は、本開示において前に定義された任意のコンピューティング・システム、またはコンピューティング・システム上で動作する任意のモジュールまたは小モジュールの組み合わせであってもよい。
【０１５０】
一般的な慣行により、図面に示されるさまざまな特徴は、同縮尺で描かれていないことがある。本開示において提示される図は、何らかの特定の装置（たとえば、デバイス、システムなど）または方法の実際の図であることを意図するものではなく、単に、本開示のさまざまな実施形態を説明するために用いられる理想化された表現である。よって、さまざまな特徴の寸法は、明確のために任意に拡大または縮小されていることがある。さらに、図面のいくつかは、明確のために簡略化されていることがある。このように、図面は、所与の装置（たとえば、デバイス）のコンポーネントのすべて、または特定の方法のすべての動作を描くものではないことがある。
【０１５１】
本開示において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本文）において使用される用語は、一般に「開放的」な用語として意図されている（たとえば、「含む」という用語は「含むが、これに限定されない」と解釈されるべきであり、「有する」という用語は「少なくとも…を有する」と解釈されるべきであり、「含む」という用語は「含むが、これに限定されない」と解釈されるべきである）。
【０１５２】
さらに、特定の数の導入される請求項記載が意図されている場合、そのような意図は請求項に明示的に記載され、そのような記載がない場合、そのような意図は存在しない。たとえば、理解を助けるために、以下の添付の特許請求の範囲は、請求項記載を導入するために「少なくとも一つの」および「一つまたは複数の」という導入句の使用を含むことがある。
【０１５３】
さらに、導入される請求項記載の特定の数が明示的に記載されている場合であっても、当業者は、そのような記載は、少なくともその記載された数、を意味するものと解釈されるべきであることを認識するであろう（たとえば、他の修飾語を伴わない「2つの記載」というだけの記載は、少なくとも2つの記載、または2つ以上の記載を意味する）。さらに、「A、B、C等の少なくとも一つ」または「A、B、C等の一つまたは複数」と類似の慣用表現が用いられている場合には、一般に、そのような構文は、Aのみ、Bのみ、Cのみ、AとBが一緒、AとCが一緒、BとCが一緒、またはA、B、Cが一緒等を含むことが意図されている。
【０１５４】
さらに、明細書、特許請求の範囲、または図面のいずれにあるかを問わず、2つ以上の代替的な用語を提示する任意の離接的な語句は、用語の一方、用語のいずれか、または両方の用語を含む可能性を考えているものと理解されるべきである。たとえば、「AまたはB」という句は、「A」または「B」または「AおよびB」の可能性を含むと理解されるべきである。
【０１５５】
しかしながら、そのような句の使用は、不定冠詞「a」または「an」による請求項記載の導入が、そのような導入された請求項記載を含むいずれかの特定の請求項を、そのような記載を一つだけ含む実施形態に限定することを含意していると解釈されるべきではない。これはたとえ同じ請求項が導入句「一つまたは複数の」または「少なくとも一つの」および「a」または「an」のような不定冠詞を含んでいるときでも同じである（たとえば、「a」および／または「an」は「少なくとも一つの」または「一つまたは複数の」と解釈されるべきである）。同じことは、請求項記載を導入するために使用される定冠詞の使用にも当てはまる。
【０１５６】
さらに、用語「第1」、「第2」、「第3」等の使用は、本明細書では必ずしも要素の特定の順序または数を含意するために使用されるものではない。一般に、「第1」、「第2」、「第3」等の用語は、異なる要素を区別するために一般的な識別子として使用される。用語「第1」、「第2」、「第3」等が特定の順序を含意することを示すものがなければ、これらの用語は特定の順序を含意するものと理解されるべきではない。さらに、用語「第1」、「第2」、「第3」等が要素の特定の数を含意することを示すものがなければ、これらの用語は、要素の特定の数を含意するものと理解されるべきではない。たとえば、第1のウィジェットが第1のサイドを有すると記載されることがあり、第2のウィジェットが第2のサイドを有していると記載されることがありうる。第2のウィジェットに関する用語「第2のサイド」の使用は、第2のウィジェットのそのようなサイドを、第1のウィジェットの「第1のサイド」から区別するためであってもよく、第2のウィジェットが2つのサイドをもつことを含意しない。
【０１５７】
本開示に記載されたすべての例および条件付き言辞は、本発明および発明者が当該技術分野の発展に寄与した概念を理解する際に読者を助けるための教育的目的のために意図されており、そのように具体的に記載された例および条件への限定なしに解釈されるべきである。本開示の実施形態を詳細に説明したが、本開示の精神および範囲から逸脱することなく、それにさまざまな変更、置換、および代替を行なうことができることは理解されるべきである。
【０１５８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
（付記１）
Webアプリケーション・プログラミング・インターフェース（API）リポジトリから、複数のWeb  APIに関連する第1の情報を抽出する段階と；
抽出された第1の情報に対して第1の組の情報処理動作を実行することによって前記複数のWeb  APIに関連する初期データセットを構築する段階と；
構築された初期データセットに対して第2の組の情報処理動作を実行することによってトレーニング・データセットを構築する段階であって、
構築されたトレーニング・データセットは、複数の自然言語クエリー、複数のWeb  API名、および該複数のWeb  API名に関連付けられた複数のエンドポイントを含む、段階と；
構築されたトレーニング・データセットに基づいて機械学習（ML）モデルを得る段階であって、該MLモデルは、構築されたトレーニング・データセットに基づいてトレーニングされる、段階と；
ユーザー装置の電子ユーザー・インターフェース（UI）を介して入力自然言語クエリーを受領する段階と；
得られた前記MLモデルに受領された入力自然言語クエリーを提供する段階と；
得られた前記MLモデルへの提供された入力自然言語クエリーに基づいて一組の推薦結果を出力する段階とを含み、
各推薦結果は、前記複数のWeb  API名のうちの特定のAPI名および前記複数のエンドポイントのうちの特定のエンドポイントを含む、
方法。
（付記２）
前記Web  APIリポジトリは、前記複数のWeb  APIに関連する複数の文書を含み、
前記複数の文書の各文書は、前記複数のWeb  APIのうち対応するWeb  APIに関連付けられた複数のフィールドにマップされた情報を含む、
付記１に記載の方法。
（付記３）
前記Web  APIリポジトリ内の複数の文書の各文書をパースする段階と；
前記複数の文書のうちの各文書において、前記複数の文書のうちの対応する文書の前記パースに基づいて、対応するWeb  APIに関連する情報を識別する段階と；
前記複数の文書のうちの各文書における識別された情報に基づいて前記第1の情報を抽出する段階であって、
前記抽出された第1の情報は、前記複数のWeb  APIのうちの各Web  APIに関連付けられたAPI記述、エンドポイント記述、入力パラメータ記述、出力パラメータ記述、第1のカテゴリ、第2のカテゴリ、一つまたは複数のタグ、およびAPIタイトルを含む、段階とをさらに含む、
付記１に記載の方法。
（付記４）
前記第1の組の情報処理動作は：
前記抽出された第1の情報に基づいて複数の文トークンを生成する段階と；
生成された複数の文トークンから、ストップワード、シンボル、特殊文字、2文字間のスペース、または短記述文のうちの一つまたは複数を除去することに基づいて、生成された複数の文トークンをフィルタリングする段階と；
フィルタリングされた複数の文トークンに対して語幹処理動作を適用することにより、複数の文を得る段階とを含む、
付記１に記載の方法。
（付記５）
前記の得られた複数の文、前記複数のWeb  API名、および前記複数のWeb  API名に関連付けられた前記複数のエンドポイントをテーブルに入れる段階と；
中身を入れられたテーブルを前記初期データセットに含めることにより、前記初期データセットを構築する段階とをさらに含む、
付記４に記載の方法。
（付記６）
前記複数の自然言語クエリーは、一組の質問型クエリー、一組のコマンド型クエリー、一組のキーワード型クエリー、および一組のタイトル型クエリーを含む、付記１に記載の方法。
（付記７）
前記第2の組の情報処理動作は：
構築された初期データセットにおける複数の文のうちの各文についての複数の品詞（POS）タグを決定し；
構築された初期データセットにおける前記複数の文のうちの各文についての統語依存木を形成し；
前記複数の文のうちの各文についての決定された複数のPOSタグおよび形成された統語依存木に基づいて、前記複数の自然言語クエリーを形成することを含む、
付記１に記載の方法。
（付記８）
前記複数の自然言語のクエリーを形成することはさらに：
前記複数の文のうちの第1の文から、前記第1の文についての形成された統語依存木におけるルートノードが前記第1の文についての前記決定された複数のPOSタグにおける動詞であるという判定に基づいて、第1のコマンド型クエリーを形成する段階と；
前記複数の文のうちの第2の文から、前記第2の文におけるサブジェクトが前記第2の文についての形成された統語依存木における名詞的サブジェクトであり、前記サブジェクトが前記第2の文についての前記決定された複数のPOSタグにおける動詞であるという判定に基づいて、第2のコマンド型クエリーを形成する段階と；
Web  API  マッシュアップに関連したウェブ文書上のAPIマッシュアップ記述に基づいて第3のコマンド型クエリーを形成する段階と；
前記複数のWeb  APIのうちのWeb  APIに関連付けられたアプレット記述文書上のAPI記述に基づいて第4のコマンド型クエリーを形成する段階と；
前記ウェブ文書上の前記APIマッシュアップ記述におけるトリガー文セグメントおよびアクション文セグメントに基づいて、第5のコマンド型クエリーを形成する段階と；
形成された第1のコマンド型クエリー、形成された第2のコマンド型クエリー、形成された第3のコマンド型クエリー、形成された第4のコマンド型クエリー、および形成された第5のコマンド型クエリーに基づいて前記トレーニング・データセットを構築する段階とを含む、
付記７に記載の方法。
（付記９）
前記複数の文のうちの第1の文から、前記第1の文についての形成された統語依存木におけるルートノードが前記第1の文についての前記決定された複数のPOSタグにおける動詞であるという判定に基づいて、第1の質問型クエリーを形成する段階と；
前記複数の文のうちの第2の文から、前記第2の文におけるサブジェクトが前記第2の文についての形成された統語依存木における名詞的サブジェクトであり、前記サブジェクトが前記第2の文についての前記決定された複数のPOSタグにおける動詞であるという判定に基づいて、第2の質問型クエリーを形成する段階と；
構築された初期データセットにおける少なくとも入力パラメータ記述または出力パラメータ記述に基づいて第3の質問型クエリーを形成する段階と；
形成された第1の質問型クエリー、形成された第2の質問型クエリー、および形成された第3の質問型クエリーに基づいて前記トレーニング・データセットを構築する段階とをさらに含む、
付記７に記載の方法。
（付記１０）
前記複数の文のうちの各文から、一つまたは複数のキーワード、一つまたは複数の名詞句、一つまたは複数の一次カテゴリ、一つまたは複数の二次カテゴリ、および一つまたは複数のタグを抽出する段階と；
抽出された一つまたは複数のキーワード、一つまたは複数の名詞句、一つまたは複数の一次カテゴリ、一つまたは複数の二次カテゴリ、および一つまたは複数のタグに基づいてキーワード型クエリーを形成する段階と；
形成されたキーワード型クエリーに基づいて前記トレーニング・データセットを構築する段階とをさらに含む、
付記７記載の方法。
（付記１１）
前記MLモデルは、第1ステージおよび第2ステージを含む2ステージ転移学習モデルであり、
前記第1ステージは、並列構成に配置された第1のモデルおよび第2のモデルを含み、
前記第1のモデルは、第1の埋め込み層と、前記第1の埋め込み層に結合された第1の双長短期メモリ（Bi-LSTM）ネットワークとを含み、
前記第2のモデルは、第2の埋め込み層と、前記第2の埋め込み層に結合された第2のBi-LSTMネットワークとを含み、
前記第2ステージは、前記第1のモデルおよび前記第2のモデルの対応する出力層に結合された人工ニューラルネットワーク（ANN）を含む、
付記１に記載の方法。
（付記１２）
前記複数の自然言語クエリーのうちの第1の自然言語クエリーを前記第1の埋め込み層および前記第2の埋め込み層のそれぞれに提供し：
前記第1の埋め込み層および前記第2の埋め込み層のそれぞれから、提供された第1の自然言語クエリーの第1の単語ベクトル表現を出力し；
前記第1の自然言語クエリーの前記出力単語ベクトル表現を、前記第1のBi-LSTMネットワークへの第1の入力および前記第2のBi-LSTMネットワークへの第2の入力として提供することをさらに含む、
付記１１記載の方法。
（付記１３）
前記MLモデルを得る段階は：
前記トレーニング・データセットの複数のクエリー‐API名ペアに基づいて、前記第1のBi-LSTMネットワークをトレーニングする段階であって、
前記トレーニング・データセットの各クエリー‐API名ペアは、自然言語クエリーと、前記複数のWeb  APIのうちの対応するWeb  APIについてのWeb  API名とを含む、段階と；
前記トレーニング・データセットの複数のクエリー‐エンドポイント・ペアに基づいて、前記第2のBi-LSTMネットワークをトレーニングする段階であって、
前記トレーニング・データセットの各クエリー‐エンドポイント・ペアは、自然言語クエリーと、前記対応するWeb  APIについてのエンドポイントとを含む、段階と；
トレーニングされた第1のBi-LSTMネットワークおよびトレーニングされた第2のBi-LSTMネットワークをトレーニング不可と設定する段階と；
該設定の後、前記トレーニング・データセットの複数のクエリー‐API名‐エンドポイント・ペアに基づいて、前記第1ステージおよび前記第2ステージ上でモデル・フィッティング動作を適用する段階であって、各クエリー‐エンドポイント‐API名ペアは、前記対応するWeb  APIについての前記自然言語クエリー、前記Web  API名、および前記エンドポイントを含む、段階とを含み、
前記MLモデルは、前記第1ステージおよび前記第2ステージ上のモデル・フィッティング動作の前記適用に基づいて得られる、
付記１１に記載の方法。
（付記１４）
得られたMLモデルを推薦システム上に配備し；
前記ユーザー装置の前記電子UIを介して前記入力自然言語クエリーを受領するために前記推薦システム上に前記電子UIを配備することをさらに含む、
付記１に記載の方法。
（付記１５）
前記電子UIを介して前記入力自然言語クエリーを受領するために前記電子UI上に第1のUI要素を描画する段階と；
出力される一組の推薦結果から、前記複数のWeb  APIのうちの特定のWeb  APIに対応する前記特定のAPI名および前記特定のエンドポイントを含む第1の推薦結果のユーザー選択を受領する段階と；
前記ユーザー選択を示すために、前記電子UI上に第2のUI要素を描画する段階と；
ユーザーが前記出力される一組の推薦結果に関するフィードバックを提出できるようにするために、前記電子UI上に第3のUI要素を描画する段階であって、前記フィードバックは肯定的なフィードバックまたは否定的なフィードバックのいずれかである、段階とを含む、
付記１に記載の方法。
（付記１６）
少なくとも前記フィードバック、前記第1の推薦結果の前記ユーザー選択、または前記入力自然言語クエリーに基づいて前記トレーニング・データセットを更新する段階をさらに含み、
前記更新する段階は：
描画された第1のUI要素を介して受領された前記入力自然言語クエリーを前記トレーニング・データセットに記録し；
描画された第3のUI要素を介して受領された前記フィードバックを記録し；
前記入力自然言語クエリーについての記録されたフィードバックが肯定的なフィードバックであるかどうかを判定し；
前記記録されたフィードバックが肯定的なフィードバックであるという判定に基づいて、前記記録された入力自然言語クエリーを前記トレーニング・データセットに保持し；
前記記録されたフィードバックが肯定的なフィードバックであるという判定に基づいて、前記ユーザー選択を前記トレーニング・データセットに記録し；
前記記録されたフィードバックが否定的なフィードバックであるという判定に基づいて、前記トレーニング・データセットから前記記録された入力自然言語クエリーを除去することを含む、
付記１５に記載の方法。
（付記１７）
前記の更新されたトレーニング・データセットに基づいて前記MLモデルを再トレーニングする段階と；
再トレーニングされたMLモデルを前記推薦システム上に再配備する段階とをさらに含む、
付記１６記載の方法。
（付記１８）
前記出力される一組の推薦結果は、尤度値の集合と、前記尤度値の集合に対応するAPI名およびエンドポイントの出力ペアの集合とを含む、付記１に記載の方法。
（付記１９）
前記尤度値の集合と前記API名およびエンドポイントの出力ペアの集合とを昇順に並べ替え；
API名およびエンドポイントの出力ペアのソートされた集合を前記電子UI上に表示することをさらに含む、
付記１８記載の方法。
（付記２０）
実行されることに応答して、推薦システムに動作を実行させる命令を記憶するように構成された一つまたは複数の非一時的なコンピュータ読取可能な記憶媒体であって、前記動作は：
Webアプリケーション・プログラミング・インターフェース（API）リポジトリから、複数のWeb  APIに関連する第1の情報を抽出する段階と；
抽出された第1の情報に対して第1の組の情報処理動作を実行することによって前記複数のWeb  APIに関連する初期データセットを構築する段階と；
構築された初期データセットに対して第2の組の情報処理動作を実行することによってトレーニング・データセットを構築する段階であって、
構築されたトレーニング・データセットは、複数の自然言語クエリー、複数のWeb  API名、および該複数のWeb  API名に関連付けられた複数のエンドポイントを含む、段階と；
構築されたトレーニング・データセットに基づいて機械学習（ML）モデルを得る段階であって、該MLモデルは、構築されたトレーニング・データセットに基づいてトレーニングされる、段階と；
ユーザー装置の電子ユーザー・インターフェース（UI）を介して入力自然言語クエリーを受領する段階と；
得られた前記MLモデルに受領された入力自然言語クエリーを提供する段階と；
得られた前記MLモデルへの提供された入力自然言語クエリーに基づいて一組の推薦結果を出力する段階とを含み、
各推薦結果は、前記複数のWeb  API名のうちの特定のAPI名および前記複数のエンドポイントのうちの特定のエンドポイントを含む、
媒体。
【符号の説明】
【０１５９】
１０２  推薦システム
１０２A  MLモデル
１０４  Web APIリポジトリ
１０８  ユーザー装置
１１０  通信ネットワーク
２０２  例示的な推薦システム
２０４  プロセッサ
２０６  メモリ
２０８  永続的データ記憶
２１０  ネットワーク・インターフェース
２１２  I/O装置
２１４  電子ユーザー・インターフェース
３０２  Web APIリポジトリからWeb APIに関連する第1の情報を抽出
３０４  複数のWeb APIに関連する初期データセットを構築
３０６  トレーニング・データセットを構築
３０８  構築されたトレーニング・データセットに基づいて機械学習（ML）モデルを得る
３１０  ユーザー装置の電子ユーザー・インターフェース（UI）を介して入力自然言語クエリーを受領
３１２  受領された入力自然言語クエリーを、得られたMLモデルに提供
３１４  得られたMLモデルへの提供された入力自然言語クエリーに基づいて、推薦結果の集合を出力
３１６  推薦結果の集合から、尤度値の集合およびAPI名とエンドポイントの出力ペアの集合を昇順にソート
３１８  API名とエンドポイントの出力ペアのソートされた集合を電子UIに表示
５０２  抽出された第1の情報に基づいて複数の文トークンを生成
５０４  生成された複数の文トークンをフィルタリング
５０６  フィルタリングされた複数の文トークンに対する語幹処理動作の適用により複数の文を取得
５０８  得られた複数の文、複数のWeb API名および複数のWeb API名に関連する複数のエンドポイントをテーブルに入れる
５１０  中身を入れられたテーブルを初期データセットに含めることによって、初期データセットを構築
６０２  構築された初期データセットにおける複数の文の各文について、複数のPOSタグを決定
６０４  構築された初期データセットにおける複数の文の各文について、統語依存木を形成
６０６  複数の文の各文について、決定された複数のPOSタグおよび形成された統語依存木に基づいて複数の自然言語クエリーを形成
６０８  形成された複数の自然言語クエリーに基づいてトレーニング・データセットを構築
８０２  MLモデル
８０６A  高密度層
８０６B  ドロップアウト層
８０６C  高密度層
８０６D  ドロップアウト層
８０８A  第1の入力層
８０８B  第1の埋め込み層
８０８C  第1のB-LSTMネットワーク
８０８D  高密度層
８０８E  予測結果
８１０A  第2の入力層
８１０B  第2の埋め込み層
８１０C  第2のB-LSTMネットワーク
８１０D  高密度層
８１０E  予測結果
８１２  連結層
８１４  高密度層
８１６  推薦結果の集合
902  得られたMLモデル102Aを推薦システム上に展開
904  ユーザー装置の電子UIを介して入力自然言語クエリーを受領するために、推薦システム上に電子UIを展開
906  電子UIを介して入力自然言語クエリーを受領するために、第1のUI要素を電子UI上にレンダリング
908  出力された一組の推薦結果のうちから、複数のWeb APIのうちの特定のWeb APIに対応する特定のAPI名および特定のエンドポイントを含む第1の推薦結果のユーザー選択を受領
910  ユーザー選択を示すために、第2のUI要素を電子UI上にレンダリング
912  ユーザーが出力される一組の推薦結果に関するフィードバックを提出できるようにするために、第3のUI要素を電子UI上にレンダリング
914  トレーニング・データセットを、少なくとも、フィードバック、第1の推薦結果のユーザー選択、または入力自然言語クエリーに基づいて更新
914A  レンダリングされた第1のUI要素を介して受領された入力自然言語クエリーをトレーニング・データセットに記録
914B  レンダリングされた第3のUI要素を介して受領されたフィードバックを記録
914C  入力自然言語のクエリーに対する記録されたフィードバックが肯定的なフィードバックかどうかを判定
914D  記録された入力自然言語クエリーをトレーニング・データセットに保持
914E  ユーザー選択をトレーニング・データセットに記録
914F  記録された入力自然言語クエリーをトレーニング・データセットから除去
916  MLモデルを、更新されたトレーニング・データセットに基づいて再トレーニング
918  再トレーニングされたMLモデルを推薦システム上に再展開
【図１】
2020191075.tif 000010
【図２】
2020191075.tif 000011
【図３】
2020191075.tif 000012
【図４Ａ】
2020191075.tif 000013
【図４Ｂ】
2020191075.tif 000014
【図４Ｃ】
2020191075.tif 000015
【図５】
2020191075.tif 000016
【図６】
2020191075.tif 000017
【図７】
2020191075.tif 000018
【図８】
2020191075.tif 000019
【図９Ａ】
2020191075.tif 000020
【図９Ｂ】
2020191075.tif 000021
【図１０Ａ】
2020191075.tif 000022
【図１０Ｂ】
2020191075.tif 000023