(58)【調査した分野】(Int.Cl.,DB名)
前記テキストデータを少なくとも1つの言語モデルに組み込むことは、前記テキストデータから少なくとも1つの言語モデルを生成すること、または、前記テキストデータを少なくとも1つの既存の言語モデル内に組み込むことを含む、請求項1に記載のシステム。
前記テキストデータを少なくとも1つの言語モデルに組み込むことは、前記テキストデータを単一の言語モデル内に組み込み、累積言語モデルを生成することを含む、請求項1に記載のシステム。
前記テキストデータは、前記複数のデバイスのいずれかの以前の同期以降に当該デバイスに入力されたテキストを表し、前記テキストデータを少なくとも1つの言語モデルに組み込むことは、前記テキストデータを前記累積言語モデル内に組み込むことを含む、請求項5に記載のシステム。
各々のデバイスの各々の動的言語モデルは、当該デバイスに入力されたテキストに基づく少なくとも1つのテキスト予想を生成するように構成され、前記複数の動的言語モデルは、同じテキスト入力が与えられるとき、同じ少なくとも1つのテキスト予想を生成することが可能である、請求項8に記載のシステム。
前記テキストデータを少なくとも1つの言語モデルに組み込むステップは、前記テキストデータから少なくとも1つの言語モデルを生成するステップ、または、前記テキストデータを少なくとも1つの既存の言語モデル内に組み込むステップを含む、請求項13に記載の方法。
前記テキストデータを少なくとも1つの言語モデルに組み込むステップは、前記テキストデータを単一の言語モデル内に組み込み、累積言語モデルを生成するステップを含む、請求項13に記載の方法。
前記テキストデータは、前記複数のデバイスのいずれかの以前の同期以降に当該デバイスに入力されたテキストを表し、前記テキストデータを少なくとも1つの言語モデルに組み込むステップは、前記テキストデータを前記累積言語モデル内に組み込むステップを含む、請求項17に記載の方法。
前記テキストデータを少なくとも1つの言語モデルに組み込むステップは、前記複数のデバイスの各々に対してデルタ言語モデルを、該特定のデルタ言語モデルに関連付けられたデバイス以外の複数のデバイスから前記機構によって受信された前記テキストデータを使用して生成することを含む、請求項13に記載の方法。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の目的は、このような問題を克服することである。
【課題を解決するための手段】
【0008】
本発明の1つの態様において、単一ユーザに関連付けられて動的言語モデルを各々が含む複数のデバイスに存在する複数の動的言語モデルを同期するための機構を提供する。機構は、複数のデバイスの1つ又はそれよりも多くにユーザによって入力されたテキストを表すテキストデータを受信し、テキストデータを少なくとも1つの言語モデルに組み込み、かつデバイスを同期するためにその少なくとも1つの言語モデルを提供するように構成される。
【0009】
テキストデータは、ユーザによって入力されたテキストを表すあらゆるデータとすることができる。第1の実施形態において、テキストデータは、ユーザによって入力された実際のテキストを含むことができる。この場合に、テキストデータを言語モデルに組み込む段階は、ユーザによって入力されたテキストに対して言語モデルを訓練する段階を含むことができる。第2の実施形態において、テキストデータは、テキスト入力に対して訓練されたデバイスデルタ言語モデルとすることができる。この場合に、テキストデータを言語モデルに組み込む段階は、デバイスデルタ言語モデルを少なくとも1つの言語モデル内に融合する段階を含むことができる。
【0010】
すなわち、本発明の機構の第1の実施形態において、単一ユーザに関連付けられて動的言語モデルを各々が含む複数のデバイスに存在する複数の動的言語モデルを同期するための機構を提供する。機構は、複数のデバイスの1つ又はそれよりも多くにユーザによって入力されたテキストを受信し、テキストに対して少なくとも1つの言語モデルを訓練し、かつデバイスを同期するためにその少なくとも1つの言語モデルを提供するように構成される。
【0011】
好ましくは、機構は、テキストから少なくとも1つの言語モデルを生成するか又はテキストを用いて少なくとも1つの既存の言語モデルを訓練することにより、テキストに対して少なくとも1つの言語モデルを訓練するように構成される。
【0012】
テキストは、複数のデバイスに入力されたあらゆるテキストを含むことができ、少なくとも1つの言語モデルを訓練する段階は、好ましくは、テキストに対して単一言語モデルを訓練して累積言語モデルを生成する段階を含む。テキストは、複数の動的言語モデルの以前の同期以降に複数のデバイスのいずれかに入力されたテキストを含むことができ、少なくとも1つの言語モデルを訓練する段階は、そのテキストに対して累積言語モデルを更に訓練する段階を含む。
【0013】
少なくとも1つの言語モデルを訓練する段階は、特定のデルタ言語モデルに関連付けられたデバイス以外の複数のデバイスから受信されたテキストを使用して複数のデバイスの各々に対してデルタ言語モデルを生成する段階を含むことができる。
【0014】
機構は、好ましくは、与えられた時間に複数のデバイスのうちの単一デバイスに同期するように構成される。
【0015】
機構は、ユーザを認証するように構成することができる。
【0016】
本発明の機構の第2の実施形態において、各デバイスが動的言語モデルとそのデバイスにユーザによって入力されたテキストに対して訓練されたデバイスデルタ言語モデルとを含む単一ユーザに関連付けられた複数のデバイスに存在する複数の動的言語モデルを同期するための機構を提供する。機構は、デバイスデルタ言語モデルを受信し、デバイスデルタ言語モデルを少なくとも1つの言語モデル内に融合し、かつデバイスを同期するためにその少なくとも1つの言語モデルを提供するように構成される。
【0017】
機構は、好ましくは、デバイスデルタ言語モデルから少なくとも1つの言語モデルを生成するか又はデバイスデルタ言語モデルを少なくとも1つの既存の言語モデル内に融合することにより、デバイスデルタ言語モデルを少なくとも1つの言語モデル内に融合するように構成される。
【0018】
デバイスデルタ言語モデルを少なくとも1つの言語モデル内に融合する段階は、デバイスデルタ言語モデルを単一言語モデル内に融合して累積言語モデルを生成する段階を含む。デバイスデルタ言語モデルは、複数の動的言語モデルの以前の同期以降に複数のデバイスの1つに入力されたテキストに対して訓練することができる。デバイスデルタ言語モデルを少なくとも1つの言語モデル内へ融合する段階は、特定のデルタ言語モデルに関連付けられたデバイス以外の複数のデバイスから受信されたデバイスデルタ言語モデルを使用して複数のデバイスの各々に対してデルタ言語モデルを生成する段階を含むことができる。
【0019】
機構は、好ましくは、与えられた時間に複数のデバイスのうちの単一デバイスに同期するように構成される。
【0020】
機構は、ユーザを認証するように構成することができる。
【0021】
本発明の第2の態様において、テキスト入力のためのシステムを提供する。システムは、動的言語モデルを各々が含む複数のデバイスと上述の実施形態のいずれかによる機構とを含む。複数のデバイスの各々は、そのデバイスに入力されたテキストを表すテキストデータを機構に送信するように構成される。
【0022】
本発明のシステムの第1の実施形態において、このデバイスに入力されたテキストを表すテキストデータは、デバイスに入力された実際のテキストである。
【0023】
システムの各デバイスは、累積言語モデルを受信し、かつそのデバイスに入力されたテキストを機構に送信する前に累積言語モデルをその動的言語モデル内に融合するように構成することができる。
【0024】
各デバイスは、そのデバイスに関連付けられた特定のデルタ言語モデルを受信し、かつデルタ言語モデルをその動的言語モデル内に融合するように構成することができる。
【0025】
各デバイスの各動的言語モデルは、デバイスに入力されたテキストに基づいて少なくとも1つのテキスト予想を生成するように構成することができ、同期された状態で、複数の動的言語モデルは、同じテキスト入力が提供された時に同じ少なくとも1つのテキスト予想を生成することができる。
【0026】
システムの一実施形態において、機構は、サーバを含み、複数のデバイスの各々は、サーバから累積又はデルタ言語モデルをダウンロードし、かつテキストをサーバ上にアップロードするように構成される。システムは、サーバと複数のデバイスの各々との間に安全な接続手段を含むことができる。
【0027】
上述の機構又はシステムに対して、言語モデルは、用語のシーケンスを各シーケンスに対する発生の頻度に関連付けるデータ構造を含むことができる。デバイスは、第2の言語モデルのデータ構造内のシーケンスに対する発生の頻度を第1言語モデルのデータ構造内の対応するシーケンスに対する発生の頻度に追加することにより、かつ新しいシーケンスが第1言語モデルのデータ構造にないが第2の言語モデルのデータ構造にある場合に新しいシーケンス及びその対応する発生の頻度を第1言語モデルのデータ構造に挿入することにより、第1言語モデルを第2の言語モデルと融合するように構成することができる。各デバイスは、1つ又はそれよりも多くのシーケンスが閾値よりも低い発生の頻度を有する場合に、融合されデータ構造から1つ又はそれよりも多くのシーケンスを取り除くように構成することができる。
【0028】
本発明のシステムの第2の実施形態において、デバイスに入力されたテキストを表すテキストデータは、そのデバイスに入力されたテキストに対して訓練されたデルタ言語モデルである。この実施形態において、システムは、各デバイスが動的言語モデルとそのデバイスにユーザによって入力されたテキストに対して訓練されたデバイスデルタ言語モデルとを含む複数のデバイスと、上述の実施形態のいずれかによる機構とを含む。複数のデバイスの各々は、デバイスデルタ言語モデルを機構に送信するように構成される。
【0029】
システムの各デバイスは、累積言語モデルを受信し、かつ機構にデルタ言語モデルを送信する前に累積言語モデルをその動的言語モデル内に融合するように構成することができる。
【0030】
各デバイスは、そのデバイスに関連付けられた特定のデルタ言語モデルを受信し、かつデルタ言語モデルをその動的言語モデル内に融合するように構成することができる。
【0031】
各デバイスの各動的言語モデルは、デバイスに入力されたテキストに基づいて少なくとも1つのテキスト予想を生成するように構成することができ、同期された状態で、複数の動的言語モデルは、同じテキスト入力が提供された時に同じ少なくとも1つのテキスト予想を生成することができる。
【0032】
システムの一実施形態において、機構は、サーバを含み、複数のデバイスの各々は、サーバから累積又はデルタ言語モデルをダウンロードし、かつサーバ上にデバイスデルタ言語モデルをアップロードするように構成される。システムは、サーバと複数のデバイスの各々との間に安全な接続手段を含むことができる。
【0033】
上述の機構又はシステムに対して、言語モデルは、用語のシーケンスを各シーケンスに対する発生の頻度に関連付けるデータ構造を含むことができる。機構及び/又はデバイスは、第2の言語モデルのデータ構造内のシーケンスに対する発生の頻度を第1言語モデルのデータ構造内の対応するシーケンスに対する発生の頻度に追加することにより、かつ新しいシーケンスが第1言語モデルのデータ構造にはないが第2の言語モデルのデータ構造にある場合に新しいシーケンス及びその対応する発生の頻度を第1言語モデルのデータ構造に挿入することにより、第1言語モデルを第2の言語モデルと融合するように構成することができる。機構及び/又は各デバイスは、1つ又はそれよりも多くのシーケンスが閾値よりも低い発生の頻度を有する場合に、融合されたデータ構造から1つ又はそれよりも多くのシーケンスを取り除くように構成することができる。
【0034】
本発明の第3の態様において、単一ユーザに関連付けられて動的言語モデルを各々が含む複数のデバイスに存在する複数の動的言語モデルを同期する方法を提供する。本方法は、複数のデバイスの1つ又はそれよりも多くにユーザによって入力されたテキストを表すテキストデータを同期するための機構で受信する段階と、機構を用いてテキストデータに対して少なくとも1つの言語モデルを訓練する段階と、この少なくとも1つの言語モデルを機構とデバイスを同期するために提供する段階とを含む。
【0035】
本発明の方法の第1の実施形態において、デバイスに入力されたテキストを表すテキストデータは、デバイスに入力されたその実際のテキストである。
【0036】
テキストに対して少なくとも1つの言語モデルを訓練する段階は、好ましくは、テキストから少なくとも1つの言語モデルを生成する段階又はテキストを用いて少なくとも1つの既存の言語モデルを訓練する段階を含む。
【0037】
テキストは、複数のデバイスに入力されたあらゆるテキストを含むことができ、少なくとも1つの言語モデルを訓練する段階は、好ましくは、テキストに対して単一言語モデルを訓練して累積言語モデルを生成する段階を含む。テキストは、複数のデバイスの以前の同期以降に複数のデバイスに入力されたテキストを含むことができ、少なくとも1つの言語モデルを訓練する段階は、そのテキストに対して累積言語モデルを更に訓練する段階を含む。
【0038】
好ましくは、複数のデバイスの各々は、機構と個々に同期される。
【0039】
累積言語モデルは、機構と最初に同期されたいずれかのデバイスから機構によって受信されたテキストに対して訓練することができる。累積言語モデルは、機構とその後に同期されたいずれかのデバイスから機構によって受信されたテキストに対して更に訓練することができる。
【0040】
少なくとも1つの言語モデルを訓練する段階は、特定のデルタ言語モデルに関連付けられたデバイス以外の複数のデバイスから機構によって受信されたテキストを使用して複数のデバイスの各々に対してデルタ言語モデルを生成する段階を含むことができる。
【0041】
デルタ言語モデルを訓練するのに使用されるテキストは、特定のデルタ言語モデルに関連付けられたデバイス以外の複数のデバイスの同期及び/又はその後の同期中に機構によって受信されたテキストを含むことができる。
【0042】
本方法は、ユーザを認証する機構を含むことができる。
【0043】
好ましくは、本方法は、各デバイスが、累積言語モデルを受信し、かつそのデバイスに入力されたテキストを機構に送信する前に累積言語モデルをそのデバイスに関連付けられた動的言語モデル内に融合する段階を含む。
【0044】
好ましくは、本方法は、各デバイスが、そのデバイスに関連付けられた特定のデルタ言語モデルを受信し、かつデルタ言語モデルをそのデバイスの動的言語モデル内に融合する段階を含む。
【0045】
機構は、好ましくは、サーバを含む。本方法は、サーバと複数のデバイスの各々との間に安全な接続を確立する段階を更に含む。
【0046】
言語モデルは、用語のシーケンスを各シーケンスに対する発生の頻度に関連付けるデータ構造を含むことができる。本方法における第1言語モデルを第2の言語モデルと融合する段階は、好ましくは、第2の言語モデルのデータ構造内のシーケンスに対する発生の頻度を第1言語モデルのデータ構造内の対応するシーケンスに対する発生の頻度に追加する段階と、新しいシーケンスが第2の言語モデルのデータ構造にあるが第1言語モデルのデータ構造にはない場合に新しいシーケンス及びその対応する発生の頻度を第1言語モデルのデータ構造に挿入する段階を含む。本方法は、1つ又はそれよりも多くのシーケンスが閾値よりも低い発生の頻度を有する場合に、複数のデバイスの各々が、融合されたデータ構造から1つ又はそれよりも多くのシーケンスを取り除く段階を更に含むことができる。
【0047】
本発明の方法の第2の実施形態において、テキストデータは、入力されたテキストに対して訓練されたデバイスデルタ言語モデルである。この場合に、各デバイスは、動的言語モデルと、そのデバイスにユーザによって入力されたテキストに対して訓練されたデバイスデルタ言語モデルとを含む。本方法は、デバイスデルタ言語モデルを同期機構で受信する段階と、機構を用いてデバイスデルタ言語モデルを少なくとも1つの言語モデル内に融合する段階と、この少なくとも1つの言語モデルを機構とデバイスを同期するために提供する段階とを含む。
【0048】
デバイスデルタ言語モデルを少なくとも1つの言語モデル内に融合する段階は、好ましくは、デバイスデルタ言語モデルから少なくとも1つの言語モデルを生成する段階又はデバイスデルタ言語モデルを少なくとも1つの既存の言語モデルと融合する段階を含む。
【0049】
デバイスデルタ言語モデルを少なくとも1つの言語モデル内に融合する段階は、デバイスデルタ言語モデルを単一言語モデル内に融合して累積言語モデルを生成する段階を含むことができる。デバイスデルタ言語モデルは、複数の動的言語モデルの以前の同期以降に複数のデバイスの1つに入力されたテキストに対して訓練されたものとすることができる。
【0050】
好ましくは、複数のデバイスの各々は、機構と個々に同期される。
【0051】
機構と最初に同期されたいずれかのデバイスから受信されたいずれのデバイスデルタ言語モデルも、累積言語モデルと融合することができる。機構とその後に同期されたいずれかのデバイスから受信されたいずれのデバイスデルタ言語モデルも、累積言語モデルと融合することができる。
【0052】
デバイスデルタ言語モデルを少なくとも1つの言語モデルと融合する段階は、特定のデルタ言語モデルに関連付けられたデバイス以外の複数のデバイスから機構によって受信されたデバイスデルタ言語モデルを使用して複数のデバイスの各々に対してデルタ言語モデルを生成する段階を含むことができる。
【0053】
デルタ言語モデルと融合されたデバイスデルタ言語モデルは、特定のデルタ言語モデルに関連付けられたデバイス以外の複数のデバイスの同期及び/又はその後の同期中に機構によって受信されたデバイスデルタ言語モデルを含むことができる。
【0054】
本方法は、ユーザを認証する機構を含むことができる。
【0055】
好ましくは、本方法は、各デバイスが、累積言語モデルを受信し、かつ機構にデバイスデルタ言語モデルを送信する前にそのデバイスに関連付けられた動的言語モデル内に累積言語モデルを融合する段階を含む。
【0056】
好ましくは、本方法は、各デバイスが、そのデバイスに関連付けられた特定のデルタ言語モデルを受信し、かつデルタ言語モデルをそのデバイスの動的言語モデル内に融合する段階を含む。
【0057】
機構は、好ましくは、サーバを含む。本方法は、サーバと複数のデバイスの各々との間に安全な接続を確立する段階を更に含む。
【0058】
言語モデルは、用語のシーケンスを各シーケンスに対する発生の頻度に関連付けるデータ構造を含むことができる。本方法での第1言語モデルを第2の言語モデルと融合する段階は、好ましくは、第2の言語モデルのデータ構造内のシーケンスに対する発生の頻度を第1言語モデルのデータ構造内の対応するシーケンスに対する発生の頻度に追加する段階と、新しいシーケンスが第2の言語モデルのデータ構造にあるが第1言語モデルのデータ構造にはない場合に新しいシーケンス及びその対応する発生の頻度を第1言語モデルのデータ構造に挿入する段階とを含む。本方法は、1つ又はそれよりも多くのシーケンスが閾値よりも低い発生の頻度を有する場合に、複数のデバイスの各々が、融合されたデータ構造から1つ又はそれよりも多くのシーケンスを取り除く段階を更に含むことができる。
【0059】
本発明の第4の態様において、上述の方法のいずれかをプロセッサに実行させるためのコンピュータプログラム手段が格納されたコンピュータ可読媒体を含むコンピュータプログラム製品を提供する。
【0060】
本発明の第5の態様において、機構とデバイスの間でデータを定期的に同期する方法を提供する。本方法は、デバイスの最後の同期中にデバイスに送信されたデータバンドルを識別するパラメータを機構で格納する段階と、デバイスの最後の同期以降のデータに対する更新を含む1次データバンドルを機構で格納する段階と、デバイスの最後の同期中にデバイスに送信されたデータバンドル及びデバイスの最後の同期以降のデータに対する更新を含むバックアップデータバンドルを機構で格納する段階と、デバイスによって最後に受信されたデータバンドルを識別するデバイスからのパラメータを機構で受信してこれを格納されたパラメータと比較する段階と、格納された及び受信されたパラメータが同一である場合に1次データバンドルを送信する段階又は格納された及び受信されたパラメータが同一でない場合にバックアップデータバンドルを送信する段階とを含む。
【0061】
ここで、本発明を添付の図面を参照して以下に詳しく説明する。
【発明を実施するための形態】
【0063】
本発明は、複数のデバイスに存在する複数の動的言語モデルを同期するための機構を提供する。各デバイスは、動的言語モデルを含み、この動的言語モデルは、ユーザ入力テキストを用いて進化し、ユーザが書こうと意図する言葉をより正確に予想する。
【0064】
動的言語モデルを同期することにより、システムは、システムのデバイスにわたって発生されるテキスト予想の一貫性を改善することができ、複数のデバイスが類似の言葉予想及び訂正を提供することを可能にする。従って、各デバイスが同じユーザによって使用された/使用される他のデバイスから学ぶので、本発明は、めったに使用されないデバイスが正確な予想を提供できないままである問題を解決する。
【0065】
図1は、本発明による複数のデバイス10、10’を示している。各デバイス10、10’は、動的言語モデル1、1’を含む。各デバイス10、10’は、動的言語モデル1、1’及び任意的に1つ又はそれよりも多くの静的言語モデル2、2’を含むテキスト入力システム5、5’を含むことが好ましい。静的言語モデル2は、一度訓練されたらユーザ入力によって進化しない言語モデルである。
【0066】
このようなテキスト入力システム5、5’の例は、これによりその全体が引用によって組み込まれる「電子デバイスにテキストを入力するためのシステム及び方法」という名称の国際特許出願WO2010/112841に説明されている。この文献はまた、以下に更に詳しく説明し、動的言語モデル1、1’及び1つ又はそれよりも多くの静的言語モデル2、2’のような2つ又はそれよりも多くの言語モデルから予想を発生及び組み合わせることができる方法を説明している。
【0067】
各動的言語モデル1、1’は、nグラムマップにユーザによって入力されたnグラム経路の発生の頻度を記録するように更新されたnグラム言語モデルに基づいている。nグラムマップは、連想マップ構造である。nグラムマップでは、語彙内の用語は、マップに格納されて頻度又は確率値に関連付けられた数字識別子(短い整数)に関連付けられる。
【0068】
デバイスの動的言語モデル1、1’は、2つの追加の証拠のタイプを考慮に入れるために時間と共に進化する機能を有する。最初に、動的言語モデル1、1’は、ユーザによって入力された文字シーケンスから発生された統計的言語データを取り入れる。次に、動的言語モデル1、1’は、別の言語モデルの統計的言語データを取り入れる。本出願では、別の言語モデルの統計的言語データの1つの言語モデルの取り入れは、「融合」と呼ぶ。
【0069】
動的言語モデルは、2つの方法、すなわち、新しい経路をnグラムマップに挿入することによって動的言語モデル語彙に以前存在していなかった用語を含む方法、及び特定のnグラム文脈における既存の用語の頻度を更新する方法のうちの1つでユーザによって入力された文字シーケンスから発生された統計的言語データを取り入れる。動的nグラムマップは、nグラム経路がユーザによって入力された頻度を格納し、ここで「nグラム経路」は、先行する文脈の特定の用語及びn−1用語までを意味する。
【0070】
第1言語モデルは、第2の言語モデルのデータ構造内のシーケンスに対する発生の頻度を第1言語モデルのデータ構造内の対応するシーケンスに対する発生の頻度に追加することによって第2の言語モデル内に融合される。更に、新しいシーケンスが第2の言語モデルのデータ構造にあるが第1言語モデルのデータ構造にない場合に、新しいシーケンス及びその対応する発生の頻度が第1言語モデルのデータ構造に挿入される
【0071】
動的言語モデルのサイズを制限するために、低確率事象を動的言語モデルから取り除くことができ、例えば、その頻度が与えられた閾値よりも低くなる場合に動的言語モデルを通る経路を取り除くことができる。取り除く段階は以下の方式に従って発生する。
1)全ての事象頻度が、以下の関数に従って減衰される。
2)頻度が事前に指定された閾値よりも低い全ての事象が取り除かれる。すなわち、
の場合である。ここで、fはオリジナルの頻度であり、f’は減衰頻度であり、int(x)は、i<xであるような最大整数iであり、dは減衰係数であり(例えば、0.9に設定される)、tは閾値である(例えば、1に設定される)。
【0072】
言語モデル1、1’、2、2’は、予想言語モデル推測の原理に関して構築されるのが好ましく、特定の文字シーケンスの確率sは、履歴シーケンシャル証拠に対して訓練された文脈シーケンスc及びモデルmが与えられた場合に推定され、式P(s|c、m)の確率推定値を提供する。動的言語モデル1、1’では、モデルmは、ユーザがデバイス10、10’にテキストを入力した時に進化する(これは、動的言語モデル1、1’は、デバイス10、10’にユーザによって入力されたいずれのテキストに対してもデバイス10、10’によって漸次訓練されるからである)。
【0073】
すなわち、時間と共に、ユーザがデバイス10、10’にテキストを入力すると、テキスト入力システム5、5’によって発生された訂正及び予想の精度は、元の動的言語モデル1、1’がユーザの言語様式まで進化するように改善しなければならない。
【0074】
図2は、同期後に一貫するようになるテキスト入力体験の例を示している。同期の前では、デバイスBは、この例ではデバイスAが学習した(デバイスAへの以前のテキスト入力を通して)子犬の名前「Beau−Beau」である用語を予想することができない。同期後に、デバイスBは、名前「Beau−Beau」を予想することができる。
【0075】
同期後に、同期されたデバイス10、10’の全ては、その同期された動的言語モデル1、1’によって同じユーザ入力に応答して同じ予想を生成することができる。しかし、各デバイス10、10’は、異なるテキストに対して最初に訓練された動的言語モデルを有することができ、かつユーザ入力によって進化することなく異なるデバイスで異なるものにすることができる1つ又はそれよりも多くの静的言語モデル2を任意的に含むことができるので、デバイス10、10’は、実際には同じテキスト予想を生成することができない。
【0076】
テキスト予想は、静的言語モデル2、2’、並びに動的言語モデル1、1を含むことができるテキスト入力システム5、5’から発生されるので、第1デバイス10のテキスト入力システム5は、第1デバイス10の動的言語モデルに同期された動的言語モデル1’を有する第2のデバイス10’のテキスト入力システム5’に異なる予想を生成することができる。動的言語モデル1、1’及び1つ又はそれよりも多くの静的言語モデル2、2’からの予想を組み合わせるテキスト入力システム5、5’は、これによりその全体が引用によって組み込まれる「電子デバイスにテキストを入力するためのシステム及び方法」という名称の国際特許出願WO2010/112841に説明されている。この文献に説明されているように、テキスト予想エンジン(例えば、テキスト入力システム5、5’)は、複数の言語モデルからのテキスト予想を同時に発生するように構成することができる。それは、マルチ言語モデル(マルチ−LM)を使用して複数の言語モデルの各々から発生した予想を組み合わせ、ディスプレイ及びユーザ選択のためにユーザインタフェースに提供される最終的な予想を生成することによってこれを実行する。最終的な予想は、全体的な最も確率の高い予想のセット(すなわち、指定された数)である。マルチ−LMは、各言語モデルからの予想を順序付けられたSTL「マルチマップ」構造とすることができる順序付けられた連想構造に挿入することによって最終的な予想を生成する。
【0077】
一例として、第1言語モデル、例えば、テキスト入力システム5の動的言語モデル1から「a」→0.2及び「the」→0.3、及び第2の言語モデル、例えば、テキスト入力システム5の静的言語モデル2から「an」→0.1及び「these」→0.2が与えられた場合に、マルチ−LMは、これらの予想を順序付けられた連想構造に挿入し、それによって入力がその確率によって順序付けされる((0.1→「an」)、(0.2→「a」)、(0.2→「these」)、(0.3→「the」))。この構造は、続いて上位値から読み取ることができ、最終的な「最も確率の高い」予想のセットを取得することができる。
【0078】
中心機構との複数のデバイスの同期をここで
図3a−9を参照して以下に説明する。
【0079】
図3a及び3bは、本発明によりシステム1000の機構500がデバイスA、B、及びCに同期している間のシステム1000におけるデータの転送を示している。データ転送は、転送されているオブジェクト(円に示す)から始まり、それが転送されるオブジェクト(濃い矢印に示す)で終わる破線によって示されている。
図3aは、デバイスA、B、Cと機構500の初期同期中のデータ転送を示している。
図3bは、デバイスA、B、Cと機構500のその後の同期中のデータ転送を示している。システムの全てのデバイスA、B、Cと機構500の同期は、デバイスに存在する複数の言語モデルの同期を提供する。
【0080】
図3a及び3bに示されているシステム1000は、3つのデバイスA、B、Cを含み、各々が、動的言語モデル101、102、103及びユーザによってデバイスA、B、Cに入力されたテキストT
A、T
B、T
Cを含む。システムは、3つのデバイスに制限されることはなく、単一デバイス、2つのデバイス、又はいずれの数の追加のデバイスも含むことができる。
【0081】
システム1000は、デバイスA、B、Cを同期するための機構500を含む。機構500は、累積言語モデル(LM)300及び各デバイスA、B、Cに関連付けられたデルタ言語モデル201、202、203を含むか又は生成する。累積言語モデル300は、デバイスA、B、Cに入力されたいずれのテキストに対しても機構500によって訓練される。各デルタ言語モデル201、202、203は、以下に詳しく説明するように、そのデルタ言語モデルに固有のデバイス以外のデバイスA、B、Cに入力されたテキストT
A、T
B、T
Cを使用して機構500によって訓練される。
【0082】
デバイスA、B、Cは、いずれの時間にもかつ要求/必要とされる度に機構500と自由に同期することができる。各デバイスA、B、Cは、同期のための要求を機構500に送信し、例えば、デバイスは、機構との同期のためのプッシュ/プル信号を制御する。同期の要求に応答して、同期機構500は、一度に単一デバイスA、B、Cに同期する。従って、同期機構500は、同期の要求が受信されるどのような順序でもデバイスA、B、Cからの同期要求を処理するように構成される。
【0083】
図3aに示されているシステム1000は、3つのデバイスA、B、Cの間のデータ転送及び各デバイスA、B、Cの初期同期中の同期するための機構500を示している。デバイスは、いずれの順序でも同期を要求することができ、従って、機構500はいずれの順序でもデバイスの同期を処理することができる。例えば、第1デバイスAが機構500に同期することができ(デバイスAの初期同期)、続けてデバイスBが機構500に同期して(デバイスBの初期同期)、及び次にデバイスCが機構500に同期する(デバイスCの初期同期)。
【0084】
図3bは、デバイスA、B、Cのその後の同期中のデータ転送を示している。複数のデバイスは、1つ又はそれよりも多くのデバイスのその後の同期が起こる前に最初に同期している必要はないので、「初期」同期という語は、単一デバイスの初期同期を示し、複数のデバイスの初期同期ではない。同様に、「その後の」同期は、単一デバイスのその後の同期、すなわち、そのデバイスが初期同期を実行した後に起こる同期を示している。
【0085】
図3aに示すように、デバイスの初期同期中に、デバイスは、機構500に以前に同期されていたいずれかのデバイスに入力されたテキストを使用して機構500によって発生された累積言語モデル300を機構500から受信する。デバイスは、累積言語モデル300をその固有の動的言語モデル内に融合するように構成される。デバイスは、そのデバイスに入力されたいずれのテキストも機構500に送信するように更に構成される。
【0086】
初期同期処理は、
図3aに示す特定のシステムに対して説明され、非制限的例では、デバイスA、B、及びCが機構500に同期する。
【0087】
デバイスAと機構500の初期同期中に、デバイスAは、機構500から累積言語モデル300をダウンロードする。デバイスAが、同期する最初のものであるので、累積言語モデル300は空である(累積言語モデル300は、機構500に以前に同期されたいずれかのデバイスに入力されたいずれのテキストを用いても訓練されるので)。累積言語モデル300をダウンロードした後に、デバイスAは、これをその固有の動的言語モデル101に融合する。この状況では、累積言語モデル300が空であるので、融合段階は、動的言語モデル101に変更を生じない。次に、デバイスAは、ユーザによってデバイスAに入力されたテキストT
Aを送信する。テキストT
Aは、デバイスに入力されたいずれかの利用可能なテキスト、例えば、デバイスのメモリにあって消去されていないテキストを含む。
【0088】
この初期同期中に、ユーザは、初めて同期を実行したので、機構500は、空累積言語モデル300を生成することが好ましい。これに代えて、機構500に空累積言語モデル300を提供することができる。機構500は、デバイスAに入力されたテキストT
Aを受信してテキストT
Aに対して空累積言語モデル300を訓練する。更に、機構500は、デバイスAの空デルタ言語モデル201を生成することが好ましい。明確にするために、
図3aは、機構500内のテキストの転送を示していない。しかし、機構500内のテキストの転送の例は、
図3cにデバイスCに対して示して以下に説明する。
【0089】
デバイスBと機構500の初期同期中に、デバイスBは、機構500から累積言語モデル300をダウンロードする。累積言語モデル300は、デバイスAに入力されたテキストT
Aを表している。累積言語モデル300をダウンロードした後に、デバイスBは、これをその固有の動的言語モデル102に融合する。次に、デバイスBは、ユーザによってデバイスBに入力されたテキストT
Bを機構500に送信する。
【0090】
機構500は、デバイスに入力されたテキストT
A、T
B、T
Cを受信する前に累積言語モデル300をデバイスA、B、Cに送信する。デバイスA、B、Cの動的言語モデル101、102、103は、ユーザテキスト入力によって進化する。最初に累積言語モデル300を送信することにより、機構は、デバイスA、B、Cが、動的言語モデル101、102、103に既に存在するテキストT
A、T
B、T
Cを組み込んでいないことを保証する。この順序の重要性は、後で詳しく説明する。
【0091】
デバイスBの初期同期中に、機構500は、デバイスBに入力されたテキストT
Bを受信し、テキストT
Bに対して累積言語モデル300を更に訓練する。更に、機構500は、デバイスBから受信するテキストT
Bに対してデバイスAに関連付けられたデルタ言語モデル201を訓練する。更に、機構500は、デバイスBの空デルタ言語モデル202を生成する。
【0092】
デバイスCと機構500の初期同期中に、デバイスCは、機構500から累積言語モデル300をダウンロードする。累積言語モデル300は、デバイスA及びBに入力されたテキストT
A、T
Bを表している。累積言語モデル300をダウンロードした後に、デバイスCは、これをその固有の動的言語モデル203に融合する。次に、デバイスCは、デバイスCに入力されたテキストT
Cを機構500に送信する。
【0093】
デバイスCの初期同期中に、機構500は、デバイスCに入力されたテキストT
Cを受信してテキストT
Cに対して累積言語モデル300を更に訓練する。更に、機構500は、デバイスCから受信するテキストT
Cに対してデバイスAに関連付けられたデルタ言語モデル201を更に訓練する。機構500は、デバイスCから受信するテキストT
Cに対してデバイスBに関連付けられた空デルタ言語モデル202を訓練する。更に、機構500は、デバイスCに関連付けられた空デルタ言語モデル203を生成する。
【0094】
各デバイスA、B、Cは、機構500にテキストT
A、T
B、T
Cが送信された状態でデバイスからテキストT
A、T
B、T
Cを消去することが好ましい。次に、デバイスA、B、Cは、初期同期以降にデバイスに入力されたいずれのテキストT
A、T
B、T
Cも格納し、次に、このテキストがその後の同期中に送信された後に消去する等々である。
【0095】
システムのデバイスA、B、Cのその後の同期が
図3bに示されている。上述したように、デバイスは、必要な場合にいつでも同期することができる。デバイスの同期にはいずれの順序も必要ない、例えば、デバイスBは、デバイスCが初期同期を要求する前に次の同期を要求することができる。従って、この例では、デバイスCが同期中に受信するデルタ言語モデル203は、デバイスBから受信されたテキストT
Bの2つのロット、すなわち、デバイスBの初期同期中に受信されたロット及びデバイスBのその後の同期中に受信されたロットに対して訓練される。
【0096】
その後の同期が機構500とデバイスA、B、Cの間で実行された時に、デバイスA、B、Cは、以前の同期以降にそのデバイスに入力されたいずれのテキストT
A、T
B、T
Cも機構500に送信し、ここで以前の同期は、初期同期又は初期同期に続く同期とすることができる。
【0097】
各デバイスA、B、Cは、そのデバイスに固有のデルタ言語モデル201、202、203をダウンロードする。デバイスは、段階が独立しているので(デバイスのデルタ言語モデルが、他のデバイスに入力されたテキストに対して訓練されるので)、テキストをアップロードするのと同時にデルタ言語モデルをダウンロードすることができ、かつダウンロードすることが好ましい。
【0098】
その後の同期中に、機構500は、以前の同期以降に入力されたテキストT
A、T
B、T
Cを受信する。機構500は、デルタ言語モデル201、202、203をその関連付けられたデバイスA、B、Cに送信する。テキストの受信及びデルタ言語モデルの送信は、与えられたデバイスに対して並行して実行することができる。デルタ言語モデルがデバイスに送信された後に、デルタ言語モデル201、202、203は、空デルタ言語モデルに戻すことができる。
【0099】
図3bに示すデバイスのその後の同期をこの図を参照して詳しく説明する。実施例を提供するために、本発明者は、デバイスA、B、及びCが、デバイスが全てその順序(すなわち、デバイスAの次にデバイスB、その次にデバイスC)で初期同期が行われた後に、その順序でその後の同期を要求する単純なシナリオを考える。しかし、上述したように、デバイスは、いずれの時間及びいずれの順序でも同期を要求することができる。デバイスAのその後の同期では、デバイスAは、機構500からデバイスAに固有のデルタ言語モデル201を受信する。上述したように、このデルタ言語モデル201は、デバイスB及びCの初期同期中にアップロードされたデバイスB及びCに入力されたテキストT
B、T
Cに対して訓練される。次に、デバイスAは、デルタ言語モデル201をその動的言語モデル101に融合する。
【0100】
機構500は、関連付けられたデバイスに送信された状態で各デルタ言語モデルを消去することが好ましい。従って、デルタ言語モデル201がデバイスAに送信された後に、機構500は、デルタ言語モデル201を消去し、デバイスB及びCの初期同期以降にデバイスB及びCに入力されたテキストT
B、T
Cに対して続いて訓練される空デルタ言語モデル201を提供する。
【0101】
デバイスAは、必ずではないがデルタ言語モデルをダウンロードするのと同時にその初期同期以降にデバイスAに入力されたテキストT
Aを機構500に送信することが好ましい。機構500はこのテキストT
Aを受信し、このテキストT
Aに対してデバイスB及びCに固有のデルタ言語モデル202、203を更に訓練する。
【0102】
デバイスBのその後の同期中に、デバイスBに固有のデルタ言語モデル202が機構500からダウンロードされる。デルタ言語モデル202は、デバイスCの初期同期中に機構500によって受信されたテキストT
C及びデバイスAの初期同期以降にデバイスAに入力されたテキストT
Aに対して訓練される。デバイスBは、デルタ言語モデル202をその動的言語モデル102に融合する。機構500がデルタ言語モデル202をデバイスBに送信された状態で、機構500は、言語モデル202を消去し、デバイスA及びCに入力されたテキストT
A、T
Cに対して続けて訓練される空言語モデル202を提供する。
【0103】
デバイスBは、以前の同期以降、例えば、このシナリオでの初期同期以降にデバイスBに入力されたテキストT
Bを送信する。送信された状態で、デバイスBは、そのメモリからテキストを消去することが好ましい。機構500は、テキストT
Bを受信し、テキストT
Bに対してデバイスAの消去されたデルタ言語モデル201を訓練する。更に、機構500は、テキストT
Bに対してデバイスCのデルタ言語モデル203を更に訓練し、デバイスCのデルタ言語モデルは、デバイスAに入力されたテキストT
Aに対して既に訓練されているものである。
【0104】
上述のと類似の同期処理は、デバイスCのその後の同期にも行われる。デバイスCのデルタ言語モデル203は、デバイスA及びCの初期同期以降にデバイスA及びBに入力されたテキストT
A、T
Bに対して訓練される。
【0105】
上述したものに加えて、その後の同期中に、機構500は、デバイスA、B、Cのその後の同期中に受信するテキストT
A、T
B、T
Cに対して累積言語モデル300を訓練して維持することが好ましい。これは、後でより詳しく説明するように、機構500とのいずれの更に別のデバイスの高速及び効率的な同期も可能にする。
【0106】
特定のデバイスのための初期及びその後の同期中のデータの転送が
図3CにデバイスCに対して示されている。初期同期中に、デバイスCは、累積言語モデル300をダウンロードし、これをその動的言語モデル103に融合する。次に、デバイスCは、機構500によって使用されるデバイスに入力されるテキストT
Cをアップロードし、デバイスA及びBに関連付けられたデルタ言語モデル201、202を訓練し、かつ累積言語モデル300を訓練する。その後の同期中に、デバイスCは、そのデルタ言語モデル203をダウンロードし、これをその動的言語モデル103に融合する。デバイスCは、以前の同期以降にデバイスCに入力されたいずれのテキストT
Cも機構500にアップロードし、機構500は、累積言語モデル300及びデバイスA及びBに関連付けられたデルタ言語モデル201、202を訓練するためにこれを使用する。
【0107】
デバイスが機構に同期した時に、本発明により、このデバイスは、システムの他のデバイスに入力されたテキストの全てから学習しているので、このデバイスがユーザによって以前に使用されていないとしても、ユーザの書込様式を正確に予想することができる。
【0108】
上記から明らかなように、新しいデバイス、例えば、デバイスDが機構500に同期された時に、デバイスDは、いずれの特別な初期同期も実行する必要はない。デバイスA、B、及びCに以前に同期された機構500とのデバイスDの初期同期中に、デバイスDは、デバイスA、B、及びCに入力された全てのテキストに対して訓練されている累積言語モデル300を受信する。デバイスDは、累積言語モデル300をその動的言語モデル103に融合し、それによってデバイスA、B、及びCに入力された全てのテキストから学習する。全ての他の段階は、同期中、例えば、初期同期中は同じままであり、機構500は、デバイスDの空デルタ言語モデルを発生し、その後の同期中に、デバイスA、B、及びCに入力されたテキストT
A、T
B、T
Cに対してデルタ言語モデルを訓練する。
【0109】
上記で明らかなように、機構500は、テキストが機構500によって受信される順序でテキストを用いて言語モデルを訓練することが好ましい。例えば、デバイスAが機構500に同期して次にデバイスCが同期した場合に、デバイスBのデルタ言語モデルは、デバイスAから受信されたテキストT
A及び次にデバイスCから受信されたテキストT
Cに対して訓練される。
【0110】
一部の実施形態において、同期中にテキストが受信された時に、関連のデルタ言語モデル201、202、203及び/又は累積言語モデル300は、テキストT
A、T
B、T
Cに対して訓練することはできない。これらの実施形態において、受信されたテキストT
A、T
B、T
Cは、機構500によって格納され、言語モデルを将来の同期中にデバイスに送信する必要がある時だけデルタ言語モデル201、202、203及び/又は累積言語モデル300を訓練するのに使用される。
【0111】
本発明による代替データ転送実施形態が
図4a、4b及び4cに示されている。この代替実施形態は、
図3a、3b及び3cに関して上述した実施形態と実質的に類似しているが、デバイスA、B、Cの同期が、ユーザによってデバイスに入力された生テキストT
A、T
B、T
Cの転送ではなく、デバイスA、B、Cから機構へのデバイスデルタ言語モデル111、112、113の転送によって達成されることを可能にする。デバイスデルタ言語モデル111、112、113は、デバイスA、B、Cに固有であるが機構500に格納されているデルタ言語モデル201、202、203とは対照的に、デバイスA、B、Cに格納された動的言語モデルである。
【0112】
図4a及び4bは、システム1000におけるデータの転送を示し、システム1000の機構500は、デバイスA、B、及びCに同期する。
図4aは、機構500とのデバイスA、B、Cの初期同期中のデータ転送を示している。
図4bは、機構500とのデバイスA、B、Cのその後の同期中のデータ転送を示している。機構500とのシステムの全てのデバイスA、B、Cの同期は、デバイスに存在する複数の言語モデルの同期を提供する。
【0113】
図4a及び4bに示されているシステム1000は、3つのデバイスA、B、Cを含み、各々は、動的言語モデル101、102、103及びデバイスデルタ言語モデル111、112、113を含む。システムは、3つのデバイスに制限されず、すなわち、システムは、単一デバイス、2つのデバイス、又はいずれの数の追加のデバイスを含むことができる。
【0114】
デバイスデルタ言語モデル111、112、113は、機構500とのそのデバイスの最後の同期以降に関連のあるデバイスA、B、Cに入力されたテキストに対して訓練された動的言語モデルであり、すなわち、デバイスデルタ言語モデル111、112、113は、機構500とのそのデバイスの最後の同期以降に関連のあるデバイスA、B、Cに入力された生のテキストT
A、T
B、T
Cに対して訓練される。
【0115】
システム1000は、デバイスA、B、Cを同期するための機構500を含む。機構500は、累積言語モデル(LM)300及び各デバイスA、B、Cに関連付けられたデルタ言語モデル201、202、203を含むか又は生成する。機構500は、デバイスA、B、Cに入力されたいずれのテキストも表すデバイスデルタ言語モデル111、112、113を累積言語モデル300に融合する。
【0116】
同期中に、各デバイスデルタ言語モデル111、112、113は、デバイスA、B、Cに固有のデルタ言語モデル201、202、203以外の全てのデルタ言語モデル201、202、203に機構500によって融合され、そこからデバイスデルタ言語モデル111、112、113が、以下に詳しく説明するように発生する。
【0117】
デバイスA、B、Cは、いずれの時間にもかつ望ましい/必要とされる度に機構500に自由に同期することができる。
図4aに示すシステム1000は、3つのデバイスA、B、Cの間のデータ転送及び各デバイスA、B、Cの初期同期中の同期するための機構500を示している。デバイスは、いずれの順序でも同期を要求することができる。
【0118】
デバイスの初期同期中に、
図4aに示すように、デバイスは、機構500に以前に同期されたいずれかのデバイスに入力されたテキストから得られたデータを使用して機構500によって発生された累積言語モデル300を機構500から受信する。デバイスは、累積言語モデル300をその固有の動的言語モデル内に融合するように構成される。デバイスは、そのデバイスに入力されたいずれのテキストからのデータも含むデバイスデルタ言語モデル111、112,113を機構500に送信するように更に構成される。
【0119】
初期同期処理を
図4aに示されている特定のシステムに対して説明し、非制限的例では、デバイスA、B、及びCは、順番に機構500に同期する。
【0120】
デバイスAと機構500の初期同期中に、デバイスAは、機構500から累積言語モデル300をダウンロードし、これをその固有の動的言語モデル101に融合する。次に、デバイスAは、ユーザによってデバイスAに入力されたテキストに対して訓練されたデバイスデルタ言語モデル111を送信する。デバイスデルタ言語モデル111は、デバイスに入力されたいずれかの利用可能なテキスト、例えば、デバイスのメモリにあって消去されていないテキストに対して訓練することができる。
【0121】
この初期同期中に、機構500は、好ましくは、空累積言語モデル300を発生させ、又は機構500には、空累積言語モデル300を提供することができる。機構500は、デバイスデルタ言語モデル111を受信し、デバイスデルタ言語モデルを空累積言語モデル300に融合する。更に機構500は、デバイスAに固有の空デルタ言語モデル201を生成することが好ましい。
【0122】
デバイスBと機構500の初期同期中に、デバイスBは、機構500から累積言語モデル300をダウンロードする。累積言語モデル300は、デバイスAに入力されたテキストに対して訓練されたデバイスデルタ言語モデル111からのデータを含む。累積言語モデル300をダウンロードした後に、デバイスBは、これをその固有の動的言語モデル102に融合する。次に、デバイスBは、ユーザによってデバイスBに入力されたテキストに対して訓練されたデルタ言語モデル112を機構500に送信する。
【0123】
各デバイスの同期中に、機構500は、デバイスに入力されたテキストに対して訓練されたデバイスデルタ言語モデル111、112、113を受信する前に、累積言語モデル300をデバイスA、B、Cに送信する。最初に累積言語モデル300を送信することにより、機構は、デバイスA、B、Cが、動的言語モデル101、102、103に既に存在するデバイスデルタ言語モデル111、112、113からデータを組み込んでいないことを保証する。この順序の重要性は後で詳しく説明する。
【0124】
デバイスBの初期同期中に、機構500は、デバイスBに入力されたテキストに対して訓練されたデバイスデルタ言語モデル112を受信し、デバイスデルタ言語モデル112を累積言語モデル300に融合する。更に、機構500は、デバイスBから受信されたデバイスデルタ言語モデル112をデバイスAに関連付けられたデルタ言語モデル201に融合する。更に、機構500は、デバイスBの空デルタ言語モデル202を生成する。
【0125】
デバイスCと機構500の初期同期中に、デバイスCは、機構500から累積言語モデル300をダウンロードする。累積言語モデル300は、デバイスA及びBに入力されたテキストを表している。累積言語モデル300をダウンロードした後に、デバイスCは、これをその固有の動的言語モデル203に融合する。次に、デバイスCは、ユーザによってデバイスCに入力されたテキストに対して訓練されたデルタ言語モデル113を機構500に送信する。
【0126】
デバイスCのこの初期同期中に、機構500は、デバイスCに入力されたテキストに対して訓練されたデバイスデルタ言語モデル113を受信し、デルタ言語モデル113を累積言語モデル300に融合する。更に、機構500は、デバイスCから受信されたデバイスデルタ言語モデル113をデバイスAに関連付けられたデルタ言語モデル201に融合する。機構500は、更に、デバイスCから受信されたデバイスデルタ言語モデル113をデバイスBに関連付けられた空デルタ言語モデル2020に融合する。更に、機構500は、デバイスCに関連付けられた空デルタ言語モデル203を生成する。
【0127】
各デバイスA、B、Cは、デバイスデルタ言語モデル111、112、113が機構500に送信された状態で、デバイスデルタ言語モデル111、112、113を消去して空デバイスデルタ言語モデルにすることが好ましい。次に、デバイスA、B、Cは、初期同期以降にデバイスに入力されたいずれのテキストに対してもデバイスデルタ言語モデル111、112、113を訓練する。デバイスデルタ言語モデル111、112、113は、それがその後の同期中に送信された後に再度消去される等々である。
【0128】
システムのデバイスA、B、Cのその後の同期が
図4bに示されている。上述したように、デバイスは、要求された場合はいつでも同期することができ、デバイスの同期にはいずれの順序も必要ない。
【0129】
その後の同期が機構500とデバイスA、B、Cの間で実行された時に、デバイスA、B、Cは、以前の同期以降にそのデバイスに入力されたいずれのテキストに対しても訓練されたデバイスデルタ言語モデル111、112、113を機構500に送信する。
【0130】
各デバイスA、B、Cは、そのデバイスに固有のデルタ言語モデル201、202、203をダウンロードする。デバイスは、デバイスデルタ言語モデル111、112、113をアップロードするのと同時にデルタ言語モデル201、202、203をダウンロードすることができ、かつダウンロードすることが好ましい。
【0131】
その後の同期中に、機構500は、以前の同期以降にそのデバイスA、B、Cに入力されたテキストを表すデバイスデルタ言語モデル111、112、113を受信する。機構500は、デルタ言語モデル201、202、203をその関連付けられたデバイスA、B、Cに送信する。デバイスデルタ言語モデル111、112、113の受信及びデルタ言語モデル201、202、203の送信は、与えられたデバイスに対して並行して実行することができる。デルタ言語モデル201、202、203がデバイスに送信された後に、デルタ言語モデル201、202、203を消去して空デルタ言語モデルにすることができる。
【0132】
図4bに示すデバイスのその後の同期をこの図を参照してここで詳しく以下に説明するが、本発明者は、デバイスA、B、及びCが、デバイスが全てその順序で初期同期が行われた後にその順序でその後の同期を要求する
図3bと同じシナリオを考えている。しかし、上述したように、デバイスは、いずれの時間にもかついずれの順序でも同期を要求することができる。デバイスAのその後の同期では、デバイスAは、機構500からデバイスAに固有のデルタ言語モデル201(デバイスAの最後の同期以降にデバイスCに入力されたテキストを表すデバイスデルタ言語モデル113に融合されたデバイスAの最後の同期以降にデバイスBに入力されたテキストを表すデバイスデルタ言語モデル112)を受信し、デルタ言語モデル201をその動的言語モデル101に融合する。
【0133】
機構500は、各デルタ言語モデル201、202、203が関連付けられたデバイスに送信された状態で、各デルタ言語モデル201、202、203を消去することが好ましい。
【0134】
デバイスAは、必ずではないがデルタ言語モデルをダウンロードするのと同時にその初期同期以降にデバイスAに入力されたテキストに対して訓練されたデバイスデルタ言語モデル111を機構500に送信することが好ましい。機構500は、このデバイスデルタ言語モデル111を受信し、デバイスデルタ言語モデル111をデバイスB及びCに固有のデルタ言語モデル202、203に融合する。
【0135】
デバイスBのその後の同期中に、デバイスBに固有のデルタ言語モデル202が機構500からダウンロードされ、その動的言語モデル102に融合される。機構500がデルタ言語モデル202をデバイスBに送信された状態で、機構500は、言語モデル202を消去する。
【0136】
デバイスBは、以前の同期以降に、例えば、このシナリオにおける初期同期以降にデバイスBに入力されたテキストに対して訓練されたデバイスデルタ言語モデル112を送信する。送信された状態で、デバイスBは、デバイスデルタ言語モデル112を消去して空デルタ言語モデルを生成することが好ましい。機構500は、デバイスデルタ言語モデル112を受信し、デバイスデルタ言語モデル112をデバイスAの消去されたデルタ言語モデル201に融合する。更に、機構500は、デバイスデルタ言語モデル112をデバイスCのデルタ言語モデル203に融合し、ここでデバイスCのデルタ言語モデル203は、デバイスAに入力されたテキストから得られたデータを既に含んでいる。
【0137】
上述のものと類似の同期処理は、デバイスCのその後の同期に対して行われる。
【0138】
上述したものに加えて、その後の同期中に、機構500は、デバイスA、B、Cのその後の同期中に受信するデバイスデルタ言語モデル111、112、113を融合することによって累積言語モデル300を維持することが好ましい。
【0139】
特定のデバイスの初期及びその後の同期中のデータの転送は、
図4CにデバイスCに対して示されている。初期同期中に、デバイスCは、累積言語モデル300をダウンロードし、累積言語モデル300をその動的言語モデル103に融合する。次に、デバイスCは、デバイスに入力されたテキストに対して訓練されたデバイスデルタ言語モデル113をアップロードする。機構500は、デバイスデルタ言語モデル113をデバイスA及びBに関連付けられたデルタ言語モデル201、202にかつ累積言語モデル300に融合する。その後の同期中に、デバイスCは、そのデルタ言語モデル203をダウンロードし、デルタ言語モデル203をその動的言語モデル103に融合する。デバイスCは、以前の同期以降にデバイスCに入力されたいずれのテキストに対しても訓練されたデバイスデルタ言語モデル113を機構500にアップロードし、機構500は、これを累積言語モデル300及びデバイスA及びBに関連付けられたデルタ言語モデル201、202に融合する。
【0140】
上記から明らかなように、新しいデバイス、例えば、デバイスDが機構500に同期された時に、いずれの特別な初期同期も実行する必要はない。
【0141】
機構500は、デバイスデルタ言語モデル111、112、113が機構によって受信される順序でデバイスデルタ言語モデル111、112、113を言語モデル内に融合することが好ましい。例えば、デバイスAが機構500に同期し、次にデバイスCが同期する場合に、デバイスAから受信されたデバイスデルタ言語モデル111が、デバイスBのデルタ言語モデル2020に融合され、次に、デバイスCから受信されたデバイスデルタ言語モデル113が、デルタ言語モデル202に融合される。
【0142】
本発明の上述の態様において、デルタ言語モデルが入力テキストの代わりに機構に送信された場合に、デバイスの動的言語モデル及びデバイスデルタ言語モデルは、ユーザによって入力されたテキストに対して訓練することができる。好ましい実施形態において、この訓練は同時に行われる。動的言語モデル及びデルタ言語モデルの両方が入力後に直ちに入力テキストに対して訓練される場合に、ユーザによって入力された実際のテキストを格納する必要はない。
【0143】
代替実施形態において、最後の同期以降のテキスト入力は、デバイスに格納することができ、デバイスデルタ言語モデルが転送されるその後の同期の前にデバイスデルタ言語モデルを訓練することができる。
【0144】
上述の実施形態の変形では、デバイスデルタ言語モデル111、112、113が同期中に受信された時に、デバイスデルタ言語モデル111、112、113は、関連するデルタ言語モデル201、202、203及び/又は累積言語モデル300に融合しなくてもよい。代わりに、得られる言語モデルを将来の同期中にデバイスに送信する必要がある時だけ、受信されたデバイスデルタ言語モデル111、112、113を機構500によって格納してデルタ言語モデル201、202、203及び/又は累積言語モデル300に融合することができる。
【0145】
テキストの代わりに言語モデルを送信することの潜在的な利点は、データ送信及び格納の両方における曖昧さを通じた改善したプライバシー及びセキュリティである。ある一定のシナリオでは、格納及び送信データサイズは、テキストの代わりに言語モデルを使用することにより、例えば、ユーザ入力テキストの量が大きい時又は多くの反復言葉がある時に小さくすることができる。しかし、格納及び送信データサイズは、言語モデルの代わりにテキストを使用することにより、例えば、ユーザ入力テキストの量が小さい時又は反復言葉が少ない時に小さくすることができる点で逆も真である場合がある。言語モデルを送信することの潜在的な更に別の利点は、以下に詳しく説明するように機構によるのではなくデバイス上で初期化処理を実行することができることである。
【0146】
上述のいずれの実施形態においても、同期が要求又は必要とされる時に各デバイスは、機構500との同期を要求する。同期を要求するためのトリガは、デバイスの同期の起動を判断するユーザにあると考えられる。これに代えて又はこれに加えて、各デバイスは、最小レベルの更新が起こるように定期的に同期を要求するように構成することができる。デバイスが更新する頻度は同じである必要はない。一実施形態において、デバイスは、新しいテキストがデバイスに追加された時に必ず同期をトリガするように構成することができる。
【0147】
上述の好ましい実施形態において、同期を制御するのはデバイスである。代替実施形態において、同期をトリガするように機構を構成することができ、機構は、複数のデバイスを順番に同期する。
【0148】
本発明の好ましい実施形態において、同期するための機構は、サーバ1500である。ウェブサービス/クラウドは、複数のデバイスとサーバ1500の間の容易にアクセス可能な同期を提供することができる。
図5は、本発明によるシステムを示し、システム2000は、同期されるサーバ1500及び2つのデバイス110、1200(タブレット1100及び電話1200)を含む。従って、デバイスの初期同期中に、デバイスは、サーバ1500から累積言語モデルをダウンロードしてテキストをサーバ上にアップロードする。デバイスのその後の同期中に、最後の同期以降にデバイス1100、1200に入力されたテキストは、サーバ上にアップロードされ、累積及びデルタ言語モデルを訓練するのに使用される。
図4a−4aに関して説明した代替実施形態において、デバイスは、同期中のサーバにおける最後の同期以降にデバイス1100、1200に入力されたテキストに対して訓練されたデバイスデルタ言語モデルをアップロードし、このデバイスデルタ言語モデルは、累積言語モデル及びデルタ言語モデル内に融合される。各デバイス1100、1200は、最後の同期以降に全ての他のデバイスに入力されたテキストを説明するその特定のデルタ言語モデルをサーバ1500からダウンロードする。
【0149】
ユーザがデバイスに入力するテキストは、センシティブな情報を表し、そのセキュリティを危うくしてはならない。システムは、ローカル格納又は複数のデバイスと機構の間の送信中のいずれにおいてもテキストのセキュリティが侵害されないようにするためのいくつかの解決法を提供する。
【0150】
テキストがデバイスから機構に転送される実施形態において、ユーザによって入力された実際のテキストは、安全な接続を通して、例えば、暗号化された通信チャネルを通して送信されるのが好ましく、送信中にこのテキストのセキュリティが侵害されないようにする。同様に、機構から複数のデバイスの各々にデルタ及び累積言語モデルを送信するために機構とデバイスの間に安全な接続を確立することができる。
【0151】
システム1000、2000の固有の特性は、機構500、1500が、実際のテキストを含まない累積言語モデル又はデルタ言語モデルの形態の更新を格納及び送信することである。従って、安全な接続が侵害される場合でも、言語モデル(ユーザの言語様式の確率的カプセル化)だけが露出され、テキスト自体ではない。従って、好ましいけれども、安全な接続は、デルタ(デバイスデルタ言語モデル及び機構のデルタ言語モデル)及び累積言語モデルを転送する必要はない。
【0152】
複数の動的言語モデルの同期をウェブベースのサーバを含むシステムにおいてデバイスとサーバの両方の観点から説明する。
【0153】
図6及び7は、デバイス及びサーバの観点からの初期同期を示しており、
図8及び9は、デバイス及びサーバの観点からのその後の同期を示している。
【0154】
図6は、デバイスの観点からの初期同期を示している。同期を要求してデバイスとサーバの間の安全な接続を確立した後に、ユーザは、ユーザに固有の動的言語モデルを同期するために認証することが好ましい(例えば、パスワードの要求及び提供により)。
【0155】
次に、デバイスは、サーバから累積言語モデルをダウンロードし、累積言語モデルをその既存の動的言語モデル内に融合する。テキストが同期の前にデバイスに入力された場合に、デバイスは、累積言語モデルをダウンロードした後にそのデバイスに入力されたテキストを表すテキストデータをアップロードするように構成される。デバイスに入力されたテキストを表すデータは、
図3a、3b、及び3cに関して上述したようにかつ
図6に示すように、実際のテキストを含むことができ、又は
図4a、4b及び4cに関して上述したようにデバイスデルタ言語モデルを含むことができる。
【0156】
サーバの観点からの初期同期が
図7に示されている。初期同期は、デバイスとのその後の同期に対してサーバの準備をする段階及びサーバに前に同期された全てのデバイスにこれまで入力された全てのテキストを表す累積言語モデルをデバイスに提供する段階から構成される。
【0157】
サーバは、ユーザ及びデバイスを認証し、現在のユーザに対して最初の同期である場合に、サーバは空累積言語モデルを生成する。この空累積言語モデルは、
図3a及び3bに関して詳しく上述したように、デバイスに入力された全てのテキストに対して後で訓練される。
図4a及び4bに関して説明した他の実施形態において、デバイスに入力された全てのテキストを表すデバイスデルタ言語モデルは、累積言語モデル内に融合される。
【0158】
デバイスの初期同期中に、サーバは、そのデバイスに対する空デルタ言語モデルを生成するように構成され、
図3a及び3bに関して上述したように、他のデバイスの以前の同期中に他のデバイスに入力されてサーバによって受信されたテキストを用いて訓練される。他の実施形態において、
図4a及び4bに関して詳しく上述したように、他のデバイスに入力された全てのテキストを表すデバイスデルタ言語モデルは、デルタ言語モデル内に融合される。
【0159】
次に、サーバは、累積言語モデルをデバイスに提供する。ユーザに対しての最初の同期である場合に、サーバは、
図3a又は
図4aのデバイスAに関して上述したように、空累積言語モデルをデバイスに提供する。これに代えて、他のデバイスの同期が以前に行われている場合に、サーバは、他のデバイスの同期中に受信されたテキストデータに対して訓練された累積言語モデルをデバイスに提供する。
【0160】
次に、サーバは、デバイスに入力されたテキスト(もしあれば)を表すテキストデータをアップロードする。テキストデータは、累積言語モデルがデバイスに提供された後にアップロードされ、アップロードされたテキストがデバイスに提供される累積言語モデルに組み込まれないようにする。
【0161】
デバイスの観点からのその後の同期が
図8に示されている(デバイスが、同期中にテキストを転送する実施形態)。初期同期の場合のように、デバイスは、サーバとの安全な接続を最初に設定しなければならず、ユーザは認証しなければならない。サーバはまた、デバイスを認証し、デルタ言語モデルを生成するためにデバイスが互いに区別されるのを可能にする(特定のデルタ言語モデルが各デバイスに関連付けられ、デバイス及びデバイスに入力されたテキストを表すテキストデータをサーバが区別する必要があるので)。デバイスは、サーバからのキーの要求に応答して、そのデバイスに固有のキーを提供することによってサーバを認証することができる。
【0162】
図8に示すように、各デバイスは、最後の同期事象以降にそのデバイスに入力されたいずれのテキストもサーバ上にアップロードする。デバイスは、テキストをサーバ上にアップロードした後にテキストバッファを消去するように構成されることが好ましい。代替実施形態において、各デバイスがサーバにデバイスデルタ言語モデルをアップロードし、アップロードされた後にこのデバイスデルタ言語モデルを消去する。
【0163】
デバイスは、その特定のデルタ言語モデルをサーバからダウンロードしてデルタ言語モデルをその動的言語モデル内に融合するように構成される。従って、その後の同期では、各デバイスは、他のデバイスの以前の同期中に他のデバイスからサーバによって受信された入力テキストを表すテキストデータから発生される統計的言語データ(その特定のデルタ言語モデルの形態)を学習する。
【0164】
図8に示すように、デバイスに固有のデルタ言語モデルが、他のデバイスの全てに入力されたテキストを表すテキストデータから発生されるので、最新のテキストを表すテキストデータをアップロードし、かつデルタ言語モデルをダウンロードする2つのタスクは完全に独立している。従って、これらの2つのタスクを並行して実行することができる。
【0165】
サーバの観点からのデバイスのその後の同期が
図9に示されている。同期の要求を受信し、安全な接続を確立し、かつユーザ及びデバイスを認証した後に、サーバは、2つの独立したタスクを好ましくは並行して実行するように構成される。1つのタスクでは、サーバは、最後の同期以降にデバイスに入力されたテキストを表すテキストデータを検索する。データが
図9に示すように実際の入力テキストを含む場合に、このテキストは、システムにおける他のデバイスに関連付けられたデルタ言語モデルを訓練するのに使用される。このテキストは、全てのデバイスに入力された全てのテキストに対して訓練される累積言語モデルを訓練するのに使用されることが好ましい。更新が起こった時に全ての更新によって累積言語モデルを訓練することにより、サーバは、いずれの追加のデバイスも以前に同期されたデバイスに迅速かつ効率的に同期させることができる。サーバは、デルタ言語モデルと累積言語モデルを並行して訓練するように構成されることが好ましい。第2のタスクでは、サーバは、デバイスにそのデバイスに固有のデルタ言語モデルを提供する。サーバは、デルタ言語モデルがデバイスに提供された状態でデルタ言語モデルを消去することが好ましい。
【0166】
これに代えて、データがデバイスデルタ言語モデルを含む実施形態において、デバイスデルタ言語モデルは、システムの他のデバイスに関連付けられたデルタ言語モデル内に融合される。デルタ言語モデルは、全てのデバイスに入力された全てのテキストを表す累積言語モデル内に融合されることが好ましい。各同期が起こった時にデバイスデルタ言語モデルを累積言語モデル内に融合することにより、サーバは、いずれの追加のデバイスも以前に同期されたデバイスに迅速かつ効率的に同期させることができる。サーバは、デバイスデルタ言語モデルをデルタ言語モデル及び累積言語モデル内に並行して融合するように構成されることが好ましい。第2のタスクでは、サーバは、デバイスにそのデバイスに固有のデルタ言語モデルを提供する。サーバは、デルタ言語モデルがデバイスに提供された状態でデルタ言語モデルを消去することが好ましい。
【0167】
同期の懸念の1つは、繰り返された融合の悪影響としてある一定の統計的言語データの強度を不自然に増加することによってバイアスされる傾向があるということである。本発明の機構は、デバイスの同期中に動的言語モデルがシステムの他のデバイスに入力された用語及び用語のシーケンスを学習することを保証することにより、その固有の動的言語モデル内に既に存在する統計的言語データを再学習することなくこの問題に対処する。これを達成するために、デバイスの初期同期中に、機構は、そのデバイスからの入力テキストを表すいずれのテキストデータもアップロードする前に累積言語モデルをデバイスに転送し、デバイスが、そのデバイスに以前に入力されたテキストを表すテキストデータを受信しないようにする。同様に、その後の同期中に、機構は、デルタ言語モデルを意図するデバイス以外の全てのデバイスに入力されたテキストを表すテキストデータを使用して、デバイスに固有のデルタ言語モデルを生成する。従って、本発明の同期機構は、動的言語モデルが動的言語モデルに既に存在する統計的データを受信及び融合しないようにする。
【0168】
動的言語モデル101、102、103のバイアスが懸念ではない場合に、第1の実施形態において、機構500は、初期及びその後の同期中にデバイスの全てから受信されたテキストT
A、T
B、T
Cに対して累積言語モデル300を訓練し、初期及びその後の同期中に各デバイスに累積言語モデル300を提供するように構成することができ、すなわち、機構は、デルタ言語モデルを含まず、デバイスは、個々に又はまとめて同期する。同様に、他の実施形態において、機構500は、初期及びその後の同期中にデバイスの全てから受信されたデバイスデルタ言語モデルを累積言語モデル300に融合し、初期及びその後の同期中に各デバイスに累積言語モデル300を提供するように構成することができると考えられ、すなわち、機構は、デルタ言語モデルを含まず、デバイスは、個々に又はまとめて同期する。別の実施形態において、機構は、デバイスの全体的な初期同期を実行するように構成することができ、その後の同期は、そのデバイスのデルタ言語モデルをダウンロードすることによって各デバイスに対して個々に実行され、それによってデバイスが初期同期を実行し、例えば、新しいデバイスがシステムに同期される機会にバイアスを制限する。
【0169】
以上の説明は、機構が複数のデルタ言語モデルに加えて累積言語モデルを発生させる本発明の好ましい実施形態を詳述したものである。しかし、別の実施形態において、機構は、複数のデルタ言語モデルだけを発生させることができる。この実施形態は、デバイスの全てが累積言語モデルからではなくその関連付けられたデルタ言語モデルを通して他のデバイスから初期テキストを学習する点で
図3a、3b、4a、及び4bに関して上述した好ましい実施形態とは異なることになる。事前に同期されたシステムに導入されるいずれの新しいデバイスも、これらのデバイスに入力されるあらゆる将来のテキストに加えて以前の同期以降に事前に同期されたデバイスに入力されたテキストからのみ学習することになる。ユーザによって入力された最も新しいテキストは、デバイスが学習する最も関連のあるテキストとすることができるので、これは受容可能と考えられる。更に、このようなシステムには統計的言語データのバイアスがないことになる。しかし、これは、新しいデバイスがシステムの統計的言語データの全てを吸収しないので、ユーザの書込様式を学ぶのに更に時間を消費することを意味する。
【0170】
以上の説明は、デバイスが単一動的言語モデルを含む本発明の実施形態を詳述している。しかし、他の実施形態において、1つ又はそれよりも多くのデバイス(一部の実施形態では全てのデバイス)が複数の動的言語モデルを使用することができる。これを容易にするために、各動的言語モデルは、固有にタグ付けされる。すなわち、デバイス内の各動的言語モデルは、デバイス内でこれを識別するためにタグ付けされる。一例は、以下の通りである。デバイスは、電子メールテキストに対して1つの動的言語モデル、及びツイッターテキストに対して別の動的言語モデルを有する。これらの言語モデルの各々は、他方から一方を識別するためにタグ付けされることになる。タグ付けは、「電子メール」、「ツイッター」、「フェイスブック」のようなテキストストリングのようなストリングの形態を取ることができる。タグは、いずれかの適切な方法でデバイスに格納することができる。
【0171】
少なくとも1つのデバイスが複数の動的言語モデルを使用する場合に、機構は、異なるデバイスからの動的言語モデルを同じタグに同期する。すなわち、デバイスXが先行する段落で言及されたように電子メール動的言語モデル及びツイッター動的言語モデルを有し、かつデバイスYが電子メール動的言語モデルのみを有する場合に、両方のデバイスにおける電子メール動的言語モデルは、同じタグに関連付けられる。これらのタグを認識する機構は、同じタグを有する動的言語モデルを同期することになる。
【0172】
この実施形態において、機構に関連付けられたディスパッチャモジュールも提供され、機構は、各タグに関連付けられたいくつかのインスタンスを含み、又はいくつかの別々の機構の形態を取ることになる。各タグは、関連付けられた動的言語モデルからの他のデータと共に、同期中に各デバイスによってディスパッチャモジュールに提供される(機構へのデータの提供に関して上述した方式で)。このようなデータの受信に応答して、ディスパッチャモジュールは、データ内のタグを識別して分析する。
【0173】
タグはまた、ディスパッチャモジュールのマップに格納され、又はディスパッチャモジュールに関連付けられることが好ましい。このシナリオでは、タグは、マップへのキーである。従って、タグの識別に応答して、ディスパッチャモジュールは、識別されたタグがマップに存在するか否かを確定する形態を取る分析を実行する。存在しない場合に、機構の新しいインスタンス又は新しい機構が、ディスパッチャモジュールによって生成され、かつマップ内で問題のタグに関連付けられる。タグと共に受信されたデータは、次に、以前の実施形態で上述したように処理のための新しい機構インスタンス又は新しい機構に向けられる。タグがマップに存在する場合に、ディスパッチャモジュールは、タグに関連付けられたデータをマップから識別するタグに関連付けられた機構インスタンス又は機構に向ける。次に、データは、以前の実施形態で上述したように機構インスタンス又は機構を用いて処理される。
【0174】
この実施形態に関して上記に与えた例では、同期は、累積言語モデル(電子メール)、デバイスXのデルタ言語モデル(電子メール)、及びデバイスYのデルタ言語モデル(電子メール)をもたらすことになる。デバイスYは、ツイッター動的言語モデルを有することなく、ツイッター動的言語モデルに対して同期しない。従って、同期はまた、デバイスXの累積言語モデル(ツイッター)及びデルタ言語モデル(ツイッター)をもたらす。従って、容易に理解することができるように、この例では電子メール機構インスタンス及びツイッター機構インスタンス(又は別々の電子メール及びツイッター機構)が存在する。
【0175】
デバイスYがツイッター動的言語モデルを有する場合に、同期は、電子メールシナリオに関して上述したように拡張され、それによって上述のデバイスXの累積言語モデル(ツイッター)及びデルタ言語モデル(ツイッター)に加えてデバイスYのデルタ言語モデル(ツイッター)をもたらすであろう。これは、デバイスに存在することができる全ての可能な動的言語モデルが他のデバイスのその均等物に同期することができるように拡張される。容易に分るように、本発明による上述の同期は、言語モデルが発生するデバイス及び追加のタグを使用して言語モデルを識別し、かつ上述の方式で同一タグを有する異なるデバイスからの動的言語モデルを同期することにより、1つのデバイスシナリオ当たりの複数の動的言語モデルに拡張される。
【0176】
本発明の同期処理は、性能問題を防ぐためにオンデバイス計算の点で軽量かつ効率的である。高度に拡張可能であり、潜在的に多数の様々なデバイス(異なるオペレーティングシステム又はソフトウエアバージョンを実行する)が異なる時間間隔に同期することを可能にする。上述したように、同期の頻度は、デバイス毎に異なるものにすることができ、例えば、デバイスAは、デバイスB又はCよりもより規則的にシステム1000に同期することができる。
【0177】
先行する説明は、ユーザによるデバイスの使用後及び/又は使用中の複数のデバイスの同期を説明している。しかし、ユーザが多くのテキストを同期されたシステムのデバイスに入力する機会を有する前に、デバイスによって発生されたテキスト予想は、動的言語モデルがユーザの書込様式を学んでいないのでユーザに対して正確ではない場合がある。
【0178】
ユーザに対するテキスト予想の精度を上げるために、同期システムのデバイスの動的言語モデルは、同期システムのデバイスの外側のいずれかのデバイスにユーザによって入力されたいずれかのテキスト、例えば、ユーザのPCに格納された電子メールによっても訓練することができるのが好ましく、ここでそのPCは、システムのデバイスの1つではない。この学習処理は、「初期化」と呼ばれる。
【0179】
同期システムの外側の外部機構は、ユーザが同期システムの外側のデバイスに入力したテキストに対して1つ又はそれよりも多くの言語モデルを訓練することによって1つ又はそれよりも多くの初期化言語モデルを生成するように構成される。
【0180】
初期化処理は、
図10に示されている。初期化中に、同期のための機構/サーバは、初期化ソース、すなわち、初期化言語モデルを発生した外部機構との安全な接続を確立するように構成される。サーバは、ユーザ及び初期化ソースを認証し、認証された状態で、サーバは、初期化ソースから1つ又はそれよりも多くの初期化言語モデルをダウンロードする。
【0181】
次に、サーバは、初期化言語モデルを累積言語モデル内に融合するように構成される。直接の結果は、デバイス同期は明示的な初期化を実行するのに要求されないことになるが、初期同期中に動的言語モデル内に融合された累積言語モデルからこれを引き継ぐことになることである。
【0182】
初期化処理が実行される場合に、システムの第1デバイスが同期される時に、例えば、
図3a又は4aのデバイスAの初期同期後にサーバが初期化処理を実行することが好ましい。好ましい初期化処理は、
図10の切れ目のない線によって示されている。
【0183】
しかし、初期化処理は、代わりに上述の同期処理のいずれのポイントでも実行することができる。初期化がシステムの第1同期後(例えば、デバイスAの初期同期後)に実行される場合に、初期化言語モデルは、サーバによって累積言語モデル及びデルタ言語モデルの全てに融合される。その結果、デバイスがデルタ言語モデルをその動的言語モデルにダウンロード及び融合した時に、システムのデバイスは、デバイスのその後の同期中に初期化データを受信する。後の日付に機構/サーバに同期するいずれかのデバイス(例えば、上述のデバイスD)は、デバイスが累積言語モデルをダウンロードしてこれをその動的言語モデル内に融合するので、デバイスの初期同期中と同様に初期化データを受信する。
【0184】
第1同期後に実行された初期化処理が
図10に示されており、ここで処理は、破線によって示された処理の一部(初期化言語モデルをデルタ言語モデル内に融合する段階)を含む。初期化モデルのデルタ言語モデルへの融合は、初期化モデルの累積言語モデルへの融合に並行して実行することができる。
【0185】
代替実施形態において、機構又は同期サーバの代わりに初期化をデバイスの1つで実行することができる。これらの実施形態において、これは、上述したように初期化ソースに接続して初期化言語モデルをダウンロードするデバイスである。初期化言語モデルがダウンロードされた状態で、初期化言語モデルは、デバイスの既存の動的言語モデル内に融合され、初期化言語モデルに含まれるテキストデータは、詳しく上述したように、機構との同期のためにデバイスのテキストデータに組み込まれる。デバイス初期化により、典型的には、デバイス上のテキストデータは、デバイスデルタ言語モデルの形態になり、初期化言語モデルをテキストデータに組み込む段階は、初期化言語モデルをデバイスデルタ言語モデル内に融合する段階を含むことになる。
【0186】
デバイス初期化は、初期化処理がユーザからの対話を要求する状況(例えば、初期化ソースを選択する場合及び第三者サービスを認証する場合)に好ましいとすることができる。初期化が機構を用いて実行された場合に、機構は、ユーザと外部初期化機構の間のプロキシとして作用しなければならない。従って、代わりにデバイスからの初期化を実行する段階は、同期サーバにおいてプロキシ機構を実施する必要がなく、実施の複雑さを低減する。デバイス初期化により、初期化サービスのための同期サービスにおける依存性はなく、それによって初期化は、同期が使用できない又は使用されない状況で可能である。
【0187】
反復された融合のためにバイアスが導入されないようにするために、初期化処理は一度だけ実行される。
【0188】
本発明の2つの更に別の態様は、エラー軽減のための機構及び方法である。エラー軽減は、デルタ言語モデルが機構からデバイスに送信される時に生じる問題に対処するが、エラーは、デルタ言語モデルを受信しないか又は確実に使用することができないデバイスをもたらす。このような状況を生じる場合があるエラーの例は、ネットワーク接続性問題及びデータ破損を含み、これらは、移動環境で特に共通の問題である。このようなエラーのシナリオでは、機構は、デルタ言語モデルがデバイスに送信されたと信じ、これを消去して空デルタ言語モデルにする。その後の同期中に、デバイスは、それが以前に受信し損なったデルタ言語モデルの内容を含まないデルタ言語モデルを受信する。従って、このデバイスによって提供される予想は、同じユーザによって使用された他のデバイスによって提供されるものとは異なるものになる。
【0189】
以下に詳しく説明するようなエラー軽減処理なしでこの問題を解決する唯一の方法は、機構からデバイスに累積言語モデルを送信することであり、デバイスがその動的言語モデルをこの累積モデルで置換することである。しかし、このエラー状況を検出するための手段を存在させる必要がある。更に、累積モデルの送信は、デバイスの動的言語モデルに既に含まれているデータが累積言語モデルの一部として機構からデバイスに送信される場合には効率的ではない。
【0190】
エラー軽減を使用するシステム1000の実施形態が
図11に示されている。単純にするために、1つのデバイスだけがこの図に示されているが、複数のデバイスを同じ機構500に同期することができることは理解されるであろう。上述したように、デバイスZは、動的言語モデル104及びテキストデータ114を含む(これは、例えば、ユーザによって入力された実際のテキスト又はテキストで訓練された言語モデルを含むことができる)。デバイスZは、パラメータR
Zを含む。上述のシステムでは、機構500は、累積言語モデル300を含むことが好ましい。機構は、1次デルタ言語モデル204、バックアップ言語モデル214、及びデバイスZに固有のパラメータS
Zを含む。このデータ転送が全ての同期に対して行われるので、R
Z及びテキストデータのデータ転送が実線によって示されている。1次デルタ言語モデル又はバックアップデルタ言語モデルのいずれかが、同期中にデバイスに転送され(以下に詳しく説明するように)、従って、これらの可能なデータ転送は破線によって示されている。
【0191】
エラー軽減が使用された時のデバイスZの同期中に機構を用いて実行される処理が
図12に示されている。
図12に示す段階は、
図8の「デルタLMを提供する」及び「デルタLMを消去する」という段階に対応し、かつそれを置換する。
図11及び12に示すエラー軽減処理を以下に更に詳しく説明する。
【0192】
図11及び12に示すエラー軽減処理の実施形態において、機構は、更に、機構からデバイスに送信されたデータを表す各デバイスに関連付けられたパラメータSを含む。デルタ言語モデルがデバイスに送信された時に、パラメータSは、デルタ言語モデルに関連付けられた識別子Iに等しく設定される。識別子Iは、デルタ言語モデルと共にデバイスに送信される。HTTPが通信プロトコルである場合に、識別子は、例えば、HTTPパラメータ又はカスタムヘッダとして送信することができる。
【0193】
デバイスがエラーなしでデルタ言語モデル及び識別子を受信した場合に、デバイスは、識別子Iに等しい受信されたデータを表すパラメータRを設定する。データ転送にエラーがある場合に、パラメータRは更新されず、最後の成功した同期の識別子に等しいままである。
【0194】
デバイスが次に同期された時に、デバイスは、パラメータRを機構に送信する。機構は、受信されたパラメータRを格納されたパラメータSと比較する。最後の同期中のデータ転送が成功した場合に、パラメータR及びSは同一である。これらが同一でない場合に、最後の同期のデータ転送は成功せず、かつエラーが発生している。
【0195】
エラーを軽減するために、機構500は、各デバイスに関連付けられた2つのデルタ言語モデル、すなわち、1つの1次デルタ言語モデル及び1つのバックアップデルタ言語モデルを含む。1次デルタ言語モデルは、例えば、
図3a、3b、4a、及び4bに関して上述したデルタ言語モデルに同等である。1次デルタ言語モデルは、詳しく上述したように、関連付けられたデバイスの最後の同期以降に全ての他のデバイスとの同期によって提供されたテキスト入力を表すデータを含む。
【0196】
バックアップデルタ言語モデルは、エラー軽減処理の一部である。バックアップデルタ言語モデルは、デバイスがエラーのないデルタ言語モデルを受信したことが確認された関連付けられたデバイスの最後の同期以降に全ての他のデバイスとの同期によって提供されたテキスト入力を表すデータを含む。従って、他のデバイスが同期された場合に、これらから受信されたテキストデータは、1次デルタ言語モデル及びバックアップデルタ言語モデルの両方に組み込まれる。デルタ言語モデルの受信の確認は、その後の同期の開始時に機構へのパラメータRの送信を通して行われる。従って、送信エラーがない場合に、バックアップデルタ言語モデルは、関連付けられたデバイスの最後から2番目の同期以降の他のデバイスとの同期からのテキストデータを伴う。送信に以前のエラーがある場合に、バックアップデルタ言語モデルは、関連付けられたデバイスの早期の同期以降に収集されたテキストデータを含む場合がある。
【0197】
図11に戻って、機構は、デバイスからパラメータRを受信する。パラメータRが同期の開始時にパラメータSに同一である場合に、最後の同期は成功し、1次デルタ言語モデルは、1次デルタ言語モデルの識別子と共にデバイスに転送される。パラメータSは、デルタ言語モデルと共に送信される識別子に設定される。この場合に、バックアップデルタ言語モデルは必要ない。バックアップデルタ言語モデルは消去することができ、1次デルタ言語モデルは、バックアップデルタ言語モデルに複製される。次に、1次デルタ言語モデルが消去され、空デルタ言語モデルが他のデバイスの将来の同期からのテキストデータを受信することを可能にする。
【0198】
パラメータRが同期の開始時にパラメータSに同一でない場合に、最後の同期は成功していない。この場合に、バックアップデルタ言語モデルがデバイスに送信される。バックアップデルタ言語モデルは、最後の成功しなかった送信時に送信されたテキストデータ及び他のデバイスとのその後の同期からのテキストデータを含む。従って、バックアップデルタ言語モデルを1次デルタ言語モデルの代わりにデバイスに送信することにより、デバイスは、そうでなければ送信のエラーのために失われるテキストデータを受信する。パラメータSは、バックアップデルタ言語モデルの識別子に設定される。1次デルタ言語モデルが消去され、空デルタ言語モデルが他のデバイスの将来の同期からのテキストデータを受信することを可能にする。
【0199】
エラーが検出されない(すなわち、RがSに等しい)場合かつ新しいテキストデータがデバイスの最後の同期以降に他のデバイスから受信されない(及び1次デルタ言語モデルが空である)場合に、デルタ言語モデルをデバイスに送信する必要はない。この場合に、バックアップデルタ言語モデルが消去される。
【0200】
一部の実施形態において、機構は、デバイスに到達したと確認されたデータを表す各デバイスに関連付けられた更に別のパラメータCを含むことができる。すなわち、各同期後に、Cは、デバイスから送信された受信されたテキストパラメータRに等しく設定される。エラーが送信中に起こった(及び従ってRがパラメータSに等しくない)場合に、それまでに成功した送信が起こらなかったためにRが更新されないので、その後の同期中に機構によって受信されたパラメータRをパラメータCに等しく設定しなければならない。RがS又はCのいずれかに等しくない場合に、予想されない深刻な失敗が起こっており、デバイスは、その動的言語モデルを消去し、これを機構で格納された累積言語モデルで置換し、デバイスが他のデバイスに正しく同期されていることを保証する必要がある。これは、デバイスが累積モデルを要求することができるように(例えば、パラメータRを指定しないことにより)エラーをデバイスに信号伝達する機構を通して、又はこれに代えて、累積モデルがデルタモデルの代わりにデバイスにダウンロードされ、デバイスがその動的言語モデルに融合するのではなくそれを置換するように信号伝達される機構を導入することによって可能にすることができるであろう。
【0201】
固有の識別子は、デバイスから機構に送信されるテキストデータの各セットに関連付けられ、デルタ言語モデルに関連付けられた識別子Iは、言語モデル内に関わっているテキストデータの固有の識別子から発生され、テキスト入力の履歴を提供する(例えば、固有の識別子Iは、テキストデータのセットに関連付けられた固有の識別子のストリングである)。識別子Iは、デルタ言語モデルに組み込まれる最新のテキストデータに関連付けられた固有の識別子に等しくすることができる。テキストデータの識別子は、機構を用いて発生されることが好ましい。これに代えて、テキストデータの識別子は、デバイスによって発生されて機構に送信することができる。好ましい実施形態において、テキストデータの識別子は、タイムスタンプから発生される。これに代えて、テキストデータの識別子は、タイムスタンプ、連続した整数、ランダムな整数、又はデバイス識別子の1つ又はそれよりも多くから発生することができる。言語モデルなし(例えば、「−」)又は空言語モデル(例えば、「0」)を示すために標準的な識別子を使用することができる。
【0202】
固有の識別子をデバイスから送信されたテキストデータの各セットに関連付けることは、複数のデルタ言語モデルの融合を可能にする(例えば、同じユーザに属する2つの異なるユーザアカウントを融合する場合)。固有の識別子が連続的である場合に(例えば、タイプスタンプを使用して)、これらは、ユーザ入力履歴の順序を識別し、従って、言語モデルをどのように融合しなければならないかを決定する(例えば、プリファレンスをより新しいデータに与える)ために使用することができる。
【0203】
一部の実施形態において、他のデバイスから機構によって受信されたテキストデータをデルタ言語モデルの代わりに格納することができる。必要なデルタ言語モデルは、同期中にこのデータから発生させることができる。例えば、テキストデータがデバイスデルタ言語モデルの形態である実施形態において、機構は、デバイスデルタ言語モデルを格納することができる。機構は、関連のあるデバイスデルタ言語モデルを融合し、同期するデバイスに固有のデルタ言語モデルを発生させることができ、及び/又は同期中にデバイスデルタ言語モデルを融合することによって累積言語モデルを発生させることができる。
【0204】
一部の実施形態において、バックアップデルタ言語モデルは、他のデバイスのその後の同期と共に更新されない場合がある。この場合に、バックアップデルタ言語モデルは、関連付けられたデバイスの最後の同期の前に他のデバイスから機構に送信されたテキストデータだけを含む。1次デルタ言語モデルは、従来通り、関連付けられたデバイスの最後の同期以降に他のデバイスから機構に送信されたテキストデータを含む。従って、送信エラーがあり、かつバックアップデルタ言語モデルが要求される場合に、1次及びバックアップデルタ言語モデルの両方からのデータをデバイスに送信すべきである。これは、デバイスに送信する前に、別々に送信することができる2つのデルタ言語モデルを融合することによって達成することができる。
【0205】
好ましい実施形態において、デバイスの同期は、デバイスによって開始され、かつ要求−応答ベースで進行する。この場合に、デバイスから機構へのテキストデータの送信におけるエラーの場合にエラー軽減を提供する必要はなく、これはこの送信におけるエラーが、同期中の機構からの応答(又はその欠如)によってデバイスに伝わるからである。デバイスは、要求(テキストデータを含む)によって同期を開始することができ、デルタ言語モデルがサーバによって応答でデバイスに戻される。従って、要求が成功した(及びテキストデータがエラーなしに転送された)場合に、機構が応答する。次に、デバイスは、機構が安全に受信されたことを知った後にテキストデータを消去することができる。機構が、予想したように応答しなかった場合に、デバイスは、新しい同期要求で再度テキストデータを転送することができる。
【0206】
一部の実施形態において、デバイスは、データの受信直後にデルタ言語モデルの受信の確認を送信することができる。この場合に、機構は、受信が確認された場合にそのデバイスに固有のデルタ言語モデルを消去する。受信が確認されなかった場合に、デルタ言語モデルは消去されない。この受信確認は、上述したように1次及びバックアップデルタ言語モデルを伴うエラー軽減処理に対する必要性を否定する。
【0207】
しかし、一部の実施形態において、デバイスから機構へのテキストデータの転送のためのエラー軽減処理を有することが有利になる。これは、同期がサーバによって開始されて要求−応答ベースで進行する場合又は非同期通信が存在する場合とすることができる。この場合に、上述したものに実質的に類似のエラー軽減処理を実施することができる。この場合に、デバイスは、テキストデータの2つのセット、すなわち、テキストデータの1つの1次セット及びテキストデータの1つのバックアップセットを格納する。各同期では、送信されたテキストデータに関連付けられた識別子は、デバイスによって格納することができ、かつテキストデータと共に機構に送信することができる。機構がその後の同期で適合性識別子を戻す場合に、1次テキストデータ(最後の同期以降に収集されたテキストデータを含む)が機構に送信される。機構から受信された識別子が格納された識別子に適合しない場合に、バックアップテキストデータ(機構によって受信されたと確認された最後の送信以降に収集された全てのテキストデータを含む)は、機構に送信される。このようなエラー軽減システムは、デルタ言語モデルに関して上述したエラー軽減システムの詳細のいずれをも必要な変更を加えて含むことができる。
【0208】
以上の説明から明らかなように、本発明はまた、複数の動的言語モデルを同期する方法を提供する。方法は、テキストデータを同期のための機構で受信する段階と、機構を用いてテキストデータを少なくとも1つの言語モデルに組み込む段階と、この少なくとも1つの言語モデルを機構とデバイスを同期するために提供する段階とを含む。1つの方法は、複数のデバイスにユーザによって入力されたテキストを同期のための機構で受信する段階を含み、各デバイスは、動的言語モデルを含む。本方法は、機構を用いてテキストに対して少なくとも1つの言語モデルを訓練する段階と、この少なくとも1つの言語モデルを機構とデバイスを同期するために提供する段階とを更に含む。別の方法は、デバイスにユーザによって入力されたテキストに対して訓練されたデバイスデルタ言語モデルを同期機構で受信する段階を含む。この方法は、更に、機構を用いてデバイスデルタ言語モデルを少なくとも1つの言語モデルに融合する段階と、この少なくとも1つの言語モデルを機構とデバイスを同期するために提供する段階とを含む。本方法の更に別の態様は、
図3−9の以上の説明から容易に明らかであろう。
【0209】
この説明は単に一例であり、特許請求の範囲に定めるような本発明の範囲から逸脱することなく、説明した実施形態に変更及び修正を行うことができることは認められるであろう。