以下、本開示の実施のための具体的な内容を添付図面に基づいて詳細に説明する。ただし、以下の説明では、本開示の要旨を不要にぼやかす恐れがある場合、公知の機能や構成に関する具体的な説明は省略する。
添付図面において、同一又は対応する構成要素には同一の参照符号が付与される。また、以下の実施例の説明において、同一又は対応する構成要素の重複記述は省略され得る。しかしながら、構成要素に関する記述が省略されても、そのような構成要素が、ある実施例に含まれないものと意図してはならない。
開示の実施例の利点及び特徴、そしてそれらを達成する方法は、添付図面に基づいて後述する実施例を参照すれば明確になる。しかしながら、本開示は、以下で開示される実施例に限定されず、互いに異なる多様な形態で具現され得る。但し、本実施例は、本開示が完全になるようにし、本開示が当業者に発明のカテゴリを正確に認識させるために提供されるだけである。
本開示で使用される用語について簡略に説明し、開示の実施例について具体的に説明する。本明細書で使用される用語は、本開示での機能を考慮しつつ、可能な限り現在広く使用される一般的な用語を選択したが、これは関連分野に従事する技術者の意図又は判例、新技術の出現などにより変化し得る。また、特定の場合は出願人が任意で選定した用語もあり得るが、これらの意味は当該発明の説明の部分において詳細に記載する。よって、本開示で使用される用語は、単純な用語の名称ではなく、その用語が持つ意味と本開示の全般にわたった内容に基づいて定義されるべきである。
本開示において、文脈上において明確に特定しない限り、単数の表現は複数の表現を含み、複数の表現は単数の表現を含むことができる。本開示において、ある部分がある構成要素を「含む」とすれば、これは特に反対の記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含むこともできることを意味する。
また、明細書で使用される「モジュール」又は「部」という用語は、ソフトウェアやハードウェア構成要素を意味し、「モジュール」又は「部」はある役割を遂行する。しかしながら、「モジュール」又は「部」はソフトウェアやハードウェアに限定される意味ではない。「モジュール」又は「部」は、アドレッシング可能な保存媒体にあるように構成してもよく、一つ又はそれ以上のプロセッサを再生させるように構成してもよい。したがって、一例として、「モジュール」又は「部」は、ソフトウェア構成要素、客体指向ソフトウェア構成要素、クラス構成要素、タスク構成要素のような構成要素、並びに、プロセス、関数、属性、プロシージャー、サブルーチン、プログラムコードのセグメント、ドライバー、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、又は変数のうちで少なくとも一つを含むことができる。構成要素と「モジュール」又は「部」は、内部で提供される機能はさらに小さい数の構成要素及び「モジュール」又は「部」で結合されたり、追加的な構成要素と「モジュール」又は「部」にさらに分離されたりできる。
本開示の一実施例によれば、「モジュール」又は「部」は、プロセッサ及びメモリで具現され得る。「プロセッサ」は、汎用プロセッサ、中央処理装置(CPU)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、制御器、マイクロ制御器、状態マシンなどを含むように広く解釈されるべきである。いくつかの環境では、「プロセッサ」は、特定用途向け半導体(ASIC)、プログラム可能なロジックデバイス(PLD)、フィールドプログラム可能なゲートアレイ(FPGA、)等を示すこともできる。「プロセッサ」は、例えば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサの組合せ、DSPコアと結合した一つ以上のマイクロプロセッサの組合せ、若しくは、任意の他のそのような構成等の組合せのような処理デバイスの組合せを示すこともできる。また、「メモリ」は、電子情報を保存可能な任意の電子コンポーネントを含むように広く解釈されるべきである。「メモリ」は、RAM(Random Access Memory)、ROM(Read Only Memory)、NVRAM(Non-Volatile Random Access Memory)、PROM(Programmable Read-Only Memory)、EPROM(Erasable Programmable Read-Only Memory)、EEPROM(Electrically Erasable Programmable Reda-Only Memory)、フラッシュメモリ、磁気又は光学データ保存装置、レジスタなどのようなプロセッサ-読み取り可能な媒体の多様な類型を示すこともできる。プロセッサがメモリから情報を読み取り/読み取ったメモリに情報を記録できる場合、メモリは、プロセッサと電子通信状態にあると言われる。プロセッサに集積されたメモリは、プロセッサと電子通信状態にある。
本開示において、「ペルソナ(persona)」は、特定語彙、掛け声(チュイムセ)、口振りなどの使用により固有の言語的な特徴が発現されることで、他のキャラクター又は人物と区別される特徴を持つキャラクターを示すことができる。一実施例において、ペルソナは、特定の年齢、性別、地域、言語的な性格(例:溌刺とした性格、丁重な性格、前向きな性格等)を反映するキャラクターを示すことができる。
本開示において、「チャットボット」は、特定のサービスに係る情報を提供したり、ユーザの発話に含まれた質問に対応する答弁を提供したりする人工知能(Artificial Intelligence、AI)基盤のコミュニケーションソフトウェアを示すことができる。
本開示において、「発話」は、言語を音声として発する言語行為又は当該言語行為を文字形態として記述するもの(例えば、テキスト)を示すことができる。
本開示において、「超巨大言語モデル」は、few-shot learningなどのような方式を用いて、ファインチューニング(fine-tuning)なしに推論が可能な言語モデルを示すことができ、既存の一般言語モデルに比べて、10倍以上多くの媒介変数(例えば、1000億個以上の媒介変数等)を持つことができる。例えば、超巨大言語モデルは、ハイパークローバ(HyperCLOVA)やGPT3(Generative Pretrained Transformer 3)であり得る。
本開示において、「対話シーン(dialogue scene)」は、少なくとも一人以上の対話者が参加して、一つ以上の発話を構成とする対話場面を示すことができ、特定の質問又は文章に対応する一貫した対話体の答弁からなることができる。特定の質問又は文章に対応する一貫した対話体の答弁は、以前の対話又は対話の主題に影響を受けることができる。
図1は、本開示の一実施例により、ユーザ110がユーザ端末を用いてペルソナチャットボットサービスを利用する例を示す図である。図に示すように、ユーザ110は、ユーザ端末を用いてチャットボットに特定の情報を要請する質問又は対話を開始する発話が入力できる。チャットボットは、ユーザの発話に応じてペルソナを維持したキャラクター発話が提供できる。超巨大言語モデルに基づいたペルソナチャットボットの場合、ユーザの発話を累積学習することで、経時によりユーザの発話に含まれた言語的な特徴がペルソナチャットボットの言語的な特徴(或いは、キャラクター対話体)に影響を及ぼし、チャットボットの言語的な特徴の固有性が棄損する恐れがある。よって、チャットボットのペルソナの棄損を防止するために、ペルソナチャットボットの発話の言語的な特徴をモニタリングして、ペルソナが維持されない場合、生成されるチャットボットの発話をキャラクター対話体に合うように修正する必要がある。また、ペルソナチャットボットは、一貫した世界観を維持し、特定のクエリに対する一貫した答弁を行い、特定の主題に対する一貫した対話の流れを維持することが必要である。
図に示すように、ユーザ110は、ユーザ端末のユーザインタフェース120を介してユーザ発話を入力し、ペルソナチャットボットから一貫したキャラクター対話体の応答メッセージが受信できる。例えば、ユーザ110が「来月オンアンドオフがカムバするって!!」という発話を入力する場合、ペルソナチャットボットは、感嘆詞、語彙の子音の変形、語尾処理の変形及び特殊文字を用いて、溌刺とした性格のペルソナを持つ「キャア!!、叫んで~アンナ姫様、ちょっと気絶するかも~」というキャラクター発話が提供できる。次いで、ユーザ110が「1ケ月ぶりにカムバするじゃん。カムバタームやばいね。ビックニユースまたあるよ!」のユーザ発話を入力する場合、ペルソナチャットボットが「何?早く教えて!気になってまた気絶する前に!」というキャラクター発話を提供して、溌刺とした性格を持つチャットボットのペルソナを維持すると同時に、以前の対話の主題に対する一貫した対話の流れを維持することが確認できる。
図2は、本開示の一実施例によるペルソナチャットボットサービスを提供するために、情報処理システム230が複数のユーザ端末210_1、210_2、210_3と通信可能であるように連結された構成を示す概要図である。情報処理システム230は、ペルソナチャットボットサービスが提供できるシステムを含むことができる。一実施例において、情報処理システム230は、ペルソナチャットボットサービスに係るコンピュータ実行可能なプログラム(例えば、ダウンロード可能なアプリケーション)や、データを保存、提供、及び実行できる一つ以上のサーバー装置及び/又はデータベースや、クラウドコンピューティング(cloud computing)サービス基盤の一つ以上の分散コンピュータ装置及び/又は分散データベースを含むことができる。例えば、情報処理システム230は、ペルソナチャットボットサービスのための別途のシステム(例えば、サーバー)を含むことができる。情報処理システム230により提供されるペルソナチャットボットサービスなどは、複数のユーザ端末210_1、210_2、210_3の各々に設置されたインスタントメッセージングアプリケーション、人工知能基盤コミュニケーションソフトウェア、ウェブブラウザー、などを通してユーザに提供できる。一実施例において、情報処理システム230は、超巨大言語モデル240を用いてユーザ端末にペルソナチャットボットサービスが提供できる。
複数のユーザ端末210_1、210_2、210_3は、ネットワーク220を介して情報処理システム230と通信できる。ネットワーク220は、複数のユーザ端末210_1、210_2、210_3及び情報処理システム230間の通信が可能であるように構成できる。ネットワーク220は、設置環境に応じて、例えば、イーサネット(Ethernet)、PLC(Power Line Communication)、電話線通信装置、及びRS-serial通信、などのような有線ネットワーク、移動通信網、WLAN(Wireless LAN)、Wi-Fi、Bluetooth(登録商標)及びZigBee(登録商標)、などのような無線ネットワーク、又はその組合せからなることができる。通信方式は制限されず、ネットワーク220を含むことができる通信網(例えば、移動通信網、有線インターネット、無線インターネット、放送網、衛星網、等)を活用する通信方式だけでなく、ユーザ端末210_1、210_2、210_3間の近距離無線通信も含まれる。
図2において、携帯電話端末210_1、タブレット端末210_2、及びPC端末210_3をユーザ端末の例として示したが、これに限定されず、ユーザ端末210_1、210_2、210_3は、有線及び/又は無線通信が可能な任意のコンピュータ装置であり得る。例えば、ユーザ端末は、スマートフォン、携帯電話、ナビゲーション、デスクトップコンピュータ、ラップトップコンピュータ、デジタル放送用端末、PDA(Personal Digital Assistants)、PMP(Portable Multimedia Player)、タブレットPC、ゲームコンソール(game console)、ウェアラブルデバイス(wearable device)、IoT(internet of things)デバイス、VR(virtual reality)デバイス、及びAR(augmented reality)デバイス、などを含むことができる。また、図2では、3つのユーザ端末210_1、210_2、210_3がネットワーク220を介して情報処理システム230と通信するものとして示したが、これに限定されず、異なる数のユーザ端末がネットワーク220を介して情報処理システム230と通信するように構成されることもできる。
一実施例において、情報処理システム230は、ユーザ端末210_1、210_2、210_3からユーザ発話(例えば、テキストや音声等)が受信できる。このとき、情報処理システム230は、受信されたユーザ発話の情報に応答するチャットボットペルソナを維持したキャラクター発話が提供できる。図2においては、超巨大言語モデル240が情報処理システム230の外部に存在するものとして示したが、これに限定されず、情報処理システム230の内部に超巨大言語モデル240が保存されて使用することもできる。また、図2では、情報処理システム230がユーザ端末からユーザ発話を受信した後、キャラクター発話を生成してユーザ端末に提供するものとして示したが、これに限定されず、ペルソナチャットボットサービスを提供するためのハードウェア/ソフトウェアがユーザ端末に具備されることもできる。
図3は、本開示の一実施例によるユーザ端末210及び情報処理システム230の内部構成及び超巨大言語モデル240を示すブロック図である。ユーザ端末210は、インスタントメッセージングアプリケーション、人工知能基盤コミュニケーションソフトウェア、ウェブブラウザー、などが実行可能であり、有/無線通信が可能な任意のコンピュータ装置を示すことができ、例えば、図2の携帯電話端末210_1、タブレット端末210_2、PC端末210_3などを含むことができる。図に示すように、ユーザ端末210は、メモリ312、プロセッサ314、通信モジュール316、及び入出力インタフェース318を含むことができる。これと同様に、情報処理システム230は、メモリ332、プロセッサ334、通信モジュール336、及び入出力インタフェース338を含むことができる。図3に示すように、ユーザ端末210及び情報処理システム230は、各々の通信モジュール316、336を用いて、ネットワーク220を介して、情報及び/又はデータが通信できるように構成できる。また、入出力装置320は、入出力インタフェース318を介して、ユーザ端末210に情報及び/又はデータを入力したり、ユーザ端末210から生成された情報及び/又はデータを出力したりするように構成できる。
メモリ312、332は、非一時的な任意のコンピュータ読み取り可能な記録媒体を含むことができる。一実施例によれば、メモリ312、332は、RAM(random access memory)、ROM(read only memory)、ディスクドライブ、SSD(solid state drive)、及びフラッシュメモリ(flash memory)、などのような永久的な大容量記憶装置(permanent mass storage device)を含むことができる。他の例として、ROM、SSD、フラッシュメモリ、及びディスクドライブ、などのような永久的な大容量保存装置は、メモリとは区分される別途の永久保存装置としてユーザ端末210又は情報処理システム230に含まれ得る。また、メモリ312、332には、オペレーティングシステムと少なくとも一つのプログラムコードが保存され得る。
このようなソフトウェア構成要素は、メモリ312、332とは別途のコンピュータ読み取り可能な記録媒体からローディングできる。このような別途のコンピュータ読み取り可能な記録媒体は、このようなユーザ端末210及び情報処理システム230に直接連結可能な記録媒体を含むことができるが、例えば、フロッピードライブ、ディスク、テープ、DVD/CD-ROMドライブ、及びメモリカード、などのようなコンピュータ読み取り可能な記録媒体を含むことができる。他の例として、ソフトウェア構成要素等は、コンピュータ読み取り可能な記録媒体でなく、通信モジュール316、336を介してメモリ312、332にローディングされることもできる。例えば、少なくとも一つのプログラムは、開発者又はアプリケーションの設置ファイルを配信するファイル配信システムが、ネットワーク220を介して提供するファイルにより設置されるコンピュータプログラムに基づいて、メモリ312、332にローディングされ得る。
プロセッサ314、334は、基本的な算術、ロジック及び入出力演算を遂行することで、コンピュータプログラムの命令を処理するように構成できる。命令は、メモリ312、332又は通信モジュール316、336により、プロセッサ314、334に提供され得る。例えば、プロセッサ314、334は、メモリ312、332のような記録装置に保存されたプログラムコードによって受信される命令を実行するように構成できる。
通信モジュール316、336は、ネットワーク220を介して、ユーザ端末210と情報処理システム230とが互いに通信するための構成や機能を提供でき、ユーザ端末210及び/又は情報処理システム230が、他のユーザ端末又は他のシステム(例えば、別途のクラウドシステム等)と通信するための構成や機能を提供できる。例えば、ユーザ端末210のプロセッサ314がメモリ312などのような記録装置に保存されたプログラムコードによって生成した要請やデータ(例えば、テキスト又は音声などのユーザ発話が含まれたデータなど)は、通信モジュール316の制御により、ネットワーク220を介して情報処理システム230に伝達され得る。反対に、情報処理システム230のプロセッサ334の制御により提供される制御信号や命令が、通信モジュール336及びネットワーク220を経て、ユーザ端末210の通信モジュール316を介してユーザ端末210に受信され得る。例えば、ユーザ端末210は、情報処理システム230から、ユーザ発話に応答するキャラクター発話が受信できる。
入出力インタフェース318は、入出力装置320とのインタフェースのための手段であり得る。一例として、入力装置は、オーディオセンサ及び/又はイメージセンサを含むカメラ、キーボード、マイクロホン、マウス、などのような装置を含み、出力装置は、ディスプレイ、スピーカ、ハプティックフィードバックデバイス(haptic feedback device)、などのような装置を含むことができる。他の例として、入出力インタフェース318は、タッチスクリーンなどのように入力及び出力を遂行するための構成及び機能が一つで統合された装置とのインタフェースのための手段であり得る。図3では、入出力装置320がユーザ端末210に含まれないように示したが、これに限定されず、ユーザ端末210と一体に構成することもできる。また、情報処理システム230の入出力インタフェース338は、情報処理システム230と連結するか、又は、情報処理システム230が含むことができる入力や出力のための装置(図示せず)とのインタフェースのための手段であり得る。図3では、入出力インタフェース318、338がプロセッサ314、334と別途に構成された要素として示されるが、これに限定されず、入出力インタフェース318、338がプロセッサ314、334に含まれるように構成することもできる。
ユーザ端末210及び情報処理システム230は、図3に示す構成要素よりも多くの構成要素を含むことができる。しかしながら、大部分の従来技術的構成要素を明確に示す必要はない。一実施例によれば、ユーザ端末210は、前述した入出力装置320の少なくとも一部を含むように具現できる。また、ユーザ端末210は、トランシーバー(transceiver)、GPS(Global Positioning system)モジュール、カメラ、各種センサ、及びデータベース、などのような他の構成要素をさらに含むことができる。例えば、ユーザ端末210がスマートフォンである場合、一般にスマートフォンが持つ構成要素を含むことができ、例えば、加速度センサ、ジャイロセンサ、マイクモジュール、カメラモジュール、各種物理的なボタン、タッチパネルを用いたボタン、入出力ポート及び振動のための振動器、などのような多様な構成要素が、ユーザ端末210にさらに含まれるように具現できる。
図4は、本開示の一実施例による情報処理システムのプロセッサ400の内部構成を示す機能的なブロック図である。図に示すように、プロセッサ400は、対話主題探知器410、対話シーン検索モデル420、プロンプトエンコーダ430、超巨大言語モデル440、キャラクターペルソナ探知器450、及びキャラクター対話体変換器460を含むことができる。図4では、一つのプロセッサを示したが、これに限定されず、情報処理システムは、複数のプロセッサを含んでプロセッサ400と同一の機能を遂行するように構成できる。
一実施例によれば、対話主題探知器410は、ユーザ発話を受信してユーザ発話と関連した対話主題が決定/抽出できる。決定された対話主題は、対話シーン検索モデル420及びプロンプトエンコーダ430に入力できる。他の実施例において、対話主題探知器410は、ユーザ発話及び/又はチャットボット発話を受信して対話主題が決定できる。
一実施例によれば、対話シーン検索モデル420は、ユーザ発話及び/又は対話主題探知器410により決定された対話主題と関連した対話シーンが得られる。例えば、対話シーン検索モデル420は、対話保存データベース(図示せず)から特定の対話主題と関連した対話シーンが得られる。ここで、対話保存データベースは、対話シーン検索モデルの内部及び/又は外部の保存装置に含まれる。対話シーン検索モデル420により得られた対話主題と関連した対話シーンは、プロンプトエンコーダ430に入力できる。
一実施例によれば、プロンプトエンコーダ430は、指示文、キャラクター対話サンプル、ユーザ発話と関連した対話主題、対話主題と関連した対話シーン、及び、ユーザ発話、などを含むプロンプトが受信できる。ここで、指示文は、チャットボットのキャラクターに関する説明を含み、キャラクター対話サンプルは、質問及び質問に対応するキャラクター対話体の答弁を含むことができる。その後、プロンプトエンコーダ430は、プロンプトをエンコードし、エンコードしたプロンプトを超巨大言語モデル440に入力できる。
一実施例によれば、超巨大言語モデル440は、受信のエンコードしたプロンプトに基づき、ユーザ発話に応答するチャットボット発話が生成できる。超巨大言語モデル440により生成されたチャットボット発話は、キャラクターペルソナ探知器450に入力され、チャットボットのキャラクター対話体が維持されるか否かがモニタリングできる。ここで、キャラクター対話体は、キャラクター対話サンプル、指示文、及び対話シーン等に基づいて決定できる。チャットボットのキャラクター対話体が維持されるか否かに対する結果は、キャラクター対話体変換器460に提供できる。
一実施例によれば、キャラクター対話体が維持されないと判定される場合、キャラクター対話体変換器460が、チャットボット発話をキャラクター対話体と類似度が高くなるように修正できる。キャラクター対話体変換器460は、修正されたチャットボット発話をユーザに提供すると同時に、修正されたチャットボット発話をプロンプトに追加できる。一方、キャラクター対話体が維持されると判定される場合、キャラクター対話体変換器460は、チャットボット発話を修正なしにユーザに提供すると同時に、チャットボット発話をプロンプトに追加できる。
図5は、本開示の一実施例により、チャットボットのキャラクター対話体を維持しながら、ペルソナチャットボットサービスをユーザに提供する構成の例を示す図である。図に示すように、プロンプトエンコーダ520はユーザ発話510を受信できる。ここで、ユーザ発話は、ユーザ端末を介して入力されたテキスト、又は、入力の音声が音声認識器によって変換されたテキストなどであり得る。一実施例によれば、プロンプトエンコーダ520は、予め入力された指示文522、チャットボットの対話体を学習させるためのキャラクター対話サンプル524、及び、受信したユーザ発話510を含むプロンプトをエンコードすることができる。
エンコードしたプロンプトは、超巨大言語モデル530に入力され、ユーザ発話510に応答するチャットボット発話532が生成できる。超巨大言語モデル530により生成されたチャットボット発話532は、キャラクターペルソナ探知器540に入力され、チャットボットのペルソナ(すなわち、チャットボットのキャラクター対話体)が維持されるか否かがモニタリングできる。すなわち、チャットボットの対話体を一定に維持するために、チャットボットの答弁の対話体(すなわち、ペルソナ)をモニタリングする探知モデルを別途に訓練させて超巨大言語モデルを補助できる。
一実施例において、キャラクターペルソナ探知器540は、ニューラルネットワーク(neural network)基盤分流器などを用いて、チャットボットのペルソナが維持されるか否かをモニタリングできる。例えば、キャラクターペルソナ探知器540は、チャットボット発話532とチャットボットのキャラクター対話体とを比較して、チャットボット発話532及びキャラクター対話体間のマッチングスコア542が生成できる。その後、キャラクターペルソナ探知器540は、マッチングスコア542に基づき、チャットボットのキャラクター対話体が維持されるか否かが判定できる。キャラクターペルソナ探知器540が生成したマッチングスコア542は、キャラクター対話体変換器550に提供できる。
マッチングスコア542が既定の閾値以下である場合、キャラクター対話体が維持されないと判定して、キャラクター対話体変換器550は、チャットボット発話532をキャラクター対話体と類似度が高くなるように修正できる。後述するように、キャラクター対話体変換器550は、別途の人工知能モデルとして具現できる。一方、マッチングスコア542が既定の閾値を超過する場合、キャラクター対話体が維持されると判定して、キャラクター対話体変換器550は、チャットボット発話532を修正しなくてよい。その後、キャラクター対話体変換器550は、チャットボット発話552をユーザに提供すると同時に、プロンプトに追加できる。このように、キャラクターペルソナ探知器540がチャットボットのキャラクター対話体が維持されるか否かをモニタリングして、チャットボットのキャラクター対話体が維持されない場合、キャラクター対話体変換器550が応答をチャットボットのキャラクター対話対話体に合うように修正することで、超巨大言語モデル530を使用する場合にも一貫したキャラクター対話体が維持できる。
図6は、本開示の一実施例により、一貫したキャラクター対話体を維持するために、キャラクター対話体変換器(例えば、図5の550)がチャットボットの応答を修正する例を示す図である。図に示すように、プロンプト600は、キャラクターに関する説明を含む指示文610、キャラクター対話サンプル620、及びユーザ発話630からなることができる。例えば、指示文610は、「アンナはいつも幸せで生気溌剌としている。共感力に優れ、前向きでリアクションが良いほうである。」というキャラクターに関する説明を含むことができる。また、キャラクター対話サンプル620は、「来月オンアンドオフがカムバするって!!」という質問、及び、「キャア!!、叫んで~アンナ姫様、ちょっと気絶するかも~」というキャラクター対話体の答弁などのような、質問-答弁ペアを複数含むことができる。
その後、プロセッサ(例えば、情報処理システムの少なくとも一つのプロセッサ)は、プロンプト600をエンコードし、エンコードしたプロンプトを超巨大言語モデルに入力して、チャットボット発話640が生成できる。例えば、ユーザ発話630に応答した発話として、「そうなの?この頃、二ユースが多いね~」というチャットボット発話が生成できる。キャラクター対話体が維持されないと判定された場合、プロセッサは、チャットボット発話640をキャラクター発話650に修正できる。例えば、「そうなの?この頃、ニュースが多いね~」というチャットボット発話640を、「何?早く教えて!気になってまた気絶する前に!」というキャラクター発話650に修正できる。この場合、プロセッサは、修正されたキャラクター発話650をプロンプト600に追加できる。
図7は、本開示の一実施例により、一貫したキャラクター対話体を維持するために、キャラクター対話体変換器(例えば、図5の550)が学習される例を示す図である。図に示すように、第1の対話体変換器710は、キャラクター発話を一般発話に変換するように学習されたモデルであり得る。これと同様に、第2の対話体変換器720は、一般発話をキャラクター発話に変換するように学習されたモデルであり得る。例えば、第1の対話体変換器710は、後述する精製(refinement)方式と同様に、一般発話初期データセット内の一般発話を示す単語等の集合WXを除去し、最も同一/類似の意味を持つキャラクター発話を示す単語等WY
(k)(w)に代えて初期対話体変換器を一時生成した後、繰り返してアップデートされ得る。第2の対話体変換器720も同様に、初期モデルを生成し、繰り返してアップデートされ得る。例えば、第1の対話体変換器710及び第2の対話体変換器720は、GPT-2のような言語生成モデル(generative language model)が使用できる。
一実施例において、第1のセットのキャラクター発話712(Y)を第1の対話体変換器710に入力して、第1のセットの一般発話714(X^)が生成できる。そして、第1のセットの一般発話714(X^)内にキャラクター発話を示す単語WYが存在する場合、WX
(k)(w)内においてランダム且つ均一に(uniformly at random)選択されたw’に代替/精製できる。ここで、WX
(k)(w)は、wと最も類似の一般発話を示す単語等の集合WXにある上位k個の単語を示すことができる。その後、精製された第1のセットの一般発話714(X^)及び第1のセットのキャラクター発話712(Y)に基づき、第2の対話体変換器720を学習/アップデートできる。そして、第2のセットの一般発話722(X)を第2の対話体変換器720に入力して、第2のセットのキャラクター発話724(Y^)を生成し、同様に、第2のセットのキャラクター発話724(Y^)内に一般発話を示す単語WXが存在する場合、WX
(k)(w)内においてランダム且つ均一に選択されたw’に代替/精製できる。その後、精製された第2のセットのキャラクター発話724(Y^)及び第2のセットの一般発話722(X)に基づき、第1の対話体変換器710を学習/アップデートできる。第1のセットの新しいキャラクター発話データセットと、新しい一般発話データセットとに対して前記手順を複数回繰り返することで、第1の対話体変換器710と第2の対話体変換器720とを交差学習させることができる。これに関する詳細は後述する。
一実施例において、キャラクター対話体変換器は、教師なし学習(unsupervised learning)基盤の人工知能モデルであり得る。教師あり学習(supervised learning)基盤の人工知能モデルにおいて、文章を意訳、翻訳、スタイル変換(style transfer)などを行う場合、(X,Y)で表示されるソース-ターゲット文章(source-target sentence)ペアの並列データセット(parallel data set)が必要になり得る。一方、教師なし学習基盤の人工知能モデルの場合、このような並列データセット(X,Y)が提供されなくてよい。並列データセット(X,Y)が提供されない場合、キャラクター対話体変換器は、第1の対話体変換器710及び/又は第2の対話体変換器720を用いて、自己教師あり学習(self-supervised learning)基盤の交差翻訳フレームワーク(Cross-paraphrase framework)を通して、既定のキャラクター対話体(又は文体)及び一般対話体(又は文体)を持つ文章間に両方向に対話体を変換するように学習できる。
具体的に、第1の対話体変換器710は、キャラクター対話体を一般対話体に変換するモデル(Θ)が意味でき、第2の対話体変換器720は、一般対話体をキャラクター対話体に変換するモデル(Φ)が意味できる。このとき、キャラクター対話体に該当する非平行データ集合である第1のセットのキャラクター発話712(Y)が与えられた場合、第1の対話体変換器710(Θ)は、第1のセットの一般発話714(X^)及び第1のセットのキャラクター発話712(Y)を集合とする疑似並列(Pseudo parallel)データセット(X^,Y)を生成する役割を果たすことができる。一実施例において、第1のセットのキャラクター発話712(Y)は、第2の対話体変換器720を訓練するのに使用される非平行(non-parallel)データ集合であり得る。これは、第1のセットのキャラクター発話712(Y)及び第2のセットの一般発話722(X)は、並列データセットを構成しない独立的なデータセットであることが意味できる。
対話体変換モデルを学習する場合、損失関数(loss function)を考慮することができる。例えば、疑似並列(pseudo parallel)データセット(X^,Y)に対して損失関数(loss function)を考慮することができる。仮想一般発話である第1のセットの一般発話714(X^)が与えられた場合、これから第1のセットキャラクター発話712(Y)に変換するために発生する損失を次の数(1)によって算出できる。
ここで、仮想一般発話である第1のセットの一般発話714(X^)は、次の数(2)のように相対モデルにより推論できる。
一実施例において、第1の対話体変換器710の学習及び第2の対話体変換器720の学習は交差発生できる。各対話体変換器710、720は、学習のための疑似並列データセットを構成するために、各対話体変換器710、720により推論された対話体を他の対話体変換器に提供できる。例えば、第1の対話体変換器710により推論された第1のセットの一般発話714は、第2の対話体変換器720で学習のためのデータセットの構成集合として提供できると同時に、第2の対話体変換器720により推論された第2のセットのキャラクター発話724は、第1の対話体変換器710で学習のためのデータセットの構成集合として提供できる。これにより、各対話体変換器710、720は、交差翻訳(Cross-paraphrase)を用いて、一般発話からキャラクター発話への対話体変換及びキャラクター発話から一般発話への対話体変換など、二つの対話体変換モデルが提供できる。これは、次の表1に示すアルゴリズムとして要約できる。
一実施例において、第2の対話体変換器720の学習前に、第1の対話体変換器710から生成された第1のセットの一般発話714(X^)内にキャラクター対話体と関連した単語が含まれると判定する場合、これに応じてキャラクター対話体と関連した単語WYが一般対話体の単語WXに代替できる。一方、第1のセットの一般発話714(X^)内にキャラクター対話体と関連した単語WYが含まれないと判定する場合、第1のセットの一般発話714(X^)は修正されないことができる。具体的に、第1のセットのキャラクター発話712(Y)を第1の対話体変換器710に入力して、第1のセットの一般発話714(X^)を生成する場合、第1のセットの一般発話714(X^)内にキャラクター対話体の言語的特徴を示す単語WYは一般対話体の単語WXに代替できる。一般対話体の単語WXの集合は、次の数(3)のように算出できる。
ここで、VXはXの語彙(vocabulary)、WXはXを示す単語(word)などの集合と言える。count(w,X)はXでwが示す個数、cは閾値(threshold)、λは平滑化因子(smoothing factor)を示すことができる。WYは数(3)においてXとYを互いに変えて定義できる。一実施例において、WXとWYは最初1回生成できる。一実施例において、キャラクター対話体と関連した単語の集合WYに属する単語wに対し、WX
(k)(w)は、キャラクター対話体と関連した単語の集合WYに属する単語wと最も類似の一般対話体単語集合WXにある上位k個の単語で示すことができる。好ましくはkが10であり得る。一実施例において、キャラクター対話体と関連した単語WYと類似の意味を持つ一般対話体の単語は、第1のセットのキャラクター発話712(Y)及び第2のセットの一般発話722(X)に基づいて学習されたWord2Vecモデルを用いて決定できる。
図8は、本開示の一実施例により、キャラクター対話体変換器が学習される例を示す図である。図に示すように、キャラクター発話を一般発話に変換するように構成された第1の対話体変換器810に、キャラクター発話である「わう~お前はこの時代の本当の親孝行な息子?ご両親がすごく誇りに思うだろうww」812を入力して、仮想一般発話である「あなたは本当に親孝行な息子?ご両親が本当に誇りに思うだろう」814を生成し、仮想一般発話814及びキャラクター発話812に基づき、一般発話をキャラクター発話に変換するように構成された第2の対話体変換器820が学習できる。また、一般発話をキャラクター発話に変換するように構成された第2の対話体変換器820に、一般発話である「本当にビットコインの価値が上昇した?値段がだいぶ上がった!」822を入力して、仮想キャラクター発話である「おお、マジでビットコインが急上昇?値段めっちゃ上がった!超嬉しい!!」824を生成して、仮想キャラクター発話824及び一般発話822に基づき、キャラクター発話を一般発話に変換するように構成された第1の対話体変換器810が学習/アップデートできる。
図9は、本開示の一実施例により、超巨大言語モデル910を用いて対話体変換器930を学習する方法を示す図である。図に示すように、少なくとも一つのプロセッサは、キャラクター発話セット922を超巨大言語モデル910に入力して、一般発話セット924が生成できる。一実施例において、一般発話セット924内のキャラクター発話を示す単語等の集合WYを除去し、最も同一/類似の意味を持つ一般発話を示す単語等WX
(k)(w)に代替できる。その後、プロセッサは、一般発話セット924及びキャラクター発話セット922を学習データ920として対話体変換器930が学習できる。プロセッサは、新しいキャラクター発話データセットに対して前記学習を繰り返して遂行できる。
図7乃至図9を参照して説明した本開示の対話体変換器の学習方法に対する評価のために、4つのデータセットをテストデータセットとして使用した。データセットは、GYAFCのフォーマルスタイル変換(Formal style transfer)やインフォーマルスタイル変換(Informal style transfer)、及び、シェイクスピア(Shakespeare)のオリジナルスタイル変換(Original style transfer)やモダンスタイル変換(Modern style transfer)の4つのスタイル変換方向に分類できる。次の表2は、教師なし学習スタイルト変換(unsupervised style transfer)技術であるUNMT、DLSM、及びSTRAPと、本開示の対話体変換器の学習方法のスタイル正確度(ACC)、コンテンツ類似度(SIM)、流暢性(FL)の性能とを示す。ここで、STRAPは、核心抽出(nucleus sampling)に関するp値に対して0.0、0.6、0.9の3つの値を適用して評価した。
本開示の対話体変換器の学習方法の場合、GYAFCのフォーマルスタイル変換(Formal style transfer)において、UNMT及びDLSMと比較した時、コンテンツ類似度(SIM)及び流暢性(FL)の側面で良い性能を示し、STRAPと比較した時、若干低下又は類似の性能を示す。また、本開示の対話体変換器の学習方法は、GYAFCのインフォーマルスタイル変換(Informal style transfer)において、UNMT及びDLSMと比較した時、コンテンツ類似度(SIM)及び流暢性(FL)の側面で良い性能を示し、スタイル正確度(ACC)の側面で一般的に低い性能を示し、シェイクスピアデータセットに対する評価において、GYAFCのデータセットに対する評価と類似の結果を示す。結果として、本開示の対話体変換器の学習方法は、ACC点数を犠牲にして、4つの変換方向の全部に対してコンテンツ類似度(SIM)及び流暢性(FL)の側面で良い性能を示す。これは、本開示の対話体変換器の学習方法を使用することが、意味論的に正確且つ流暢な文章を生成するのに効果的であることを示す。次の表3は、生成された文章の品質を評価するために、各データセットのJ点数を示す。
本開示の対話体変換器の学習方法は、UNMT及びDLSMと比較した時、4つの変換方向の全部で良い性能を示す。これは、本開示の対話体変換器の学習方法が、自動エンコーダを使用する場合と比較して、效果的に高品質のスタイル変換が生成できることを示す。本開示の対話体変換器の学習方法をSTRAPと比較した時、インフォーマルスタイル変換(Informal style transfer)及びシェイクスピアのオリジナルスタイル変換(Original style transfer)において類似のJ点数を示したが、フォーマルスタイル変換(Formal style transfer)及びシェイクスピアのモダンスタイル変換(Modern style transfer)において低い性能を示す。ただし、本開示の対話体変換器の学習方法は、STRAP訓練と比較して、データセットが不充分な場合、対話体変換学習の単純さ及び効率性が提供できるという利点がある。
図10は、本開示の一実施例により、チャットボットの対話の流れを維持しながら、ペルソナチャットボットサービスをユーザに提供する構成の例を示す図である。図に示すように、対話主題探知器1020はユーザ発話1010が受信できる。対話主題探知器1020は、受信したユーザ発話1010と関連した対話主題1022が決定/抽出できる。他の実施例において、対話主題探知器1020は、ユーザ発話及び/又はチャットボット発話を受信して対話主題が決定できる。一実施例において、対話主題探知器1020は、対話履歴から特定主題が決定できるように学習された人工知能モデルとして具現できる。決定された対話主題1022は、対話シーン検索モデル1030及びプロンプトエンコーダ1040に入力できる。
対話シーン検索モデル1030は、ユーザ発話1010及び/又は対話主題探知器1020により決定された対話主題1022に基づき、対話主題1022と関連した少なくとも一つの対話シーンが得られる。ここで、対話シーンは、対話主題1022と関連した複数の質問及びこれに対応する複数のキャラクター対話体の答弁を含むことができる。対話シーン検索モデル1030により得られた対話シーン1032は、プロンプトエンコーダ1040に入力できる。一実施例において、対話シーン検索モデル1030は、対話保存データベース(図示せず)から特定の対話主題と関連した対話シーンが得られ、人工知能モデルとして具現できる。
プロンプトエンコーダ1040は、指示文1042、ユーザ発話1010、対話主題1022、及び対話シーン1032を受信してプロンプトに追加できる。ここで、指示文は、チャットボットのキャラクターに関する説明を含み、キャラクター対話サンプルは、質問及び質問に対応するキャラクター対話体の答弁を含むことができる。その後、プロンプトエンコーダ1040は、プロンプトをエンコードすることができる。エンコードしたプロンプトは、超巨大言語モデル1050に入力されて、ユーザ発話1010に応答するチャットボット発話1052が生成できる。
図11は、本開示の一実施例により、プロンプトエンコーダ1160の例を示す図である。プロンプトエンコーダ1160は、対話指示文エンコーダ1162、対話シーンエンコーダ1166、1168、及び結合部(concatenator)1170を含むことができる。図に示すように、プロンプトは、指示文1110、対話主題1120、1140、及び対話シーン1130、1150を含むことができる。ここで、指示文1110は、チャットボットのキャラクターに関する説明を含むことができる。
対話指示文エンコーダ1162は、チャットボットのキャラクターに関する説明を含む指示文1110をエンコードすることができる。対話主題埋め込み1164は、対話主題探知器により決定された対話主題(例えば、「ショーミーザマネー10」及び「就業及び進路」)に対する埋め込み(embedding)であり得る。対話シーンエンコーダ1166、1168は、各対話主題と関連した対話シーンらをエンコードすることができる。例えば、第1の対話シーンエンコーダ1166は、第1の対話主題である「ショーミーザマネー10」1120と関連した対話シーン1130をエンコードし、第2の対話シーンエンコーダ1168は、第2の対話主題である「就業及び進路」1140と関連した対話シーン1150をエンコードすることができる。結合部1170は、対話指示文エンコーダ1162の出力、対話主題埋め込み1164、及び対話シーンエンコーダ1166、1168の出力を結合し、これをデコーダ1180に提供できる。
図12は、本開示の一実施例により、チャットボットの対話体及び対話の流れを維持しながら、ペルソナチャットボットサービスを提供する構成の例を示す図である。図に示すように、対話主題探知器1220は、ユーザ発話1210を受信して、ユーザ発話1210と関連した対話主題1222が決定/抽出できる。決定された対話主題1222は、対話シーン検索モデル1230及びプロンプトエンコーダ1240に入力できる。
対話シーン検索モデル1230は、ユーザ発話1210及び/又は対話主題1222に基づき、対話主題1222と関連した対話シーン1232が得られ、プロンプトエンコーダ1240に提供できる。プロンプトエンコーダ1240は、指示文1242、few-shot例題(又はキャラクター対話サンプル)1244、ユーザ発話1210、対話主題1222、及び対話シーン1232を受信してエンコードすることができる。エンコードしたプロンプトは、超巨大言語モデル1250に入力され、ユーザ発話1210に応答するチャットボット発話1252が生成できる。
生成されたチャットボット発話1252は、キャラクターペルソナ探知器1260に入力されて、チャットボットのペルソナ(すなわち、チャットボットのキャラクター対話体)が維持されるか否かがモニタリングできる。例えば、キャラクターペルソナ探知器1260は、チャットボット発話1252とチャットボットのキャラクター対話体とを比較して、チャットボット発話1252及びキャラクター対話体間のマッチングスコア1262を生成し、キャラクター対話体変換器1270に提供できる。マッチングスコア1262が既定の閾値以下である場合、キャラクター対話体が維持されないと判定し、キャラクター対話体変換器1270は、チャットボット発話1252をキャラクター対話体と類似度が高くなるように修正できる。一方、マッチングスコア1262が既定の閾値を超過する場合、キャラクター対話体が維持されると判定して、キャラクター対話体変換器1270は、チャットボット発話1252を修正しなくてよい。その後、キャラクター対話体変換器1270は、チャットボット発話1272をユーザに提供すると同時に、プロンプトに追加できる。
図13は、本開示の一実施例により、ユーザに一貫したペルソナチャットボットサービスを制御するための方法1300を示すフローチャートである。一実施例において、ペルソナチャットボット制御方法1300は、プロセッサ(例えば、ユーザ端末又は情報処理システムの少なくとも一つのプロセッサ)により遂行できる。他の実施例において、情報処理システム及びユーザ端末がペルソナチャットボット制御方法1300のステップを分けて遂行できる。
一実施例において、ペルソナチャットボット制御方法1300は、ユーザ発話を受信することにより開始することができる(S1310)。その後、プロセッサは、対話主題探知器を用いてユーザ発話と関連した対話主題が決定できる(S1320)。対話主題を決定した後、プロセッサは、対話シーン検索モデルを用いて、決定された対話主題と関連した少なくとも一つの対話シーンが得られる(S1330)。ここで、少なくとも一つの対話シーンは、対話主題と関連した複数の質問及び複数の質問の各々に対応する複数のキャラクター対話体の答弁を含むことができる。
プロセッサは、ユーザ発話、キャラクター対話サンプル、対話主題、及び少なくとも一つの対話シーンを、チャットボットのキャラクターに関する説明と関連した指示文を含むプロンプトに追加できる(S1340)。ここで、指示文は、チャットボットのキャラクターに関する説明を含み、キャラクター対話サンプルは、質問及び質問に対応するキャラクター対話体の答弁を含むことができる。その後、プロセッサは、プロンプトをエンコードし(S1350)、エンコードしたプロンプトを言語モデル(例えば、超巨大言語モデル)に入力して、ユーザ発話に応答するチャットボット発話が生成できる(S1360)。
プロセッサは、生成されたチャットボット発話をキャラクターペルソナ探知器に入力して、チャットボットのキャラクター対話体が維持されるか否かがモニタリングできる(S1370)。ここで、キャラクター対話体は、キャラクター対話サンプル、指示文、及び対話シーン等に基づいて決定できる。例えば、キャラクターペルソナ探知器は、チャットボット発話とチャットボットのキャラクター対話体とを比較して、チャットボット発話及びキャラクター対話体間のマッチングスコアを生成し、マッチングスコアが既定の閾値以下である場合、キャラクター対話体が維持されないと判定できる。キャラクターペルソナ探知器が、当該チャットボットのキャラクター対話体が維持されないと判定する場合、プロセッサは、キャラクター対話体変換器を用いて、チャットボット発話をチャットボットのキャラクター対話体に修正できる。その後、プロセッサは、修正されたチャットボット発話をプロンプトに追加できる。
前述した方法は、コンピュータで実行するために、コンピュータブラグラムとして提供され得る。媒体は、コンピュータで実行可能なプログラムを継続的に保存したり、実行又はダウンロードのために一時保存したりするものであり得る。また、媒体は、単一又は多数のハードウェアが結合された形態の多様な記録手段又は保存手段であり得るが、あるコンピュータシステムに直接的に接続される媒体に限定されず、ネットワーク上に分散存在するものであり得る。媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、及び磁気テープのような磁気媒体、CD-ROMやDVDのような光記録媒体、フロプティカルディスク(floptical disk)のような磁気-光媒体(magneto-optical medium)、及び、ROM、RAM、フラッシュメモリなどを含み、プログラム命令語が保存されるように構成されたものが挙げられる。また、他の媒体の例としては、アプリケーションを流通するアプリストアやその他の多様なソフトウェアを供給乃至流通するサイト、サーバーなどで管理する記録媒体乃至保存媒体も挙げられる。
本開示の方法、動作、又は技法は、多様な手段により具現できる。例えば、このような技法は、ハードウェア、ファームウェア、ソフトウェア、若しくは、これらの組合せで具現できる。本願の開示により説明された多様な例示的な論理的ブロック、モジュール、回路、及びアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、若しくは、両方の組合せで具現できることを、当業者であれば理解できるはずである。ハードウェア及びソフトウェアのこのような相互の代替を明確に説明するために、多様な例示的な構成要素、ブロック、モジュール、回路、及びステップが、それらの機能的観点から一般的に前述された。そのような機能が、ハードウェアとして具現されるか、若しくは、ソフトウェアとして具現されるかは、特定アプリケーション及び全体システムに付加される設計要求事項によって変化する。当業者は、各々の特定アプリケーションのために多様な方式により説明された機能を具現することもできるが、そのような具現は、本開示の範囲から逸脱するものと解釈してはならない。
ハードウェアの具現において、技法の遂行に利用されるプロセッシングユニットは、一つ以上のASIC、DSP、デジタル信号処理デバイス(digital signal processing devices;DSPD)、プログラム可能な論理デバイス(programmable logic devices;PLD)、フィールドプログラム可能なゲートアレイ(field programmable gate arrays;FPGA)、プロセッサ、制御器、マイクロ制御器、マイクロプロセッサ、電子デバイス、本開示に説明された機能を遂行するように設計された他の電子ユニット、コンピュータ、若しくは、これらの組合せ内で具現されることもできる。
したがって、本開示により説明された多様な例示的な論理ブロック、モジュール、及び回路は、汎用プロセッサ、DSP、ASIC、FPGAや他のプログラム可能な論理デバイス、離散ゲートやトランジスタロジック、離散ハードウェアコンポーネント、若しくは、本願に説明された機能を遂行するように設計されたもの、等の任意の組合せで具現又は遂行されることもできる。汎用プロセッサは、マイクロプロセッサであり得るが、代案として、プロセッサは、任意の従来のプロセッサ、制御器、マイクロ制御器、若しくは、状態マシンであり得る。プロセッサは、また、コンピューティングデバイスの組合せ、例えば、DSPとマイクロプロセッサ、複数のマイクロプロセッサ、DSPコアと関連する一つ以上のマイクロプロセッサ、若しくは、任意の他の構成の組合せで具現されることもできる。
ファームウェア及び/又はソフトウェアの具現において、技法は、RAM(random access memory)、ROM(read-only memory)、NVRAM(non-volatile random access memory)、PROM(programmable read-only memory)、EPROM(erasable programmable read-only memory)、EEPROM(electrically erasable PROM)、フラッシュメモリ、CD(compact disc)、磁気又は光学データストレージデバイス、などのようなコンピュータ読み取り可能な媒体上に保存された命令で具現できる。命令は、一つ以上のプロセッサによって実行可能であってよく、プロセッサが本開示に説明された機能の特定様態を遂行するようにできる。
ソフトウェアで具現される場合、前記技法は、一つ以上の命令又はコードとしてコンピュータ読み取り可能な媒体上に保存されたり、コンピュータ読み取り可能な媒体を介して転送されたりできる。コンピュータ読み取り可能な媒体は、ある場所から他の場所にコンピュータプログラムの転送を容易にする任意の媒体を含み、コンピュータ保存媒体及び通信媒体の両方を含む。保存媒体は、コンピュータによってアクセスできる任意の利用可能な媒体であり得る。非制限的な例として、このようなコンピュータ読み取り可能な媒体は、RAM、ROM、EEPROM、CD-ROMや他の光学ディスクストレージ、磁気ディスクストレージや他の磁気ストレージデバイス、若しくは、所望のプログラムコードを命令又はデータ構造の形態に移送又は保存するために使用されることができ、コンピュータによってアクセスできる任意の他の媒体を含むことができる。また、任意の接続がコンピュータ読み取り可能な媒体として適切に示すことができる。
例えば、ソフトウェアが同軸ケーブル、光繊維ケーブル、鉛線、デジタル加入者回線(DSL)、又は、赤外線、無線、及びマイクロ波のような無線技術を用いて、ウェブサイト、サーバー、又は他の遠隔ソースから転送される場合、同軸ケーブル、光繊維ケーブル、鉛線、デジタル加入者回線、又は、赤外線、無線及びマイクロ波のような無線技術は、媒体の定義内に含まれる。本願で使用されたディスク(disk)及びディスク(disc)は、CD、レーザーディスク、光ディスク、DVD(digital versatile disc)、フロッピーディスク、及びブルーレイ(登録商標)ディスクを含み、ここで、通常、ディスク(disk)は磁気的にデータを再生するのに対し、ディスク(disc)はレーザーを用いて光学的にデータを再生する。前記組合せ等も、コンピュータ読み取り可能な媒体等の範囲内に含まれなければならない。
ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、移動式ディスク、CD-ROM、又は、公知の任意の異なる形態の保存媒体内に常駐することもできる。例示的な保存媒体は、プロセッサが保存媒体から情報を読み取る、或いは、保存媒体に情報を書き込むように、プロセッサに連結することができる。代案として、保存媒体は、プロセッサに統合されることもできる。プロセッサ及び保存媒体は、ASIC内に存在することもできる。ASICは、ユーザ端末内に存在することもできる。代案として、プロセッサ及び保存媒体は、ユーザ端末で個別構成要素として存在することもできる。
前述した実施例は、一つ以上の独立型コンピュータシステムで現在開示された主題の様態を活用するものとして記述されているが、本開示は、これに限定されず、ネットワークや分散コンピューティング環境のような任意のコンピューティング環境によって具現できる。さらには、本開示における主題の様態は、複数のプロセッシングチップや装置で具現されることもでき、ストレージは、複数の装置にわたって類似に影響を受けることもできる。このような装置は、PC、ネットワークサーバー、及び携帯用装置を含むこともできる。
本明細書では、本開示が一部の実施例によって説明されたが、本開示の発明が属する技術分野における当業者が理解し得る本開示から逸脱しない範囲内で、多様な変形や変更が可能である。また、そのような変形や変更は、本明細書に添付された特許請求の範囲内に属するものと理解されるべきである。