(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022171576
(43)【公開日】2022-11-11
(54)【発明の名称】コードリポジトリと関連情報のトレンドモニタリング
(51)【国際特許分類】
G06Q 50/10 20120101AFI20221104BHJP
G06F 16/28 20190101ALI20221104BHJP
【FI】
G06Q50/10
G06F16/28
【審査請求】未請求
【請求項の数】17
【出願形態】OL
(21)【出願番号】P 2022059436
(22)【出願日】2022-03-31
(31)【優先権主張番号】17/302400
(32)【優先日】2021-04-30
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ZIGBEE
2.BLUETOOTH
3.JAVASCRIPT
4.ANDROID
5.WCDMA
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】リィウ・レイ
(72)【発明者】
【氏名】チェン・ウェイ-ペン
【テーマコード(参考)】
5B175
5L049
【Fターム(参考)】
5B175EA05
5B175FB04
5L049CC11
(57)【要約】
【課題】コードリポジトリおよび関連情報のトレンドモニタリングのための動作が提供される。
【解決手段】動作は、1つ以上のウェブベースのリポジトリホストシステムにホストされたリポジトリのコレクションからリポジトリセットを識別することと、各リポジトリのリポジトリメタデータを収集することとを含む。動作は、1つ以上の自然言語処理ベースの方法を使用することによって、トピックタグセットを生成することと、生成されたトピックタグセットの各々に関連付けられた統計セットを収集することとをさらに含む。動作は、識別されたリポジトリセット、収集されたリポジトリメタデータ、生成されたトピックタグセット、および収集された統計セットのうちの1つ以上に基づいて、提示データセットを生成することをさらに含む。動作は、ユーザデバイスを制御して、生成された提示データセットをユーザデバイスの電子ユーザインターフェース上に表示することをさらに含む。
【選択図】
図10
【特許請求の範囲】
【請求項1】
1つ以上のウェブベースのリポジトリホストシステムにホストされたリポジトリのコレクションから第1のリポジトリセットを識別することであって、
識別することは、人気基準に基づいており、前記リポジトリのコレクション内の各リポジトリは、ソフトウェアコードまたはコードスニペットを含む、ことと、
前記1つ以上のウェブベースリポジトリホストシステムを含む1つ以上のデータソースから、識別された前記第1のリポジトリセットの各リポジトリのリポジトリメタデータを収集することと、
収集された前記リポジトリメタデータに対する1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットを生成することと、
前記1つ以上のデータソースから、生成された前記第1のトピックタグセットの各々に関連付けられた第1の統計セットを収集することと、
識別された前記第1のリポジトリセット、収集された前記リポジトリメタデータ、生成された前記第1のトピックタグセット、および収集された前記第1の統計セットのうちの1つ以上に基づいて、提示データセットを生成することと、
ユーザデバイスを制御して、生成された提示データセットを前記ユーザデバイスの電子ユーザインターフェース(UI)上に表示することと、を含む、方法。
【請求項2】
ピリオドフィルタ、間隔フィルタ、または人気基準で指定された1つ以上の人気タグのうちの少なくとも1つを含む1つ以上の検索パラメータに基づいて複数のクエリ文字列を生成することであって、
生成された前記複数のクエリ文字列の各問い合わせ文字列は、前記1つ以上のデータソース上にホストされたウェブページの対応するURL(uniform resource locator)に付加される、ことと、
生成された前記複数のクエリ文字列を使用して、前記1つ以上のデータソースを照会して、第1の複数のテーブルを生成することであって、前記第1の複数のテーブルの各々は、1つ以上の人気タグに関連付けられたリポジトリをリストする、ことと、をさらに含み、
生成された前記第1の複数のテーブルの各々にリストされた前記リポジトリは、識別された前記第1のリポジトリセットに含まれる、請求項1に記載の方法。
【請求項3】
生成された前記複数のテーブルをウォッチリストテーブルにマージすることをさらに含み、
前記ウォッチリストテーブルの各レコードは、リポジトリ名または識別子と、前記リポジトリ名または識別子が発生する生成された前記複数のテーブルの1つ以上のテーブルの名前を含む、請求項2に記載の方法。
【請求項4】
前記1つ以上のデータソースへの第1のアプリケーションプログラミングインターフェース(API)呼び出しセットを使用してリポジトリのリストを抽出することであって、
前記第1のAPI呼び出しセットの各API呼び出しは、ピリオドフィルタ、間隔フィルタ、または人気基準で指定された1つ以上の人気タグのうちの少なくとも1つを含む1つ以上の検索パラメータを含む、ことと、
第1の基準に基づいて抽出された前記リポジトリのリストをフィルタリングすることと、
フィルタリングされた前記リポジトリのリストを使用して、第2の複数のテーブルを追加することであって、
前記第2の複数のテーブルは、1つ以上の人気タグに従って追加される、ことと、
生成された前記第2の複数のテーブルをウォッチリストテーブルにマージすることと、をさらに含み、
前記ウォッチリストテーブルにリストされたリポジトリは、識別された前記第1のリポジトリセットに含まれる、請求項1に記載の方法。
【請求項5】
識別された前記第1のリポジトリセットの各リポジトリのリポジトリメタデータは、1つ以上のデータソースへの第2のAPI呼び出しセットを使用することによって収集され、
前記リポジトリメタデータは、スケジュールの各間隔で定期的に収集される、請求項1に記載の方法。
【請求項6】
前記第1のリポジトリセットの各々に対して、収集された前記リポジトリメタデータに基づいて複数のリポジトリデータテーブルを生成することをさらに含み、
生成された前記複数のリポジトリデータテーブルの各々は、前記スケジュールの各間隔に対して収集されたリポジトリメタデータを含む、請求項5に記載の方法。
【請求項7】
前記1つ以上のデータソースから、前記リポジトリのコレクションに関連付けられた人間がラベル付けした第2のトピックタグセットを収集することと、
前記1つ以上のデータソースから、収集された人間がラベル付けした前記第2のトピックタグセットの各々に関連付けられたトピックメタデータを収集することと、をさらに含む、請求項1に記載の方法。
【請求項8】
収集された前記トピックメタデータおよび収集された人間がラベル付けした前記第2のトピックタグセットに基づいて、知識グラフデータベースを生成することをさらに含み、
前記提示データセットは、生成された前記知識グラフデータベースに基づいてさらに生成される、請求項7に記載の方法。
【請求項9】
検索文字列を使用して、前記1つ以上のデータソースを照会して、人間がラベル付けした第2のトピックタグセットの各トピックタグに関連付けられた第2の統計セットを抽出することと、
人間がラベル付けした前記第2のトピックタグセットおよび抽出された前記第2の統計セットをリストする第1のトピックテーブルを生成することと、をさらに含み、
前記提示データセットは、生成された前記第1のトピックテーブルに基づいてさらに生成される、請求項1に記載の方法。
【請求項10】
収集された前記リポジトリメタデータは、第1のタイプのリポジトリ説明および第2のタイプのリポジトリ説明を含む、請求項1に記載の方法。
【請求項11】
前記第1のトピックタグセットは、
前記第1のタイプのリポジトリ説明に含まれる第1のテキストを抽出することと、
抽出された前記第1のテキストに対してテキスト正規化動作を実行して第1の正規化テキストを生成することと、
前記1つ以上の自然言語処理ベースの方法を使用して、前記第1の正規化テキストから名詞句セットを抽出することと、
名詞句の1つ以上の重複インスタンスを除去することによって、抽出された前記名詞句セットを更新することと、を行うことによって生成され、
更新された前記名詞句セットは、前記第1のトピックタグセットのトピックタグとして含まれる、請求項10に記載の方法。
【請求項12】
前記第1のトピックタグセットは、
前記第2のタイプのリポジトリ説明に含まれる第2のテキストを抽出することと、
抽出された前記第2のテキストに対してテキスト正規化動作を実行して第2の正規化テキストを生成することと、
前記第2の正規化テキストに対して機械学習ベースのトピックモデリング方法を適用することにより、前記第2の正規化テキストからキーワードのグループを抽出することであって、
前記機械学習ベースのトピックモデリング方法は、前記1つ以上の自然言語処理ベースの方法のうちの1つである、ことと、
抽出された前記キーワードのグループを使用して1つ以上のクエリを生成することと、
生成された前記1つ以上のクエリを使用して構造化データベースを照会してテーマタグセットを抽出することと、
抽出された前記テーマタグセットの各々に関連するタグ関連性スコアに基づいて、抽出された前記テーマタグセットをランク付けすることと、
ランク付けされた前記テーマタグセットのサブセットを抽出することと、
抽出された前記サブセットは、前記第1のトピックタグセットのトピックタグとして含まれる、請求項10に記載の方法。
【請求項13】
前記電子UIは、前記電子UI上のリポジトリベースのトレンドモニタリングインターフェースを表示するための第1のUI要素と、前記電子UI上のトピックベースのトレンドモニタリングインターフェースを表示するための第2のUI要素と、前記電子UI上の検索インターフェースを表示するための第3のUI要素とを含む、請求項1に記載の方法。
【請求項14】
前記電子UIを介して、第1のUI要素、第2のUI要素、または第3のUI要素のうちの1つの選択を含む第1の入力を受信することをさらに含み、
生成された前記提示データセットの第1の部分は、受信された前記第1の入力に基づいて、前記電子UIの第4のUI要素上に表示される、請求項1に記載の方法。
【請求項15】
前記電子UIを介して、前記提示データセットの表示された前記第1の部分に含まれるリンクされたアイテムの選択を含む第2の入力を受信することをさらに含み、
生成された前記提示データセットの第2の部分は、受信された前記第2の入力に基づいて、前記電子UIの第5のUI要素上に表示され、前記第2の部分は、前記リンクされたアイテムに関連付けられる、請求項14に記載の方法。
【請求項16】
命令を記憶するように構成されている1つ以上の非一時的なコンピュータ可読記憶媒体であって、前記命令は、実行されることに応答して、システムに動作を実行させ、前記動作は、
1つ以上のウェブベースのリポジトリホストシステムにホストされたリポジトリのコレクションから第1のリポジトリセットを識別することであって、
識別することは、人気基準に基づいており、前記リポジトリのコレクション内の各リポジトリは、ソフトウェアコードまたはコードスニペットを含む、ことと、
前記1つ以上のウェブベースリポジトリホストシステムを含む1つ以上のデータソースから、識別された前記第1のリポジトリセットの各リポジトリのリポジトリメタデータを収集することと、
収集された前記リポジトリメタデータに対する1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットを生成することと、
前記1つ以上のデータソースから、生成された前記第1のトピックタグセットの各々に関連付けられた第1の統計セットを収集することと、
識別された前記第1のリポジトリセット、収集された前記リポジトリメタデータ、生成された前記第1のトピックタグセット、および収集された前記第1の統計セットのうちの1つ以上に基づいて、提示データセットを生成することと、
ユーザデバイスを制御して、生成された提示データセットを前記ユーザデバイスの電子ユーザインターフェース(UI)上に表示することと、を含む、非一時的なコンピュータ可読記憶媒体。
【請求項17】
プロセッサを含み、前記プロセッサは、
1つ以上のウェブベースのリポジトリホストシステムにホストされたリポジトリのコレクションから第1のリポジトリセットを識別することであって、
識別することは、人気基準に基づいており、前記リポジトリのコレクション内の各リポジトリは、ソフトウェアコードまたはコードスニペットを含む、ことと、
前記1つ以上のウェブベースリポジトリホストシステムを含む1つ以上のデータソースから、識別された前記第1のリポジトリセットの各リポジトリのリポジトリメタデータを収集することと、
収集された前記リポジトリメタデータに対する1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットを生成することと、
前記1つ以上のデータソースから、生成された前記第1のトピックタグセットの各々に関連付けられた第1の統計セットを収集することと、
識別された前記第1のリポジトリセット、収集された前記リポジトリメタデータ、生成された前記第1のトピックタグセット、および収集された前記第1の統計セットのうちの1つ以上に基づいて、提示データセットを生成することと、
ユーザデバイスを制御して、生成された提示データセットを前記ユーザデバイスの電子ユーザインターフェース(UI)上に表示することと、を行うように構成されている、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示において議論される実施形態は、コードリポジトリおよび関連情報のトレンドモニタリングに関連する。
【背景技術】
【0002】
数年にわたり、さまざまな組織や個人が、様々なオープンソースのイニシアチブを支援することに焦点を当てたコミュニティの作成に貢献してきた。IT(Information Technology)では、このようなイニシアチブは、自由でオープンソースソフトウェア(OSS)プロジェクトを促進するエコシステムを創出することにより、技術への一般のアクセスを改善することを目的としている。このようなエコシステムを作成する理由の一つは、IT産業の一員であるかどうかにかかわらず、OSSプロジェクトの実施や貢献に必要な資源をすべての人が利用できるようにすべきであるということである。何年にもわたって、コミュニティはますます大きくなり、より活発になっている。その結果、ITに関連する様々な技術が急速に開発されている。IT産業の多くの組織にとって、このような開発を追跡することは、ITに関連する様々な技術の開発のペースに追従するために、ビジネス上の緊急性があるか、または業務プロセスの一部となっている。
【0003】
本開示における特許請求の範囲の主題は、何らかの欠点を解決するか、または上記のような環境においてのみ動作する実施形態に限定されない。むしろ、この背景技術は、本明細書で記載されるいくつかの実施形態が実施され得る1つの例示的な技術を示すためにのみ提供されている。
【発明の概要】
【0004】
実施形態の一態様によれば、動作は、1つ以上のウェブベースのリポジトリホストシステムにホストされたリポジトリのコレクションから第1のリポジトリセットを識別することを含んでもよい。識別することは、人気基準に基づいてもよく、リポジトリのコレクション内の各リポジトリは、ソフトウェアコードまたはコードスニペットを含む。動作は、さらに、1つ以上のデータソースから、識別された第1のリポジトリセットの各リポジトリのリポジトリメタデータを収集することを含んでもよい。1つ以上のデータソースは、1つ以上のウェブベースのリポジトリホストシステムを含んでもよい。動作は、収集されたリポジトリメタデータに対する1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットを生成することと、生成された第1のトピックタグセットの各々に関連付けられた第1の統計セットを収集することとをさらに含んでもよい。第1の統計セットは、1つ以上のデータソースから収集されてもよい。動作は、識別された構成されてもよい。第1のリポジトリセット、収集された構成されてもよい。リポジトリメタデータ、生成された構成されてもよい。第1のトピックタグセット、および収集された第1の統計セットのうちの1つ以上に基づいて、提示データセットを生成することをさらに含んでもよい。その後、動作は、ユーザデバイスを制御して、生成された提示データセットをユーザデバイスの電子ユーザインターフェース(UI)上に表示することを含んでもよい。
【0005】
本実施形態の目的および利点は、少なくとも特許請求の範囲において特に指摘された要素、特徴、および組み合わせによって実現され、達成される。
【0006】
上述の一般的記載および下記の発明を実施するための形態は両方とも、例に過ぎず、説明的であり、特許請求の範囲に記載された本発明を限定するものではない。
【図面の簡単な説明】
【0007】
例示的な実施形態は、添付の図面を使用することを通して、追加の具体性および詳細と共に記載および説明される。
【0008】
【
図1】コードリポジトリおよび関連情報のトレンドモニタリングに関連する例示的な環境を示す図である。
【0009】
【
図2】コードリポジトリおよび関連情報のトレンドモニタリングのためのシステムのブロック図である。
【0010】
【
図3】例示的なウェブベースのリポジトリホストシステム上にホストされた例示的なリポジトリの例示的なウェブページを示す図である。
【0011】
【
図4】コードリポジトリおよび関連情報のトレンドモニタリングのための動作セットを示すシステムのブロック図を示す。
【0012】
【
図5A】第1のトピックタグセットの生成のための第1の動作セットを示すブロック図を示す。
【0013】
【
図5B】第1のトピックタグセットの生成のための第2の動作セットを示すブロック図を示す。
【0014】
【
図6】例示的な知識グラフデータベースを示す図である。
【0015】
【
図7A】提示データを表示するための例示的な電子ユーザインターフェースを示す図である。
【0016】
【
図7B】リポジトリモニタリングための例示的な電子ユーザインターフェースを示す図である。
【0017】
【
図7C】人気リポジトリモニタリンのための例示的な電子ユーザインターフェースを示す図である。
【0018】
【
図7D】
図7Cの第6のUI要素に含まれるオプションのリストからの第1のオプションの選択に基づく日常的に人気リポジトリ(ニュースター)のための例示的な電子ユーザインターフェースを示す図である。
【0019】
【
図7E】リンクされたアイテムのコンテンツを表示するための例示的な電子ユーザインターフェースを示す図である。
【0020】
【
図7F】リンクされたアイテムのコンテンツを表示するための例示的な電子ユーザインターフェースを示す図である。
【0021】
【
図7G】UI要素の選択に基づいて履歴データを検索するための例示的な電子ユーザインターフェースを示す図である。
【0022】
【
図8A】提示データを表示するための例示的な電子ユーザインターフェースを示す図である。
【0023】
【
図8B】UI要素の選択に基づくトレンドモニタリングのための例示的な電子ユーザインターフェースを示す図である。
【0024】
【
図8C】UI要素の選択に基づいて人気トピックタグを表示するための例示的な電子ユーザインターフェースを示す図である。
【0025】
【
図8D】UI要素の選択に基づくトレンドモニタリングのための例示的な電子ユーザインターフェースを示す図である。
【0026】
【
図8E】人気リポジトリのためのトピックタグを表示するための例示的な電子ユーザインターフェースを示す図である。
【0027】
【
図8F】日常的に人気リポジトリのトピックタグを表示するための例示的な電子ユーザインターフェースを示す図である。
【0028】
【
図9A】提示データを表示するための例示的な電子ユーザインターフェースを示す図である。
【0029】
【
図9B】リポジトリまたはトピックタグを検索するための例示的な電子ユーザインターフェースを示す図である。
【0030】
【
図10】コードリポジトリおよび関連情報のトレンドモニタリングのための例示的な方法のフローチャートを示す。
【0031】
全て、本開示に記載される少なくとも1つの実施形態による。
【発明を実施するための形態】
【0032】
OSS(Open Source Software)は、現在の業界でますます重要になってきている。GitHubのようなウェブベースのリポジトリホストシステムには、オープンソースソフトウェアを構築し共有するための開発者や組織の大きなコミュニティを有する。OSSの重要性が増すにつれて、OSSの様々な開発およびトレンドをモニタすることが重要になってきている。IT産業の多くの組織にとって、このような開発およびトレンドを追跡することは、ITに関連する様々な技術の開発のペースに追従するために、ビジネス上の緊急性があるか、または業務プロセスの一部となっている。
【0033】
業界では、OSSに関連するいくつかのトレンドを監視するための多くの従来の解決策が存在する。そのような解決策のほとんどは、非常に粗い粒度(少数のドメインに焦点を当てる)で更新を提供する。場合によっては、より遅い更新レート(例えば、1年に1回)でトレンドが利用可能であることがある。例えば、オープンソースソフトウェアのハイプサイクルが毎年公開されており、このハイプサイクルは、対応する年のトレンド/人気オープンソースソフトウェアに関する見解を提供している。OSS関連プロジェクトの開発件数の増加に伴い、OSSプロジェクト/リポジトリをある粒度レベル(個々のOSSプロジェクトに関連する更新/開発の頻度と情報の深さ)でトレンドモニタリングするシステムを開発することが急務となっている。
【0034】
本開示に記載されるいくつかの実施形態は、コードリポジトリおよび関連情報のトレンドモニタリングのための方法および非一時的なコンピュータ可読媒体に関する。リポジトリのコレクションから、システムは、人気基準に基づいてリポジトリセットを識別してもよい。OSSプロジェクトの一部として、各リポジトリは、ソフトウェアコードまたはコードスニペットを含んでもよい。識別中に、リポジトリの短期的な人気と長期的な人気の両方が考慮されてもよい。例えば、システムは、デイリー人気リポジトリ、ウィークリー人気リポジトリ、マンスリー人気リポジトリを識別してもよい。システムは、最近人気が高まった可能性のある古いリポジトリ、人気が高まっている可能性のある新しいリポジトリ、最も好まれているリポジトリ、最も使用された(またはフォーク/ダウンロードされた)リポジトリ、最もアクティブなリポジトリを例えば識別してもよい。
【0035】
システムは、リポジトリ専用の公的にアクセス可能なページから、人間がラベル付けしたトピックタグを抽出してもよい。また、システムは、対応するリポジトリに関連付けられたメタデータに対する自然言語処理に基づく方法を使用することによって、リポジトリに関連付けられたトピックタグを生成してもよい。システムは、人気リポジトリおよびトピックタグに関連する統計を収集してもよい。
【0036】
開示されたシステムは、収集された情報(人気リポジトリ、トピックタグ、トピック/リポジトリメタデータおよび統計など)に基づいて提示データを生成してもよい。その後、システムは、人気リポジトリおよび/または人気トピックタグに関連付けられた提示データを、ユーザデバイスのユーザインターフェース上に表示してもよい。ユーザは、ユーザインターフェースと対話して、人気トピックタグおよび人気リポジトリに関連する様々なトレンドを表示し、個々のリポジトリについて読んで、トピックタグおよびリポジトリの人気に関連する統計を表示することができてもよい。また、ユーザインターフェースは、検索文字列(キーワードまたはフィルタを含み得る)を使用して、ユーザが個々のリポジトリ/トピックタグまたはリポジトリ/トピックタグのグループに対する特定のトレンドまたは情報を取得することを可能にする検索UIを含んでもよい。ユーザインターフェースを使用することにより、開発者、プロジェクトマネージャ、アナリスト、または他の利害関係者のようなユーザは、OSSにおける様々な種類の技術トレンドおよび開発を表示することができる。これは、OSSにおける技術と開発を最新の状態に保つのに役立つことができる。さらに、業界の人気ニーズに応えるために、自社の製品やサービスを再調整するのに役立つことができる。
【0037】
OSSのトレンド監視のための従来のユーザインターフェースは、OSSにおける様々な開発の高レベルの概要を必要とするユーザに焦点を当てている。例えば、多くの従来のユーザインターフェースは、限られた量の情報(詳細や粒度がない)を提示することに焦点を当てている。場合によっては、ユーザインターフェースは、ウェブ開発、機械学習、ビッグデータなど、ごく少数のドメインまたはトピックにしか焦点を当てていない。他の場合によっては、ユーザインターフェースはトレンドについて非常に遅い更新(1ヶ月または1年に1回)を提供する。これらの従来のユーザインターフェースは、開発者、製品マネージャ、またはOSSにおける技術トレンドの詳細な更新を必要とする他の主要な利害関係者など、ユーザに役立ち得る好適な情報および好適なユーザ選択可能なオプションを提供していないことがある。
【0038】
対照的に、本開示は、OSSにおける様々なトレンドおよび開発について探索および読むユーザの能力を向上させることができる、好適な情報およびユーザ選択可能なオプションを提供する電子ユーザインターフェースを提供する。また、ソフトウェアアプリケーションを開発したり、製品やサービスの戦略を構築したり(人気ニーズに応える)、業界が向いている方向に組織の焦点を絞る能力を改善してもよい。電子ユーザインターフェースは、表示されるべき情報のタイプおよび情報がどのように表示されるかを区切ることができる改善されたユーザインターフェースであってもよい。これにより、OSSに関連する様々なリソースを手動で分析して、OSSにおける特定のトレンド/開発を示すレポートを作成することがある個々のアナリストを雇用する必要がなくなることがある。
【0039】
本開示の実施形態は、添付の図面を参照して説明される。
【0040】
図1は、本開示に記載される少なくとも1つの実施形態に従って配置されたコードリポジトリと関連情報のトレンドモニタリングに関連する例示的な環境を表す図である。
図1を参照すると、例示的な環境100が示されている。例示的な環境100では、システム102と、1つ以上のウェブベースのリポジトリホストシステム106および1つ以上の外部データソース108を含み得る1つ以上のデータソース104とが示されている。1つ以上のウェブベースのリポジトリホストシステム106は、リポジトリのコレクション110をホストしてもよい。リポジトリのコレクション110は、例えば、第1のリポジトリ110A、第2のリポジトリ110B、第3のリポジトリ110C、および第Nのリポジトリ110Nを含んでもよい。さらに、ユーザデバイス114、通信ネットワーク116、およびユーザデバイス114のディスプレイ画面上にレンダリングされて電子ユーザインターフェース118が示されている。システム102、1つ以上のデータソース104、およびユーザデバイス114は、通信ネットワーク116を介して互いに通信的に結合されてもよい。
【0041】
さらに、ユーザデバイス114に関連付けられ得るユーザ120が示されている。ユーザデバイス114の例としては、モバイルデバイス、デスクトップコンピュータ、ラップトップ、コンピュータワークステーション、クラウドサーバなどのサーバ、またはサーバのグループを含んでもよいが、これらに限定されない。1つ以上の実施形態において、ユーザデバイス114は、ユーザ端末デバイスと、ユーザ端末デバイスと通信可能に結合されたサーバとを含んでもよい。ユーザ端末デバイスの例としては、モバイルデバイス、デスクトップコンピュータ、ラップトップ、またはコンピュータワークステーションを含んでもよいが、これらに限定されない。
【0042】
1つ以上のデータソース104は、好適な論理、回路、および、リポジトリのコレクション110に関連付けられた情報を記憶するように構成され得るインターフェースを含んでもよい。各リポジトリは、コードスニペット、またはオープンソースソフトウェア(OSS)プロジェクトに関連付けられたソフトウェアコードを含んでもよい。一例として、また限定ではなく、1つ以上のデータソース104の例は、ウェブベースのコードホストサーバ、データベースサーバ、ファイルサーバ、ウェブサーバ、リアルシンプルシンジケーション(RSS)フィード、ウェブサイトをホストするサーバ、およびリポジトリに関連するウェブアプリケーション(ソフトウェアコードまたはスニペットコードを記憶する)を含んでもよいが、これらに限定されない。
【0043】
一実施形態では、1つ以上のデータソース104は、サーバとして実装されてもよく、サーバは、1つ以上の可用性ゾーン(例えば、データセンタ)に分散されたストレージを含んでもよい。一実施形態では、各データソースは、フロントエンドシステムおよびバックエンドシステムを含んでもよい。フロントエンドシステムは、様々なリポジトリに関連付けられた情報を表示するためのインターフェース(例えば、ウェブページまたはウェブアプリケーションのクライアント側インターフェース)を提供するように構成されてもよい。バックエンドシステムは、データベース、論理、および、フロントエンドシステムによって提供されるインターフェース上にコンテンツを表示するための命令を記憶してもよい。
【0044】
一実施形態では、1つ以上のデータソース104は、1つ以上のウェブベースのリポジトリホストシステム106および1つ以上の外部データソース108を含んでもよい。1つ以上のウェブベースのリポジトリホストシステム106は、(リポジトリのコレクション110のような)リポジトリをホストしてもよく、個人および/または組織がウェブベースのインターフェースを介してそのようなリポジトリを管理することを可能にしてもよい。場合によっては、リポジトリホストシステムは、そのようなリポジトリに関連するリポジトリまたはトピックタグの種々のリストを含むウェブページを含んでもよい。各リポジトリは、ソフトウェアコードまたはコードスニペット(OSSプロジェクトの一部として)と、文書、変更ログ、リポジトリの説明を有するreadmeファイル、テスト結果、および1つ以上のリンクまたは参照などのプロジェクト関連ファイルを含んでもよい。ユーザ(ユーザ120を含む)は、ウェブクライアント(例えば、ウェブブラウザ)、コマンドラインインターフェース、またはアプリケーションプログラミングインターフェース(API)呼び出しを介して、リポジトリのコレクション110にアクセスすることができてもよい。
【0045】
各リポジトリについて、1つ以上のウェブベースのリポジトリホストシステム106は、リポジトリ名、リポジトリ位置(例えば、URL(Uniform Resource Locator))、リポジトリの著者名、リポジトリが共有され、閲覧され、ダウンロードされ、または好まれた回数、リポジトリへの貢献者のリスト、ランク、期間内でのリポジトリへの編集または更新のリスト、リポジトリが作成された日時、リポジトリに対する(人間がラベル付けした)トピックタグのリスト、およびリポジトリに含まれるソフトウェアコードを書くために使用されるプログラミング言語などの情報を収集し、公開してもよい。いくつかの例では、1つ以上のウェブベースのリポジトリホストシステム106は、個々の開発者または組織がリポジトリ内のソフトウェアコードまたはコードスニペットのバージョンを追跡することを可能にし得るバージョン制御システム(VCS)を実装してもよい。
【0046】
1つ以上の外部データソース108は、1つ以上のウェブベースのリポジトリホストシステム106上にホストされたリポジトリに関連する情報を記憶するように構成され得る好適な論理、回路、およびインターフェースを含んでもよい。一例として、また限定ではなく、1つ以上の外部データソース108は、リポジトリランキングデータ(例えば、人気リポジトリ)、リポジトリ関連統計、リポジトリのリスト、リポジトリ説明、リポジトリ内でのソフトウェアコードの使用についてのチュートリアル、リポジトリまたはコード関連の議論、および他の情報(例えば、記事、ニュース、または外部文書)のうちの1つ以上を含んでもよい。
【0047】
動作では、システム102は、1つ以上のウェブベースのリポジトリホストシステム106にホストされ得るリポジトリのコレクション110から第1のリポジトリセット112を識別するように構成されてもよい。識別は、人気基準に基づいてもよい。一例として、また限定ではなく、人気基準は、人気タグ(トレンド、人気、最も多くのダウンロード、最も多くの共有、最も多くのウォッチング、最も多くの貢献、最もアクティブなど)および選択ルール(データ/時間ベースのルールなど)を指定してもよい。リポジトリのコレクション110内で、人気タグおよび/または選択ルールのうちの少なくとも1つを満たすリポジトリは、第1のリポジトリセット112を識別してもよい。第1のリポジトリセット112の識別に関する詳細は、例えば、
図4に提供される。
【0048】
第1のリポジトリセット112の識別に基づいて、システム102は、識別された第1のリポジトリセット112の各リポジトリのリポジトリメタデータを収集するように構成されてもよい。システム102は、1つ以上のデータソース104(1つ以上のウェブベースのリポジトリホストシステム106を含む)からリポジトリメタデータを収集してもよい。リポジトリメタデータは、例えば、対応するリポジトリに関連付けられたいいねの数、対応するリポジトリに関連付けられた1つ以上の開発者によってなされる貢献の数、第1のタイプのリポジトリ説明(対応するリポジトリに関する簡単な説明など)、第2のタイプのリポジトリ説明(対応するリポジトリに関する詳細な説明など)などを含んでもよい。一実施形態では、リポジトリメタデータは、1つ以上のデータソース104へのAPI呼び出しセットを使用して、スケジュールの各間隔で定期的に収集されてもよい。リポジトリメタデータに関する詳細は、例えば、
図4に提供される。
【0049】
システム102は、収集された前記リポジトリメタデータに対する1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットを生成するようにさらに構成されてもよい。一実施形態では、識別された第1のリポジトリセット112の各リポジトリに対して、収集されたリポジトリメタデータは、第1のタイプの説明(例えば、短い説明)および第2のタイプの説明(例えば、長い説明)を含んでもよい。第1のタイプ説明と第2のタイプの説明の両方に対して1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットが生成されてもよい。第1のトピックタグセットの各トピックタグは、コンセプト、技術、カテゴリ、意図された目的またはアプリケーション、サブジェクト領域、またはトピックタグに関連付けられたリポジトリ上の他の情報を識別するためのディスクリプタまたはラベルとして作用してもよい。例えば、オブジェクト検出のためのソフトウェアコードを含むリポジトリのためのトピックタグは、画像処理としての第1のトピックタグ、分類としての第2のトピックタグ、オブジェクト検出としての第3のトピックタグ、およびニューラルネットワークフレームワークの名前としての第4のトピックタグを含んでもよい。第1のトピックタグセットの生成に関する詳細は、例えば、
図5Aおよび
図5Bに提供される。
【0050】
第1のトピックタグセットの生成に基づいて、システム102は、生成された第1のトピックタグセットの各々に関連付けられた第1の統計セットを収集するように構成されてもよい。第1の統計セットは、1つ以上のデータソース104から収集されてもよく、例えば、対応するトピックタグに関連付けられたリポジトリのカウント、対応するトピックタグに関連付けられた人気著者セット、対応するトピックタグに関連付けられた人気/アクティブ貢献者セットなどを含んでもよい。
【0051】
システム102は、識別された第1のリポジトリセット、収集されたリポジトリメタデータ、生成された第1のトピックタグセット、および収集された第1の統計セットのうちの1つ以上に基づいて、提示データセットを生成するようにさらに構成されてもよい。一例として、また限定ではなく、提示データセットは、人気リポジトリのリスト、リスト内の各リポジトリに関連する説明および統計のページ、人気トピックタグのリスト、およびそのようなトピックタグに関連する統計を提供するページを含んでもよい。システム102は、生成された提示データセットをユーザデバイス114の電子UI118上に表示するようにユーザデバイス114を制御するように構成されてもよい。提示データセットの生成およびユーザデバイス114の制御に関する詳細は、例えば、
図7A、
図7B、
図7C、
図7D、
図7E、
図7F、
図7G、
図8A、
図8B、
図8C、
図8D、
図8E、
図8F、
図9A、および
図9Bに提供される。
【0052】
システム102と、1つ以上のデータソース104と、ユーザデバイス114との間の通信は、通信ネットワーク116を介して実行されてもよい。通信ネットワーク116は、システム102が1つ以上のデータソース104、ユーザデバイス114、および/または異なるデバイス(図示せず)と通信し得る通信媒体を含んでもよい。通信ネットワーク116の例としては、インターネット、クラウドネットワーク、セルラネットワーク(第4世代LTE(Long-Term Evolution)または第5世代NR(New Radio)など)、Wi-Fi(Wireless Fidelity)ネットワーク、PAN(Personal Area Network)、LAN(Local Area Network)、および/またはMAN(Metropolitan Area Network)を含んでもよいが、これらに限定されない。例示的な環境100内の様々なデバイスは、様々な有線および無線通信プロトコルに従って通信ネットワーク116に接続するように構成されてもよい。そのような有線および無線通信プロトコルの例としては、TCP/IP(Transmission Control Protocol and Internet Protocol )、UDP(User Datagram Protocol)、HTTP(Hypertext Transfer Protocol)、FTP(File Transfer Protocol)、ZigBee、EDGE、IEEE 802.11、Li-Fi(light fidelity)、802.16、IEEE 802.11s、IEEE 802.11g、マルチホップ通信、無線アクセスポイント(AP)、デバイス間通信、セルラ通信プロトコル、および/またはBluetooth(BT)通信プロトコル、またはそれらの組み合わせのうちの少なくとも1つを含んでもよいが、これらに限定されない。
【0053】
本開示の範囲から逸脱することなく、システム102に修正、追加、または省略が行われてもよい。例えば、いくつかの実施形態において、システム102は、明示的に示されるいか、または記載されないことがある任意の数の他のコンポーネントを含んでもよい。
【0054】
図2は、本開示に記載される少なくとも1つの実施形態に従って配置されたコードリポジトリと関連情報のトレンドモニタリングのためのシステムのブロック図である。
図2は、
図1から要素と併せて説明される。
図2を参照して、
図1のシステム102のブロック
図200が示されている。
【0055】
プロセッサ202は、システム102によって実行されるべき異なる動作に関連付けられたプログラム命令を実行するように構成され得る好適な論理、回路、および/またはインターフェースを含んでもよい。プロセッサ202は、様々なコンピュータハードウェアまたはソフトウェアモジュールを含む、任意の適切な特殊目的もしくは汎用コンピュータ、コンピューティングエンティティ、または処理デバイスを含んでもよく、任意の適用可能なコンピュータ可読記憶媒体に記憶された命令を実行するように構成されてもよい。例えば、プロセッサ202は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラム命令を解釈および/または実行する、および/またはデータを処理するように構成されている任意の他のデジタルもしくはアナログ回路を含んでもよい。
図2では単一のプロセッサとして示されているが、プロセッサ202は、個別にまたは集合的に、本開示に記載されるシステム102の任意の数の動作の実行を実行または指示するように構成されている任意の数のプロセッサを含んでもよい。
【0056】
いくつかの実施形態において、プロセッサ202は、メモリ204および/または永続性データストレージ206に記憶されたプログラム命令を解釈および/または実行する、および/またはデータを処理するように構成されてもよい。いくつかの実施形態において、プロセッサ202は、永続性データストレージ206からプログラム命令をフェッチし、メモリ204内にプログラム命令をロードしてもよい。プログラム命令がメモリ204にロードされた後、プロセッサ202は、プログラム命令を実行してもよい。プロセッサ202の例のいくつかは、中央処理ユニット(CPU)、縮小命令セットコンピュータ(RISC)プロセッサ、ASICプロセッサ、複合命令セットコンピュータ(CISC)プロセッサ、グラフィック処理ユニット(GPU)、コプロセッサ、および/またはそれらの組み合わせであってもよい。
【0057】
メモリ204は、プロセッサ202によって実行可能なプログラム命令を記憶するように構成され得る好適な論理、回路、および/またはインターフェースを含んでもよい。特定の実施形態では、メモリ204は、リポジトリのコレクション110および/または第1のリポジトリセット112に関連付けられた情報を記憶するように構成されてもよい。特定の実施形態では、メモリ204は、第1のトピックタグセットおよび/または人間がラベル付けした第2のトピックタグセットを記憶するように構成されてもよい。メモリ204は、それに記憶されたコンピュータ実行可能な命令またはデータ構造を搬送するか、または有するためのコンピュータ可読記憶媒体を含んでもよい。そのようなコンピュータ可読記憶媒体は、プロセッサ202のような汎用または専用コンピュータによってアクセスされ得る任意の利用可能な媒体を含んでもよい。
【0058】
例として、限定ではなく、そのようなコンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的消去可能なプログラマブル読み取り専用メモリ(EEPROM)、コンパクトディスク読み出し専用メモリ(CD-ROM)、もしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージ、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、またはコンピュータ実行可能な命令もしくはデータ構造の形態で特定のプログラムコードを搬送または記憶するために使用されてもよく、汎用もしくは特殊目的のコンピュータによってアクセスされ得る任意の他の記憶媒体を含む有形または非一時的なコンピュータ可読記憶媒体を含んでもよい。上記の組み合わせもまた、コンピュータ可読記憶媒体の範囲内に含まれてもよい。コンピュータ実行可能な命令は、例えば、プロセッサ202に、システム102に関連付けられた特定の動作または動作のグループを実行させるように構成されている命令およびデータを含んでもよい。
【0059】
永続性データストレージ206は、プロセッサ202によって実行可能なプログラム命令を記憶するように構成され得る好適な論理、回路、および/またはインターフェースを含んでもよい。永続性データストレージ206は、それに記憶されたコンピュータ実行可能な命令またはデータ構造を搬送するか、または有するためのコンピュータ可読記憶媒体を含んでもよい。そのようなコンピュータ可読記憶媒体は、プロセッサ202のような汎用または専用コンピュータによってアクセスされ得る任意の利用可能な媒体を含んでもよい。
【0060】
一例として、また限定ではなく、このようなコンピュータ可読記憶媒体は、有形または非一時的なコンピュータ可読記憶媒体であって、光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス(例えば、HDD(Hard-Disk Drive))、フラッシュメモリデバイス(例えば、SSD(Solid State Drive)、SD(Secure Digital)カード、他のソリッドステートメモリデバイス)、またはコンピュータ実行可能命令またはデータ構造の形態で特定のプログラムコードを搬送または記憶するために使用され、汎用または特殊目的のコンピュータによってアクセスされ得る任意の他の記憶媒体を含んでもよい。上記の組み合わせもまた、コンピュータ可読記憶媒体の範囲内に含まれてもよい。コンピュータ実行可能な命令は、例えば、プロセッサ202に、システム102に関連付けられた特定の動作または動作のグループを実行させるように構成されている命令およびデータを含んでもよい。
【0061】
I/Oデバイス208は、1つ以上のユーザ入力を受信するように構成され得る好適な論理、回路、インターフェース、および/またはコードを含んでもよい。I/Oデバイス208は、1つ以上のユーザ入力に応答して出力を提供するようにさらに構成されてもよい。I/Oデバイス208は、プロセッサ202およびネットワークインターフェース212などの他のコンポーネントと通信するように構成され得る様々なI/Oデバイスを含んでもよい。入力デバイスの例としては、タッチスクリーン、キーボード、マウス、ジョイスティック、および/またはマイクロホンを含んでもよいが、これらに限定されない。出力デバイスの例としては、ディスプレイデバイス210およびスピーカを含んでもよいが、これらに限定されない。
【0062】
ディスプレイデバイス210は、好適な論理、回路、インターフェース、および/または、電子UI118をディスプレイデバイス210のディスプレイ画面にレンダリングするように構成され得るコードを含んでもよい。1つ以上の実施形態では、ユーザ(ユーザ120など)からの1つ以上のユーザ入力は、ディスプレイデバイス210を介して直接受信されてもよい。このような場合、ディスプレイデバイス210のディスプレイ画面は、1つ以上のユーザ入力を受信するためのタッチスクリーンであってもよい。ディスプレイデバイス210は、LCD(Liquid Crystal Display)、LED(Light Emitting Diode)、プラズマディスプレイ、および/または有機LED(OLED)ディスプレイ技術、および/または他のディスプレイ技術などであるが、これらに限定されないいくつかの既知の技術を介して実現されてもよい。さらに、いくつかの実施形態では、ディスプレイデバイス210は、スマートガラスデバイスのディスプレイ画面、3Dディスプレイ、シースルーディスプレイ、投影ベースのディスプレイ、エレクトロクロミックディスプレイ、および/または透明ディスプレイを指してもよい。
【0063】
ネットワークインターフェース212は、通信ネットワーク116を介してシステム102、1つ以上のデータソース104、およびユーザデバイス114間の通信を確立するように構成され得る好適な論理、回路、インターフェース、および/またはコードを含んでもよい。ネットワークインターフェース212は、通信ネットワーク116を介してシステム102の有線または無線通信をサポートするために、様々な既知の技術の使用により実装されてもよい。ネットワークインターフェース212は、アンテナ、無線周波数(RF)トランシーバ、1つ以上の増幅器、チューナ、1つ以上の発振器、デジタル信号プロセッサ、コーダデコーダ(CODEC)チップセット、加入者識別モジュール(SIM)カード、および/またはローカルバッファを含んでもよいが、これらに限定されない。
【0064】
ネットワークインターフェース212は、インターネット、イントラネット、および/またはセルラ電話ネットワーク、無線ローカルエリアネットワーク(LAN)、および/または大都市エリアネットワーク(MAN)などの無線ネットワークと無線通信を介して通信してもよい。無線通信は、GSM(Global System for Mobile Communications)、EDGE(Enhanced Data GSM Environment)、W-CDMA(wideband code division multiple access)、LTE(Long Term Evolution)、CDMA(code division multiple access)、TDMA(time division multiple access)、Bluetooth、Wi-Fi(Wireless Fidelity)(IEEE 802.11a、IEEE 802.11b、IEEE 802.11gおよび/またはIEEE 802.11nなど)、VoIP、Li-Fi(light fidelity)、またはWi-MAXなどの複数の通信規格、プロトコルおよび技術のいずれを使用してもよい。
【0065】
【0066】
図3は、本開示に記載された少なくとも1つの実施形態による、例示的なウェブベースのリポジトリホストシステム上にホストされた例示的なリポジトリの例示的なウェブページを示す図である。
図3は、
図1および
図2の要素と併せて説明される。
図3を参照すると、電子UI300が示されている。
【0067】
例示的な電子UI300には、第1のUI要素302、第2のUI要素304、第3のUI要素306、第4のUI要素308、および第5のUI要素310などのUI要素セットが示されている。
図3において、第1のUI要素302は、リポジトリの名前を含んでもよい。図示のように、リポジトリの名前は「AbcLint」である。
【0068】
第2のUI要素304は、例えば、「短い説明」としてラベル付けされてもよく、短い説明テキストボックス304Aを含んでもよい。短い説明テキストボックス304Aは、ユーザ120(リポジトリの著者であってもよい)が、リポジトリに関する短い説明または簡単な要約を入力することができるテキストボックスであってもよい。一実施形態では、短い説明テキストボックス304Aの内容は、第1のタイプのリポジトリ説明と呼ばれてもよい。
【0069】
第3のUI要素306は、例えば「Topic Tags」としてラベル付けされてもよく、トピックタグテキストボックス306Aを含んでもよい。トピックタグテキストボックス306Aは、ユーザ120が例示的なリポジトリに関連付けられたタグセットを入力し得るテキストボックスであってもよい。一実施形態では、トピックタグテキストボックス306Aの内容は、人間がラベル付けした第2のトピックタグセット((例えば、
図1で生成された)第1のトピックタグセットとは異なってもよい)と呼ばれてもよい。
【0070】
第4のUI要素308は、例えば「Readme」としてラベル付けされてもよく、readmeテキストボックス308Aを含んでもよい。Readmeテキストボックス308Aは、ユーザ120がリポジトリに関する詳細な説明を入力することができるテキストボックスであってもよい。一例として、または限定ではなく、Readmeテキストボックス308A内の内容は、以下の質問に対する回答を含んでもよい。リポジトリは何のために使用されるのですか?リポジトリはなぜ有用なのですか?リポジトリ内のソフトウェアコードを使用することから始めるには、どのようにすればよいですか?リポジトリ内のソフトウェアコードを実装する際に、利用者に役立つリンクやリソースは何ですか?リポジトリを維持し、それに貢献するのは誰ですか?readmeテキストボックス308Aの内容は、第2のタイプのリポジトリ説明と呼ばれてもよい。
【0071】
第5のUI要素310は、例えば、「ソフトウェアコードまたはコードスニペット」としてラベル付けされてもよく、コードテキストボックス310Aを含んでもよい。コードテキストボックス310Aは、テキストボックスであってもよく、このテキストボックスを使用して、ユーザ120は、リポジトリ内のOSSプロジェクトのためのソフトウェアコードまたはコードのスニペットを含んでもよい。リポジトリのコレクション110の各リポジトリは、名前を有してもよく、第1のタイプのリポジトリ説明、第2のタイプのリポジトリ説明、人間がラベル付けした第2のトピックタグセット、およびソフトウェアコード(またはコードスニペット)を1つ以上のファイルに記憶してもよい。
【0072】
図4は、例示的な実施形態に従って、コードリポジトリおよび関連情報のトレンドモニタリングのための動作セットを示すシステムのブロック図を示す。
図4は、
図1、
図2および
図3の要素と併せて説明される。
図4を参照すると、例示的な動作セット400が示されている。ブロック図に示された例示的な動作は、
図1のシステム102または
図2のプロセッサ202など、任意のコンピューティングシステムまたはデバイスによって実行されてもよい。
【0073】
402Aでは、人気リポジトリ識別動作が実行されてもよい。そのような動作では、プロセッサ202は、1つ以上のウェブベースのリポジトリホストシステム106にホストされたリポジトリのコレクション110から第1のリポジトリセット112を識別するように構成されてもよい。第1のリポジトリセットは、人気基準に基づいて識別されてもよい。一実施形態では、リポジトリのコレクション110から、期間内でトレンドまたは人気として分類されたリポジトリが第1のリポジトリセット110として識別されてもよい。別の実施形態では、第1のリポジトリセットは、1つ以上の人気タグ(「最も使用された」リポジトリ、「最もスターの付いた」リポジトリ、「最もアクティブな」リポジトリなど)に関連付けられたリポジトリであってもよい。
【0074】
第1のリポジトリセット112を識別するために、プロセッサ202は、1つ以上の検索パラメータに基づいて複数のクエリ文字列を生成するように構成されてもよい。1つ以上の検索パラメータは、ピリオドフィルタ、間隔フィルタ、または人気基準で指定された1つ以上の人気タグのうちの少なくとも1つを含んでもよい。ピリオドフィルタを使用して、期間(先月以降、先週以降、あるいは最後の日付以降など)に人気リポジトリを識別してもよい。間隔フィルタを使用して、間隔内の人気リポジトリ(2つの日付または2つのタイムスタンプなど)を識別してもよい。1つ以上の人気タグを使用して、上位N個の最もよく使用されたリポジトリ、上位N個の最もスターの付いたリポジトリ、上位N個の最も共有されたリポジトリ、上位N個の最も貢献されたリポジトリなどの人気リポジトリを識別してもよい。ここで、Nは、0以外の整数であってもよい。
【0075】
複数のクエリ文字列の生成後、生成された複数の問合せ文字列の各クエリ文字列は、1つ以上のデータソース104上にホストされたウェブページの対応するURL(uniform resource locator)に付加されてもよい。いくつかの実施形態では、1つ以上のクエリ文字列を、1つ以上の外部データソース108上にホストされたウェブページの対応する均一URL(uniform resource locator)に付加してもよい。
【0076】
プロセッサ202は、生成された複数のクエリ文字列(URLに付加される)を使用して1つ以上のデータソース104を照会して、第1の複数のテーブルを生成するように構成されてもよい。生成された第1の複数のテーブルの各々は、1つ以上の人気タグに関連付けられたリポジトリをリストしてもよい。生成された第1の複数のテーブルの各々にリストされたリポジトリは、識別された第1のリポジトリセットに含まれてもよい。
【0077】
一例として、また限定ではないが、第1のデータソースのURLを使用して、上位のトレンドリポジトリを識別するために、複数のクエリ文字列は、「/trending?since=daily」、「/trending?since=weekly」、および「/trending?since=monthly」を含んでもよい。第2のデータソースのURLを使用してトレンドリポジトリを識別するために、複数のクエリ文字列は、「/search?from=last-week&topic=stars%3A%3E0」および「/search?from=last-week&topic=stars%3A%3E0」を含んでもよい。第3のデータソースのURLを使用してトレンドリポジトリを識別するために、複数のクエリ文字列は、「/top/wanted/solid/1」、「/top/stars/solid/1」、「/top/stars/rising/1」、および「top/wanted/rising/1」を含んでもよい。トレンドリポジトリを識別するために、リポジトリの変更ログをホストしているウェブサイトでは、クエリ文字列が、検索パラメータとして「/YYYY/MM/DD」形式の日付を含んでもよい。
【0078】
一実施形態では、1つ以上のデータソース104を照会した後、システム102は、クエリに応答して受信され得るウェブページからデータを抽出するために、ウェブクローリング法またはウェブスクレーピング法を実行してもよい。第1の複数のテーブルは、抽出されたデータに基づいて生成されてもよい。生成された第1の複数のテーブルの各テーブルは、タイムスタンプおよびリポジトリのリストを含んでもよい。一例として、また限定ではないが、第1の複数のテーブルは、デイリートレンドテーブルおよびマンスリートレンドテーブルを含んでもよい。デイリートレンドテーブルの例を以下のように表1に提示する。
【表1】
マンスリートレンドテーブルの例を以下のように表2に提示する。
【表2】
【0079】
生成された第1の複数のテーブルの各々は、1つ以上の更新ルールに基づいて定期的に更新されてもよい。例えば、デイリートレンドテーブルの更新ルールは、デイリートレンドテーブルが、1つ以上のデータソース104をクエリ文字列(日付または期間に固有の検索パラメータで)を使用して照会することによって、日ベースで更新されることを必要としてもよい。同様に、マンスリートレンドテーブルの更新ルールは、マンスリートレンドテーブルが、1つ以上のデータソースをクエリ文字列(日時に固有の検索パラメータ)を使用して照会することによって、各月の特定の日時(例えば、各月の1日の10:00AM)で更新されることを必要としてもよい。一実施形態では、更新ルールは、生成された第1の複数のテーブルの各々に対して異なってもよい。別の実施形態では、更新ルールは、生成された第1の複数のテーブルの各々に対して同じであってもよい。
【0080】
一実施形態では、生成された第1の複数のテーブルは、最も多いニュースターまたはいいねを有するデイリー人気リポジトリのためのテーブル、最も多いフォークまたはダウンロードを有するデイリー人気リポジトリのためのテーブル、新しいアクティビティを有するデイリー人気リポジトリのためのテーブル、最も多いニュースターまたはいいねを有するリポジトリを有するウィークリー人気リポジトリのためのテーブル、最も多いフォークまたはダウンロードを有するウィークリー人気リポジトリのためのテーブル、最も新しいアクティビティを有するマンスリー人気リポジトリのためのテーブル、最も多いニュースターまたはいいねを有するリポジトリを有するマンスリー人気リポジトリのためのテーブル、最も多いフォークまたはダウンロードを有するマンスリー人気リポジトリのためのテーブル、最も新しいアクティビティを有するマンスリー人気リポジトリのためのテーブル、最近人気を得た新しいリポジトリのためのテーブル(毎日更新)、最近人気を得ただけの古いリポジトリのためのテーブル(毎日更新)、最もスターの付いたリポジトリのためのテーブル、最もフォークされたリポジトリのためのテーブル、および最もアクティブなリポジトリのためのテーブルを含んでもよい。
【0081】
第1の複数のテーブルの生成後、プロセッサ202は、生成された第1の複数のテーブルをウォッチリストテーブルにマージするように構成されてもよい。ウォッチリストテーブルの各レコードは、リポジトリ名または識別子(リポジトリURLなど)およびリポジトリ名または識別子が発生する1つ以上のテーブルの名前を含んでもよい。ウォッチリストテーブルにリストされたリポジトリは、識別された第1のリポジトリセット112と呼ばれてもよい。ウォッチリストテーブルの例を以下のように表3に提示する。
【表3】
【0082】
別の実施形態では、プロセッサ202は、1つ以上のデータソース104への第1のアプリケーションプログラミングインターフェース呼び出しセットを使用して、リポジトリのリストを抽出するように構成されてもよい。第1のAPI呼び出しセットの各API呼び出しは、1つ以上の検索パラメータを含んでもよい。1つ以上の検索パラメータは、ピリオドフィルタ、間隔フィルタ、または人気基準で指定された1つ以上の人気タグのうちの少なくとも1つを含んでもよい。
【0083】
プロセッサ202は、第1の基準に基づいてリポジトリの抽出されたリストをフィルタリングするように構成されてもよい。第1の基準は、人気タグのカウントに関連付けられたリポジトリのリストを抽出するための第1のルール(最近1週間に最も使用された(またはフォークされた)リポジトリ、または最近1ヵ月に最もスターの付いたリポジトリなど)に対応してもよい。プロセッサ202は、フィルタリングされたリポジトリのリストを使用して、第2の複数のテーブルを取り込む(populate)ように構成されてもよい。第2の複数のテーブルは、1つ以上の人気タグに従って取り込まれてもよい。一例として、また限定ではないが、第2の複数のテーブルは、最も使用された(またはフォークされた)リポジトリテーブルを含んでもよい。最も使用された(またはフォークされた)リポジトリの例示的なテーブルを以下のように表4に提示する。
【表4】
第2の複数のテーブルはまた、最もスターの付いたリポジトリのテーブルを含んでもよい。最もスターの付いたリポジトリの例示的なテーブル以下のように表5に提示する。
【表5】
【0084】
生成された第2の複数のテーブルの各々は、1つ以上の更新ルールに基づいて定期的に更新されてもよい。例えば、更新ルールは、毎日、毎週、または任意の特定の期間において、生成された第2の複数のテーブルの各々を定期的に更新することを必要としてもよい。一実施形態では、更新ルールは、生成された第2の複数のテーブルの各々に対して同じであってもよい。別の実施形態では、更新ルールは、生成された第2の複数のテーブルの各々に対して異なってもよい。
【0085】
プロセッサ202は、生成された第2の複数のテーブルをウォッチリストテーブルにマージするように構成されてもよい。ウォッチリストテーブルの各レコードは、リポジトリ名または識別子と、リポジトリ名または識別子が発生する生成された第1の複数のテーブルおよび生成された第2の複数のテーブルのうちの1つ以上の名前とを含んでもよい。ウォッチリストテーブルにリストされたリポジトリは、識別された第1のリポジトリセット112と呼ばれてもよい。ウォッチリストテーブルの例を以下のように表6に提示する。
【表6】
【0086】
一実施形態では、ウォッチリストテーブルは、予め設定された更新命令に基づいて定期的に更新されてもよい。例えば、ウォッチリストテーブルは、特定の時間(例えば、11:00PM)に毎日更新されてもよい。別の実施形態では、生成された第1の複数のテーブルまたは生成された第2の複数のテーブルのうちの少なくとも1つが更新されるときはいつでも、ウォッチリストテーブルが更新されてもよい。
【0087】
402Bでは、統計収集動作が実行されてもよい。メタデータ収集動作において、プロセッサ202は、(ウォッチリストテーブルにリストされている)識別された第1のリポジトリセット112の各リポジトリに対してリポジトリメタデータを収集するように構成されてもよい。リポジトリメタデータは、1つ以上のデータソース104から収集されてもよい。一実施形態では、リポジトリメタデータは、1つ以上のウェブベースのリポジトリホストシステム106から収集されてもよい。別の実施形態では、リポジトリメタデータは、1つ以上の外部データソース108(1つ以上のウェブベースのリポジトリホストシステム106とは異なってもよい)から収集されてもよい。
【0088】
一実施形態では、識別された第1のリポジトリセットの各リポジトリのリポジトリメタデータは、1つ以上のデータソース104への第2のAPI呼び出しセットを使用することによって収集されてもよい。各リポジトリについて、収集されたリポジトリメタデータは、例えば、リポジトリ名、対応するリポジトリのホームページのURL(第1のウェブベースのリポジトリホストシステムでホストされる)、ソフトウェアコードまたはコードスニペット(対応するリポジトリに含まれる)が書かれるプログラミング言語、対応するリポジトリに関連付けられたライセンス情報、対応するリポジトリに関連付けられたブランチカウント、対応するリポジトリに関連付けられたコミットカウント、対応するリポジトリに関連付けられた貢献者カウント、対応するリポジトリに関連付けられたパッケージカウント、対応するリポジトリに関連付けられたフォークカウント、対応するリポジトリに関連付けられた問題、対応するリポジトリに関連付けられたマイルストーンカウント、対応するリポジトリに関連付けられたプルリクエストの数、対応するリポジトリに関連付けられたリリースカウント、対応するリポジトリに関連付けられたスターカウント、対応するリポジトリに関連付けられたウォッチャーカウント、対応するリポジトリに関連付けられた作成タイムスタンプ、対応するリポジトリに関連付けられた最後に更新されたタイムスタンプ、対応するリポジトリに関連付けられた第2の人間がラベル付けしたトピックタグセット、第1のタイプのリポジトリ説明(短い説明)、第2のタイプのリポジトリ説明(長い説明)などを含んでもよい。リポジトリメタデータは、スケジュールの各間隔で定期的に収集されてもよい。例えば、リポジトリメタデータは、毎日または他の期間(例えば、週、隔週、月など)で更新されてもよい。
【0089】
402Cでは、リポジトリデータテーブル生成動作が実行されてもよい。プロセッサ202は、複数のリポジトリデータテーブルを生成するように構成されてもよい。複数のリポジトリデータテーブルの各々は、識別された第1のリポジトリセット112の対応するリポジトリに対する収集されたリポジトリメタデータに基づいて生成されてもよい。生成後、リポジトリデータテーブルは、識別された第1のリポジトリセット112の各リポジトリ(すなわち、ウォッチリストテーブル内の各リポジトリ)に対して存在してもよい。各リポジトリデータテーブルは、特定のスキーマに従って関連付けられたリポジトリの収集されたリポジトリメタデータを含んでもよい。第1のリポジトリのリポジトリデータテーブルの例示的なレポジトリデータテーブルが、以下のように表7に提示される。
【表7】
【0090】
402Dでは、トピックタグ生成動作が実行されてもよい。プロセッサ202は、識別された第1のリポジトリセット112の各リポジトリに対して第1のトピックタグセットを生成するように構成されてもよい。各トピックタグは、例えば、技術、特定の概念またはテーマ、意図された目的、プログラミング言語、名前付きエンティティ、または主題/研究領域を示してもよい。一実施形態では、収集されたリポジトリメタデータに対する1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットが生成されてもよい。具体的には、リポジトリごとに、第1のタイプのリポジトリ説明および第2のタイプのリポジトリ説明((402Cで生成された)リポジトリデータテーブル)を使用して、第1のトピックタグセットを生成してもよい。
【0091】
第1のタイプのリポジトリ説明は、リポジトリに関する簡単な要約を含んでもよいが、第2のタイプのリポジトリ説明は、リポジトリに関する詳細な説明(例えば、いくつかの段落)を含んでもよい。例えば、第1のタイプのリポジトリ説明は、リポジトリとその機能を数文で紹介してもよい。第2のタイプのリポジトリ説明は、readmeファイルであってもよく、これは、リポジトリ内のソフトウェアコードの特定のユースケース、リポジトリの有用性、リポジトリ内のソフトウェアコードの実装方法または開始方法、ソフトウェアコードの実装中に直面する問題に役立ち得るリンクまたはリソース、およびリポジトリの貢献者および著者についての情報などの詳細が含んでもよい。第1のタイプのリポジトリ説明および第2のタイプのリポジトリ説明からの第1のトピックタグセットの生成に関するさらなる詳細は、例えば、
図5A~5Bで提供される。
【0092】
402Eでは、トピックタグ収集動作を実行されてもよい。プロセッサ202は、リポジトリのコレクション110に関連付けられた人間がラベル付けした第2のトピックタグセットを収集するように構成されてもよい。リポジトリごとに、例えば、トピックタグテキストボックス306Aを使用して、対応するリポジトリの著者によって、人間がラベル付けしたトピックタグが追加されてもよい。人間がラベル付けした第2のトピックタグは、対応するリポジトリに関連付けられた収集されたリポジトリメタデータ(402Bおよび402Cに記載)から収集されてもよい。一実施形態では、人間がラベル付けした第2のトピックタグセットは、1つ以上のデータソース104への第3のAPI呼び出しセットを使用すること、または1つ以上のデータソース104上にホストされたウェブページ上のウェブスクレーピング法を使用することに基づいて収集されてもよい。
【0093】
402Fでは、トピックタグメタデータ収集動作を実行することができる。プロセッサ202は、生成された第1のトピックタグセットおよび収集された人間がラベル付けした第2のトピックタグセットの各々に関連付けられたトピックタグメタデータ(またはトピックメタデータ)を収集するように構成されてもよい。一実施形態では、トピックタグメタデータは、1つ以上のデータソース104への第4のAPI呼び出しセットを使用すること、または1つ以上のデータソース104上にホストされたウェブページ上のウェブスクレーピング法を使用することによって、1つ以上のデータソース104から収集されてもよい。収集されたトピックタグのメタデータは、例えば、対応するトピックタグに関連付けられた名前、対応するトピックタグに関連付けられたトピックURL、対応するトピックタグに関連付けられたロゴ、対応するトピックタグに関連付けられた1つ以上の関連トピックタグ名、対応するトピックタグに関連付けられたリリース日付、対応するトピックタグに関連付けられた短い説明などを含んでもよい。
【0094】
一実施形態では、プロセッサ202は、収集されたトピックメタデータに基づいて複数のトピックタグデータテーブルを生成するように構成されてもよい。具体的には、プロセッサ202は、生成された第1のトピックタグセットおよび収集された人間がラベル付けした第2のトピックタグセットにおける各トピックタグに対してトピックデータテーブルを生成するように構成されてもよい。各トピックタグデータテーブルは、関連付けられたトピックタグのために収集されたトピックメタデータを含んでもよい。一例として、また限定ではないが、第1のトピックタグに対して生成された複数のトピックタグデータテーブルの第1のトピックタグデータテーブルを以下のように表8に提示する。
【表8】
【0095】
402Gでは、知識グラフデータベース生成動作が実行されてもよい。プロセッサ202は、収集されたトピックメタデータ、生成されたトピックタグセット、および収集された人間がラベル付けした第2のトピックタグセットに基づいて知識グラフデータベースを生成するように構成されてもよい。知識グラフデータベースは、例えば、オブジェクト、イベント、技法、技術、概念などを表し得る相互にリンクされたエンティティの集合を表してもよい。知識グラフデータベースは、収集されたトピックメタデータ、生成されたトピックタグセット、および収集された人間がラベル付けした第2のトピックタグセットを、リンクおよび意味メタデータを介してコンテキストに置いてもよい。また、知識グラフデータベースは、データ統合、統一、分析、キーワードベースの検索、およびデータ共有のためのフレームワークを提供してもよい。知識グラフデータベースの一例が、例えば、
図6に提供される。
【0096】
402Hでは、統計収集動作が実行されてもよい。プロセッサ202は、生成された第1のトピックタグセットの各々に関連付けられた第1の統計セット、および人間がラベル付けした第2のトピックタグセットの各トピックタグに関連付けられた第2の統計セットを収集するように構成されてもよい。第1の統計セットおよび第2の統計セットは、1つ以上の検索文字列を使用して1つ以上のデータソース104に照会することによって収集されてもよい。第1の統計セットおよび第2の統計セットは、例えば、各トピックタグに関連付けられたリポジトリの数および第1のトピックセットおよび人間がラベル付けした第2のトピックタグセットの各々に関連付けられたトピックタグURLを含んでもよい。第1の統計セットおよび第2の統計セットの他の例は、対応するトピックタグに関連付けられたスターまたはいいねの数、対応するトピックタグに関連付けられた上位著者の名前、対応するトピックタグに関連付けられた上位貢献者の名前、および対応するトピックタグに関連付けられたリポジトリに積極的に貢献する上位組織の名前を含んでもよいが、これらに限定されない。
【0097】
収集された第2の統計セットに基づいて、プロセッサ202は、第1のトピックテーブルを生成するように構成されてもよく、第1のトピックテーブルは、人間がラベル付けした第2のトピックセットおよび収集された第2の統計セットをリストしてもよい。一例として、また限定ではないが、第1のトピックテーブルを以下のように表9に示す。
【表9】
【0098】
一実施形態では、プロセッサ202は、収集された第1の統計セットに基づいて、第2のトピックテーブルを生成するようにさらに構成されてもよい。第2のトピックテーブルは、生成された第1のトピックタグセット(マシンが生成)、対応するURLの各々、および異なる日付/タイムスタンプで各トピックタグに関連付けられたリポジトリの数を含んでもよい。
【0099】
一実施形態では、プロセッサ202は、1つ以上のウェブベースリポジトリホストシステム106上に記憶されたトピックタグのコレクションから第1のトピックタグセットを識別するように構成されてもよい。第1のトピックタグセットの識別は、第1の人気基準に基づいてもよい。第1のトピックタグセットの各トピックタグに関連付けられたリポジトリの数は、しきい値を超えていてもよい。例えば、第1のトピックタグセットは、上位10個のトピックタグを含んでもよく、各々、少なくとも100個のリポジトリ(すなわち、閾値)に関連付けられる。第1のトピックタグセットの識別に基づいて、プロセッサ202は、トピックタグトレンドテーブルを生成するように構成されてもよい。トピックタグトレンドテーブルは、(スケジュールに従って)間隔ごとに更新されてもよいトピックトレンドテーブルは、第1のトピックタグセット、トピックタグの対応するURL、およびスケジュールの各間隔で対応するトピックタグに関連付けられたリポジトリの数を含んでもよい。一例として、また限定ではないが、トピックトレンドテーブルを以下のように表10に示す。
【表10】
【0100】
402Iでは、提示データ生成動作が実行されてもよい。プロセッサ202は、識別された第1のリポジトリセット、収集されたリポジトリメタデータ、生成された第1のトピックタグセット、収集された第1の統計セット、および収集された第2の統計セットのうちの1つ以上に基づいて、提示データセットを生成するように構成されてもよい。例えば、提示データは、グラフィック表現(グラフまたはチャートなど)、および/または、識別された第1のリポジトリセットおよびトピックタグ(マシン生成および/または人間がラベル付け)に関連付けられたデータのテキスト表現を含んでもよい。一実施形態では、提示データセットは、ウォッチリストテーブル(第1の複数のテーブルおよび/または第2の複数のテーブルに基づく)、複数のリポジトリデータテーブル、トピックテーブル、およびトピックタグトレンドテーブルに基づいて生成されてもよい。実施形態では、提示データは、生成された知識グラフデータベースに基づいて生成されてもよい。
【0101】
402Jでは、提示データレンダリング動作が実行されてもよい。レンダリング動作では、プロセッサ202は、生成された提示データセットをユーザデバイス114の電子UI118上に表示するようにユーザデバイス114を制御するように構成されてもよい。
【0102】
【0103】
図5Aは、例示的な実施形態に従って、第1のトピックタグセットの生成のための第1の動作セットを示すブロック図を示す。
図5Aは、
図1、
図2、
図3および
図4の要素と併せて説明される。
図5Aを参照すると、例示的な動作セット500Aが示されている。ブロック図に示された例示的な動作は、
図1のシステム102または
図2のプロセッサ202など、任意のコンピューティングシステムによって実行されてもよい。
【0104】
502Aでは、第1のテキスト抽出動作が実行されてもよい。第1のテキスト抽出動作では、プロセッサ202は、(例えば、
図4のリポジトリデータテーブル内の)第1のタイプのリポジトリ説明に含まれる第1のテキストを抽出するように構成されてもよい。第1のタイプのリポジトリ説明は、リポジトリ(またはリポジトリに含まれるソフトウェアコード)に関する短い説明または簡単な要約を含んでもよい。一例として、また限定ではなく、名前「AbcLint」を有するリポジトリの抽出された第1のテキストは、「Find and fix problems in your JavaScript code」であってもよい。
【0105】
502Bでは、テキスト正規化動作が実行されてもよい。プロセッサ202は、抽出された第1のテキストに対してテキスト正規化動作を実行して第1の正規化テキストを生成するように構成されてもよい。テキスト正規化動作は、停止ワード、シンボル、特殊文字、HTMLタグ、URL、および抽出された第1のテキストの前後のスペースを除去するために実行されてもよい。いくつかの実施形態では、テキスト正規化動作はまた、ステミングおよびレンマ化動作を含んでもよい。ステミング動作は、抽出された第1のテキストのワードの変形を根本的な形式にまで低減するプロセスに対応してもよい。一例として、また限定ではなく、ステミングの処理中、「troubles」や「troubled」のようなワードは、「trouble」に低減されてもよい。別の例として、「connect」、「connected」、「connection」、「connections」、「connects」のようなワードは、ステミング中に「connect」に低減されてもよい。同様に、レンマ化動作は、ワードの異なる変形形式をまとめてグループ化して、それらを単一のアイテムとして分析され得るようにするプロセスに対応してもよい。一例として、また限定ではなく、レンマ化の処理中、「rocks」のようなワードは、「rock」に低減されてもよい。別の例として、ワード「corpora」は、「corpus」に低減されてもよい。
【0106】
502Cでは、名詞句抽出動作が実行されてもよい。プロセッサ202は、第1の正規化テキストから名詞句セットを抽出するように構成されてもよい。名詞句セットは、第1の正規化テキストに対して1つ以上の自然言語処理ベースの方法を使用することによって、抽出されてもよい。1つ以上の自然言語処理ベースの方法の例は、TF-IDF(term frequency-inverse document frequency)法、bag -of-words法、Nグラム同時発生法、RAKE(rapid automatic keyword extraction)法、条件付きランダムフィールド法、他のグラフベースの方法、または機械学習ベースの方法を含んでもよいが、これらに限定されず、これらは全て電子的に実装されてもよい。
【0107】
502Dでは、トピックタグ生成動作が実行されてもよい。プロセッサ202は、抽出された名詞句セットから第1のトピックタグセットを生成するように構成されてもよい。第1のトピックタグセットを生成するために、プロセッサ202は、抽出された名詞句セットから名詞句の1つ以上の重複インスタンスを除去することによって、抽出された名詞句セットを更新するように構成されてもよい。更新された名詞句セットは、第1のトピックタグセットのトピックタグとして含まれてもよい。
【0108】
図5Bは、例示的な実施形態に従って、第1のトピックタグセットの生成のための第2の動作セットを示すブロック図を示す。
図5Bは、
図1、
図2、
図3、
図4、および
図5Aの要素と併せて説明される。
図5Bを参照すると、例示的な動作セット500Bが示されている。ブロック図に示された例示的な動作は、
図1のシステム102または
図2のプロセッサ202など、任意のコンピューティングシステムによって実行されてもよい。
【0109】
504Aでは、第2のテキスト抽出動作が実行されてもよい。プロセッサ202は、(例えば、
図4のリポジトリデータテーブル内の)第2のタイプのリポジトリ説明に含まれる第2のテキストを抽出するように構成されてもよい。第2のタイプのリポジトリ説明は、readmeファイルの形式でリポジトリに関する長い説明であってもよい。一例として、または限定ではなく、名前「AbcLint」を有するリポジトリに対して抽出された第2のテキストは、「AAbcLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code. In many ways, it is similar to JSLint and JSHint with a few exceptions: AbcLint uses Aspree for JavaScript parsing, AbcLint uses an AST to evaluate patterns in code, and AbcLint is completely pluggable, every single rule is a plugin and you can add more at runtime...」であってもよい。
【0110】
504Bでは、テキスト正規化動作が実行されてもよい。プロセッサ202は、抽出された第2のテキストに対してテキスト正規化動作を実行して第2の正規化テキストを生成するように構成されてもよい。テキスト正規化動作は、停止ワード、シンボル、特殊文字、HTMLタグ、URL、および抽出された第2のテキストの前後のスペースを除去するために実行されてもよい。いくつかの実施形態では、テキスト正規化動作はまた、ステミングおよびレンマ化動作を含んでもよい(例えば、
図5Aにおいて議論されたように)。
【0111】
504Cでは、キーワード抽出動作が実行されてもよい。プロセッサ202は、第2の正規化テキストに対して機械学習ベースのトピックモデリング方法を適用することにより、第2の正規化テキストからキーワードのグループを抽出するように構成されてもよい。前記機械学習ベースのトピックモデリング方法は、1つ以上の自然言語処理ベースの方法のうちの1つであってもよい。
【0112】
いくつかの実施形態では、トピックモデリングは、第2正規化テキスト内から特定のトピックに属するキーワードを論理的に選択するプロセスを指してもよい。トピックモデリング方法を使用する利点は、そのような方法がスーパバイズされていない機械学習技法に依存してもよいことである。トピックモデリング方法は、事前にトピックタグを定義したり、データをトレーニングしたりする必要なく、パターンを推論し、類似した表現をクラスタ化することができてもよい。トピックモデリングのための方法の例としては、LDA(Latent Dirichlet Allocation)法、NMF(non-Negative Matrix Factorization)法、LSA(Latent Semantic Analysis)法、PLDA(Parallel Latent Dirichlet Allocation)法、PAM(Pachinko Allocation Model )ベースの方法、およびLda2vecなどの深層学習ベースの方法を含んでもよいが、これらに限定されない。
【0113】
LDAは、統計的およびグラフィックモデルであり得、VEM(variational Exception Maximization)アルゴリズムを使用して開発されてもよい。NMF法は行列因数分解法であり、線形代数に基づいてもよい。LSAはDocument-Term Matrix上のSVD(singular value decomposition)を使用することがあり、線形代数に基づいてもよい。PLDS法は確率分布法に基づいてもよい。PAM法は、LDAの改善されたバージョンであり、キーワード間の相関をモデル化することによって即興で行ってもよい。Lda2vecのような深層学習ベースの方法は、ワード、文書、およびトピックベクトルを共同で学習するword2vecおよびLDAの拡張であってもよい。前述のトピックモデリング方法の詳細な実装は、当業者には公知であってもよく、したがって、このような前述のトピックモデリング方法の詳細な説明は、簡略化のために開示から省略されている。
【0114】
504Dでは、クエリ生成動作が実行されてもよい。プロセッサ202は、抽出されたキーワードのグループを使用して1つ以上のクエリを生成するように構成されてもよい。生成された1つ以上のクエリは、構造化データベース506に照会するために使用されてもよい。一実施形態では、1つ以上のクエリの各々は、キーワードのグループの1つ以上のキーワードに関連付けられた「選択」クエリであってもよい。このようなクエリは、例えばCypher Query LanguageまたはRDF (Resource Description Framework)Query Language(SPARQL)使用することによって生成されてもよい。
【0115】
504Eでは、テーマタグ生成動作が実行されてもよい。プロセッサ202は、生成された1つ以上のクエリを使用して構造化データベース506に照会することによって、テーマタグセットを抽出するように構成されてもよい。構造化データベース506の例は、DBpedia(登録商標)である。場合によっては、キーワード(クエリで使用)と抽出されたテーマタグは、オントロジー関係を有してもよい。例えば、テーマタグは、広い概念を使用してキーワードのグループを識別してもよい。例えば、第1のキーワードが「processor」であり、第2のキーワードが「database」であり、第3のキーワードが「schema」であり、第4のキーワードが「data-analysis」である場合、抽出されたテーマタグセットは、「information processing」として第1のテーマタグ、「data-processor」として第2のテーマタグ、および「data system」として第3のテーマタグを含んでもよい。
【0116】
504Fでは、テーマタグランク付け動作が実行されてもよい。プロセッサ202は、抽出されたテーマタグセットの各々に関連するタグ関連性スコアに基づいて、抽出されたテーマタグセットをランク付けするように構成されてもよい。前述の例を参照すると、第1のテーマタグに関連付けられたタグ関連性スコアは、第2のテーマタグおよび第3のテーマタグに関連付けられたタグ関連性スコアよりも高くてもよい。同様に、第3のテーマタグに関連付けられたタグ関連性スコアは、第2のテーマタグに関連付けられたタグ関連性スコアよりも高く、第1のテーマタグのタグ関連性スコアよりも低くてもよい。一実施形態では、各テーマタグに関連付けられたタグ関連性スコアは、(504Eで)クエリの結果に含まれてもよい。
【0117】
504Gでは、トピックタグ生成動作が実行されてもよい。プロセッサ202は、テーマタグのランク付けされたセットのサブセットを抽出するように構成されてもよい。抽出されたサブセットは、第1のトピックタグセットのトピックタグとして含まれてもよい。例えば、閾値を上回るタグ関連性スコアを有する、ランク付けされたテーマタグセット内の上位10個のテーマタグは、第1のトピックタグセットのトピックタグとして含められてもよい。
【0118】
図6は、本開示に記載された少なくとも1つの実施形態による、例示的な知識グラフデータベースを示す図である。
図6は、
図1、
図2、
図3、
図4、
図5A、および
図5Bの要素と併せて説明される。
図6を参照すると、知識グラフデータベース600が示されている。実施形態では、知識グラフデータベース600は、収集されたトピックメタデータおよび収集された人間がラベル付けした第2のトピックタグセットに基づいて生成されてもよい。
【0119】
知識グラフデータベース600を参照すると、エンティティセット602が示されている。このようなエンティティは、リポジトリのコレクション110に関連付けられてもよい。エンティティセットは、例えば、第1のエンティティ602A、第2のエンティティ602B、第3のエンティティ602C、第4のエンティティ602D、第5のエンティティ602E、第6のエンティティ602F、および他のエンティティ602Nを含んでもよい。エンティティセットの各エンティティは、例えば、リポジトリ内のソフトウェアコードのアプリケーション領域、プログラミング言語、リポジトリのタイトル、技術、(リポジトリの説明からの)キーワード、リポジトリメタデータのフィールドなどを表してもよい。
【0120】
一例として、また限定ではなく、第1のエンティティ602Aは、例示的なトピックの名前(すなわち、「AbcLint」)を表してもよい。第2のエンティティ602Bは、例示的なリポジトリのエイリアスを表す。例示的なトピックのエイリアスは、収集されたトピックタグメタデータから判定されてもよい。第3のエンティティ602Cは、例示的なトピックの表示名を表してもよい。例示的なトピックの表示名は、
図4の402Bに記載されているように、収集されたトピックメタデータから判定されてもよい。第4のエンティティ602Dは、関連するトピックタグ名を表してもよい。関連するトピックタグ名は、収集されたトピックタグメタデータから判定されてもよい。第5のエンティティ602Eは、例示的なリポジトリに含まれるソフトウェアコードまたはコードスニペットに関連付けられたプログラミング言語を表してもよい。例示的なリポジトリに含まれるソフトウェアコードまたはコードスニペットに関連付けられたプログラミング言語は、人間がラベル付けした第2のトピックタグセットに基づいて判定されてもよい。第6のエンティティ602Fは、第5のエンティティ602Eに示されるプログラミング言語に関連する技術を表すことができる。他のエンティティ602Nは、収集されたトピックメタデータおよび/または収集された人間がラベル付けした第2のトピックタグセットに含まれるパラメータを表してもよい。
【0121】
さらに、エンティティセット間の関係が示されている。各エンティティは、(すなわち、2つのノードを接続するラインとして表される)エッジを使用して、1つ以上のノード(すなわち、エンティティ)に関連し得るノードと呼ばれてもよい。一例として、第1のエンティティ602Aと第2のエンティティ602Bとの間の第1の関係は、「aliases」として表されてもよい。第1のエンティティ602Aと第3のエンティティ602Cとの間の第2の関係は、「display_name」として表されてもよい。第1のエンティティ602Aと第4のエンティティ602Dとの間の第3の関係は、「related to」として表されてもよい。第1のエンティティ602Aと第5のエンティティ602Eとの間の第4の関係は、「関連する」として表わされてもよい。同様に、第5のエンティティ602Eと第6のエンティティ602Fとの間の第6の関係は、「related to」として表わされてもよい。
【0122】
図7Aは、本開示に記載される少なくとも1つの実施形態による、提示データを表示するための例示的な電子ユーザインターフェースを示す図である。
図7Aは、
図1、
図2、
図3、
図4、
図5A、
図5B、および
図6の要素と併せて説明される。
図7Aを参照すると、
図1の電子UI118の例示的な実装であり得る例示的な電子UI700Aが示されている。
【0123】
例示的な電子UI700Aは、ユーザデバイス114のディスプレイ画面上に表示されるアプリケーションインターフェースを介して受信され得るユーザ要求に基づいて、ユーザデバイス114上に表示されてもよい。アプリケーションインターフェースは、アプリケーションソフトウェア、例えば、ソフトウェア開発キット、クラウドサーバベースのアプリケーション、ウェブベースのアプリケーション、OSベースのアプリケーション/アプリケーションスイート、エンタープライズアプリケーション、モバイルアプリケーションなどの一部であってもよい。
【0124】
例示的な電子UI700A上には、第1のUI要素702、第2のUI要素704、および第3のUI要素706のような第1のUI要素セットが示されている。第1のUI要素702は、「リポジトリモニタリング」としてラベル付けされてもよく、第2のUI要素704は、「トレンドモニタリング」としてラベル付けされてもよく、第3のUI要素706は、「リポジトリまたはトピックタグの検索」としてラベル付けされてもよい。第1のUI要素702、第2のUI要素704、および第3のUI要素706の各々は、ボタン(I/Oデバイスを使用して選択され得る)としてレンダリングされてもよい。
【0125】
第1のUI要素702は、電子UI上にリポジトリベースのトレンドモニタリングインターフェースを表示するために使用されてもよい。第2のUI要素704は、電子UI上にトピックベースのトレンドモニタリングインターフェースを表示するために使用されてもよい。第3のUI要素706は、電子UI上に検索インターフェースを表示するために使用されてもよい。トピックベースのトレンドモニタリングインターフェースに関する詳細は、例えば、
図8B、
図8C、
図8D、
図8E、および
図8Fに提供される。検索インターフェースに関する詳細は、例えば、
図9Bに提供される。
【0126】
一実施形態では、プロセッサ202は、第1のUI要素702(点線の長方形で示される)の選択のための第1のユーザ入力を受信してもよい。第1のUI要素702の選択に基づいて、例示的な電子UI700Bが、ユーザデバイス114のディスプレイ画面上にレンダリングされてもよい。例示的な電子UI700Bに関する詳細は、例えば、
図7Bに提供される。
【0127】
図7Bは、本開示に記載される少なくとも1つの実施形態による、リポジトリモニタリングのための例示的な電子ユーザインターフェースを示す図である。
図7Bは、
図1、
図2、
図3、
図4、
図5A、
図5B、
図6、および
図7Aの要素と併せて説明される。
図7Bを参照すると、
図1の電子UI118の例示的な実装であり得る例示的な電子UI700Bが示されている。例示的な電子UI700Bは、
図7Aの第1のUI要素702の選択に基づいて、ユーザデバイス114上に表示されてもよい。選択は、ユーザデバイス114を介して受信されてもよい。
【0128】
例示的な電子UI700B上には、第4のUI要素708および第5のUI要素710などの第2のUI要素セットが示されている。第4のUI要素708は、「人気リポジトリモニタリング」としてラベル付けされてもよく、ボタンであってもよい。同様に、第5のUI要素710は、「履歴データの取得」としてラベル付けされてもよく、ボタンであってもよい。
【0129】
一実施形態では、第4のUI要素708(点線の長方形によって示される)の選択のための第2のユーザ入力を受信してもよい。第4のUI要素708の選択に基づいて、例示的な電子UI700Cが、ユーザデバイス114のディスプレイ画面上にレンダリングされてもよい。例示的な電子UI700Cに関する詳細は、例えば、
図7Cに提供される。
【0130】
一実施形態では、第2のユーザ入力は、第5のUI要素710の選択のために受信されてもよい。第5のUI要素710の選択に基づいて、例示的な電子UI700Gが、ユーザデバイス114のディスプレイ画面上にレンダリングされてもよい。例示的な電子UI700Gに関する詳細は、例えば、
図7Gに提供される。
【0131】
図7Cは、本開示に記載される少なくとも1つの実施形態による、人気リポジトリモニタリングのための例示的な電子ユーザインターフェースを示す図である。
図7Cは、
図1、
図2、
図3、
図4、
図5A、
図5B、
図6、
図7Aおよび
図7Aの要素と併せて説明される。
図7Cを参照すると、
図1の電子UI118の例示的な実装であり得る例示的な電子UI700Cが示されている。例示的な電子UI700Cは、
図7Bの第4のUI要素708の選択に基づいて、ユーザデバイス114上に表示されてもよい選択は、ユーザデバイス114を介して受信されてもよい。
【0132】
例示的な電子UI700Cは、ドロップダウンリストであってもよく、かつオプションのリストを含んでもよい第6のUI要素712が示されている。オプションのリストは、例えば、デイリー人気リポジトリ(ニュースター)、デイリー人気リポジトリ(ニューフォーク)、デイリー人気リポジトリ(ニューアクティビティ)、ウィークリー人気リポジトリ(ニュースター)、ウィークリー人気リポジトリ(ニューフォーク)、ウィークリー人気リポジトリ(ニューアクティビティ)、マンスリー人気リポジトリ(ニュースター)、マンスリー人気リポジトリ(ニューフォーク)、マンスリー人気リポジトリ(ニューアクティビティ)、人気を得た新しいリポジトリ(毎日更新)、最近人気を得ただけの古いリポジトリ(毎日更新)、最もスターの付いたリポジトリ、最もフォークされたリポジトリ、および最もアクティブなリポジトリ(更新/貢献/ディスカッションの観点から)を表示するオプションを含んでもよい。
【0133】
一実施形態では、第6のUI要素712(点線の長方形によって示される)に含まれる(オプションのリストから)第1のオプションの選択のための第3のユーザ入力を受信してもよい。第1のオプションの選択に基づいて、例示的な電子UI700Dが、ユーザデバイス114のディスプレイ画面上にレンダリングされてもよい。例示的な電子UI700Dに関する詳細は、例えば、
図7Dに提供される。
【0134】
図7Dは、本開示に記載される少なくとも1つの実施形態による、
図7Cの第6のUI要素に含まれるオプションのリストからの第1のオプションの選択に基づく日常的に人気リポジトリ(ニュースター)のための例示的な電子ユーザインターフェースを示す図である。
図7Dは、
図1、
図2、
図3、
図4、
図5A、
図5B、
図6、
図7A、
図7Bおよび
図7Cの要素と併せて説明される。
図7Dを参照すると、
図1の電子UI118の例示的な実装であり得る例示的な電子UI700Dが示されている。例示的な電子UI700Dは、第6のUI要素712(
図7C)に含まれる第1のオプションの選択に基づいて、ユーザデバイス114上に表示されてもよい。選択は、ユーザデバイス114を介して受信されてもよい。
【0135】
図7Dでは、生成された提示データの第1の部分が示されている。提示データの生成に関する詳細は、例えば、
図4に提供される。第1の部分は、例示的な電子UI700Dの第7のUI要素714上に表示されてもよい。第1の部分は、新しいスター/いいねを獲得した可能性のあるデイリー人気リポジトリのリストを含んでもよい。一実施形態では、第7のUI要素714はまた、例示的な電子UI700D上のリポジトリベースのトレンドモニタリングインターフェースと呼ばれてもよい。
【0136】
一例として、また限定ではなく、第7のUI要素714は、第1のセクションと第2のセクションに分割されてもよい。第1の人気リポジトリ(ABC/ABC)に関連付けられた詳細は、第1のセクションに表示されてもよく、第2の人気リポジトリ(CDE/XYZ)に関連付けられた詳細は、第7のUI要素714の第2のセクションに表示されてもよい。第1のUI要素セット716は、例えば、第1の名前UI要素716A、第1のトピックタグUI要素716B、第1の説明UI要素716C、第1のプログラミング言語UI要素716D、第1のスターカウントUI要素716E、および第1のフォークカウントUI要素716Fを含んでもよい。
【0137】
第1の名前UI要素716Aでは、第1の人気リポジトリの名前が表示されてもよい。図示のように、第1の人気リポジトリの名前は「ABC/ABC」である。第1のトピックタグUI要素716Bでは、第1の人気リポジトリに関連付けられたトピックタグセットが表示されてもよい。トピックタグセットは、第1の人気リポジトリに対して、生成された第1のトピックタグセット(マシンが生成)と、人間がラベル付けした第2のトピックタグセットの両方を含んでもよい。第1の説明UI要素716Cでは、第1の人気リポジトリに関連付けられた第1のタピプリポジトリ説明が表示されてもよい。第1のプログラミング言語UI要素716Dでは、(第1の人気リポジトリに含まれる)コードスニペットまたはソフトウェアコードで使用されるプログラミング言語が表示されてもよい。第1のスターカウントUI要素716Eでは、第1の人気リポジトリに関連付けられたスターのカウントが表示されてもよい。第1のフォークカウントUI要素716Fでは、第1の人気リポジトリのフォーク(またはダウンロード)のカウントが表示されてもよい。第1のUI要素セット716の各々は、ユーザ選択可能なUI要素であってもよい。
【0138】
第2のUI要素セット718は、第2の名前UI要素718A、第2のトピックタグUI要素718B、第2の説明UI要素718C、第2のプログラミング言語UI要素718D、第2のスターカウントUI要素718E、および第2のフォークカウントUI要素716Fを含んでもよい。
【0139】
第2の名前UI要素718Aでは、第2の人気リポジトリの名前が表示されてもよい。図示のように、第2の人気リポジトリの名前は「CDE/XYZ」である。第2のトピックタグUI要素718Bでは、第2の人気リポジトリに関連付けられたトピックタグセットが表示されてもよい。トピックタグセットは、第2の人気リポジトリに関連付けられ生成された第1のトピックタグセットと、人間がラベル付けした第2のトピックタグセットの両方を含んでもよい。第2の説明UI要素718Cでは、第2の人気リポジトリに関連付けられた第2のリポジトリ説明が表示されてもよい。第2のプログラミング言語UI要素718Dでは、(第2の人気リポジトリに含まれる)コードスニペットまたはソフトウェアコードで使用されるプログラミング言語が表示されてもよい。第2のスターカウントUI要素718Eでは、第2の人気リポジトリに関連付けられたスターのカウントが表示されてもよい。第2のフォークカウントUI要素718Fでは、第2の人気リポジトリに関連付けられたフォークのカウントが表示されてもよい。第2のUI要素セット718の各々は、ユーザ選択可能なUI要素であってもよい。
【0140】
一実施形態では、第1の名前UI要素716A、第1のトピックタグUI要素716B、第1の説明UI要素716C、第1のプログラミング言語UI要素716D、第1のスターカウントUI要素716E、および第1のフォークカウントUI要素716Fの各々が、第1のリンクされたアイテムと呼ばれてもよい。第1のリンクされたアイテムは、提示データセットの表示された第1の部分に含まれてもよく、第1の人気リポジトリに関連付けられてもよい。同様に、第2の名前UI要素718A、第2のトピックタグUI要素718B、第2の説明UI要素718C、第2のプログラミング言語UI要素718D、第2のスターカウントUI要素718E、および第2のフォークカウントUI要素718Fの各々が、第2のリンクされたアイテムと呼ばれてもよい。第2のリンクされた項目は、提示データセットの表示された第1の部分に含まれ、第2の人気リポジトリに関連付けられてもよい。
【0141】
一実施形態では、第1の時間で、第4のユーザ入力を受信してもよい。第4のユーザ入力は、提示データセットの表示された第1の部分に含まれる第2のリンクされたアイテム(例えば、第2の名前UI要素718A) (すなわち、「CDE/XYZ」)の選択に対応してもよい。第4のユーザ入力の受信に基づいて、例示的な電子UI700Eが表示されてもよい。例示的な電子UI700Eに関する詳細は、例えば、
図7Eに提供される。
【0142】
一実施形態では、第2の時間で、第5のユーザ入力を受信してもよい。第5のユーザ入力は、第2のリンクされたアイテムの選択に対応してもよい。第2のリンクされたアイテム(第2のトピックタグUI要素718Bに表示される少なくとも1つのトピックタグ(例えば、Blockchain))は、提示データセットの表示される第1の部分に含まれてもよい。第5のユーザ入力の受信に基づいて、例示的な電子UI700Eが表示されてもよい。例示的な電子UI700Fに関する詳細は、例えば、
図7Fに提供される。
【0143】
【0144】
例示的な電子UI700E内には、第8のUI要素720上に生成された提示データセットの第2の部分が示されている。実施形態において、第2の部分は、複数のフィールドと、リポジトリ名「CDX/XYZ」を有する第2の人気リポジトリについての対応する値とを含んでもよい。一例として、または限定ではなく、第1のフィールドは、第2の人気リポジトリに関連付けられたトピックタグであってもよい。トピックタグは、blockchain、dpos(delegated proof of stake)、smart、contract、cyptographyである。第2のフィールドは、第2の人気リポジトリに関連付けられた説明であってもよい。説明は、「Public Blockchain as a Decentralized Economy Infrastructure Service Platform」であってもよい。第3のフィールドは、第2の人気リポジトリに関連付けられたURLであってもよい。URLは、「https://abc.com/CDE/XYZ」であってもよい。
【0145】
第2の人気リポジトリに関連付けられたURLは、第2の人気リポジトリがホストされるウェブホストシステムのディレクトリに対応してもよいことに留意されたい。一実施形態では、第8のUI要素720はまた、提示データセットの一部として、グラフおよび/またはチャートを含んでもよい。例えば、異なる時間間隔での、2番目に人気リポジトリのスター/好みの数の変化を表すグラフが示されている。当業者であれば、
図7Eに示されるフィールドに加えて、第2の人気リポジトリに関連付けられた他のフィールドが存在してもよいこと理解するであろう。簡略化のため、他のフィールドおよび対応する値の詳細な説明は、開示から省略している。
【0146】
【0147】
例示的な電子UI700F内には、第9のUI要素722上に生成された提示データセットの第2の部分が示されている。一実施形態では、第2の部分は、複数のフィールドと、第1のトピックタグ(Blockchain)についての対応する値とを含んでもよい。例として、限定ではなく、第1のフィールドは、第1のトピックタグの説明であってもよい。説明は、「A blockchain is a digitized, decentralized ledger of transactions」であってもよい。第2のフィールドは、第1のトピックタグ(Blockchain)に関連するトピックタグであってもよい。第2のフィールドは、bitcoinおよびをcrypto-currency含んでもよい。第3のフィールドは、第1のトピックタグに関する詳細にアクセスするためのURLであってもよい。URLは、「https://en.wikipedia.org/wiki/Blockchain」であってもよい。第4のフィールドは、第1のトピックタグに関連付けられた人気リポジトリの名前であってもよい。名前は、Blockchain1/BlockChain1およびBlockchain2/Blockchain2であってもよい。
【0148】
一実施形態によると、第9のUI要素722はまた、グラフおよび/またはチャートを含んでもよい。例えば、異なる時間間隔での、第1のトピックタグに関連付けられたリポジトリ数の変化を表すグラフが表示される。当業者であれば、
図7fに示されるフィールドに加えて、第1のトピックタグに関連付けられた追加のフィールドの数および対応する値が存在してもよいことを理解するであろう。第1のトピックタグに関連付けられた他のフィールドの詳細な説明は、簡略化のために開示から省略している。
【0149】
【0150】
例示的な電子UI700Gは、(
図7Bの)第5のUI要素710の選択に基づいて、ユーザデバイス114上に表示されてもよい選択は、ユーザデバイス114を介して受信されてもよい。例示的な電子UI700Gは、第1の日と第2の日との間のリポジトリに関する履歴データを取得するために使用されてもよい。
【0151】
図7Gを参照すると、第10のUI要素724、第11のUI要素726、および第12のUI要素728が示されている。第10のUI要素724は、第1の日付を入力するために使用されてもよく、第11のUI要素726は、履歴データを取得しなければならない間隔の第2の日を入力するために使用されてもよい。第12のUI要素728は、「送信」としてラベル付けされてもよく、ボタンであってもよい。
【0152】
第1の日および第2の日を入力した後、例示的な電子UI700Cに類似の電子UIが、ユーザデバイス114上にレンダリングされてもよい。実施形態では、間隔が1日である場合、デイリー人気リポジトリ(新しいフォーク/ダウンロード、新しいスター/いいね、および新しいアクティビティ)が表示されてもよい。実施形態では、間隔が1週間である場合、ウィークリー人気リポジトリ(新しいフォーク/ダウンロード、新しいスター/いいね、新しいアクティビティ)が表示されてもよい。別の実施形態では、間隔が9日である場合、ウィークリー人気リポジトリ(新しいフォーク、新しいスター、および新しいアクティビティ)ならびに2日間にわたるデイリー人気リポジトリ(新しいフォーク、新しいスター、および新しいアクティビティ)は、一緒にマージされ、次いで表示されてもよい。間隔が3カ月を超える場合、間隔中の最もスターの付いたリポジトリ、フォークされたリポジトリ、および最もアクティブなリポジトリが表示されてもよい。
【0153】
【0154】
例示的な電子UI800Aは、ユーザデバイス114のディスプレイ画面上に表示されるアプリケーションインターフェースを介して受信され得るユーザ要求に基づいて、ユーザデバイス114上に表示されてもよい。アプリケーションインターフェースは、アプリケーションソフトウェア、例えば、ソフトウェア開発キット(SDK)、クラウドサーバベースのアプリケーション、ウェブベースのアプリケーション、OSベースのアプリケーション/アプリケーションスイート、エンタープライズアプリケーション、またはモバイルアプリケーションの一部であってもよい。
【0155】
例示的な電子UI800Aには、第1のUI要素802、第2のUI要素804、および第3のUI要素806のような第1のUI要素セットが示されている。第1のUI要素802は、「人気リポジトリモニタリング」としてラベル付けされてもよく、ボタンであってもよい。第2のUI要素804は、「トレンドモニタリング」としてラベル付けされてもよく、またボタンであってもよい。同様に、第3のUI要素806は、「リポジトリまたはトピックタグの検索」としてラベル付けされてもよく、ボタンであってもよい。
【0156】
第1のUI要素802は、電子UI上にリポジトリベースのトレンドモニタリングインターフェースを表示するために使用されてもよく、第2のUI要素804は、電子UI上にトピックベースのトレンドモニタリングインターフェースを表示するために使用されてもよく、第3のUI要素806は、例示的な電子UI800A上に検索インターフェースを表示するために使用されてもよい。
【0157】
一実施形態では、第2のUI要素804(点線の長方形によって示される)の選択のための第1のユーザ入力を受信してもよい。第2のUI要素804の選択に基づいて、例示的な電子UI800Bが、ユーザデバイス114のディスプレイ画面上にレンダリングされてもよい。例示的な電子UI800Bに関する詳細は、例えば、
図8Bに提供される。
【0158】
図8Bは、本開示に記載される少なくとも1つの実施形態による、UI要素の選択に基づくトレンドモニタリングのための例示的な電子ユーザインターフェースを示す図である。
図8Bは、
図1、
図2、
図3、
図4、
図5A、
図5B、
図6、
図7A、
図7B、
図7C、
図7D、
図7E、
図7F、
図7Gおよび
図8Aの要素と併せて説明される。
図8Bを参照すると、
図1の電子UI118の例示的な実装であり得る例示的な電子UI800Bが示されている。例示的な電子UI800Bは、(
図7Aの)第2のUI要素804の選択に基づいて、ユーザデバイス114上に表示されてもよい。選択は、ユーザデバイス114を介して受信されてもよい。
【0159】
例示的な電子UI800B上には、第4のUI要素808および第5のUI要素810などの第2のUI要素セットが示されている。第4のUI要素708は、「すべての人気トピックタグのリスト」としてラベル付けされてもよく、ボタンであってもよい。同様に、第5のUI要素810は、「人気リポジトリのためのトピックタグ」としてラベル付けされてもよく、ボタンであってもよい。
【0160】
一実施形態では、第4のUI要素808(点線の長方形によって示される)の選択のための第2のユーザ入力を受信してもよい。第4のUI要素808の選択に基づいて、例示的な電子UI800Cが、ユーザデバイス114のディスプレイ画面上にレンダリングされてもよい。例示的な電子UI800Cに関する詳細は、例えば、
図8Cに提供される。
【0161】
【0162】
例示的な電子UI800C内には、第6のUI要素812上に生成された提示データセットの第3の部分が示されている。第6のUI要素812は、トピックベースのトレンドモニタリングインターフェースと呼ばれてもよい。実施形態では、第3の部分は、全ての人気トピックタグのリストに関連付けられたテーブルに対応してもよい。テーブルは、少なくとも5つの列(たとえば、第1列、第2列、第3列、第4列、および第5列)を含んでもよい。テーブルの第1の列は、トピックタグの名前を示してもよい。第2の列は対応するトピックタグのロゴを示してもよく、第3の列は対応するトピックタグに関する短い説明を示してもよい。第4の列は、対応する列に関連付けられたリポジトリの数を示してもよい。同様に、第5の列は、対応するトピックタグに関連付けられたメタデータへのハイパーリンクを示してもよい。
【0163】
一例として、また限定ではなく、第1の人気トピックタグの名前は「Ansible」であってもよい。第1の人気トピックタグに関連付けられた簡単な説明は、「Ansible is a simple and powerful automation engine」であってもよい。図示のように、例えば、第1の人気トピックタグに関連付けられた2,355のリポジトリがあってもよい。
【0164】
一実施形態では、例示的な電子UI800Cは、比較UI要素も含んでもよい。比較UI要素は、テーブル内に存在する少なくとも2つのトピックタグを比較するように選択されてもよい。ユーザ120には、少なくとも2つのトピックタグを比較するための1つ以上の比較オプションが提示されてもよい。このようなオプションは、比較UI要素の選択後にレンダリングされてもよい。
【0165】
図8Dは、本開示に記載される少なくとも1つの実施形態による、UI要素の選択に基づくトレンドモニタリングのための例示的な電子ユーザインターフェースを示す図である。
図8Dは、
図1、
図2、
図3、
図4、
図5A、
図5B、
図6、
図7A、
図7B、
図7C、
図7D、
図7E、
図7F、
図7G、
図8A、
図8Bおよび
図8Cの要素と併せて説明される。
図8Dを参照すると、
図1の電子UI118の例示的な実装であり得る例示的な電子UI800Dが示されている。例示的な電子UI800Dは、(
図8Aの)第2のUI要素804の選択に基づいて、ユーザデバイス114上に表示されてもよい。選択は、ユーザデバイス114を介して受信されてもよい。
【0166】
例示的な電子UI800Dには、第4のUI要素808および第5のUI要素810などの第2のUI要素セットが示されている。第4のUI要素708は、「すべての人気トピックタグのリスト」としてラベル付けされてもよく、ボタンであってもよい。同様に、第5のUI要素810は、「人気リポジトリのためのトピックタグ」としてラベル付けされてもよく、ボタンであってもよい。
【0167】
一実施形態では、第5のUI要素810(点線の長方形によって示される)の選択のための第3のユーザ入力を受信してもよい。第5のUI要素810の選択に基づいて、例示的な電子UI800Eが、ユーザデバイス114のディスプレイ画面上にレンダリングされてもよい。例示的な電子UI800Eに関する詳細は、例えば、
図8Eに提供される。
【0168】
【0169】
例示的な電子UI800Eは、ドロップダウンリストであってもよく、かつオプションのリストを含んでもよい第7のUI要素814が示されている。オプションのリストは、例えば、デイリー人気リポジトリ(ニュースター)のトピックタグ、デイリー人気リポジトリ(ニューアクティビティ)のトピックタグ、ウィークリー人気リポジトリ(ニュースター)のトピックタグ、ウィークリー人気リポジトリ(ニューアクティビティ)のトピックタグ、マンスリー人気リポジトリ(ニュースター)のトピックタグ、マンスリー人気リポジトリ(ニューアクティビティ)のトピックタグ、人気を得た新しいリポジトリ(毎日更新)のトピックタグ、最近人気を得ただけの過去のリポジトリ(毎日更新)のトピックタグ、最もスターの付いたリポジトリのトピックタグ、最もフォークされたリポジトリのトピックタグ、最新のアクティブなリポジトリのトピックタグなどを含んでもよい。
【0170】
一実施形態では、第6のUI要素814に含まれるオプションのリストから第1のオプションの選択のための第4のユーザ入力を受信してもよい。(点線の長方形によって示される)第1のオプションの選択に基づいて、例示的な電子UI800Fが、ユーザデバイス114のディスプレイ画面上にレンダリングされてもよい。例示的な電子UI800Fに関する詳細は、例えば、
図8Fに提供される。
【0171】
【0172】
例示的な電子UI800Fには、提示データの生成されたセットの第4の部分を表示する第8のUI要素816が示されている。一実施形態では、第4の部分は、デイリー人気リポジトリ(ニュースター)のトピックタグに関連付けられたテーブルに対応してもよいテーブルは、少なくとも5つの列(たとえば、第1列、第2列、第3列、第4列、および第5列)を含んでもよい。テーブルの第1の列は、トピックタグの名前を示してもよい。第2の列は対応するトピックタグのロゴを示してもよく、第3の列は対応するトピックタグに関する短い説明を示してもよい。第4の列は、対応する列に関連付けられたリポジトリの数を示してもよい。同様に、第5の列は、対応するトピックタグに関連付けられたメタデータへのハイパーリンクを示してもよい。
【0173】
一例として、また限定ではなく、第1の列は、「Arduino」および「Android」として、人気トピックタグの名前を含んでもよい。第2の列は、「Arduino」および「Android」のロゴを含んでもよい。第3の列は、人気のトピックタグに関連する短い説明を含んでもよい。例えば、「Arduino」については、短い説明は、「Arduino is an open source hardware and software company and maker community. Arduino started in the early 2000s. Popular with electronic makers, Arduino offers a lot of flexibility through an open source system.」を含んでもよく、第4の列は、人気トピックタグに関連付けられたリポジトリの数を含んでもよい。図示のように、例えば、Arduinoトピックタグに関連付けられた19,289個のリポジトリがあってもよい。同様に、第5の列は、人気トピックタグに関連付けられたメタデータへのハイパーリンクを含んでもよい。
【0174】
【0175】
例示的な電子UI900Aは、ユーザデバイス114のディスプレイ画面上に表示されるアプリケーションインターフェースを介して受信され得るユーザ要求に基づいて、ユーザデバイス114上に表示されてもよい。アプリケーションインターフェースは、アプリケーションソフトウェア、例えば、ソフトウェア開発キット(SDK)、クラウドサーバベースのアプリケーション、ウェブベースのアプリケーション、OSベースのアプリケーション/アプリケーションスイート、エンタープライズアプリケーション、またはモバイルアプリケーションの一部であってもよい。
【0176】
例示的な電子UI900Aには、第1のUI要素902、第2のUI要素904、および第3のUI要素906のような第1のUI要素セットが示されている。第1のUI要素902は、「リポジトリモニタリング」としてラベル付けされてもよく、ボタンであってもよい。第2のUI要素904は、「トレンドモニタリング」としてラベル付けされてもよく、また、ボタンであってもよい。同様に、第3のUI要素906は、「リポジトリまたはトピックタグの検索」としてラベル付けされてもよく、また、ボタンであってもよい。
【0177】
第1のUI要素902は、電子UI上にリポジトリベースのトレンドモニタリングインターフェースを表示するために使用されてもよく、第2のUI要素904は、電子UI上にトピックベースのトレンドモニタリングインターフェースを表示するために使用されてもよく、第3のUI要素906は、例示的な電子UI900A上に検索インターフェースを表示するために使用されてもよい。
【0178】
一実施形態では、第3のUI要素906(点線の長方形によって示される)の選択のための第1のユーザ入力を受信してもよい。第3のUI要素906の選択に基づいて、例示的な電子UI900Bが、ユーザデバイス114のディスプレイ画面上にレンダリングされてもよい。例示的な電子UI900Bに関する詳細は、例えば、
図9Bに提供される。
【0179】
【0180】
例示的な電子UI900Bは、(
図9Aに示される)第3のUI要素906の選択に基づいて、ユーザデバイス114上に表示されてもよい。選択は、ユーザデバイス114を介して受信されてもよい。
【0181】
例示的な電子UI900B上には、第4のUI要素908、第5のUI要素910、および第6のUI要素が示されている。第4のUI要素908は、検索バーまたは検索インターフェースであってもよい。リポジトリまたはトピックタグを検索するために、ユーザはリポジトリの名前またはトピックタグを検索バーに書いてもよい。検索したリポジトリまたは検索したトピックタグに応答して、検索結果のリストが表示されてもよい。リポジトリが検索される場合、電子UI(例示的な電子UI700Eに類似)が、検索されたリポジトリに対応するテーブル内の値とともに表示されてもよい。トピックタグが検索される場合、電子UI700Fに類似する電子UIが、検索されたトピックタグに対応するテーブル内の値とともに表示されてもよい。表中の値は、生成された提示データセットから取得されてもよい。
【0182】
第5のUI要素910は、ほとんどの検索リポジトリのリストを表示するために使用されてもよい。ほとんどの検索リポジトリのリストからの少なくとも1つのリポジトリの選択に基づいて、例示的な電子UI700Eに類似する電子UIが、検索されたリポジトリに対応するテーブル内の値とともに表示されてもよい。
【0183】
第6のUI要素912は、ほとんどの検索トピックタグのリストを表示するために使用されてもよい。ほとんどの検索トピックタグのリストから少なくとも1つのトピックタグの選択に基づいて、電子UI700Fに類似する電子UIが、検索されたトピックタグに対応するテーブル内の値とともに表示されてもよい。
【0184】
【0185】
1002では、リポジトリのコレクション110からの第1のリポジトリセット112が識別されてもよい。リポジトリのコレクション110は、1つ以上のウェブベースのリポジトリホストシステム106にホストされてもよい。第1のリポジトリセット112の識別は、人気基準に基づいてもよく、リポジトリのコレクション110内の各リポジトリは、ソフトウェアコードまたはコードスニペットを含んでもよい。第1のリポジトリセット112の識別に関する詳細は
図1および
図3に提供される。
【0186】
1004では、識別された第1のリポジトリセット112の各リポジトリのリポジトリメタデータは、1つ以上のデータソース104から収集されてもよい。1つ以上のデータソース104は、1つ以上のウェブベースのリポジトリホストシステム106を含んでもよい。一実施形態では、識別された第1のリポジトリセット112の各リポジトリのリポジトリメタデータは、1つ以上のデータソース104への第2のAPI呼び出しセットを使用することによって収集されてもよい。さらに、リポジトリメタデータは、スケジュールの各間隔で定期的に収集することができる。リポジトリメタデータに関する詳細は
図1および
図3に提供される。
【0187】
1006では、収集されたリポジトリメタデータに対する1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットが生成されてもよい。第1のトピックタグセットは、第1のタイプのリポジトリ説明(短い説明)と第2タイプのリポジトリ説明(長い説明)によって生成されてもよい。第1のトピックタグセットの生成に関する詳細は
図5Aおよび
図5Bに提供される。
【0188】
1008では、生成された第1のトピックタグセットの各々に関連付けられた第1の統計セットが収集されてもよい。第1の統計セットは、1つ以上のデータソース104から収集されてもよい。第1の統計セットおよび第1の統計セットのコレクションに関する詳細は、
図3に提供される。
【0189】
1010では、提示データセットが生成されてもよい。識別された第1のリポジトリセット112、収集された前記リポジトリメタデータ、生成された前記第1のトピックタグセット、および収集された前記第1の統計セットのうちの1つ以上に基づいて、提示データセットが生成されてもよい。
【0190】
【0191】
制御は終了まで渡されてもよい。フローチャート1000は、1002、1004、1006、1008、1010、および1012などの個別動作として示されている。しかし、特定の実施形態では、開示された実施形態の本質を損なうことなく、特定の実施形態に応じて、そのような個別の動作をさらに追加の動作に分割したり、より少ない動作に組み合わせたり、または削除したりしてもよい。
【0192】
本開示の様々な実施形態は、実行されることに応答して、システム(システム102など)に動作を実行させる命令を記憶するように構成された1つ以上の非一時的なコンピュータ可読記憶媒体を提供してもよい。動作は、1つ以上のウェブベースのリポジトリホストシステム(1つ以上のウェブベースのリポジトリホストシステム106など)にホストされたリポジトリのコレクション(リポジトリのコレクション110など)から、第1のリポジトリセット(第1のリポジトリセット112など)を識別することを含んでもよい。識別することは、人気基準に基づいてもよく、リポジトリのコレクション内の各リポジトリは、ソフトウェアコードまたはコードスニペットを含んでもよい。動作は、1つ以上のウェブベースのリポジトリホストシステムを含む1つ以上のデータソース(1つ以上のデータソース104など)から、識別された第1のリポジトリセットの各リポジトリのリポジトリメタデータを収集することをさらに含んでもよい。システム102は、収集されたリポジトリメタデータに対する1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットを生成することをさらに含んでもよい。動作は、1つ以上のデータソースから、生成された前記第1のトピックタグセットの各々に関連付けられた第1の統計セットを収集することをさらに含んでもよい。動作は、識別された構成されてもよい。第1のリポジトリセット、収集された構成されてもよい。リポジトリメタデータ、生成された構成されてもよい。第1のトピックタグセット、および収集された第1の統計セットのうちの1つ以上に基づいて、提示データセットを生成することをさらに含んでもよい。動作は、ユーザデバイス(ユーザデバイス114など)を制御して、生成された提示データセットを、ユーザデバイスの電子ユーザインターフェース(UI)(電子UI118など)上に表示することをさらに含んでもよい。
【0193】
上記に示したように、本開示に記載された実施形態は、以下により詳細に論じられるように、種々のコンピュータハードウェアまたはソフトウェアモジュールを含む特殊目的または汎用コンピュータ(例えば、
図2のプロセッサ202)の使用を含んでもよい。さらに、上記に示したように、本開示に記載された実施形態は、コンピュータ実行可能な命令もしくはデータ構造を搬送するか、それが記憶されるためのコンピュータ可読媒体(例えば、
図2のメモリ204または永続性データストレージ206)を使用して実装されてもよい。
【0194】
本開示において使用されるように、用語「モジュール」または「コンポーネント」は、モジュールまたはコンポーネントのアクションを実行するように構成されている特定のハードウェア実装および/またはコンピューティングシステムの汎用ハードウェア(例えば、コンピュータ可読媒体、処理デバイス、またはいくつかの他のハードウェア)に記憶および/または実行され得るソフトウェアオブジェクトまたはソフトウェアルーチンを指してもよい。いくつかの実施形態において、本開示に記載される異なるコンポーネント、モジュール、エンジン、およびサービスは、(例えば、別個のスレッドとして)コンピューティングシステムで実行されるオブジェクトまたはプロセスとして実装されてもよい。本開示に記載されるシステムおよび方法のいくつかは、一般的に、(汎用ハードウェアに記憶される、および/またはそれによって実行される)ソフトウェアで実装されるものとして記載されているが、特定のハードウェア実装またはソフトウェアと特定のハードウェア実装との組み合わせも可能であり、企図されている。この説明において、「コンピューティングエンティティ」は、本開示において前に定義された任意のコンピューティングシステム、またはコンピューティングシステムで動作する任意のモジュールまたは変調器の組み合わせであってもよい。
【0195】
一般的なプラクティスに従って、図面に示された様々な特徴は、縮尺通りに描かれないことがある。本開示において提示される図示は、いかなる特定の装置(例えば、装置、システムなど)または方法の実際の図であることも意図しておらず、単に、本開示の様々な実施形態を記載するために用いられる理想化された表現である。したがって、様々な特徴の寸法は、明確にするために任意に拡大または縮小されてもよい。追加的に、図面の一部は、明確にするために簡略化されてもよい。したがって、図面は、所与の装置(例えば、デバイス)のコンポーネントの全て、または特定の方法の全ての動作を描かないことがある。
【0196】
本開示において、特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本文)において使用される用語は、一般的に「開放的」な用語として意図されている(例えば、用語「含んでいる」は、「含んでいるが、これに限定されない」と解釈されるべきであり、用語「有する」は、「少なくとも有する」と解釈されるべきであり、用語「含む」は、とりわけ、「含むが、これに限定されない」解釈されるべきである)。
【0197】
さらに、特定の数の導入された請求項の規定が意図されている場合、そのような意図は請求項に明示的に規定され、そのような規定がない場合、そのような意図は存在しない。例えば、理解を助けるために、以下の添付の特許請求の範囲は、請求項の規定を導入するために、「少なくとも1つ」および「1つ以上」の導入語句の使用を含有することがある。
【0198】
追加的に、導入された請求項の規定の特定の数が明示的に規定されている場合であっても、当該技術分野の当業者であれば、そのような規定は、少なくとも規定された数を意味すると解釈されるべきであることを認識するであろう(例えば、「2という規定」の単なる規定では、他の修飾語なしでは、少なくとも2つの規定、または2つ以上の規定を意味する)。さらに、「A、BおよびCのうちの少なくとも1つ」または「A、BおよびCなどのうちの1つ以上」と類似の慣習が使用されている場合、一般的に、そのような構造は、A単独、B単独、C単独、AとB、AとC、BとC、またはAとBとCなどを含むことが意図されている。
【0199】
さらに、明細書、特許請求の範囲、または図面のいずれかにあるかを問わず、2つ以上の代替的な用語を提示する任意の言葉または語句は、その用語のうちの1つ、用語のうちのいずれか、またはその用語の両方を企図するように理解されるべきである。例えば、語句「AまたはB」は、「A」もしくは「B」または「AおよびB」の可能性を含むように理解されるべきである。
【0200】
しかし、そのような語句の使用は、不定冠詞「a」または「an」による請求項の規定の導入が、そのような導入された請求項の規定を含有する任意の特定の請求項を、ただ1つのそのような規定を含有する実施形態に限定することを示唆するように解釈されるべきではなく、これは、同じ請求項が、導入語句「1つ以上」または「少なくとも1つ」および「a」または「an」(例えば、「a」および/または「an」は、「少なくとも1つ」または「1つ以上」を意味すると解釈されるべきである)などの不定冠詞を含むときでも同様であり、同じことは、請求項の規定を導入するために使用される不定冠詞の使用の場合に当てはまる。
【0201】
さらに、「第1」、「第2」、「第3」などの用語の使用は、本明細書において要素の特定の順序または数を暗示するために必ずしも使用されない。一般に、「第1」、「第2」、「第3」などの用語は、一般的な識別子として異なる要素を区別するために使用される。「第1」、「第2」、「第3」などの用語が特定の順序を暗示することを示さずに、これらの用語が特定の順序を暗示していると理解すべきではない。さらに、「第1」、「第2」、「第3」などの用語が特定の要素の数を暗示することを示さずに、これらの用語が特定の要素の数を暗示していると理解すべきではない。例えば、第1のウィジェットは、第1の側面を有し、第2のウィジェットは第2の側面を有していると記載されてもよい。第2のウィジェットに関する「第2の側面」という用語の使用は、第2のウィジェットのそのような側面を第1のウィジェットの「第1の側面」と区別し、第2のウィジェットが2つの側面を有していることを暗示しないようにしてもよい。
【0202】
本開示に規定されたすべての例および条件付き言語は、本開示および発明者が当該技術分野を促進するために寄与した概念を理解する際に読者を助けるための教育的目的とすることが意図されており、このように具体的に規定された例および条件に限定されるものではないと解釈されるべきである。本開示の実施形態が詳細に記載されているが、これに対して本開示の精神および範囲から逸脱することなく、種々の変更、置換、および交換が行われ得ると理解されたい。
【0203】
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
1つ以上のウェブベースのリポジトリホストシステムにホストされたリポジトリのコレクションから第1のリポジトリセットを識別することであって、
識別することは、人気基準に基づいており、前記リポジトリのコレクション内の各リポジトリは、ソフトウェアコードまたはコードスニペットを含む、ことと、
前記1つ以上のウェブベースリポジトリホストシステムを含む1つ以上のデータソースから、識別された前記第1のリポジトリセットの各リポジトリのリポジトリメタデータを収集することと、
収集された前記リポジトリメタデータに対する1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットを生成することと、
前記1つ以上のデータソースから、生成された前記第1のトピックタグセットの各々に関連付けられた第1の統計セットを収集することと、
識別された前記第1のリポジトリセット、収集された前記リポジトリメタデータ、生成された前記第1のトピックタグセット、および収集された前記第1の統計セットのうちの1つ以上に基づいて、提示データセットを生成することと、
ユーザデバイスを制御して、生成された提示データセットを前記ユーザデバイスの電子ユーザインターフェース(UI)上に表示することと、を含む、方法。
(付記2)
ピリオドフィルタ、間隔フィルタ、または人気基準で指定された1つ以上の人気タグのうちの少なくとも1つを含む1つ以上の検索パラメータに基づいて複数のクエリ文字列を生成することであって、
生成された前記複数のクエリ文字列の各問い合わせ文字列は、前記1つ以上のデータソース上にホストされたウェブページの対応するURL(uniform resource locator)に付加される、ことと、
生成された前記複数のクエリ文字列を使用して、前記1つ以上のデータソースを照会して、第1の複数のテーブルを生成することであって、前記第1の複数のテーブルの各々は、1つ以上の人気タグに関連付けられたリポジトリをリストする、ことと、をさらに含み、
生成された前記第1の複数のテーブルの各々にリストされた前記リポジトリは、識別された前記第1のリポジトリセットに含まれる、付記1に記載の方法。
(付記3)
生成された前記複数のテーブルをウォッチリストテーブルにマージすることをさらに含み、
前記ウォッチリストテーブルの各レコードは、リポジトリ名または識別子と、前記リポジトリ名または識別子が発生する生成された前記複数のテーブルの1つ以上のテーブルの名前を含む、付記2に記載の方法。
(付記4)
前記1つ以上のデータソースへの第1のアプリケーションプログラミングインターフェース(API)呼び出しセットを使用してリポジトリのリストを抽出することであって、
前記第1のAPI呼び出しセットの各API呼び出しは、ピリオドフィルタ、間隔フィルタ、または人気基準で指定された1つ以上の人気タグのうちの少なくとも1つを含む1つ以上の検索パラメータを含む、ことと、
第1の基準に基づいて抽出された前記リポジトリのリストをフィルタリングすることと、
フィルタリングされた前記リポジトリのリストを使用して、第2の複数のテーブルを追加することであって、
前記第2の複数のテーブルは、1つ以上の人気タグに従って追加される、ことと、
生成された前記第2の複数のテーブルをウォッチリストテーブルにマージすることと、をさらに含み、
前記ウォッチリストテーブルにリストされたリポジトリは、識別された前記第1のリポジトリセットに含まれる、付記1に記載の方法。
(付記5)
識別された前記第1のリポジトリセットの各リポジトリのリポジトリメタデータは、1つ以上のデータソースへの第2のAPI呼び出しセットを使用することによって収集され、
前記リポジトリメタデータは、スケジュールの各間隔で定期的に収集される、付記1に記載の方法。
(付記6)
前記第1のリポジトリセットの各々に対して、収集された前記リポジトリメタデータに基づいて複数のリポジトリデータテーブルを生成することをさらに含み、
生成された前記複数のリポジトリデータテーブルの各々は、前記スケジュールの各間隔に対して収集されたリポジトリメタデータを含む、付記5に記載の方法。
(付記7)
前記1つ以上のデータソースから、前記リポジトリのコレクションに関連付けられた人間がラベル付けした第2のトピックタグセットを収集することと、
前記1つ以上のデータソースから、収集された人間がラベル付けした前記第2のトピックタグの各々に関連付けられたトピックメタデータを収集することと、をさらに含む、付記1に記載の方法。
(付記8)
収集された前記トピックメタデータおよび収集された人間がラベル付けした前記第2のトピックタグセットに基づいて、知識グラフデータベースを生成することをさらに含み、
前記提示データセットは、生成された前記知識グラフデータベースに基づいてさらに生成される、付記7に記載の方法。
(付記9)
検索文字列を使用して、前記1つ以上のデータソースを照会して、人間がラベル付けした前記第2のトピックタグセットの各トピックタグに関連付けられた第2の統計セットを抽出することと、
人間がラベル付けした前記第2のトピックタグセットおよび抽出された前記第2の統計セットをリストする第1のトピックテーブルを生成することと、をさらに含み、
前記提示データセットは、生成された前記第1のトピックテーブルに基づいてさらに生成される、付記1に記載の方法。
(付記10)
収集された前記リポジトリメタデータは、第1のタイプのリポジトリ説明および第2のタイプのリポジトリ説明を含む、付記1に記載の方法。
(付記11)
前記第1のトピックタグセットは、
前記第1のタイプのリポジトリ説明に含まれる第1のテキストを抽出することと、
抽出された前記第1のテキストに対してテキスト正規化動作を実行して第1の正規化テキストを生成することと、
前記1つ以上の自然言語処理ベースの方法を使用して、前記第1の正規化テキストから名詞句セットを抽出することと、
名詞句の1つ以上の重複インスタンスを除去することによって、抽出された前記名詞句セットを更新することと、を行うことによって生成され、
更新された前記名詞句セットは、前記第1のトピックタグセットのトピックタグとして含まれる、付記10に記載の方法。
(付記12)
前記第1のトピックタグセットは、
前記第2のタイプのリポジトリ説明に含まれる第2のテキストを抽出することと、
抽出された前記第2のテキストに対してテキスト正規化動作を実行して第2の正規化テキストを生成することと、
前記第2の正規化テキストに対して機械学習ベースのトピックモデリング方法を適用することにより、前記第2の正規化テキストからキーワードのグループを抽出することであって、
前記機械学習ベースのトピックモデリング方法は、前記1つ以上の自然言語処理ベースの方法のうちの1つである、ことと、
抽出された前記キーワードのグループを使用して1つ以上のクエリを生成することと、
生成された前記1つ以上のクエリを使用して構造化データベースを照会してテーマタグセットを抽出することと、
抽出された前記テーマタグセットの各々に関連するタグ関連性スコアに基づいて、抽出された前記テーマタグセットをランク付けすることと、
ランク付けされた前記テーマタグセットのサブセットを抽出することと、
抽出された前記サブセットは、前記第1のトピックタグセットのトピックタグとして含まれる、付記10に記載の方法。
(付記13)
前記電子UIは、前記電子UI上のリポジトリベースのトレンドモニタリングインターフェースを表示するための第1のUI要素と、前記電子UI上のトピックベースのトレンドモニタリングインターフェースを表示するための第2のUI要素と、前記電子UI上の検索インターフェースを表示するための第3のUI要素とを含む、付記1に記載の方法。
(付記14)
前記電子UIを介して、前記第1のUI要素、前記第2のUI要素、または前記第3のUI要素のうちの1つの選択を含む第1の入力を受信することをさらに含み、
生成された前記提示データセットの第1の部分は、受信された前記第1の入力に基づいて、前記電子UIの第4のUI要素上に表示される、付記1に記載の方法。
(付記15)
前記電子UIを介して、前記提示データセットの表示された前記第1の部分に含まれるリンクされたアイテムの選択を含む第2の入力を受信することをさらに含み、
生成された前記提示データセットの第2の部分は、受信された前記第2の入力に基づいて、前記電子UIの第5のUI要素上に表示され、前記第2の部分は、前記リンクされたアイテムに関連付けられる、付記14に記載の方法。
(付記16)
命令を記憶するように構成されている1つ以上の非一時的なコンピュータ可読記憶媒体であって、前記命令は、実行されることに応答して、システムに動作を実行させ、前記動作は、
1つ以上のウェブベースのリポジトリホストシステムにホストされたリポジトリのコレクションから第1のリポジトリセットを識別することであって、
識別することは、人気基準に基づいており、前記リポジトリのコレクション内の各リポジトリは、ソフトウェアコードまたはコードスニペットを含む、ことと、
前記1つ以上のウェブベースリポジトリホストシステムを含む1つ以上のデータソースから、識別された前記第1のリポジトリセットの各リポジトリのリポジトリメタデータを収集することと、
収集された前記リポジトリメタデータに対する1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットを生成することと、
前記1つ以上のデータソースから、生成された前記第1のトピックタグセットの各々に関連付けられた第1の統計セットを収集することと、
識別された前記第1のリポジトリセット、収集された前記リポジトリメタデータ、生成された前記第1のトピックタグセット、および収集された前記第1の統計セットのうちの1つ以上に基づいて、提示データセットを生成することと、
ユーザデバイスを制御して、生成された提示データセットを前記ユーザデバイスの電子ユーザインターフェース(UI)上に表示することと、を含む、非一時的なコンピュータ可読記憶媒体。
(付記17)
前記動作は、
ピリオドフィルタ、間隔フィルタ、または人気基準で指定された1つ以上の人気タグのうちの少なくとも1つを含む1つ以上の検索パラメータに基づいて複数のクエリ文字列を生成することであって、
生成された前記複数のクエリ文字列の各問い合わせ文字列は、前記1つ以上のデータソース上にホストされたウェブページの対応するURL(uniform resource locator)に付加される、ことと、
生成された前記複数のクエリ文字列を使用して、前記1つ以上のデータソースを照会して、第1の複数のテーブルを生成することであって、前記第1の複数のテーブルの各々は、1つ以上の人気タグに関連付けられたリポジトリをリストする、ことと、をさらに含み、
生成された前記第1の複数のテーブルの各々にリストされた前記リポジトリは、識別された前記第1のリポジトリセットに含まれる、付記14に記載の非一時的なコンピュータ可読記憶媒体。
(付記18)
前記動作は、
前記1つ以上のデータソースへの第1のアプリケーションプログラミングインターフェース(API)呼び出しセットを使用してリポジトリのリストを抽出することであって、
前記第1のAPI呼び出しセットの各API呼び出しは、ピリオドフィルタ、間隔フィルタ、または人気基準で指定された1つ以上の人気タグのうちの少なくとも1つを含む1つ以上の検索パラメータを含む、ことと、
第1の基準に基づいて抽出された前記リポジトリのリストをフィルタリングすることと、
フィルタリングされた前記リポジトリのリストを使用して、第2の複数のテーブルを追加することであって、
前記第2の複数のテーブルは、1つ以上の人気タグに従って追加され、
生成された前記第2の複数のテーブルをウォッチリストテーブルにマージすることと、をさらに含み、
前記ウォッチリストテーブルにリストされたリポジトリは、識別された前記第1のリポジトリセットに含まれる、付記16に記載の非一時的なコンピュータ可読記憶媒体。
(付記19)
識別された前記第1のリポジトリセットの各リポジトリのリポジトリメタデータは、1つ以上のデータソースへの第2のAPI呼び出しセットを使用することによって収集され、
前記リポジトリメタデータは、スケジュールの各間隔で定期的に収集される、付記18に記載の非一時的なコンピュータ可読記憶媒体。
(付記20)
プロセッサを含み、前記プロセッサは、
1つ以上のウェブベースのリポジトリホストシステムにホストされたリポジトリのコレクションから第1のリポジトリセットを識別することであって、
識別することは、人気基準に基づいており、前記リポジトリのコレクション内の各リポジトリは、ソフトウェアコードまたはコードスニペットを含む、ことと、
前記1つ以上のウェブベースリポジトリホストシステムを含む1つ以上のデータソースから、識別された前記第1のリポジトリセットの各リポジトリのリポジトリメタデータを収集することと、
収集された前記リポジトリメタデータに対する1つ以上の自然言語処理ベースの方法を使用することによって、第1のトピックタグセットを生成することと、
前記1つ以上のデータソースから、生成された前記第1のトピックタグセットの各々に関連付けられた第1の統計セットを収集することと、
識別された前記第1のリポジトリセット、収集された前記リポジトリメタデータ、生成された前記第1のトピックタグセット、および収集された前記第1の統計セットのうちの1つ以上に基づいて、提示データセットを生成することと、
ユーザデバイスを制御して、生成された提示データセットを前記ユーザデバイスの電子ユーザインターフェース(UI)上に表示することと、を行うように構成されている、システム。