9 पॉइंट द्वारा hongminhee 13 시간 전 | अभी कोई टिप्पणी नहीं है. | WhatsApp पर शेयर करें

नमस्ते। मैंने Gukhanmun नाम की एक लाइब्रेरी जारी की है, जो gukhanmun को केवल हंगुल में बदलती है। उम्मीद है कि यह पुराने साहित्य, gukhanmun सामग्री, पुराने अखबारों या सरकारी दस्तावेज़ों जैसे टेक्स्ट को प्रोसेस करने में काम आएगी.

पहली नज़र में लगता है कि बस हर अक्षर के लिए उसके उच्चारण की मैपिंग तालिका देख ली जाए तो काम हो जाएगा, लेकिन असल में इसे लागू करते समय जल्दी ही पता चलता है कि इस तरीके से सही परिणाम निकालना मुश्किल है। एक ही Hanja के लिए भी, शब्द की शुरुआत में आने पर initial sound rule लागू होता है, और कई अक्षर मिलकर एक शब्द बनाते हैं तो अक्षर-स्तर के उच्चारण से अलग ध्वनि निकल सकती है। 「庫間」 “gogan” नहीं बल्कि “gotgan” है, 「標識」 “pyosik” नहीं बल्कि “pyoji” है, और Hanja तथा हंगुल के मिश्रण वाला 「汽車gil」 में saisiot जुड़कर “gichatgil” बनता है। Hanja संख्याएँ भी पेचीदा हैं: 「二〇一六年」 का सही रूप “2016nyeon” है, लेकिन 「十一月」 “11wol” है और 「一千二百三十四」 “1234” है, इसलिए एक ही तरह के संख्या-लेखन के भीतर भी यह तय करना पड़ता है कि कौन-सा तरीका लागू है।

पहले मैंने इसी तरह के उद्देश्य के लिए Haskell लाइब्रेरी Seonbi बनाई थी, लेकिन इस बार दायरा Hanja conversion पर केंद्रित रखकर इसे Rust में नए सिरे से लिखा है। इसमें Standard Korean Language Dictionary बिल्ट-इन है, इसलिए अलग से डिक्शनरी इंस्टॉल किए बिना इस्तेमाल किया जा सकता है, और यह सामान्य टेक्स्ट के साथ HTML और Markdown भी प्रोसेस करता है। आउटपुट में केवल हंगुल छोड़ा जा सकता है, या hanja (漢字) की तरह कोष्ठक में साथ लिखा जा सकता है, या HTML ruby markup के रूप में एक्सपोर्ट किया जा सकता है। दक्षिण कोरिया और उत्तर कोरिया की orthography presets, और homonym होने पर Hanja को साथ दिखाने का विकल्प भी जोड़ा गया है।

जिस हिस्से पर सबसे ज़्यादा ध्यान दिया गया, वह segmentation algorithm है। बाएँ से दाएँ चलते हुए सबसे लंबी entry चुनने वाला तरीका 「資本論理」 को 「資本論」+「理」 की तरह काटता है और उसे “jabonroni” पढ़ता है। Gukhanmun lattice पर dynamic programming (Viterbi algorithm) चलाकर इसे 「資本」+「論理」 में विभाजित करता है और “jabonnolli” खोज निकालता है।

इसे शुरू से Rust में बनाने का एक कारण यह भी था कि इसे कई भाषाओं में आसानी से इस्तेमाल किया जा सके। CLI GitHub Releases पर उपलब्ध है, Rust crate gukhanmun crates.io पर मिलती है, और JavaScript पक्ष में WebAssembly(@gukhanmun/wasm) तथा Node.js native addon(@gukhanmun/napi) दोनों को npm और JSR पर प्रकाशित किया गया है। मुख्य crate gukhanmun-core no_std + alloc environment भी सपोर्ट करती है, इसलिए इसे embedded में भी इस्तेमाल किया जा सकता है।

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.