जब आप जापानी पाठ पर डबल-क्लिक करते हैं तो क्रोम कैसे तय करता है?


214

यदि आप Chrome में अंग्रेज़ी पाठ पर डबल-क्लिक करते हैं, तो आपके द्वारा क्लिक किए गए व्हाट्सएप-सीमांकित शब्द को हाइलाइट किया गया है। यह आश्चर्य की बात नहीं है। हालाँकि, दूसरे दिन मैं जापानी में कुछ पाठ पढ़ते समय क्लिक कर रहा था और देखा कि कुछ शब्द शब्द सीमाओं पर हाइलाइट किए गए थे, भले ही जापानी में कोई स्थान न हो। यहाँ कुछ उदाहरण पाठ है:

ど こ で 生 れ た か と ん と 見 当 が つ か ぬ। 何 で も 薄 暗 い じ め じ め し た 所 で ニ ャ ー ニ ャ ー 泣 い て い た 事 だ け は 記憶 し て い る।

उदाहरण के लिए, यदि आप 薄 暗 click पर क्लिक करते हैं, तो क्रोम इसे सही रूप में एकल शब्द के रूप में हाइलाइट करेगा, भले ही यह एकल वर्ण वर्ग नहीं है (यह कांजी और हीरागाना का मिश्रण है)। सभी हाइलाइट्स सही नहीं हैं, लेकिन वे यादृच्छिक नहीं लगते हैं।

क्रोम कैसे तय करता है कि यहां क्या उजागर किया जाए? मैंने "जापानी शब्द" के लिए क्रोम स्रोत की खोज करने की कोशिश की, लेकिन केवल एक प्रयोगात्मक मॉड्यूल के लिए परीक्षण पाए गए जो क्रोम के मेरे संस्करण में सक्रिय नहीं लगते हैं।


1
@ नथानियल मुझे नहीं पता कि यह आपके लिए कैसा है, लेकिन जब मैं कांजी पर डबल क्लिक करता हूं, तो यह केवल कांजी का चयन करता है, और जब मैं हिरागाना में डबल क्लिक करता हूं, तो यह केवल लगातार हीरागाना का चयन करता है, और थोड़ा सा का कटकाना (nya nya)
स्ट्रॉबेरी

4
The た じ め a a भाग परीक्षण में उपयोग करने के लिए एक अच्छा हिस्सा है कि क्या ब्राउज़र वास्तव में केवल काना / कांजी / r boundmaji सीमाओं पर चयन को रोकने के बजाय बुद्धिमान शब्द चयन कर रहा है। यह सभी हीरागाना है, लेकिन क्रोम (और सफारी) सही ढंग से सिर्फ め じ ir (भाग का चयन करते हैं (し し भाग एक क्रिया विभक्ति है)। दूसरी ओर फ़ायरफ़ॉक्स गलत तरीके से incorrect め じ め incorrect た other s का चयन करता है (क्योंकि फ़ायरफ़ॉक्स वास्तविक शब्द सीमाओं को बिल्कुल नहीं पहचानता है, लेकिन जाहिरा तौर पर सिर्फ काना / कांजी / r boundmaji सीमाओं पर चयन रोक देता है)।
साइडशोबर्कर

2
@ स्ट्राबेरी मैं देख रहा हूँ। मेरे लिए यह 薄 it as शब्द का चयन करता है, जैसा कि प्रश्न में वर्णित है। (क्रोम, मैक।)
नथानिएल

1
एक अपवाद के साथ, मेरे द्वारा चुने गए हर एक macOS ऐप में - टेक्स्टएडिट, स्टिकिस, नोट्स, टर्मिनल इत्यादि - जापानी टेक्स्ट के इंटेलिजेंट शब्द चयन पर डबल क्लिक करें। तो कम से कम macOS पर, Chrome इसके लिए कुछ विशेष नहीं कर रहा है कि लगभग सभी अन्य macOS ऐप्स भी नहीं कर रहे हैं - यह केवल मौजूदा ICU- आधारित शब्द-ब्रेकिंग समर्थन का उपयोग macOS में किया गया है।
साइडशोबर्कर

1
MacOS पर, फ़ायरफ़ॉक्स एकमात्र अपवाद है जो मैंने नियम से पाया है कि इस सवाल में वर्णित जापानी टेक्स्ट के डबल-क्लिक इंटेलिजेंट शब्द चयन के लिए macOS ऐप सभी एक ही तरह का काम कर सकते हैं। फ़ायरफ़ॉक्स केवल काना / कांजी / rariesmaji सीमाओं पर चयन को रोकने के लिए बहुत आसान काम करता है। मुझे एक फ़ायरफ़ॉक्स इंजीनियर द्वारा बताया गया है, क्योंकि फ़ायरफ़ॉक्स टेक्स्ट चयन के लिए अंतर्निहित ICU- आधारित macOS प्लेटफ़ॉर्म एपीआई का उपयोग नहीं करता है। संबंधित बग देखें bugzil.la/345823
साइडशोबर्कर

जवाबों:


165

तो यह पता चला है कि v8 में एक गैर-मानक बहु-भाषा शब्द सेगमेंट है और यह जापानी को संभालता है।

function tokenizeJA(text) {
  var it = Intl.v8BreakIterator(['ja-JP'], {type:'word'})
  it.adoptText(text)
  var words = []

  var cur = 0, prev = 0

  while (cur < text.length) {
    prev = cur
    cur = it.next()
    words.push(text.substring(prev, cur))
  }

  return words
}

console.log(tokenizeJA('どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。'))
// ["どこ", "で", "生れ", "たか", "とんと", "見当", "が", "つ", "か", "ぬ", "。", "何でも", "薄暗い", "じめじめ", "した", "所", "で", "ニャーニャー", "泣", "い", "て", "いた事", "だけ", "は", "記憶", "し", "て", "いる", "。"]

मैंने एक jsfiddle भी बनाया जो यह दिखाता है।

गुणवत्ता आश्चर्यजनक नहीं है, लेकिन मुझे आश्चर्य है कि यह बिल्कुल समर्थित है।


24
यह ICU परियोजना का एक हिस्सा है: userguide.icu-project.org/boundaryanalysis , यह भी देखें unicode.org/reports/tr29/#Word_Boundaries
Xorlev

10
इसके अलावा source.chromium.org/chromium/chromium/src/+/master:v8/src/… को भी देखें , जहां पर वायर्ड किया गया है।
Xorlev

4
जापानी शब्द पर डबल क्लिक करने पर विंडोज़ में पहले से ही सही शब्द का चयन करने की क्षमता है। तुम भी इस बात के लिए क्रोम की जरूरत नहीं है
phuclv

7
@phuclv: क्रोम का उपयोग करने वाला हर कोई इसे विंडोज़ पर चलाता है।
शॉन

2
क्या आप सुनिश्चित हैं कि v8 व्यवहार का ब्राउज़र UI में पाठ चयन पर कोई प्रभाव है? उस v8 के जावास्क्रिप्ट इंजन को देखते हुए, मुझे नहीं लगेगा कि जब आप ब्राउज़र UI में पाठ चयन कर रहे हों, तो v8 कोड में से कोई भी निष्पादित हो रहा होगा। मुझे लगता है कि आप ब्राउज़र में JavaScipt को अक्षम करके देख सकते हैं और फिर देख सकते हैं कि क्या आप उसी व्यवहार को देखते हैं। यदि आप नहीं करते हैं, तो मुझे लगता है कि v8 के कारण व्यवहार नहीं दिखाएगा। (मैं इसे स्वयं परीक्षण करने के लिए करूंगा, लेकिन जैसा कि मैंने एक अन्य टिप्पणी में उल्लेख किया है, अपने macOS के वातावरण में, यह पहले से ही काम करता है कि मैं किस ब्राउज़र में परीक्षण करता हूं - सिर्फ क्रोम में नहीं।)
साइडशोबर्कर

92

जोनाथनवॉ द्वारा पोस्ट किए गए लिंक के आधार पर , उत्तर मूल रूप से उबलता है: "यह देखने के लिए कि क्या आप एक शब्द में डबल-क्लिक करते हैं, यह देखने के लिए जापानी शब्दों और क्रोम चेक की एक बड़ी सूची है।"

विशेष रूप से, v8 यूनिकोड से संबंधित पाठ प्रसंस्करण चीजों का एक गुच्छा करने के लिए ICU का उपयोग करता है , जिसमें पाठ को शब्दों में तोड़ना शामिल है । ICU सीमा-पता लगाने के कोड में एक "डिक्शनरी-बेस्ड ब्रेकरेटर" शामिल हैं, जिनके लिए स्थान नहीं हैं, जिनमें जापानी, चीनी, थाई, आदि शामिल हैं।

और "薄 暗," के अपने विशिष्ट उदाहरण के लिए, आप उस शब्द को संयुक्त चीनी-जापानी शब्दकोश में ICU (पंक्ति 255431) द्वारा भेज सकते हैं । सूची में वर्तमान में कुल 315,671 चीनी / जापानी शब्द हैं। संभवत: यदि आपको कोई ऐसा शब्द मिल जाता है जो क्रोम ठीक से विभाजित नहीं होता है, तो आप उस शब्द को जोड़ने के लिए ICU को एक पैच भेज सकते हैं।



आईसीयू और इसी तरह की परियोजनाएं लंबे समय से हैं। मुझे आश्चर्य नहीं होगा कि अगर वे क्रोमिट के वी 8 इंजन को वेबकीट से स्थानांतरित करने के बाद उठाते हैं, जो उन प्लेटफार्मों पर उत्पन्न हुए हैं जहां मानक पाठ इंजन लगभग 20 वर्षों से इस तरह के टोकन कर रहे हैं।
rickster
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.