Wszystkie artykuły

Liczenie znaków i słów: dlaczego to nie zawsze jest trywialne

Liczenie znaków i słów wydaje się proste, dopóki nie natrafi się na polskie znaki diakrytyczne i dwuznaki, które sprawiają, że „jeden dźwięk" i „jeden znak" to niekoniecznie to samo.

Dziewięć liter ze znakami diakrytycznymi

Polski alfabet dodaje do łacińskiej podstawy dziewięć liter z ogonkami i kreskami: ą, ć, ę, ł, ń, ó, ś, ź, ż. Każda z nich może być zakodowana jako pojedynczy, wstępnie złożony punkt kodowy albo jako litera podstawowa plus osobny znak diakrytyczny łączący — wizualnie identyczne, ale różna liczba punktów kodowych w zależności od tego, jak zakodowano tekst źródłowy.

Dwuznaki: dwa znaki, jeden dźwięk

Polska ortografia zapisuje wiele pojedynczych głosek dwiema literami: „sz", „cz", „rz", „dz", „dź", „dż". Licznik znaków widzi w słowie „szczęście" znacznie więcej liter niż faktycznie usłyszanych dźwięków, ponieważ same dwuznaki „sz" i „cz" liczą się jako dwa znaki każdy, choć fonetycznie to pojedyncze głoski.

Odmiana przez przypadki a porównywanie długości słów

Polski ma siedem przypadków gramatycznych, więc to samo słowo może mieć wyraźnie różną długość w zależności od formy: „dom", „domu", „domowi", „domem", „domach". Porównywanie liczby znaków tego samego rzeczownika w różnych zdaniach bez uwzględnienia odmiany może prowadzić do mylnych wniosków o „długości" danego słowa.

Do czego się przydaje

  • Sprawdzenie tekstu pod kątem limitu znaków (tweet, SMS, pole formularza).
  • Oszacowanie przybliżonego czasu czytania artykułu na podstawie liczby słów.
  • Zrozumienie, dlaczego liczba znaków słowa z „sz" czy „ą" różni się w zależności od sposobu kodowania tekstu źródłowego.

Liczenie słów w językach bez spacji

W chińskim, japońskim czy tajskim słowa tradycyjnie nie są oddzielane spacjami — granicę między słowami wyznacza gramatyka i kontekst, a nie separator. Dlatego „liczenie słów" dla takich języków w rzeczywistości wymaga osobnego algorytmu segmentacji tekstu, a proste liczenie na podstawie spacji da tam albo jedno „słowo" na cały tekst, albo w ogóle straci sens.

Wypróbuj narzędzie