(57)【要約】      （修正有）【課題】APIドキュメンテーションを収集する。【解決手段】システムは、メモリと、通信インターフェースと、通信インターフェースに動作上結合されたプロセッサとを含み、分類モデルの集合を生成する。分類モデルは、アプリケーション・プログラミング・インターフェース（API）ドキュメンテーションに関連付けられた一つまたは複数の文を含み、コンテンツを求めて一つまたは複数のコンテンツ源にアクセスするよう構成される。さらに、コンテンツにおける一つまたは複数の文が、分類モデルに含まれる一つまたは複数の文と同じまたは実質的に同様であるかどうかを判定し、それらが同じまたは実質的に同様であると判定されれば、APIドキュメンテーションとして収集する。さらに、プロセッサは、REST  APIドキュメンテーション、JAVA（登録商標）APIドキュメンテーションなどといった異なる型のAPIドキュメンテーションを範疇分けする。【選択図】図２
2019133621.tif 000002
【特許請求の範囲】
【請求項１】
メモリと；通信インターフェースと；前記メモリおよび前記通信インターフェースに動作上結合されたプロセッサとを有するシステムであって、前記プロセッサは：
分類モデルの集合を生成する段階であって、前記分類モデルは、アプリケーション・プログラミング・インターフェース（API）ドキュメンテーションに関連する一つまたは複数の文を含む、段階と；
前記通信インターフェースを介して、コンテンツとして一つまたは複数のコンテンツ源にアクセスする段階と；
前記コンテンツにおける一つまたは複数の文が、前記分類モデルに含まれる一つまたは複数の文と同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数の文が同じまたは実質的に同様であるよ判定することに応答して、前記コンテンツをAPIドキュメンテーションとして収集する段階とを含む動作を実行するよう構成されている、
システム。
【請求項２】
前記プロセッサはさらに：
代表状態転送（REST）APIモデルの集合を生成する段階であって、前記REST  APIモデルは、REST  APIドキュメンテーションに関連する一つまたは複数のREST  APIキーワードを含む、段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが、前記REST  APIモデルに含まれる一つまたは複数のREST  APIキーワードと同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが同じまたは実質的に同様であると判定するのに応答して、前記コンテンツをREST  APIドキュメンテーションとして収集する段階とを実行するよう構成されている、
請求項１記載のシステム。
【請求項３】
REST  APIモデルの集合を生成する動作が：
一つまたは複数のサンプル・ドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプル・ドキュメンテーションをパースする段階であって、前記サンプル・ドキュメンテーションの一つまたは複数はREST  APIに関連している、段階と；
前記サンプル・ドキュメンテーションにおける一つまたは複数のREST  APIキーワードの頻度を決定する段階と；
REST  APIモデル・キーワード配列を生成する段階であって、前記REST  APIモデル・キーワード配列は、前記サンプル・ドキュメンテーションの各ページがREST  APIに関連しているかどうかを示す、段階とを含み、
前記REST  APIモデルは、前記REST  APIモデル・キーワード配列に基づいて生成される、
請求項２記載のシステム。
【請求項４】
前記コンテンツをREST  APIドキュメンテーションとして収集する動作が：
前記コンテンツをパースする段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度を決定する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度に基づいて、REST  APIドキュメンテーション・キーワード配列を生成する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数がキーワード閾値を超える、前記コンテンツに含まれるいずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかを判定する段階であって、前記コンテンツは、REST  APIキーワードの総数がキーワード閾値を超える、いずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかに基づいて、REST  APIドキュメンテーションとして収集される、段階とを含む、
請求項３記載のシステム。
【請求項５】
前記プロセッサが、前記REST  APIモデルを、トレーニングされたAPIモデルに従って生成する、請求項２記載のシステム。
【請求項６】
分類モデルの集合を生成する動作が：
一つまたは複数のサンプルAPIドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから、APIドキュメンテーションに関連する一つまたは複数の文を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから情報を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションからの前記情報に基づいて、一つまたは複数のジャバスクリプト・オブジェクト記法（JSON）ファイルを生成する段階と；
一つまたは複数の陽性の文または一つまたは複数の陰性の文を生成する段階であって、前記分類モデルは、前記一つまたは複数の陽性の文および前記一つまたは複数の陰性の文の少なくとも一方に基づいて生成される、段階とを含む、
請求項１記載のシステム。
【請求項７】
前記コンテンツが、ウェブ・ベースのAPIドキュメンテーション、装置APIドキュメンテーションおよびオペレーティング・システム・ベースのAPIドキュメンテーションのうちの少なくとも一つを含む、請求項１記載のシステム。
【請求項８】
分類モデルの集合を生成する段階であって、前記分類モデルは、APIドキュメンテーションに関連する一つまたは複数の文を含む、段階と；
コンテンツとして一つまたは複数のコンテンツ源にアクセスする段階と；
前記コンテンツにおける一つまたは複数の文が、前記分類モデルに含まれる一つまたは複数の文と同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数の文が同じまたは実質的に同様であるよ判定することに応答して、前記コンテンツをAPIドキュメンテーションとして収集する段階とを含む、
方法。
【請求項９】
当該方法がさらに：
REST  APIモデルの集合を生成する段階であって、前記REST  APIモデルは、REST  APIドキュメンテーションに関連する一つまたは複数のREST  APIキーワードを含む、段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが、前記REST  APIモデルに含まれる一つまたは複数のREST  APIキーワードと同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが同じまたは実質的に同様であると判定するのに応答して、前記コンテンツをREST  APIドキュメンテーションとして収集する段階とを含む、
請求項８記載の方法。
【請求項１０】
REST  APIモデルの集合を生成する動作が：
一つまたは複数のサンプル・ドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプル・ドキュメンテーションをパースする段階であって、前記サンプル・ドキュメンテーションの一つまたは複数はREST  APIに関連している、段階と；
前記サンプル・ドキュメンテーションにおける一つまたは複数のREST  APIキーワードの頻度を決定する段階と；
REST  APIモデル・キーワード配列を生成する段階であって、前記REST  APIモデル・キーワード配列は、前記サンプル・ドキュメンテーションの各ページがREST  APIに関連しているかどうかを示す、段階とを含み、
前記REST  APIモデルは、前記REST  APIモデル・キーワード配列に基づいて生成される、
請求項９記載の方法。
【請求項１１】
前記コンテンツをREST  APIドキュメンテーションとして収集する動作が：
前記コンテンツをパースする段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度を決定する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度に基づいて、REST  APIドキュメンテーション・キーワード配列を生成する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数がキーワード閾値を超える、前記コンテンツに含まれるいずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかを判定する段階であって、前記コンテンツは、REST  APIキーワードの総数がキーワード閾値を超える、いずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかに基づいて、REST  APIドキュメンテーションとして収集される、段階とを含む、
請求項１０記載の方法。
【請求項１２】
前記REST  APIモデルが、トレーニングされたAPIモデルに従って生成される、請求項９記載の方法。
【請求項１３】
分類モデルの集合を生成する動作が：
一つまたは複数のサンプルAPIドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから、APIドキュメンテーションに関連する一つまたは複数の文を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから情報を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションからの前記情報に基づいて、一つまたは複数のJSONファイルを生成する段階と；
一つまたは複数の陽性の文または一つまたは複数の陰性の文を生成する段階であって、前記分類モデルは、前記一つまたは複数の陽性の文および前記一つまたは複数の陰性の文の少なくとも一方に基づいて生成される、段階とを含む、
請求項８記載の方法。
【請求項１４】
動作を実行するためにプロセッサによって実行可能なプログラミング・コードがエンコードされている非一時的なコンピュータ可読媒体であって、前記動作は：
分類モデルの集合を生成する段階であって、前記分類モデルは、APIドキュメンテーションに関連する一つまたは複数の文を含む、段階と；
コンテンツとして一つまたは複数のコンテンツ源にアクセスする段階と；
前記コンテンツにおける一つまたは複数の文が、前記分類モデルに含まれる一つまたは複数の文と同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数の文が同じまたは実質的に同様であるよ判定することに応答して、前記コンテンツをAPIドキュメンテーションとして収集する段階とを含む、
非一時的なコンピュータ可読媒体。
【請求項１５】
前記動作がさらに：
REST  APIモデルの集合を生成する段階であって、前記REST  APIモデルは、REST  APIドキュメンテーションに関連する一つまたは複数のREST  APIキーワードを含む、段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが、前記REST  APIモデルに含まれる一つまたは複数のREST  APIキーワードと同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが同じまたは実質的に同様であると判定するのに応答して、前記コンテンツをREST  APIドキュメンテーションとして収集する段階とを含む、
請求項１４記載の非一時的なコンピュータ可読媒体。
【請求項１６】
REST  APIモデルの集合を生成する動作が：
一つまたは複数のサンプル・ドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプル・ドキュメンテーションをパースする段階であって、前記サンプル・ドキュメンテーションの一つまたは複数はREST  APIに関連している、段階と；
前記サンプル・ドキュメンテーションにおける一つまたは複数のREST  APIキーワードの頻度を決定する段階と；
REST  APIモデル・キーワード配列を生成する段階であって、前記REST  APIモデル・キーワード配列は、前記サンプル・ドキュメンテーションの各ページがREST  APIに関連しているかどうかを示す、段階とを含み、
前記REST  APIモデルは、前記REST  APIモデル・キーワード配列に基づいて生成される、
請求項１５記載の非一時的なコンピュータ可読媒体。
【請求項１７】
前記コンテンツをREST  APIドキュメンテーションとして収集する動作が：
前記コンテンツをパースする段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度を決定する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度に基づいて、REST  APIドキュメンテーション・キーワード配列を生成する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数がキーワード閾値を超える、前記コンテンツに含まれるいずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかを判定する段階であって、前記コンテンツは、REST  APIキーワードの総数がキーワード閾値を超える、いずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかに基づいて、REST  APIドキュメンテーションとして収集される、段階とを含む、
請求項１６記載の非一時的なコンピュータ可読媒体。
【請求項１８】
前記REST  APIモデルが、トレーニングされたAPIモデルに従って生成される、請求項１５記載の非一時的なコンピュータ可読媒体。
【請求項１９】
分類モデルの集合を生成する動作が：
一つまたは複数のサンプルAPIドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから、APIドキュメンテーションに関連する一つまたは複数の文を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから情報を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションからの前記情報に基づいて、一つまたは複数のJSONファイルを生成する段階と；
一つまたは複数の陽性の文または一つまたは複数の陰性の文を生成する段階であって、前記分類モデルは、前記一つまたは複数の陽性の文および前記一つまたは複数の陰性の文の少なくとも一方に基づいて生成される、段階とを含む、
請求項１４記載の非一時的なコンピュータ可読媒体。
【請求項２０】
前記コンテンツが、ウェブ・ベースのAPIドキュメンテーション、装置APIドキュメンテーションまたはオペレーティング・システム・ベースのAPIドキュメンテーションのうちの少なくとも一つを含む、請求項１４記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本稿で論じられる実施形態はAPIドキュメンテーションのコレクションに関する。
【背景技術】
【０００２】
アプリケーション・プログラミング・インターフェース（API）は、ソフトウェア・アプリケーションを構築するためのルーチン、プロトコルおよびツールの集合である。APIはソフトウェア・コンポーネントに結果を返してもよい。APIは典型的にはソフトウェア・アプリケーションの関数またはデータを公開するものであり、それが他のアプリケーションが、該関数またはデータの実装を心配することなく、該APIの資源を使うことを可能にする。
【０００３】
本願で請求される主題は、何らかの欠点を解決する、あるいは記載されたような環境でのみ動作する実施形態に限定されるものではない。むしろ、この背景は、本稿に記載されるいくつかの実施形態が実施されうる一つの例示的な技術を例解するために与えられているだけである。
【発明の概要】
【課題を解決するための手段】
【０００４】
ある実施形態のある側面によれば、システムは、メモリと、通信インターフェースと、該通信インターフェースに動作上結合されたプロセッサとを含んでいてもよい。プロセッサは、分類モデルの集合を生成するよう構成されていてもよい。分類モデルは、アプリケーション・プログラミング・インターフェース（API）ドキュメンテーションに関連付けられた一つまたは複数の文を含んでいてもよい。プロセッサは、コンテンツとして一つまたは複数のコンテンツ源にアクセスするよう構成されてもよい。さらに、プロセッサは、前記コンテンツにおける一つまたは複数の文が、分類モデルに含まれる一つまたは複数の文と同じまたは実質的に同様であるかどうかを判定するよう構成されてもよい。前記コンテンツにおける一つまたは複数の文が同じまたは実質的に同様であると判定するのに応答して、プロセッサは、前記コンテンツをAPIドキュメンテーションとして収集するよう構成されてもよい。
【０００５】
実施形態の目的および利点は、少なくとも、請求項において具体的に指摘される要素、特徴および組み合わせによって、実現され、達成される。
【０００６】
上記の一般的な記述および以下の詳細な説明はいずれも例示および説明するものであり、特許請求される本発明を制約するものでないことは理解されるものとする。
【図面の簡単な説明】
【０００７】
例示的実施形態は、付属の図面を使ってさらに具体的かつ詳細に記述され、説明される。
【図１】API収集システムの例示的な動作環境のブロック図である。
【図２】分類モデルの集合を生成することに関係した例示的方法の流れ図である。
【図３】例示的な分類モジュールのブロック図である。
【図４】REST  APIモデルの集合を生成することに関係した例示的方法の流れ図である。
【図５】例示的なREST  APIモジュールのブロック図である。
【図６】コンテンツがAPIドキュメンテーションであるかどうかを判定することに関係した例示的方法の流れ図である。
【図７】コンテンツがREST  APIドキュメンテーションであるかどうかを判定することに関係した例示的方法の流れ図である。
【図８】コンテンツがREST  APIドキュメンテーションであるかどうかを判定することに関係したもう一つの例示的方法の流れ図である。
【図９】分類モデルの集合を生成することに関係した例示的方法の流れ図である。
【図１０】本稿で論じられる方法の任意の一つまたは複数を機械に実行させるための一組の命令が実行されうる、コンピューティング装置という例示的な形の機械の図的な表現である。  みな、本稿に記載される少なくとも一つの実施形態に基づいて構成される。
【発明を実施するための形態】
【０００８】
アプリケーション・プログラミング・インターフェース（API）のいくつかの型がある。たとえばウェブAPIはその関数およびデータを、インターネットまたはイントラネット・ネットワークにおけるウェブ・サービスを通じて公開してもよい。装置APIは、装置ハードウェア・モジュール機能を他の装置および／またはソフトウェアに公開してもよい。アプリケーションAPIは、オペレーティング・システムなどを通じて、ソフトウェア・アプリケーションの関数またはデータベースへのアクセスを提供してもよい。典型的には、APIは、APIからまたはAPIを通じて提供されるサービス、関数またはデータに基づいて新たなシステムを実装するときに、開発者にとって有用でありうる。通常のAPIはしばしば、サービスを提供する「ブラックボックス」として機能する一方、開発者は典型的には、ブラックボックスの内部を見て実装の詳細を識別することはできない。いくつかのAPIはシステムの複雑さを抽象化することがあり、いくつかのAPIはいくつかの詳細を開発者から隠すことがあり、それは実装における柔軟性を低下させることがある。
【０００９】
各APIは典型的には、自分のサービスおよび／またはデータを、異なる属性をもつ異なる型のデータをもつ異なるプロトコルを通じて公開する。この通常のアプローチは、開発者が多様なAPIを用いて作業しているときに、異種性問題を引き起こすことがある。さらに、たいていのAPIは形式的な定義をもたず、大半はHTMLファイルとして記述された、人間が読んでわかる記述である。結果として、ソフトウェア開発者は典型的には、API関数にアクセスしてこれと対話するために、APIドキュメンテーションを読んで学習する。API機能およびそのドキュメンテーションは（たとえばスワッガー（swagger）または他のツールを使って）定期的に更新されることがあり、その後、開発者は新しいAPIドキュメンテーションを読んで学習し、新しいAPI機能に基づいて自分のアプリケーションを修正する必要がある。ソフトウェア開発をさらに複雑にすることに、各APIは異なるプログラミング言語を通じてアクセス可能であることがある。
【００１０】
さらに、API公開者は、APIを公開する（たとえばAPIドキュメンテーションを公開する）ために異なるツールを使うことがある。たとえば、API公開者は、ソース・コードを通じてAPIを自動的に公開してもよく、あるいはAPI公開者は手動でAPIを公開してもよい。APIフォーマットは、ハイパーテキスト・マークアップ言語（HTML）フォーマット、ポータブル・ドキュメント・フォーマット（PDF）、マイクロソフト・ワード（DOC）フォーマットまたはAPIドキュメンテーションを公開するための他の任意の好適なフォーマットを含みうる。
【００１１】
電子装置（たとえばクローラーとしてはたらくもの）が自動的にさまざまなAPIを収集してもよく、該さまざまなAPIはユーザーのためにローカルに記憶されてもよい。これは、ユーザーがさまざまなコンテンツ源においてAPIドキュメンテーションを探すのに費やす時間を短縮しうる。電子装置は、一時に単一のコンテンツ源にアクセスするよう構成されてもよく、あるいは電子装置は同時に複数のコンテンツ源に（たとえば並列に）アクセスするよう構成されてもよい。
【００１２】
電子装置は、APIドキュメンテーションに関連付けられた一つまたは複数の文を含む分類モデルの集合を生成してもよい。電子装置は、コンテンツ源に含まれるコンテンツがAPIドキュメンテーションを含むかまたは他のドキュメンテーションを含むかを判定するために分類モデルを使ってもよい。分類モデルは、サンプルAPIドキュメンテーションから抽出された文を含んでいてもよい。電子装置は、コンテンツ源に含まれるコンテンツを分類モデルと比較してもよい。たとえば、電子装置は、分類モデルに含まれる文を、コンテンツに含まれる文と比較してもよい。コンテンツがAPIドキュメンテーションを含むなら、電子装置は該APIドキュメンテーションを収集してもよく、該APIドキュメンテーションを、ユーザーによるさらなるパースおよび／またはアクセスのために、収集されたAPI文書として記憶してもよい。
【００１３】
同様に、電子装置は、REST  APIドキュメンテーションに関連付けられた一つまたは複数のREST  APIキーワードを含む代表状態転送（REST:  representational  state  transfer）APIモデルの集合を生成してもよい。電子装置は、コンテンツ源に含まれるコンテンツがREST  APIドキュメンテーションを含むかまたは他のドキュメンテーションを含むかを判定するためにREST  APIモデルを使ってもよい。電子装置は、サンプルREST  APIドキュメンテーションからREST  APIキーワードを抽出してもよい。電子装置は、コンテンツ源に含まれるコンテンツをREST  APIモデルと比較してもよい。たとえば、電子装置は、コンテンツに含まれるREST  APIキーワードの総数および／または各REST  APIキーワードの頻度を、サンプルREST  APIドキュメンテーションから抽出されたREST  APIキーワードの数および／または頻度と比較してもよい。コンテンツがREST  APIドキュメンテーションを含むなら、電子装置は該REST  APIドキュメンテーションを収集してもよく、該REST  APIドキュメンテーションを、ユーザーによるさらなるパースおよび／またはアクセスのために、収集されたREST  API文書として記憶してもよい。さらに、電子装置は、収集されたAPI文書にアクセスして、収集されたAPI文書の一つまたは複数がREST  APIドキュメンテーションを含むかどうかを判定してもよい。さらに、電子装置は、他のフォーマットで一つまたは複数のキーワードを含むAPIモデルの集合を生成してもよい。たとえば、コンテンツ源に含まれるコンテンツがJAVA(登録商標)  APIドキュメンテーションを含むか他のドキュメンテーションを含むかを判定するために、JAVA  APIモデルの集合が生成され、使用されてもよい。
【００１４】
たとえば、複数のウェブサイト（たとえば複数のコンテンツ源）は複数のウェブページ（たとえばコンテンツ）および／または種々のリンク（たとえば外部および／または内部リンク）を含んでいてもよい。電子装置は、それらさまざまなリンクをたどることによって、各ウェブサイトおよびウェブページにアクセスしてもよい。電子装置は、いずれかのウェブページがAPIドキュメンテーションを含むかどうかを、各ウェブページを分類モデルと比較することによって、判定してもよい。ウェブページがAPIドキュメンテーションを含む場合、電子装置はそのウェブページを収集し、収集されたAPI文書として記憶してもよい。さらに、電子装置は、いずれかのウェブページがREST  APIドキュメンテーションを含むかどうかを、各ウェブページまたは収集されたAPI文書をREST  APIモデルと比較することによって、判定してもよい。ウェブページがREST  APIドキュメンテーションを含む場合、電子装置はそのウェブページおよび／または収集されたAPI文書を収集し、収集されたREST  API文書として記憶してもよい。
【００１５】
図１は、本稿に記載される少なくとも一つの実施形態に基づいて構成された、API収集システムの例示的な動作環境１００のブロック図を示している。図１に描かれるように、動作環境１００は、装置１０２と、コンテンツ源１１６ａおよびコンテンツ源１１６ｂ（本稿ではまとめて「コンテンツ源１１６」）の少なくとも一方と、データ記憶部１０８と、ネットワーク１１４とを含んでいてもよい。
【００１６】
装置１０２は、プロセッサ、メモリおよび通信機能を含むコンピュータ・ベースのハードウェア装置を含んでいてもよい。装置１０２は、動作環境１００の他のコンポーネントの任意のものとデータを通信するためにネットワーク１１４に結合されていてもよい。装置１０２のいくつかの例は、携帯電話、スマートフォン、タブレット・コンピュータ、ラップトップ・コンピュータ、デスクトップ・コンピュータ、セットトップボックス、仮想現実乾燥地または接続された装置などを含んでいてもよい。装置１０２は、プロセッサ・ベースのコンピューティング装置を含んでいてもよい。たとえば、装置１０２は、ハードウェア・サーバーまたはサーバーとして機能するよう構成された他のプロセッサ・ベースのコンピューティング装置を含んでいてもよい。装置１０２はメモリおよびネットワーク通信機能を含んでいてもよい。
【００１７】
コンテンツ源１０６は、コンテンツ（たとえばAPI文書、REST  API文書、他の任意のAPIドキュメンテーションまたは電子コンテンツ）のための、任意のコンピュータ・ベースの源を含んでいてもよい。たとえば、コンテンツ源１１６はサーバー、クライアント・コンピュータ、貯蔵所などを含んでいてもよい。コンテンツ源１１６ａはコンテンツ１１８ａを記憶していてもよく、および／またはコンテンツ源１１６ｂはコンテンツ１１８ｂ（本稿ではまとめて「コンテンツ１１８」）を、任意の電子フォーマットで記憶していてもよい。さらに、コンテンツ１１８は、機械可読および／または人間が読んでわかるものであってもよい。コンテンツ１１８は任意の言語であってもよい。たとえば、コンテンツ１１８は、任意の目標となる人間の言語（たとえば英語、日本語、ドイツ語）であってもよい。少なくとも一つの実施形態では、コンテンツ源１１６は、ネットワーク１１４（たとえばワールドワイドウェブ）を介して互いと通信するある電子装置から別の電子装置にオファーされるAPI情報サービスを含んでいてもよい。さらに、コンテンツ源１１６はウェブサイトを含んでいてもよく、コンテンツ１１８はそのウェブサイトの複数のウェブページを含んでいてもよい。
【００１８】
ネットワーク１１４は、動作環境１００のコンポーネント（たとえば１０２、１０８および１１６）の任意のものの間での信号の通信のために構成された任意の通信ネットワークを含みうる。ネットワーク１１４は有線または無線でありうる。ネットワーク１１４は、スター構成、トークンリング構成または他の好適な構成を含む数多くの構成をもちうる。さらに、ネットワーク１１４はローカル・エリア・ネットワーク（LAN）、広域ネットワーク（WAN）（たとえばインターネット）および／または他の相互接続されたデータ経路であってそれを通じて複数の装置が通信しうるものを含んでいてもよい。いくつかの実施形態では、ネットワーク１１４はピアツーピア・ネットワークを含んでいてもよい。ネットワーク１１４は、多様な異なる通信プロトコルでのデータの通信を可能にしうる遠隔通信ネットワークの諸部分に結合されていてもよく、あるいは該諸部分を含んでいてもよい。
【００１９】
いくつかの実施形態では、ネットワーク１１４は、ブルートゥース（登録商標）通信ネットワーク、Z-Wave（登録商標）通信ネットワーク、Insteon（登録商標）通信ネットワーク、EnOcean（登録商標）通信ネットワーク、ワイヤレスフィデリティー（Wi-Fi）通信ネットワーク、ZigBee通信ネットワーク、HomePlug通信ットワーク、パワーライン通信（PLC）通信ネットワーク、メッセージ・キュー・テレメトリー・トランスポート（MQTT）通信ネットワーク、MQTTセンサー（MQTT-S）通信ネットワーク、制約アプリケーションプロトコル（CoAP:  constrained  application  protocol）通信ネットワーク、代表状態転送アプリケーション・プロトコル・インターフェース（REST  API）通信ネットワーク、拡張可能メッセージングおよびプレゼンス・プロトコル（XMPP）通信ネットワーク、セルラー通信ネットワーク、任意の同様な通信ネットワークまたはデータを送受信するためのそれらの任意の組み合わせを含む、または含むよう構成される。ネットワーク１１４において通信されるデータは、ショートメッセージングサービス（SMS）、マルチメディアメッセージングサービス（MMS）、ハイパーテキスト転送プロトコル（HTTP）、直接データ接続、ワイヤレス・アプリケーション・プロトコル（WAP）、電子メール、スマート・エネルギー・プロファイル（SEP）、ECHONET  Lite、OpenADRまたは装置１０２、コンテンツ源１１６、クラウドサーバー通信またはゲートウェイで実装されうる他の任意のプロトコルを介して通信されるデータを含んでいてもよい。
【００２０】
データ記憶部１０８は、任意のメモリまたはデータ記憶を含んでいてもよい。データ記憶部１０８は、ネットワーク通信機能を含んでいてもよく、動作環境１００における他のコンポーネントがデータ記憶部１０８と通信してもよい。いくつかの実施形態では、データ記憶部１０８は、コンピュータ実行可能命令またはデータ構造を担持するまたは記憶するためのコンピュータ可読記憶媒体を含んでいてもよい。コンピュータ可読記憶媒体は、プロセッサのような汎用または特殊目的コンピュータによってアクセスされうるいかなる利用可能な媒体を含んでいてもよい。たとえば、データ記憶部１０８は、ランダム・アクセス・メモリ（RAM）、読み出し専用メモリ（ROM）、電気的に消去可能なプログラム可能な読み出し専用メモリ（EEPROM）、コンパクトディスク読み出し専用メモリ（CD-ROM）または他の光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイス、フラッシュメモリ・デバイス（たとえば半導体メモリ・デバイス）またはコンピュータ実行可能命令またはデータ構造の形で所望されるプログラム・コードを担持または記憶するために使用されうる、汎用または特殊目的コンピュータによってアクセスされうる他の任意の記憶媒体を含む、有体のまたは非一時的なコンピュータ可読記憶媒体でありうるコンピュータ可読記憶媒体を含みうる。上記の組み合わせがデータ記憶部１０８に含められてもよい。
【００２１】
データ記憶部１０８はさまざまなデータを記憶していてもよい。データは、リレーショナルデータベース構造のようないかなるデータ構造で記憶されてもよい。たとえば、データ記憶部１０８は、収集されたAPI文書１１０および収集されたREST  API文書１１２を含んでいてもよい。
【００２２】
装置１０２は、分類モジュール１０４およびREST  APIモジュール１０６を含んでいてもよい。いくつかの実施形態では、分類モジュール１０４および／またはREST  APIモジュール１０６は、直接ホストからまたはアプリケーション・ストアからまたはインターネットからダウンロード可能であってもよいスタンドアローン・アプリケーション（「アプリ」）を含んでいてもよい。装置１０２は、本開示に記載されるAPI収集システムならびにAPI文書およびREST  API文書の収集に関係するさまざまな動作を実行してもよい。
【００２３】
動作では、装置１０２は、一つまたは複数のコンテンツ源１１６およびコンテンツ１１８にアクセスして、コンテンツ１１８がAPIドキュメンテーションおよび／またはREST  APIドキュメンテーションを含むかどうかを判定してもよい。
【００２４】
分類モジュール１０４は、サンプルAPI文書に基づいて、種々のAPIに関連する言語／用語を識別するよう、機械学習方法を使ってもよい。分類モジュール１０４は、機械学習を介して分類モデルの集合を生成してもよい。機械学習を介した分類モデルの生成は、下記で図２との関係でより詳細に論じられる。分類モジュール１０４は、分類モデルを使って、コンテンツ１１８がAPIドキュメンテーションを含むかどうかを判定してもよい。分類モジュール１０４は、図３との関係で下記でより詳細に論じられる。
【００２５】
REST  APIモジュール１０６は、サンプルREST  API文書に基づいて、種々のREST  APIに関連するREST  APIキーワードを識別するよう、機械学習方法を使ってもよい。REST  APIモジュール１０６は、機械学習を介してREST  APIモデルの集合を生成してもよい。機械学習を介したREST  APIモデルの生成は、下記で図４との関係でより詳細に論じられる。REST  APIモジュール１０６は、REST  APIモデルを使って、コンテンツ１１８および／または収集されたAPI文書１１０がREST  APIドキュメンテーションを含むかどうかを判定してもよい。REST  APIモジュール１０６は、図５との関係で下記でより詳細に論じられる。
【００２６】
いくつかの実施形態では、装置１０２は、コンテンツ源１１６およびコンテンツ１１８に並列にアクセスするよう構成された複数のクローラーとして構成されてもよい。たとえば、装置１０２は、コンテンツ源１１６ａに含まれるコンテンツ１１８ａおよびコンテンツ源１１６ｂに含まれるコンテンツ１１８ｂに並列にアクセスしてもよい。分類モジュール１０４はコンテンツ１１８を分類モデルと比較してもよい。コンテンツ１１８に含まれる一つまたは複数の文が、分類モデルに含まれる一つまたは複数の文と同じまたは実質的に同様である場合、コンテンツ１１８は収集され、データ記憶部１０８に送られてもよい。収集されたコンテンツ１１８は、収集されたAPI文書１１０として記憶されてもよい。分類モジュール１０４は、動作環境１００において各コンテンツ源１１６およびコンテンツ１１８について前記プロセスを反復してもよい。
【００２７】
同様に、REST  APIモジュール１０６はコンテンツ源１１６に含まれるコンテンツ１１８をREST  APIモデルと比較してもよい。コンテンツ１１８に含まれるREST  APIキーワードの総数および／または一つまたは複数のREST  APIキーワードの頻度がキーワード閾値を超えるおよび／またはいずれかのREST  APIキーワードの頻度が頻度閾値を超える場合、コンテンツ１１８は収集され、データ記憶部１０８に送られてもよい。いくつかの実施形態では、キーワード閾値は20個のREST  APIキーワード以上であってもよい。追加的または代替的に、キーワード閾値は20個のREST  APIキーワード未満であってもよい。これらおよび他の実施形態において、キーワード閾値についての最大値は1000個のREST  APIキーワードに等しくてもよい。いくつかの実施形態では、反復されるREST  APIキーワードについての頻度閾値は20回以上であってもよい。追加的または代替的に、反復されるREST  APIキーワードについての頻度閾値は20回未満であってもよい。これらおよび他の実施形態において頻度閾値についての最大値はREST  APIキーワードの1000回の反復に等しくてもよい。収集されたコンテンツ１１８は、収集されたREST  API文書１１２として記憶されてもよい。REST  APIモジュール１０６は、動作環境１００において各コンテンツ源１１６およびコンテンツ１１８について前記プロセスを反復してもよい。あるいはまた、REST  APIモジュール１０６は動作環境１００におけるすべてのコンテンツ１１８を比較しなくてもよい。その代わり、REST  APIモジュール１０６は、収集されたAPI文書１１０を比較するだけでもよい。
【００２８】
追加的または代替的に、コンテンツ１１８は複数の部分（たとえば複数のウェブページ）を含んでいてもよく、装置１０２はこのプロセスを、コンテンツ１１８に含まれる各部分に関して実行してもよい。たとえば、コンテンツ源１１６はウェブサイトを含んでいてもよく、コンテンツ１１８は複数のウェブページを含んでいてもよい（本稿において「ウェブサイトの例」と称される）。ウェブサイトの例では、装置１０２は各ウェブページにアクセスして、各ウェブページがAPIドキュメンテーションを含んでいるかどうかを判定してもよい。分類モジュール１０４は各ウェブページを分類モデルと比較して、ウェブページの一つまたは複数がAPIドキュメンテーションを含むかどうかを判定してもよい。ウェブページがAPIドキュメンテーションを含む場合、装置１０２はそのウェブページを収集してもよく、収集されたウェブページをデータ記憶部１０８に送ってもよい。データ記憶部１０８はそのウェブページを、収集されたAPI文書１１０として記憶してもよい。
【００２９】
さらに、装置１０２は各ウェブページにアクセスしてもよく、各ウェブページがREST  APIドキュメンテーションを含んでいるかどうかを判定してもよい。REST  APIモジュール１０６は各ウェブページをREST  APIモデルと比較して、ウェブページの一つまたは複数がREST  APIドキュメンテーションを含むかどうかを判定してもよい。ウェブページがREST  APIドキュメンテーションを含む場合、装置１０２はそのウェブページを収集してもよく、収集されたウェブページをデータ記憶部１０８に送ってもよい。データ記憶部１０８はそのウェブページを、収集されたREST  API文書１１２として記憶してもよい。
【００３０】
あるいはまた、装置１０２は、収集されたAPI文書１１０として記憶されているウェブページを比較してもよい。REST  APIモジュール１０６は収集されたAPI文書１１０のそれぞれにアクセスしてもよく、収集されたAPI文書１１０の一つまたは複数がREST  APIドキュメンテーションを含んでいるかどうかを判定してもよい。収集されたAPI文書１１０がREST  APIドキュメンテーションを含む場合、その収集されたAPI文書１１０も収集されてもよく、収集されたREST  API文書１１２として記憶されてもよい。
【００３１】
収集されたAPI文書１１０および／または収集されたREST  API文書１１２は自然言語フォーマットで記憶されてもよい。たとえば、収集されたAPI文書１１０および／または収集されたREST  API文書１１２はJavaScript(登録商標)オブジェクト記法（JSON）フォーマットで記憶されてもよい。収集されたAPI文書１１０および／または収集されたREST  API文書１１２を記憶することは、収集されたAPI文書１１０および／または収集されたREST  API文書１１２がユーザーによってさらにパースおよび／またはアクセスされることを許容する。
【００３２】
いくつかの実施形態では、装置１０２は、コンテンツ１１８のオートメーション・ブラウザー・ベース収集を実行するよう構成されてもよい。コンテンツ１１８は、あるフォーマットを使って集積〔コンパイル〕されてもよく、その後、異なるフォーマットで提供されてもよい。たとえば、コンテンツ１１８はJSONフォーマットで集積されてもよく、ハイパーテキスト・マークアップ言語（HTML）フォーマットで提供されてもよい。装置１０２は、ブラウザー・ベースのデータ収集〔コレクション〕を使ってもよい。たとえば、装置１０２は、ウェブページを集積し、ウェブページをHTMLファイルとして収集するために、インターネット・ブラウザーを使ってもよい。
【００３３】
図２、図４および図６〜図９は、例示的方法の流れ図を示している。これらの方法は、ハードウェア（回路、専用論理など）、ソフトウェア（汎用コンピュータ・システムまたは専用機において実行されるようなもの）または両者の組み合わせを含んでいてもよい処理論理によって実行されてもよい。該処理論理は図１の装置１０２、分類モジュール１０４および／もしくはREST  APIモジュール１０６または別のコンピュータ・システムもしくは装置に含まれてもよい。しかしながら、これらの方法を実行するために、別のシステムまたはシステムの組み合わせが使われてもよい。説明の簡単のため、本稿に記載される方法は、一連の工程として描かれ、記述される。しかしながら、本開示に基づく工程は、さまざまな順序でおよび／または同時並行して、あるいは本稿では呈示および記載されない他の工程とともに行なわれてもよい。さらに、図示したすべての工程が開示される主題に基づく方法を実装するために必要とされるとは限らない。さらに、当業者は、これらの方法は代替的に、状態図またはイベントを介して一連の相互に関係した状態として表現されうることを理解するであろう。さらに、本明細書で開示される方法は、そのような方法をコンピューティング装置に輸送し、転送することを容易にするために、非一時的なコンピュータ可読媒体のような製造物に記憶されることができる。本稿で使われるところの製造物という用語は、任意のコンピュータ可読デバイスまたは記憶媒体からアクセス可能なコンピュータ・プログラムを包含することが意図されている。離散的なブロックとして示されているが、所望される実装に依存して、さまざまなブロックは追加的なブロックに分割されたり、より少数のブロックに組み合わされたり、あるいはなくされたりしてもよい。
【００３４】
図２は、本稿に記載される少なくとも一つの実施形態に基づく、分類モデルの集合を生成することに関する例示的方法２００の流れ図を示している。方法２００は、ブロック２０２で始まってもよく、ここで、処理論理は、一つまたは複数のサンプルAPIドキュメンテーションを受け取ってもよい。たとえば、前記一つまたは複数のサンプルAPIドキュメンテーションは、APIドキュメンテーションに関連付けられている情報および一つまたは複数の文を含んでいてもよい。追加的または代替的に、前記一つまたは複数のサンプルAPIドキュメンテーションは、APIドキュメンテーションに関連付けられていない情報および／または文を含んでいてもよい。いくつかの実施形態では、前記一つまたは複数のサンプルAPIドキュメンテーションは、処理のために用意されるウェブ・コンテンツのリストを含んでいてもよい。
【００３５】
ブロック２０４では、処理論理は、前記一つまたは複数のサンプルAPIドキュメンテーションから情報を抽出してもよい。たとえば、該情報は、抽出され、個別の部分に分離されてもよい。個別の部分とは、APIタイトル、APIエンドポイント、APIエンドポイントのパラメータ、APIエンドポイントの応答またはAPIドキュメンテーションに含まれる情報の他の任意の好適な部分などである。
【００３６】
ブロック２０６では、処理論理は、一つまたは複数のJSONファイルを生成してもよい。たとえば、JSONファイルは、サンプルAPIドキュメンテーションから抽出された情報に基づいて生成されてもよい。いくつかの実施形態では、各JSONファイルは、API情報の一つまたは複数の部分を含んでいてもよい。該部分とは、APIタイトル、APIエンドポイント、APIエンドポイントのパラメータ、APIエンドポイントの応答またはAPIドキュメンテーションに含まれる情報の他の任意の好適な部分などである。
【００３７】
ブロック２０８では、処理論理は、JSONファイルに含まれる一つまたは複数の文に注釈付けしてもよい。たとえば、JSONファイルに含まれる一つまたは複数の文は、陽性の文として注釈付けされてもよい。陽性の文は、APIドキュメンテーションに関係していてもよい。追加的または代替的に、陽性の文はAPI機能または他のAPI関係情報を説明してもよい。たとえば、陽性の文はAPIコールのコスト、APIのパラメータ、どのようにしてAPIをコールするか、APIコールのポリシーなどを示してもよい。
【００３８】
いくつかの実施形態では、処理論理は、ユーザーから受領されたユーザー入力に基づいてJSONファイルに含まれる一つまたは複数の文に注釈付けしてもよい。たとえば、ディスプレイを介してユーザーに文が提供されてもよく、ユーザーがその文を陽性の文として注釈付けする入力を提供してもよく、あるいはユーザーはその文に注釈付けしなくてもよい。追加的または代替的に、処理論理は、以前に陽性の文として注釈付けされた文に基づいて、JSONファイルに含まれる一つまたは複数の文に注釈付けしてもよい。
【００３９】
ブロック２１０では、処理論理は、JSONファイルに含まれる一つまたは複数の文に逆注釈付けしてもよい。たとえば、陽性の文として注釈付けされなかった各文は、陰性の文として、逆注釈付けされてもよい。陰性の文は、APIドキュメンテーションに関係していなくてもよい。たとえば、陰性の文は、APIサービスをオファーしないアプリケーションを示してもよい。追加的または代替的に、処理論理は、以前に陽性の文として注釈付けされた文および／または以前に陰性の文として逆注釈付けされた文に基づいて、JSONファイルに含まれる一つまたは複数の文に逆注釈付けしてもよい。
【００４０】
ブロック２１２では、処理論理は、前記一つまたは複数のサンプルAPIドキュメンテーションから一つまたは複数の文を抽出してもよい。たとえば、それらの文は、ブロック２０６で生成された一つまたは複数のJSONファイル、ブロック２０８で注釈付けされた一つまたは複数の文および／またはブロック２１０で逆注釈付けされた一つまたは複数の文に基づいて抽出されてもよい。
【００４１】
ブロック２１４では、処理論理は、前記一つまたは複数のサンプルAPIドキュメンテーションから抽出された一つまたは複数の文を分類してもよい。たとえば、前記一つまたは複数の文は、陽性の文として注釈付けされた文および／または陰性の文として逆注釈付けされた文に基づいて分類されてもよい。いくつかの実施形態では、それらの文は、畳み込みニューラル・ネットワーク（CNN:  convolutional  neural  network）、リカレント・ニューラル・ネットワーク（RNN:  recurrent  neural  network）または他の任意の受け入れ可能なニューラル・ネットワークを使って分類されてもよい。
【００４２】
ブロック２１６では、処理論理は分類モデルの集合を生成してもよい。たとえば、分類モデルは、サンプルAPIドキュメンテーションから抽出された文の分類に基づいて生成されてもよい。いくつかの実施形態では、分類された文は、APIドキュメンテーションに関係している文およびAPIドキュメンテーションに関係していない文を識別するための分類モデルをトレーニングするために使われてもよい。
【００４３】
当業者は、本稿で開示されるこのおよび他の手順および方法について、該プロセスおよび方法において実行される機能は異なる順序で実装されてもよいことを理解するであろう。さらに、概説される段階および動作は例として提供されるだけであり、該段階および動作のいくつかは、開示される実施形態を損なうことなく、任意的であってもよく、より少数の段階および動作に組み合わされたり、あるいは追加的な段階および動作に展開されたりしてもよい。
【００４４】
図３は、本稿に記載される少なくとも一つの実施形態に基づく、例示的な分類モジュール１０４のブロック図を示している。分類モジュール１０４は、サンプルAPIドキュメンテーション３２４、一つまたは複数の文３２６、一つまたは複数のJSONファイル３２８、一つまたは複数の陽性の文３３０、一つまたは複数の陰性の文３３２および分類モデルの集合３３３を含んでいてもよい。分類モジュール１０４は、図１の分類モジュール１０４と同じまたは実質的に同様であってもよい。
【００４５】
サンプルAPIドキュメンテーション３２４は、APIドキュメンテーションに関連した情報および／または文を含んでいてもよい。追加的または代替的に、サンプルAPIドキュメンテーション３２４は、APIドキュメンテーションに関連しない情報および／または文を含んでいてもよい。
【００４６】
文３２６は、サンプルAPIドキュメンテーション３２４から抽出されてもよい。文３２６の抽出は図２との関係で上記でより詳細に論じられている。さらに、サンプルAPIドキュメンテーション３２４に含まれる情報に基づいてJSONファイル３２８が生成されてもよい。JSONファイル３２８の生成は図２との関係で上記でより詳細に論じられている。さらに、文３２６の一つまたは複数が陽性の文３３０として分類され、記憶されてもよい。陽性の文３３０はAPIドキュメンテーションに関連していてもよい。たとえば、陽性の文３３０はAPI機能または他のAPI関係情報を説明してもよい。もう一つの例として、陽性の文３３０はAPIコールのコスト、APIのパラメータ、どのようにしてAPIをコールするか、APIコールのポリシーなどを示してもよい。
【００４７】
さらに、文３２６の一つまたは複数が陰性の文３３２として分類され、記憶されてもよい。陰性の文３３２はAPIドキュメンテーションに関連していなくてもよい。文３２６を陽性の文３３０または陰性の文３３２として分類することは、図２との関係で上記でより詳細に論じられている。
【００４８】
分類モデル３３３は、陽性の文３３０および／または陰性の文３３２に基づいて生成されてもよい。たとえば、陽性の文３３０および／または陰性の文３３２は、APIドキュメンテーションに関係しているまたは関係していないコンテンツ内の文を識別するための分類モデル３３３をトレーニングするために使われてもよい。分類モデル３３３の生成は、図２との関係で上記でより詳細に論じられている。
【００４９】
ウェブサイトの例では、分類モジュール１０４はウェブサイト中のウェブページからテキストを抽出してもよい。分類モジュール１０４は分類モデル３３３を抽出されたテキストと比較してもよい。それぞれの文が、分類モデル３３３に含まれる文と比較されてもよい。テキストおよび分類モデル３３３における一つまたは複数の文が同じまたは実質的に同様である場合、分類モジュール１０４はそのウェブページを収集し、収集されたAPI文書としてデータ記憶部に送ってもよい。たとえば、図１のデータ記憶部１０８および収集されたAPI文書１１０参照。
【００５０】
図４は、本稿に記載される少なくとも一つの実施形態に基づく、REST  APIモデルの集合を生成することに関係する例示的方法４００の流れ図を示している。方法４００はブロック４０２で始まってもよく、ここで、処理論理は一つまたは複数のサンプル・ドキュメンテーションをパースしてもよい。たとえば、前記一つまたは複数のサンプル・ドキュメンテーションは、テキストの一つまたは複数のページを含んでいてもよい。処理論理は、前記一つまたは複数のサンプル・ドキュメンテーションから前記テキストを抽出してもよい。さらに、目標言語（たとえば英語）におけるストップワード、記号、句読点などがテキストから除去されてもよい。たとえば、単語「the」は英語におけるストップワードであり、感嘆符、他の句読点はテキストから除去されてもよい。
【００５１】
ブロック４０４では、処理論理は、前記一つまたは複数のサンプル・ドキュメンテーションにおける一つまたは複数のREST  APIキーワードの頻度を決定してもよい。処理論理は、前記一つまたは複数のサンプル・ドキュメンテーションの抽出されたテキストにおいてREST  APIキーワードを検索してもよい。REST  APIキーワードはたとえばGET、POST、PUSH、DELETEなどを含んでいてもよい。いくつかの実施形態では、REST  APIキーワードのテキストは大文字を含んでいてもよい。特定のREST  APIキーワードの頻度とは、その特定のREST  APIキーワードが、抽出されたテキストにおいて何回現われるかを示してもよい。
【００５２】
ブロック４０６では、処理論理はREST  APIモデル・キーワード配列を生成してもよい。たとえば、REST  APIモデル・キーワード配列は、前記一つまたは複数のサンプル・ドキュメンテーションの抽出されたテキストの各ページについて生成されてもよい。さらに、たとえば、REST  APIモデル・キーワード配列は、前記一つまたは複数のサンプル・ドキュメンテーションの抽出されたテキストの関連付けられたページにおけるすべてのREST  APIキーワードおよび各REST  APIキーワードの対応する頻度を含んでいてもよい。例示的なREST  APIモデル・キーワード配列を表Ｉに与える。
【表１】
2019133621.tif 000003
表Ｉにおいて、TFは、用語頻度（term  frequency）を表わし、前記一つまたは複数のサンプル・ドキュメンテーションから抽出されたテキストの対応するページにおけるREST  APIキーワードの頻度を示していてもよい。
【００５３】
ブロック４０８がブロック４０２に続き、ブロック４０８では、処理論理は、前記一つまたは複数のサンプル・ドキュメンテーションの各ページに注釈付けしてもよい。各ページは、陽性ページまたは陰性ページとして注釈付けされてもよい。陽性ページは、APIドキュメンテーションに関係していてもよい。陰性ページは、APIドキュメンテーションに関係していなくてもよい。いくつかの実施形態では、ページが陽性ページであるか陰性ページであるかを示すために、追加的な行がREST  APIモデル・キーワード配列に追加されてもよい。たとえば、陽性ページに関連付けられた追加的な行におけるフィールドは「1」を含んでいてもよく、陰性ページに関連付けられた追加的な行におけるフィールドは「0」を含んでいてもよい。表ＩＩは、各ページの注釈を含む例示的なREST  APIモデル・キーワード配列である。
【表２】
2019133621.tif 000004
【００５４】
いくつかの実施形態では、処理論理は、ユーザーから受領されたユーザー入力に基づいて、各ページを陽性ページまたは陰性ページとして注釈付けしてもよい。ディスプレイを介してページがユーザーに提供されてもよく、ユーザーはそのページに、陽性ページまたは陰性ページとして注釈付けしてもよい。
【００５５】
ブロック４１０では、処理論理は、REST  APIモデルの集合を生成してもよい。REST  APIモデルは、更新されたREST  APIモデル・キーワード配列に基づいて生成されてもよい。
【００５６】
追加的または代替的に、REST  APIモデルは、機械学習アルゴリズムを使って生成されてもよい。たとえば、REST  APIモデルは式１（たとえばロジスティック回帰の式）を使って生成されてもよい。
【数１】
2019133621.tif 000005
式１において、Xは入力配列（たとえば、更新されたTF  REST  APIキーワード配列）、yは各ページについて該ページがREST  APIページであるかどうかの情報を与えるトレーニング配列、wは係数ベクトル、Cは正則化強度（regularization  strength）の逆数、Tは行列転置演算を表わす。ロジスティック回帰の式は、0とマイナス1との間の最大エントロピーを見出すための最大エントロピー分類として知られる線形モデルであってもよい。追加的または代替的に、REST  APIモデルは、任意のトレーニングされたAPIモデルを使って生成されてもよい。
【００５７】
当業者は、本稿で開示されるこのおよび他の手順および方法について、該プロセスおよび方法において実行される機能は異なる順序で実装されてもよいことを理解するであろう。さらに、概説される段階および動作は例として提供されるだけであり、該段階および動作のいくつかは、開示される実施形態を損なうことなく、任意的であってもよく、より少数の段階および動作に組み合わされたり、あるいは追加的な段階および動作に展開されたりしてもよい。
【００５８】
図５は、本稿に記載される少なくとも一つの実施形態に基づく、例示的なREST  APIモジュール１０６のブロック図を示している。REST  APIモジュール１０６は、サンプルREST[  APIドキュメンテーション５３４、一つまたは複数のREST  APIキーワード５３６、REST  APIモデル・キーワード配列５３８およびREST  APIモデルの集合５４２を含んでいてもよい。REST  APIモジュール１０６は、図１のREST  APIモジュール１０６と同じまたは実質的に同様であってもよい。
【００５９】
サンプルREST  APIドキュメンテーション５３４は、REST  APIドキュメンテーションに関連したドキュメンテーションを含んでいてもよい。サンプルREST  APIドキュメンテーション５３４は抽出されたテキストを含んでいてもよい。たとえばサンプルREST  APIドキュメンテーションは、テキストであって、該テキストからストップワード、記号および／または句読点が除去されたものを含んでいてもよい。
【００６０】
REST  APIキーワード５３６は、既知のREST  APIキーワードのリストを含んでいてもよい。たとえば、REST  APIキーワードはGET、POST、PUSH、DELETEなどを含んでいてもよい。REST  APIモデル・キーワード配列５３８は、サンプルREST  APIドキュメンテーション５３４に現われるキーワードのリストおよび各キーワードの頻度を含んでいてもよい。REST  APIモデル・キーワード配列の生成については、図４に関係して上記でより詳細に論じられている。
【００６１】
REST  APIモデル５４２は、REST  APIモデル・キーワード配列５３８に基づいて生成されてもよい。たとえば、REST  APIモデル・キーワード配列５３８を使って、REST  APIドキュメンテーションに関係しているまたは関係していないページ中のREST  API用語の頻度および／または総数を識別するためのREST  APIモデル５４２をトレーニングしてもよい。REST  APIモデル５４２の生成については、図４に関係して上記でより詳細に論じられている。
【００６２】
ウェブサイトの例では、REST  APIモジュール１０６は、ウェブサイト中のウェブページからREST  APIキーワードを抽出してもよい。REST  APIモジュール１０６は、REST  APIモデル５４２を抽出されたテキストと比較してもよい。テキスト中のREST  APIキーワードの総数および／または各REST  APIキーワードの頻度が、REST  APIモジュール５４２に含まれているキーワード閾値および／または頻度閾値と比較されてもよい。テキスト中のREST  APIキーワードの総数および／または一つまたは複数のREST  APIキーワードの頻度が閾値および／または頻度閾値を超える場合、REST  APIモジュール１０６はそれらのウェブページを収集し、収集されたREST  API文書としてデータ記憶部に送ってもよい。たとえば、図１のデータ記憶部１０８および収集されたREST  API文書１１２参照。
【００６３】
図６は、本稿に記載される少なくとも一つの実施形態に基づく、コンテンツがAPIドキュメンテーションであるかどうかを判定することに関係した例示的方法６００の流れ図を示している。方法６００はブロック６０２で始まってもよく、ここで、処理論理は分類モデルの集合を生成してもよい。分類モデルの生成は図２に関係して上記でより詳細に論じられている。
【００６４】
ブロック６０４では、処理論理は、コンテンツを求めて、一つまたは複数のコンテンツ源にアクセスしてもよい。たとえば、処理論理は、図１のコンテンツ１１８を求めてコンテンツ源１１６にアクセスしてもよい。ウェブサイトの例では、処理論理はウェブページを求めてウェブサイトにアクセスしてもよい。
【００６５】
ブロック６０６では、処理論理は、コンテンツ中の一つまたは複数の文が、分類モデルに含まれる一つまたは複数の文と同じまたは実質的に同様であるかどうかを判定してもよい。たとえば、処理論理は、コンテンツ中の一つまたは複数の文を分類モデルに含まれる文と比較してもよく、一つまたは複数の文が同じまたは実質的に同様であれば、そのコンテンツはAPIドキュメンテーションでありうる。ウェブサイトの例では、処理論理は、各ウェブページにおける一つまたは複数の文が分類モデルに含まれる一つまたは複数の文と同じまたは実質的に同様であるかどうかを判定してもよい。
【００６６】
ブロック６０８では、処理論理は前記コンテンツをAPIドキュメンテーションとして収集してもよい。たとえば、コンテンツは収集され、図１の収集されたAPI文書１１０としてデータ記憶部１０８に記憶されてもよい。ウェブサイトの例では、処理論理は、APIドキュメンテーションとして識別されたウェブページを収集し、該ウェブページをデータ記憶部に送ってもよい。
【００６７】
当業者は、本稿で開示されるこのおよび他の手順および方法について、該プロセスおよび方法において実行される機能は異なる順序で実装されてもよいことを理解するであろう。さらに、概説される段階および動作は例として提供されるだけであり、該段階および動作のいくつかは、開示される実施形態を損なうことなく、任意的であってもよく、より少数の段階および動作に組み合わされたり、あるいは追加的な段階および動作に展開されたりしてもよい。
【００６８】
図７は、本稿に記載される少なくとも一つの実施形態に基づく、コンテンツがREST  APIドキュメンテーションであるかどうかを判定することに関係した例示的方法７００の流れ図を示している。方法７００はブロック７０２で始まってもよく、ここで、処理論理はREST  APIモデルの集合を生成してもよい。REST  APIモデルの生成は図４に関係して上記でより詳細に論じられている。
【００６９】
ブロック７０４では、処理論理は、コンテンツ中の一つまたは複数のREST  APIキーワードが、REST  APIモデルに含まれる一つまたは複数のREST  APIキーワードと同じまたは実質的に同様であるかどうかを判定してもよい。ウェブサイトの例では、処理論理は、ウェブページにおける一つまたは複数のREST  APIキーワードがREST  APIモデルにおける一つまたは複数のREST  APIキーワードと同じまたは実質的に同様であるかどうかを判定してもよい。
【００７０】
ブロック７０６では、コンテンツ中の一つまたは複数のREST  APIキーワードが同じまたは実質的に同様である場合、処理論理は前記コンテンツをREST  APIドキュメンテーションとして収集してもよい。該REST  APIドキュメンテーションは収集されたREST  API文書として記憶されてもよい。たとえば、そのコンテンツは、図１の収集されたREST  API文書１１２としてデータ記憶部１０８によって記憶されてもよい。ウェブサイトの例では、REST  APIドキュメンテーションとして識別されたウェブページが収集され、収集されたREST  API文書として記憶されてもよい。
【００７１】
当業者は、本稿で開示されるこのおよび他の手順および方法について、該プロセスおよび方法において実行される機能は異なる順序で実装されてもよいことを理解するであろう。さらに、概説される段階および動作は例として提供されるだけであり、該段階および動作のいくつかは、開示される実施形態を損なうことなく、任意的であってもよく、より少数の段階および動作に組み合わされたり、あるいは追加的な段階および動作に展開されたりしてもよい。
【００７２】
図８は、本稿に記載される少なくとも一つの実施形態に基づく、コンテンツがREST  APIドキュメンテーションであるかどうかを判定することに関係したもう一つの例示的方法８００の流れ図を示している。方法８００はブロック８０２で始まってもよく、ここで、処理論理は一つまたは複数のサンプル・ドキュメンテーションを受領してもよい。
【００７３】
ブロック８０４では、処理論理は、前記一つまたは複数のサンプル・ドキュメンテーションをパースしてもよい。たとえば、前記一つまたは複数のサンプル・ドキュメンテーションはテキストの一つまたは複数のページを含んでいてもよい。処理論理は、前記一つまたは複数のサンプル・ドキュメンテーションからテキストを抽出してもよい。さらに、テキストから、ストップワード、記号などが除去されてもよい。たとえば、単語「the」、感嘆符、他の句読点などがテキストから除去されてもよい。
【００７４】
ブロック８０６では、前記一つまたは複数のサンプル・ドキュメンテーションにおける一つまたは複数のREST  APIキーワードの頻度を決定してもよい。処理論理は、前記一つまたは複数のサンプルAPIドキュメンテーションのパースされたテキストにおいてREST  APIキーワードを検索してもよい。REST  APIキーワードはたとえばGET、POST、PUSH、DELETEなどを含んでいてもよい。REST  APIキーワードの頻度は、特定のREST  APIキーワードが、パースされたテキストにおいて何回現われるかを示してもよい。
【００７５】
ブロック８０８において、処理論理は、REST  APIモデル・キーワード配列を生成してもよい。たとえば、REST  APIモデル・キーワード配列は、前記一つまたは複数のサンプル・ドキュメンテーションの各ページについて生成されてもよい。さらに、たとえば、REST  APIモデル・キーワード配列は、前記一つまたは複数のサンプル・ドキュメンテーションの関連付けられたページにおけるすべてのREST  APIキーワードおよび各REST  APIキーワードの対応する頻度を含んでいてもよい。例示的なREST  APIモデル・キーワード配列は上記で表Ｉにおいて与えてある。
【００７６】
ブロック８１０では、処理論理はコンテンツをパースしてもよい。処理論理は、コンテンツからテキストを抽出してもよい。さらに、コンテンツのテキストから、ストップワード、記号などが除去されてもよい。パースされているコンテンツは、図１のコンテンツ１１８を含んでいてもよい。ウェブサイトの例では、処理論理は、ウェブサイトのウェブページに含まれるテキストをパースしてもよい。
【００７７】
ブロック８１２では、処理論理は、コンテンツに含まれるREST  APIキーワードの総数および任意のREST  APIキーワードの頻度を決定してもよい。たとえば、処理論理は、テキスト中にREST  APIキーワードが見出される全回数および／または各REST  APIキーワードの頻度を数えてもよい。ウェブサイトの例では、処理論理は、ウェブページに含まれるREST  APIキーワードの総数および任意のREST  APIキーワードの頻度を決定してもよい。
【００７８】
ブロック８１４では、処理論理は、REST  APIドキュメンテーション・キーワード配列を生成してもよい。REST  APIドキュメンテーション・キーワード配列は、コンテンツに含まれるREST  APIキーワードの総数および／または任意のREST  APIキーワードの頻度に基づいて生成されてもよい。ウェブサイトの例では、処理論理は、ウェブサイト中の各ウェブページについてREST  APIドキュメンテーション・キーワード配列を生成してもよい。
【００７９】
ブロック８１６では、処理論理は、コンテンツに含まれるREST  APIキーワードの総数がキーワード閾値を超える、およびコンテンツに含まれるいずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかを判定してもよい。コンテンツに含まれるREST  APIキーワードの総数がキーワード閾値を超える、および／またはコンテンツに含まれるいずれかのREST  APIキーワードの頻度が頻度閾値を超える場合、処理論理は、そのコンテンツを、REST  APIドキュメンテーションとして収集してもよい。
【００８０】
ウェブサイトの例では、処理論理は、あるウェブページに含まれるREST  APIキーワードの総数がキーワード閾値を超える、およびあるウェブページに含まれるいずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかを判定してもよい。あるウェブページに含まれるREST  APIキーワードの総数がキーワード閾値を超える、および／またはあるウェブページに含まれるいずれかのREST  APIキーワードの頻度が頻度閾値を超える場合、処理論理はそのウェブページを、REST  APIドキュメンテーションとして収集してもよい。
【００８１】
当業者は、本稿で開示されるこのおよび他の手順および方法について、該プロセスおよび方法において実行される機能は異なる順序で実装されてもよいことを理解するであろう。さらに、概説される段階および動作は例として提供されるだけであり、該段階および動作のいくつかは、開示される実施形態を損なうことなく、任意的であってもよく、より少数の段階および動作に組み合わされたり、あるいは追加的な段階および動作に展開されたりしてもよい。
【００８２】
図９は、本稿に記載される少なくとも一つの実施形態に基づく、分類モデルの集合を生成することに関する例示的方法の流れ図を示している。方法９００は、ブロック９０２で始まってもよく、ここで、処理論理は、一つまたは複数のサンプルAPIドキュメンテーションを受け取ってもよい。前記一つまたは複数のサンプルAPIドキュメンテーションは、たとえば、APIドキュメンテーションに関連付けられている情報および一つまたは複数の文を含んでいてもよい。追加的または代替的に、前記一つまたは複数のサンプルAPIドキュメンテーションは、APIドキュメンテーションに関連付けられていない情報および／または文を含んでいてもよい。いくつかの実施形態では、前記一つまたは複数のサンプルAPIドキュメンテーションは、処理のために用意されるウェブ・コンテンツのリストを含んでいてもよい。
【００８３】
ブロック９０４では、処理論理は、前記一つまたは複数のサンプルAPIドキュメンテーションから、APIドキュメンテーションに関連する一つまたは複数の文を抽出してもよい。たとえば、該文は、ブロック９０８で生成される一つまたは複数のJSONファイルおよび／またはブロック９１０で生成される一つまたは複数の陽性の文または一つまたは複数の陰性の文に基づいて抽出されてもよい。
【００８４】
ブロック９０６では、処理論理は、前記一つまたは複数のサンプルAPIドキュメンテーションから情報を抽出してもよい。たとえば、該情報は、抽出され、個別の部分に分離されてもよい。個別の部分とは、APIタイトル、APIエンドポイント、APIエンドポイントのパラメータ、APIエンドポイントの応答またはAPIドキュメンテーションに含まれる情報の他の任意の好適な部分などである。
【００８５】
ブロック９０８では、処理論理は、一つまたは複数のJSONファイルを生成してもよい。たとえば、JSONファイルは、前記一つまたは複数のサンプルAPIドキュメンテーションからの前記情報に基づいて生成されてもよい。いくつかの実施形態では、各JSONファイルは、API情報の一つまたは複数の部分を含んでいてもよい。該部分とは、APIタイトル、APIエンドポイント、APIエンドポイントのパラメータ、APIエンドポイントの応答またはAPIドキュメンテーションに含まれる情報の他の任意の好適な部分などである。
【００８６】
ブロック９１０では、処理論理は、一つまたは複数の陽性の文または一つまたは複数の陰性の文を生成してもよい。JSONファイルに含まれる前記一つまたは複数の文は、陽性の文として注釈付けされてもよい。陽性の文は、APIドキュメンテーションに関係していてもよい。追加的または代替的に、陽性の文はAPI機能または他のAPI関係情報を説明してもよい。たとえば、陽性の文はAPIコールのコスト、APIのパラメータ、どのようにしてAPIをコールするか、APIコールのポリシーなどを示してもよい。陰性の文は、APIドキュメンテーションに関係していなくてもよい。たとえば、陰性の文は、APIサービスを提供しないアプリケーションを示してもよい。
【００８７】
いくつかの実施形態では、処理論理は、ユーザーから受領されたユーザー入力に基づいてJSONファイルに含まれる一つまたは複数の文に注釈付けしてもよい。ディスプレイを介してユーザーに文が提供されてもよく、ユーザーがその文を陽性の文または陰性の文として注釈付けする入力を提供してもよい。
【００８８】
ブロック９１２では、処理論理は、分類モデルの集合を生成してもよい。たとえば、分類モデルは、前記一つまたは複数の陽性の文および／または前記一つまたは複数の陰性の文に基づいて生成されてもよい。
【００８９】
当業者は、本稿で開示されるこのおよび他の手順および方法について、該プロセスおよび方法において実行される機能は異なる順序で実装されてもよいことを理解するであろう。さらに、概説される段階および動作は例として提供されるだけであり、該段階および動作のいくつかは、開示される実施形態を損なうことなく、任意的であってもよく、より少数の段階および動作に組み合わされたり、あるいは追加的な段階および動作に展開されたりしてもよい。
【００９０】
図１０は、本稿で論じられる方法の任意の一つまたは複数を機械に実行させるための一組の命令が実行されうるコンピューティング装置１０００の例示的な形での機械の図的な表現を示している。コンピューティング装置１０００は、携帯電話、スマートフォン、ネットブック・コンピュータ、ラックマウント・サーバー、ルーター・コンピュータ、サーバー・コンピュータ、パーソナル・コンピュータ、メインフレーム・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、デスクトップ・コンピュータなどを含んでいてもよく、その中で、本稿で論じられる方法の任意の一つまたは複数を機械に実行させるための一組の命令が実行されうる。代替的な実施形態では、機械はLAN、イントラネット、エクストラネットまたはインターネット内の他の機械に接続（たとえばネットワーク接続）されていてもよい。機械は、クライアント‐サーバー・ネットワーク環境におけるサーバー機械の役割で動作してもよい。機械は、パーソナル・コンピュータ（PC）、セットトップボックス（STB）、サーバー、ネットワーク・ルーター、スイッチまたはブリッジまたは、その機械によって行なわれるべきアクションを指定する一組の命令（逐次的またはその他）を実行することのできるいかなる機械であってもよい。さらに、一つの機械が図示されているだけだが、用語「機械」は、本稿で論じられる方法の任意の一つまたは複数を実行するために、個々にまたは合同して一組の（または複数組の）命令を実行する機械の任意の集合をも含みうる。
【００９１】
例示的なコンピューティング装置１０００は、処理装置（たとえばプロセッサ）１００２、メイン・メモリ１００４（たとえば読み出し専用メモリ（ROM）、フラッシュメモリ、動的ランダム・アクセス・メモリ（DRAM）、たとえば同期DRAM（SDRAM））、静的メモリ１００６（たとえばフラッシュメモリ、静的ランダム・アクセス・メモリ（SRAM））およびデータ記憶装置１０１６を含み、これらはバス１００８を介して互いと通信する。
【００９２】
処理装置１００２は、マイクロプロセッサ、中央処理ユニットなどといった一つまたは複数の汎用処理装置を表わす。より具体的には、処理装置１００２は、複雑命令セット・コンピューティング（CISC）マイクロプロセッサ、縮小命令セット・コンピューティング（RISC）マイクロプロセッサ、超長命令語（VLIW:  very  long  instruction  word）マイクロプロセッサまたは他の命令セットを実装するプロセッサまたは諸命令セットの組み合わせを実装する諸プロセッサを含んでいてもよい。処理装置１００２は、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）、デジタル信号プロセッサ（DSP）、ネットワーク・プロセッサなどといった一つまたは複数の特殊目的処理装置をも含んでいてもよい。処理装置１００２は、本稿で論じられた動作および段階を実行するための命令１０２６を実行するよう構成されてもよい。
【００９３】
コンピューティング装置１０００はさらに、ネットワーク１０１８と通信しうるネットワーク・インターフェース装置１０２２を含んでいてもよい。コンピューティング装置１０００は、ディスプレイ装置１０１０（たとえば液晶ディスプレイ（LCD）または陰極線管（CRT））、英数字入力装置１０１２（たとえばキーボード）、カーソル制御装置１０１４（たとえばマウス）および信号生成装置１０２０（たとえばスピーカー）をも含んでいてもよい。ある実装では、ディスプレイ装置１０１０、英数字入力装置１０１２およびカーソル制御装置１０１４は単一のコンポーネントまたは装置（たとえばLCDタッチスクリーン）に組み合わされてもよい。
【００９４】
データ記憶装置１０１６は、本稿に記載される方法または機能の任意の一つまたは複数を具現する一組または複数組の命令１０２６（たとえば装置１０２、分類モジュール１０４およびREST  APIモジュール１０６）が記憶されているコンピュータ可読記憶媒体１０２４を含んでいてもよい。命令１０２６は、コンピューティング装置１０００によるその実行の間、完全にまたは少なくとも部分的に、メイン・メモリ１００４内および／または処理装置１００２内に存在し、メイン・メモリ１００４および処理装置１００２もコンピュータ可読媒体をなしてもよい。命令はさらに、ネットワーク・インターフェース装置１０２２を介してネットワーク１０１８を通じて送受信されてもよい。
【００９５】
コンピュータ可読記憶媒体１０２４はある例示的実施形態では単一の媒体であると示されているが、「コンピュータ可読記憶媒体」という用語は、前記一組または複数組の命令を記憶する単一の媒体または複数の媒体（たとえば、中央集中式または分散式のデータベースおよび／または付随するキャッシュおよびサーバー）を含んでいてもよい。「コンピュータ可読記憶媒体」という用語はまた、本開示の方法の任意の一つまたは複数を機械に実行させる、機械による実行のための一組の命令を、記憶する、エンコードするまたは担持することができる任意の媒体をも含んでいてもよい。よって、「コンピュータ可読記憶媒体」という用語は、半導体メモリ、光メディアおよび磁気メディアを含むがそれに限られないと解釈されうる。
【００９６】
本稿に記載される実施形態は、コンピュータ実行可能命令を担持するまたは記憶するためのコンピュータ可読媒体を使って実装されてもよい。そのようなコンピュータ可読媒体は、汎用または特殊目的コンピュータによってアクセスされうるいかなる利用可能な媒体であってもよい。限定ではなく例として、そのようなコンピュータ可読媒体は、非一時的なコンピュータ可読記憶媒体を含んでいてもよく、それは、ランダム・アクセス・メモリ（RAM）、読み出し専用メモリ（ROM）、電気的に消去可能なプログラム可能な読み出し専用メモリ（EEPROM）、コンパクトディスク読み出し専用メモリ（CD-ROM）または他の光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイス、フラッシュメモリ・デバイス（たとえば半導体メモリ・デバイス）またはコンピュータ実行可能命令またはデータ構造の形で所望されるプログラム・コードを担持または記憶するために使用されうる、汎用または専用コンピュータによってアクセスされうる他の任意の記憶媒体を含んでいてもよい。上記の組み合わせも、コンピュータ可読媒体の範囲内に含められてもよい。
【００９７】
コンピュータ実行可能命令はたとえば、汎用コンピュータ、専用コンピュータまたは専用処理装置（たとえば一つまたは複数のプロセッサ）に、ある機能または機能群を実行させる命令およびデータを含んでいてもよい。主題は構造的な特徴および／または方法論的な工程に固有の言辞で記述されてきたが、付属の請求項において定義される主題は必ずしも上記の個別的な特徴または工程に限定されないことは理解される。むしろ、上記の個別的な特徴および工程は、請求項を実装する例示的な形として開示されている。
【００９８】
本稿での用法では、用語「モジュール」または「コンポーネント」は、コンピューティング・システムの汎用ハードウェア（たとえばコンピュータ可読媒体、処理装置など）に記憶および／または実行されうるモジュールまたはコンポーネントおよび／またはソフトウェア・オブジェクトまたはソフトウェア・ルーチンの動作を実行するよう構成された個別的なハードウェア実装を指すことがありうる。いくつかの実施形態では、本稿に記載される種々のコンポーネント、モジュール、エンジンおよびサービスは、（たとえば別個のスレッドとして）コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして実装されてもよい。本稿に記載されるシステムおよび方法のいくつかは一般に（汎用ハードウェアに記憶されるおよび／または実行される）ソフトウェアで実装されるものとして記述されるが、個別的なハードウェア実装またはソフトウェアおよび個別的ハードウェア実装の組み合わせも可能であり、考えられている。本稿において、「コンピューティング・エンティティ」は、本稿で先に定義した任意のコンピューティング・システムまたはコンピューティング・システム上で走る任意のモジュールまたはモジュレットの組み合わせであってよい。
【００９９】
本稿に記載されるすべての例および条件付きの言辞は、本発明および発明者によって当技術分野の発展のために寄与される概念の理解において読者を助ける教育目的を意図されており、そのような特定的に挙げられる例および条件に限定することなく解釈されるものとする。本発明の実施形態について詳細に述べてきたが、本発明の精神および範囲から外れることなく、これにさまざまな変化、代替および変更をなすことができることは理解しておくべきである。
【０１００】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
メモリと；通信インターフェースと；前記メモリおよび前記通信インターフェースに動作上結合されたプロセッサとを有するシステムであって、前記プロセッサは：
分類モデルの集合を生成する段階であって、前記分類モデルは、アプリケーション・プログラミング・インターフェース（API）ドキュメンテーションに関連する一つまたは複数の文を含む、段階と；
前記通信インターフェースを介して、コンテンツとして一つまたは複数のコンテンツ源にアクセスする段階と；
前記コンテンツにおける一つまたは複数の文が、前記分類モデルに含まれる一つまたは複数の文と同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数の文が同じまたは実質的に同様であるよ判定することに応答して、前記コンテンツをAPIドキュメンテーションとして収集する段階とを含む動作を実行するよう構成されている、
システム。
（付記２）
前記プロセッサはさらに：
代表状態転送（REST）APIモデルの集合を生成する段階であって、前記REST  APIモデルは、REST  APIドキュメンテーションに関連する一つまたは複数のREST  APIキーワードを含む、段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが、前記REST  APIモデルに含まれる一つまたは複数のREST  APIキーワードと同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが同じまたは実質的に同様であると判定するのに応答して、前記コンテンツをREST  APIドキュメンテーションとして収集する段階とを実行するよう構成されている、
付記１記載のシステム。
（付記３）
REST  APIモデルの集合を生成する動作が：
一つまたは複数のサンプル・ドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプル・ドキュメンテーションをパースする段階であって、前記サンプル・ドキュメンテーションの一つまたは複数はREST  APIに関連している、段階と；
前記サンプル・ドキュメンテーションにおける一つまたは複数のREST  APIキーワードの頻度を決定する段階と；
REST  APIモデル・キーワード配列を生成する段階であって、前記REST  APIモデル・キーワード配列は、前記サンプル・ドキュメンテーションの各ページがREST  APIに関連しているかどうかを示す、段階とを含み、
前記REST  APIモデルは、前記REST  APIモデル・キーワード配列に基づいて生成される、
付記２記載のシステム。
（付記４）
前記コンテンツをREST  APIドキュメンテーションとして収集する動作が：
前記コンテンツをパースする段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度を決定する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度に基づいて、REST  APIドキュメンテーション・キーワード配列を生成する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数がキーワード閾値を超える、前記コンテンツに含まれるいずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかを判定する段階であって、前記コンテンツは、REST  APIキーワードの総数がキーワード閾値を超える、いずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかに基づいて、REST  APIドキュメンテーションとして収集される、段階とを含む、
付記３記載のシステム。
（付記５）
前記プロセッサが、前記REST  APIモデルを、トレーニングされたAPIモデルに従って生成する、付記２記載のシステム。
（付記６）
分類モデルの集合を生成する動作が：
一つまたは複数のサンプルAPIドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから、APIドキュメンテーションに関連する一つまたは複数の文を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから情報を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションからの前記情報に基づいて、一つまたは複数のジャバスクリプト・オブジェクト記法（JSON）ファイルを生成する段階と；
一つまたは複数の陽性の文または一つまたは複数の陰性の文を生成する段階であって、前記分類モデルは、前記一つまたは複数の陽性の文および前記一つまたは複数の陰性の文の少なくとも一方に基づいて生成される、段階とを含む、
付記１記載のシステム。
（付記７）
前記コンテンツが、ウェブ・ベースのAPIドキュメンテーション、装置APIドキュメンテーションおよびオペレーティング・システム・ベースのAPIドキュメンテーションのうちの少なくとも一つを含む、付記１記載のシステム。
（付記８）
分類モデルの集合を生成する段階であって、前記分類モデルは、APIドキュメンテーションに関連する一つまたは複数の文を含む、段階と；
コンテンツとして一つまたは複数のコンテンツ源にアクセスする段階と；
前記コンテンツにおける一つまたは複数の文が、前記分類モデルに含まれる一つまたは複数の文と同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数の文が同じまたは実質的に同様であるよ判定することに応答して、前記コンテンツをAPIドキュメンテーションとして収集する段階とを含む、
方法。
（付記９）
当該方法がさらに：
REST  APIモデルの集合を生成する段階であって、前記REST  APIモデルは、REST  APIドキュメンテーションに関連する一つまたは複数のREST  APIキーワードを含む、段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが、前記REST  APIモデルに含まれる一つまたは複数のREST  APIキーワードと同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが同じまたは実質的に同様であると判定するのに応答して、前記コンテンツをREST  APIドキュメンテーションとして収集する段階とを含む、
付記８記載の方法。
（付記１０）
REST  APIモデルの集合を生成する動作が：
一つまたは複数のサンプル・ドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプル・ドキュメンテーションをパースする段階であって、前記サンプル・ドキュメンテーションの一つまたは複数はREST  APIに関連している、段階と；
前記サンプル・ドキュメンテーションにおける一つまたは複数のREST  APIキーワードの頻度を決定する段階と；
REST  APIモデル・キーワード配列を生成する段階であって、前記REST  APIモデル・キーワード配列は、前記サンプル・ドキュメンテーションの各ページがREST  APIに関連しているかどうかを示す、段階とを含み、
前記REST  APIモデルは、前記REST  APIモデル・キーワード配列に基づいて生成される、
付記９記載の方法。
（付記１１）
前記コンテンツをREST  APIドキュメンテーションとして収集する動作が：
前記コンテンツをパースする段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度を決定する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度に基づいて、REST  APIドキュメンテーション・キーワード配列を生成する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数がキーワード閾値を超える、前記コンテンツに含まれるいずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかを判定する段階であって、前記コンテンツは、REST  APIキーワードの総数がキーワード閾値を超える、いずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかに基づいて、REST  APIドキュメンテーションとして収集される、段階とを含む、
付記１０記載の方法。
（付記１２）
前記REST  APIモデルが、トレーニングされたAPIモデルに従って生成される、付記９記載の方法。
（付記１３）
分類モデルの集合を生成する動作が：
一つまたは複数のサンプルAPIドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから、APIドキュメンテーションに関連する一つまたは複数の文を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから情報を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションからの前記情報に基づいて、一つまたは複数のJSONファイルを生成する段階と；
一つまたは複数の陽性の文または一つまたは複数の陰性の文を生成する段階であって、前記分類モデルは、前記一つまたは複数の陽性の文および前記一つまたは複数の陰性の文の少なくとも一方に基づいて生成される、段階とを含む、
付記８記載の方法。
（付記１４）
動作を実行するためにプロセッサによって実行可能なプログラミング・コードがエンコードされている非一時的なコンピュータ可読媒体であって、前記動作は：
分類モデルの集合を生成する段階であって、前記分類モデルは、APIドキュメンテーションに関連する一つまたは複数の文を含む、段階と；
コンテンツとして一つまたは複数のコンテンツ源にアクセスする段階と；
前記コンテンツにおける一つまたは複数の文が、前記分類モデルに含まれる一つまたは複数の文と同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数の文が同じまたは実質的に同様であるよ判定することに応答して、前記コンテンツをAPIドキュメンテーションとして収集する段階とを含む、
非一時的なコンピュータ可読媒体。
（付記１５）
前記動作がさらに：
REST  APIモデルの集合を生成する段階であって、前記REST  APIモデルは、REST  APIドキュメンテーションに関連する一つまたは複数のREST  APIキーワードを含む、段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが、前記REST  APIモデルに含まれる一つまたは複数のREST  APIキーワードと同じまたは実質的に同様であるかどうかを判定する段階と；
前記コンテンツにおける一つまたは複数のREST  APIキーワードが同じまたは実質的に同様であると判定するのに応答して、前記コンテンツをREST  APIドキュメンテーションとして収集する段階とを含む、
付記１４記載の非一時的なコンピュータ可読媒体。
（付記１６）
REST  APIモデルの集合を生成する動作が：
一つまたは複数のサンプル・ドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプル・ドキュメンテーションをパースする段階であって、前記サンプル・ドキュメンテーションの一つまたは複数はREST  APIに関連している、段階と；
前記サンプル・ドキュメンテーションにおける一つまたは複数のREST  APIキーワードの頻度を決定する段階と；
REST  APIモデル・キーワード配列を生成する段階であって、前記REST  APIモデル・キーワード配列は、前記サンプル・ドキュメンテーションの各ページがREST  APIに関連しているかどうかを示す、段階とを含み、
前記REST  APIモデルは、前記REST  APIモデル・キーワード配列に基づいて生成される、
付記１５記載の非一時的なコンピュータ可読媒体。
（付記１７）
前記コンテンツをREST  APIドキュメンテーションとして収集する動作が：
前記コンテンツをパースする段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度を決定する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数およびいずれかのREST  APIキーワードの頻度に基づいて、REST  APIドキュメンテーション・キーワード配列を生成する段階と；
前記コンテンツに含まれるREST  APIキーワードの総数がキーワード閾値を超える、前記コンテンツに含まれるいずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかを判定する段階であって、前記コンテンツは、REST  APIキーワードの総数がキーワード閾値を超える、いずれかのREST  APIキーワードの頻度が頻度閾値を超える、の少なくとも一方であるかどうかに基づいて、REST  APIドキュメンテーションとして収集される、段階とを含む、
付記１６記載の非一時的なコンピュータ可読媒体。
（付記１８）
前記REST  APIモデルが、トレーニングされたAPIモデルに従って生成される、付記１５記載の非一時的なコンピュータ可読媒体。
（付記１９）
分類モデルの集合を生成する動作が：
一つまたは複数のサンプルAPIドキュメンテーションを受領する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから、APIドキュメンテーションに関連する一つまたは複数の文を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションから情報を抽出する段階と；
前記一つまたは複数のサンプルAPIドキュメンテーションからの前記情報に基づいて、一つまたは複数のJSONファイルを生成する段階と；
一つまたは複数の陽性の文または一つまたは複数の陰性の文を生成する段階であって、前記分類モデルは、前記一つまたは複数の陽性の文および前記一つまたは複数の陰性の文の少なくとも一方に基づいて生成される、段階とを含む、
付記１４記載の非一時的なコンピュータ可読媒体。
（付記２０）
前記コンテンツが、ウェブ・ベースのAPIドキュメンテーション、装置APIドキュメンテーションまたはオペレーティング・システム・ベースのAPIドキュメンテーションのうちの少なくとも一つを含む、付記１４記載の非一時的なコンピュータ可読媒体。
【符号の説明】
【０１０１】
１０２  装置
１０４  分類モジュール
１０６  REST  APIモジュール
１０８  データ記憶部
１１０  収集されたAPI文書
１１２  収集されたREST  API文書
１１４  ネットワーク
１１６  コンテンツ源
１１８  コンテンツ
２０２  一つまたは複数のサンプルAPIドキュメンテーションを受領
２０４  一つまたは複数のサンプルAPIドキュメンテーションから情報を抽出
２０６  一つまたは複数のJSONファイルを生成
２０８  JSONファイルに含まれる一つまたは複数の文に注釈付け
２１０  JSONファイルに含まれる一つまたは複数の文に逆注釈付け
２１２  一つまたは複数のサンプルAPIドキュメンテーションから一つまたは複数の文を抽出
２１４  一つまたは複数のサンプルAPIドキュメンテーションから抽出された一つまたは複数の文を分類
２１６  一組の分類モデルを生成
３２４  サンプルAPIドキュメンテーション
３２６  文
３２８  JSONファイル
３３０  陽性の文
３３２  陰性の文
３３３  分類モデル
４０２  一つまたは複数のサンプル・ドキュメンテーションをパース
４０４  一つまたは複数のサンプル・ドキュメンテーションにおける一つまたは複数のREST  APIキーワードの頻度を決定
４０６  REST  APIモデル・キーワード配列を生成
４０８  一つまたは複数のサンプル・ドキュメンテーションの各ページに注釈付け
４１０  一組のREST  APIモデルを生成
１０６  REST  APIモジュール
５３４  サンプルREST  APIドキュメンテーション
５３４  REST  APIキーワード
５３８  REST  APIモデル・キーワード配列
５４２  REST  APIモデル
６０２  一組の分類モデルを生成
６０４  コンテンツを求めて一つまたは複数のコンテンツ源にアクセス
６０６  コンテンツ中の一つまたは複数の文が分類モデルに含まれる一つまたは複数の文と同じまたは類似かどうか判定
６０８  コンテンツをAPIドキュメンテーションとして収集
７０２  一組のREST  APIモデルを生成
７０４  コンテンツ中の一つまたは複数のREST  APIキーワードがREST  APIモデルに含まれる一つまたは複数のREST  APIキーワードと同じまたは類似かどうか判定
７０６  コンテンツ中の一つまたは複数のREST  APIキーワードが同じまたは類似であれば、コンテンツをREST  APIドキュメンテーションとして収集
８０２  一つまたは複数のサンプル・ドキュメンテーションを受領
８０４  一つまたは複数のサンプル・ドキュメンテーションをパース
８０６  一つまたは複数のサンプル・ドキュメンテーションにおける一つまたは複数のREST  APIキーワードの頻度を決定
８０８  REST  APIモデル・キーワード配列を生成
８１０  コンテンツをパース
８１２  コンテンツに含まれるREST  APIキーワードの総数および任意のREST  APIキーワードの頻度を決定
８１４  REST  APIドキュメンテーション・キーワード配列を生成
８１６  コンテンツに含まれるREST  APIキーワードの総数がキーワード閾値を超える、コンテンツに含まれるいずれかのREST  APIキーワードの頻度が頻度閾値を超えるの少なくとも一方であるかどうかを判定
９０２  一つまたは複数のサンプルAPIドキュメンテーションを受領
９０４  一つまたは複数のサンプルAPIドキュメンテーションから、APIドキュメンテーションに関連する一つまたは複数の文を抽出
９０６  一つまたは複数のサンプルAPIドキュメンテーションから情報を抽出
９０８  一つまたは複数のJSONファイルを生成
９１０  一つまたは複数の陽性の文または一つまたは複数の陰性の文を生成
９１２  一組の分類モデルを生成
１００２  プロセッサ
１００４  メイン・メモリ
１００６  静的メモリ
１０１０  表示装置
１０１２  英数字入力装置
１０１４  カーソル制御装置
１０１６  データ記憶装置
１０１８  ネットワーク
１０２０  信号生成装置
１０２２  ネットワーク・インターフェース装置
１０２４  コンピュータ可読媒体
１０２６  命令
【図１】
2019133621.tif 000006
【図２】
2019133621.tif 000007
【図３】
2019133621.tif 000008
【図４】
2019133621.tif 000009
【図５】
2019133621.tif 000010
【図６】
2019133621.tif 000011
【図７】
2019133621.tif 000012
【図８】
2019133621.tif 000013
【図９】
2019133621.tif 000014
【図１０】
2019133621.tif 000015