News
Brak postów — pierwsze publikacje wkrótce.
BudouX: jak dzielić tekst japoński, chiński i tajski na frazy
Tutoriale how-to

BudouX: jak dzielić tekst japoński, chiński i tajski na frazy

BudouX dzieli tekst japoński, chiński i tajski na frazy. Jak działa model AdaBoost i co potrafi word-break: auto-phrase w Chrome 119 — plus ograniczenia.

AN
Andrzej Niemiec
19 sierpnia 2026 · 7 min czytania · 1189 słów
Reviewed by Andrzej Niemiec

Czym jest BudouX i skąd się wziął?

BudouX to mały, samodzielny segmenter fraz rozwijany w organizacji Google i publikowany na licencji Apache 2.0 [1]. Dzieli tekst języków bez spacji na jednostki, na których przeglądarka może bezpiecznie kończyć wiersz. Nie jest oficjalnie wspieranym produktem Google — README projektu zawiera wyraźne zastrzeżenie w tej sprawie [1]. Kod trafił do publicznego repozytorium w 2022 roku [1].

Projekt jest następcą Budou, narzędzia ogłoszonego 21 października 2016 roku [2]. Budou dzieliło tekst japoński, korzystając z Cloud Natural Language API, i początkowo obsługiwało wyłącznie japoński [2]. BudouX odcina się od tego modelu: segmentacja odbywa się lokalnie, bez odpytywania zewnętrznej usługi [1]. Dzięki temu bibliotekę można uruchomić także w przeglądarce.

Temat okazuje się szerszy niż pojedyncza biblioteka, bo pokazuje, jak Google przenosi wyniki eksperymentów językowych do codziennych mechanizmów sieci. Podobny kierunek widać w zmianach wyszukiwarki, o których piszemy w artykule Google Search z AI.

Jak model rozpoznaje granice fraz?

Model zadaje jedno pytanie przy każdym miejscu między dwoma znakami: czy w tym punkcie może kończyć się fraza [1]. Sygnały czerpie z sąsiednich znaków — pojedynczych, par i trójek — oraz z przynależności znaków do bloków Unicode [1]. Całość opiera się na AdaBoost [1].

To klasyfikator binarny pracujący na bardzo lokalnym kontekście. Nie potrzebuje słownika ani zewnętrznego segmentera. Zamiast pytać „jakie to słowo”, pyta „czy tutaj wypada granica”. Takie podejście działa dla języków, w których nie ma spacji, a granice słów nie są oznaczone jawnie.

Wynikiem jest lista fraz. Biblioteka może ją zwrócić wprost albo zmodyfikować HTML, wstawiając znaki zero-width space (U+200B) [1]. To wskazówki dla istniejącego mechanizmu zawijania tekstu, nie ręczne ustawianie każdej linii.

Jakie języki i modele obsługuje BudouX?

Biblioteka ma cztery gotowe modele: japoński, chiński uproszczony, chiński tradycyjny i tajski [1]. API udostępniono w Pythonie, JavaScripcie i Javie [1]. Deklarowana wielkość to około 15 KB razem z modelem uczenia maszynowego [1].

Ta liczba pochodzi od autorów i zależy od wariantu językowego, bundlera oraz portu. Nie trzeba traktować jej jako gwarancji dla każdej konfiguracji.

Zakres modeli bywa mylony z zasięgiem funkcji przeglądarek. To dwie różne rzeczy: biblioteka obsługuje cztery warianty językowe, a natywna funkcja CSS obsługiwana jest — według dokumentacji Chrome z grudnia 2023 roku — wyłącznie dla japońskiego [3].

Co potrafi word-break: auto-phrase w Chrome?

Chrome 119, wydany w 2023 roku, wprowadził właściwość word-break: auto-phrase dla japońskiego [3]. Przeglądarka łamie wiersze na granicach fraz wyznaczonych przez model, a implementacja korzysta z portu BudouX w C++ i AdaBoost [3].

Dokumentacja Chrome z 4 grudnia 2023 roku mówi wprost, że obsługiwany jest wtedy tylko japoński [3]. Chiński i koreański zapowiedziano na przyszłe wersje, a tajski nie został wymieniony jako obsługiwany [3]. Wprowadzenie funkcji przeszło standardową ścieżkę w przeglądarce — widać je w zgłoszeniu Intent to Ship dla Blinka [4].

Dla autora strony oznacza to prostą rzecz: jedna deklaracja CSS zamiast ręcznego wstawiania znaczników. Ceną jest ograniczenie zasięgu — poza Chrome i poza japoński trzeba wracać do biblioteki.

BudouX czy natywny CSS? Porównanie

KryteriumBudouX (biblioteka)word-break: auto-phrase w ChromeRęczne znaczniki
Zakres językówjapoński, chiński uproszczony, chiński tradycyjny, tajskitylko japoński (stan na grudzień 2023)dowolny, ale ręcznie
Zależność od przeglądarkibrak, działa też na serwerzetak, Chrome 119 i nowszebrak
Kontrola nad wynikiemduża, można korygować i trenować modelograniczona do decyzji modelupełna, kosztem pracy
Praca przy wdrożeniuinstalacja pakietu i wywołanie w kodziejedna reguła CSSręczne oznaczanie każdego tekstu

Tabela pokazuje, że wybór zależy od rynku. Dla jednego języka i nowoczesnego Chrome wystarczy CSS. Dla kilku języków i wielu przeglądarek potrzebna jest biblioteka.

Jak wdrożyć BudouX w projekcie webowym?

Start jest krótki: dodać pakiet do projektu, wybrać parser dla języka i przepuścić przez niego tekst przed wyświetleniem [5]. Parser zwraca frazy albo gotowy fragment z niewidocznymi znakami [1]. Warto sprawdzić oba warianty, bo pierwszy daje większą kontrolę nad składem.

Kolejny krok to decyzja, gdzie segmentacja ma się odbywać. Przy treściach statycznych można ją wykonać przy budowaniu strony i zapisać wynik. Przy treściach dynamicznych, na przykład nazwach produktów z API, wygodniej zrobić to po stronie serwera i zapisać rezultat w cache. Model działa lokalnie, więc nie ma tu kosztu zewnętrznego API [1].

Ostatni krok to testy. Trzeba sprawdzić długie nazwy własne, teksty mieszane i fragmenty z łaciną w środku. Granice fraz wyznacza model, a nie słownik, więc wyniki trzeba ocenić na realnym materiale.

Kiedy wynik bywa błędny i jak go poprawić?

Model może wskazać granicę niezgodną z intencją autora [3]. Dokumentacja Chrome ostrzega, że wynik uczenia maszynowego nie zawsze odpowiada oczekiwaniom [3]. Dotyczy to nazw własnych, neologizmów i długich złożeń.

Korekta jest możliwa na trzy sposoby: znacznik wbr, znak U+200B oraz znak U+200D [3]. W praktyce automat daje punkt startowy, a redakcja dokłada wyjątki tam, gdzie są naprawdę potrzebne.

Trzeba też pamiętać, że liczba linii nie jest właściwością BudouX. O podziale decyduje szerokość kontenera, font, rozmiar tekstu i CSS. Bez tych parametrów nie da się powiedzieć, ile linii zajmie dany napis.

Czym BudouX różni się od Budou?

Budou i BudouX to dwa kolejne projekty, nie jedna rzecz pod dwiema nazwami [2][1]. Budou z 2016 roku korzystało z Cloud Natural Language API i obsługiwało tylko japoński [2]. BudouX działa bez zewnętrznego segmentera, ma własne modele i cztery warianty językowe [1].

Różnica jest więc i techniczna, i praktyczna. Pierwsze narzędzie było demonstracją możliwości chmurowego API. Drugie jest biblioteką, którą można wbudować w produkt i uruchomić bez sieci.

Najczęstsze pytania

Czy BudouX to oficjalny produkt Google?

Nie. Kod znajduje się w organizacji Google i jest objęty licencją Apache 2.0, ale README zawiera zastrzeżenie, że projekt nie jest oficjalnie wspieranym produktem Google [1]. Bezpieczniej opisywać go jako otwarty projekt rozwijany w organizacji Google.

Czy BudouX łamie wiersze samodzielnie?

Nie. Dzieli tekst na frazy i może wstawić znaki U+200B jako wskazówki [1]. Ostateczny podział należy do mechanizmu zawijania w przeglądarce lub do układu, w którym tekst jest renderowany.

Czy natywna funkcja Chrome obsługuje chiński i tajski?

Według dokumentacji z grudnia 2023 roku nie. word-break: auto-phrase obsługiwał wtedy tylko japoński, a chiński i koreański zapowiadano na przyszłe wersje [3]. Tajski nie był wymieniony w tym zakresie [3]. Modele chiński i tajski są dostępne w bibliotece [1].

Ile waży BudouX i czy nadaje się na stronę klienta?

Autorzy deklarują około 15 KB razem z modelem [1]. To wartość orientacyjna, zależna od języka, wariantu i sposobu pakowania. Przy takiej wielkości użycie po stronie klienta jest realne.

Czy wynik modelu trzeba poprawiać ręcznie?

Czasem tak. Model może wyznaczyć granicę sprzeczną z intencją autora, zwłaszcza w nazwach własnych [3]. Korektę umożliwiają znacznik wbr oraz znaki U+200B i U+200D [3].

Źródła

  1. GitHub - google/budoux (GitHub)
  2. Budou: Automatic Japanese line breaking tool (Google Open Source Blog, 2016)
  3. Introducing four new international features in CSS (Chrome for Developers, 2023)
  4. Intent to Ship: Japanese Phrase Line Breaking (blink-dev)
  5. budoux/javascript/README.md (GitHub)
AN
O autorze
Andrzej Niemiec

Fanatyk nowych technologii i specjalista w zakresie sztucznej inteligencji.