(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023041005
(43)【公開日】2023-03-23
(54)【発明の名称】エラーイベント記述を生成するためのコンピュータ実装方法、コンピュータプログラム製品およびコンピュータシステム(コンテキスト特有のアテンションを使用してエラーイベント記述を生成すること)
(51)【国際特許分類】
G06F 11/07 20060101AFI20230315BHJP
G06F 11/32 20060101ALI20230315BHJP
【FI】
G06F11/07 169
G06F11/32 170
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2022126232
(22)【出願日】2022-08-08
(31)【優先権主張番号】17/471,258
(32)【優先日】2021-09-10
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】シャー、アンジャリ
(72)【発明者】
【氏名】マレット、エー、ジェニファー
(72)【発明者】
【氏名】ルーコス、サリム
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042HH30
5B042KK13
5B042MA08
5B042MC15
(57)【要約】 (修正有)
【課題】コンテキスト特有のアテンションを使用してエラーイベント記述を生成するためのコンピュータ実装方法、コンピュータプログラム製品およびコンピュータシステムを提供する。
【解決手段】方法は、エラーイベントに関連するエラーメッセージのセットを受信することと、エラーメッセージのセットの少なくとも1行のトークン化を生成することと、トークン化のコンテキストに従ってトークン化をアテンションヘッドに提供することと、生成モデルへの入力としてアテンションヘッドの出力を提供することと、出力に従ってエラーイベントの記述を生成することと、ユーザに記述を提供することによって、エラーイベントの記述を生成することと、を含む。
【選択図】
図7
【特許請求の範囲】
【請求項1】
エラーイベント記述を生成するためのコンピュータ実装方法であって、前記方法は、
1つまたは複数のコンピュータプロセッサによって、エラーイベントに関連するエラーメッセージのセットを受信することと、
前記1つまたは複数のコンピュータプロセッサによって、前記エラーメッセージのセットの少なくとも1行のトークン化を生成することと、
前記1つまたは複数のコンピュータプロセッサによって、前記トークン化のコンテキストに従って、前記トークン化をアテンションヘッドに提供することと、
前記1つまたは複数のコンピュータプロセッサによって、生成モデルへの入力として前記アテンションヘッドの出力を提供することと、
前記1つまたは複数のコンピュータプロセッサによって、前記出力に従って、前記エラーイベントの記述を生成することと、
前記1つまたは複数のコンピュータプロセッサによって、前記記述をユーザに提供することと、を含む、コンピュータ実装方法。
【請求項2】
前記エラーメッセージのセットは、前記エラーイベントのスタックトレースを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記コンテキストは、行に基づくアテンション、変数に基づくアテンション、およびエラーに基づくアテンションを含むグループから選択された要素を含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記1つまたは複数のコンピュータプロセッサによって、エラーメッセージコンテキストに従って、前記エラーメッセージのセットをフィルタリングすることをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記1つまたは複数のコンピュータプロセッサによって、前記記述を質問応答システムに渡すことと、
前記1つまたは複数のコンピュータプロセッサによって、前記質問応答システムからの回答を前記ユーザに提供することであって、前記回答は前記記述と関連付けられている、提供することと、をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記アテンションヘッドは、エンコーダデコーダアーキテクチャを含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記トークン化に従ってコンテキストを決定することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
エラーイベント記述を生成するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、1つまたは複数のコンピュータ可読記憶装置と、前記1つまたは複数のコンピュータ可読記憶装置上に一括して記憶されたプログラム命令とを備え、前記記憶されたプログラム命令は、
エラーイベントに関連するエラーメッセージのセットを受信することと、
前記エラーメッセージのセットの少なくとも1行のトークン化を生成することと、
前記トークン化のコンテキストに従って、前記トークン化をアテンションヘッドに提供することと、
生成モデルへの入力として前記アテンションヘッドの出力を提供することと、
前記出力に従って、前記エラーイベントの記述を生成することと、
前記記述をユーザに提供することと、を行うプログラム命令を含む、コンピュータプログラム製品。
【請求項9】
前記エラーメッセージのセットは、前記エラーイベントのスタックトレースを含む、請求項8に記載のコンピュータプログラム製品。
【請求項10】
前記コンテキストは、行に基づくアテンション、変数に基づくアテンション、およびエラーに基づくアテンションを含むグループから選択された要素を含む、請求項8に記載のコンピュータプログラム製品。
【請求項11】
前記記憶されたプログラム命令は、前記コンテキストに従って、前記エラーメッセージのセットをフィルタリングするプログラム命令をさらに含む、請求項8に記載のコンピュータプログラム製品。
【請求項12】
前記記憶されたプログラム命令は、
前記記述を質問応答システムに渡すことと、
前記質問応答システムからの回答を前記ユーザに提供することであって、前記回答は前記記述と関連付けられている、提供することと、を行うプログラム命令をさらに含む、請求項8に記載のコンピュータプログラム製品。
【請求項13】
前記アテンションヘッドは、エンコーダデコーダアーキテクチャを含む、請求項8に記載のコンピュータプログラム製品。
【請求項14】
前記記憶されたプログラム命令は、
前記トークン化に従って前記コンテキストを決定する、プログラム命令をさらに含む、請求項8に記載のコンピュータプログラム製品。
【請求項15】
エラーイベント記述を生成するためのコンピュータシステムであって、前記コンピュータシステムは、
1つまたは複数のコンピュータプロセッサと、
1つまたは複数のコンピュータ可読記憶装置と、
前記1つまたは複数のコンピュータプロセッサによる実行のための前記1つまたは複数のコンピュータ可読記憶装置上の記憶されたプログラム命令を含み、前記記憶されたプログラム命令は、
エラーイベントに関連するエラーメッセージのセットを受信することと、
前記エラーメッセージのセットの少なくとも1行のトークン化を生成することと、
前記トークン化のコンテキストに従って、前記トークン化をアテンションヘッドに提供することと、
生成モデルへの入力として前記アテンションヘッドの出力を提供することと、
前記出力に従って、前記エラーイベントの記述を生成することと、
前記記述をユーザに提供することと、を行うプログラム命令を含む、コンピュータシステム。
【請求項16】
前記エラーメッセージのセットは、前記エラーイベントのスタックトレースを含む、請求項15に記載のコンピュータシステム。
【請求項17】
前記コンテキストは、行に基づくアテンション、変数に基づくアテンション、およびエラーに基づくアテンションを含むグループから選択された要素を含む、請求項15に記載のコンピュータシステム。
【請求項18】
前記記憶されたプログラム命令は、前記コンテキストに従って、前記エラーメッセージのセットをフィルタリングするプログラム命令をさらに含む、請求項15に記載のコンピュータシステム。
【請求項19】
前記記憶されたプログラム命令は、
前記記述を質問応答システムに渡すことと、
前記質問応答システムからの回答を前記ユーザに提供することであって、前記回答は前記記述と関連付けられている、提供することと、を行うプログラム命令をさらに含む、請求項15に記載のコンピュータシステム。
【請求項20】
前記アテンションヘッドは、エンコーダデコーダアーキテクチャを含む、請求項15に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、エラーイベント記述の機械学習に基づく生成に関する。本開示は、特に、統合開発環境(IDE)をサポートするエラーイベント記述の機械学習に基づく生成に関する。
【背景技術】
【0002】
現在のテクニカルチャットボットのサポートは、アカウントのプロビジョニング/デプロビジョニング、パスワードのヘルプ、問題解決システムへのフックアップ、人間のエージェントに問題を委ねるためのサポートチケットの作成など、ありふれたITタスクに対するサービスを構成するのに役立つ。
【発明の概要】
【発明が解決しようとする課題】
【0003】
コンテキスト特有のアテンションを使用してエラーイベント記述を生成するためのコンピュータ実装方法、コンピュータプログラム製品およびコンピュータシステムを提供する。
【課題を解決するための手段】
【0004】
以下では、本開示の1つまたは複数の実施形態の基本的な理解を提供するための概要を示す。この概要は、鍵となるまたは重要な要素を特定すること、または特定の実施形態の任意の範囲または特許請求の範囲の任意の範囲を定めることを意図していない。その唯一の目的は、後に提示されるより詳細な説明の前段階として、概念を簡略化した形で提示することである。本明細書で説明する1つまたは複数の実施形態では、デバイス、システム、コンピュータ実装方法、装置、もしくはコンピュータプログラム製品またはこれらの組み合わせは、エラーイベント記述生成を可能にする。
【0005】
本発明の態様は、エラーイベントに関連するエラーメッセージのセットを受信することと、エラーメッセージのセットの少なくとも1行のトークン化を生成することと、トークン化のコンテキストに従ってトークン化をアテンションヘッドに提供することと、生成モデルへの入力としてアテンションヘッドの出力を提供することと、出力に従ってエラーイベントの記述を生成することと、ユーザに記述を提供することによってエラーイベントの記述を生成することに関連する方法、システム及びコンピュータ可読媒体を開示する。
【0006】
添付図面における本開示のいくつかの実施形態のより詳細な説明を通じて、本開示の上記および他の目的、特徴および利点がより明らかになり、ここで、同じ参照は、一般に、本開示の実施形態における同じ構成要素を指している。
【図面の簡単な説明】
【0007】
【
図1】本発明の実施形態による、コンピューティング環境の概略を示す図である。
【
図2】本発明の実施形態による、データのトークン化および各アテンションヘッドへのディスパッチを示すフローチャートである。
【
図3】本発明の実施形態による、行に基づくアテンションの機能ブロック図である。
【
図4】本発明の実施形態による、エラーに基づくアテンションの機能ブロック図である。
【
図5】本発明の実施形態による、変数に基づくアテンションの機能ブロック図である。
【
図6】本発明の実施形態による、結合型アテンションヘッドと生成型言語モデルのブロック図である。
【
図7】本発明の実施形態による、動作シーケンスを示すフローチャートである。
【
図8】本発明の実施形態による、クラウドコンピューティング環境を示す図である。
【
図9】本発明の実施形態による、抽象化モデルレイヤを示す図である。
【発明を実施するための形態】
【0008】
いくつかの実施形態は、本開示の実施形態が図示された添付図面を参照してより詳細に説明される。しかしながら、本開示は、様々な態様で実施することができ、したがって、本明細書に開示された実施形態に限定されると解釈されるべきではない。
【0009】
深い技術的スキルを必要とする複雑なタスクについては、現在のチャットボットアプリケーションの能力とユーザのニーズとの間にギャップがある。開示された実施形態は、会話型AIを使用するチャットボットを提供し、問題を理解し、解決策を探すためにインテリジェント検索を実行し、会話型スレッドで適切な解決策を提案する。解決策を見つけることができない場合、チャットボットは、後のトレーニングのためのスキルギャップとして問題を記録し、ループを閉じるために人間のエージェントに問題を委ねる。
【0010】
プログラミングエラーを解決するとき、技術専門家は、エラーメッセージのスタックトレースを理解することに時間の大半を費やしている。開示された実施形態は、技術専門家がエラーメッセージの核心を理解することを手伝うことによって、このプロセスを迅速化することに焦点を当てている。開示された方法は、エラーイベントを積極的にスキャンする、開発環境に統合されたチャットボットを提供する。エラーイベントが発生すると、チャットボットは、コンテキスト特有のアテンションメカニズムを使用してエラーメッセージのスタックトレースを解析し、エラー発生の原因であるプログラムコードの行番号、関係する変数、およびエラーの記述などの詳細を収集する。事前トレーニングされた生成言語モデルに基づくグローバルアテンションヘッドは、コンテキスト特有のアテンションヘッドからこれらの詳細を組み合わせて、プログラミングエラーの解決を促進する知識ベースからの他の情報とともに、エラーメッセージのユーザーフレンドリーな会話による記述を生成する。
【0011】
プログラミングエラーは、アプリケーション開発プロセスに不可欠である。開示された実施形態は、エラーイベントの説明を自動化し、会話型ダイアログを使用してエラー解決に必要なステップを概説することにより、エラー解決プロセスを迅速化する。これにより、アプリケーション開発のタイムラインを加速させることができる。
【0012】
本発明の態様は、一般に、チャットボットシステムに関し、より詳細には、統合開発環境におけるコーディングエラーに関する会話による支援に関するものである。実施形態において、チャットボットシステムは、ユーザデバイスからエラー表示およびエラースタックトレースメッセージを受け取り、スタックトレースからエラーコンテキストを決定し、エラーコンテキストだけでなく、コンテキストから識別されたエラーに関連する追加情報を含む生成された会話出力を返す。本発明の態様によれば、チャットボットシステムは、スタックトレースの無関係な部分を自動的に排除し、スタックトレースの行から関連データを抽出し、識別されたエラーに関連する保存されたデータを取得し、ユーザに対する会話応答を生成する。チャットボットシステムは、出力に関するユーザからのフォローアップ質問を受け取り、潜在的なエラーおよびそれらのエラーに対する有用な応答に関する知識ストアを継続的に構築する。このようにして、本発明の実装は、チャットボットシステムが、ユーザがコーディングエラーを迅速に解決し除去することを助ける回答を返すように、関連する知識ストアを学習し継続的に調整する。
【0013】
本発明の態様によれば、現在のコーディングエラーに関連する会話出力を自動的に生成する方法があり、この方法は、エラーのための複数行のスタックトレースを含むエラーメッセージを受け取ることと、複数行メッセージを解析してメッセージの無関係な行を除去することと、残りの行をトークン化して残りの各行に対するコンテキスト、例えば、行番号、変数、エラー記述を決定することと、評価のために残りの各行に対するトークン化をコンテキスト特有のアテンションヘッドに渡すことと、複数のアテンションヘッドの結合出力をグローバル言語生成器に渡すことと、グローバル言語生成器の生成された会話出力をシステムのユーザに渡すこととを含む。
【0014】
本発明の態様は、チャットボットシステムの技術分野における改良を提供する。従来のチャットボットシステムは、ユーザが投げかけた質問に対してどのような回答を提供するかを決定する際に、静的モデルを利用している。多くの場合、ユーザは、関連するエラーに基づく質問がどういうものであるかを教えてくれるデータを予め持っていない。本発明の実装は、システムのエラーメッセージを解析し、メッセージの関連する部分のコンテキストを決定し、識別されたエラーに関連しシステムの知識ストアから取得され、提案された次のステップを含む、識別されたエラーコンテキストに関連する応答を生成する。これは、ユーザのためにコーディングエラーの場所と性質を識別することの改善と、エラーの解決方法に関する有用な情報を提供することの改善を提供する。
【0015】
本発明の側面はまた、コンピュータの機能性に対する改善も提供する。特に、本発明の実装は、チャットボットシステムが動作する方法に対する特定の改善に向けられており、スタックトレースメッセージの構文解析と、現在のコーディングエラーを識別し解決するためにユーザを支援する会話の出力を生成するのに関連するデータを抽出するためにコンテキスト特有アテンションヘッドを使用するメッセージの行の評価に具体的に示されている。実施形態において、システムは、スタックトレースの各関連行のコンテキストを決定し、その行のために識別されたコンテキストに従って、各行を特定のアテンションヘッドに渡す。別々のアテンションヘッドは、スタックトレースラインから特定のデータを抽出し、結合されたデータ部分を生成モデルに渡し、そこで、現在のエラーに関連し、抽出されたデータに基づいて会話のメッセージの生成が行われる。本方法は、生成されたメッセージをユーザに渡し、エラーの解決に関連するさらなる会話にユーザを関与させる。
【0016】
概要として、チャットボットシステムは、与えられた主題の入力データに係る自然言語の回答を生成する、データ処理ハードウェア上で実行される人工知能アプリケーションである。チャットボットシステムは、ネットワーク経由の入力、電子文書又は他のデータのコーパス、コンテンツ作成者からのデータ、1人または複数人のコンテンツユーザからの情報、及び他の可能な入力源からのそのような入力を含む様々なソースから入力を受信する。データ記憶装置は、コーパスのデータを記憶する。応答生成装置は、訓練済みモデルと受信した入力データに従って応答を生成する。例えば、チャットボットシステムは、ドメイン、又は主題領域(例えば、特定のプログラミング言語のエラーメッセージなど)に関する知識体系にアクセスする。ここで、知識体系(知識ベース)は、様々な構成で編成することができ、例えば、プログラミング言語特有の情報、例えば、既知のエラーメッセージ記述及びそのようなエラーメッセージに対する典型的な解決策などの構造化リポジトリに限定されないが、このような構成で編成することができる。
【0017】
実施形態において、システムの1つまたは複数の構成要素は、本質的に高度な技術的である問題(例えば、エラーイベントに関連するエラーメッセージのセットを受け取ること、エラーメッセージのセットの少なくとも1行のトークン化を生成すること、トークン化のコンテキストに従ってアテンションヘッドにトークン化を提供すること、生成モデルへの入力としてアテンションヘッドの出力を提供すること、出力に従ってエラーイベントの記述を生成すること、ユーザに対して記述を提供することなど)を解決するのにハードウェアもしくはソフトウェアまたはその両方を用いることが可能である。これらの解決策は抽象的ではなく、例えばエラーイベントの解決を促進するために必要な処理能力により、人間による一連の精神的行為として実行することはできない。さらに、実行される処理の一部は、エラーイベントの解決に関連する定義されたタスクを実行するための専用のコンピュータによって実行されてもよい。例えば、エラーイベントの解決に関連するタスクを遂行するために、専用のコンピュータを採用することなどが可能である。
【0018】
図1は、開示された発明の実施に関連する例示的なネットワークリソースを示す概略図である。本発明は、命令ストリームを処理する、いずれかの開示された要素のプロセッサにおいて実施してよい。図に示すように、ネットワーク化されたクライアント装置110は、サーバサブシステム102にワイヤレスで接続する。クライアント装置104は、ネットワーク114を介してサーバサブシステム102にワイヤレスで接続する。クライアント装置104及び110は、エラーイベント評価プログラム(図示せず)を、プログラムを実行するのに十分な計算資源(プロセッサ、メモリ、ネットワーク通信ハードウェア)と共に構成する。クライアント装置104及び110は、IDEのユーザがIDEにコードを入力し、コードエラーイベントに関して開示された実施形態のチャットボットに関与するためのユーザインターフェイスデバイスを表している。
図1に示すように、サーバサブシステム102は、サーバコンピュータ150を含んで構成される。
図1は、本発明の実施形態による、ネットワーク化されたコンピュータシステム1000内のサーバコンピュータ150の構成要素のブロック図を示している。
図1は、1つの実装の例示のみを提供し、異なる実施形態が実装され得る環境に関していかなる制限も示唆しないことを理解されたい。描かれた環境に対する多くの変更を行うことができる。
【0019】
サーバコンピュータ150は、プロセッサ154、メモリ158、永続ストレージ170、通信ユニット152、入力/出力(I/O)インタフェース156、および通信ファブリック140を含むことができる。通信ファブリック140は、キャッシュ162、メモリ158、永続ストレージ170、通信ユニット152、および入力/出力(I/O)インタフェース156の間の通信を提供する。通信ファブリック140は、プロセッサ(マイクロプロセッサ、通信およびネットワークプロセッサなど)、システムメモリ、周辺装置、およびシステム内の他の任意のハードウェアコンポーネント間でデータもしくは制御情報またはその両方を渡すために設計された任意のアーキテクチャで実装することができる。例えば、通信ファブリック140は、1つまたは複数のバスを用いて実装することができる。
【0020】
メモリ158及び永続ストレージ170は、コンピュータ可読記憶媒体である。本実施形態では、メモリ158は、ランダムアクセスメモリ(RAM)160を含む。一般に、メモリ158は、任意の適切な揮発性または不揮発性のコンピュータ可読記憶媒体を含むことができる。キャッシュ162は、最近アクセスされたデータ、および最近アクセスされたデータの近くのデータをメモリ158から保持することによって、プロセッサ154の性能を向上させる高速メモリである。
【0021】
本発明の実施形態を実践するために使用されるプログラム命令およびデータ、例えば、エラーイベント記述生成プログラム175は、キャッシュ162を介してサーバコンピュータ150のそれぞれのプロセッサ154の1つまたは複数による実行もしくはアクセスまたはその両方のために永続ストレージ170に格納される。この実施形態では、永続ストレージ170は、磁気ハードディスクドライブを含む。代替的に、または磁気ハードディスクドライブに加えて、永続ストレージ170は、ソリッドステートハードディスク、半導体記憶装置、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROM)、フラッシュメモリ、またはプログラム命令またはデジタル情報を格納できる他の任意のコンピュータ可読記憶媒体を含むことができる。
【0022】
また、永続ストレージ170が使用するメディアは、取り外し可能であってもよい。例えば、永続ストレージ170には、取り外し可能なハードディスクが使用されてもよい。他の例としては、永続ストレージ170の一部でもある別のコンピュータ可読記憶媒体上に転送するためにドライブに挿入される光ディスクおよび磁気ディスク、サムドライブ、およびスマートカードがある。
【0023】
通信ユニット152は、これらの例では、クライアントコンピューティング装置104、および110のリソースを含む、他のデータ処理システムまたは装置との通信を提供する。これらの例では、通信ユニット152は、1つまたは複数のネットワークインターフェースカードを含む。通信ユニット152は、物理的および無線通信リンクのいずれかまたは両方の使用を通じて通信を提供することができる。ソフトウェア配布プログラム、および本発明の実施に使用される他のプログラムおよびデータは、通信ユニット152を通じてサーバコンピュータ150の永続ストレージ170にダウンロードされてもよい。
【0024】
I/Oインタフェース156は、サーバコンピュータ150に接続され得る他の装置とのデータの入力および出力を可能にする。例えば、I/Oインタフェース156は、キーボード、キーパッド、タッチスクリーン、マイクロフォン、デジタルカメラ、もしくは他の適切な入力デバイスまたはこれらの組み合わせなどの外部装置190への接続を提供することができる。外部装置190は、例えば、サムドライブ、ポータブル光または磁気ディスク、およびメモリカードなどのポータブルコンピュータ可読記憶媒体を含むこともできる。本発明の実施形態を実践するために使用されるソフトウェアおよびデータ、例えば、サーバコンピュータ150上のエラーイベント記述生成プログラム175は、このようなポータブルコンピュータ可読記憶媒体に格納することができ、I/Oインタフェース156を介して永続ストレージ170にロードすることができる。I/Oインタフェース156はまた、ディスプレイ180に接続する。
【0025】
ディスプレイ180は、データをユーザに表示する機構を提供し、例えば、コンピュータのモニタであってもよい。ディスプレイ180は、入力されたコードと開示された発明のチャットボットとの進行中のコードエラー会話の表示をユーザに提供するために、タブレットコンピュータのディスプレイのようなタッチスクリーンとして機能することも可能である。
【0026】
図2を参照すると、実施形態で、ブロック210において、ユーザがチャットボットのシステムおよび方法の使用を開始する。開始後、本システムおよび方法は、ユーザのIDEのスキャンを開始し、関連するスタックトレースエラーメッセージを有するエラーイベントを検出する。本方法およびシステムは、エラーイベントに対するスタックトレースを受信する。この実施形態では、ブロック220において、本方法は、スタックトレースを解析し、メッセージの各行を個別に考慮する。各行について、本方法は、ブロック230において、英語、フランス語、またはドイツ語などの言語の個々の単語、または個々の文字に行を分割することなどにより、行をトークン化する。
【0027】
この実施形態では、ブロック240において、本方法は、スタックトレースラインをフィルタリングし、行番号、変数、またはエラーイベント記述を参照しない行を、さらなる考慮および処理から除外する。同様に、ブロック250において、本方法は、スタックトレースラインをさらにフィルタリングし、インポートライブラリからのコードに関連する行など、エラーイベントエバリュエータの範囲外の行番号を参照する行を、さらなる検討から除外する。ブロック260において、本方法は、残りの行の関連するコンテキスト、例えば、行、変数、またはエラー記述(エラー)を決定するために、残りの行のトークンにトークン頻度カウントを適用する。
【0028】
次に、残りの行の各々のトークン化は、さらなる処理、例えばスタックトレースラインのトークン化に含まれる特定の行、変数、およびエラー記述の識別のために、システムの適切なアテンションヘッドに渡される。関連する行番号の存在を示す頻度カウントを有するそれらのスタックトレースラインは、ブロック270において、行のアテンションヘッドに渡される。変数を示す頻度カウントを持つものは、ブロック280において変数アテンションヘッドに渡され、エラーコードまたは他のエラー記述を示す頻度カウントを持つものは、ブロック290でエラーアテンションヘッドに渡される。
【0029】
実施形態において、本方法はさらに、1つまたは複数の重み付き線形変換関数を使用してスタックトレースラインを処理し、元の行のトークン化を共通の次元を有するベクトルに変換する。線形変換関数から出力されたベクトルは、次に、以下に説明するコンテキスト特有のアテンションに渡される。実施形態では、ベクトルは、線形変換関数によって一貫した次元を有する。
【0030】
図3は、行のアテンションヘッドの機能性を示す。実施形態において、アテンションヘッドのための特定のアーキテクチャの使用は、スタックトレースラインのためのそれぞれのトークンの相対的な位置決めに関する情報を入力に含めることから利益を得ることができる。そのために、本方法は、入力トークン化の各要素に対する位置データを定義するためにサイン及びコサイン関数を使用するなど、異なる次元に対する位置関数に従って、スタックトレースラインのトークン埋め込みの次元に対する位置情報などの位置情報を定義する。実施形態において、各コンテキスト特有のアテンションヘッドは、エンコーダ-デコーダアーキテクチャを含む。図に示すように、本方法は、スタックトレースラインのトークン化LTを、トークン化のための、決定された位置情報PEと共に、行のアテンションヘッド300のエンコーダ310、およびデコーダ320の各モジュールに渡す。エンコーダ310は、マルチヘッドアテンション312とフィードフォワードロジック314を1ブロックとして6回積み重ね、スタックトレースから行のトークン化を行う。デコーダ320側では、セットアップはエンコーダ310と同様であり、デコーダ出力として行番号情報を抽出するように見える行特有のアテンションブロック322を追加したものである。そして、この方法は、エンコーダ310で使用されるものと同様のマルチヘッドアテンション324、フィードフォワードロジック326を備えた6つのブロック構造への入力として、行に基づくアテンション出力とエンコーダ310出力を結合するものである。
【0031】
実施形態において、エンコーダは、6つの同一のレイヤのような同一のレイヤを積み重ねた構成となっている。各レイヤは、マルチヘッド自己アテンションヘッド312、サブレイヤ、および位置的に完全に接続されたフィードフォワードネットワーク314、サブレイヤを有する。エンコーダはまた、マルチヘッドアテンションとフィードフォワードネットワークのそれぞれの周りの接続を含む。各サブレイヤの出力は正規化される。
【0032】
本実施形態において、デコーダも6つの同一のレイヤを積み重ねた構成となっている。各デコーダレイヤは、上述した2つのサブレイヤに加え、コンテキスト特有のアテンションヘッドをさらに含む。デコーダの出力も正規化されている。エンコーダとデコーダのそれぞれは、コンテキストに関連するトークン化の同一の埋め込みを受け取る。
【0033】
実施形態において、アテンションヘッドは、文の単語間の関係を定量化するために、文の単語間のスケールされたドット積アテンション関数からなる。また、アテンションヘッドは、複数のアテンション関数を並行して使用するため、マルチヘッドアテンションである。これにより、このモデルは、異なる位置で異なる表現部分空間に共同して注意することができる。
【0034】
実施形態において、フィードフォワードネットワークは、非線形性を注入するために、間に正規化線形ユニット(ReLU)活性化を有する2つの線形変換を適用するニューラルネットワークで構成される。
【0035】
実施形態において、デコーダからの出力は、線形変換関数LINEARに渡され、この線形変換関数は、ソフトマックス関数SMのための入力を生成する。ソフトマックス関数SMの出力は、グローバルアテンションヘッドと生成言語モデルとに渡される。
【0036】
実施形態において、線形変換関数は、入力トークン化からのコンテキスト埋め込みを所望の次元のベクトルに変換するために使用される同じ関数および関数重みから構成される。ここで、線形変換は、デコーダ出力を同じ次元のベクトルに変換する。
【0037】
実施形態において、ソフトマックス関数は、線形変換関数のベクトル出力を、本システム及び方法の基礎となるコーパスに従って、次のトークン予測の正規化された確率分布に変える。
【0038】
図4は、可変アテンションヘッドの機能を示す図である。実施形態において、アテンションヘッドのための特定のアーキテクチャの使用は、スタックトレースラインのためのそれぞれのトークンの相対的な位置決めに関する情報を入力に含めることから利益を得ることができる。そのために、本方法は、入力トークン化の各要素に対する位置データを定義するためにサイン及びコサイン関数を使用するなど、異なる次元に対する位置関数に従って、スタックトレースラインのトークン埋め込みの次元に対する位置情報などの位置情報を定義する。図に示すように、本方法は、スタックトレースラインのトークン化LTを、トークン化のために、決定された位置情報PEと共に、可変アテンションヘッド400のモジュールであるエンコーダ410、およびデコーダ420の各々に渡す。エンコーダ410は、マルチヘッドアテンション412とフィードフォワードロジック414を1ブロックとして6回繰り返し、積み重ね、スタックトレースから可変トークン化を行う。デコーダ420側では、セットアップはエンコーダ410と同様であり、デコーダ出力として変数情報を抽出するように見える変数特有のアテンションブロック422を追加したものである。この方法は、次に、エンコーダ410で使用されるものと同様のマルチヘッドアテンション424、およびフィードフォワードロジック426を備えた6つのブロック構造への入力として、変数に基づくアテンション出力とエンコーダ410出力を結合するものである。
【0039】
実施形態において、エンコーダは、6つの同一のレイヤのような同一のレイヤを積み重ねた構成となっている。各レイヤは、マルチヘッド自己アテンションヘッド412、サブレイヤ、および位置的に完全に接続されたフィードフォワードネットワーク414、サブレイヤを有する。エンコーダはまた、マルチヘッドアテンションとフィードフォワードネットワークのそれぞれの周りの接続を含む。各サブレイヤの出力は、正規化関数Nによって正規化される。
【0040】
本実施形態において、非限定的な例として、デコーダも6つの同一のレイヤを積み重ねた構成となっている。各デコーダレイヤは、上述した2つのサブレイヤに加え、コンテキスト特有のアテンションヘッドをさらに含む。デコーダの出力も正規化される。デコーダはまた、コンテキスト特有のアテンション、マルチヘッドアテンション、および正規化関数へのフィードフォワードネットワークのそれぞれの周りの接続を含む。エンコーダとデコーダのそれぞれは、コンテキストに関連するトークン化の同一の埋め込みを受け取る。
【0041】
実施形態において、デコーダからの出力は、線形変換関数LINEARに渡され、この線形変換関数は、ソフトマックス関数SMのための入力を生成する。ソフトマックス関数SMの出力は、グローバルアテンションヘッドと生成言語モデルとに渡される。
【0042】
図5は、エラーアテンションヘッドの機能を説明する図である。実施形態において、アテンションヘッドのための特定のアーキテクチャの使用は、スタックトレースラインのためのそれぞれのトークンの相対的な位置決めに関する情報を入力に含めることから利益を得ることができる。そのために、本方法は、入力トークン化の各要素に対する位置データを定義するためにサイン及びコサイン関数を使用するなど、異なる次元に対する位置関数に従って、スタックトレースラインのトークン埋め込みの次元に対する位置情報などの位置情報を定義する。図に示すように、本方法は、スタックトレースエラーのトークン化ETを、トークン化のための決定された位置情報PEとともに、エラーアテンションヘッド500のモジュールであるエンコーダ510、およびデコーダ520の各々に渡す。エンコーダ510は、マルチヘッドアテンション512とフィードフォワードロジック514を1ブロックとして6回繰り返し、積み重ね、スタックトレースからエラートークン化を行う。デコーダ520側では、セットアップはエンコーダ510と同様であり、デコーダ出力としてエラー記述情報を抽出するように見えるエラー特有のアテンションブロック522を追加したものである。そして、この方法は、エンコーダ510で使用されるものと同様のマルチヘッドアテンション524、フィードフォワードロジック526を備えた6つのブロック構造への入力として、エラーに基づくアテンション出力とエンコーダ510の出力を結合するものである。
【0043】
実施形態では、エンコーダは、6つの同一のレイヤのような同一のレイヤを積み重ねた構成となっている。各レイヤは、マルチヘッド自己アテンションヘッド512、サブレイヤ、および位置的に完全に接続されたフィードフォワードネットワーク514、サブレイヤを有する。エンコーダはまた、マルチヘッドアテンションとフィードフォワードネットワークのそれぞれの周りの接続を含む。各サブレイヤの出力は、正規化関数Nによって正規化される。
【0044】
本実施形態では、非限定的な例として、デコーダも6つの同一のレイヤを積み重ねた構成となっている。各デコーダレイヤは、上述した2つのサブレイヤに加え、コンテキスト特有のアテンションヘッドをさらに含む。デコーダの出力も正規化される。デコーダはまた、コンテキスト特有のアテンション、マルチヘッドアテンション、および正規化関数へのフィードフォワードネットワークのそれぞれの周りの接続を含む。エンコーダとデコーダのそれぞれは、コンテキストに関連したトークン化の同一の埋め込みを受ける。
【0045】
実施形態において、デコーダからの出力は、線形変換関数LINEARに渡され、この線形変換関数は、ソフトマックス関数SMのための入力を生成する。ソフトマックス関数SMの出力は、グローバルアテンションヘッドと生成言語モデルとに渡される。
【0046】
図6は、行、変数、およびエラーアテンションヘッドの出力を受信して結合するグローバルアテンションヘッド600を示す。グローバルアテンションヘッドは、GPT-3モデルなどの訓練済み生成モデルを利用して、受信された行、変数、及びエラー出力に基づいて会話出力を生成する。図に示すように、各コンテキスト特有のアテンション610、620、630は、特有の出力615、625、635を提供する。3つのそれぞれの出力は、本方法が生成モデル650への入力として提供する入力ベクトル埋め込み640において結合される。生成モデル650は、コンテキスト依存入力に基づき、多数の潜在的な会話応答を出力する。本方法は、出力のセットと各出力に対応する生成モデル信頼度とをソフトマックス関数660に渡し、この関数は、システムユーザのための会話言語メッセージを形成するために使用されるモデルの知識コーパスからの単語の確率を出力する。実施形態において、本方法は、次に、エラーイベントに応答して、最も高い信頼度スコアを有する出力をユーザに提供する。実施形態において、本方法は、識別されたエラー問題に関連する特定の回答を生成するために、生成された出力を訓練済み質問応答システム(図示せず)に渡す。この実施形態において、質問応答システムを訓練することは、訓練済みモデルが、生成された応答において識別されたエラーに関連するデータを取得できるように、異なるプログラミング言語に対する既知のエラーに関する訓練をシステムに提供することを含む。
【0047】
実施形態において、ユーザは、生成されたエラー記述及び提案された進路に応答して、チャットボットプログラムに関与する。この実施形態において、本方法は、生成されたエラー記述に対するユーザの応答を処理し、ユーザの応答の処理からの出力埋め込みを使用して生成モデルを更新する。
【0048】
図7は、本開示の実施に関連する例示的な動作を示す、フローチャート700を示す。プログラム開始後、ブロック710において、エラーイベント記述生成プログラム175は、IDEエラーイベントに対するスタックトレースデータなどのエラーイベントデータを受信する。プログラムは、エラーデータを個々の行に解析し、行番号、変数、またはエラー記述に無関係な行を破棄し、また、例えば、コードのインポートライブラリに関連する行などのプログラムの範囲外の行に関連する行を破棄して、行をフィルタリングする。
【0049】
ブロック720において、本方法は、残りの各行についてトークン化埋め込みベクトルを生成する。この方法は、各行のコンテキスト(例えば、行、変数、またはエラー)を決定するために、トークン化に対して頻度カウントを実行する。
【0050】
ブロック730において、本方法は、さらなる処理のために、埋め込まれたトークン化をコンテキスト的に関連するアテンションヘッド、例えば行間など、に渡す。アテンションヘッドは、その出力として、入力された埋め込みから特定のコンテキスト上の詳細を抽出する。例えば、5行目、変数A[5]、またはエラー記述list_index_out_of_rangeである。
【0051】
ブロック740において、本方法は、アテンションヘッドの出力を、GPT-3モデルなどの生成モデルに提供する。生成言語モデルは、特定のアテンションヘッドからのコンテキスト的出力に基づいて、会話出力応答を生成する。実施形態において、本方法は、単一のスタックトレース入力に関連付けられた複数のアテンションヘッド出力を、提供された入力のセットに基づく会話出力をもたらす生成言語モデルに提供する。
【0052】
ブロック750において、本方法は、生成された応答を現在のエラーイベントに関連させてユーザに提供する。実施形態において、本方法は、生成された応答を、生成された出力の識別されたエラーに特有の会話応答を生成する質問応答システムに渡す。この実施形態では、生成された質問応答出力は、現在のエラーを解決するために取るべきステップの指示をユーザに提供する。
【0053】
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている又は後に開発される任意の他のタイプのコンピューティング環境と組み合わせて実施することが可能である。
【0054】
クラウドコンピューティングは、設定可能なコンピューティングリソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)へ、簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの実装モデルを含むことがある。
【0055】
特性は以下の通りである。
【0056】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0057】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
【0058】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0059】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0060】
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0061】
サービスモデルは以下の通りである。
【0062】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
【0063】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0064】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアを消費者が展開および実行可能な、処理、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0065】
展開モデルは以下の通りである。
【0066】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0067】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0068】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0069】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0070】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0071】
ここで、
図8に例示的なクラウドコンピューティング環境50を示す。図示するように、クラウドコンピューティング環境50は1つ以上のクラウドコンピューティングノード10を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード10は互いに通信することができる。ノード10は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つ以上のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、
図8に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード10およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0072】
ここで、クラウドコンピューティング環境50(
図8)によって提供される機能的抽象化レイヤのセットを
図9に示す。なお、
図9に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0073】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0074】
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば以下の仮想エンティティを提供することができる:仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75。
【0075】
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウド消費者およびタスクの識別確認を可能にする。ユーザポータル83は、消費者およびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0076】
ワークロードレイヤ90は、クラウドコンピューティング環境が利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、およびエラーイベント記述生成プログラム175が含まれる。
【0077】
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。本発明は、命令ストリームを処理する、単一または並列の任意のシステムにおいて有益に実施され得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
【0078】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶装置は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0079】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピュータ装置/処理装置へダウンロード可能である。あるいは、ネットワーク(例えばインターネット、LAN、WANもしくはワイヤレスネットワークまたはこれらの組み合わせ)を介して、外部コンピュータまたは外部記憶装置へダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを備えることができる。各コンピュータ装置/処理装置内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、各々のコンピュータ装置/処理装置におけるコンピュータ可読記憶媒体に記憶するために転送する。
【0080】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、スモールトークやC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン型ソフトウェアパッケージとして完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または、完全にリモートコンピュータもしくはサーバ上で実行可能である。後者の場合、リモートコンピュータは、LANやWANを含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよいし、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続してもよい。いくつかの実施形態において、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行する目的で当該電子回路をカスタマイズするために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
【0081】
本発明の実施形態は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャートもしくはブロック図またはその両方を参照して説明されている。フローチャートもしくはブロック図またはその両方における各ブロック、および、フローチャートもしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実行可能である。
【0082】
上記のコンピュータ可読プログラム命令は、機械を生産するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供してよい。これにより、かかるコンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行するための手段を創出する。上記のコンピュータ可読プログラム命令はさらに、コンピュータ、プログラマブルデータ処理装置もしくは他の装置またはこれらの組み合わせに対して特定の態様で機能するよう命令可能なコンピュータ可読記憶媒体に記憶してよい。これにより、命令が記憶された当該コンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作の態様を実行するための命令を含む製品を構成する。
【0083】
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブル装置、または他の装置にロードし、一連の動作ステップを当該コンピュータ、他のプログラマブル装置、または他の装置上で実行させることにより、コンピュータ実行プロセスを生成してもよい。これにより、当該コンピュータ、他のプログラマブル装置、または他の装置上で実行される命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行する。
【0084】
本開示の図面におけるフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための1つ以上の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。他の一部の実装形態において、ブロック内に示した機能は、各図に示す順序とは異なる順序で実行してもよい。例えば、連続して示される2つのブロックは、実際には、関係する機能に応じて、同時もしくは略同時に実行してもよいし、場合により逆順で実行してもよい。なお、ブロック図もしくはフローチャートまたはその両方における各ブロック、および、ブロック図もしくはフローチャートまたはその両方における複数のブロックの組み合わせは、特定の機能または動作を行う、または専用ハードウェアとコンピュータ命令との組み合わせを実行する専用ハードウェアベースのシステムによって、実行可能である。
【0085】
本明細書における「一実施形態(one embodiment)」、「実施形態(an embodiment)」、「例示的実施形態(an example embodiment)」等への言及は、記載された実施形態が特定の特徴、構造、又は特性を含み得ることを示すが、すべての実施形態が必ずしも特定の特徴、構造、又は特性を含むとは限らない。さらに、このようなフレーズは、必ずしも同じ実施形態を指すものではない。さらに、特定の特徴、構造、または特性が実施形態に関連して記載されている場合、明示的に記載されているか否かにかかわらず、他の実施形態に関連してそのような特徴、構造、または特性に影響を与えることは当業者の知識の範囲内であると理解される。
【0086】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、限定することを意図するものではない。本明細書で使用される場合、単数形「a」、「an」および「the」は、文脈が明確に他のことを示さない限り、複数形も含むことを意図している。本明細書で使用される場合、「含む(comprises)」という用語もしくは「含む(comprising)」という用語またはその両方は、記載された特徴、整数、ステップ、操作、要素、もしくは構成要素またはその組み合わせの存在を指定するが、1つ以上の他の特徴、整数、ステップ、操作、要素、構成要素、もしくはそれらのグループまたはその組み合わせの存在または追加を排除するものではない。
【0087】
本発明の様々な実施形態の説明は、説明のために提示されたが、網羅的であること、または開示された実施形態に限定されることを意図するものではない。説明された実施形態の範囲及び精神から逸脱することなく、多くの修正及び変形が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見出される技術に対する実用化または技術的改良を最もよく説明するために、または当業者が本明細書に開示される実施形態を理解できるように選択されたものである。