(57)【要約】  本開示の実現例は、メッセージ中の言語を識別するための方法、システムおよびコンピュータプログラムストレージデバイスに関する。サニタイズ済テキストメッセージを生成するよう、テキストメッセージから非言語文字が除去される。（ｉ）スコアの第１のセットを決定するアルファベットベースの言語検出テストと、（ｉｉ）スコアの第２のセットを決定するスクリプトベースの言語検出テストとのうちの少なくとも１つを実行することによって、サニタイズ済テキストメッセージにおいて、アルファベットおよび／またはスクリプトが検出される。スコアの第１のセットの各スコアは、サニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのアルファベットを含んでいる尤度を表わす。スコアの第２のセットの各スコアは、サニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのスクリプトを含んでいる尤度を表わす。スコアの第１のセットと、スコアの第２のセットと、スコアの第１および第２のセットの組み合わせとのうちの少なくとも１つに基づき、サニタイズ済テキストメッセージ中の言語が識別される。
2019535082.tif 000002
【特許請求の範囲】
【請求項１】
メッセージ中の言語を識別する、コンピュータによって実現される方法であって、
テキストメッセージを取得することと、
サニタイズ済テキストメッセージを生成するよう、前記テキストメッセージから非言語文字を除去することと、
前記サニタイズ済テキストメッセージ中に存在するアルファベットおよびスクリプトのうちの少なくとも１つを検出することとを含み、
前記検出することは、
（ｉ）各々が前記サニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのアルファベットを含む尤度を表わすスコアの第１のセットを決定するためにアルファベットベースの言語検出テストを行なうことと、
（ｉｉ）各々が前記サニタイズ済テキストメッセージが前記複数の異なる言語のうちの１つの言語についてのスクリプトを含む尤度を表わすスコアの第２のセットを決定するためにスクリプトベースの言語検出テストを行なうこととのうちの少なくとも１つを含んでおり、
前記方法はさらに、
前記スコアの第１のセットと、前記スコアの第２のセットと、前記スコアの第１および第２のセットの組み合わせとのうちの少なくとも１つに基づき、前記サニタイズ済テキストメッセージ中の前記言語を識別することを含む、方法。
【請求項２】
前記非言語文字は、絵文字および数字のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
前記組み合わせは、前記スコアの第１および第２のセットの間の補間を含む、請求項１に記載の方法。
【請求項４】
前記サニタイズ済テキストメッセージ中の前記言語を識別することは、各々が前記サニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語を含む尤度を表わすスコアの第３のセットを生成するために前記サニタイズ済テキストメッセージに対して言語検出テストを行なうことを含む、請求項１に記載の方法。
【請求項５】
前記言語検出テストは、前記スコアの第１のセット、前記スコアの第２のセット、および、前記スコアの第１および第２のセットの前記組み合わせのうちの前記少なくとも１つに基づいて、複数の言語検出テストから選択される、請求項４に記載の方法。
【請求項６】
前記言語検出テストは、言語検出方法および１つ以上の分類器を含む、請求項４に記載の方法。
【請求項７】
前記言語検出方法は、辞書ベースの言語検出テスト、ｎグラム言語検出テスト、アルファベットベースの言語検出テスト、スクリプトベースの言語検出テスト、および、ユーザ言語プロファイル言語検出テストのうちの少なくとも１つを含む、請求項６に記載の方法。
【請求項８】
前記１つ以上の分類器は、教師あり学習モデル、部分教師あり学習モデル、教師なし学習モデルおよび補間のうちの少なくとも１つを含む、請求項６に記載の方法。
【請求項９】
前記サニタイズ済テキストメッセージ中の前記言語を識別するために、１つ以上の分類器を使用して前記スコアの第３のセットを処理することを含む、請求項４に記載の方法。
【請求項１０】
前記サニタイズ済テキストメッセージが、識別された前記言語であるという指示を前記１つ以上の分類器から出力することを含み、前記指示は信頼スコアを含む、請求項９に記載の方法。
【請求項１１】
メッセージ中の言語を識別するための、コンピュータによって実現されるシステムであって、
サニタイザモジュールを含み、前記サニタイザモジュールは、テキストメッセージを取得するとともに、サニタイズ済テキストメッセージを生成するよう前記テキストメッセージから非言語文字を除去し、
前記システムはさらに、
グルーパモジュールを含み、前記グルーパモジュールは、前記サニタイズ済テキストメッセージ中に存在するアルファベットおよびスクリプトのうちの少なくとも１つを検出し、前記グルーパモジュールは、
各々が前記サニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのアルファベットを含む尤度を表わすスコアの第１のセットを決定するためにアルファベットベースの言語検出テストを行なうことと、
各々が前記サニタイズ済テキストメッセージが前記複数の異なる言語のうちの１つの言語についてのスクリプトを含む尤度を表わすスコアの第２のセットを決定するためにスクリプトベースの言語検出テストを行なうこととうちの少なくとも１つを含む動作を実行するように動作可能であり、
前記システムはさらに、
言語検出器モジュールを含み、前記言語検出器モジュールは、前記スコアの第１のセットと、前記スコアの第２のセットと、前記スコアの第１および第２のセットの組み合わせとのうちの少なくとも１つに基づき、前記サニタイズ済テキストメッセージ中の前記言語を識別する、システム。
【請求項１２】
前記非言語文字は、絵文字および数字のうちの少なくとも１つを含む、請求項１１に記載のシステム。
【請求項１３】
前記組み合わせは、前記スコアの第１および第２のセットの間の補間を含む、請求項１１に記載のシステム。
【請求項１４】
前記グルーパモジュールは、
前記スコアの第１のセットと、前記スコアの第２のセットと、前記スコアの第１および第２のセットの前記組み合わせとのうちの前記少なくとも１つに基づき、複数の言語検出器モジュールから前記言語検出器モジュールを選択することを含む動作を実行するように動作可能である、請求項１１に記載のシステム。
【請求項１５】
前記言語検出器モジュールは、各々が前記サニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語を含む尤度を表わすスコアの第３のセットを生成するために前記サニタイズ済テキストメッセージに対して言語検出テストを行なうことを含む動作を実行するように動作可能な言語検出方法モジュールを含む、請求項１１に記載のシステム。
【請求項１６】
前記言語検出テストは、辞書ベースの言語検出テスト、ｎグラム言語検出テスト、アルファベットベースの言語検出テスト、スクリプトベースの言語検出テスト、および、ユーザ言語プロファイル言語検出テストのうちの少なくとも１つを含む、請求項１５に記載のシステム。
【請求項１７】
前記言語検出器モジュールは、前記サニタイズ済テキストメッセージ中の前記言語を識別するために、１つ以上の分類器を使用して前記スコアの第３のセットを処理することを含む動作を実行するように動作可能な分類器モジュールを含む、請求項１５に記載のシステム。
【請求項１８】
前記１つ以上の分類器は、教師あり学習モデル、部分教師あり学習モデル、教師なし学習モデルおよび補間のうちの少なくとも１つを含む、請求項１７に記載のシステム。
【請求項１９】
前記分類器モジュールは、前記サニタイズ済テキストメッセージが、識別された前記言語であるという指示を出力することを含む動作を実行するように動作可能であり、前記指示は信頼スコアを含む、請求項１７に記載のシステム。
【請求項２０】
物品であって、
命令を格納する一時的でないコンピュータ読取可能媒体を含み、前記命令は、１つ以上のコンピュータによって実行されると、前記コンピュータに、
テキストメッセージを取得することと、
サニタイズ済テキストメッセージを生成するよう、前記テキストメッセージから非言語文字を除去することと、
前記サニタイズ済テキストメッセージ中に存在するアルファベットおよびスクリプトのうちの少なくとも１つを検出することとを含む動作を実行させ、
前記検出することは、
（ｉ）各々が前記サニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのアルファベットを含む尤度を表わすスコアの第１のセットを決定するためにアルファベットベースの言語検出テストを行なうことと、
（ｉｉ）各々が前記サニタイズ済テキストメッセージが前記複数の異なる言語のうちの１つの言語についてのスクリプトを含む尤度を表わすスコアの第２のセットを決定するためにスクリプトベースの言語検出テストを行なうこととのうちの少なくとも１つを含んでおり、
前記命令はさらに、前記１つ以上のコンピュータによって実行されると、前記コンピュータに、
前記スコアの第１のセットと、前記スコアの第２のセットと、前記スコアの第１および第２のセットの組み合わせとのうちの少なくとも１つに基づき、前記サニタイズ済テキストメッセージ中の前記言語を識別することを含む動作を実行させる、物品。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
この出願は、２０１６年１０月３日に出願された米国特許出願番号第１５／２８３，６４６号の優先権および利益を主張し、米国特許出願番号第１５／２８３，６４６号は本願明細書において全文参照により援用される。
【背景技術】
【０００２】
背景
本開示は、言語検出に関し、特に、短いテキストメッセージ中の言語を検出するためのシステムおよび方法に関する。
【０００３】
一般に、言語検出または言語識別は、テキストの本体に存在する言語が当該テキストの内容に基づいて自動的に検出されるプロセスである。言語検出は、自動言語翻訳のコンテキストで有用であり、一般に、テキストメッセージの言語は、当該メッセージが異なる言語に正確に翻訳され得る前に、分かっていなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の言語検出は通常、多くの単語および文章の集合（すなわちドキュメントレベル）に対して実行されるが、特に困難なドメインは、メッセージがしばしば数単語（たとえば４語以下）のみを含み、それらの単語のいくつかまたは全部が非正式であり得、および／または、ミススペルされたものであり得るチャットテキストのドメインである。チャットテキストのドメインでは、情報が欠如していることと、そのようなメッセージに非正式なものが存在することとにより、既存の言語検出アプローチは不正確および／または遅いということが判明している。
【０００５】
概要
【課題を解決するための手段】
【０００６】
本願明細書において記載されるシステムおよび方法の実施形態は、たとえば、メッセージの内容、メッセージを生成するために使用されるキーボードに関する情報、および／または、メッセージを生成したユーザの言語プレファレンスに関する情報に基づきテキストメッセージ中の言語を検出するために使用される。以前の言語検出技術と比較すると、本願明細書において記載されるシステムおよび方法は一般に、特に（たとえば４語以下の）短いテキストメッセージについてより高速かつ正確である。
【０００７】
さまざまな例において、当該システムおよび方法は、テキストメッセージにおいて可能性のある言語に関連付けられる確率を決定するよう、複数の言語検出テストおよび分類器を使用する。各言語検出テストは、可能性のある言語に関連付けられる確率のセットまたはベクトルを出力し得る。分類器は、言語検出テストからの出力を組み合わせて、当該メッセージについて最も可能性の高い言語を決定し得る。当該メッセージのために選択される特定の言語検出テストおよび分類器は、予測精度、信頼スコア、および／または、当該メッセージについての言語ドメインに依存し得る。
【０００８】
本願明細書において記載されるシステムおよび方法のある例は、言語の最終決定を行うためにより集中した言語検出技術が実行され得るように、テキストメッセージ中の言語の初期分類を実行する。たとえば、システムおよび方法は、テキストメッセージ中の言語についてグループまたはカテゴリ（たとえばキリル言語またはラテン言語）を識別するためにテキストメッセージに対して初期言語検出テストを実行し得る。言語カテゴリがひとたび識別されると、当該言語カテゴリのために設計された言語検出技術が、メッセージ中の特定の言語を識別するために使用され得る。好ましい例では、不要な要素（たとえば絵文字または番号数字または文字）が、言語検出に先立ってテキストメッセージから除去され、これにより言語検出がより高速かつ正確になる。本願明細書において記載されるシステムおよび方法は一般的に、先行する言語検出アプローチよりも正確かつ効率的である。システムおよび方法は、本願明細書において記載される言語検出方法のうちのいずれか１つ以上を使用するように構成され得る。
【０００９】
１つの局面において、この開示の主題は、メッセージ中の言語を識別する、コンピュータによって実現される方法に関する。上記方法は、テキストメッセージを取得することと、サニタイズ済テキストメッセージを生成するよう、テキストメッセージから非言語文字を除去することと、サニタイズ済テキストメッセージ中に存在するアルファベットおよびスクリプトのうちの少なくとも１つを検出することとを含み、検出することは、（ｉ）各々がサニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのアルファベットを含む尤度を表わすスコアの第１のセットを決定するためにアルファベットベースの言語検出テストを行なうことと、（ｉｉ）各々がサニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのスクリプトを含む尤度を表わすスコアの第２のセットを決定するためにスクリプトベースの言語検出テストを行なうこととのうちの少なくとも１つを含む。上記方法はさらに、スコアの第１のセットと、スコアの第２のセットと、スコアの第１および第２のセットの組み合わせとのうちの少なくとも１つに基づき、サニタイズ済テキストメッセージ中の言語を識別することを含む。
【００１０】
ある実現例では、非言語文字は絵文字および／または数字を含む。組み合わせは、スコアの第１および第２のセットの間の補間を含み得る。いくつかの例では、サニタイズ済テキストメッセージ中の言語を識別することは、各々がサニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語を含む尤度を表わすスコアの第３のセットを生成するためにサニタイズ済テキストメッセージに対して言語検出テストを行なうことを含む。スコアの第１のセットと、スコアの第２のセットと、スコアの第１および第２のセットの組み合わせとのうちの少なくとも１つに基づき、言語検出テストは複数の言語検出テストから選択され得る。
【００１１】
ある場合では、言語検出テストは、言語検出方法および１つ以上の分類器を含む。言語検出方法は、たとえば、辞書ベースの言語検出テスト、ｎグラム言語検出テスト、アルファベットベースの言語検出テスト、スクリプトベースの言語検出テスト、ユーザ言語プロファイル言語検出テスト、または、その任意の組み合わせを含み得る。１つ以上の分類器はたとえば、教師あり学習モデル、部分教師あり学習モデル、教師なし学習モデル、補間、または、その任意の組み合わせを含み得る。さまざまな実現例では、上記方法は、サニタイズ済テキストメッセージ中の言語を識別するために、１つ以上の分類器を使用してスコアの第３のセットを処理することを含む。上記方法は、サニタイズ済テキストメッセージが、識別された言語であるという指示を１つ以上の分類器から出力することを含み得る。当該指示は信頼スコアを含み得る。
【００１２】
別の局面において、この開示の主題は、メッセージ中の言語を識別するための、コンピュータによって実現されるシステムに関する。上記システムは、サニタイザモジュールと、グルーパモジュールと、言語検出器モジュールとを含む。サニタイザモジュールは、テキストメッセージを取得するとともに、サニタイズ済テキストメッセージを生成するよう、テキストメッセージから非言語文字を除去する。グルーパモジュールは、サニタイズ済テキストメッセージ中に存在するアルファベットおよびスクリプトのうちの少なくとも１つを検出し、グルーパモジュールは、各々がサニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのアルファベットを含む尤度を表わすスコアの第１のセットを決定するためにアルファベットベースの言語検出テストを行なうことと、各々がサニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのスクリプトを含む尤度を表わすスコアの第２のセットを決定するためにスクリプトベースの言語検出テストを行なうこととのうちの少なくとも１つを含む動作を実行するように動作可能である。言語検出器モジュールは、スコアの第１のセットと、スコアの第２のセットと、スコアの第１および第２のセットの組み合わせとのうちの少なくとも１つに基づき、サニタイズ済テキストメッセージ中の言語を識別する。
【００１３】
さまざまな例では、非言語文字は絵文字および／または数字を含む。組み合わせは、スコアの第１および第２のセットの間の補間を含み得る。グルーパモジュールは、スコアの第１のセットと、スコアの第２のセットと、スコアの第１および第２のセットの組み合わせとのうちの少なくとも１つに基づき、複数の言語検出器モジュールから言語検出器モジュールを選択することを含む動作を実行するように動作可能であり得る。言語検出器モジュールは、言語検出方法モジュールを含み得る。言語検出方法モジュールは、各々がサニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語を含む尤度を表わすスコアの第３のセットを生成するためにサニタイズ済テキストメッセージに対して言語検出テストを行なうことを含む動作を実行するように動作可能であり得る。言語検出テストは、たとえば、辞書ベースの言語検出テスト、ｎグラム言語検出テスト、アルファベットベースの言語検出テスト、スクリプトベースの言語検出テスト、ユーザ言語プロファイル言語検出テスト、または、その任意の組み合わせを含み得る。
【００１４】
いくつかの実現例では、言語検出器モジュールは、サニタイズ済テキストメッセージ中の言語を識別するために、１つ以上の分類器を使用してスコアの第３のセットを処理することを含む動作を実行するように動作可能な分類器モジュールを含む。１つ以上の分類器はたとえば、教師あり学習モデル、部分教師あり学習モデル、教師なし学習モデル、補間、または、その任意の組み合わせを含み得る。分類器モジュールは、サニタイズ済テキストメッセージが識別された言語であるという指示を出力することを含む動作を実行するように動作可能であり得る。上記指示は、信頼スコアを含み得る。
【００１５】
別の局面において、この開示の主題は物品に関する。上記物品は、命令を格納する一時的でないコンピュータ読取可能媒体を含み、命令は、１つ以上のコンピュータによって実行されると、コンピュータに、テキストメッセージを取得することと、サニタイズ済テキストメッセージを生成するよう、テキストメッセージから非言語文字を除去することと、サニタイズ済テキストメッセージ中に存在するアルファベットおよびスクリプトのうちの少なくとも１つを検出することとを含む動作を実行させ、検出することは、（ｉ）各々がサニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのアルファベットを含む尤度を表わすスコアの第１のセットを決定するためにアルファベットベースの言語検出テストを行なうことと、（ｉｉ）各々がサニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのスクリプトを含む尤度を表わすスコアの第２のセットを決定するためにスクリプトベースの言語検出テストを行なうこととのうちの少なくとも１つを含む。上記動作はさらに、スコアの第１のセットと、スコアの第２のセットと、スコアの第１および第２のセットの組み合わせとのうちの少なくとも１つに基づき、サニタイズ済テキストメッセージ中の言語を識別することを含む。
【００１６】
この主題の所与の局面に関して記載される例の要素は、主題の別の局面のさまざまな例において使用され得る。たとえば、１つの独立項に従属する従属項の特徴は、他の独立項のいずれかの装置、システムおよび／または方法において使用され得るということが考えられる。
【図面の簡単な説明】
【００１７】
【図１Ａ】言語検出を実行するための例示的なシステムの図である。
【図１Ｂ】テキストメッセージ中の言語を検出する例示的な方法のフローチャートである。
【図２】テキストメッセージ中の言語を検出する例示的なｎグラム方法のフローチャートである。
【図３】テキストメッセージ中の言語を検出する例示的な辞書ベースの方法のフローチャートである。
【図４】テキストメッセージ中の言語を検出する例示的なアルファベットベースの方法のフローチャートである。
【図５】テキストメッセージ中の言語を検出する例示的なスクリプトベースの方法のフローチャートである。
【図６】テキストメッセージ中の言語を検出する例示的なユーザ言語プロファイル方法のフローチャートである。
【図７】例示的な言語検出モジュールの概略図である。
【図８】例示的な分類器モジュールの概略図である。
【図９】図７の言語検出モジュールおよび図８の分類器モジュールを使用して、テキストメッセージ中の言語を検出する例示的な方法のフローチャートである。
【図１０】テキストメッセージ中の言語を検出する例示的な方法のフローチャートである。
【図１１】テキストメッセージ中の言語を検出する例示的な方法のフローチャートである。
【図１２】テキストメッセージ中の言語を検出する例示的な方法のフローチャートである。
【図１３】テキストメッセージ中の言語を検出するための例示的なシステムの概略図である。
【図１４】テキストメッセージ中の言語を検出する例示的な方法のフローチャートである。
【図１５】テキストメッセージ中の言語を検出する例示的な方法のフローチャートである。
【発明を実施するための形態】
【００１８】
詳細な説明
一般に、本願明細書において記載される言語検出システムおよび言語検出方法は、メッセージについての言語情報（たとえばクライアントデバイスからのキーボード情報）が存在しないか、異常な形式か、または信頼できない場合に、テキストメッセージ中の言語を識別するために使用され得る。当該システムおよび方法は、テキストメッセージをある言語から別の言語に翻訳するために使用される言語翻訳方法の精度を改善する。言語翻訳は一般に、ソース言語が正確に識別されることを必要とする。そうでなければ、結果として得られる翻訳は不正確であり得る。
【００１９】
図１Ａは、テキストメッセージまたはオーディオメッセージのようなメッセージ中の言語を検出するための例示的なシステム１０を示す。サーバシステム１２は、メッセージ分析および言語検出機能を提供する。サーバシステム１２は、たとえば、１つ以上の地理的な位置における１つ以上のデータセンタ１４にて展開され得るソフトウェアコンポーネントおよびデータベースを含む。サーバシステム１２のソフトウェアコンポーネントは、検出モジュール１６、分類器モジュール１８、および、マネージャモジュール２０を含み得る。ソフトウェアコンポーネントは、同じまたは異なる個々のデータ処理装置上で実行され得るサブコンポーネントを含み得る。サーバシステム１２のデータベースは、訓練データ２２、辞書２４、アルファベット２６、スクリプト２８、および、ユーザプロファイル情報３０を含み得る。データベースは、１つ以上の物理的なストレージシステムに存在し得る。ソフトウェアコンポーネントおよびデータはさらに以下で説明される。
【００２０】
ユーザがサーバシステム１２へメッセージを提供することを可能にするよう、ウェブベースのアプリケーションのようなアプリケーションがエンドユーザアプリケーションとして提供され得る。エンドユーザアプリケーションは、パーソナルコンピュータ３４、スマートフォン３６、タブレットコンピュータ３８およびラップトップコンピュータ４０のようなクライアントデバイスのユーザによって、ネットワーク３２を通じてアクセスされ得る。他のクライアントデバイスも可能である。ユーザメッセージには、メッセージを作成するために使用されるキーボード、クライアントデバイスおよび／またはオペレーティングシステムに関する情報といった、メッセージを作成するために使用されるデバイスに関する情報が伴い得る。
【００２１】
図１Ａは、データベース（すなわち訓練データ２２、辞書２４、アルファベット２６、スクリプト２８およびユーザプロファイル情報３０）に接続されている分類器モジュール１８およびマネージャモジュール２０を示すが、分類器モジュール１８および／またはマネージャモジュール２０は必ずしも、データベースのうちのいくつかまたはすべてに接続されない。一般に、分類器モジュール１８は検出モジュール１６から入力を受け取り得、マネージャモジュール２０は分類器モジュール１８から入力を受け取り得る。他の入力は、分類器モジュール１８および／またはマネージャモジュール２０によって受け取られる必要はない。
【００２２】
図１Ｂは、メッセージ中の言語を検出するためにシステム１０を使用する例示的な方法１００を示す。方法１００は、ユーザによって生成されたテキストメッセージを受け取るまたは取得することにより開始する（ステップ１０２）。テキストメッセージは、各々がメッセージ中に存在する言語または複数の言語の指示を提供する１つ以上の言語検出方法（たとえば検出モジュール１６による）を使用して分析される（ステップ１０４）。その後、言語検出方法からの出力は、メッセージ中に存在する言語のさらに別の指示を提供する１つ以上の分類器（たとえば分類器モジュール１８による）を使用して組み合わされる（ステップ１０６）。１つ以上の分類器はたとえば、教師あり学習モデル、部分教師あり学習モデル、教師なし学習モデル、および／または、補間を含み得る。他の分類器も可能である。その後、１つ以上の分類器からの出力は、（たとえば、マネージャモジュール２０を使用して）メッセージ中の言語を決定する（ステップ１０８）よう使用される。
【００２３】
いくつかの実現例において、上記１つ以上の分類器からの言語指示は、計算された信頼スコアおよび／または言語ドメインに従ってマネージャモジュール２０によって選択され得る。たとえば、分類器は、言語予測に関連付けられる信頼度を示す信頼スコアを計算し得る。付加的または代替的には、ある分類器出力は、ユーザまたはメッセージに関連付けられる言語ドメインに従って選択され得る。たとえば、メッセージがコンピュータゲーミング環境から生じた場合、特定の分類器出力が、最も正確な言語予測を提供するものとして選択され得る。同様に、メッセージがスポーツ（たとえばスポーツイベントに関する）のコンテキストから生じた場合、異なる分類器出力が、スポーツ言語ドメインにより適切なものとして選択され得る。他の可能な言語ドメインは、たとえば、ニュース、国会議事録、政治、健康、旅行、ウェブページ、新聞記事、および、マイクロブログメッセージなどを含む。一般に、（たとえば分類器からの）ある言語検出方法または言語検出方法の組み合わせは、他の言語ドメインと比較すると、ある言語ドメインについてはより正確になる。いくつかの実現例では、当該ドメインは、メッセージにおけるドメインボキャブラリからの単語の存在に基づいて決定され得る。たとえば、コンピュータゲーミングについてのドメインボキャブラリは、ゲーマーによって使用される一般的な俗語を含み得る。
【００２４】
検出モジュール１６によって使用される言語検出方法は、たとえば、ｎグラム方法（たとえばバイトｎグラム方法）、辞書ベースの方法、アルファベットベースの方法、スクリプトベースの方法、および、ユーザ言語プロファイル方法を含み得る。他の言語検出方法も可能である。これらの言語検出方法の各々は、メッセージに存在する言語を検出するために使用され得る。各方法からの出力はたとえば、メッセージ中の可能性のある言語の各々に関連付けられる確率のセットまたはベクトルであり得る。いくつかの場合では、言語検出方法のうちの２つ以上が、パラレルコンピューティングを使用して同時に実行され得、これにより、計算時間を大幅に低減することができる。
【００２５】
１つの実現例では、バイトｎグラム方法が、言語を検出するために単語または文字のｎグラムの代わりに、バイトｎグラムを使用する。バイトｎグラム方法は好ましくは、多項イベントモデルを有するナイーブベイズ分類器（naive Bayes classifier）を使用して、バイトｎグラムの混合（たとえば１≦ｎ≦４）に対して訓練される。当該モデルは好ましくは、新聞記事、オンラインゲーム、ウェブページおよびマイクロブログメッセージを含むドメインの多様なセットに亘ってモデルのデフォルト構成が正確であるように、異なる言語ドメインからのデータに一般化する。言語識別タスクに関する情報は、さまざまなドメインから統合され得る。
【００２６】
高精度を達成するタスクは、インドメイン訓練データ（in-domain training data）が利用可能である従来のテキストカテゴリ分類セッティングにおける言語識別の場合は相対的に容易であり得る。このタスクは、別個の言語ドメインからのデータを分類またはカテゴライズするために１つの言語ドメインのための学習済モデルパラメータを使用することを試みる場合、より困難になり得る。この問題は、言語識別のタスクに関連する重要な特徴に注目することにより対処され得る。これはたとえば、情報ゲイン（information gain）と呼ばれる概念に基づき得る。情報ゲインは、分割基準として決定木のために元々導入され、その後テキストカテゴリ分類において特徴を選択するのに有用であると分かったものである。ある実現例では、ドメインおよび言語に対する情報ゲインにおける差を表わす検出スコアが計算され得る。高い検出スコアを有する特徴は、ドメインに関する情報を提供することなく言語に関する情報を提供し得る。単純さのために、情報ゲインが計算される前に、ターム頻度（term-frequency）に基づく特徴選択によって、候補の特徴セットが枝刈りされ得る。
【００２７】
図２を参照して、例示的なバイトｎグラム方法２００は、訓練データ２２を使用して当該方法を訓練することにより開始する。たとえば、当該方法は、多項イベントモデルを有するナイーブベイズ分類器を使用して、バイトｎグラムの混合に対して訓練され得る。訓練データ２２は好ましくは、多くの様々な言語について収集され（ステップ２０２）、各言語について利用可能なデータ量が均一になるように調節される。訓練データ２２の小さい部分が別途テストセットとしてセットされる（ステップ２０４）。訓練データ２２がひとたび選択されると、バイトｎグラムモデルは、適切なスムージングおよびバックオフ技術により、訓練データ２２上で訓練される（ステップ２０６）。モデルへの入力特徴は各入力文からのバイトストリームであり、また、当該モデルは、ソース言語ラベルがこれらの文について既知であるので、所与の言語に典型的なバイトシーケンスを学習するためにそのパラメータを調節する。その後、最初は分離されたテストセットが、訓練されたモデルに基づいて言語ラベルを予測する（ステップ２０８）ために使用される。予測の精度は、このバイトｎグラム言語識別システムの性能を与える。いくつかの場合、各言語ドメインのために、上記ドメインについて多数の言語に亘ってデータを収集することによってそのようなバイトｎグラムシステムを訓練するのは難しい。この困難さは、ドメイン当たりの十分なデータの欠如から発生する。従って、これらのバイトｎグラムシステムは典型的に、任意の特定のドメインではなく一般的なドメインに供するように訓練される。訓練済モデルは、中間マシンパラメータと共にプログラムへとコンパイルされ得る（ステップ２１０）。当該プログラムは、汎用の言語識別システムとして機能し得る。
【００２８】
一般に、辞書ベースの言語検出方法は、辞書における単語または当該言語に関連付けられる他の単語リストをルックアップすることによって、各言語に属するトークンまたは単語の数をカウントする。メッセージ中に最も多くの単語を有する言語がベストの言語として選択される。複数のベストの言語が存在する場合には、これらのベストの言語のうちより頻繁またはより一般的に使用されているものが選択され得る。言語辞書は辞書データベース２４に格納され得る。
【００２９】
図３は、例示的な辞書ベースの言語検出方法３００のフローチャートである。テキストメッセージが提供され（ステップ３０２）、当該テキストメッセージについての可能性のある言語のセットがたとえば検出モジュール１６を使用して識別される（ステップ３０４）。その後、第１の可能性のある言語が当該セットから選択される（ステップ３０６）。可能性のある言語のための辞書に存在するテキストメッセージ中の単語がカウントされる（ステップ３０８）。当該セットからのさらに別の可能性のある言語がまだ考慮されていない場合（ステップ３１０）、新しい可能性のある言語が選択され（ステップ３１２）、ステップ３０８が繰り返される。当該セットからのすべての可能性のある言語がひとたび考慮されると、テキストメッセージ中に最も多くの単語を有する言語が、メッセージ中の言語であると識別され得る（ステップ３１４）。代替的または付加的には、当該方法は、上記セットにおける各言語について、言語がメッセージに存在する尤度を計算するために使用され得る。たとえば、辞書ベースの方法からの出力は、セット中の各言語についての確率のベクトルであり得る。
【００３０】
特に短文の場合に辞書ベースの言語検出方法の精度を保証するために、正式な単語に加えて、非正式な単語またはチャット単語（たとえば省略形、頭文字、俗語および不敬語）を含む辞書を使用することが好ましい。非正式な単語は、ショートテキスト通信およびチャットルームで一般的に使用されている。新しい非正式な単語が現れて使用されるので、辞書は非正式な単語を進行ベースで含めるように増補されるのが好ましい。
【００３１】
アルファベットベースの方法は一般に、各言語のアルファベットについての文字カウントに基づいており、また、多くの言語がユニークなアルファベットまたは文字の異なるセットを有するという観察に依拠する。たとえばロシア語、英語、韓国語、および日本語の各々は、異なるアルファベットを使用する。アルファベットベースの方法は、いくつかの言語（たとえば、ラテン語のような、同様のアルファベットを使用する言語）を正確に識別することが不可能であり得るが、アルファベットベースの方法は概してある言語を迅速に検出し得る。いくつかの場合、本願明細書において議論されるように、アルファベットベースの方法を（たとえば分類器を使用する）１つ以上の他の言語検出方法と組み合わせて使用することが好ましい。言語アルファベットは、アルファベットデータベース２６に格納され得る。
【００３２】
図４は、例示的なアルファベットベースの言語検出方法４００のフローチャートである。テキストメッセージが提供され（ステップ４０２）、テキストメッセージについて可能性のある言語のセットがたとえば検出モジュール１６を使用して識別される（ステップ４０４）。その後、第１の可能性のある言語が当該セットから選択される（ステップ４０６）。当該可能性のある言語についてのアルファベットに存在する、テキストメッセージ中の文字がカウントされる（ステップ４０８）。当該セットからの付加的な可能性のある言語がまだ考慮されていない場合（ステップ４１０）、新しい可能性のある言語が選択され（ステップ４１２）、ステップ４０８が繰り返される。当該セットからのすべての可能性のある言語がひとたび考慮されると、テキストメッセージ中の最も多い文字を有する言語がメッセージ中の言語として識別され得る（ステップ４１４）。代替的または付加的には、アルファベットベースの方法は、上記セットにおける各言語について、言語がメッセージに存在する尤度を計算するために使用され得る。たとえば、アルファベットベースの方法からの出力は、上記セットにおける各言語についての確率のベクトルであり得る。
【００３３】
一般に、スクリプトベースの言語検出方法は、メッセージ中に存在する各可能性のあるスクリプト（たとえばラテンスクリプト、ＣＪＫスクリプトなど）についての文字カウントを決定する。スクリプトベースの方法は、たとえば中国語および英語といったように、異なる言語が異なるスクリプトを使用し得るという観察に依拠する。当該方法は好ましくは、スクリプトを使用する言語のリストにスクリプトをマッピングするマッピングを使用する。たとえば、マッピングは、メッセージ中に存在する文字または記号についてのＵＮＩＣＯＤＥ値を考慮し得、これらのＵＮＩＣＯＤＥ値は、当該メッセージについての対応する言語または可能性のある言語のセットにマッピングされ得る。言語スクリプトおよびＵＮＩＣＯＤＥ値または範囲は、スクリプトデータベース２８に格納され得る。
【００３４】
図５を参照して、例示的なスクリプトベースの方法５００において、テキストメッセージが提供され（ステップ５０２）、メッセージ中に存在するスクリプトが、たとえば検出モジュール１６を使用して識別される（ステップ５０４）。その後、各スクリプトに該当する文字の数がカウントされる（ステップ５０６）。最も多くの数の文字を有するスクリプトが、ベストのスクリプトであると考えられ（ステップ５０８）、当該ベストのスクリプトに対応する言語が識別される（ステップ５１０）。当該ベストのスクリプトが１つの言語にのみ対応する場合、その言語がベストの言語であると考えられ得る。別の態様では、ベストのスクリプトが１つより多い言語に対応する場合、さらなる検出を行うよう付加的な言語検出方法が使用され得る。いくつかの実現例では、スクリプトベースの方法からの出力は、メッセージ中の各可能性のある言語についての（たとえばベクトル形式での）確率のセットである。
【００３５】
ユーザ言語プロファイルベースの方法は、さまざまなユーザによって送信された履歴のメッセージを格納するユーザプロファイル情報データベース３０を使用する。これらの格納されたメッセージの言語は、各ユーザによって使用される言語を識別するために、たとえば、本願明細書において記載される１つ以上の他の言語検出方法（たとえばバイトｎグラム方法）を使用して検出される。たとえば、あるユーザの以前のメッセージのすべてがスペイン語である場合、そのユーザについての言語プロファイルは、当該ユーザの好む言語がスペイン語であることを示し得る。同様に、あるユーザの以前のメッセージが異なる言語の混合である場合、当該ユーザについての言語プロファイルは、異なる言語に関連付けられる確率を示し得る（たとえば英語が８０％、フランス語が１５％、スペイン語が５％）。一般に、ユーザ言語プロファイルベースの方法は、正確な言語決定を行うための十分な情報がしばしば存在しない非常に短いメッセージに関連付けられる言語検出問題に対応する。そのような場合において、ユーザが以前に使用した言語を使用し続けるだろうと仮定することによって、ユーザの言語プレファレンスがユーザのメッセージ中の言語を予測するために使用され得る。
【００３６】
図６を参照して、例示的なユーザ言語プロファイル検出方法６００は、ユーザの以前のメッセージを格納し（ステップ６０２）、格納されたメッセージ中に存在する言語を検出する（ステップ６０４）ことによって開始する。異なる言語がユーザのメッセージに現われる頻度が決定され（ステップ６０６）、そのような言語についての使用確率が出力される（ステップ６０８）。
【００３７】
図７を参照して、さまざまな言語検出方法が検出モジュール１６に組み込まれ得る。テキストメッセージが検出モジュール１６に入力され得、言語検出方法の１つ以上が、メッセージ中の言語を識別し得る。たとえば、各言語検出方法は、確率のベクトルを提供し得る。当該ベクトル中の各確率は、メッセージ中の可能性のある言語に関連付けられており、メッセージが所与の言語である尤度を表わす。使用される異なる方法およびメッセージにおいて利用可能な情報により、各言語検出方法からの確率は一貫していない場合があり得る。検出モジュール１６は、たとえば、ｎグラム検出方法（たとえばバイトｎグラム検出方法２００）を実行するためのｎグラムモジュール７０２と、辞書ベースの方法３００を実行するための辞書ベースモジュール７０４と、アルファベットベースの方法４００を実行するためのアルファベットベースモジュール７０６と、スクリプトベースの方法５００を実行するためのスクリプトベースモジュール７０８と、ユーザ言語プロファイル方法６００を実行するためのユーザ言語プロファイルモジュール７１０とを含み得るか、または、利用し得る。付加的または代替的な言語検出方法が、所望のように、検出モジュール１６に組み込まれ得る。いくつかの公知の方法はたとえば、単語レベルのｎグラム、マルコフモデルおよび予測モデリング技術を使用することを含む。
【００３８】
検出モジュール１６におけるさまざまな言語検出方法からの出力は、分類器モジュール１８を使用して組み合わせられ得る。図８を参照して、分類器モジュール１８は、補間モジュール８０２、サポートベクトルマシン（ＳＶＭ： support vector machines）モジュール８０４および線形ＳＶＭモジュール８０６を含み得る。
【００３９】
補間モジュール８０２は、２つ以上の言語検出方法からの結果の線形補間を実行するよう使用される。例示目的のために、テキストメッセージの言語は、バイトｎグラム方法および辞書ベースの方法からの結果同士の間を補間することにより決定され得る。「lol gtg」というチャットメッセージの場合、バイトｎグラム方法は、英語の尤度が０．３であり、フランス語の尤度が０．４であり、ポーランド語の尤度が０．３であると決定し得る（たとえば、バイトｎグラム方法からの出力は、｛ｅｎ：０．３，ｆｒ：０．４，ｐｌ：０．３｝）であり得る）。辞書ベースの方法は、英語の尤度が０．１であり、フランス語の尤度が０．２であり、ポーランド語の尤度は０．７であると決定し得る（たとえば、出力は｛ｅｎ：０．１，ｆｒ：０．２，ｐｌ：０．７｝であり得る）。これらの２つの方法の結果同士の間を補間するために、バイトｎグラム方法からの出力は第１の重みを乗算され、辞書ベースの方法からの出力は第２の重みを乗算される。第１および第２の重みは足して１になる。その後、２つの方法からの加重された出力が、一緒に加算される。たとえば、バイトｎグラムの結果に０．６の重みが与えられる場合、辞書ベースの結果には０．４の重みが与えられ、これら２つの方法同士の間の補間は、｛ｅｎ：０．３，ｆｒ：０．４，ｐｌ：０．３｝×０．６＋｛ｅｎ：０．１，ｆｒ：０．２，ｐｌ：０．７｝×０．４＝｛ｅｎ：０．２２，ｆｒ：０．３２，ｐｌ：０．４６｝となる。他の重み付けも可能である。
【００４０】
一般に、２つ以上の値の間を補間するための最適な重みは、試行錯誤によって数的に決定され得る。メッセージの所与のセットについての重みのベストのセットを識別するために、異なる重みが試みられ得る。いくつかの場合では、重みは、メッセージ中の単語または文字の数の関数であり得る。代替的または付加的には、重みは、メッセージの言語ドメインに依存し得る。たとえば、ゲーミング環境についての最適な重みはスポーツ環境についての最適な重みと異なり得る。バイトｎグラム方法および辞書ベースの方法の組み合わせの場合、バイトｎグラム方法に対する０．１の重みと、辞書ベースの方法に対する０．９の重みとを用いて、良好な結果が得られ得る。
【００４１】
ＳＶＭモジュール８０４は、言語データを分析して言語パターンを認識する教師あり学習モデルであり得るか、または、当該教師あり学習モデルを含み得る。たとえば、ＳＶＭモジュール８０４は、マルチクラスＳＶＭ分類器であり得る。英語のＳＶＭ分類器の場合、特徴ベクトルは上記の２つの区分（distribution）の連結であり得る（すなわち｛ｅｎ：０．３，ｆｒ：０．４，ｐｌ：０．３，ｅｎ：０．１，ｆｒ：０．２，ｐｌ：０．７｝）。ＳＶＭ分類器は好ましくは、ラベル付けされた訓練データで訓練される。訓練済モデルは、入力のための予測器として機能する。言語検出の場合に選択される特徴は、たとえばバイト、単語または句のシーケンスであり得る。入力訓練ベクトルは、多次元空間へマッピングされ得る。次いで、ＳＶＭアルゴリズムは、これらの次元間の最適な分離超平面を識別するためにカーネルを使用し得、これにより、（この場合には）言語を予測する判別能力がアルゴリズムに与えられることになる。カーネルはたとえば、線形カーネル、多項式カーネル、または、放射基底関数（ＲＢＦ：radial basis function）カーネルであり得るが、他の好適なカーネルも可能である。ＳＶＭ分類器のための好ましいカーネルはＲＢＦカーネルである。訓練データを使用してＳＶＭ分類器を訓練した後、分類器はすべての可能性のある言語のうちのベストの言語を出力するよう使用され得る。
【００４２】
訓練データは、たとえば、異なる言語検出方法からの出力ベクトルであり得るか、または、当該出力ベクトルを含み得、たとえば異なるメッセージ長さ、言語ドメインおよび／または言語を有する多数のメッセージの場合、正しい言語の指示であり得るか、または当該指示を含み得る。訓練データは、各メッセージ中の言語が既知である多数のメッセージを含み得る。
【００４３】
線形ＳＶＭモジュール８０６は、大きなスケールの線形分類器であり得るか、または、当該線形分類器を含み得る。線形カーネルを有するＳＶＭ分類器は、線形回帰のような他の線形分類器よりも良好に動作し得る。線形ＳＶＭモジュール８０６は、カーネルレベルでＳＶＭモジュール８０４と異なる。多項式モデルの方が線形モデルよりも良好に機能する場合があり、その逆の場合もある。最適なカーネルは、メッセージデータの言語ドメインおよび／またはデータの性質に依存し得る。
【００４４】
本願明細書において記載されるシステムおよび方法によって使用される他の可能性のある分類器は、たとえば、決定木学習、相関ルール学習、人工ニューラルネットワーク、帰納的論理プログラミング、ランダムフォレスト、クラスタリング、ベイジアンネットワーク、強化学習、表示学習、類似度学習および距離学習（similarity and metric learning）、ならびに、スパース辞書学習（sparse dictionary learning）を含む。これらの分類器の１つ以上または他の分類器が、分類器モジュール１８に統合され得るか、および／または、分類器モジュール１８の部分を形成し得る。
【００４５】
図９を参照して、例示的な方法９００は、メッセージ中の言語を検出するために検出モジュール１６、分類器モジュール１８およびマネージャモジュール２０を使用する。メッセージは検出モジュール１６に提供または送達される（ステップ９０２）。メッセージには、メッセージに関する情報および／またはメッセージを生成したユーザに関する情報が伴い得る。当該情報は、たとえば、ユーザのための識別番号、メッセージを生成するためにユーザによって使用されるキーボードに関する情報、および／または、メッセージを生成するためにユーザによって使用されるソフトウェアを制御するオペレーティングシステムに関する情報を含み得る。たとえば、メッセージには、ユーザがメッセージを生成するためにフランス語のキーボードを使用し、ユーザのオペレーティングシステムは英語であることを示すデータが伴い得る。
【００４６】
検出モジュール１６では、１つ以上の言語検出方法がメッセージの言語を検出するために使用される（ステップ９０４）。検出モジュール１６によって使用される各方法は、メッセージ中に存在する言語に関する予測を出力し得る。予測は、メッセージ中に存在し得る各可能性のある言語についての確率を含むベクトルの形態であり得る。
【００４７】
その後、検出モジュール１６からの出力は分類器モジュール１８に送達され、２つ以上の言語検出方法からの結果が組み合わせられ得る（ステップ９０６）。言語検出方法からの結果のさまざまな組み合わせが得られ得る。一例では、バイトｎグラム方法および辞書ベースの方法からの結果は、補間によって分類器モジュール１８において組み合わされる。別の例では、ＳＶＭの組み合わせまたは分類が、バイトｎグラム方法、辞書ベースの方法、アルファベット方法およびユーザプロファイル方法からの結果に対して実行される。代替的または付加的には、組み合わせは、スクリプトベースの方法からの結果を含み得るか、または、考慮し得る。さらに別の例は、バイトｎグラム方法、言語プロファィル方法および辞書方法の大きな線形結合を含む。しかしながら、一般には、上記言語検出方法のうちのいずれか２つ以上からの結果が分類器モジュール１８において組み合わされ得る。
【００４８】
方法９００は、マネージャモジュール２０を使用して特定の分類器からの出力を選択する（ステップ９０８）。当該出力はたとえば、分類器によって計算される信頼スコア、予期される言語検出精度、および／または、メッセージについての言語ドメインに基づいて選択され得る。次いで、選択された分類器出力からベストの言語が選択される（ステップ９１０）。
【００４９】
いくつかの場合では、本願明細書において記載されるシステムおよび方法は、メッセージの長さに従って言語検出方法を選択する。たとえば、図１０を参照して、方法１０００は、メッセージを生成するために使用されるキーボードの言語に関する情報を含み得るメッセージを受け取るかまたは提供することを含む（ステップ１００２）。メッセージがしきい値長さ（任意の好適なしきい値長さが可能であるが、たとえば２５バイトまたは２５文字）より大きい場合（ステップ１００４）、バイトｎグラム方法（または他の方法もしくは方法の組み合わせ）を使用して言語が検出され得る（ステップ１００６）。その後、バイトｎグラム方法からの結果に基づいてメッセージの言語が選択され得る（ステップ１００８）。別の態様では、メッセージがしきい値長さ以下である場合、システムは、キーボードの言語が利用可能かどうか決定し得る（ステップ１０１０）。キーボードの言語が利用可能な場合、メッセージの言語はキーボードの言語と同じであるように選択され得る（ステップ１０１２）。代替的には、キーボードの言語が利用可能でない場合、方法１０００は再びメッセージの長さを考慮し得る。たとえば、メッセージの長さが第２のしきい値（任意の好適な第２のしきい値が可能であるが、たとえば４バイトまたは４文字）未満である場合（ステップ１０１４）、辞書ベースの方法を使用して言語が検出（ステップ１０１６）および選択され得る。別の態様では、メッセージの長さが第２のしきい値より大きい場合、メッセージ中の言語を検出するために、バイトｎグラム方法（または他の方法もしくは方法の組み合わせ）が使用され得る（ステップ１０１８）。バイトｎグラム方法および辞書ベースの方法からの結果が（たとえば補間器または他の分類器を使用して）組み合わされ得、当該組み合わせに基づいてメッセージの言語が決定され得る（ステップ１０２０）。
【００５０】
図１１は、テキストメッセージ中の言語を識別する例示的な方法１１００である。ユーザのクライアントデバイス上で生成されたテキストメッセージが、受け取られるかまたは提供される（ステップ１１０２）。アルファベットベースの方法および／またはスクリプトベースの方法は、テキストメッセージに関連付けられるアルファベットおよび／またはスクリプトを決定するために使用される（ステップ１１０４）。アルファベットおよび／またはスクリプトに関連付けられる候補の言語が識別される。候補の言語がユニークなアルファベットおよび／またはスクリプトを有する言語（たとえばロシア語、アラビア語、ヘブライ語、ギリシャ語、中国語、台湾語、日本語または韓国語など）である場合（ステップ１１０６）、当該候補の言語はテキストメッセージの言語となるように決定される（ステップ１１０８）。
【００５１】
別の態様では、候補の言語がユニークなアルファベットおよび／またはスクリプトを有する言語でない場合、テキストメッセージの長さが評価される。メッセージの長さがしきい値長さ（任意の好適なしきい値長さが可能であるが、たとえば４バイトまたは４文字）未満である場合であって、テキストメッセージがクライアントデバイス（ステップ１１１０）によって使用されるキーボードの言語を含むかまたはキーボードの言語を伴っている場合、メッセージの言語はキーボードの言語となるように選択される（ステップ１１１２）。
【００５２】
代替的には、メッセージの長さがしきい値長さより大きいかまたはキーボードの言語が利用可能でない場合、メッセージは、ｎグラム方法（たとえばバイトｎグラム方法）で処理されて、当該テキストメッセージについて可能性のある言語の第１のセットを識別する（ステップ１１１４）。さらに、メッセージは、辞書ベースの方法で処理され、当該テキストメッセージについて可能性のある言語の第２のセットを識別する（ステップ１１１６）。ユーザ言語プロファイルがユーザについて存在する場合（ステップ１１１８）、ユーザ言語プロファイルが取得され（ステップ１１２０）、（たとえばＳＶＭ分類器または大きな線形分類器を使用して）可能性のある言語の第１のセットおよび可能性のある言語の第２のセットと組み合わされ、これにより可能性のある言語の第１の組み合わせが得られる（ステップ１１２２）。その後、可能性のある言語の第１の組み合わせに基づいてテキストメッセージの言語が選択される（ステップ１１２４）。別の態様では、ユーザ言語プロファイルが利用可能でない場合、可能性のある言語の第１のセットおよび可能性のある言語の第２のセットが（たとえば線形補間器または他の分類器を使用して）組み合わされ、これにより可能性のある言語の第２の組み合わせが得られる（ステップ１１２６）。最後に、可能性のある言語の第２の組み合わせに基づいて、テキストメッセージの言語が選択される（ステップ１１２８）。
【００５３】
いくつかの場合では、言語検出は、２ステップ以上で複数の言語検出方法からの出力を組み合わせることにより実行される。たとえば、第１のステップは、たとえば中国語（ｃｎ）、日本語（ｊａ）、韓国語（ｋｏ）、ロシア語（ｒｕ）、ヘブライ語（ｈｅ）、ギリシャ語（ｅｌ）およびアラビア語（ａｒ）といった、ユニークなアルファベットまたはスクリプトを使用する特別な言語を検出するようアルファベット−スクリプトベースの方法を使用し得る。アルファベット−スクリプトベースの方法はたとえば、アルファベットベースの方法およびスクリプトベースの方法の一方または両方を使用することを指す。必要ならば、第２のステップは、メッセージにおける他の言語（たとえばラテン語）を検出するよう、（たとえば分類器からの）複数の検出方法（たとえばバイトｎグラム方法、ユーザ言語プロファイルベースの方法および辞書ベースの方法）の組み合わせを使用し得る。
【００５４】
ある例では、言語検出のために提供または受け取られるメッセージは、言語プレファレンスにかかわらず、任意の特定の言語に特有でなくおよび／または如何なるユーザにも認識可能なある数字、文字または画像（たとえばエモティコンまたは絵文字）を含む。本願明細書において記載されるシステムおよび方法は、言語検出を実行する際にそのような文字または画像を無視し得るとともに、そのような文字または画像のみを含んでいるメッセージを無視し得る。代替的または付加的には、システムおよび方法は、言語検出を実行する前に、メッセージからそのような文字または画像を除去し得る。メッセージから不要な文字または画像を除去するプロセスは、本願明細書において、「メッセージをサニタイズする」と称され得る。当該サニタイジングプロセスによって、検出時間がより高速化され得、および／または、言語検出精度が改善され得る。
【００５５】
図１２は、メッセージの言語を検出するための例示的な方法１２００のフローチャートである。方法は、所与の入力メッセージ１２０４について、最も可能性があるかまたはベストの言語１２０２を識別するよう、検出モジュール１６、分類器モジュール１８およびマネージャモジュール２０を使用する。入力メッセージ１２０４には、ユーザに関する情報またはメッセージを生成するのに使用されたシステムに関する情報が伴われ得る。たとえば、入力メッセージ１２０４には、ユーザ識別番号（または他のユーザ識別子）、メッセージを生成するために使用されるキーボード（たとえばキーボードの言語）に関する情報、および／または、メッセージを生成するために使用されるオペレーティングシステム（たとえばオペレーティングシステムの言語）に関する情報が伴い得る。
【００５６】
示される例示的な方法１２００では、検出モジュール１６は１０個の異なる言語検出方法を含む。検出モジュール１６における言語検出方法のうちの３つは、バイトｎグラムＡ１２０６、バイトｎグラムＢ１２０８およびバイトｎグラムＣ１２１０であり、それらはすべてバイトｎグラム方法であり、言語の異なるセットまたは数を検出するように構成され得る。たとえば、バイトｎグラムＡ１２０６は９７言語を検出するように構成され得、バイトｎグラムＢ１２０８は２７言語を検出するように構成され得、バイトｎグラムＣ１２１０は２０言語を検出するように構成され得る。検出モジュール１６における言語検出方法のうちの２つは、辞書Ａ１２１２および辞書Ｂ１２１４であり、それらは両方とも辞書ベースの方法であり、言語の異なるセットまたは数を検出するように構成され得る。たとえば、辞書Ａ１２１２は９言語を検出するように構成され得、辞書Ｂ１２１４は１０言語を検出するように構成され得る。検出モジュール１６における言語検出方法のうちの２つは、言語プロファイルＡ１２１６および言語プロファイルＢ１２１８であり、それらはユーザ言語プロファイル方法であり、言語の異なるセットまたは数を検出するように構成され得る。たとえば、言語プロファイルＡ１２１６は２０言語を検出するように構成され得、言語プロファイルＢ１２１８は２７言語を検出するように構成され得る。検出モジュール１６における言語検出方法のうちの２つは、アルファベットＡ１２２０およびアルファベットＢ１２２２であり、それらはアルファベットベースの方法であり、言語の異なるセットまたは数を検出するように構成され得る。たとえば、アルファベットＡ１２２０は２０言語を検出するように構成され得、アルファベットＢ１２２２は２７言語を検出するように構成され得る。検出モジュール１６はさらにスクリプトベースの言語検出方法１２２４を含む。
【００５７】
検出モジュール１６における異なる言語検出方法からの出力は、分類器モジュール１８によって組み合わせられ処理される。たとえば、補間分類器１２２６は、バイトｎグラムＢ１２０８および辞書Ｂ１２１４からの出力を組み合わせる。補間のための重みはたとえば、バイトｎグラムＢ１２０８については０．１であり、辞書Ｂ１２１４については０．９である。分類器モジュール１８はさらに、バイトｎグラムＣ１２１０、辞書Ｂ１２１４、言語プロファイルＢ１２１８およびアルファベットＢ１２２２からの出力を組み合わせるＳＶＭ分類器１２２８を使用し得る。分類器モジュール１８はさらに、スクリプトベースの方法１２２４の第１の組み合わせ１２３０と、バイトｎグラムＣ１２１０、辞書Ａ１２１２、言語プロファイルＡ１２１６、およびアルファベットＡ１２２０のＳＶＭ分類器組み合わせとを使用し得る。さらに、分類器モジュール１８は、スクリプトベースの方法１２２４の第２の組み合わせ１２３２と、バイトｎグラムＣ１２１０、辞書Ａ１２１２、および言語プロファイルＡ１２１６の線形ＳＶＭ分類器組み合わせとを使用し得る。図１２は、分類器モジュール１８において使用される特定言語検出テスト、分類器および検出テスト出力の組み合わせを示しているが、他の言語検出テスト、分類器および／または組み合わせが使用され得る。
【００５８】
第１の組み合わせ１２３０および第２の組み合わせ１２３２の両方について、スクリプトベースの方法１２２４および分類器が階層アプローチ（tiered approach）で使用され得る。たとえば、スクリプトベースの方法１２２４は、ユニークなスクリプトを有する言語を迅速に識別するために使用され得る。そのような言語がメッセージ１２０４において識別される場合、第１の組み合わせ１２３０におけるＳＶＭ分類器の使用または第２の組み合わせにおける線形ＳＶＭ分類器の使用が必要ではない場合があり得る。
【００５９】
一般に、マネージャモジュール２０は、メッセージ１２０４中の言語を識別するために、特定の言語検出方法、分類器、および／または、検出方法出力の組み合わせを選択し得る。マネージャモジュール２０は、言語ドメインに従ってまたはメッセージについて予期される言語に従って選択を行い得る。マネージャモジュール２０は、分類器によって決定される信頼スコアに従って特定の分類器を選択し得る。たとえば、マネージャモジュール２０は、その予測において最も信頼性のある分類器からの出力を選択し得る。
【００６０】
ある実現例では、本願明細書において記載されるシステムおよび方法は、言語検出を複数のユーザへのサービスとして利用可能にするのに好適である。そのようなサービスは、システムおよび方法が言語を識別する速度と、多様なクライアントからのサービス要求に基づいてランタイムで複数の識別技術を扱うするシステムおよび方法の能力とによって可能になるまたは向上される。
【００６１】
図１３を参照して、ある例において、言語検出システム１３００は、テキストメッセージ１３０２を取得または受け取り、テキストメッセージ１３０２中に存在する言語を識別するために、サニタイザモジュール１３０４、グルーパモジュール１３０６、および、１つ以上の言語検出器モジュールを使用する。一般に、サニタイザモジュール１３０４は、テキストメッセージ１３０２からある文字または他の不要な要素を削除することにより、言語検出のためのテキストメッセージ１３０２を用意する。たとえば、サニタイザモジュール１３０４は、１つ以上の数字（たとえば「１」、「３」、「１５」、「２４９」など）、１以上の絵文字（たとえば、画像および／または「：−Ｄ」もしくは「：−」といった文字の組み合わせの形態にある）、ならびに／または、言語検出に有用ではない場合があり得る１つ以上の他の非言語文字もしくは要素を除去し得る。当該１つ以上の他の非言語文字もしくは要素の例としては、たとえば、ある句読点（たとえばピリオドもしくはコンマ）、余分なスペース、および／または、キャリッジリターンがある。代替的な例において、不要な要素はテキストメッセージ１３０２から除去されないが、その後の言語検出の間に単に無視または回避される。そのような場合において、サニタイザモジュール１３０４は、不要な要素にフラグを立てるかまたは識別するよう使用され得る。以下の段落における「テキストメッセージ１３０２」への参照はたとえば、不要な要素が除去または無視されたテキストメッセージをカバーするように意図される。本願明細書において、さまざまな例では、不要な要素は「非言語文字」と称される。
【００６２】
一般に、グルーパモジュール１３０６は、テキストメッセージ１３０２における言語の初期分類を実行するために使用され、テキストメッセージ１３０２中の言語の最終決定を行うよう、当該初期分類に基づいて１つ以上のその後の言語検出方法を選択する。好ましい例では、グルーパモジュール１３０６は、テキストメッセージ１３０２中に存在するアルファベットおよび／またはスクリプトを検出することにより初期分類を実行する。アルファベットおよび／またはスクリプトは、たとえば、本願明細書において記載されるアルファベットベースの方法および／またはスクリプトベースの方法を使用して検出され得る。いくつかの場合では、アルファベットベースの方法は、テキストメッセージ１３０２についてのスコアの第１のセットを決定し得る。各スコアは、アルファベットが複数の異なる言語のうちの１つの言語についてのものである確率または尤度を表わす。グルーパモジュール１３０６は、スコアの第１のセットからの最も高いスコアに基づいてテキストメッセージ１３０２中のアルファベットを検出し得る。同様に、スクリプトベースの方法は、テキストメッセージ１３０２についてのスコアの第２のセットを決定し得る。各スコアは、スクリプトが複数の異なる言語のうちの１つの言語についてのものである確率または尤度を表わす。グルーパモジュール１３０６は、スコアの第２のセットからの最も高いスコアに基づいてテキストメッセージ１３０２中のスクリプトを検出し得る。代替的または付加的には、グルーパモジュール１３０６は、テキストメッセージ１３０２中のアルファベットおよび／またはスクリプトを検出するよう、（たとえば補間器または他の分類器を使用して）アルファベットベースの方法およびスクリプトベースの方法からの結果またはスコアを組み合わせ得る。アルファベットおよび／またはスクリプトがひとたび検出されると、グルーパモジュール１３０６は、本願明細書において以下に記載されるように、テキストメッセージ１３０２中の言語の最終決定を行うために使用する言語検出器モジュールを選択する。グルーパモジュール１３０６は、アルファベットベースの方法および／またはスクリプトベースの方法からの結果または他の情報（たとえば１つ以上のスコア）を選択された言語検出器モジュールに渡し得る。
【００６３】
示される例において、言語検出システム１３００は、アルファベット判別可能言語検出器１３０８、キリル言語検出器１３１０、ラテン言語検出器１３１２およびバックオフ言語検出器１３１４といった言語検出器モジュールを含み得るか、または、利用し得る。しかしながら、他の付加的または代替的な言語検出器モジュールが含まれ得るか、または、利用され得る。これらの言語検出器モジュール１３０８、１３１０、１３１２および１３１４の各々は、検出方法モジュールおよび分類器モジュールを含み得る。たとえば、アルファベット判別可能言語検出器１３０８は、検出方法モジュール１３１６および分類器モジュール１３１８を含み得、キリル言語検出器１３１０は、検出方法モジュール１３２０および分類器モジュール１３２２を含み得、ラテン言語検出器１３１２は、検出方法モジュール１３２４および分類器モジュール１３２６を含み得、バックオフ言語検出器１３１４は、検出方法モジュール１３２８および分類器モジュール１３３０を含み得る。
【００６４】
一般に、検出方法モジュール１３１６、１３２０、１３２４および１３２８は、１つ以上の言語検出方法を含むか、または、利用する。１つ以上の言語検出方法は、たとえば、ｎグラム方法（たとえばバイトｎグラム方法）、辞書ベースの方法、アルファベットベースの方法、スクリプトベースの方法および／またはユーザ言語プロファイル方法であり得るか、または、含み得る。他の言語検出方法も考えられる。検出方法モジュール１３１６、１３２０、１３２４および１３２８は、テキストメッセージ１３０２中に存在する言語の指示を提供する出力を作り出す言語検出方法を使用し得る。出力はたとえば、テキストメッセージ１３０２が１つ以上の言語である尤度を表わす１つ以上のスコアであり得るか、または、当該１つ以上のスコアを含み得る。いくつかの場合では、テキストメッセージ１３０２中の言語は、検出方法モジュール１３１６、１３２０、１３２４、または１３２８のうちの１つの出力から直接的に決定される。代替的または付加的には、テキストメッセージ１３０２中の言語は、分類器モジュール１３１８、１３２２、１３２６、または１３３０のうちの１つの出力から決定され得る。一般に、各分類器モジュール１３１８、１３２２、１３２６、または１３３０は、対応する検出方法モジュール１３１６、１３２０、１３２４、または１３２８からの出力を処理して、テキストメッセージ中に存在する言語のさらに別の指示を提供する。分類器モジュール１３１８、１３２２、１３２６および１３３０は好ましくは、たとえば教師あり学習モデル、部分教師あり学習モデル、教師なし学習モデルおよび／または補間といった１つ以上の分類器を使用し得るかまたは含み得る。
【００６５】
たとえば、グルーパモジュール１３０６によって検出されるアルファベットおよび／またはスクリプトが１つ以上のアルファベット判別可能言語に関連付けられる場合、グルーパモジュール１３０６は、アルファベット判別可能言語検出器１３０８を選択する。一般に、アルファベット判別可能言語は、ユニークなアルファベットおよび／またはユニークなスクリプトを有する言語であって、当該言語についてのアルファベットおよび／またはスクリプトがひとたび検出されるとテキストメッセージ１３０２中の言語が決定され得る言語である。アルファベット判別可能言語の例はたとえば、簡体字中国語（ｃｎ）、繁体字中国語（ｔｗ）、日本語（ｊａ）、アラビア語（ａｒ）、ヘブライ語（ｈｅ）、ギリシャ語（ｅｌ）、韓国語（ｋｏ）およびタイ語（ｔｈ）を含む。さまざまな場合では、グルーパモジュール１３０６は、アルファベットベースの方法および／またはスクリプトベースの方法からの結果（たとえば１つ以上のスコアおよび確率、検出されたアルファベット、ならびに／または検出されたスクリプト）をアルファベット判別可能言語検出器１３０８に渡す。代替的または付加的には、グルーパモジュール１３０６がそのような結果をアルファベット判別可能言語検出器１３０８へ渡さない場合、検出方法モジュール１３１６は、テキストメッセージ１３０２におけるアルファベットおよび／またはスクリプトを検出するよう、アルファベットベースの方法および／またはスクリプトベースの方法を実行し得る。アルファベット判別可能言語検出器１３０８は、アルファベットおよび／またはスクリプトがひとたび検出されると、テキストメッセージ１３０２中の言語を決定し得る。いくつかの場合、そのような決定は、検出方法モジュール１３１６からの任意の出力を処理するよう分類器モジュール１３１８を使用して行われ得る。
【００６６】
いくつかの例では、グルーパモジュール１３０６によって検出されるアルファベットおよび／またはスクリプトが１つ以上のキリル言語に関連付けられる場合、グルーパモジュール１３０６はキリル言語検出器１３１０を選択する。キリル言語の例はたとえば、ブルガリア語（ｂｇ）、ウクライナ語（ｕｋ）およびロシア語（ｒｕ）を含んでいる。テキストメッセージ１３０２中の特定のキリル言語を決定するために、検出方法モジュール１３２０は、バイトｎグラム方法および／または辞書ベースの方法のような、本願明細書において記載される１つ以上の言語検出方法を含み得るか、または、利用し得る。好ましい例では、検出方法モジュール１３２０は、キリル言語に特有の１つ以上の辞書を使用し得る辞書ベースの方法を利用する。辞書ベースの方法は、当該１つ以上の辞書において単語をルックアップすることによって、テキストメッセージ１３０２において１つ以上のキリル言語に属するトークンまたは単語の数をカウントし得る。いくつかの例において、テキストメッセージ１３０２において最も多くのトークンまたは単語を有するキリル言語がテキストメッセージ１３０２中の言語であると決定される。代替的または付加的には、検出方法モジュール１３２０は、１つ以上の言語検出方法（たとえば辞書に基づいた方法）からの出力を分類器モジュール１３２２に提供し得、分類器モジュール１３２２は、テキストメッセージ１３０２中の言語を決定するために当該出力を処理し得る。たとえば、分類器モジュール１３２２は検出方法モジュール１３２０からスコアのセットを受け取り得、最も高いスコアを有する言語を識別することによりテキストメッセージ１３０２中のキリル言語を決定し得る。
【００６７】
ある場合では、グルーパモジュール１３０６によって検出されるアルファベットおよび／またはスクリプトが１つ以上のラテン言語に関連付けられる場合、グルーパモジュール１３０６はラテン言語検出器１３１２を選択する。ラテン言語の例はたとえば、英語（ｅｎ）、フランス語（ｆｒ）、スペイン語（ｅｓ）、ドイツ語（ｄｅ）、ポルトガル語（ｐｔ）、オランダ語（ｎｌ）、ポーランド語（ｐｌ）、イタリア語（ｉｔ）、トルコ語（ｔｒ）、カタロニア語（ｃａ）、チェコ語（ｃｓ）、デンマーク語（ｄａ）、フィンランド語（ｆｉ）、ハンガリー語（ｈｕ）、インドネシア語（ｉｄ）、ノルウェー語（ｎｏ）、ルーマニア語（ｒｏ）、スロバキア語（ｓｋ）、スウェーデン語（ｓｖ）、マレー語（ｍｓ）、ベトナム語（ｖｉ）を含む。テキストメッセージ１３０２中の特定のラテン言語を決定するために、検出方法モジュール１３２４は、本願明細書において記載される１つ以上の言語検出方法を含み得るか、または、利用し得る。好ましい例では、検出方法モジュール１３２４は、バイトｎグラム方法および／または辞書ベースの方法を含むかまたは利用する。これらの好ましい方法のうちの１つまたは両方からの出力は、テキストメッセージ１３０２中の特定のラテン言語を決定するよう、分類器モジュール１３２６を使用して処理または組み合わされ得る。たとえば、ｎグラム方法および辞書ベースの方法は各々、スコアのセットを出力し得る。各スコアは、テキストメッセージ１３０２が複数の異なるラテン言語のうちの１つである尤度を表わす。分類器モジュール１３２６は、テキストメッセージ１３０２中のラテン言語を決定するよう、たとえば本願明細書において記載される１つ以上の分類器および／または補間技術を使用してスコアのセットを処理し得る。
【００６８】
いくつかの例において、グルーパモジュール１３０６は、テキストメッセージ１３０２中の言語を検出するためにバックオフ言語検出器１３１４を選択する。バックオフ言語検出器１３１４はたとえば、グルーパモジュール１３０６がアルファベット判別可能言語検出器１３０８、キリル言語検出器１３１０またはラテン言語検出器１３１２を選択しない場合に選択され得る。たとえば、グルーパモジュール１３０６が、アルファベット判別可能言語、キリル言語またはラテン言語に関連付けられるアルファベットおよび／またはスクリプトを検出することに失敗すると、そのような状況が発生し得る。バックオフ言語検出器１３１４が選択されると、検出方法モジュール１３２８および／または分類器モジュール１３３０がテキストメッセージ１３０２中の言語を識別するために使用され得る。検出方法モジュール１３２８によって使用される言語検出方法は、たとえば、ｎグラム方法（たとえばバイトｎグラム方法）、辞書ベースの方法、アルファベットベースの方法、スクリプトベースの方法、ユーザ言語プロファイル方法、および、その任意の組み合わせであり得るか、または、含み得る。分類器モジュール１３３０によって使用される特定の分類器は、たとえば教師あり学習モデル、部分教師あり学習モデル、教師なし学習モデル、補間および／またはその任意の組み合わせであり得るか、または、含み得る。他の言語検出方法および／または分類器が使用され得る。一般に、バックオフ言語検出器１３１４は、本願明細書において記載される言語検出方法および分類器のうちのいずれかを使用し得る。バックオフ言語検出器１３１４は好ましくはフレキシブルであり、新しい検出方法および／または検出方法の新しい組み合わせを含むかまたは使用するように構成され得る。なぜならば、そのような新しい方法および／または組み合わせが開発または利用可能になるからである。いくつかの場合、バックオフ言語検出器１３１４を行使することによって、言語検出システム１３００は、ＮＵＬＬ出力ではなく有効な出力を提供することができる。
【００６９】
例示目的のために、図１４は、テキストメッセージ中の言語を識別するための例示的な方法１４００のフローチャートである。方法１４００は、テキストメッセージを受け取ること（ステップ１４０２）と、テキストメッセージ中のラテンアルファベットおよびラテンスクリプトのうちの少なくとも１つを検出すること（ステップ１４０４）とを含む。スコアの第１のセットを決定するために、辞書ベースの言語検出テストが行なわれる（ステップ１４０６）。スコアの第１のセットの各スコアは、テキストメッセージが複数の異なるラテン言語のうちの１つである尤度を表わす。スコアの第２のセットを決定するために、ｎグラム言語検出テストが行なわれる（ステップ１４０８）。スコアの第２のセットの各スコアは、テキストメッセージが複数の異なるラテン言語のうちの１つである尤度を表わす。スコアの第１および第２のセットは、たとえば、１つ以上の分類器および／または補間技術を使用して、組み合わされる（ステップ１４１０）。テキストメッセージ中の言語は、当該組み合わせに基づいて識別される（ステップ１４１２）。
【００７０】
図１５は、テキストメッセージ中の言語を識別するための例示的な方法１５００のフローチャートである。テキストメッセージが取得され（ステップ１５０２）、非言語文字がテキストメッセージから除去され（ステップ１５０４）、サニタイズ済テキストメッセージが生成される。アルファベットおよび／またはスクリプトは、（ｉ）スコアの第１のセットを決定するアルファベットベースの言語検出テスト（ステップ１５０６）と、（ｉｉ）スコアの第２のセットを決定するスクリプトベースの言語検出テスト（ステップ１５０８）とのうちの少なくとも１つを行うことにより、サニタイズ済テキストメッセージにおいて検出される。スコアの第１のセットにおける各スコアは、サニタイズ済テキストメッセージが、複数の異なる言語のうちの１つの言語についてのアルファベットを含んでいる尤度を表わす。スコアの第２のセットにおける各スコアは、サニタイズ済テキストメッセージが複数の異なる言語のうちの１つの言語についてのスクリプトを含んでいる尤度を表わす。サニタイズ済テキストメッセージ中の言語は、スコアの第１のセット、スコアの第２のセットおよび／またはスコアの第１および第２のセットの組み合わせに基づき識別される（ステップ１５１０）。
【００７１】
この明細書に記載される主題および動作の実施形態は、デジタル電子回路において実現され得、または、この明細書において開示される構造およびそれらの構造の等価物を含むコンピュータソフトウェア、ファームウェア、もしくは、ハードウェアにおいて実現され得、または、それらの１つ以上の組み合わせにおいて実現され得る。この明細書に記載される主題の実施形態は、１つ以上のコンピュータプログラムとして実現され得る。すなわち、データ処理装置による実行のためにまたはデータ処理装置の動作を制御するためにコンピュータ記憶媒体上でエンコードされたコンピュータプログラム命令の１つ以上のモジュールとして実現され得る。代替的または付加的には、プログラム命令は、たとえば機械によって生成された電気信号、光学信号または電磁気信号といった、データ処理装置による実行のために好適な受信装置への送信のために情報をエンコードするように生成される人為的に生成される伝播信号上でエンコードされ得る。コンピュータ記憶媒体は、コンピュータ読取可能ストレージデバイス、コンピュータ読取可能ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、または、それらの１つ以上の組み合わせであり得るか、それらに含まれ得る。さらに、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人為的に生成される伝播信号においてエンコードされたコンピュータプログラム命令の源または行先であり得る。コンピュータ記憶媒体はさらに、別個の１つ以上の物理コンポーネントまたは媒体（たとえば複数のＣＤ、ディスクまたは他のストレージデバイス）であり得るか、または、これらに含まれ得る。
【００７２】
この明細書に記載される動作は、１つ以上のコンピュータ読取可能ストレージデバイス上に格納されたデータまたは他の源から受け取られたデータに対してデータ処理装置によって実行される動作として実現され得る。
【００７３】
「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータ、システムオンチップ、または、前述のものの複数のものもしくは組み合わせを含む、データを処理するためのすべての種類の装置、デバイスおよびマシンを包含する。装置は、たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）といった特殊用途論理回路を含み得る。装置は、ハードウェアに加えて、該当するコンピュータプログラムのための実行環境を作り出すコードをさらに含み得る。当該コードとしては、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、バーチャルマシン、または、それらの１つ以上の組み合わせを構成するコードがある。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャといったさまざまな異なるコンピューティングモデルインフラストラクチャを実現し得る。
【００７４】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプトまたはコードとしても知られる）は、コンパイルされた言語または解釈された言語、宣言言語または手続言語を含むプログラミング言語の任意の形態で記述され得、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、オブジェクト、もしくは、コンピューティング環境で使用するに好適である他のユニットとして含む任意の形態で展開され得る。コンピュータプログラムは、ファイルシステムにおけるファイルに対応し得るが、ファイルに対応する必要はない。プログラムは、当該プログラムに専用の単一ファイルにおいて、または、複数の協調されたファイル（たとえばコードの１つ以上のモジュール、サブプログラムもしくは部分を格納するファイル）において、他のプログラムもしくはデータ（たとえば、マークアップ言語文書に格納された１つ以上のスクリプト）を保持するファイルの部分に格納され得る。コンピュータプログラムは、１つのコンピュータ上で実行されるように展開され得るか、または、１つの場所に位置するかもしくは複数の場所に亘って分散され通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開され得る。
【００７５】
この明細書に記載される処理および論理フローは、１つ以上のプログラマブルプロセッサが、入力データに対して動作して出力を生成することによりアクションを行うように１つ以上のコンピュータプログラムを実行することによって行われ得る。処理および論理フローは、たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）といった特殊用途論理回路によって実行され得、装置も、当該特殊用途論理回路によって実現され得る。
【００７６】
コンピュータプログラムの実行に好適であるプロセッサは、例として、汎用マイクロプロセッサおよび特殊用途マイクロプロセッサの両方と、任意の種類のデジタルコンピュータのいずれか１つ以上のプロセッサとを含む。一般に、プロセッサは、リードオンリメモリ、ランダムアクセスメモリ、またはその両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令に従ってアクションを実行するためのプロセッサと、命令およびデータを格納するための1つ以上のメモリデバイスとである。一般に、コンピュータはさらに、たとえば磁気ディスク、光磁気ディスク、光ディスクもしくはソリッドステートドライブといった、データを格納するための１つ以上のマスストレージデバイスを含むか、または、当該１つ以上のマスストレージデバイスからデータを受け取るか、もしくは、当該１つ以上のマスストレージデバイスにデータを転送するか、もしくは、その両方を行うように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、たとえば、携帯電話、携帯情報端末（ＰＤＡ）、モバイルオーディオまたはビデオプレーヤ、ゲーム機、全地球測位システム（ＧＰＳ）レシーバ、または、ポータブルストレージデバイス（たとえばユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ）といった別のデバイスに埋め込まれ得る。コンピュータプログラム命令およびデータを格納するのに好適なデバイスは、例として、たとえばＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリデバイスといった半導体メモリデバイスと、たとえば内部ハードディスクまたはリムーバブルディスクといった磁気ディスクと、光磁気ディスクと、ＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクとを含む不揮発性メモリ、媒体およびメモリデバイスのすべての形態を含んでいる。プロセッサおよびメモリは、特殊用途論理回路によって補足され得るか、または、当該特殊用途論理回路に統合され得る。
【００７７】
ユーザとのインタラクションを提供するために、この明細書に記載される主題の実施形態は、たとえばＣＲＴ（陰極線管）またはＬＣＤ（液晶ディスプレイ）モニタといった、情報をユーザに表示するためのディスプレイデバイスと、ユーザが入力をコンピュータに提供する際に使用可能なキーボード、および、たとえばマウス、トラックボール、タッチパッドまたはスタイラスといったポインティングデバイスとを有するコンピュータ上で実現され得る。ユーザとのインタラクションを提供するために、他の種類のデバイスも同様に使用され得る。たとえば、ユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックといった感覚フィードバックの任意の形態であり得、ユーザからの入力は、音響入力、スピーチ入力、または触覚入力を含む任意の形態で受け取られ得る。さらに、コンピュータは、ユーザによって使用されるデバイスへドキュメントを送信することによって、および当該デバイスからドキュメントを受信することによって、ユーザとインタラクションを行い得る。たとえば、ウェブブラウザから受け取られた要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによってユーザとインタラクションを行い得る。
【００７８】
この明細書に記載される主題の実施形態は、バックエンドコンポーネントをたとえばデータサーバとして含むコンピューティングシステムにおいて実現され得るか、またはミドルウェアコンポーネントをたとえばアプリケーションサーバとして含むコンピューティングシステムにおいて実現され得るか、または、たとえば、ユーザがこの明細書に記載される主題の実現例とインタラクションし得るグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータといったフロントエンドコンポーネントを含むコンピューティングシステムにおいて実現され得るか、またはそのようなバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムにおいて実現され得る。システムのコンポーネントは、たとえば通信ネットワークといった、任意の形態または媒体のデジタルデータ通信によって相互に接続され得る。通信ネットワークの例は、ローカルエリアネットワーク（「ＬＡＮ」）と、ワイドエリアネットワーク（「ＷＡＮ」）と、インターネットワーク（たとえばインターネット）と、ピアツーピアネットワーク（たとえばアドホックピアツーピアネットワーク）とを含む。
【００７９】
コンピューティングシステムはクライアントおよびサーバを含み得る。クライアントおよびサーバは一般に互いにリモートであり、典型的に通信ネットワークを介してインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアント−サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、（たとえば、クライアントデバイスとインタラクションするユーザにデータを表示し、かつ、当該ユーザからユーザ入力を受信する目的のために）クライアントデバイスにデータ（たとえばＨＴＭＬページ）を送信する。クライアントデバイスにて生成されるデータ（たとえばユーザインタラクションの結果）は、サーバにおいてクライアントデバイスから受け取られ得る。
【００８０】
この明細書は多くの特定の実現例の詳細を含んでいるが、これらは如何なる発明の範囲または特許請求され得るものの範囲に対する限定として解釈されるべきでなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態のコンテキストでこの明細書に記載されているある特徴はさらに、単一の実施形態において組み合わせで実現され得る。反対に、単一の実施形態のコンテキストで記載されているさまざまな特徴はさらに、複数の実施形態において別々に実現され得るか、または、任意の好適なサブコンビネーションで実現され得る。さらに、上記では、特徴はある組み合わせで作用するように記載され得、最初はそのように特許請求され得るが、特許請求される組み合わせからの１つ以上の特徴は、いくつかの場合において、当該組み合わせから削除され得、また、特許請求される組み合わせは、サブコンビネーションまたはサブコンビネーションの変形例に向けられ得る。
【００８１】
同様に、動作は図面において特定の順序で示されているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順序もしくは連続した順序で実行されることを必要としていると理解されるべきでなく、または、すべての示された動作が実行されることを必要としていると理解されるべきでない。ある状況では、マルチタスクおよびパラレルプロセッシングが有利であり得る。たとえば、パラレルプロセッシングは複数の言語検出方法を同時に実行するために使用され得る。さらに、上に記載された実施形態におけるさまざまなシステムコンポーネントの分離は、すべての実施形態におけるそのような分離を必要とすると理解されるべきでなく、また、記載されたプログラムコンポーネントおよびシステムは一般に、単一のソフトウェアプロダクトへとともに統合され得るか、または、複数のソフトウェアプロダクトへパッケージングされ得るということが理解されるべきである。
【００８２】
このように主題の特定の実施形態が説明された。他の実施形態は添付の請求の範囲内にある。いくつかの場合において、請求の範囲に記載されるアクションは、異なる順序で実行され得、それでも望ましい結果を達成し得る。また、添付の図面に示される処理は、所望の結果を達成するために、示されている特定の順序、またはシーケンシャルな順序を必ずしも必要としない。ある実現例では、マルチタスクおよびパラレルプロセッシングが有利であり得る。
【００８３】
特許請求の範囲
【図１Ａ】
2019535082.tif 000003
【図１Ｂ】
2019535082.tif 000004
【図２】
2019535082.tif 000005
【図３】
2019535082.tif 000006
【図４】
2019535082.tif 000007
【図５】
2019535082.tif 000008
【図６】
2019535082.tif 000009
【図７】
2019535082.tif 000010
【図８】
2019535082.tif 000011
【図９】
2019535082.tif 000012
【図１０】
2019535082.tif 000013
【図１１】
2019535082.tif 000014
【図１２】
2019535082.tif 000015
【図１３】
2019535082.tif 000016
【図１４】
2019535082.tif 000017
【図１５】
2019535082.tif 000018
【国際調査報告】
2019535082.tif 000019
2019535082.tif 000020
2019535082.tif 000021