韓国語はもはやサイノグラム[漢字/漢字]をあまり使用していませんが、それでも時々ポップアップします。一部の日本語のサイノグラムは竜のように日本語のみですが、多くは簡体字中国語または繁体字と同じです。だからあなたはちょっと立ち往生しています。したがって、「ハン」文字がある場合は、全文を確認する必要があります。ひらがな/カタカナ+漢字があれば、日本人である可能性が非常に高くなります。同様に、一連のハングル音節文字といくつかのサイノグラムから、その文が韓国語であることがわかります。
次に、すべて漢字、つまり中国語の場合、一部の文字が簡体字であるかどうかを確認できます。kZVariantは簡体字中国語の文字を示します。ああ、kSpecializedSemanticVariantは、日本語固有の簡略化された文字に非常によく使用されます。内と內は同じように見えるかもしれませんが、1つ目は日本語、2つ目は繁体字中国語と韓国語です(韓国語では繁体字中国語を標準として使用しています)。
1つのコードポイントに対してスクリプト名を返すコードがどこかにあります。それは役立つかもしれません。あなたは文を読み、最後に何が残っているかを確認します。コードをどこかに置きます。
編集:コード
http://pastebin.com/e276zn6y
以下のコメントに応えて:
上記のこの関数は、Unicode.orgによって提供されたデータに基づいて構築されています...それ自体は専門家ではありませんが、私はUnihanデータベースにかなり貢献しました–そして私はたまたまCJKを話します。はい、すべて3. kXXX
Unihanデータベースのプロパティを利用するコードはありますが、A / OPのコードを作成することになっていることに気づいていませんでした。また、B/ロジスティクスが必要になる可能性があります。 OPが実装する準備ができているものを超えて。私のアドバイスは立っています。上記の関数を使用して、1つの完全な文をループします。すべてのコードポイントが「Han」(または「Han」+「Latin」)の場合、中国語である可能性が高くなります。一方、結果が「ハン」+「ハングル」(おそらく「ラテン」)の組み合わせである場合は、韓国語を間違えることはできません。同様に、「ハン」と「
クイックテスト
以前にリンクした関数で使用するコード。
function guessLanguage(x) {
var results={};
var s='';
var i,j=x.length;
for(i=0;i<j;i++) {
s=scriptName(x.substr(i,1));
if(results.hasOwnProperty(s)) {
results[s]+=1;
} else {
results[s]=1;
}
}
console.log(results);
mostCount=0;
mostName='';
for(x in results) {
if (results.hasOwnProperty(x)) {
if(results[x]>mostCount) {
mostCount=results[x];
mostName=x;
}
}
}
return mostName;
}
いくつかのテスト:
r=guessLanguage("外人だけど、日本語をペラペラしゃべるよ!");
Object
Common: 2
Han: 5
Hiragana: 9
Katakana: 4
__proto__: Object
"Hiragana"
r
オブジェクトには、各スクリプトの出現回数が含まれています。ひらがなが最も頻繁で、ひらがな+カタカナ->文の2/3です。
r=guessLanguage("我唔知道,佢講乜話.")
Object
Common: 2
Han: 8
__proto__: Object
"Han"
中国語(この場合は広東語)の明らかなケース。
r=guessLanguage("中國이 韓國보다 훨씬 크지만, 꼭 아름다운 나라가 아니다...");
Object
Common: 11
Han: 4
Hangul: 19
__proto__: Object
"Hangul"
いくつかの漢字、そしてたくさんのハングル。確かに韓国語の文章。