Po dwukrotnym kliknięciu tekstu w języku angielskim w Chrome podświetlone słowo rozdzielone spacjami zostanie podświetlone. To nie jest zaskakujące. Jednak pewnego dnia kliknąłem podczas czytania tekstu w języku japońskim i zauważyłem, że niektóre słowa zostały podświetlone na granicach słów, mimo że w języku japońskim nie ma spacji. Oto przykładowy tekst:
ど こ で 生 れ た か と ん と 見 当 当 が か 何 で も も 薄 暗 暗 じ め じ め し し た 所 で で ニ ニ ー ニ ャ ー 泣 泣 い て い た た 事 事 け て い し し。
Na przykład, jeśli klikniesz 薄 暗 い, Chrome poprawnie podświetli je jako pojedyncze słowo, nawet jeśli nie jest to jedna klasa znaków (jest to połączenie kanji i hiragana). Nie wszystkie podświetlenia są prawidłowe, ale nie wydają się przypadkowe.
Jak Chrome decyduje, co tu wyróżnić? Próbowałem przeszukać źródło Chrome pod kątem „japońskiego słowa”, ale znalazłem tylko testy eksperymentalnego modułu , który nie wydaje się aktywny w mojej wersji Chrome.
źródło
Odpowiedzi:
Okazuje się, że v8 ma niestandardowy wielojęzyczny segmentator słów i obsługuje japoński.
Zrobiłem też jsfiddle, który to pokazuje.
Jakość nie jest niesamowita, ale jestem zaskoczony, że w ogóle jest obsługiwana.
źródło
Na podstawie linków opublikowanych przez JonathonW odpowiedź sprowadza się w zasadzie do: „Istnieje duża lista japońskich słów i sprawdzeń Chrome, aby sprawdzić, czy kliknięto słowo”.
W szczególności v8 używa ICU do wykonywania szeregu czynności związanych z przetwarzaniem tekstu związanych z Unicode, w tym dzielenia tekstu na słowa . Kod wykrywania granic ICU zawiera „BreakIterator oparty na słowniku” dla języków, w których nie ma spacji, w tym japoński, chiński, tajski itp.
Dla konkretnego przykładu „薄 暗 い” możesz znaleźć to słowo w połączonym słowniku chińsko-japońskim dostarczonym przez ICU (linia 255431). Na liście znajduje się obecnie 316 671 wszystkich chińskich / japońskich słów. Przypuszczalnie jeśli znajdziesz słowo, którego Chrome nie podzielił się poprawnie, możesz wysłać ICU łatkę, aby dodać to słowo.
źródło