Усі статті

Підрахунок символів і слів: чому це не завжди тривіально

Підрахунок символів і слів у тексті звучить як найпростіша можлива задача, але два нюанси роблять її менш тривіальною, ніж здається: що вважати «одним символом» у Unicode і що вважати межею між словами.

Чому підрахунок символів залежить від кодування

У Unicode один візуально видимий символ не завжди відповідає одній кодовій точці. Емодзі із модифікатором тону шкіри чи прапори країн складаються з кількох кодових точок, об’єднаних у один видимий «графемний кластер». Наївний підрахунок за кодовими точками може порахувати такий символ як два, три чи більше.

Символи з діакритичними знаками

Символ на кшталт «é» можна представити або однією кодовою точкою (попередньо складений символ), або двома — базовою літерою «e» плюс окремим комбінувальним акутовим наголосом. Візуально це той самий символ, але кількість кодових точок різна залежно від способу кодування вхідного тексту.

Що вважати словом

Підрахунок слів зазвичай ґрунтується на пробілах чи пунктуації як роздільниках, але це працює не для всіх мов однаково: наприклад, у деяких мовах слова не розділяються пробілами взагалі, тому підрахунок «слів» там означає щось інше, ніж у мовах з пробілами.

Навіщо це потрібно

  • Перевірити текст на відповідність обмеженню символів (твіт, SMS, поле форми).
  • Оцінити приблизний час читання статті за кількістю слів.
  • Продіагностувати розбіжність між «видимою» довжиною тексту і тим, що показує лічильник символів у коді.

Підрахунок слів у мовах без пробілів

У китайській, японській чи тайській мовах слова традиційно не розділяються пробілами — межу між словами визначає граматика й контекст, а не роздільник. Тому «підрахунок слів» для таких мов насправді вимагає окремого алгоритму сегментації тексту, і простий підрахунок за пробілами там дасть або одне «слово» на весь текст, або взагалі втратить сенс.

Спробувати інструмент