यह सब इस बात पर निर्भर करता है कि आप वास्तव में अपने एल्गोरिदम को कैसे व्यवहार करना चाहते हैं।
उदाहरण के लिए, हमें स्ट्रिंग "a\u0308"
(U + 0061 ʟᴀᴛɪɴ sᴍᴀʟʟ ʟᴇᴛᴛᴇʀ ᴀ U + 0308 ᴄᴏᴍʙɪɴɪɴɢ ᴅɪᴀᴇʀᴇsɪs के बाद) है, जो धर्मविधान "ä"
या "\u00e4"
(U + 00E4 के बराबर है पर विचार करते हैं ʟᴀᴛɪɴ एसᴍᴀʟʟ ʟᴇᴛᴛᴇʀ ᴀ ᴡɪᴛʜ ᴅɪᴀᴇʀᴇsɪs)। कैननिक रूप से समकक्ष होने का मतलब है कि आपके एल्गोरिदम को इन दोनों के बीच भेद नहीं करना चाहिए। व्यवहार करने के लिए वैचारिक रूप से समकक्ष तारों को प्राप्त करने का एक आसान तरीका दोनों को समान कैननिकल सामान्यीकरण फ़ॉर्म में सामान्य बनाना है: या तो एनएफसी या एनएफडी।
इन तारों का प्रतिनिधित्व करने के आधार पर, आप इसके बजाय संगतता समतुल्य (एनएफकेसी या एनएफकेडी) का उपयोग करना चाह सकते हैं। आमतौर पर इसकी पहचान की जाती है, उदाहरण के लिए, पहचानकर्ता। ये दो संगतता वर्णों को उनके अनुशंसित समकक्षों (जैसे यू + 2126 ᴏʜᴍ एसɪɢɴ से यू + 03 ए 9 ɢʀᴇᴇᴋ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ᴏᴍᴇɢᴀ, या वर्णित वर्णों के अनुक्रमों के लिए लिगरेचर कारकर्स)।
चाहे आप किस तरह के समकक्ष चाहते हैं, सिद्धांत भी वही रहता है: यदि आप समकक्ष तारों का इलाज करना चाहते हैं तो दोनों सामान्य रूप से सामान्यीकरण करना सबसे आसान तरीका है।
एक बार जब आप सभी समकक्ष तारों के लिए एक ही व्यवहार करते हैं, तो आपको एक और समस्या पर विचार करने की आवश्यकता होती है: यदि आप सभी "चरित्र [ओं] को छोड़ रहे हैं जो एक पत्र या अंक नहीं हैं", तारों के साथ क्या होता है पत्र और संयोजन के निशान, "\u092C\u093F"
की तरह साथ (U + 092 C ᴅᴇᴠᴀɴᴀɢᴀʀɪ ʟᴇᴛᴛᴇʀ ʙᴀ यू द्वारा पीछा + 093F ᴅᴇᴠᴀɴᴀɢᴀʀɪ ᴠᴏᴡᴇʟ sɪɢɴ ɪ, बि तरह दिखता है)? ये दो अलग कोडपॉइंट हैं, और यू +0 9 3 एफ एक पत्र नहीं है। ये दोनों किसी भी सामान्यीकरण रूप में नहीं लिखते हैं। क्या आप संयोजन अंक को छोड़ना चाहते हैं (आपको बी के साथ छोड़कर), या नहीं?
यदि उन्हें छोड़ना ठीक है, तो आप अपने वर्तमान एल्गोरिदम का उपयोग कर सकते हैं। अन्यथा, आप शायद ग्रैफेम क्लस्टर्स पर फिर से शुरू करना चाहते हैं, जो मोटे तौर पर, आधार वर्णों के अनुक्रम होते हैं, इसके बाद संयोजन चिह्न होते हैं।Java और ICU दोनों ग्रेफेम क्लस्टर खोजने के लिए एपीआई प्रदान करते हैं (जावा इन "चरित्र ब्रेक" को कॉल करता है)।
स्रोत
2013-03-07 17:28:58
क्या आप दोनों मामलों के लिए परीक्षण नहीं बना सकते हैं, यानी सामान्यीकरण के साथ और बिना परिणामों के तुलना करें? – Henrik