कोरियाई ज्यादा sinograms का उपयोग नहीं करता है, [漢字/कांजी] अब, वे अभी भी ऊपर कभी कभी पॉप। कुछ जापानी sinograms पूरी तरह से जापानी हैं, जैसे 竜, लेकिन कई सरलीकृत चीनी या पारंपरिक के समान हैं। तो आप फंस गए हैं। इसलिए यदि आपके पास कुछ "हान" वर्ण हैं तो आपको एक पूर्ण वाक्य को देखने की आवश्यकता है। अगर इसमें कुछ हिरागाना/कटकाना + कांजी है, तो संभावना है कि यह जापानी है। इसी तरह, का एक गुच्छा हैंगुल अक्षरों और कुछ साइनोग्राम आपको बताएंगे कि वाक्य कोरियाई में है।
फिर, यदि यह सभी हान पात्रों, यानी चीनी है, तो आप देख सकते हैं कि कुछ वर्ण सरलीकृत हैं या नहीं: kZVariant एक सरलीकृत चीनी चार को दर्शाता है। ओह, और kSpecializedSemanticVariant अक्सर जापानी विशिष्ट सरलीकृत वर्णों के लिए उपयोग किया जाता है।内 और 內 आप के लिए समान दिख सकते हैं, लेकिन पहला जापानी है, दूसरा पारंपरिक चीनी और कोरियाई (कोरियाई पारंपरिक चीनी को मानक के रूप में उपयोग करता है)।
मेरे पास कोड है जो एक कोडपॉइंट, स्क्रिप्ट नाम के लिए कहीं लौटाता है। वह मदद कर सकता है। आप एक वाक्य के माध्यम से जाते हैं, और अंत में क्या बचा है देखें। मैं कहीं कोड डाल दूंगा।
संपादित करें: कोड
http://pastebin.com/e276zn6y
नीचे टिप्पणी के जवाब में:
ऊपर इस समारोह Unicode.org द्वारा उपलब्ध कराए गए आंकड़ों के आधार पर बनाया गया है ... जबकि एक विशेषज्ञ नहीं किया जा रहा प्रति से, मैंने यूनिहान डेटाबेस में काफी योगदान दिया - और मैं सीजेके बोलना चाहता हूं। हां, सब 3. मेरे पास कुछ कोड है जो यूनिहान डेटाबेस में kXXX
गुणों का लाभ उठाता है, लेकिन ए/मुझे पता नहीं था कि हमें ओपी के लिए कोड लिखना था, और बी/इसके लिए एक रसद की आवश्यकता होगी ओपी लागू करने के लिए तैयार क्या है उससे परे जाओ। मेरी सलाह खड़ा है। ऊपर दिए गए कार्य के साथ, एक पूर्ण वाक्य के माध्यम से लूप। यदि सभी कोडपॉइंट "हान" हैं, (या "हान" + "लैटिन"), संभावना है कि यह चीनी है। यदि दूसरी ओर परिणाम "हान" + "हंगुल" (+ "लैटिन" संभवतः) का मिश्रण है तो आप कोरियाई के साथ गलत नहीं जा सकते हैं। इसी तरह, "हान" और "कटाकाना"/"हिरगाना" का मिश्रण आपके पास जापानी है।
एक त्वरित परीक्षण
कुछ कोड समारोह मैं पहले से जुड़ा हुआ साथ प्रयोग किया जा करने के लिए।
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"
कुछ हान पात्र, और एक बहुत सारे हैंगुल। एक कोरियाई वाक्य, निश्चित रूप से।
आप कैसे निर्धारित करेंगे कि कोई विशेष चरित्र चीनी या जापानी है या नहीं? वे कई पात्रों को साझा करते हैं। – Daenyth
यदि तीन भाषाओं में चेहरे पर नहीं है तो यूनिकोड के भीतर स्थान हैं, तो मैं सीजेके से '\ language [cn] {*}' तक सबकुछ चिह्नित करने के लिए अपने प्रश्न को सरल बना दूंगा। – Village
इसकी तुलना में यह अधिक जटिल है। 3 भाषाएं चरित्र बिंदु (संख्यात्मक कोड) साझा करती हैं, लेकिन जरूरी नहीं कि ग्लिफ (चरित्र का ग्राफिकल प्रतिनिधित्व)। यूनिकोड सीजेके एफएक्यू पर एक नज़र डालें http://unicode.org/faq/han_cjk.htm – mirod