IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ サービスナウ, インコーポレイテッドの特許一覧

特許7462678類似のテキスト文書のクラスタリング及び動的再クラスタリング
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-28
(45)【発行日】2024-04-05
(54)【発明の名称】類似のテキスト文書のクラスタリング及び動的再クラスタリング
(51)【国際特許分類】
   G06F 16/35 20190101AFI20240329BHJP
【FI】
G06F16/35
【請求項の数】 20
(21)【出願番号】P 2021564921
(86)(22)【出願日】2020-05-01
(65)【公表番号】
(43)【公表日】2022-07-07
(86)【国際出願番号】 US2020031173
(87)【国際公開番号】W WO2020227150
(87)【国際公開日】2020-11-12
【審査請求日】2021-12-27
(31)【優先権主張番号】62/843,007
(32)【優先日】2019-05-03
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/434,888
(32)【優先日】2019-06-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518249328
【氏名又は名称】サービスナウ, インコーポレイテッド
【氏名又は名称原語表記】ServiceNow, Inc.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】ジャヤラマン バスカー
(72)【発明者】
【氏名】ガナパシイ チトラバラシ
(72)【発明者】
【氏名】スラパネニ ディネッシュ クマール キショールクマール
(72)【発明者】
【氏名】フェン タオ
(72)【発明者】
【氏名】ワン ジュン
【審査官】酒井 恭信
(56)【参考文献】
【文献】米国特許出願公開第2019/0102682(US,A1)
【文献】米国特許出願公開第2017/0243112(US,A1)
【文献】特開2008-171418(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00 - 16/958
G06F 40/20 - 40/58
(57)【特許請求の範囲】
【請求項1】
管理されるネットワーク専用のエンドユーザ計算インスタンスと、
予測計算インスタンスであって、
前記エンドユーザ計算インスタンスから第1のテキストレコードを受信することと、
テキストレコードのクラスタのセットを表す機械学習(ML)クラスタリングモデルであって、クラスタの前記セット内の各テキストレコード及びクラスタの前記セットの各クラスタがベクトル空間内の個別の位置を有する、MLクラスタリングモデルによって、
前記第1のテキストレコードに基づいて、前記ベクトル空間内の前記第1のテキストレコードの位置を判定することであって、前記第1のテキストレコードの前記位置は前記第1のテキストレコードの生成時間及び前記第1のテキストレコードの解決時間に基づいていることと、
前記第1のテキストレコードの前記位置とテキストレコードのクラスタの前記セット内の特定のクラスタの前記個別の位置との間の前記ベクトル空間内の距離が閾値距離未満であると判定することにより、前記第1のテキストレコードが前記特定のクラスタに対応すると判定することと、
前記エンドユーザ計算インスタンスへ前記特定のクラスタの表現を送信することと、
前記エンドユーザ計算インスタンスから第2のテキストレコードを受信することと、
前記MLクラスタリングモデルによって、前記第2のテキストレコードがテキストレコードのクラスタの前記セットのテキストレコードの何れのクラスタにも対応しないと判定することと、
前記第2のテキストレコードがテキストレコードのクラスタの前記セットのテキストレコードの何れのクラスタにも対応しないと判定することに応答して、前記第2のテキストレコードを残余のテキストレコードの格納されたセットに追加することと、
残余のテキストレコードの格納された前記セットに基づいて、テキストレコードの追加のクラスタを識別することと、
前記エンドユーザ計算インスタンスへテキストレコードの前記追加のクラスタの表現を送信すること
を含む動作を実施するように構成された前記予測計算インスタンスと
を含む、リモートネットワーク管理プラットフォーム。
【請求項2】
前記予測計算インスタンスによって実施される前記動作は、
前記第1のテキストレコードを受信することの前に、前記エンドユーザ計算インスタンスから前記MLクラスタリングモデルを受信すること
を更に含む、請求項1に記載のリモートネットワーク管理プラットフォーム。
【請求項3】
前記予測計算インスタンスによって実施される前記動作は、
テキストレコードの前記追加のクラスタを更に表すために、前記MLクラスタリングモデルを拡張すること
を更に含む、請求項1に記載のリモートネットワーク管理プラットフォーム。
【請求項4】
前記予測計算インスタンスによって実施される前記動作は、
拡張された前記MLクラスタリングモデルを前記エンドユーザ計算インスタンスへ送信すること
を更に含む、請求項3に記載のリモートネットワーク管理プラットフォーム。
【請求項5】
前記予測計算インスタンスは第1の予測計算インスタンスであり、前記MLクラスタリングモデルは第1のMLクラスタリングモデルであり、前記第1の予測計算インスタンスによって実施される前記動作は、
前記第1のテキストレコードを受信することの前に、前記エンドユーザ計算インスタンスから第1の複数のテキストレコードを受信することと、
前記第1の複数のテキストレコードに基づいて前記第1のMLクラスタリングモデルを判定するために非確率的反復アルゴリズムを使用することであって、前記第1のMLクラスタリングモデルを判定するために前記非確率的反復アルゴリズムを使用することは、順番に、前記非確率的反復アルゴリズムを介して前記第1のMLクラスタリングモデルを更新するために前記第1の複数のテキストレコード内の各テキストレコードを使用することを含むこと
を更に含み、
前記リモートネットワーク管理プラットフォームは、第2の予測計算インスタンスであって、
前記エンドユーザ計算インスタンスから第3のテキストレコードを受信することと、
前記第2の予測計算インスタンスが前記エンドユーザ計算インスタンスに対応する最新のMLクラスタリングモデルを含まないと判定することと、
前記第2の予測計算インスタンスが前記エンドユーザ計算インスタンスに対応する最新のMLクラスタリングモデルを含まないと判定することに応答して、前記エンドユーザ計算インスタンスから、前記第1の複数のテキストレコード、前記第1の複数のテキストレコード内のテキストレコードの順序の指標、及び前記第1のテキストレコードを受信することと、
前記第1の複数のテキストレコード及び前記第1のテキストレコードに基づいて、テキストレコードのクラスタの第2のセットを表す第2のMLクラスタリングモデルを判定するために、前記非確率的反復アルゴリズムを使用することであって、前記第2のMLクラスタリングモデルを判定するために前記非確率的反復アルゴリズムを使用することは、順番に、前記非確率的反復アルゴリズムを介して前記第2のMLクラスタリングモデルを更新するために前記第1の複数のテキストレコード内の各テキストレコード及び前記第1のテキストレコードを使用することを含むことと、
前記第2のMLクラスタリングモデルによって、前記第3のテキストレコードがテキストレコードのクラスタの前記第2のセット内の第2の特定のクラスタに対応すると判定することと、
前記エンドユーザ計算インスタンスへ前記第2の特定のクラスタの表現を送信すること
を含む動作を実施するように構成された前記第2の予測計算インスタンスを更に含む、
請求項1に記載のリモートネットワーク管理プラットフォーム。
【請求項6】
前記MLクラスタリングモデルは第1のMLクラスタリングモデルであり、前記予測計算インスタンスによって実施される前記動作は、
前記エンドユーザ計算インスタンスから追加のテキストレコードを受信することと、
反復更新プロセスを介して前記第1のMLクラスタリングモデルを更新するために、前記追加のテキストレコードの各々を使用することと、
モデルリフレッシュ基準が満たされていると判定することと、
前記モデルリフレッシュ基準が満たされていると判定することに応答して、前記追加のテキストレコードに基づいて、テキストレコードのクラスタの第2のセットを表す第2のMLクラスタリングモデルを判定することであって、前記第2のMLクラスタリングモデルの各クラスタは、前記追加のテキストレコード内のテキストレコードの個別のセットに対応すること
を更に含む、請求項1に記載のリモートネットワーク管理プラットフォーム。
【請求項7】
前記予測計算インスタンスによって実施される前記動作は、
前記第1のMLクラスタリングモデルによって表されるテキストレコードのクラスタの第1のセットの優先クラスタの指標を受信することであって、前記追加のテキストレコードに基づいて前記第2のMLクラスタリングモデルを判定することは、前記優先クラスタに基づいて前記第2のMLクラスタリングモデルのテキストレコードのクラスタの第2のセット内の第1のクラスタを判定することを含むこと
を更に含む、請求項6に記載のリモートネットワーク管理プラットフォーム。
【請求項8】
前記ベクトル空間が第1のセマンティックに符号化されたベクトル空間及び第2のセマンティックに符号化されたベクトル空間を含み、前記MLクラスタリングモデルによって、前記第1のテキストレコードがテキストレコードのクラスタの前記セットから選択された前記特定のクラスタに対応すると判定するすることは、
(i)前記第1のセマンティックに符号化されたベクトル空間内において前記第1のテキストレコードの個別の単語の意味を説明する単語ベクトルを判定するために前記MLクラスタリングモデルを使用し、前記特定のクラスタに対応する、前記第1のセマンティックに符号化されたベクトル空間内の前記位置又はボリュームの内の少なくとも1つと前記単語ベクトルを比較すること、又は
(ii)前記第2のセマンティックに符号化されたベクトル空間内において前記第1のテキストレコードの複数の単語の意味を説明する段落ベクトルを判定するために前記MLクラスタリングモデルを使用し、前記特定のクラスタに対応する、前記第2のセマンティックに符号化されたベクトル空間内の前記位置又は前記ボリュームの内の少なくとも1つと前記段落ベクトルを比較すること
の内の少なくとも1つを含む、請求項1に記載のリモートネットワーク管理プラットフォーム。
【請求項9】
予測計算インスタンスによって、エンドユーザ計算インスタンスから、第1のテキストレコードを受信することであって、前記エンドユーザ計算インスタンスは管理されるネットワークに専用であり、前記予測計算インスタンス及び前記エンドユーザ計算インスタンスは両方とも、リモートネットワーク管理プラットフォーム内に配置されることと、
前記予測計算インスタンスによって、テキストレコードのクラスタのセットを表す前記予測計算インスタンスの機械学習(ML)クラスタリングモデルであって、クラスタの前記セットのクラスタ内の各テキストレコード及びクラスタの前記セットの各クラスタがベクトル空間内の個別の位置を有する、MLクラスタリングモデルを使用することによって、
前記第1のテキストレコードに基づいて、前記ベクトル空間内の前記第1のテキストレコードの位置を判定することであって、前記第1のテキストレコードの前記位置は前記第1のテキストレコードの生成時間及び前記第1のテキストレコードの解決時間に基づいていることと、
前記第1のテキストレコードの前記位置とテキストレコードのクラスタの前記セットから選択された特定のクラスタの前記個別の位置との間の前記ベクトル空間内の距離が閾値距離未満であると判定することにより、前記第1のテキストレコードが前記特定のクラスタに対応すると判定することと、
前記予測計算インスタンスによって、前記エンドユーザ計算インスタンスへ、前記特定のクラスタの表現を送信することと、
前記予測計算インスタンスによって、前記エンドユーザ計算インスタンスから、第2のテキストレコードを受信することと、
前記予測計算インスタンスによって、前記MLクラスタリングモデルを使用することによって、前記第2のテキストレコードがテキストレコードのクラスタの前記セットのテキストレコードの何れのクラスタにも対応しないと判定することと、
前記第2のテキストレコードがテキストレコードのクラスタの前記セットのテキストレコードの何れのクラスタにも対応しないと判定することに応答して、前記予測計算インスタンスによって、残余のテキストレコードの格納されたセットに前記第2のテキストレコードを追加することと、
前記予測計算インスタンスによって、残余のテキストレコードの格納された前記セットに基づいてテキストレコードの追加のクラスタを識別することと、
前記予測計算インスタンスによって、前記エンドユーザ計算インスタンスへ、テキストレコードの前記追加のクラスタの表現を送信すること
を含む方法。
【請求項10】
前記予測計算インスタンスは第1の予測計算インスタンスであり、前記MLクラスタリングモデルは第1のMLクラスタリングモデルであり、前記方法は、
前記第1の予測計算インスタンスによって、前記第1のテキストレコードを受信することの前に前記エンドユーザ計算インスタンスから、第1の複数のテキストレコードを受信することと、
前記第1のテキストレコードを受信することの前に、前記第1の予測計算インスタンスによって、前記第1の複数のテキストレコードに基づいて前記第1のMLクラスタリングモデルを判定するために非確率的反復アルゴリズムを使用することであって、前記第1のMLクラスタリングモデルを判定するために前記非確率的反復アルゴリズムを使用することは、順番に、前記非確率的反復アルゴリズムを介して前記第1のMLクラスタリングモデルを更新するために前記第1の複数のテキストレコード内の各テキストレコードを使用することを含むことと、
第2の予測計算インスタンスによって、前記エンドユーザ計算インスタンスから、第2のテキストレコードを受信することと、
前記第2の予測計算インスタンスによって、前記第2の予測計算インスタンスが、前記エンドユーザ計算インスタンスに対応する最新のMLクラスタリングモデルを含まないと判定することと、
前記第2の予測計算インスタンスが、前記エンドユーザ計算インスタンスに対応する最新のMLクラスタリングモデルを含まないと判定することに応答して、前記第2の予測計算インスタンスによって、前記エンドユーザ計算インスタンスから、前記第1の複数のテキストレコード、前記第1の複数のテキストレコード内のテキストレコードの順序の指標、及び前記第1のテキストレコードを受信することと、
前記第2の予測計算インスタンスによって、前記第1の複数のテキストレコード及び前記第1のテキストレコードに基づいてテキストレコードのクラスタの第2のセットを表す第2のMLクラスタリングモデルを判定するために前記非確率的反復アルゴリズムを使用することであって、前記第2のMLクラスタリングモデルを判定するために前記非確率的反復アルゴリズムを使用することは、順番に、前記非確率的反復アルゴリズムを介して前記第2のMLクラスタリングモデルを更新するために前記第1の複数のテキストレコード内の各テキストレコード及び前記第1のテキストレコードを使用することを含むことと、
前記予測計算インスタンスによって、前記第2のMLクラスタリングモデルを使用することによって、前記第2のテキストレコードが、テキストレコードのクラスタの前記第2のセットから選択された特定のクラスタに対応すると判定することと、
前記第2の予測計算インスタンスによって、前記エンドユーザ計算インスタンスへ、前記特定のクラスタの表現を送信すること
を更に含む、請求項9に記載の方法。
【請求項11】
前記ベクトル空間が第1のセマンティックに符号化されたベクトル空間及び第2のセマンティックに符号化されたベクトル空間を含み、前記予測計算インスタンスによって、前記MLクラスタリングモデルを使用することによって、前記第1のテキストレコードが、テキストレコードのクラスタの前記セットから選択された前記特定のクラスタに対応すると判定することは、
(i)前記第1のセマンティックに符号化されたベクトル空間内において前記第1のテキストレコードの個別の単語の意味を説明する単語ベクトルを判定するために前記MLクラスタリングモデルを使用し、前記特定のクラスタに対応する、前記第1のセマンティックに符号化されたベクトル空間内の前記位置又はボリュームの内の少なくとも1つと前記単語ベクトルを比較すること、又は
(ii)前記第2のセマンティックに符号化されたベクトル空間内において前記第1のテキストレコードの複数の単語の意味を説明する段落ベクトルを判定するために前記MLクラスタリングモデルを使用し、前記第2のセマンティックに符号化されたベクトル空間内の前記位置又は前記ボリュームの内の少なくとも1つと前記段落ベクトルを比較すること
の内の少なくとも1つを更に含む、請求項9に記載の方法。
【請求項12】
リモートネットワーク管理プラットフォーム内に配置された予測計算インスタンスによって、複数のクラスタに分割された複数のテキストレコードとテキストレコードの残余のセットとを取得することであって、前記複数のテキストレコードの各テキストレコード、前記複数のクラスタの各クラスタ、及びテキストレコードの前記残余のセットの各テキストレコードがベクトル空間内の個別の位置を有し、前記予測計算インスタンスの機械学習(ML)クラスタリングモデルは、類似性メトリックに基づいて前記複数のテキストレコードを前記複数のクラスタに分割するように構成されることと、
前記予測計算インスタンスによって、前記リモートネットワーク管理プラットフォームの外部に配置されたクライアントデバイスから、クエリを表す特定のテキストレコードを受信することと、
前記予測計算インスタンスによって、前記MLクラスタリングモデルを経由して、及び前記類似性メトリックに基づいて、
前記特定のテキストレコードに基づいて、前記特定のテキストレコードの位置を判定することであって、前記特定のテキストレコードの前記位置は前記特定のテキストレコードの生成時間及び解決時間に基づいていることと、
前記特定のテキストレコードの前記位置と前記複数のクラスタの各々の前記個別の位置との間の前記ベクトル空間内の距離が閾値距離よりも大きいと判定することにより、前記特定のテキストレコードが前記複数のクラスタの何れにも適合しないと判定することと、
前記特定のテキストレコードが前記複数のクラスタの何れにも適合しないと判定することに応答して、前記予測計算インスタンスによって、前記特定のテキストレコードをテキストレコードの前記残余のセットに追加すること
を含む、方法。
【請求項13】
前記予測計算インスタンスによって、前記クライアントデバイスから、第2のクエリを表す第2の特定のテキストレコードを受信することと、
前記予測計算インスタンスによって、前記MLクラスタリングモデルを経由して、及び前記類似性メトリックに基づいて、
前記第2の特定のテキストレコードに基づいて、前記第2の特定のテキストレコードの位置を判定することであって、前記第2の特定のテキストレコードの前記位置は前記第2の特定のテキストレコードの生成時間及び解決時間に基づいていることと、
前記第2の特定のテキストレコードの前記位置と前記複数のクラスタの特定のクラスタの前記個別の位置との間の前記ベクトル空間内の第2の距離が前記閾値距離未満であると判定することにより、前記第2の特定のテキストレコードが前記特定のクラスタに適合すると判定することと、
前記第2の特定のテキストレコードが前記複数のクラスタの前記特定のクラスタに適合すると判定することに応答して、前記予測計算インスタンスによって、前記第2の特定のテキストレコードを前記特定のクラスタに追加すること
を更に含む、請求項12に記載の方法。
【請求項14】
前記予測計算インスタンスによって、前記特定のテキストレコードが前記特定のクラスタに適合すると判定することは、前記特定のテキストレコードが他の全てのクラスタに適合するよりも前記特定のテキストレコードが前記特定のクラスタにより良く適合することを前記類似性メトリックが指し示すと判定することを含む、請求項13に記載の方法。
【請求項15】
前記予測計算インスタンスによって、前記特定のテキストレコードが前記特定のクラスタに適合すると判定することは、前記類似性メトリックに基づいて、前記特定のテキストレコードと前記特定のクラスタとの間の類似度が指定された閾値類似性を超えると判定することを含む、請求項13に記載の方法。
【請求項16】
前記予測計算インスタンスによって、前記MLクラスタリングモデルを経由して、テキストレコードの前記残余のセットが更なるクラスタを含むことを識別することと、
前記予測計算インスタンスによって、前記複数のクラスタに前記更なるクラスタを追加することと、
前記予測計算インスタンスによって、テキストレコードの前記残余のセットから、前記更なるクラスタの構成テキストレコードを削除すること
を更に含む、請求項12に記載の方法。
【請求項17】
前記ベクトル空間が第1のセマンティックに符号化されたベクトル空間及び第2のセマンティックに符号化されたベクトル空間を含み、前記予測計算インスタンスによって、前記特定のテキストレコードが前記複数のクラスタの何れにも適合しないと判定することは、
(i)前記第1のセマンティックに符号化されたベクトル空間内において前記特定のテキストレコードの個別の単語の意味を説明する単語ベクトルを判定するために前記MLクラスタリングモデルを使用し、前記複数のクラスタに夫々対応する、前記第1のセマンティックに符号化されたベクトル空間内の位置又はボリュームの内の少なくとも1つと前記単語ベクトルを比較すること、又は
(ii)前記第2のセマンティックに符号化されたベクトル空間内において前記特定のテキストレコードの複数の単語の意味を説明する段落ベクトルを判定するために前記MLクラスタリングモデルを使用し、前記複数のクラスタに夫々対応する、前記第2のセマンティックに符号化されたベクトル空間内の位置又はボリュームの内の少なくとも1つと前記段落ベクトルを比較すること
の内の少なくとも1つを含む、請求項12に記載の方法。
【請求項18】
前記予測計算インスタンスによって、前記第1のテキストレコードを受信する前に前記エンドユーザ計算インスタンスから前記MLクラスタリングモデルを受信することを含む、請求項9に記載の方法。
【請求項19】
前記予測計算インスタンスによって、テキストレコードの前記追加のクラスタを更に表すために前記MLクラスタリングモデルを拡張することを含む、請求項9に記載の方法。
【請求項20】
前記予測計算インスタンスによって、拡張された前記MLクラスタリングモデルを前記エンドユーザ計算インスタンスに送信することを含む、請求項19に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願へのクロスリファレンス]
この出願は、2019年5月3日に出願された米国非仮特許出願第62/843,007の利益を主張し、その全体が参照によりその内容を組み込む。
【背景技術】
【0002】
テキストのサンプルを類似のグループにクラスタリングすることは、様々なアプリケーションにおいて有益である。このことは、テキストサンプルのコーパス内のテキストサンプルの相互に関連するグループを識別することによってテキスト検索を容易にするために行われ得る。こうしたグループ化は、関連するテキストサンプルのクラスタ(例えば、クエリテキスト文字列に類似したテキストサンプルのクラスタ)内のテキストサンプルに検索を限定することによって、テキスト検索又はその他のテキスト関連の処理を容易にし得、関連するテキストサンプルのクラスタ内にはないテキストレコードを通じた検索の時間及び計算コストを回避する。また、(例えば、地理的情報、タイムスタンプ、気象関連情報、技術システムの性能又は動作に関連する情報を含む)非テキスト情報を含むレコードのテキスト部分内のそうしたクラスタを識別することは、非テキスト情報に基づく動作を容易にし得る。
【発明の概要】
【課題を解決するための手段】
【0003】
自然言語処理又はその他の方法は、テキストサンプルのクラスタを生成することと、個々のテキストサンプルに対して、個々のテキストサンプルが割り当てられるべき1つ以上のクラスタを識別することのために使用され得る。このことは、テキストサンプル間及び/又はテキストサンプルとクラスタ内のテキストサンプルとの間の判定された類似性に基づいて行われ得る。このクラスタリングは、(例えば、サンプルレベルの検索を検索クエリに関連する識別されたクラスタ内のテキストサンプルに限定することによって)テキストサンプル内の検索を容易にすることと、その動作がテキストサンプルに関連する管理されるネットワークのモデリングを容易にすることと、クラスタに割り当てられた他のテキストサンプルに応答して実装された場合に有効であった一連の活動を識別及び/又は自動的に実装することと、特定のクラスタ内のテキストサンプルと関連付けられたインシデントレポートの全てを解決すること、さもなければグループとして操作することと、又はその他の利点を提供することのために行われ得る。
【0004】
1つの可能な例では、クエリは、ユーザが経験している問題を説明するテキストのサンプルを含み得る。機械学習(ML)モデル又はその他の何らかのアルゴリズムは、クエリを、該クエリに類似する他のテキストレコード(textual record)のクラスタ(例えば、他のクエリ、クエリ及び/又はその解決策を含むインシデントレポート、知識ベースの記事)に割り当てるためにその後適用され得る。選択されたクラスタに関連する情報は、ユーザ及び/又は技術者にその後提供され得る。こうした情報は、知識ベースの記事、解決された類似のインシデントレポート、又はクエリに対する解決策及び/若しくは回答を提供し得るその他の何らかの情報を含み得る。追加的又は代替的に、解決策の判定及び/又はクエリへの回答を容易にするために、選択されたクラスタ内の類似のクエリ又はその他の情報が提供され得る。このクラスタリングは、ユーザに提供される結果の品質を改善し得、及び/又はクエリにより表される問題への解決策を判定及び実装する前にユーザが費やす時間の量を削減し得る。
【0005】
しかしながら、そうしたクラスタリングを実装することは、計算コストが高くなり得、テキストレコードのトレーニングコーパスに基づいてMLクラスタリングモデルを生成するために、大規模なプロセッササイクル、メモリ、又はその他のリソースを必要とする。したがって、MLモデルは、規則的なスケジュールに従って、テキストレコードの更新されたトレーニングセットに基づいて再生成され得る。ユーザは、価値を有するクラスタを手動で指定し得、指定されたクラスタは、指定されたクラスタの利点を維持するために、MLモデルの再生成を通じて保持され得る。例えば、識別されたクラスタは、進行中のイベント、及び/又はユーザが引き続き経験する可能性のあるインシデントのクラスに対応し得る。指定されたクラスタを保持することは、指定されたクラスタに基づいて、再生成されたMLモデル内のクラスタの内の1つを定義することを含み得る。例えば、再生成されたMLモデル内のクラスタは、指定されたクラスタに属するトレーニングテキストサンプルの識別に基づいて、指定されたクラスタを定義する重心又はその他の情報に基づいて、又は指定されたその他の何らかの特徴に基づいて定義され得る。追加的に又は代替的に、指定されたクラスタを保持することは、MLモデルの再生成のシードとして、指定されたクラスタについての情報を使用することを含み得る。
【0006】
MLモデルのスケジュールされた再生成の間に、追加のテキストレコード(例えば、新たに生成されたインシデントレポート)が蓄積され得る。これらの追加レコードは、MLモデルに反映されていない追加のクラスタに属し得、そのため、MLモデルのクラスタに誤って割り当てられ得、及び/又は残余のテキストレコードのセットに割り当てられ得る。追加のテキストレコードを含むためにMLモデルを完全に再生成する計算コストを回避するために、MLモデルは、追加のテキストレコードによって表される情報を考慮に入れるために、反復更新アルゴリズムを介して更新され得る。
【0007】
このことは、残余のテキストレコードのセット内からテキストレコードの追加のクラスタを形成することを試みることを含み得る。新たなテキストレコードが受信された場合、それは既存のクラスタと比較され得る。新たなテキストレコードが(例えば、指定された閾値類似性よりもクラスタの各々との類似性が低いことによって)既存のクラスタの何れにも適合しない場合、新たなテキストレコードは残余のテキストレコードのセットに割り当てられ得る。したがって、残余のテキストレコードのセットは、MLモデルにより定義されたクラスタの何れにも属さないとMLモデルにより判定されたテキストレコードを含むようになる。残余内で1つ以上の追加のクラスタが識別された場合、MLモデルは、追加のクラスタを含むように更新され得る。また、識別された追加のクラスタに対応する、残余のテキストレコードのセット内からの任意のテキストレコードは、残余のセットから追加のクラスタに再割り当てされ得る。
【0008】
幾つかの例では、ユーザは、クラスタ形成が起こるべきアプリオリな条件を手動で指定し得る。こうした手動で指定された条件は、地理的位置、タグ若しくは他のメタデータ、テキストレコードと関連付けられた個人の識別子(例えば、テキストレコードの一部を形成するインシデントレポートを生成したユーザ)に従って、又はその他の何らかの考慮事項に従って指定され得る。ユーザ指定の条件内で更なるクラスタがその後識別され得る。この手動の事前クラスタリングは、様々な利点を提供し得る。例えば、クラスタリングアルゴリズムは、より少ないテキストレコードを動作することによって、より効率的に実施し得る。これらの方法はまた、生成されたクラスタがそれらの考慮事項と揃うように、識別されたクラスタを組織の考慮事項と揃えることによって利点を提供し得る。また、ユーザ指定の条件内で生成されたクラスタは、ユーザ指定の条件によって可能になる事前パーティション化に起因して改善され得る。
【0009】
テキストレコードのコーパス内の1つ以上のテキストレコードの表現を送信することは、様々な異なる情報を送信することを含み得る。幾つかの例では、テキストレコードの表現を送信することは、識別番号(例えば、グローバルユニーク識別子(GUID))、日時スタンプ、データベース内の位置、又はエンドユーザインスタンスがデータベース内の表現されたテキストレコードを識別すること、さもなければ表現されたテキストレコードにアクセスすることを可能にし得るその他の何らかの識別情報を送信することを含む。追加的又は代替的に、テキストレコードの表現を送信することは、テキストレコード自体又はその一部分のコピーを送信することを含み得る。例えば、テキストレコードの表現を送信することは、インシデントレポートの“問題解決”フィールドのコピーを送信することを含み得る。
【0010】
テキストレコードのコーパス内の1つ以上のテキストレコードの表現を送信することは、テキストレコードの1つ以上のクラスタの表現を送信することを含み得る。このことは、識別番号(例えば、GUID)、データベース内の位置、又はエンドユーザインスタンスがテキストレコードの表現されたクラスタを識別することを可能にし得るその他の何らかの識別情報を送信することを含み得る。追加的又は代替的に、テキストレコードのクラスタのコンテンツの表現が送信され得る。このことは、クラスタ内のテキストレコードに対する識別情報(例えば、GUID、データベース内の位置)、クラスタ内のテキストレコードのコンテンツの全て又は一部(例えば、クラスタ内のインシデントレポートの“問題解決”フィールドからのテキスト)、クラスタと関連付けられた1つ以上の代表的なテキストレコードのコンテンツ(例えば、クラスタと関連付けられた知識ベースの記事、“問題解決”フィールド、又はクラスタの重心に近いインシデントレポートのその他のコンテンツ)、又はクラスタと関連付けられたその他の何らかのコンテンツを送信することを含み得る。
【0011】
テキストレコード間の類似性を判定すること、及びそうした判定された類似性に基づいてクラスタリングを実施することのための本明細書に説明する方法は、他のタイプのレコードに適用され得ることに留意されたい。例えば、テキストの態様(例えば、問題、問題の解決策、又はその他の何らかの情報を説明するインシデントレポートのテキストフィールド)と非テキストの態様(例えば、日付、地理的位置、列挙されたカテゴリ、ユーザ若しくは技術者に関連する識別子、又はインシデントレポートの他の非テキスト情報)とは、テキスト情報と非テキスト情報との両方に基づいてMLモデルによってクラスタリングされ得る。実際、本明細書に説明する方法は、数値的類似性を判定すること、及び/又は完全に非テキストのレコード(例えば、治療を受ける個人の遺伝子型/表現型情報の組み合わせ、メディア又はネットワークサービスのユーザに対する過去の使用統計等)に対してそうした判定された数値的類似性に基づいてクラスタリングを実行することのために適用され得る。
【0012】
したがって、第1の例示的実施形態は、(i)予測計算インスタンスによって、及びエンドユーザ計算インスタンスから第1のテキストレコードを受信することであって、エンドユーザ計算インスタンスは管理されるネットワーク専用であり、予測計算インスタンス及びエンドユーザ計算インスタンスの両方ともリモートネットワーク管理プラットフォーム内に配備されることと、(ii)テキストレコードのクラスタのセットを表す予測計算インスタンスのMLクラスタリングモデルによって、第1のテキストレコードがテキストレコードのクラスタのセット内の特定のクラスタに対応すると判定することと、(iii)予測計算インスタンスによって、及びエンドユーザ計算インスタンスへ、特定のクラスタの表現を送信することと、(iv)予測計算インスタンスによって、及びエンドユーザ計算インスタンスから、第2のテキストレコードを受信することと、(v)MLクラスタリングモデルによって、第2のテキストレコードがテキストレコードのクラスタのセットのテキストレコードの何れのクラスタにも対応しないと判定することと、(vi)第2のテキストレコードがテキストレコードのクラスタのセットのテキストレコードの何れのクラスタにも対応しないと判定することに応答して、予測計算インスタンスによって、残余のテキストレコードの格納されたセットに第2のテキストレコードを追加することと、(vii)予測計算インスタンスによって、残余のテキストレコードの格納されたセットに基づいてテキストレコードの追加のクラスタを識別することと、(viii)予測計算インスタンスによって、及びエンドユーザ計算インスタンスへ、テキストレコードの追加のクラスタの表現を送信することを含むコンピュータ実装方法を含み得る。
【0013】
第2の例示的実施形態では、コンピュータ実装方法は、(i)第1の複数のテキストレコードを受信することと、(ii)複数のテキストレコードに基づいて、テキストレコードのクラスタの第1のセットを表す第1のMLクラスタリングモデルを判定することであって、第1のMLクラスタリングモデルの各クラスタは、第1の複数のテキストレコード内のテキストレコードの個別のセットに対応することと、(iii)追加のテキストレコードを受信することと、(iv)反復更新プロセスを介して第1のMLクラスタリングモデルを更新するために追加のテキストレコードを使用することと、(v)第1のMLクラスタリングモデルによって表されるテキストレコードのクラスタの第1のセットの優先クラスタの指標を受信することと、(vi)モデルリフレッシュ基準が満たされていると判定することと、(vii)モデルリフレッシュ基準が満たされていると判定することに応答して、追加のテキストレコードに基づいて、テキストレコードのクラスタの第2のセットを表す第2のMLクラスタリングモデルを判定することであって、第2のMLクラスタリングモデルの各クラスタは、追加のテキストレコード内のテキストレコードの個別のセットに対応し、第2のMLクラスタリングモデルのテキストレコードのクラスタの第2のセット内の第1のクラスタは、優先クラスタに基づいて判定されることを含む。
【0014】
第3の例示的実施形態では、コンピュータ実装方法は、(i)クラスタに分割された複数のテキストレコード及びテキストレコードの残余のセットを取得することであって、MLクラスタリングモデルは、類似性メトリックに基づいて複数のテキストレコードを分割したことと、(ii)クライアントデバイスから、クエリを表す特定のテキストレコードを受信することと、(iii)MLクラスタリングモデルを経由して、及び類似性メトリックに基づいて、特定のテキストレコードがクラスタの何れにも適合しないと判定することと、(iv)特定のテキストレコードがクラスタの何れにも適合しないと判定することに応答して、特定のテキストレコードをテキストレコードの残余のセットに追加することを含む。
【0015】
第4の例示的実施形態では、製品は、コンピューティングシステムにより実行されると、コンピューティングシステムに第1、第2、又は第3の例示的実施形態に従った動作を実施させるプログラム命令をその上に格納した、非一時的コンピュータ可読媒体を含み得る。
【0016】
第5の例示的実施形態では、コンピューティングシステムは、少なくとも1つのプロセッサ、並びにメモリ及びプログラム命令を含み得る。プログラム命令は、メモリ内に格納され得、少なくとも1つのプロセッサによって実行されると、コンピューティングシステムに第1、第2、又は第3の例示的実施形態に従った動作を実行させ得る。
【0017】
第6の例示的実施形態では、システムは、第1、第2、又は第3の例示的実施形態の動作の各々を実行するための様々な手段を含み得る。
【0018】
これらの並びにその他の実施形態、態様、利点、及び代替物は、添付の図面を適切に参照して、以下の詳細な説明を読むことによって当業者に明らかになるであろう。更に、この発明の概要並びに本明細書で提供される他の説明及び図は、例としてのみ実施形態を説明することを意図しており、したがって、多くの変形が可能である。実例として、構造要素及びプロセスステップは、請求されるような実施形態の範囲内にとどまりながら、再配置され得、組み合され得、分散され得、省略され得、さもなければ変更され得る。
【図面の簡単な説明】
【0019】
図1】例示的実施形態に従ったコンピューティングデバイスの概略図を説明する。
図2】例示的実施形態に従ったサーバデバイスクラスタの概略図を説明する。
図3】例示的実施形態に従ったリモートネットワーク管理アーキテクチャを描写する。
図4】例示的実施形態に従ったリモートネットワーク管理アーキテクチャを含む通信環境を描写する。
図5A】例示的実施形態に従ったリモートネットワーク管理アーキテクチャを含む別の通信環境を描写する。
図5B】例示的実施形態に従ったフローチャートである。
図6】例示的実施形態に従ったインシデントレポートを描写する。
図7】例示的実施形態に従ったデータベースクエリアーキテクチャを描写する。
図8A】例示的実施形態に従った、単語のコンテクスト上の意味を学習するために構成された人工ニューラルネットワーク(ANN)を描写する。
図8B】例示的実施形態に従った、図9AのANNのためのトレーニングデータのセットを描写する。
図9A】例示的実施形態に従った、単語のコンテクスト上の意味を学習するために構成された人工ニューラルネットワーク(ANN)を描写する。
図9B】例示的実施形態に従った、図9AのANNのためのトレーニングデータのセットを描写する。
図10A】例示的実施形態に従った、段落ベクトルに対するANNのトレーニングを描写する。
図10B】例示的実施形態に従った、段落ベクトルに対するANNのトレーニングを描写する。
図10C】例示的実施形態に従った、段落ベクトルに対するANNのトレーニングを描写する。
図10D】例示的実施形態に従った、以前に見られなかった段落の段落ベクトルを判定するために、トレーニングされたANNを使用することを描写する。
図11A】例示的実施形態に従った2次元空間内のレコードの位置を示す。
図11B】例示的実施形態に従った、クラスタにグループ化された図11Aのレコードを描写する。
図11C】例示的実施形態に従った、クラスタにグループ化された図11Aのレコードを描写する。
図11D】例示的実施形態に従った、クラスタにグループ化された図11Aのレコードを描写する。
図11E】例示的実施形態に従った、クラスタにグループ化された図11Aのレコードを描写する。
図11F】例示的実施形態に従った、クラスタにグループ化された図11Aのレコードを描写する。
図12A】例示的実施形態に従った、2次元空間内のレコードの位置を描写する。
図12B】例示的実施形態に従った、レコードの内の幾つかがクラスタの何れにも属さない、クラスタにグループ化された図12Aのレコードを描写する。
図12C】例示的実施形態に従った、レコードの内の幾つかがクラスタの何れにも属さない、クラスタにグループ化された図12Aのレコードと、追加のレコードのセットとを描写する。
図12D】例示的実施形態に従った、レコードの内の幾つかがクラスタの何れにも属さない、クラスタにグループ化された図12Cのレコードを描写する。
図13】例示的実施形態に従ったフローチャートである。
図14】例示的実施形態に従ったフローチャートである。
【発明を実施するための形態】
【0020】
例示的な方法、デバイス、及びシステムが本明細書に説明される。本明細書では、単語“例”及び“例示的”は、“例、実例、又は例証として役立つ”ことを意味するために使用されることを理解すべきである。“例”又は“例示的”であるとして本明細書に説明される任意の実施形態又は機構は、そのように述べられない限り、必ずしも他の実施形態又は機構よりも好ましい又は有利であると解釈されるべきではない。したがって、本明細書に提示される主題の範囲から逸脱することなく、他の実施形態が利用され得、他の変更がなされ得る。
【0021】
したがって、本明細書に説明する例示的実施形態は、限定することを意図しない。本明細書に一般的に説明され、図に説明されるような本開示の態様が、多種多様な異なる構成で配置され得、置換され得、組み合わされ得、分離され得、及び設計され得ることは容易に理解されるであろう。例えば、“クライアント”コンポーネントと“サーバ”コンポーネントとへの機構の分離は、様々な方法で生じ得る。
【0022】
更に、文脈が他のことを示唆しない限り、図の各々に示される機構は、相互に組み合わせて使用され得る。したがって、図は、一般的に、各実施形態に対して全ての説明された機構が必要であるとは限らないことを理解すると共に、1つ以上の全体的な実施形態のコンポーネントの態様としてみなされるべきである。
【0023】
また、この明細書又は特許請求の範囲における要素、ブロック、又はステップの任意の列挙は、明確にする目的のためのものである。したがって、そうした列挙は、これらの要素、ブロック、又はステップが特定の配置に準拠すること、又は特定の順序で実行されることを必要とする又は暗示するものとして解釈されるべきではない。
【0024】
I. はじめに
大企業は、多くの相互に関連する動作を伴う複雑なエンティティである。これらの幾つかは、人材(HR)、サプライチェーン、情報技術(IT)、財務等、企業全体で見られる。しかしながら、各企業はまた、本質的な能力を提供し、及び/又は競争上の優位性を創出する独自の動作を有する。
【0025】
広く実装された動作をサポートするために、企業は通常、顧客関係管理(CRM)及び人的資本管理(HCM)パッケージ等の既製のソフトウェアアプリケーションを使用する。しかしながら、それらの独自の要件を満たすためにカスタムソフトウェアアプリケーションを必要とすることもあり得る。大企業は、数十又は数百のこれらのカスタムソフトウェアアプリケーションをしばしば有する。それにもかかわらず、本明細書の実施形態によって提供される利点は、大企業に限定されず、任意の規模の企業又は任意の他のタイプの組織に適用可能であり得る。
【0026】
多くのそうしたソフトウェアアプリケーションは、企業内の個々の部門によって開発される。これらは、単純なスプレッドシートからカスタムビルドのソフトウェアツール及びデータベースにまで及ぶ。しかしながら、サイロ化されたカスタムソフトウェアアプリケーションの急増は、多くの欠点を有する。そのことは、その動作を運営及び拡大し、革新し、規制要件を満たす企業の能力に悪影響を及ぼす。企業は、そのサブシステムとデータとを統合する単一のシステムを欠くことに起因して、その動作を統合、合理化、及び強化することが難しいと感じることがある。
【0027】
カスタムアプリケーションを効率的に作成するために、企業は、不必要な開発の複雑さを排除する、リモートでホストされたアプリケーションプラットフォームからの利益を得るであろう。そうしたプラットフォームの目標は、ソフトウェアエンジニア及び他の役割の個人が独自の高価値の機構の開発に集中できるように、時間のかかる反復的なアプリケーション開発タスクを削減することであろう。
【0028】
この目標を達成するために、企業全体のワークフローをインテリジェントに自動化するように、サービスとしてのアプリケーションプラットフォーム(aPaaS)の概念が導入される。aPaaSシステムは企業からリモートでホストされるが、安全な接続を経由して企業内のデータ、アプリケーション、及びサービスにアクセスし得る。そうしたaPaaSシステムは、幾つかの有利な能力及び特徴を有し得る。これらの利点及び特徴は、IT、HR、CRM、顧客サービス、アプリケーション開発、及びセキュリティに対する企業の動作とワークフローとを改善することが可能であり得る。
【0029】
aPaaSシステムは、モデルビューコントローラ(MVC)アプリケーションの開発及び実行をサポートし得る。MVCアプリケーションは、情報の表現をユーザに情報が提示される方法から分離するために、それらの機能を3つの相互接続された部分(モデル、ビュー、及びコントローラ)に分割し、それによって、効率的なコードの再利用と並列開発とを可能にする。これらのアプリケーションはウェブベースであり得、作成、読み出し、更新、削除(CRUD)機能を提供し得る。このことは、新たなアプリケーションが共通のアプリケーションインフラストラクチャ上に構築されることを可能にする。
【0030】
aPaaSシステムは、グラフィカルユーザインターフェース(GUI)開発のためのウィジェットの標準化されたセット等の標準化されたアプリケーションコンポーネントをサポートし得る。このように、aPaaSシステムを使用して構築されたアプリケーションは、共通のルックアンドフィールを有する。他のソフトウェアコンポーネント及びモジュールも標準化され得る。幾つかの場合、このルックアンドフィールは、企業のカスタムロゴ及び/又は配色でブランド化又はスキン化され得る。
【0031】
aPaaSシステムは、メタデータを使用してアプリケーションの挙動を構成する能力をサポートし得る。このことは、アプリケーションの挙動が特定のニーズに合わせて迅速に適応されることを可能にする。こうしたアプローチは、開発時間を削減し、柔軟性を増加させる。更に、aPaaSシステムは、メタデータの作成と管理とを容易にするGUIツールをサポートし得、したがって、メタデータのエラーを削減する。
【0032】
aPaaSシステムは、ソフトウェア開発者が望ましくないアプリケーション間の依存性を回避し得るように、アプリケーション間の明確に定義されたインターフェースをサポートし得る。したがって、aPaaSシステムは、永続的な状態情報及びその他のデータが格納されるサービス層を実装し得る。
【0033】
aPaaSシステムは、その上のアプリケーションが従来のアプリケーション及びサードパーティアプリケーションと相互作用し得るように、統合機構の豊富なセットをサポートし得る。実例として、aPaaSシステムは、従来のHR、IT、及び会計システムと統合するカスタム社員オンボーディングシステムをサポートし得る。
【0034】
aPaaSシステムは、企業グレードのセキュリティをサポートし得る。更に、aPaaSシステムはリモートでホストされ得るので、それは、企業内のシステムと、又は企業外でホストされたサードパーティのネットワーク及びサービスと相互作用する場合にも、セキュリティ手順を利用すべきである。例えば、aPaaSシステムは、一般的なセキュリティの脅威を検出及び識別するために、企業及び他の関係者の間でデータを共有するように構成され得る。
【0035】
aPaaSシステムの他の機構、機能、及び利点が存在し得る。この説明は例を目的としており、限定することを意図しない。
【0036】
aPaaS開発プロセスの例として、ソフトウェア開発者は、aPaaSシステムを使用して新たなアプリケーションを作成するようにタスクを課され得る。まず、開発者は、アプリケーションが使用するデータのタイプとそれらの間の関係とを特定するデータモデルを定義し得る。その後、aPaaSシステムのGUIを介して、開発者はデータモデルを入力(例えば、アップロード)する。aPaaSシステムは、対応するデータベーステーブル、フィールド、及び関係の全てを自動的に作成し、それらは、オブジェクト指向サービス層を介してその後アクセスされ得る。
【0037】
また、aPaaSシステムは、クライアント側インターフェース及びサーバ側CRUDロジックを備えた完全に機能するMVCアプリケーションをも構築し得る。この生成されたアプリケーションは、ユーザに対して更なる開発の基礎として役立ち得る。有利なことに、開発者は基本的なアプリケーション機能に多くの時間を費やす必要がない。更に、アプリケーションはウェブベースであり得るので、それは、インターネット対応の任意のクライアントデバイスからアクセスされ得る。代替的又は追加的に、実例としてインターネットサービスが利用可能ではない場合、アプリケーションのローカルコピーにアクセスすることが可能であり得る。
【0038】
aPaaSシステムは、アプリケーションに追加され得る事前定義された機能の豊富なセットをもサポートし得る。これらの機構は、検索、電子メール、テンプレート、ワークフロー設計、レポート、分析、ソーシャルメディア、スクリプト、モバイルフレンドリーな出力、及びカスタマイズされたGUIに対するサポートを含む。
【0039】
以下の実施形態は、例示的なaPaaSシステムのアーキテクチャ及び機能の態様、並びにその機構及び利点を説明する。
【0040】
II. コンピューティングデバイス及びクラウドベースのコンピューティング環境の例
図1は、コンピューティングデバイス100を例示する簡略化されたブロック図であり、本明細書の実施形態に従って動作するように配置されたコンピューティングデバイス内に含まれ得るコンポーネントの内の幾つかを説明する。コンピューティングデバイス100は、クライアントデバイス(例えば、ユーザによってアクティブに動作されるデバイス)、サーバデバイス(例えば、クライアントデバイスに計算サービスを提供するデバイス)、又は他の何らかのタイプの計算プラットフォームであり得る。幾つかのサーバデバイスは、特定の動作を実施するためにクライアントデバイスとして時折動作し得、幾つかのクライアントデバイスはサーバの機構を組み込み得る。
【0041】
この例では、コンピューティングデバイス100は、プロセッサ102、メモリ104、ネットワークインターフェース106、及び入力/出力ユニット108を含み、それらの全ては、システムバス110又は同様のメカニズムによって結合され得る。幾つかの実施形態では、コンピューティングデバイス100は、他のコンポーネント及び/又は周辺デバイス(例えば、取り外し可能なストレージ及びプリンタ等)を含み得る。
【0042】
プロセッサ102は、中央処理装置(CPU)、コプロセッサ(例えば、数学、グラフィックス、又は暗号化コプロセッサ)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、及び/又はプロセッサの動作を実施する集積回路若しくはコントローラの形式等の任意のタイプのコンピュータ処理要素の内の1つ以上であり得る。幾つかの場合、プロセッサ102は、1つ以上のシングルコアプロセッサであり得る。他の場合、プロセッサ102は、複数の独立した処理ユニットを備えた1つ以上のマルチコアプロセッサであり得る。プロセッサ102はまた、実行されている命令及び関連データを一時的に格納するためのレジスタメモリ、並びに最近使用された命令及びデータを一時的に格納するためのキャッシュメモリを含み得る。
【0043】
メモリ104は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、及び不揮発性メモリ(例えば、フラッシュメモリ、ハードディスクドライブ、ソリッドステートドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、及び/又はテープストレージ)を含むがそれらに限定されない任意の形式のコンピュータ使用可能メモリであり得る。したがって、メモリ104は、メインメモリユニットと長期ストレージとの両方を表す。その他のタイプのメモリは、生体メモリを含み得る。
【0044】
メモリ104は、プログラム命令及び/又はプログラム命令が動作し得るデータを格納し得る。例として、メモリ104は、この明細書又は添付の図面に開示される方法、プロセス、又は動作の内の何れかを実行するためにプロセッサ102によって命令が実行可能であるように、これらのプログラム命令を非一時的コンピュータ可読媒体上に格納し得る。
【0045】
図1に示されるように、メモリ104は、ファームウェア104A、カーネル104B、及び/又はアプリケーション104Cを含み得る。ファームウェア104Aは、コンピューティングデバイス100の内の幾つか又は全てをブート、さもなければ開始するために使用されるプログラムコードであり得る。カーネル104Bは、メモリ管理、プロセスのスケジューリング及び管理、入力/出力、並びに通信のためのモジュールを含むオペレーティングシステムであり得る。カーネル104Bはまた、オペレーティングシステムがコンピューティングデバイス100のハードウェアモジュール(例えば、メモリユニット、ネットワークインターフェース、ポート、及びバス)と通信することを可能にするデバイスドライバを含み得る。アプリケーション104Cは、ウェブブラウザ又は電子メールクライアント等の1つ以上のユーザ空間ソフトウェアプログラム、並びにこれらのプログラムにより使用される任意のソフトウェアライブラリであり得る。メモリ104はまた、これらの及びその他のプログラム及びアプリケーションにより使用されるデータを格納し得る。
【0046】
ネットワークインターフェース106は、イーサネット(例えば、ファストイーサネット及びギガビットイーサネット等)等の1つ以上の有線インターフェースの形式を取り得る。ネットワークインターフェース106はまた、同軸ケーブル若しくは電力線等の1つ以上の非イーサネット媒体を介して、又は同期光ネットワーク(SONET)若しくはデジタル加入者線(DSL)技術等の広域媒体を介して通信をサポートし得る。ネットワークインターフェース106は更に、IEEE 802.11(Wifi)、BLUETOOTH(登録商標)、全地球測位システム(GPS)、又は広域無線インターフェース等の1つ以上の無線インターフェースの形式を取り得る。しかしながら、他の形式の物理層インターフェース及び他のタイプの標準又は独自の通信プロトコルがネットワークインターフェース106を介して使用され得る。更に、ネットワークインターフェース106は、複数の物理インターフェースを含み得る。実例として、コンピューティングデバイス100の幾つかの実施形態は、イーサネット、BLUETOOTH(登録商標)、及びWifiインターフェースを含み得る。
【0047】
入力/出力ユニット108は、コンピューティングデバイス100とのユーザ及び周辺デバイスの相互作用を容易にし得る。入力/出力ユニット108は、キーボード、マウス、及びタッチスクリーン等の1つ以上のタイプの入力デバイスを含み得る。同様に、入力/出力ユニット108は、スクリーン、モニタ、プリンタ、及び/又は1つ以上の発光ダイオード(LED)等の1つ以上のタイプの出力デバイスを含み得る。追加的又は代替的に、コンピューティングデバイス100は、例えば、ユニバーサルシリアルバス(USB)又は高品位マルチメディアインターフェース(HDMI)ポートインターフェースを使用して他のデバイスと通信し得る。
【0048】
幾つかの実施形態では、コンピューティングデバイス100のような1つ以上のコンピューティングデバイスは、aPaaSアーキテクチャをサポートするように配備され得る。これらのコンピューティングデバイスの正確な物理的位置、接続、及び構成は、クライアントデバイスにとって不明であり得、及び/又は重要ではないことがある。したがって、コンピューティングデバイスは、様々なリモートデータセンタの位置にホストされ得る“クラウドベースの”デバイスと称され得る。
【0049】
図2は、例示的実施形態に従ったクラウドベースのサーバクラスタ200を描写する。図2では、コンピューティングデバイス(例えば、コンピューティングデバイス100)の動作は、サーバデバイス202、データストレージ204、及びルータ206の間で分散され得、これらの全ては、ローカルクラスタネットワーク208によって接続され得る。サーバクラスタ200内のサーバデバイス202、データストレージ204、及びルータ206の数は、サーバクラスタ200に割り当てられたコンピューティングタスク及び/又はアプリケーションに依存し得る。
【0050】
例えば、サーバデバイス202は、コンピューティングデバイス100の様々なコンピューティングタスクを実施するように構成され得る。したがって、コンピューティングタスクは、サーバデバイス202の内の1つ以上の間で分散され得る。これらのコンピューティングタスクが並行して実施され得る範囲で、タスクのこうした分散は、これらのタスクを完了して結果を返すための合計時間を削減し得る。簡単にする目的のために、サーバクラスタ200及び個々のサーバデバイス202の両方は、“サーバデバイス”と称され得る。この命名法は、1つ以上の別個のサーバデバイス、データストレージデバイス、及びクラスタルータがサーバデバイスの動作に関与し得ることを意味すると理解すべきである。
【0051】
データストレージ204は、ハードディスクドライブ及び/又はソリッドステートドライブのグループへの読み出し及び書き込みアクセスを管理するように構成されたドライブアレイコントローラを含むデータストレージアレイであり得る。ドライブアレイコントローラはまた、単独で、又はサーバデバイス202と組み合わせて、サーバデバイス202の内の1つ以上がデータストレージ204のユニットにアクセスすることを妨げるドライブの障害又は他のタイプの障害から保護するように、データストレージ204内に格納されたデータのバックアップ又は冗長コピーを管理するように構成され得る。ドライブ以外の他のタイプのメモリが使用されてもよい。
【0052】
ルータ206は、サーバクラスタ200に内部及び外部の通信を提供するように構成されたネットワーク機器を含み得る。例えば、ルータ206は、(i)ローカルクラスタネットワーク208を介したサーバデバイス202とデータストレージ204との間のネットワーク通信、及び/又は(ii)ネットワーク212への通信リンク210を介したサーバクラスタ200と他のデバイスとの間のネットワーク通信を提供するように構成された1つ以上のパケットスイッチング及び/又はルーティングデバイス(スイッチ及び/又はゲートウェイを含む)を含み得る。
【0053】
また、ルータ206の構成は、サーバデバイス202及びデータストレージ204のデータ通信要件、ローカルクラスタネットワーク208のレイテンシ及びスループット、通信リンク210のレイテンシ、スループット、及びコスト、並びに/又はシステムアーキテクチャのコスト、速度、フォールトトレランス、復元性、効率、及び/若しくはその他の設計目標に寄与し得るその他の要因に少なくとも部分的に基づき得る。
【0054】
可能な例として、データストレージ204は、ストラクチャードクエリ言語(SQL)データベース等の任意の形式のデータベースを含み得る。テーブル、アレイ、リスト、ツリー、及びタプル等を含むがこれらに限定されない様々なタイプのデータ構造がこうしたデータベース内に情報を格納し得る。更に、データストレージ204内の任意のデータベースは、モノリシックであり得、又は複数の物理デバイスに分散され得る。
【0055】
サーバデバイス202は、データストレージ204へデータを送信し、データストレージ204からデータを受信するように構成され得る。この送信及び検索は、SQLクエリ又は他のタイプのデータベースクエリ、及びそうしたクエリの出力の形式を夫々取り得る。追加のテキスト、画像、ビデオ、及び/又は音声も含まれ得る。更に、サーバデバイス202は、受信したデータをウェブページ表現に編成し得る。こうした表現は、ハイパーテキストマークアップ言語(HTML)、拡張可能マークアップ言語(XML)、又はその他の何らかの標準化された又は独自のフォーマット等のマークアップ言語の形式を取り得る。更に、サーバデバイス202は、Perl、Python、PHPハイパーテキストプリプロセッサ(PHP)、アクティブサーバページ(ASP)、及びJAVASCRIPT(登録商標)等であるがこれらに限定されない、様々なタイプのコンピュータ化されたスクリプト言語を実行する能力を有し得る。これらの言語で書き込まれたコンピュータプログラムコードは、クライアントデバイスへのウェブページの提供、及びウェブページとのクライアントデバイスの相互作用を容易にし得る。
【0056】
III. リモートネットワーク管理アーキテクチャの例
図3は、例示的実施形態に従ったリモートネットワーク管理アーキテクチャを描写する。このアーキテクチャは、3つの主要なコンポーネント、管理されるネットワーク300と、リモートネットワーク管理プラットフォーム320と、サードパーティネットワーク340とを含み、全てはインターネット350を経由して接続される。
【0057】
管理されるネットワーク300は、例えば、データの格納と共に、コンピューティング及び通信タスクのためにエンティティによって使用される企業ネットワークであり得る。したがって、管理されるネットワーク300は、クライアントデバイス302、サーバデバイス304、ルータ306、仮想マシン308、ファイアウォール310、及び/又はプロキシサーバ312を含み得る。クライアントデバイス302は、コンピューティングデバイス100によって具現化され得、サーバデバイス304は、コンピューティングデバイス100又はサーバクラスタ200によって具現化され得、ルータ306は、任意のタイプのルータ、スイッチ、又はゲートウェイであり得る。
【0058】
仮想マシン308は、コンピューティングデバイス100又はサーバクラスタ200の内の1つ以上によって具現化され得る。一般的に、仮想マシンは、コンピューティングシステムのエミュレーションであり、物理的コンピュータの機能(例えば、プロセッサ、メモリ、及び通信リソース)を模倣する。サーバクラスタ200等の1つの物理的コンピューティングシステムは、最大数千の個々の仮想マシンをサポートし得る。幾つかの実施形態では、仮想マシン308は、個々の仮想マシンへの物理的コンピューティングリソースの割り当て、並びに性能及びエラーレポートを容易にする集中型サーバデバイス又はアプリケーションによって管理され得る。企業は、必要に応じて効率的にコンピューティングリソースを割り当てるために、仮想マシンをしばしば用いる。仮想化コンピューティングシステムのプロバイダは、VMWARE(登録商標)及びMICROSOFT(登録商標)を含む。
【0059】
ファイアウォール310は、管理されるネットワーク300から開始される許可された通信を可能にしつつ、管理されるネットワーク300をその中のデバイス、アプリケーション、及びサービスへの不正なアクセスの試みから保護する1つ以上の特殊なルータ又はサーバデバイスであり得る。ファイアウォール310は、侵入検出、ウェブフィルタリング、ウイルススキャン、アプリケーション層ゲートウェイ、及びその他のアプリケーション又はサービスを提供する。図3に示されていない幾つかの実施形態では、管理されるネットワーク300は、リモートネットワーク管理プラットフォーム320と通信する1つ以上の仮想プライベートネットワーク(VPN)ゲートウェイを含み得る(以下を参照)。
【0060】
管理されるネットワーク300はまた、1つ以上のプロキシサーバ312を含み得る。プロキシサーバ312の実施形態は、管理されるネットワーク300、リモートネットワーク管理プラットフォーム320、及びサードパーティネットワーク340の間の通信及びデータの移動を容易にするサーバデバイスであり得る。特に、プロキシサーバ312は、リモートネットワーク管理プラットフォーム320の1つ以上の計算インスタンスとの安全な通信セッションを確立及び維持することが可能であり得る。そうしたセッションを経由して、リモートネットワーク管理プラットフォーム320は、管理されるネットワーク300及びそのコンポーネントのアーキテクチャ及び構成の態様を発見及び管理することが可能であり得る。可能性としてプロキシサーバ312の助けを借りて、リモートネットワーク管理プラットフォーム320はまた、管理されるネットワーク300により使用されるサードパーティネットワーク340の態様を発見及び管理することが可能であり得る。
【0061】
ファイアウォール310等のファイアウォールは、そうしたセッションがファイアウォールの背後から(すなわち、管理されるネットワーク300上のデバイスから)最終的に開始されない限り、又はファイアウォールがセッションをサポートするように明示的に構成されていない限り、通常、インターネット350を経由して着信する全ての通信セッションを拒否する。プロキシサーバ312を(例えば、管理されるネットワーク300内に、ファイアウォール310によって保護される)ファイアウォール310の背後に配置することによって、プロキシサーバ312は、ファイアウォール310を通じてこれらの通信セッションを開始することが可能であり得る。したがって、ファイアウォール310は、リモートネットワーク管理プラットフォーム320からの着信セッションをサポートするように特別に構成される必要がなくてもよく、それによって、管理されるネットワーク300に対する潜在的なセキュリティリスクを回避する。
【0062】
幾つかの場合、管理されるネットワーク300は、僅かなデバイスと少数のネットワークとからなり得る。他の配備では、管理されるネットワーク300は、複数の物理的な位置に及び得、数百のネットワークと数十万のデバイスとを含み得る。したがって、図3に描写されたアーキテクチャは、桁違いにスケールアップ又はスケールダウンすることが可能である。
【0063】
更に、管理されるネットワーク300のサイズ、アーキテクチャ、及び接続に依存して、様々な数のプロキシサーバ312がその中に配備され得る。例えば、プロキシサーバ312の各々1つは、管理されるネットワーク300の一部に関してリモートネットワーク管理プラットフォーム320と通信することに責任を負い得る。代替的に又は追加的に、2つ以上のプロキシサーバのセットは、負荷分散、冗長性、及び/又は高可用性の目的で、管理されるネットワーク300のそうした部分に割り当てられ得る。
【0064】
リモートネットワーク管理プラットフォーム320は、ユーザ、特に管理されるネットワーク300のオペレータにaPaaSサービスを提供するホストされた環境である。これらのサービスは、実例として、ウェブベースのポータルの形式を取り得る。したがって、ユーザは、実例として、クライアントデバイス302から、又は潜在的に、管理されるネットワーク300の外部のクライアントデバイスから、リモートネットワーク管理プラットフォーム320に安全にアクセスし得る。ウェブベースのポータルを経由して、ユーザは、アプリケーションを設計、テスト、及び展開し得、レポートを生成し得、分析を表示し得、その他のタスクを実施し得る。
【0065】
図3に示されるように、リモートネットワーク管理プラットフォーム320は、4つの計算インスタンス322、324、326、及び328を含む。これらのインスタンスの各々は、特定の顧客が利用可能なウェブポータル、サービス、及びアプリケーションのセット(例えば、完全に機能するaPaaSシステム)を提供する1つ以上のサーバデバイス及び/又は1つ以上のデータベースを表し得る。幾つかの場合、1人の顧客が複数の計算インスタンスを使用し得る。例えば、管理されるネットワーク300は、リモートネットワーク管理プラットフォーム320の企業顧客であり得、計算インスタンス322、324、及び326を使用し得る。1人の顧客に複数のインスタンスを提供する理由は、顧客がそのアプリケーション及びサービスを独立して開発、テスト、及び展開することを望み得ることである。したがって、計算インスタンス322は、管理されるネットワーク300に関連するアプリケーション開発に専用であり得、計算インスタンス324は、これらのアプリケーションのテストに専用であり得、計算インスタンス326は、テストされたアプリケーション及びサービスのライブ動作に専用であり得る。計算インスタンスは、ホストされたインスタンス、リモートインスタンス、顧客インスタンス、又はその他の何らかの呼称でも称され得る。計算インスタンス上に展開された任意のアプリケーションは、計算インスタンス内のデータベースへのそのアクセスがその中のある一定の要素(例えば、1つ以上の特定のデータベーステーブル又は1つ以上のデータベーステーブルを備えた特定の行)に制限され得るという点で、スコープ付きアプリケーションであり得る。
【0066】
明確の目的のために、本明細書の開示は、物理的ハードウェア、ソフトウェア、及びそれらの配置を“計算インスタンス”と称する。ユーザは、それによって提供されるグラフィカルユーザインターフェースを口語的に“インスタンス”と称し得ることに留意されたい。しかしながら、本明細書で別段の定義がない限り、“計算インスタンス”は、リモートネットワーク管理プラットフォーム320内に配備されたコンピューティングシステムである。
【0067】
リモートネットワーク管理プラットフォーム320のマルチインスタンスアーキテクチャは、マルチインスタンスアーキテクチャが幾つかの利点を示す従来のマルチテナントアーキテクチャとは対照的である。マルチテナントアーキテクチャでは、異なる顧客(例えば、企業)からのデータが単一のデータベースに混合される。これらの顧客のデータは相互に分離されるが、該分離は単一のデータベースを動作するソフトウェアによって実施される。結果として、このシステムにおけるセキュリティ違反は、全ての顧客のデータに影響を与え得、特に政府、医療、及び/又は金融規制の対象となるエンティティに追加のリスクを創出する。更に、1人の顧客に影響を与える任意のデータベース動作は、そのデータベースを共有する全ての顧客におそらく影響を与えるであろう。したがって、ハードウェア又はソフトウェアのエラーに起因する停止がある場合、この停止はそうした全ての顧客に影響を与える。同様に、1人の顧客のニーズを満たすためにデータベースがアップグレードされる場合、それは、アップグレードプロセスの間、全ての顧客にとって利用不可能であろう。多くの場合、共有されるデータベースのサイズに起因して、こうしたメンテナンスウィンドウは長いであろう。
【0068】
対照的に、マルチインスタンスアーキテクチャは、各顧客に、専用のコンピューティングインスタンス内の独自のデータベースを提供する。このことは、顧客データの混合を防止し、各インスタンスが独立して管理されることを可能にする。例えば、ある顧客のインスタンスがエラー又はアップグレードに起因する停止を経験した場合、他の計算インスタンスは影響を受けない。データベースは1人の顧客のデータのみを含むので、メンテナンスのダウン時間は限定される。更に、マルチインスタンスアーキテクチャのよりシンプルな設計は、各顧客データベース及びインスタンスの冗長コピーが地理的に多様な方法で展開されることを可能にする。このことは、高可用性を容易にし、障害が検出された場合、又はメンテナンスが実施されている場合に、顧客のインスタンスのライブバージョンは動かされ得る。
【0069】
幾つかの実施形態では、リモートネットワーク管理プラットフォーム320は、このプラットフォームを動作するエンティティによって制御される1つ以上の中央インスタンスを含み得る。計算インスタンスと同様に、中央インスタンスは、幾つかの数の物理サーバ又は仮想サーバとデータベースデバイスとを含み得る。こうした中央インスタンスは、計算インスタンスの内の少なくとも幾つかの間で共有され得るデータに対するリポジトリとして機能し得る。実例として、計算インスタンス上で発生し得る一般的なセキュリティ脅威の定義、計算インスタンス上で一般的に発見されるソフトウェアパッケージ、及び/又は計算インスタンスに展開され得るアプリケーションに対するアプリケーションストアは、中央インスタンス内に存在し得る。計算インスタンスは、このデータを取得するために、明確に定義されたインターフェースを経由して中央インスタンスと通信し得る。
【0070】
効率的な方法で複数の計算インスタンスをサポートするために、リモートネットワーク管理プラットフォーム320は、単一のハードウェアプラットフォーム上にこれらの複数のインスタンスを実装し得る。例えば、aPaaSシステムがサーバクラスタ200等のサーバクラスタ上に実装される場合、それは、様々な量の計算、ストレージ、及び通信リソースをインスタンス専用にする仮想マシンを動作し得る。しかしながら、サーバクラスタ200の完全な仮想化は必要なくてもよく、インスタンスを分離するために他のメカニズムが使用され得る。幾つかの例では、各インスタンスは、サーバクラスタ200上に専用のアカウント及び1つ以上の専用のデータベースを有し得る。或いは、計算インスタンス322は、複数の物理デバイスに及び得る。
【0071】
幾つかの場合、リモートネットワーク管理プラットフォーム320の単一のサーバクラスタは、複数の独立した企業をサポートし得る。更に、以下で説明するように、リモートネットワーク管理プラットフォーム320は、負荷分散、冗長性、及び/又は高可用性を容易にするために、地理的に多様なデータセンタ内に配備された複数のサーバクラスタを含み得る。
【0072】
サードパーティネットワーク340は、外部委託された計算、データストレージ、通信、及びサービスホスト動作に使用され得るリモートサーバデバイス(例えば、サーバクラスタ200等の複数のサーバクラスタ)であり得る。これらのサーバは仮想化され得る(すなわち、サーバは仮想マシンであり得る)。サードパーティネットワーク340の例は、AMAZON WEB SERVICES(登録商標)及びMICROSOFT(登録商標)AZURE(登録商標)を含み得る。リモートネットワーク管理プラットフォーム320と同様に、サードパーティネットワーク340をサポートする複数のサーバクラスタは、負荷分散、冗長性、及び/又は高可用性の目的で、地理的に異なる位置に配備され得る。
【0073】
管理されるネットワーク300は、そのクライアント及び顧客にアプリケーション及びサービスを展開するために、サードパーティネットワーク340の内の1つ以上を使用し得る。実例として、管理されるネットワーク300がオンライン音楽ストリーミングサービスを提供する場合、サードパーティネットワーク340は、音楽ファイルを格納し得、ウェブインターフェース及びストリーミング能力を提供し得る。このようにして、管理されるネットワーク300の企業は、これらの動作のために独自のサーバを構築及び維持する必要がない。
【0074】
リモートネットワーク管理プラットフォーム320は、仮想マシンとその中の管理されるサービスとを管理されるネットワーク300に公開するために、サードパーティネットワーク340と統合するモジュールを含み得る。モジュールは、ユーザが仮想リソースをリクエストし、サードパーティネットワークに柔軟なレポートを提供することを可能にし得る。この機能を確立するために、管理されるネットワーク300からのユーザは、サードパーティネットワーク340でアカウントを最初に確立し、関連付けられたリソースのセットをリクエストし得る。その後、ユーザは、リモートネットワーク管理プラットフォーム320の適切なモジュールにアカウント情報を入力し得る。これらのモジュールは、アカウント内の管理可能なリソースを自動的にその後発見し得、使用、性能、及び支払い請求に関連するレポートをも提供し得る。
【0075】
インターネット350は、グローバルインターネットの一部分を表し得る。しかしながら、インターネット350は、代わりに、プライベートワイドエリア又はローカルエリアパケット交換ネットワーク等の異なるタイプのネットワークを表し得る。
【0076】
図4は、管理されるネットワーク300と計算インスタンス322との間の通信環境を更に説明し、追加の機構及び代替の実施形態を紹介する。図4では、計算インスタンス322は、データセンタ400A及び400Bに渡って複製されている。これらのデータセンタは、おそらく異なる都市又は異なる国に、相互に地理的に離れていてもよい。各データセンタは、管理されるネットワーク300及びリモートユーザとの通信を容易にするサポート機器を含む。
【0077】
データセンタ400Aでは、外部デバイスとの間のネットワークトラフィックは、VPNゲートウェイ402A又はファイアウォール404Aの何れかを通じて流れる。VPNゲートウェイ402Aは、インターネットプロトコルセキュリティ(IPSEC)又はトランスポートレイヤセキュリティ(TLS)等のセキュリティプロトコルを経由して、管理されるネットワーク300のVPNゲートウェイ412とピアリングされ得る。ファイアウォール404Aは、ユーザ414及びリモートユーザ416等の許可されたユーザからのアクセスを可能にし、許可されていないユーザへのアクセスを拒否するように構成され得る。ファイアウォール404Aを経由して、これらのユーザは、計算インスタンス322、及び可能性として他の計算インスタンスにアクセスし得る。ロードバランサ406Aは、計算インスタンス322をホストする1つ以上の物理又は仮想サーバデバイス間でトラフィックを分散するために使用され得る。ロードバランサ406Aは、データセンタ400A(例えば、計算インスタンス322)の内部構成をクライアントデバイスから隠すことによってユーザアクセスを単純化し得る。実例として、計算インスタンス322が、複数のデータベースへのアクセスを共有する複数の物理的又は仮想コンピューティングデバイスを含む場合、ロードバランサ406Aは、あるコンピューティングデバイス又はデータベースがその他よりも著しく多忙にならないように、ネットワークトラフィック及び処理タスクをこれらのコンピューティングデバイス及びデータベースに渡って分散し得る。幾つかの実施形態では、計算インスタンス322は、VPNゲートウェイ402A、ファイアウォール404A、及びロードバランサ406Aを含み得る。
【0078】
データセンタ400Bは、データセンタ400A内のコンポーネントの独自のバージョンを含み得る。したがって、VPNゲートウェイ402B、ファイアウォール404B、及びロードバランサ406Bは、VPNゲートウェイ402A、ファイアウォール404A、及びロードバランサ406Aと同じ又は同様の動作を夫々実施し得る。更に、リアルタイム又は凡そリアルタイムのデータベースの複製及び/又はその他の動作を経由して、計算インスタンス322は、データセンタ400A及び400B内に同時に存在し得る。
【0079】
図4に示すようなデータセンタ400A及び400Bは、冗長性及び高可用性を容易にし得る。図4の構成では、データセンタ400Aはアクティブであり、データセンタ400Bはパッシブである。したがって、データセンタ400Aは、管理されるネットワーク300との間の全てのトラフィックに仕えているが、データセンタ400B内の計算インスタンス322のバージョンは、凡そリアルタイムで更新されている。両方のデータセンタがアクティブな構成等、他の構成がサポートされ得る。
【0080】
データセンタ400Aが何らかの方法で故障するか、さもなければユーザにとって利用不可能になった場合、データセンタ400Bがアクティブなデータセンタとして引き継ぎ得る。例えば、計算インスタンス322のドメイン名をデータセンタ400Aの1つ以上のインターネットプロトコル(IP)アドレスと関連付けるドメイン名システム(DNS)サーバは、ドメイン名をデータセンタ400Bの1つ以上のIPアドレスと関連付け直し得る。この関連付け直しが完了した後(これには1秒又は数秒未満かかり得る)、ユーザは、データセンタ400Bを経由して計算インスタンス322にアクセスし得る。
【0081】
図4はまた、管理されるネットワーク300の可能な構成を説明する。上記のように、プロキシサーバ312及びユーザ414は、ファイアウォール310を通じて計算インスタンス322にアクセスし得る。プロキシサーバ312はまた、構成アイテム410にアクセスし得る。図4では、構成アイテム410は、クライアントデバイス302、サーバデバイス304、ルータ306、及び仮想マシン308の内の何れか又は全て、それらの上で実行する任意のアプリケーション又はサービス、並びにデバイス、アプリケーション、及びサービス間の関係の内の何れか又は全てを指し得る。したがって、用語“構成アイテム”は、任意の物理デバイス若しくは仮想デバイス、又は計算インスタンス322によりリモートで発見可能な又は管理される任意のアプリケーション若しくはサービス、又は発見されたデバイス、アプリケーション、及びサービス間の関係の省略表現であり得る。構成アイテムは、計算インスタンス322の構成管理データベース(CMDB)内で表され得る。
【0082】
上記のように、VPNゲートウェイ412は、VPNゲートウェイ402Aに、専用のVPNを提供し得る。こうしたVPNは、管理されるネットワーク300と計算インスタンス322との間に大量のトラフィックがある場合、又はセキュリティポリシーがこれらのサイト間のVPNの使用を提案する又は必要とする場合に役立ち得る。幾つかの実施形態では、VPNを介して直接通信する、管理されるネットワーク300及び/又は計算インスタンス322内の任意のデバイスには、パブリックIPアドレスが割り当てられる。管理されるネットワーク300及び/又は計算インスタンス322内の他のデバイスには、プライベートIPアドレス(例えば、サブネット10.0.0.0/8及び192.168.0.0/16として夫々省略表現で表される、10.0.0.0~10.255.255.255又は192.168.0.0~192.168.255.255の範囲から選択されるIPアドレス)が割り当てられ得る。
【0083】
IV. デバイス、アプリケーション、及びサービス発見の例
リモートネットワーク管理プラットフォーム320が、管理されるネットワーク300のデバイス、アプリケーション、及びサービスを管理するために、リモートネットワーク管理プラットフォーム320は、如何なるデバイスが管理されるネットワーク300内に存在するか、これらのデバイスの構成及び動作ステータス、並びにデバイスにより提供されるアプリケーション及びサービス、並びに発見されたデバイス、アプリケーション、及びサービス間の関係をまず判定し得る。上記のように、各デバイス、アプリケーション、サービス、及び関係は、構成アイテムと称され得る。管理されるネットワーク300内で構成アイテムを定義するプロセスは、発見と称され、プロキシサーバ312によって少なくとも部分的に容易にされ得る。
【0084】
本明細書の実施形態の目的のために、“アプリケーション”は、1つ以上のプロセス、スレッド、プログラム、クライアントモジュール、サーバモジュール、又はデバイス若しくはデバイスのグループ上で実行する任意のその他のソフトウェアを指し得る。“サービス”は、相互に連携して働く1つ以上のデバイス上で実行する複数のアプリケーションによって提供される高レベルの能力を指し得る。例えば、高レベルのウェブサービスは、あるデバイス上で実行する複数のウェブアプリケーションサーバスレッドと、別のデバイスで実行するデータベースアプリケーションからのアクセス情報とを含み得る。
【0085】
図5Aは、構成アイテムがどのように発見され得るか、並びに発見された構成アイテムに関連する情報がどのように格納され得るかについての論理的描写を提供する。簡単にするために、リモートネットワーク管理プラットフォーム320、サードパーティネットワーク340、及びインターネット350は示されていない。
【0086】
図5Aでは、CMDB500及びタスクリスト502は、計算インスタンス322内に格納される。計算インスタンス322は、発見コマンドをプロキシサーバ312へ送信し得る。応答において、プロキシサーバ312は、管理されるネットワーク300内の様々なデバイス、アプリケーション、及びサービスへプローブを送信し得る。これらのデバイス、アプリケーション、及びサービスは、プロキシサーバ312へ応答を送信し得、プロキシサーバ312は、発見された構成アイテムに関する情報を、その中への格納のためにCMDB500にその後提供し得る。CMDB500内に格納された構成アイテムは、管理されるネットワーク300の環境を表す。
【0087】
タスクリスト502は、プロキシサーバ312が計算インスタンス322に代わって実施する活動のリストを表す。発見が行われると、タスクリスト502はポピュレートされる。プロキシサーバ312は、タスクリスト502を繰り返し照会し、その中の次のタスクを取得し、タスクリスト502が空になる、又は別の停止条件に達するまで、このタスクを実施する。
【0088】
発見を容易にするために、プロキシサーバ312は、プロキシサーバ312を経由して到達可能な管理されるネットワーク300内の1つ以上のサブネットに関する情報で構成され得る。実例として、プロキシサーバ312には、サブネットとしてIPアドレス範囲192.168.0/24が与えられ得る。その後、計算インスタンス322は、この情報をCMDB500内に格納し得、これらのアドレスの各々でのデバイスの発見のためにタスクリスト502内にタスクを配置し得る。
【0089】
図5Aはまた、構成アイテム504、506、508、510、及び512として、管理されるネットワーク300内のデバイス、アプリケーション、及びサービスを描写する。上記のように、これらの構成アイテムは、物理及び/又は仮想デバイス(例えば、クライアントデバイス、サーバデバイス、ルータ、又は仮想マシン)、それらの上で実行するアプリケーション(例えば、ウェブサーバ、電子メールサーバ、データベース、又はストレージアレイ)、それらの間の関係、並びに複数の個々の構成アイテムを含むサービスのセットを表す。
【0090】
タスクをタスクリスト502内に配置することは、発見を発動し得、さもなければプロキシサーバ312に発見を開始させ得る。代替的又は追加的に、発見は、手動で発動され得、又は発動イベントに基づいて自動的に発動され得る(例えば、発見は、特定の時間に1日1回自動的に開始し得る)。
【0091】
一般的に、発見は、スキャン、分類、識別、及び探索の4つの論理フェーズで進行し得る。発見の各フェーズは、プロキシサーバ312によって、管理されるネットワーク300内の1つ以上のデバイスへ送信される様々なタイプのプローブメッセージを含む。これらのプローブへの応答は、プロキシサーバ312によって受信及び処理され得、その表現はCMDB500へ送信され得る。したがって、各フェーズは、より多くの構成アイテムが発見され、CMDB500内に格納されることをもたらし得る。
【0092】
スキャンフェーズにおいて、プロキシサーバ312は、デバイスの一般的なタイプを判定するために、オープンな伝送制御プロトコル(TCP)及び/又はユーザデータグラムプロトコル(UDP)ポートに対して、指定された範囲のIPアドレス内の各IPアドレスを精査し得る。IPアドレスにおけるこうしたオープンなポートの存在は、IPアドレスが割り当てられるデバイス上で特定のアプリケーションが動作していることを指し示し得、このことは、順に、デバイスにより使用されるオペレーティングシステムを識別し得る。例えば、TCPポート135がオープンである場合、デバイスはWINDOWS(登録商標)オペレーティングシステムを実行している可能性がある。同様に、TCPポート22がオープンである場合、デバイスはLINUX(登録商標)等のUNIX(登録商標)オペレーティングシステムを実行している可能性がある。UDPポート161がオープンである場合、デバイスは簡易ネットワーク管理プロトコル(SNMP)を通じて更に識別可能であり得る。他の可能性が存在する。特定のIPアドレスとそのオープンなポートとにおいてデバイスの存在が一旦発見されると、これらの構成アイテムはCMDB500内に保存される。
【0093】
分類フェーズにおいて、プロキシサーバ312は、そのオペレーティングシステムのバージョンを判定するために、発見された各デバイスを更に精査(probe)し得る。特定のデバイスに対して使用されるプローブは、スキャンフェーズの間にデバイスについて収集された情報に基づく。例えば、TCPポート22がオープンであるデバイスが見つかった場合、UNIX(登録商標)固有のプローブのセットが使用され得る。同様に、TCPポート135がオープンであるデバイスが見つかった場合、WINDOWS(登録商標)固有のプローブのセットが使用され得る。何れの場合にも、プロキシサーバ312が実行するために、タスクの適切なセットがタスクリスト502内に配置され得る。これらのタスクは、プロキシサーバ312がログオンすること、さもなければ特定のデバイスからの情報にアクセスすることをもたらし得る。実例として、TCPポート22がオープンである場合、プロキシサーバ312は、特定のデバイスへのセキュアシェル(SSH)接続を開始して、ファイルシステム内の特定の位置からその上のオペレーティングシステムについての情報を取得するように命令され得る。この情報に基づいて、オペレーティングシステムが判定され得る。例として、TCPポート22がオープンであるUNIX(登録商標)デバイスは、AIX(登録商標)、HPUX、LINUX(登録商標)、MACOS(登録商標)、又はSOLARIS(登録商標)として分類され得る。この分類情報は、1つ以上の構成アイテムとしてCMDB500内に格納され得る。
【0094】
識別フェーズにおいて、プロキシサーバ312は、分類されたデバイスについての具体的詳細を判定し得る。このフェーズの間に使用されるプローブは、分類フェーズの間に特定のデバイスについて収集された情報に基づき得る。例えば、デバイスがLINUX(登録商標)として分類された場合、LINUX(登録商標)固有のプローブのセットが使用され得る。同様に、デバイスがWINDOWS(登録商標)2012として分類された場合、WINDOWS(登録商標)2012固有のプローブのセットとして使用され得る。分類フェーズの場合と同様に、プロキシサーバ312が実行するために、タスクの適切なセットがタスクリスト502内に配置され得る。これらのタスクは、ベーシック入力/出力システム(BIOS)情報、シリアル番号、ネットワークインターフェース情報、これらのネットワークインターフェースに割り当てられたメディアアクセス制御アドレス、及び特定のデバイスにより使用されるIPアドレス等の情報を特定のデバイスからプロキシサーバ312が読み出すことをもたらし得る。この識別情報は、1つ以上の構成アイテムとしてCMDB500内に格納され得る。
【0095】
探索フェーズにおいて、プロキシサーバ312は、分類されたデバイスの動作状態についての更なる詳細を判定し得る。このフェーズの間に使用されるプローブは、分類フェーズ及び/又は識別フェーズの間に特定のデバイスについて収集された情報に基づき得る。この場合も、プロキシサーバ312が実行するために、タスクの適切なセットがタスクリスト502内に配置され得る。これらのタスクは、プロセッサ情報、メモリ情報、及び実行中のプロセス(アプリケーション)のリスト等の追加情報を特定のデバイスからプロキシサーバ312が読み出すことをもたらし得る。再度、発見された情報は、1つ以上の構成アイテムとしてCMDB500内に格納され得る。
【0096】
ルータ等のネットワークデバイス上で発見を実行することは、SNMPを利用し得る。実行中のプロセス又はその他のアプリケーション関連情報のリストを判定することの代わりに、又はそのことに加えて、発見は、ルータに認識されている追加のサブネットと、ルータのネットワークインターフェースの動作状態(例えば、アクティブ、非アクティブ、キューの長さ、ドロップしたパケット数等)とを判定し得る。追加のサブネットのIPアドレスは、更なる発見手順に対する候補であり得る。したがって、発見は、反復的又は再帰的に進行し得る。
【0097】
発見が一旦完了すると、発見された各デバイス、アプリケーション、及びサービスのスナップショット表現がCMDB500内で利用可能である。例えば、発見後、管理されるネットワーク300内のクライアントデバイス、サーバデバイス、及びルータに対するオペレーティングシステムのバージョン、ハードウェア構成、及びネットワーク構成の詳細、並びにそれらの上で実行するアプリケーションが格納され得る。この収集された情報は、デバイスのハードウェア構成及び動作ステータス、並びに複数のデバイスとアプリケーションとに及ぶサービスの特徴をユーザが見ることを可能にするように、様々な方法でユーザに提示され得る。
【0098】
更に、CMDB500は、構成アイテム間の依存性及び関係に関するエントリを含み得る。より具体的には、特定のサーバデバイス上で実行しているアプリケーション、及びこのアプリケーションに依存するサービスは、CMDB500内でそのように表され得る。実例として、データベースアプリケーションがサーバデバイス上で実行していると仮定し、並びにこのデータベースアプリケーションが新入社員オンボーディングサービス及び給与サービスにより使用されると仮定する。したがって、サーバデバイスがメンテナンスのために動作を停止した場合、社員オンボーディングサービス及び給与サービスが影響を受けるであろうことは明らかである。同様に、構成アイテム間の依存性及び関係は、特定のルータが故障した場合に影響を受けるサービスを表すことが可能であり得る。
【0099】
一般的に、構成アイテム間の依存性及び関係は、ウェブベースのインターフェース上に表示され得、階層的方法で表され得る。したがって、こうした依存性及び関係の追加、変更、又は削除は、このインターフェースを経由して達成され得る。
【0100】
更に、管理されるネットワーク300からのユーザは、ある一定の調整された活動が複数の発見されたデバイスに渡って行われることを可能にするワークフローを開発し得る。実例として、ITワークフローは、単一の動作で、全ての発見されたLINUX(登録商標)デバイスに共通の管理者パスワードをユーザが変更することを可能にし得る。
【0101】
上で説明した方法で発見が行われるために、プロキシサーバ312、CMDB500、及び/又は1つ以上のクレデンシャルストアは、発見されるデバイスの内の1つ以上に対するクレデンシャルで構成され得る。クレデンシャルは、デバイスにアクセスするために必要な任意のタイプの情報を含み得る。これらは、ユーザID/パスワードの対及び資格証明書等を含み得る。幾つかの実施形態では、これらのクレデンシャルは、CMDB500の暗号化されたフィールド内に格納され得る。プロキシサーバ312は、発見されているデバイスにログオンするため、さもなければアクセスするためにこれらのクレデンシャルをプロキシサーバ312が使用し得るように、クレデンシャルに対する復号化キーを含み得る。
【0102】
発見プロセスは、図5Bにフローチャートとして描写されている。ブロック520において、計算インスタンス内のタスクリストは、実例として、IPアドレスの範囲でポピュレートされる。ブロック522において、スキャンフェーズが行われる。したがって、プロキシサーバは、これらのIPアドレスを使用してデバイスに対するIPアドレスを精査し、これらのデバイス上で実行しているオペレーティングシステムの判定を試みる。ブロック524において、分類フェーズが行われる。プロキシサーバは、発見されたデバイスのオペレーティングシステムのバージョンの判定を試みる。ブロック526において、識別フェーズが行われる。プロキシサーバは、発見されたデバイスのハードウェア及び/又はソフトウェア構成の判定を試みる。ブロック528において、探索フェーズが行われる。プロキシサーバは、発見されたデバイス上で実行している動作状態及びアプリケーションの判定を試みる。ブロック530において、発見されたデバイス及びアプリケーションを表す構成アイテムの更なる編集が行われ得る。この編集は、本質的に自動化され得、及び/又は手動で行われ得る。
【0103】
図5Bに表したブロックは、例示を目的とする。発見は、より多くの又はより少ないフェーズを有し得る高度に構成可能な手順であり得、各フェーズの動作は変更し得る。幾つかの場合、1つ以上のフェーズがカスタマイズされ得、さもなければ上記の例示的な説明から逸脱し得る。
【0104】
V. テキストクエリの自然言語処理
自然言語処理は、活動の中でもとりわけ、人間の言語の構造及び意味を理解するためにコンピュータを使用することを含む分野である。この判定された構造及び意味は、以下に説明するように、ITインシデントの処理に適用可能であり得る。
【0105】
各インシデントは、インシデントレポートとして表され得る。インシデントレポートは様々なフォーマットで存在し得、様々なタイプの情報を含み得るが、例示的なインシデントレポート600が図6に示されている。インシデントレポート600は、左の列内の幾つかのフィールドからなり、それらの内の少なくとも幾つかは、右の列内の値と関連付けられる。
【0106】
フィールド602は、インシデントの発信者、この場合はボブ・スミスを識別する。フィールド604は、インシデントが作成された時刻、この場合は2018年2月7日午前9時56分を識別する。フィールド605は、問題の簡単な説明を提供するテキスト文字列である。フィールド606は、発信者によって提供されるような問題の説明を識別する。したがって、フィールド606は、数語から数文以上までの辺りを含む自由形式のテキスト文字列であり得る。フィールド608は、インシデントのカテゴリ分類であり、この場合は電子メールである。このカテゴリ分類は、発信者、インシデントが割り当てられたIT担当者によって提供され得、又は問題説明フィールドのコンテクストに基づいて自動的に提供され得る。
【0107】
フィールド610は、(該当する場合)インシデントが割り当てられるIT担当者、この場合はアリスジョーンズを識別する。フィールド612は、インシデントのステータスを識別する。ステータスは、実例として、“オープン”、“割り当て済み”、“作業中”、又は“解決済み”の内の1つであり得る。フィールド614は、(該当する場合)インシデントがどのように解決されたかを識別する。このフィールドは、インシデントが割り当てられたIT担当者又は別の個人によって記入され得る。フィールド616は、インシデントが解決された時刻、この場合は2018年2月7日午前10時10分を識別する。フィールド618は、(該当する場合)インシデントのクローズコードを指定し、“クローズ(永続的)”、“クローズ(ワークアラウンド)”、“クローズ(再現不可)”等の値を取り得る。フィールド620は、インシデントが割り当てられたIT担当者等によって、レコードに追加された任意の追加のメモを識別する。フィールド622は、ユーザが将来同様の問題に対処する必要を回避するのに役立ち得るオンライン記事へのリンクを識別する。
【0108】
インシデントレポート600は、例の目的で提示されている。他のタイプのインシデントレポートが使用され得、これらのレポートは、より多くの、より少ない、及び/又は異なるフィールドを含み得る。
【0109】
インシデントレポート600等のインシデントレポートは、様々な方法で作成され得る。実例として、ウェブフォーム、指定されたアドレスへ送信される電子メール、及び音声からテキストへの変換を使用するボイスメールボックス等を経由する。これらのインシデントレポートは、照会可能なインシデントレポートデータベース内に格納され得る。例として、テキスト文字列の形式のクエリは、テキスト文字列内の単語を含む1つ以上のインシデントレポートを返し得る。追加的又は代替的に、インシデントレポートの1つ以上の要素(例えば、“簡単な説明”フィールド)は、知識ベースの記事、他のインシデントレポート、又はテキストのその他の何らかのコーパスのデータベースを照会するために使用され得る。このことは、他のインシデントレポート、解決された過去のインシデントレポート、過去の問題の解決に関するレポート、知識ベースの記事、又はインシデントレポートで表される問題の解決を容易にするためのインシデントレポートに関連し得るその他の情報を識別するために行われ得る。
【0110】
このプロセスは、図7に説明されている。テキストクエリは、ウェブインターフェース700に入力され得る。このウェブインターフェースは、リモートネットワーク管理プラットフォーム320の計算インスタンスを経由して供給され得る。ウェブインターフェース700は、テキストクエリをデータベースクエリ(例えば、SQLクエリ)に変換し、SQLクエリをデータベース702に提供する。このデータベースは、CMDB500又は何らかのその他のデータベースであり得る。データベース702は、図6に示されるような問題説明フィールドを備えた幾つかのインシデントレポートを含む。それにもかかわらず、データベース702は、クエリを行い、一致する結果をウェブインターフェース700に返す。1つ以上のそうした結果が返され得る。ウェブインターフェース700は、これらの結果をウェブページとして提供する。
【0111】
例えば、テキストクエリが“電子メール”である場合、ウェブインターフェース700は、このクエリをデータベース702のSQLクエリに変換し得る。例えば、クエリは、インシデントレポートを含むテーブルの問題説明フィールドを見ることがある。クエリに一致する、すなわち、用語“電子メール”を含むこうした任意のインシデントレポートは、クエリ結果内に提供され得る。したがって、“私の電子メールクライアントは新たな電子メールをダウンロードしていません”、“電子メールがクラッシュしました”、“電子メールに接続できません”という問題説明を有するインシデントレポートが提供される一方で、問題説明“VPNがタイムアウトしました”を有するインシデントレポートは返されない。
【0112】
このマッチング技術は単純であり、幾つかの欠点がある。それは、インシデント内のクエリのテキストの存在のみを考慮する。したがって、それは、クエリテキストの前後に出現する単語等のコンテクスト情報を考慮しない。また、クエリテキストの同義語(例えば、“メール”又は“メッセージ”)及びクエリテキストのスペルミス(例えば、“emial”)は、この例では何ら結果を返さないであろう。
【0113】
更に、そうした解決策を展開することは、英語の各単語に対する1次元のエントリと、各インシデントの問題説明に対する別次元のエントリとを有する、非効率的な疎行列の使用を含むであろう。英単語の正確な数は議論の余地があるが、少なくとも150,000語~200,000語あり、一般的な使用では約20,000語未満である。多忙なIT部門が数万件のインシデントのデータベースを有し得ることを考えると、この行列は、最も一般的に使用される20,000語だけが含まれている場合であっても、非常に大きく、格納するのに無駄があるであろう。
【0114】
したがって、上記の比較方法は、テキストサンプルのセマンティックなコンテンツ及び/又はコンテクストを比較する様々な方法によって置き換えられ、及び/又はそれらを用いて増強され得る。これらの方法は、自然言語処理を容易にするように、様々な機械学習技術を改善し得る。そうした技術は、テキストのサンプルから単語及び/若しくは段落ベクトルを判定すること、人工ニューラルネットワーク若しくは他の深層学習アルゴリズムを適用すること、感情分析、又はテキストのサンプル間の類似性を判定するためのその他の技術を含み得る。例えば、これらの又はその他の自然言語処理技術は、インシデントレポートの1つ以上のテキストフィールドと他のインシデントレポート、解決されたインシデントレポート、知識ベースの記事、又は他の潜在的に関連するテキストのサンプルとの間の類似性を判定するために適用され得る。
【0115】
VI. セマンティックなコンテンツに基づくテキストクエリの自然言語処理
テキストの2つのサンプル間の類似性の程度は、様々な方法で判定され得る。テキストの2つのサンプルは、インシデントレポートのテキストフィールドと、別のインシデントレポートのテキストフィールド、解決されたインシデントレポートのテキストフィールド、知識ベースの記事、又はインシデントレポートの解決、分類、若しくはその他の態様に関連し得るテキストのその他の何らかのサンプルとであり得る。追加的又は代替的に、サンプルの一方又は両方は、テキストのより大きなサンプル内のテキストのセグメントであり得る。上記のように、テキストの2つのサンプル及び/又は単語行列内に存在する(複数の)単語の同一性の間の重複の程度は、類似性の程度を判定するために使用され得る。追加的又は代替的に、テキストのコンテクスト又は他のセマンティックなコンテンツがテキストのサンプル間の判定された類似値に影響を与えるように、自然言語処理の1つ以上の技術は、テキストのサンプルを比較するために適用され得る。
【0116】
こうした技術は、インシデントレポートに関連するテキストクエリのマッチングを改善するために適用され得る。これらの技術は、テキストのサンプルに基づいてトレーニングされ得る様々な機械学習アルゴリズムを含み得る。トレーニングに使用されるテキストのサンプルは、インシデントレポートの過去の例、知識ベースの記事、又はトレーニングされるモデルが適用されるであろうテキストサンプルと同じ性質のその他のテキストサンプルを含み得る。このことは、その意図するアプリケーション内の一般的な語彙、トピック、慣用的な単語の使用に一意に適合されているモデルを提供する利点を有する。
【0117】
こうした技術は、テキストのサンプルから単語及び/又は段落ベクトルを判定すること、ANN若しくはその他の深層学習アルゴリズムを適用すること、感情分析を実施すること、又はテキストのサンプル間の類似性を判定するため、トピック若しくはコンテンツに従ってテキストの複数のサンプルを共にグループ化するため、テキストのサンプルを別個の内部関連セグメントに分割するため、単語間の統計的関連付けを判定するため、又はその他の何らかの言語処理タスクを実施するためのその他の技術を含み得る。以下に、単語及びテキスト文字列のコンパクトでセマンティックな表現を提供するANNモデルを使用して、テキストのサンプル間の類似値を判定するための特定の方法が、そうした技術の非限定的な例として提供される。しかしながら、本明細書の他の場所で適用されるように、テキストのサンプル間の類似値を生成するために他の技術が適用され得る。以下の論考では、単語のセマンティックな意味を表すためにANNモデルをトレーニングするための2つのアプローチ、単語ベクトル及び段落ベクトルがある。これらの技術は、相互に又は他の技術と組み合わされ得る。
【0118】
A. 単語ベクトル
“単語ベクトル”は、類似の意味(又は“セマンティックなコンテンツ”)を有する単語が、セマンティックに符号化されたベクトル空間内で相互に近い単語ベクトルと関連付けられるように、テキストレコードのコーパスに存在する各単語に対して判定され得る。こうしたベクトルは、数十、数百、又はそれ以上の要素を有し得る。これらの単語ベクトルは、単語の基本的な意味が比較されること、さもなければコンピューティングデバイスにより動作されることを可能にする。したがって、単語ベクトルの使用は、より単純な単語リスト又は単語行列の方法よりも著しく改善可能であり得る。
【0119】
単語ベクトルは、テキストのサンプルの全体的なセマンティックなコンテンツを迅速かつ効率的に比較するために使用され得、テキストのサンプル間の類似値を判定することを可能にする。このことは、テキストサンプルの各々内の単語の単語ベクトル間の距離、コサイン類似度、又はその他の何らかの類似性の尺度を判定することを含み得る。例えば、テキストサンプルの各々内の単語ベクトルの平均が判定され得、平均間のコサイン類似度は、テキストサンプル間の類似性の尺度としてその後使用され得る。追加的又は代替的に、単語ベクトルは、感情分析を実施するため、テキストのサンプルを分類又はクラスタリングするため、テキストのサンプル間の類似性のレベルを判定するため、又は他の何らかの言語処理タスクを実施するために、ANN、サポートベクトルマシン、決定木、又はその他の何らかの機械学習アルゴリズムへの入力として提供され得る。
【0120】
単語ベクトルは、様々な方法で単語のセットに対して判定され得る。一例では、単語ベクトルの行列は、ANNの入力層であり得る。(単語ベクトルの行列を含む)ANNは、これらのテキスト文字列内に出現する単語間のコンテクスト関係を判定するために、データベースからの多数のテキスト文字列を用いてその後トレーニングされ得る。こうしたANN800は図8Aに示されている。ANN800は、入力層802を含み、それは、隠れ層804に供給され、それは、順に、出力層806に供給される。入力層802及び出力層806のノードの数は、事前定義された語彙又は辞書内の単語の数(例えば、20,000語、50,000語、又は100,000語)に等しくてもよい。隠れ層804内のノードの数は、遥かに少なくてもよい(例えば、図8Aに示されるような64、又は16、32、128、512、1024等の他の値)。
【0121】
データベース内のテキスト文字列毎に、ANN800は単語の1つ以上の配置を用いてトレーニングされる。実例として、図8Bでは、ANN800は、入力単語“電子メール”と、出力(コンテクスト)単語“できません”、“接続”、“に”とを用いてトレーニングされていることが示されている。出力単語は、出力層806によって生成された結果が比較されるグラウンドトゥルース出力値として機能する。この配置は、データベース702内のテキスト文字列において“電子メール”が“できません”、“接続”、及び“に”に近接して出現することを反映する。
【0122】
実装では、このことは、1の入力を受信するノードI、及び0の入力を受信する入力層802内の他の全てのノードとして表され得る。同様に、ノードOは“できません”のグラウンドトゥルース値と関連付けられ、ノードOは“接続”のグラウンドトゥルース値と関連付けられ、ノードOは“に”のグラウンドトゥルース値と関連付けられる。実装において、このことは、ノードO、O、及びOが1のグラウンドトゥルース値と関連付けられ、出力層806内の他の全てのノードが0のグラウンドトゥルース値と関連付けられることとして表され得る。損失関数は、例えば、上記の入力に応答して出力層806により生成された出力と、出力層ノードと関連付けられたグラウンドトゥルース値を含むベクトルとの間の二乗誤差の和であり得る。
【0123】
データベース702からのこのテキスト文字列の他の配置は、ANNをトレーニングするために使用され得る。実例として、図Aに示すように、ANN900の入力層902への入力単語は“できません”であり得、出力層906の出力単語は“接続”、“に”、及び“電子メール”であり得る。別の例では、図9Bに示すように、入力単語は“接続”であり得、出力単語は“できません”、“に”、及び“電子メール”であり得る。
【0124】
一般的に、これらの配置は、出力単語が入力単語のw個の単語内にあり(例えば、wは1、2、3、5等)、出力単語が入力単語と同じ文内にあり、出力単語が入力単語と同じ段落内にある等々のように選択され得る。更に、データベース702内の各テキスト文字列の様々な単語の配置は、ANN(例えば、ANN800又はANN900)をトレーニングするために使用され得る。これらのテキスト文字列は、簡単な説明フィールド605、問題説明フィールド606、カテゴリフィールド608、解決策フィールド614、メモフィールド620、及び/又はインシデントレポート内の任意の他のフィールド若しくはフィールドの組み合わせから選択され得る。
【0125】
ANN(例えば、800、900)がテキスト文字列のこれらの配置を用いてトレーニングされた後、ANNの隠れ層(例えば、804、904)は、入力単語のコンテクスト及び意味のコンパクトなベクトル表現になる。すなわち、入力層内の特定のノード(例えば、I)から隠れ層への重み付けは、特定のノードに対応する単語(例えば、“できません”)の単語ベクトルの要素を表す。例えば、ANNが(より多くの又はより少ないテキスト文字列が使用され得るが)10,000語程度のテキスト文字列のコーパスを用いて完全にトレーニングされていると仮定すると、“電子メール”の入力単語は“メール”の入力単語の類似のベクトル表現を有し得る。直感的には、ANNが入力単語のコンテクストを判定しなければならないのは隠れ層だけなので、2つの単語が類似のコンテクストを有する場合、それらは類似したベクトル表現を有する可能性が高くなる。
【0126】
幾つかの実施形態では、ANNは、出力ノードO・・・Oと関連付けられた入力単語と、入力ノードI・・・Iと関連付けられた出力(コンテクスト)単語とを用いてトレーニングされ得る。この配置は、隠れ層に対して同一又は類似のベクトルを産出し得る。
【0127】
更に、この方法で生成されたベクトルは相加的である。したがって、“電子メール”のベクトル表現から“メール”のベクトル表現を減算することは、値が0に近いベクトルを産出することが予想される。しかしながら、“電子メール”のベクトル表現から“VPN”のベクトル表現を減算することは、より高い値のベクトルを産出することが予想される。このように、モデルは、“電子メール”及び“メール”が“電子メール”及び“VPN”よりも近い意味を有することを指し示す。
【0128】
関心のある全ての単語に対してベクトル表現が一旦判定されると、これらのベクトルの線形及び/又は乗法の集約が、テキスト文字列を表すために使用され得る。実例として、テキスト文字列“電子メールに接続できません”に対するベクトルは、単語“できません”、“接続”、“に”、及び“電子メール”に対する個々のベクトルを合算することで見つけられ得る。幾つかの場合、平均又は他の何らかの動作が単語に対するベクトルに適用され得る。これは、その中の各エントリをmで割ったm個のベクトルvのベクトル和として以下で表され得、i={1・・・m}である。しかしながら、加重平均等の他の可能性が存在する。
【数1】
【0129】
集約がどのように判定されるかに関係なく、この一般的な技術は、データベース702内の各テキスト文字列に対するベクトル表現を見つけることを可能にする。これらのベクトル表現は、それらの関連付けられたテキスト文字列と共に、又は別々に、データベース702内にも格納され得る。これらのベクトル表現は、テキスト文字列を比較し、テキスト文字列をクラスタリング又はグループ化し、他の何らかの機械学習分類器をトレーニングするため、又は他の何らかのタスクを実行するためにその後使用され得る。例えば、特定のクエリテキストに対する一致するテキスト文字列は、クエリテキストのベクトル表現とデータベース702内のテキストのサンプルの格納されたベクトル表現との間のコサイン類似度又は他の類似値を判定することによって判定され得る。
【0130】
比較は、この方法で“一致する(match)”データベース702からの1つ以上のテキスト文字列ベクトルを識別し得る。幾つかの場合、これは、最も高い類似性を有するk個のテキスト文字列ベクトル、又は事前に決定された値よりも大きい類似性を有する任意のテキスト文字列ベクトルであり得る。識別されたテキスト文字列ベクトルは、データベース702内に記録されたインシデントレポートのより大きなコーパス内の、クエリテキスト文字列ベクトルに対応する追加のインシデントレポートに関連する、インシデントレポートのサブセットに対応し得る。識別されたテキスト文字列ベクトルの各々に対して、関連付けられたテキスト文字列は、データベース702内で検索され得、出力テキスト文字列として提供され得る。幾つかの場合、関連付けられたインシデントレポートも提供され得る。
【0131】
幾つかの場合、事前に決定された寿命よりも古くないインシデントレポートのみが提供される。実例として、システムは、過去3か月、6か月、又は12か月以内に解決されたインシデントレポートからのみテキスト文字列ベクトルを識別するように構成され得る。或いは、システムは、過去3か月、6か月、又は12か月以内にオープンにされたインシデントレポートからのみテキスト文字列ベクトルを識別するように構成され得る。
【0132】
このようにして、入力されたテキスト文字列のものと類似の問題説明を有するインシデントレポートが迅速に識別され得る。特に、このシステムは、入力されたテキスト文字列に関連し、入力されたテキスト文字列に有意である可能性がより高いコンテクスト結果を提供する。その結果、問題説明内のものと類似の問題が過去にどのように報告され、対処されたかを判定するために、個人はこれらのインシデントレポートを確認し得る。このことは、インシデントの解決にかかる時間が大幅に削減されることをもたらし得る。
【0133】
追加的又は代替的に、これらの実施形態は、インシデントレポートのコーパス内のセマンティックに及び/又はコンテクスト上類似のインシデントレポートのクラスタを検出及び識別するために適用され得る。例えば、ITシステムのユーザに影響を与える可能性のある類似の問題に関連するインシデントレポートのクラスタ、ITシステムの1つ以上の態様の進行中の誤構成、ITシステムのコンポーネントにおける進行性のハードウェア障害、又はITシステム内で繰り返し発生するその他の何らかの問題。関連するインシデントレポートのこうしたクラスタを識別することは、(例えば、障害のある、又は一貫性なく実施しているハードウェア若しくはソフトウェアを交換及び/又は再構成することによって)ITシステムが修復又はアップグレードされること、よくある間違いを回避するようにユーザがトレーニングされること、滅多に発生しないハードウェア若しくはソフトウェアの問題が検出及び修正されること、又はその他の利益を可能にし得る。
【0134】
関連するインシデントレポートのこうしたクラスタは、セマンティックに符号化されたベクトル空間内において、インシデントレポートに対応する集約された単語(及び/又は段落)ベクトルを識別することによって検出及び/又は識別され得る。セマンティックに符号化されたベクトル空間内のそうしたクラスタを検出するために、様々な方法、例えば、k平均クラスタリング、サポートベクトルマシン、ANN(例えば、利用可能なトレーニング例のコーパス内のトレーニング例の関連サブセットを識別するように構成及び/又はトレーニングされた教師なしのANN)、又はベクトル空間内の関連するベクトルのクラスタを識別するためのその他の何らかの分類若しくはその他の方法が用いられ得る。
【0135】
B. 段落ベクトル
以前に論じたように、ANNモデル(例えば、800、900)は、単語のコンパクトでセマンティックに関連するベクトル表現を提供するために、周囲のコンテクストを使用する。トレーニング後、類似の意味を有する単語は、ベクトル空間内の類似の位置にマッピングし得る。例えば、“強力”と“強い”に対するベクトルは相互に近くに出現し得る一方で、“強力”と“パリ”に対するベクトルは更に離れていてもよい。単語ベクトル間の加算及び減算にも意味がある。判定された単語ベクトル上にベクトル代数を使用すると、“王”-“男性”+“女性”=“女王”等の類推の質問に答え得る。
【0136】
しかしながら、文又はその他の節(例えば、句、複数の文、段落、テキストのより大きなサンプル内のテキストセグメント、又は文書)の完全なセマンティックな意味は、(例えば、ベクトル代数を適用することによって)文の個々の単語ベクトルから常に捕捉できるとは限らない。単語ベクトルは、個々の単語のセマンティックなコンテンツを表し得、短いコンテクストウィンドウを使用してトレーニングされ得る。したがって、語順のセマンティックなコンテンツ、及び短いコンテクストウィンドウ外の何らかの情報は、単語ベクトルのみに基づいて動作する場合には喪失される。
【0137】
例えば、“私は、今、大きな緑色のセルが欲しい”という文を考えてみる。この場合、個々の単語の単純なベクトル代数は、単語“セル”が複数の可能な意味を有し、したがって、曖昧になり得るので、単語“セル”の正しいセマンティックな意味を提供することに失敗することがある。コンテクストに依存して、“セル”は、生物学的細胞、居房、又は通信ネットワークのセルであり得る。したがって、所与の単語がサンプリングされる段落、文、又は句は、重要なコンテクスト情報を提供し得る。
【0138】
別の例では、文“あなたはどこにいますか_”が与えられた場合、文がシェイクスピアについての段落から派生していると言われた場合には、欠落している単語を“ロミオ”として予測することは簡単である。したがって、段落全体のセマンティックなベクトル表現を学習することは、その段落からサンプリングされた単語のコンテクストを予測するのに役立ち得る。
【0139】
単語ベクトルを学習するための上記の方法と同様に、ANN又はその他の機械学習構造は、段落全体、文、句、又は他のマルチワードのテキストサンプルのコンテクスト上の意味を判定するため、並びにコーパス内の段落を構成する個々の単語の意味を判定するために、コーパス内の多数の段落を使用してトレーニングされ得る。こうしたANN1000は図10Aに示されている。ANN1000は、入力層1002を含み、それは、隠れ層1004に供給され、それは、順に、出力層1006に供給される。入力層1002は、2つのタイプの入力部分構造、単語を表す(入力ノードI・・・Iからなる)上部部分構造1010と、段落(文書)を表す(入力ノードD・・・Dからなる)下部部分構造1010とからなることに留意されたい。出力層1006及び最上部の入力層部分構造1008内のノードの数は、コーパス全体内の一意な単語の数に等しくてもよい。底部の入力層部分構造1010内のノードの数は、コーパス全体内の一意な段落の数と同等であり得る。本明細書で使用されるとき、“段落”は、文、段落、インシデントレポートの1つ以上のフィールド、テキストのより大きな文字列のセグメント、又はテキストの他の何らかのマルチワードの文字列であり得ることに留意されたい。
【0140】
コーパス内の各段落に対して、ANN1000は、段落に渡ってスライディングウィンドウを移動することから生成された固定長のコンテクストを用いてトレーニングされる。したがって、所与の段落ベクトルは、そのソース段落から作成された全てのトレーニングコンテクスト間で共有されるが、他の段落から作成されたトレーニングコンテクスト間では共有されない。単語ベクトルは、全ての段落から作成されたトレーニングコンテクスト間で共有され、例えば、“できません”に対するベクトルは全ての段落に対して同じである。段落のサイズに制限はなく、それらは、文書全体と同じくらい大きくても、文又は句と同じくらい小さくてもよい。図10Aでは、ANN1000が単一のトレーニング反復で示され、入力単語コンテクスト“できません”、“接続”、及び“に”、入力段落コンテクストDOC1、並びに出力単語“電子メール”を用いてトレーニングされている。出力単語は、出力層1006によって産出された結果が比較されるグラウンドトゥルース出力値として機能する。この配置は、“電子メール”が“できません”、“接続”、及び“に”に近接して出現し、DOC1内にあることを反映している。
【0141】
実装では、これは、1のグラウンドトゥルース値を受信する出力ノードO、並びに0のグラウンドトゥルース値を有する出力層1006内の他の全てのノードとして表され得る。同様に、ノードIは“できません”のグラウンドトゥルース値を有し、ノードIは“接続”のグラウンドトゥルース値を有し、ノードIは、“に”のグラウンドトゥルース値を有し、ノードDはDOC1のグラウンドトゥルース値を有する。実装では、これは、1の値と関連付けられているノードI、I、I、及びD、並びに値0を有する入力層1002内の他の全てのノードとして表され得る。損失関数は、例えば、出力層1006の出力と、グラウンドトゥルース値を含むベクトルとの間の二乗誤差の和であり得る。対応する単語ベクトル及び段落ベクトルの重み値、並びに全ての出力層パラメータ(例えば、ソフトマックス重み付け)は、(例えば、バックプロパゲーションを介して)損失関数に基づいて更新される。
【0142】
図10Bは、後続のコンテクストウィンドウを用いてトレーニングされているANN1000を示す。このコンテクストウィンドウは同じ文書から派生するが、文書内の単語を前にシフトし、入力単語コンテクスト“接続”、“に”、及び“電子メール”、入力段落コンテクストDOC1、並びに出力単語“サーバ”を使用する。実装では、これらの入力及び出力は、上の説明と同様にグラウンドトゥルース値で符号化され得る。
【0143】
図10Cは、コーパス内の別の文書を用いてトレーニングされたANN1000のインスタンスを示す。コンテクストウィンドウはこの文書から派生し、入力単語コンテクスト“できません”、“ロード”、及び“私の”、入力段落コンテクストDOC2、並びに出力単語“データベース”を使用する。実装では、これらの入力及び出力は、上の説明と同様にグラウンドトゥルース値で符号化され得る。
【0144】
ANN1000がトレーニングされた後、隠れ層1004と関連付けられた重みは、入力された単語及び段落のコンテクスト及び意味のコンパクトなベクトル表現になる。例えば、ANN1000が1,000段落のコーパスを用いて完全にトレーニングされ、コーパス全体が10,000語の一意の単語を含むとすると、各段落及び各単語は、隠れ層1004内の隠れノードの数に等しい長さを有する一意のベクトルによって表され得る。これらの一意のベクトルは、段落内の単語又は段落自体のコンテクスト上の意味を符号化する。
【0145】
図10Dは、以前は見られていない新たな段落に対する段落ベクトルを計算するために、推論ステップを実施する予測時におけるANN1000を示す。この推論ステップは、見られていない段落(DOC M+1)を表す追加の入力ノード1012を入力層部分構造1010に追加することによって開始する。この推論プロセスの間、単語ベクトル部分構造1008の係数、及び隠れ層1004と出力層1006との間の学習された重みは固定されたままである。したがって、モデルは、見られていない段落の新たなセマンティックなベクトル表現を取得するために、入力段落ベクトル部分構造1010内の見られていない段落に対応する追加の段落ベクトル1012を生成する。入力ノードを入力層部分構造1010に追加することによって、同様のプロセスを通じて、追加の見られていない段落がトレーニングされ得る。
【0146】
或いは、段落ベクトルは、入力層の単語コンテクストを無視し、入力として段落ベクトルのみを使用し、出力層内の段落からランダムにサンプリングされた異なる単語コンテクストをモデルに予測させることによってトレーニングされ得る。こうしたANNの入力層は段落ベクトルのみからなる一方で、出力層は、所与の段落からランダムに生成された単一のコンテクストウィンドウを表す。こうしたANNをトレーニングすることは、コーパス内の段落のセマンティックなコンテンツに対するベクトル表現をもたらし得るが、必ずしも、その中の単語に対する何らかのセマンティックなベクトル表現を提供するとは限らないであろう。
【0147】
コーパス内の段落に対してベクトル表現が一旦判定されると、関心のあるトピックを表すために、これらのベクトルの線形及び/又は乗法の集約が使用され得る。更に、ANN1000に示されているように、段落ベクトルの次元が単語ベクトルの次元と同じである場合、単語ベクトルと段落ベクトルとの間の線形及び乗法の集約が取得され得る。例えば、百科事典をコーパスとして使用して“ジュリアスシーザー”に相当する中国語を見つけるには、ベクトル演算PV(“ジュリアスシーザー”)-WV(“ローマ語”)+WV(“中国語”)によって実現され得、PVは(ウィキペディアの記事全体を表す)段落ベクトルであり、WVは単語ベクトルである。したがって、段落ベクトルは、よりコンテクストベースの結果を有する単語ベクトルと同じ種類の類推を実現し得る。
【0148】
実際には、そうした学習された段落ベクトルは、感情予測モデル等の他の教師あり学習モデルへの入力として使用され得る。ANN、サポートベクトルマシン(SVM)、又は単純ベイズ分類器を含み得るがこれらに限定されないこうしたモデルでは、段落ベクトルは、対応する感情ラベルを出力として有する入力として使用される。段落のコーパス内の類似したトピックに関する段落を見つける又はグループ化するために、コサイン類似度及び最近傍クラスタリングアルゴリズム等の他のメトリックが段落ベクトルに適用され得る。
【0149】
本実施形態では、学習された単語ベクトルと段落ベクトルとの組み合わせは、インシデントレポート、例えば、図6に示したようなインシデントレポート600の構造及び意味を判定するのに役立ち得る。インシデントレポート600は、左の列内の複数のフィールドからなり、その内の少なくとも幾つかは、右の列内の値と関連付けられる。簡単な説明フィールド605、問題説明フィールド606、解決策フィールド614、及びメモフィールド620等のより長いテキストフィールドに対しては、テキストを形成する個々の単語ベクトルを集約するのではなく、むしろよりコンテクスト上の意味を取得するために、関連する右の列のテキストを段落ベクトルとして、又は右の列のテキスト内の個別のテキストセグメントに対応する複数の段落ベクトルとして表すことが好ましいことがある。インシデントレポート600は、例の目的で提示されている。インシデントレポートの様々なフィールドは、段落ベクトル、単語ベクトル、又はそれら2つの重み付けされた組み合わせとして表されるように配置され得る。他のタイプのインシデントレポート、問題レポート、ケースファイル、又は知識ベースの記事も使用され得、これらのレポートは、より多くの、より少ない、及び/又は異なるフィールドを含み得る。
【0150】
異なるフィールドを段落ベクトル、単語ベクトル、又はそれら2つの重み付けされた組み合わせとして表現した後、インシデント全体を表すための単一のベクトルが、連結(concatenating)、ベクトル和の生成、さもなければ個々のインシデントフィールドの単語及び/又は段落ベクトル表現の集約によって生成され得る。単一の集約インシデントベクトル表現を用いて、システムは、コサイン類似度又は上で論じたような他のメトリックに基づいて、類似の集約ベクトル(したがって類似のインシデントレポート)を識別するように構成され得る。或いは、類似のインシデントレポートに対する検索は、1つ以上の個々のフィールドの段落テキストのみを使用し得る。このようにして、インシデントレポート内の1つ以上の個々のフィールドからのテキストは、テキストの単一の段落に組み合わされ得る。段落ベクトルは、連結されたテキストのこの単一の大きな段落からその後生成され得、類似のインシデントを検索するために使用され得る。
【0151】
このプロセスは、以前に説明したANN構造の観点から説明され得る。まず、テキスト文字列は、図7のデータベース702から取得される。上記のように、これらのテキスト文字列は、インシデントレポートの一部からのものであり得る。その後、テキスト文字列から単語が抽出される。抽出される単語は、テキスト文字列内の単語の全て、又はこれらの単語の内の幾つかであり得る。これらの抽出された単語は、図9A図9BのANN900への入力として提供される。これらの単語の部分文字列コンテクストは、テキスト文字列から抽出される。部分文字列コンテクストは、抽出された関連付けられた単語の前、後、又は周囲の単語を含む1つ以上の部分文字列であり得る。これらのベクトル表現は、それらの個別のテキストサンプルと(例えば、コサイン類似度を使用して)比較するためにその後使用され得る。
【0152】
比較は、この方法で“一致する”データベース702からの1つ以上のインシデントレポートを識別し得る。幾つかの場合、これは、類似性が最も高いk個のインシデントレポート、又は類似性が事前に決定された値よりも大きい任意のインシデントレポートであり得る。ユーザには、これらの識別されたインシデントレポート又はその参照が提供され得る。
【0153】
幾つかの場合、事前に決定された寿命より古くないインシデントレポートのみが提供される。実例として、システムは、過去3か月、6か月、又は12か月以内に解決されたインシデントレポートのみを識別するように構成され得る。或いは、システムは。過去3か月、6か月、又は12か月以内にオープンにされたインシデントレポートのみを識別するように構成され得る。
【0154】
このようにして、入力されたインシデントレポートのものと類似のコンテンツを有するインシデントレポートが迅速に識別され得る。その結果、個人は、該インシデントのものと類似の問題が過去にどのように報告され、対処されたかを判定するために、これらのインシデントレポートを確認し得る。このことは、インシデントの解決にかかる時間が大幅に削減されることをもたらし得る。
【0155】
このセクションは、単語ベクトル及び段落ベクトルの幾つかの可能な実施形態を説明しているが、他の実施形態が存在し得る。例えば、異なるANN構造と異なるトレーニング手順とが使用され得る。
【0156】
VII. テキストクエリ又はその他のレコードのクラスタリング
クエリ、インシデントレポート、知識ベースの記事、及び/又はその他のテキスト若しくは非テキストのレコードは、纏めてクラスタリングされ得る。こうしたクラスタリングは、様々な利点を提供するために実施され得る。例えば、クラスタリングは、システム又は組織の動作に関連性を有するレコードのセット内のパターン又はグループを識別するために、レコードのセットに適用され得る。こうしたグループは、進行中の問題と関連付けられた特定のクラスタに割り当てられたレコードの時間依存性を測定することによって、進行中の問題(例えば、ネットワークの停止、ネットワークベースのサービスとインターフェースするユーザの混乱)の追跡を容易にし得る。こうしたグループは、例えば、新たに受信したレポート間の類似性を識別することによって、新たに出現する問題の早期の識別を容易にし得る。幾つかの例では、クラスタリングは、類似のレポートのセットに応答するために必要な時間を削減するために、類似のレポート(例えば、同じクラスタに対応するレポート)を共通して操作することを可能にし得る。例えば、ネットワークの停止に関連し、単一のクラスタに割り当てられるレポートは全て、ネットワークの停止の解決に続く単一の動作で解決され得る。
【0157】
幾つかの例では、クラスタリングは、専門性、熟知度、又はその他の要因に従って、技術者へのレポートの割り当てを容易にし得る。追加的に又は代替的に、それらがクラスタに割り当てられるときにレポートの解決を容易にするために、識別されたクラスタ毎に知識ベースの記事、解決フローチャート、又はその他の資料が作成され得る。クエリ、インシデントレポート、又はその他のテキスト若しくは非テキストレコードのセット内のクラスタを識別することは、追加の又は代替の利点を提供し得る。
【0158】
インシデントレポート、クエリ、知識ベースの記事、又はテキスト要素及び/若しくは非テキスト要素を含み得るレコードのタイプは、様々な方法でクラスタにグループ化され得る。こうしたクラスタリングは、トレーニングレコードの手動で分類されたセットに従って、新規のレコードをクラスタに割り当てるクラスタリングアルゴリズムを生成するために、教師ありの方法で実施され得る。追加的に又は代替的に、クラスタリングは、手動でラベルが付されたレコードを必要とせずにクラスタを生成するため、トレーニングデータ内の以前に識別されていないクラスタを識別するため、又はその他の何らかの利点を提供するために、教師なしの方法で実施され得る。
【0159】
様々な方法及び/又は機械学習アルゴリズムは、レコードのセット内のクラスタを識別するため、及び/又はレコード(例えば、新たに受信又は生成されたレコード)を既に識別されたクラスタに割り当てるために適用され得る。例えば、決定木、人工ニューラルネットワーク、k平均、サポートベクトルマシン、独立成分分析、主成分分析、又はその他の方法は、利用可能なレコードを分類するため及び/又は利用可能なレコードのトレーニングセット内に存在しないレコードを分類するためにMLモデルを生成するために、利用可能なレコードのセットに基づいてトレーニングされ得る。こうしたMLモデルへの入力は、レコードの様々な機構(feature)を含み得る。こうした機構は、レコード(例えば、日時、ステータスフラグ、ユーザID)内に存在し得、及び/又はレコードに既に存在する情報(例えば、単語ベクトル、段落ベクトル)から判定され得る。入力機構は、日時、又はレコードに関連するその他の数値情報を含み得る。入力機構は、ユーザID番号又はステータスフラグ等のカテゴリ情報(例えば、“オープン”、“クローズド解決済み”、“クローズド未解決”)を含み得る。入力機構は、レコードのテキスト情報(例えば、“問題説明”フィールド)に関連する情報を含み得る。例えば、入力機構は、レコードのテキストフィールドから生成された単語及び/若しくは段落ベクトル、並びに/又は自然言語処理を使用して生成されたその他の機構に関連し得る。入力機構は、MLモデルに適用される前に、マッピング(例えば、非線形変換、次元削減)を受け得る。
【0160】
図11Aは、レコードの例示的なセット1100を示す。レコードのクラスタリングを説明する目的のために、各レコードは、2次元空間内の個別の位置によって表されている。空間内の所与のレコードの位置は、所与のレコードの2つの機構の値(例えば、レコードの生成時間及びレコードの解決時間、レコードのテキストから生成された段落ベクトルの2つの次元)に関連し得る。或いは、所与のレコードの位置は、線形又は非線形の次元削減技術又はその他のマッピング方法を使用して、レコードの3つ以上の機構を2次元空間に投影することに関連し得る。
【0161】
類似値は、レコードのセット1100内のレコードの対に対して判定され得る。こうした類似値は、ある意味で“類似”であるレコードが同じクラスタに割り当てられる一方で、非常に“非類似”であるレコードは異なるクラスタに割り当てられるように、レコード1100をクラスタリングするためのMLモデルを生成するために使用され得。そうした類似値は、何らかの空間、例えば、図11Aの2次元空間、レコードのテキストの態様から判定された単語及び/又は段落ベクトルに関連するセマンティックに符号化されたベクトル空間、レコードの生成時間又はレコードのその他の数値的及び/若しくはカテゴリ情報に関連する次元を含むベクトル空間等おけるレコード間の距離尺度に対応し得る。こうした距離は、ユークリッド距離、マンハッタン距離、又はアプリケーションに従ったその他の何らかの距離尺度であり得る。
【0162】
図11Bは、レコードのセット1100から識別される3つのクラスタ1110A、1120A、1130Aの内の1つに割り当てられたレコードのセット1100内の各レコードを示す。各レコードの割り当ては、レコードを指し示すために使用される形状、第1のクラスタ1110Aに対する黒丸と、第2のクラスタ1120Aに対する白丸と、第3のクラスタ1130Aに対する四角とによって指し示されている。レコードの全てがクラスタに割り当てられ、実際には、レコードをクラスタに割り当てるために使用されるMLモデルは、随意に、レコードをクラスタに割り当てる代わりに、レコードの残余のセットにレコードを割り当て得、又はその他の何らかの活動を取り得ることに留意されたい。このことは、例えば、レコードと潜在的なクラスタとの間の類似性が類似性の最小程度未満である場合に、クラスタへのレコードの割り当てを回避するために行われ得る。
【0163】
上記のように、レコードを2つ以上のクラスタに割り当てる、及び/又はレコードを残余の未割り当てのレコードのセットに割り当てるMLモデルを生成するために様々な方法が使用され得る。MLモデルが一旦判定されると、MLモデルは、MLモデルにより表される識別されたクラスタに追加のレコードを割り当てるため、及び/又は残余のレコードのセットにレコードを割り当てるために適用され得る。MLモデルは、パラメータ値、ニューラルネットワークハイパーパラメータ、機構空間内のクラスタ重心位置、機構空間内のクラスタ境界位置、閾値類似値、又はレコードを何れのクラスタに割り当てるかを判定するため、及び/若しくはレコードがクラスタに割り当てられるべきではない(例えば、残余の未割り当てのレコードのセット内に格納されるべきである)と判定するためにMLモデルによって使用されるその他の情報を含み得る。こうした情報は、各クラスタに対応する機構空間内の領域を定義し得る。すなわち、MLモデル内の情報は、レコードの機構が特定のクラスタに対して定義された領域内の機構空間内の位置に対応する場合に、MLモデルが特定のクラスタにレコードを割り当てるようなものであり得る。定義された領域は、クローズであり(境界で完全に囲まれ)得るか、オープンであり(1つ以上の境界を有するが、機構空間内の1つ以上の方向に無限に外側に延伸し)得る。
【0164】
図11Cは、図11Aの例示的な2次元機構空間内のそうした領域1110B、1120B、1130Bを説明する。レコードのセット1100のレコードは、領域1110B、1120B、1130B内にあり、したがって、MLモデルによって、領域1110B、1120B、1130Bに対応するクラスタに割り当てられるであろう。領域1110B、1120B、1130Bの外側の位置を有するレコードは、残余のレコードのセットに割り当てられ得る。MLモデルは、スプライン、超平面、セル、超球、又はMLモデルにより表されるクラスタに対応する機構空間内の領域1110B、1120B、1130Bの境界及び/若しくは範囲を明示的に定義するその他の形状についての位置、形状、範囲、又はその他の情報を指し示す情報を含み得る。追加的又は代替的に、MLモデルは、ネットワーク重みパラメータ、出力ユニットスケーリングパラメータ、又は領域1110B、1120B、1130Bの境界及び/若しくは範囲を間接的に定義するニューラルネットワーク構造若しくはその他のアルゴリズムについてのその他の情報を含み得る。
【0165】
幾つかの例では、MLモデルは、クラスタの機構空間内の位置を指し示す重心又はその他の位置情報を含み得る。重心は、クラスタ内のレコードの位置の算術的又は幾何学的平均の位置、判定された幾何学的中心、又はクラスタのレコードに適合したハイパースフィア、ハイパーエリプソイド、若しくはその他の形状のその他の定義位置、又は機構空間内のクラスタの全体的な位置及び/若しくは範囲に関連するその他の何らかの位置であり得る。こうした例では、機構空間内のレコードの位置が、それが何れかの他のクラスタの重心にあるよりも特定のクラスタの重心に近い場合に、レコードは特定のクラスタに割り当てられ得る。こうした方法で編成されたMLモデルは、k平均分類器を含み得る。説明される例として、図11Dは、機構空間内に3つの重心1115C、1125C、1135Cを含む。各重心は、個別のクラスタに対応する。レコードのセット1100からのレコードは、重心1115C、1125C、1135Cの内の何れが機構空間内のレコードの位置に最も近いかに基づいて、クラスタに割り当てられ得る。そうした配置の下で、レコードは、レコードの位置がオープン領域1110C、1120C、1130Cの内の何れの中にあるかに基づいてクラスタに割り当てられるであろう。
【0166】
幾つかの例では、クラスタとレコードとの間の類似性の程度が類似性閾値よりも大きくない限り、レコードは、特定のクラスタへの割り当てから除外され得る。このことは、レコードの位置と、クラスタの重心又はその他の特徴的な位置との間の距離が閾値距離未満であることを含み得る。何れかのクラスタ内への包含から除外されたレコードは、残余のレコードのセットに追加され得る。説明される例として、図11Eは、機構空間内に3つの重心1115D、1125D、1135Dを含む。各重心は、個別のクラスタに対応する。レコードのセット1100からのレコードは、重心1115D、1125D、1135Dの内の何れが機構空間内のレコードの位置に最も近く、レコードの位置から閾値距離d未満であるかに基づいて、クラスタに割り当てられ得る。そうした配置の下で、レコードは、レコードの位置が、クローズ領域1110D、1120D、1130Dの内の何れの中にあるかに基づいて、クラスタに割り当てられるであろう。閾値距離はクラスタ間で異なり得ることに留意されたい。例えば、閾値距離は、MLモデルのトレーニングの間に各クラスタに割り当てられたレコードの分散に基づき得る。
【0167】
幾つかの例では、MLモデルは、レコードが各クラスタに割り当てられるべきか否かを判定するために、指定された順序で動作し得る。例えば、MLモデルは、(例えば、第1のクラスタの重心とレコードの位置との間の距離を閾値距離と比較することによって)レコードが第1のクラスタに割り当てられるべきか否かをまず判定し得る。レコードが第1のレコードに割り当てられるべきではないと判定された場合、MLモデルは、レコードが第2のクラスタに割り当てられるべきか否かを判定するように動作し得る等々。こうした方法は、レコードをクラスタに割り当てること(又はレコードが何れのクラスタにも割り当てられるべきではないと判定すること)の予想される計算コストを削減する利点を有し得る。追加的又は代替的に、こうした方法は、既存のクラスタの内の何れかと以前に関連付けられていた新たなクラスタに機構空間の何れの領域を再割り当てすることなく、追加のクラスタがモデルに追加されること可能にし得る。このことは、レコードがクラスタの何れかに割り当てられるべきか否かを判断するために、新たに追加されたクラスタをシーケンスの最後に配置することによって行われ得る。
【0168】
説明される例として、図11Fは、機構空間内に3つの重心1115E、1125E、1135Eを含む。各重心は、個別のクラスタに対応する。レコードのセット1100からのレコードは、クラスタの指定されたシーケンスに従って、機構空間内のレコードの位置が、クラスタの重心の位置から閾値距離未満であるか否かを判定することによって、クラスタに割り当てられ得る。そうした配置の下で、レコードは、レコードの位置がクローズ領域1110E、1120E、1130Eの内の何れの中にあるかに基づいて、クラスタに割り当てられるであろう。閾値距離はクラスタ間で異なることに留意されたい。
【0169】
上で説明したクラスタリング及びMLモデルのトレーニング動作は、本明細書の他の場所で説明されるように、リモートネットワーク管理プラットフォームの要素間で分散され得る。例えば、リモートネットワーク管理プラットフォーム内のエンドユーザ計算インスタンスは、特定のユーザの管理に専用であり、ウェブページを提供し、インシデントレポートの生成及び格納を管理し、知識ベースの記事のセットを維持及び提供し、管理されるネットワークのサーバを管理するように、又はユーザの管理されるネットワークの保守及び運用に関連するその他の幾つかの動作を実施するように構成され得る。
【0170】
インシデントレポート、知識ベースの記事、又はエンドユーザ計算インスタンス及び/若しくは管理されるネットワークに関連するその他のテキストレコードに基づいてMLモデルを生成及び/又は適用するために、計算リソースの追加のセットが割り当てられ得る。タスクのこの分散は、メモリであり得、計算に時間がかかり得るML関連のタスクが他のネットワーク管理タスク(例えば、ウェブページの提供、サーバの管理、インシデントレポートの生成)とは別に実施されることを可能にするため、MLモデルを生成又は適用する場合にそれらの他のネットワーク管理タスクの性能を劣化させない。また、タスクのこの分散は、MLモデルの生成及び適用に使用されるリソースが、効率を増加させるために、リモートネットワーク管理プラットフォームの異なるユーザ間で共有されることを可能にし得る。
【0171】
幾つかの例では、トレーニング計算インスタンスは、最初にMLモデルを生成し得る。これは、エンドユーザ計算インスタンスからのこうしたことに対するリクエストに応答して行われ得る。トレーニングインスタンスは、(例えば、エンドユーザ計算インスタンスからそうした情報を受信することによって)エンドユーザ計算インスタンスに関連するインシデントレポート又はその他のレコードのセットにその後アクセスし得、MLモデルを生成するためにその情報を使用し得る。生成されたMLモデルは、後の使用のためにトレーニングインスタンスによってその後格納され得、格納/後の使用のためにエンドユーザインスタンスへ送信され得、及び/又は後の使用のために他の何らかの位置内に格納され得る。
【0172】
追加のインシデントレポート又はその他のレコードは、トレーニングされたMLモデルを使用して、クラスタにその後割り当てられ得、及び/又は残余のレコードのセットに追加され得る。このことは、エンドユーザインスタンスによって行われ得る。或いは、リモートネットワーク管理プラットフォーム内の予測計算インスタンスは、エンドユーザインスタンスからそうした分類に対するリクエストを受信し得る。こうしたリクエストは、分類されるインシデントレポート又はレコードの指標を含み得る。予測インスタンスは、インシデントレポート又はその他のレコードをクラスタに、又は残余のレコードのセットに割り当てるために、MLモデルをその後適用し得る。予測インスタンスは、ローカルメモリから又は予測インスタンスの一部ではないデータベースからMLモデルにアクセスし得る。例えば、予測インスタンスは、関連するMLモデルが予測インスタンスのメモリ(例えば、ハードドライブ、データベース)に存在しないと判定し得、その判定に応答して、予測インスタンスは、MLモデルのコピーに対するリクエストをエンドユーザインスタンスへ送信し得る。予測インスタンスがインシデントレポート又はその他のレコードを特定のクラスタに一旦割り当てると、予測インスタンスは、エンドユーザインスタンスへ特定のクラスタの表現を送信し得る。
【0173】
テキストレコードのコーパス内のテキストレコードの1つ以上のクラスタの表現を送信することは、表現されたクラスタに関連する様々な情報を送信することを含み得る。このことは、識別番号(例えば、GUID)、データベース内の位置、又はエンドユーザインスタンスがテキストレコードの表現されたクラスタを識別することを可能にし得るその他の識別情報を送信することを含み得る。追加的又は代替的に、テキストレコードのクラスタのコンテンツの表現が送信され得る。このことは、クラスタ内のテキストレコードに対する識別情報(例えば、GUID、データベース内の位置)、クラスタ内のテキストレコードのコンテンツの全て又は一部(例えば、クラスタ内のインシデントレポートの“問題解決”フィールドからのテキスト)、クラスタと関連付けられた1つ以上の代表的なテキストレコードのコンテンツ(例えば、クラスタと関連付けられた知識ベースの記事、“問題解決”フィールド、若しくはクラスタの重心に近いインシデントレポートのその他のコンテンツ)、又はクラスタと関連付けられたその他の何らかのコンテンツを送信することを含み得る。
【0174】
テキストレコードのコーパス内の1つ以上のテキストレコードの表現を送信することは、様々な異なる情報を送信することを含み得る。幾つかの例では、テキストレコードの表現の送信することは、識別番号(例えば、グローバルユニーク識別子(GUID))、日時スタンプ、データベース内の位置、又はエンドユーザインスタンスがデータベース内の表現されたテキストレコードを識別すること、さもなければ表現されたテキストレコードにアクセスすることを可能にし得るその他の何らかの識別情報を送信することを含む。追加的又は代替的に、テキストレコードの表現を送信することは、テキストレコード自体又はその一部分のコピーを送信することを含み得る。例えば、テキストレコードの表現を送信することは、インシデントレポートの“問題解決”フィールドのコピーを送信することを含み得る。
【0175】
VIII. テキストクエリ又はその他のレコードのクラスタリング
インシデントレポートのトレーニングセット内のインシデントレポート(又はその他のレコード)の関連するクラスタを識別するためにMLモデルを生成すること、並びに新たに生成されたインシデントレポートを識別されたクラスタに後で割り当てるためにそのMLモデルを使用することは、様々な利点を提供し得る。しかしながら、MLモデルを最初に生成するプロセスは、計算コストが高くなり得る。したがって、MLモデルは、その最初の生成後、長期間使用され得る。しかしながら、時間の経過と共に新たなインシデントレポートが生成されるので、MLモデルの有効性は低下し得る。このことは、新たに生成されたインシデントレポート内の関連するインシデントレポートの新規のクラスタの存在、識別されたクラスタの経時的なプロパティの変化(例えば、機構空間内の移動)、又はその他のプロセスに関連し得る。したがって、MLモデルは、指定されたスケジュール又はその他の基準に従って、新たに生成されたインシデントレポートに全体的又は部分的に基づいて再生成され得る。
【0176】
これらの更新間のMLモデルの精度は、MLモデル内で既に識別されたクラスタに割り当てられていない残余のインシデントレポートに基づいて部分的な更新を実施することによって更に向上し得る。こうした残余のインシデントレポートは、識別されたクラスタの全てに対して類似性が類似性閾値よりも低いことに起因して、残余のレコードのセットに追加されていることがある。例えば、残余のインシデントレポートは全て、機構空間内において、識別されたクラスタの重心又はその他の位置からの最大距離を超え得る。したがって、これらの残余のレコードは、データ内の未識別のクラスタを表し得、追加のクラスタがMLモデルに追加されるべきか否かを判定するために、MLモデルの完全な再生成の間に定期的に分析され得る。この解決策は、新たに生成されたインシデントレポート内に出現するクラスタをMLモデルが検出することを可能にしつつ、MLモデルを完全に再生成するよりも計算コストが低い利点を有し得る。
【0177】
図12Aは、レコードの例示的なセット1200を説明する。レコードのクラスタリングを説明する目的で、各レコードは、2次元空間内の個別の位置によって表されている。レコードのセット1200内のレコードの対に対して類似値が判定され得、ある意味で“類似”しているレコードが同じクラスタに割り当てられる一方で、非常に“非類似”であるレコードが異なるクラスタに割り当てられるように、レコード1200をクラスタリングするためのMLモデルを生成するために使用され得る。
【0178】
図12Bは、レコードのセット1200内の各レコードと、レコードのセット1200から識別された3つのクラスタ1210、1220、1230のセットとを示す。(黒丸で指し示される)レコードのサブセットは、クラスタ1210、1220、1230に割り当てられている。例えば、それらのレコードが識別されたクラスタ1210、1220、1230の何れに対しても類似性の閾値程度よりも類似性が低いことに起因して、レコード1200のばらばらなサブセットは、(白丸で指し示される)残余のインシデントレポートのセットに追加されている。図12Bに示されるように、類似性のこうした閾値程度は、機構空間内における最大距離に対応し得、類似性の閾値レベルは、クラスタ間で異なり得る。
【0179】
時間の経過と共に、追加のインシデントレポートが生成され得る。図12Cは、(黒丸で指し示されている)インシデントレポートの元のセット1200と、識別されたクラスタ1210、1220、1230と、(黒四角で指し示されている)新たに生成されたインシデントレポートのセットとを示している。MLモデルは、追加のインシデントレポート(黒四角)の内の幾つかを対応するクラスタに割り当てるために、これらの追加のインシデントレポートに適用されている。識別されたクラスタ1210、1220、1230の何れにも対応しないと判断された追加のインシデントレポートは、残余のインシデントレポート(白四角)のセットに追加されている。
【0180】
MLモデルを完全に再生成する前に、MLモデルにまだ存在していない追加のクラスタを識別するために、残余のインシデントレポートのセットが分析され得る。この分析は、設定されたスケジュールに従って(例えば、15分毎に)生じ得る。追加的又は代替的に、残余のインシデントレポートのセットから追加のクラスタを識別するための分析は、他の何らかの基準に応答して生じ得る。例えば、分析は、指定された数の追加のインシデントレポートが残余のインシデントレポートのセットに追加されることに応答して生じ得る。
【0181】
図12Dは、図12Cに示した残余のレコード(白丸/白四角)のセットから識別された追加のクラスタ1240を示す。新たに識別されたクラスタ1240に対応する残余のインシデントレポートのセットからのインシデントレポートは、残余のインシデントレポートのセットから削除され、新たに識別されたクラスタ1240に割り当てられている。新たに識別されたクラスタ1240に割り当てられたインシデントレポートは、インシデントレポートの元のトレーニングセットの一部であったインシデントレポートと、その後に生成されたインシデントレポートとの両方を含み得ることに留意されたい。
【0182】
残余のインシデントレポートのセットから追加のクラスタを識別するために使用されるアルゴリズムは、MLモデルを元々生成するために使用されたものと同じアルゴリズムであり得る。或いは、別の方法を適用され得る。MLモデルは、新たに識別されたクラスタを含むように拡張され得る。この拡張されたMLモデルは、(例えば、他の予測及び/又はトレーニングインスタンスに配布するために、エンドユーザのデータを保護する目的のために)対応するエンドユーザ計算インスタンスへ、又は予測インスタンスによる若しくは他のシステム若しくはコンポーネントによる後の使用のために何らかの他のデータベースへ送信され得る。
【0183】
上で説明したプロセスは、インシデントレポートの残余のセットに基づいてMLモデルにクラスタを繰り返し追加するように機能し得る。新たなクラスタが識別されると、新たなクラスタに属するインシデントレポートは、残余のインシデントレポートのセットから削除される。したがって、インシデントレポートがMLモデルに適用され、したがって残余のインシデントレポートのセットに追加される可能性のある順序は、この方法を介して識別されるクラスタに影響を与え得る。クラスタの同じセットが複数の異なる予測インスタンス(又はこれらの動作を実施するその他のインスタンス)によって識別されることを確実にするために、インシデントレポートの順序は記録され、予測インスタンスが利用可能なように作られ得る。
【0184】
例えば、予測インスタンスは、それがMLモデルの古いバージョンを有すると判定し得る。生成された関連するインシデントレポートの全てを表していないことに起因して、MLモデルのバージョンは古くなっていることがある。MLモデルのそのローカルバージョンが古くなっていると判定することに応答して、予測インスタンスは、エンドユーザインスタンスから、新たに生成されたインシデントレポートと、それらのインシデントレポートが受信された順序とについての情報をリクエストし得る。予測インスタンスは、MLモデルの古いバージョンを更新するために、新たに生成されたインシデントレポートをその後適用し得る。こうした更新スキームの下で、複数の異なる予測インスタンスは、同一の更新されたMLモデルを独立して生成し得る。
【0185】
上記の方法は、MLモデルを最初に生成するために使用されなかったインシデントレポートに基づいてMLモデルを更新するために適用され得る。定期的に、これらの方法を介して更新されたMLモデルは完全に再生成され得る。このことは、より正確で最新のクラスタを提供するため、又はその他の利点を提供するために、指定されたスケジュールに従って、又は他の基準(“リフレッシュ基準”)に応答して行われ得る。幾つかの実例では、以前のMLモデルから、識別されたクラスタの内の1つ以上を何らかの方法で維持することが有益であり得る。このことは、有用になっている、(例えば、知識ベースの記事、解決ワークフロー、若しくはその他の取り組みを作成するために)重要な開発作業の焦点となっている、進行中の関心事又はイベント(例えば、ネットワーク若しくはサービスの停止)に関連する、又はその他の何らかの方法で望ましい、クラスタを維持するために行われ得る。こうした例では、ユーザは、維持される1つ以上のクラスタを指定し得、MLモデルを再生成するために、指定したクラスタに関連する何らかの情報が使用され得る。
【0186】
以前のモデルから1つ以上の指定されたクラスタを維持するようにMLモデルを生成することは、様々なプロセスを含み得る。幾つかの例では、新たなMLモデルの対応するクラスタは、指定されたクラスタに従って設定され得る。このことは、新たなML内の対応するクラスタを、以前のMLモデルからの指定されたクラスタの対応するプロパティに従って、同じ重心、最大距離閾値、又はその他のプロパティを有するように定義することを含み得る。追加的又は代替的に、(例えば、指定されたクラスタに関連する基礎となるプロセスのプロパティの変更を説明するために)新たなMLモデルの対応するクラスタが、指定されたクラスタと僅かに異なり得るように、新たなMLモデル内の1つ以上のクラスタの初期の状態又はシードは、指定されたクラスタのそうした情報に設定され得る。
【0187】
幾つかの例では、指定されたクラスタのメンバーの内の幾つか又は全てが同じクラスタ内に留まるように、新たなMLモデルは生成され得る。このことは、同じ“真の”出力分類を有するものとしてタグ付けされた指定されたクラスタのメンバーを有する教師ありモデル生成アルゴリズムを使用することを含み得る。MLモデル生成アルゴリズムは、これらのタグ及びその他の情報に基づいてその後動作し得る。このことは、ハード要件であり得、指定されたクラスタのメンバーの全てが、新たなMLモデルによって共通して単一のクラスタに割り当てられる必要がある。或いは、このことは、ソフト要件であり得、指定されたクラスタのメンバーの内の幾つかが、新たなMLモデル内の複数の異なるクラスタ間で分離されることを可能にする。
【0188】
IX. 動作の例
図13は、例示的実施形態を説明するフローチャートである。図13に説明されるプロセスは、コンピューティングデバイス100等のコンピューティングデバイス、及び/又はサーバクラスタ200等のコンピューティングデバイスのクラスタによって実行され得る。しかしながら、プロセスは、他のタイプのデバイス又はデバイスサブシステムによって実行され得る。例えば、プロセスは、ラップトップ又はタブレットデバイス等のポータブルコンピュータによって実行され得る。
【0189】
図13の実施形態は、その中に示されている機構の内の何れか1つ以上を除去することによって簡略化され得る。更に、これらの実施形態は、以前の図の内の何れかの機構、態様、及び/又は実装と組み合わされ、さもなければ本明細書に説明され得る。
【0190】
図13の例示的方法は、予測計算インスタンスによって、及びエンドユーザ計算インスタンスから、第1のテキストレコードを受信すること(1300)を含む。エンドユーザ計算インスタンスは管理されるネットワークに専用であり、予測計算インスタンス及びエンドユーザ計算インスタンスは両方ともリモートネットワーク管理プラットフォーム内に配備される。
【0191】
図13の例示的方法は、MLパイプラインを対象データセットに適用すること(1300)を更に含む。図13の例示的方法は、テキストレコードのクラスタのセットを表す予測計算インスタンスのMLクラスタリングモデルによって、第1のテキストレコードがテキストレコードのクラスタのセットから選択された特定のクラスタに対応すると判定すること(1302)を更に含む。図13の例示的方法は、予測計算インスタンスによって、及びエンドユーザ計算インスタンスへ、特定のクラスタの表現を送信すること(1304)を更に含む。
【0192】
図13の例示的方法は、予測計算インスタンスによって、及びエンドユーザ計算インスタンスから、第2のテキストレコードを受信すること(1306)を更に含む。図13の例示的方法はまた、MLクラスタリングモデルによって、第2のテキストレコードが、テキストレコードのクラスタのセットのテキストレコードの何れのクラスタにも対応しないと判定すること(1308)を含む。図13の例示的方法は、第2のテキストレコードがテキストレコードのクラスタのセットのテキストレコードの何れのクラスタにも対応しないと判定することに応答して、予測計算インスタンスによって、残余のテキストレコードの格納されたセットに第2のテキストレコードを追加すること(1310)を更に含む。
【0193】
図13の例示的方法は、予測計算インスタンスによって、残余のテキストレコードの格納されたセットに基づいてテキストレコードの追加のクラスタを識別すること(1312)を更に含む。図13の例示的方法はまた、予測計算インスタンスによって、及びエンドユーザ計算インスタンスへ、テキストレコードの追加のクラスタの表現を送信すること(1314)を含む。
【0194】
図13の例示的方法は、追加の又は代替のステップを含み得る。幾つかの例では、予測計算インスタンスは第1の予測計算インスタンスであり、MLクラスタリングモデルは第1のMLクラスタリングモデルであり、図13の例示的な方法は、(i)第1の予測計算インスタンスによって、及び第1のテキストレコードを受信する前にエンドユーザ計算インスタンスから、第1の複数のテキストレコードを受信することと、(ii)第1のテキストレコードを受信することの前に、第1の予測計算インスタンスによって、第1の複数のテキストレコードに基づいて第1のMLクラスタリングモデルを判定するために、非確率的反復アルゴリズムを使用することと、(iii)第2の予測計算インスタンスによって、及びエンドユーザ計算インスタンスから、第2のテキストレコードを受信することと、(iv)第2の予測計算インスタンスによって、第2の予測計算インスタンスがエンドユーザ計算インスタンスに対応する最新のMLクラスタリングモデルを含まないと判定することと、(v)第2の予測計算インスタンスがエンドユーザ計算インスタンスに対応する最新のMLクラスタリングモデルを含まないと判定することに応答して、第2の予測計算インスタンスによって、及びエンドユーザ計算インスタンスから、第1の複数のテキストレコード、第1の複数のテキストレコード内のテキストレコードの順序の指標、及び第1のテキストレコードを受信することと、(vi)第2の予測計算インスタンスによって、第1の複数のテキストレコード及び第1のテキストレコードに基づいてテキストレコードのクラスタのセットを表す第2のMLクラスタリングモデルを判定するために、非確率的反復アルゴリズムを使用することであって、第2のMLクラスタリングモデルを判定するために非確率的反復アルゴリズムを使用することは、非確率的反復アルゴリズムを介して第2のMLクラスタリングモデルを更新するために、第1の複数のテキストレコード内の各テキストレコード及び第1のテキストレコードを使用することを含むことと、(vii)第2のMLクラスタリングモデルによって、第2のテキストレコードがテキストレコードのクラスタのセットから選択された特定のクラスタに対応すると判定することと、(viii)第2の予測計算インスタンスによって、及びエンドユーザ計算インスタンスへ、特定のクラスタの表現を送信することを更に含む。第1のMLクラスタリングモデルを判定するために非確率的反復アルゴリズムを使用することは、非確率的反復アルゴリズムを介して第1のMLクラスタリングモデルを更新するために、第1の複数のテキストレコード内の各テキストレコードを使用することを含む。
【0195】
幾つかの例では、MLクラスタリングモデルによって、第1のテキストレコードがテキストレコードのクラスタのセットから選択された特定のクラスタに対応すると判定することは、(i)第1のセマンティックに符号化されたベクトル空間内において、第1のテキストレコードの個々の単語の意味を説明する単語ベクトルを判定するためにMLモデルを使用し、特定のクラスタに対応する、第1のセマンティックに符号化されたベクトル空間内の位置又はボリュームの内の少なくとも1つと単語ベクトルを比較すること、又は(ii)第2のセマンティックに符号化されたベクトル空間内において、第1のテキストレコードの複数の単語の意味を説明する段落ベクトルを判定するためにMLモデルを使用し、第2のセマンティックに符号化されたベクトル空間内の位置又はボリュームの内の1つと段落ベクトルを比較することの内の少なくとも1つを含む。
【0196】
幾つかの例では、MLクラスタリングモデルは、MLクラスタリングモデルにより表されるテキストレコードのクラスタの各セットの、ベクトル空間内の個別の位置を含む。そうした例では、MLクラスタリングモデルによって、第1のテキストレコードがテキストレコードのクラスタのセットから選択された特定のクラスタに対応すると判定することは、(i)第1のテキストレコードに基づいて、ベクトル空間内の第1のテキストレコードの位置を判定することと、(ii)第1のテキストレコードの位置と特定のクラスタの位置との間のベクトル空間内の距離が閾値距離未満であると判定することを含み得る。
【0197】
図14は、例示的実施形態を説明するフローチャートである。図14により説明されるプロセスは、コンピューティングデバイス100等のコンピューティングデバイス、及び/又はサーバクラスタ200等のコンピューティングデバイスのクラスタによって実行され得る。しかしながら、プロセスは、他のタイプのデバイス又はデバイスサブシステムによって実行され得る。例えば、プロセスは、ラップトップ又はタブレットデバイス等のポータブルコンピュータによって実行され得る。
【0198】
図14の実施形態は、その中に示されている機構の内の何れか1つ以上を除去することによって簡略化され得る。更に、これらの実施形態は、以前の図の内の何れかの機構、態様、及び/又は実装と組み合わされ、さもなければ本明細書に説明され得る。
【0199】
図14の例示的な方法は、クラスタに分割された複数のテキストレコード及びテキストレコードの残余のセットを取得することであって、MLクラスタリングモデルは、類似性メトリックに基づいて複数のテキストレコードを分割したこと(1400)を含む。図14の例示的方法は、クライアントデバイスから、クエリを表す特定のテキストレコードを受信すること(1402)を更に含む。図14の例示的な方法は、MLクラスタリングモデルを経由して、及び類似性メトリックに基づいて、特定のテキストレコードがクラスタの何れにも適合しないと判定すること(1404)も含む。図14の例示的な方法は、特定のテキストレコードがクラスタの何れにも適合しないと判定することに応答して、テキストレコードの残余のセットに特定のテキストレコードを追加すること(1406)を更に含む。図14の例示的方法は、追加の又は代替の手順を含み得る。幾つかの例では、図14の例示的方法は、(i)クライアントデバイスから、第2のクエリを表す第2の特定のテキストレコードを受信することと、(ii)MLクラスタリングモデルを経由して、類似性メトリックに基づいて、第2の特定のテキストレコードがクラスタの特定のクラスタに適合すると判定することと、(iii)第2の特定のテキストレコードがクラスタの特定のクラスタに適合すると判定することに応答して、第2の特定のテキストレコードを特定のクラスタに追加することを更に含む。そうした例では、特定のテキストレコードが特定のクラスタに適合すると判定することは、特定のテキストレコードが他の全てのクラスタに適合するよりも特定のテキストレコードが特定のクラスタにより良く適合することを類似性メトリックが指し示すと判定することを含み得る。追加的又は代替的に、特定のテキストレコードが特定のクラスタに適合すると判定することは、特定のテキストレコードが指定された閾値類似性を超える程度に特定のクラスタに適合することを類似性メトリックが指し示すと判定することを含み得る。追加的又は代替的に、MLクラスタリングモデルは、テキストレコードの各クラスタの各々の、ベクトル空間内の個別の位置を含み得、第2の特定のテキストレコードが特定のクラスタに適合すると判定することは、(i)第2の特定のテキストレコードに基づいて、ベクトル空間内の第2のテキストレコードの位置を判定することと、(ii)第2のテキストレコードの位置と特定のクラスタの位置との間のベクトル空間内の距離が閾値距離未満であると判定することを含み得る。
【0200】
幾つかの例では、図14の例示的方法は、(i)MLクラスタリングモデルを経由して、テキストレコードの残余のセットが更なるクラスタを含むことを識別することと、(ii)テキストレコードのクラスタに更なるクラスタを追加することと、(iii)テキストレコードの残余のセットから、更なるクラスタの構成テキストレコードを削除することを更に含み得る。幾つかの例では、特定のテキストレコードがクラスタの何れにも適合しないと判定することは、(i)第1のセマンティックに符号化されたベクトル空間内において、特定のテキストレコードの個別の単語の意味を説明する単語ベクトルを判定するためにMLクラスタリングモデルを使用し、クラスタに夫々対応する、第1のセマンティックに符号化されたベクトル空間内の位置又はボリュームの内の少なくとも1つと単語ベクトルを比較すること、又は(ii)第2のセマンティックに符号化されたベクトル空間内において、特定のテキストレコードの複数の単語の意味を説明する段落ベクトルを判定するためにMLモデルを使用し、クラスタに夫々対応する、第2のセマンティックに符号化されたベクトル空間内の位置又はボリュームの内の少なくとも1つと段落ベクトルを比較することの内の少なくとも1つを含み得る。
【0201】
X. 結論
本開示は、様々な態様の例証として意図されている、この出願で説明する特定の実施形態に関して限定されるべきではない。当業者には明らかであるように、その範囲から逸脱することなく、多くの修正及び変形がなされ得る。本明細書に説明したものに加えて、開示の範囲内の機能的に同等の方法及び装置は、前述の説明から当業者には明らかであろう。そうした修正及び変形は、添付の特許請求の範囲内にあることが意図されている。
【0202】
上記の詳細な説明は、添付の図を参照して、開示されたシステム、デバイス、及び方法の様々な機構及び動作を説明している。本明細書及び図で説明した例示的実施形態は、限定することを意味しない。本明細書に提示される主題の範囲から逸脱することなく、他の実施形態が利用され得、他の変更がなされ得る。本明細書に一般的に説明され、図に説明されるような本開示の態様が、多種多様な異なる構成で配置され得、置換され得、組み合され得、分離され得、設計され得ることは容易に理解されるであろう。
【0203】
図中のメッセージフロー図、シナリオ、及びフローチャートの内の何れか又は全てに関して、本明細書で論じたように、各ステップ、ブロック、及び/又は通信は、例示的実施形態に従った情報の処理及び/又は情報の送信を表し得る。代替的実施形態は、これらの例示的実施形態の範囲内に含まれる。これらの代替的実施形態では、例えば、ステップ、ブロック、送信、通信、リクエスト、応答、及び/又はメッセージとして説明される動作は、関係する機能に依存して、実質的に同時又は逆の順序を含め、示された又は論じられた順序とは異なる順序で実行され得る。更に、より多くの又はより少ないブロック及び/又は動作は、本明細書で論じられるメッセージフロー図、シナリオ、及びフローチャートの内の何れかと共に使用され得、これらのメッセージフロー図、シナリオ、及びフローチャートは、部分的に又は全体的に相互に組み合され得る。
【0204】
情報の処理を表すステップ又はブロックは、本明細書で説明する方法又は技術の具体的な論理機能を実施するように構成され得る回路に対応し得る。代替的又は追加的に、情報の処理を表すステップ又はブロックは、モジュール、セグメント、又はプログラムコードの一部(関連データを含む)に対応し得る。プログラムコードは、方法又は技術において具体的な論理演算又は活動を実装するためにプロセッサにより実行可能な1つ以上の命令を含み得る。プログラムコード及び/又は関連データは、RAM、ディスクドライブ、ソリッドステートドライブ、又は別のストレージ媒体を含むストレージデバイス等の任意のタイプのコンピュータ可読媒体上に格納され得る。
【0205】
コンピュータ可読媒体はまた、レジスタメモリ及びプロセッサキャッシュのような短期間にデータを格納するコンピュータ可読媒体等の非一時的コンピュータ可読媒体を含み得る。コンピュータ可読媒体は、プログラムコード及び/又はデータをより長期間格納する非一時的コンピュータ可読媒体を更に含み得る。したがって、コンピュータ可読媒体は、例えば、ROM、光又は磁気ディスク、ソリッドステートドライブ、コンパクトディスクリードオンリーメモリ(CD-ROM)のような二次的又は永続的な長期ストレージを含み得る。コンピュータ可読媒体はまた、その他の任意の揮発性又は不揮発性のストレージシステムであり得る。コンピュータ可読媒体は、例えば、コンピュータ可読ストレージ媒体、又は有形ストレージデバイスとみなされ得る。
【0206】
更に、1つ以上の情報送信を表すステップ又はブロックは、同じ物理デバイス内のソフトウェア及び/又はハードウェアモジュール間の情報送信に対応し得る。しかしながら、その他の情報送信は、異なる物理デバイス内のソフトウェアモジュール及び/又はハードウェアモジュール間であり得る。
【0207】
図に示される特定の配置は、限定的とみなされるべきではない。他の実施形態は、所与の図に示される各要素の内の多少を含み得ることを理解すべきである。更に、説明された要素の内の幾つかは、組み合わされ得、又は省略され得る。更に、例示的実施形態は、図に説明されない要素を含み得る。
【0208】
様々な態様及び実施形態が本明細書に開示されているが、他の態様及び実施形態は当業者には明らかであろう。本明細書に開示される様々な態様及び実施形態は、例証を目的とし、限定することを意図せず、真の範囲は、以下の特許請求の範囲によって示される。
図1
図2
図3
図4
図5A
図5B
図6
図7
図8A
図8B
図9A
図9B
図10A
図10B
図10C
図10D
図11A
図11B
図11C
図11D
図11E
図11F
図12A
図12B
図12C
図12D
図13
図14