شمارش کلمه و نویسه: چرا شمارندهها با هم فرق دارند، طول پیامک و زمان خواندن
یک جمله میتواند ۸، ۱۰ یا ۱۲ کلمه داشته باشد؛ بسته به اینکه چه کسی بشمارد. آزمودیم مرورگرها کلمهها را چطور جدا میکنند، راهنماهای خودمان را به چهار زبان شمردیم و حساب کردیم پیامک کی از ۱۶۰ به ۷۰ نویسه کاهش پیدا میکند.
محدودیت همهجا هست: مقالهای با حداکثر ۱٬۵۰۰ کلمه، توضیح متا با حدود ۱۵۵ نویسه، پیامک یادآوری که باید در یک پیام جا شود، دستمزد ترجمه بر اساس تعداد کلمه. اما شمردن آنقدرها هم که به نظر میرسد ساده نیست. آزمودیم مرورگرها متن را چطور به کلمه تقسیم میکنند، ده راهنمای این سایت را به انگلیسی، آلمانی، اسپانیایی و فارسی شمردیم و طول پیامکها را با قواعد استاندارد GSM حساب کردیم. هر متنی را میتوانید با ابزار شمارش کلمات ما بسنجید که حالا تعداد پیامک لازم را هم نشان میدهد.
چه چیزی یک کلمه حساب میشود؟
سادهترین قاعده همان است که بیشتر مردم انتظار دارند: هر چه میان دو فاصله باشد یک کلمه است. مرورگرها علاوه بر این یک ابزار داخلی برای تقسیم کلمه دارند (Intl.Segmenter) که از قواعد یونیکد برای مرز کلمه پیروی میکند و متن را در بسیاری از علائم نگارشی جدا میکند. یک جملهی یکسان را با هر دو روش شمردیم:
| متن | میان فاصلهها | Chrome 141 (Segmenter) | Node.js 22 (Segmenter) |
|---|---|---|---|
| «سال ۱۴۰۵ با ۲۱ مارس ۲۰۲۶ شروع شد.» | ۸ | ۸ | ۸ |
Don't e-mail the U.S. office before 9:30 a.m. | ۸ | ۱۲ | ۱۰ |
Visit https://omid57.eu/en-US/guides today. | ۳ | ۸ | ۸ |
Das E-Mail-Postfach ist voll. | ۴ | ۶ | ۶ |
در جملهی فارسی ساده، هر دو روش یکسان شمردند و رقمهای فارسی هم مشکلی نداشتند. تفاوت در کلمههای خطتیرهدار، کوتهنوشتها، ساعت و نشانی وب پیدا میشود: ابزار تقسیم مرورگر «e-mail» را دو کلمه، ساعتی مثل 9:30 را دو عدد و یک نشانی وب را تا هشت تکه میشمارد. Chrome و Node.js که هر دو از موتور V8 استفاده میکنند، حتی در جملهی انگلیسی با هم یکی نبودند: Node.js «U.S» و «a.m» را کنار هم نگه داشت و Chrome نه. برای محدودیت کلمه این کمکی نمیکند. به همین دلیل شمارندهی ما از قاعدهی «میان فاصلهها، دستکم یک حرف یا رقم» پیروی میکند که قاعدهی پایهی ویرایشگرهای متن هم هست. فقط برای زبانهایی که میان کلمهها فاصله نمیگذارند، مثل چینی، ژاپنی و تایلندی، از ابزار تقسیم مرورگر کمک میگیرد.
فارسی: نیمفاصله تعیینکننده است
در فارسی، پیشوندها و نشانههای جمع با نیمفاصله به کلمه میچسبند؛ یعنی با نویسهی نامرئی ZWNJ (U+200C). حروف از نظر ظاهری جدا میمانند، اما کلمه شکسته نمیشود. اگر بهجای آن فاصلهی معمولی تایپ شود، هر شمارندهای دو کلمه میبیند:
| متن | کلمه | نویسه (دیدنی) |
|---|---|---|
| «میخواهم کتابها را بخوانم.» (با نیمفاصله) | ۴ | ۲۵ |
| «می خواهم کتاب ها را بخوانم.» (با فاصله) | ۶ | ۲۷ |
پس یک جملهی یکسان، اگر بهجای نیمفاصله با فاصله تایپ شود، ۵۰ درصد کلمهی بیشتر دارد. اگر متنی باید در محدودیت تعداد کلمه بماند، اول نیمفاصلههایش را بررسی کنید. این فقط به شمارش مربوط نیست: «کتاب ها» با فاصله در پایان سطر ممکن است از هم جدا شود و «ها» به سطر بعد برود.
نکتهی دیگر رقمهاست: رقم فارسی (۱۲۳) و لاتین (123) در شمارش کلمه و نویسه یکسان حساب میشوند، اما در پیامک و بسیاری از فرمها یکسان نیستند؛ رقم فارسی در پیامک یونیکد است.
نویسه: آنچه میبینید با آنچه ذخیره میشود یکی نیست
شمردن نویسه هم پیچیدگی دارد. چیزی که روی صفحه یک نویسه به نظر میرسد ممکن است از چند «نقطهی کد» یونیکد ساخته شده باشد، و length سادهی JavaScript باز چیز دیگری را میشمارد:
| نویسه | دیدنی | length در JavaScript | نقطهی کد یونیکد | شمارش در X |
|---|---|---|---|---|
| 👍 | ۱ | ۲ | ۱ | ۲ |
| 🇮🇷 (پرچم) | ۱ | ۴ | ۲ | ۲ |
| 👨👩👧 (خانواده) | ۱ | ۸ | ۵ | ۲ |
شمارندههای سادهای که از length استفاده میکنند، ایموجی خانواده را هشت نویسه میشمارند. شمارندهی ما نویسههایی را میشمارد که واقعاً میبینید، پس هر ایموجی یکی است. پلتفرمها هم قاعدههای خودشان را دارند: در X هر ایموجی دو نویسه و هر لینک، با هر طولی، ۲۳ نویسه حساب میشود.
خیلی از فرمها و دفترهای ترجمه میان نویسهی با فاصله و بدون فاصله فرق میگذارند. شمارندهی ما هر دو را نشان میدهد. اگر محدودیتی نگفته کدام منظور است، فرض کنید فاصلهها هم شمرده میشوند.
یک محتوا به چهار زبان
متن با ترجمه چقدر بلندتر میشود؟ متن اصلی و پرسشهای متداول ده راهنمای نخست این سایت را به هر چهار زبان، با همان قاعدههای شمارندهی خودمان، شمردیم:
| زبان | کلمه | نویسه بدون فاصله | نویسه در هر کلمه | کلمه در مقایسه با انگلیسی | نویسه در مقایسه با انگلیسی |
|---|---|---|---|---|---|
| انگلیسی | ۱۳٬۷۳۶ | ۶۴٬۷۴۸ | ۴٫۷۱ | – | – |
| آلمانی | ۱۳٬۱۰۹ | ۷۴٬۹۱۴ | ۵٫۷۱ | −۴٫۶٪ | +۱۵٫۷٪ |
| اسپانیایی | ۱۵٬۰۳۱ | ۷۱٬۸۳۴ | ۴٫۷۸ | +۹٫۴٪ | +۱۰٫۹٪ |
| فارسی | ۱۴٬۵۱۲ | ۶۱٬۱۴۸ | ۴٫۲۱ | +۵٫۶٪ | −۵٫۶٪ |
نسخهی فارسی حدود ۶ درصد کلمهی بیشتر اما حدود ۶ درصد نویسهی کمتر از انگلیسی داشت: کلمههای فارسی کوتاهاند و مصوتهای کوتاه معمولاً نوشته نمیشوند. آلمانی کمی کلمهی کمتر اما نزدیک ۱۶ درصد نویسهی بیشتر داشت، به خاطر کلمههای مرکب بلندش، و اسپانیایی از هر دو بیشتر. در عمل یعنی: اگر یک متن انگلیسی بهزور روی یک دکمه یا در یک عنوان جا میشود، نسخهی آلمانی یا اسپانیایی آن اغلب جا نمیشود. برای این دو زبان ۱۵ تا ۲۰ درصد جای بیشتر در نظر بگیرید.
پیامک: ۱۶۰ یا ۷۰ نویسه؟
یک پیامک جای ۱۴۰ بایت دارد. با الفبای ۷ بیتی GSM که در استاندارد 3GPP TS 23.038 تعریف شده، این یعنی ۱۶۰ نویسه. این الفبا حروف لاتین، رقمهای لاتین و علائم نگارشی رایج را دارد، اما هیچ حرف یا رقم فارسی ندارد. بعضی نویسهها مثل نماد یورو € و کروشه و آکولاد در جدول گسترشیافتهاند و دو جا میگیرند.
اگر متن حتی یک نویسهی بیرون از این الفبا داشته باشد، کل پیام با یونیکد (UCS-2) و دو بایت برای هر نویسه فرستاده میشود و آنوقت فقط ۷۰ نویسه در یک پیامک جا میشود. پس هر پیامک فارسی حداکثر ۷۰ نویسه دارد، و همینطور هر پیامکی که یک ایموجی داشته باشد. پیامهای بلندتر به چند بخش تقسیم میشوند و گوشی دوباره آنها را کنار هم میگذارد؛ سرآیند اتصال کمی جا میگیرد، برای همین هر بخش ۱۵۳ نویسهی GSM یا ۶۷ نویسهی یونیکد دارد. ایموجیهایی که بیرون از محدودهی پایهی یونیکد هستند دو جا از این ۶۷ را میگیرند. نیمفاصله هم یک جا میگیرد.
یک پیام یادآوری نوبت را به هر چهار زبان حساب کردیم:
| پیام | نویسه | کدگذاری | تعداد پیامک |
|---|---|---|---|
| یادآوری انگلیسی | ۹۴ | GSM | ۱ |
| نسخهی آلمانی (با «ä» در «Bestätigung») | ۱۰۷ | GSM | ۱ |
| نسخهی اسپانیایی با «SÍ» و «llámanos» | ۹۸ | یونیکد، به خاطر «Í» | ۲ |
| همان متن اسپانیایی بدون علامتهای آوایی | ۹۸ | GSM | ۱ |
| نسخهی فارسی | ۱۰۴ | یونیکد | ۲ |
| یادآوری انگلیسی بهاضافهی یک 🙂 | ۹۶ | یونیکد، به خاطر ایموجی | ۲ |
متن فارسی ما ۱۰۴ نویسه دارد و به دو پیامک نیاز دارد، در حالی که نسخهی آلمانی با ۱۰۷ نویسه در یک پیامک جا میشود. همین متن فارسی اگر به ۷۰ نویسه کوتاه شود، یک پیامک کافی است. یک شکلک ساده هم هزینهی پیام انگلیسی را دو برابر کرد.
خواندن چقدر طول میکشد؟
یک فراتحلیل از مارک بریسبارت (Marc Brysbaert، ۲۰۱۹) ۱۹۰ پژوهش دربارهی سرعت خواندن با بیش از ۱۸٬۰۰۰ شرکتکننده را بررسی کرده است. بزرگسالان متنهای غیرداستانی انگلیسی را در سکوت بهطور میانگین با سرعت ۲۳۸ کلمه در دقیقه و متن داستانی را با ۲۶۰ کلمه میخوانند؛ بیشتر خوانندگان در متن غیرداستانی میان ۱۷۵ تا ۳۰۰ کلمه در دقیقهاند. میانگین بلندخوانی ۱۸۳ کلمه در دقیقه بود.
شمارندهی ما زمان خواندن را با ۲۲۰ کلمه در دقیقه تخمین میزند، کمی پایینتر از میانگین، تا کسانی که آهستهتر یا به زبانی جز زبان مادریشان میخوانند جا نمانند. برای زمان بیان، ۱۴۰ کلمه در دقیقه را به کار میبرد که سرعت آرامی برای یک سخنرانی است. پس سخنرانی دهدقیقهای حدود ۱٬۴۰۰ کلمه لازم دارد. به گفتهی بریسبارت، سرعت خواندن در زبانهای دیگر به این بستگی دارد که هر زبان برای گفتن یک مطلب چند کلمه لازم دارد؛ و همانطور که مقایسهی بالا نشان میدهد، این عدد میتواند حدود ۱۰ درصد بالا یا پایین باشد. زمان خواندن راهنماهای فارسی این سایت با ۱۸۰ کلمه در دقیقه حساب میشود.
محدودیتهای رایج در یک نگاه
| چه چیزی | محدودیت | واحد شمارش |
|---|---|---|
| پیامک با الفبای GSM (لاتین) | ۱۶۰ در هر پیام، ۱۵۳ در هر بخش | نویسه (€ و کروشه دو تا حساب میشوند) |
| پیامک یونیکد (فارسی، ایموجی) | ۷۰ در هر پیام، ۶۷ در هر بخش | واحد UTF-16 (ایموجی دو تا) |
| پست در X | ۲۸۰ | نویسه؛ ایموجی دو و هر لینک ۲۳ |
| عنوان (title) در نتایج گوگل | حدود ۵۰ تا ۶۰ نویسه پیش از بریده شدن | پیکسل، نه نویسه |
| توضیح متا در نتایج گوگل | حدود ۱۲۰ تا ۱۵۵ نویسه | پیکسل، نه نویسه |
اینکه عنوانها و توضیحها در نتایج جستوجو چطور بریده میشوند، در راهنمای نوشتن تگ عنوان و توضیحات متا آمده است.
فهرست بررسی پیش از تحویل متن
- روشن کنید محدودیت چه چیزی را میشمارد: کلمه، نویسه با فاصله، نویسه بدون فاصله یا پیامک.
- متن نهایی را در شمارنده بچسبانید، نه پیشنویسی با یادداشت یا تغییرات ردیابیشده.
- در متن فارسی بررسی کنید پیشوندها و نشانههای جمع با نیمفاصله چسبیده باشند.
- در پیامک، حساب کنید: متن فارسی یا هر ایموجی، محدودیت را از ۱۶۰ به ۷۰ نویسه کاهش میدهد.
- برای ترجمه به آلمانی یا اسپانیایی ۱۵ تا ۲۰ درصد جای بیشتر در نظر بگیرید.
- برای سخنرانی و ویدئو، زمان بیان را ملاک بگیرید نه زمان خواندن.
ابزارهای این راهنما
پرسشهای متداول
چرا شمارندههای کلمه برای یک متن عددهای متفاوتی نشان میدهند؟
چون قاعدههای متفاوتی دارند. بعضی هر چه میان فاصلههاست را میشمارند و بعضی قواعد یونیکد برای مرز کلمه را به کار میبرند و کلمههای خطتیرهدار، کوتهنوشتها، ساعت و نشانی وب را جدا میکنند. در آزمایش ما یک جملهی یکسان ۸، ۱۰ یا ۱۲ کلمه شمرده شد. شمارندهی ما هر چه را میان فاصلهها باشد و حرف یا رقم داشته باشد یک کلمه حساب میکند.
نیمفاصله فاصله حساب میشود؟
نه. نیمفاصله کلمه را سرهم نگه میدارد، پس «میخواهم» یک کلمه است. اگر با فاصلهی معمولی تایپ شود، دو کلمه میشود. در پیامک اما نیمفاصله هم یک جا میگیرد.
یک پیامک فارسی چند نویسه جا دارد؟
۷۰ نویسه، چون حروف و رقمهای فارسی در الفبای GSM نیستند و پیام با یونیکد فرستاده میشود. پیامهای بلندتر به بخشهای ۶۷ نویسهای تقسیم میشوند. پیامک فقط با حروف لاتین تا ۱۶۰ نویسه جا دارد، مگر اینکه یک ایموجی در آن باشد.
ایموجیها چطور شمرده میشوند؟
شمارندهی ما هر ایموجی را همانطور که میبینید یک نویسه میشمارد. length در JavaScript بعضی ایموجیها را تا هشت میشمارد، X هر ایموجی را دو حساب میکند و در پیامک یک ایموجی کل پیام را یونیکد میکند.
رقم فارسی با رقم لاتین فرقی دارد؟
در شمارش کلمه و نویسه نه. اما در پیامک رقم فارسی بیرون از الفبای GSM است و پیام را یونیکد میکند، و بعضی فرمها و سامانهها فقط رقم لاتین را میپذیرند.
متنی که در شمارنده میچسبانم جایی بارگذاری میشود؟
نه. ابزار شمارش کلمات کاملاً در مرورگر شما اجرا میشود. متن روی دستگاه خودتان شمرده میشود و به هیچ جایی فرستاده نمیشود.
منابع و مطالعهی بیشتر
- ETSI TS 123 038 / 3GPP TS 23.038 – Alphabets and language-specific information (GSM 7-bit alphabet) (www.etsi.org)
- Unicode Standard Annex #29 – Unicode Text Segmentation (word boundaries) (www.unicode.org)
- X Developer Platform: Counting characters (docs.x.com)
- Brysbaert, M. (2019): How many words do we read per minute? A review and meta-analysis of reading rate. Journal of Memory and Language 109 (doi.org)