Japonca metni çift tıkladığınızda Chrome, neyi vurgulayacağınıza nasıl karar verir?


214

Chrome'da İngilizce metne çift tıklarsanız, tıkladığınız boşlukla ayrılmış kelime vurgulanır. Bu şaşırtıcı değil. Ancak, geçen gün Japonca bazı metinleri okurken tıklıyordum ve Japonca'da boşluk olmamasına rağmen bazı sözcüklerin sözcük sınırlarında vurgulandığını fark ettim. Aşağıda bazı örnek metinler verilmiştir:

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

Örneğin, 薄 暗 い seçeneğine tıklarsanız, tek bir karakter sınıfı olmasa bile Chrome, tek bir kelime olarak doğru bir şekilde vurgulayacaktır (bu, kanji ve hiragana'nın bir karışımıdır). Tüm vurgulamalar doğru değil, ancak rastgele görünmüyor.

Chrome burada neyi vurgulayacağınıza nasıl karar veriyor? "Japonca kelime" için Chrome kaynağını aramayı denedim, ancak yalnızca Chrome sürümümde etkin görünmeyen bir deneysel modül için testler buldum .


1
@Nathaniel Senin için nasıl olduğunu bilmiyorum, ama kanji'ye çift tıkladığımda, sadece kanji'yi seçtiğimde, hiragana'ya çift tıkladığımda, sadece ardışık hiragana'yı seçiyor ve biraz da aynı (nya nya)
Çilek

4
た め じ め し た kısmı, kana / kanji / rōmaji sınırlarındaki seçimi durdurmaktan ziyade tarayıcının gerçekten akıllı kelime seçimi yapıp yapmadığını test etmede kullanmak için iyi bir parçadır. Hepsi hiragana, ancak Chrome (ve Safari) sadece じ め じ め parçasını doğru bir şekilde seçer (た た kısmı bir fiil çekimidir). Öte yandan Firefox い じ め じ め し た yanlış seçer (çünkü Firefox gerçek kelime sınırlarını tanımıyor, ancak görünüşe göre sadece kana / kanji / rōmaji sınırlarındaki seçimi durduruyor).
sideshowbarker

2
@Çilek görüyorum. Benim için soruda açıklandığı gibi 薄 暗 い kelimesini seçer. (Chrome, Mac.)
Nathaniel

1
Bir istisna dışında, test ettiğim her bir macOS uygulamasında - TextEdit, Stickies, Notes, Terminal, vb. - Japonca metnin akıllı kelime seçimine çift tıklayın. Dolayısıyla, en azından macOS'ta Chrome, neredeyse tüm diğer macOS uygulamalarının yapmadığı özel bir şey yapmaz - sadece macOS'ta yerleşik mevcut ICU tabanlı kelime kırma desteğini kullanır.
sideshowbarker

1
MacOS'ta, Firefox, macOS uygulamalarının bu soruda açıklanan Japonca metnin aynı çift tıklama akıllı kelime seçimini yapabileceği kuralına bulduğum tek istisnadır. Firefox, seçimi sadece kana / kanji / rōmaji sınırlarında durdurmanın çok daha basit bir işini yapıyor gibi görünüyor. Bana bir Firefox mühendisi tarafından söylendi, çünkü Firefox yerleşik ICU tabanlı macOS platformu API'lerini metin seçimi için kullanmıyor. İlgili hata bugzil.la/345823'e bakın .
sideshowbarker

Yanıtlar:


165

Yani v8'in standart olmayan çok dilli bir kelime segmenteri var ve Japonca'yı ele alıyor.

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('どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。'))
// ["どこ", "で", "生れ", "たか", "とんと", "見当", "が", "つ", "か", "ぬ", "。", "何でも", "薄暗い", "じめじめ", "した", "所", "で", "ニャーニャー", "泣", "い", "て", "いた事", "だけ", "は", "記憶", "し", "て", "いる", "。"]

Bunu gösteren bir jsfiddle da yaptım .

Kalitesi şaşırtıcı değil ama bu hiç desteklendiğine şaşırdım.


24
Bu yoğun bakım projesinin bir parçasıdır: userguide.icu-project.org/boundaryanalysis , ayrıca bkz unicode.org/reports/tr29/#Word_Boundaries
Xorlev


4
Windows zaten bir Japonca kelimeye çift tıklayarak doğru kelimeyi seçebiliyor. Bunun için Chrome'a ​​bile ihtiyacınız yok
phuclv

7
@phuclv: Chrome'u kullanan herkes Windows'da çalıştırmaz.
Sean

2
V8 davranışının tarayıcı arayüzünde metin seçimini etkilediğinden emin misiniz? V8'in bir JavaScript motoru olduğu göz önüne alındığında, tarayıcı arayüzünde metin seçimi yaparken v8 kodlarından herhangi birinin yürütüleceğini düşünmezdim. Sanırım tarayıcıda JavaScipt'i devre dışı bırakıp aynı davranışı gözlemleyip gözlemlemediğinizi kontrol ederek kontrol edebilirsiniz. Eğer yapmazsanız, o zaman davranışın v8'e bağlı olmadığını göstereceğini düşünüyorum. (Bunu test etmek için kendim yaparım, ancak başka bir yorumda belirttiğim gibi, macOS ortamımda, bu sadece hangi Chrome'da değil, hangi tarayıcıda test ettiğimden bağımsız olarak zaten çalışıyor.)
sideshowbarker

92

JonathonW tarafından gönderilen bağlantılara dayanarak , cevap temel olarak şuraya kayıyor: "Bir kelimeyi çift tıklayıp tıklamadığınızı görmek için Japonca kelimelerin büyük bir listesi ve Chrome kontrolleri var."

Özellikle, v8 kullandığı yoğun bakımda Unicode ilgili metin işleme şeyin oluşturduğu grup var kelimelere metin kesiliyor dahil . ICU sınır algılama kodu, Japonca, Çince, Tay Dili vb. Dahil boşluk içermeyen diller için "Sözlük Tabanlı BreakIterator" içerir .

Ve spesifik "薄 暗 specific" örneğiniz için, bu kelimeyi YBÜ tarafından gönderilen kombine Çince-Japonca sözlüğünde bulabilirsiniz (satır 255431). Şu anda listede toplam 315,671 Çince / Japonca kelime var. Muhtemelen Chrome'un düzgün bölünmediği bir kelime bulursanız, bu kelimeyi eklemek için YBÜ'ye bir yama gönderebilirsiniz.



Yoğun bakım ve benzeri projeler uzun zamandır varlığını sürdürüyor. Chrome'un V8 motoru, standart metin motorlarının neredeyse 20 yıldır bu tür tokenizasyonu yaptığı platformlardan kaynaklanan WebKit'ten geçtikten sonra onu aldığında şaşırmazdım.
rickster
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.