非常に大雑把な言語識別アルゴリズムを実装する必要があります。私の世界では、英語と英語以外の2つの言語しかありません。ArrayListがあり、各文字列が英語であるか、Unicode文字が特定の範囲にある他の言語である可能性が高いかを判断する必要があります。したがって、私がやりたいのは、ある種の「プレゼンス」テストを使用して、この範囲に対して各文字列をチェックすることです。テストに合格した場合、文字列は英語ではないと言います。それ以外の場合は英語です。2種類のテストを試したい:
- TEST-ANY:文字列内のいずれかの文字が範囲内にある場合、文字列はテストに合格します
- TEST-ALL:文字列内のすべての文字が範囲内にある場合、文字列はテストに合格します
配列が非常に長い可能性があるため、これを非常に効率的に実装する必要があります。Javaでこれを行う最速の方法は何でしょうか?
どうも
更新:私は、文字がASCIIであるかどうかをチェックするのではなく、特定の範囲のUnicodeを調べることによって、英語以外を具体的にチェックしています。これは、以下で説明する「再開」の問題に対処するためです。私が理解しようとしているのは、Javaが本質的にTEST-ANYまたはTEST-ALL(または別の同様のテスト)を可能な限り効率的に実装するクラス/メソッドを提供するかどうかです。言い換えれば、私は、特に私の前に発明されたホイールがとにかく優れている場合は、ホイールの再発明を避けようとしています。