מונה טוקנים
סופר כמה טוקנים עולה הטקסט שלכם מול הקידוד האמיתי של המודל, בדפדפן שלכם. שום דבר לא נשלח לשרת, ואף מספר כאן אינו הערכה.
שום דבר שתדביקו כאן לא יוצא מהדפדפן הזה. אוצר המילים של הקידוד שתבחרו נטען מהאתר פעם אחת, והספירה עצמה רצה בתהליך נפרד בלשונית הזאת — פתחו את חלונית הרשת שלכם והסתכלו: אף בקשה לא נושאת את הטקסט שלכם.
בחרו את המודל שאתם באמת מכוונים אליו. מודל משתמש בקידוד, כמה מודלים חולקים קידוד אחד, וספירה שייכת לקידוד ולא לשם.
o200k_baseהדביקו או הקלידו משהו למעלה, וספירת הטוקנים המדויקת תופיע כאן.
מה זה בעצם טוקן
מודל שפה אינו קורא את הטקסט שלכם כאותיות ואינו קורא אותו כמילים. לפני שקורה כל דבר אחר, הטקסט נחתך לטוקנים, וטוקן הוא רצף בתים שיש למודל מספר יחיד עבורו. חלק מהטוקנים הם באמת מילים שלמות. רבים מהם הם מילה יחד עם הרווח שלפניה, ולכן אותה מילה עצמה יכולה לעלות אחרת לפי מה שבא לפניה. אחרים הם סיומת, סימן פיסוק, הזחה או שבר שאינו חלק משום דבר שקורא היה נוקב בשמו. החיתוך נעשה לפי טבלה שנבנתה מספירה של אילו רצפים מופיעים יחד בתדירות הגבוהה ביותר בגוף טקסט גדול, ושום דבר בה לא תוכנן להתאים לאופן שבו מישהו כותב.
- טוקן הוא רצף בתים ולא רצף תווים. ההבחנה הזאת נשמעת קטנונית עד שכותבים מחוץ לאלפבית הלטיני, ושם היא כל הסיפור.
- מילה אנגלית נפוצה היא בדרך כלל טוקן אחד. מילה נדירה, שם, קוד מוצר או שגיאת הקלדה הם כמה טוקנים, משום שלטבלה אין ערך עבור כולה והיא נאלצת להרכיב אותה מחלקים קצרים יותר.
- רווח לבן אינו חינם. הזחה, שורות ריקות והרווחים שבתוך טבלה מודבקת הם כולם בתים, וכולם נספרים. פרומפט שנראה מסודר יכול לעלות משמעותית יותר מאותו פרומפט עצמו כשהוא כתוב שטוח.
- הספירה תלויה בבתים המדויקים ובשום דבר אחר. שני טקסטים שנראים זהים על המסך אך נבדלים בתו בלתי נראה — רווח בלתי שביר, סימן סדר בתים, גרש מסוג אחר — הם שני טקסטים שונים ויכולים להגיע לשני מספרים שונים.
זו הסיבה שכלל האצבע שכולם חוזרים עליו — לחלק את מספר התווים בארבע — אינו כלל של ממש. זהו ממוצע אחד על סוג טקסט אחד בשפה אחת, והוא שגוי בכיוון שעולה כסף ברגע שהטקסט שלכם הוא קוד, טבלה, רשימת מזהים או כתוב בכל שפה שאינה אנגלית. המספר שבדף הזה אינו הממוצע ההוא. הוא החיתוך האמיתי, שנעשה בידי הטבלה האמיתית, בדפדפן שלכם.
הקידוד הוא מה שסופר
הטבלה וכללי המיזוג שלצידה נקראים יחד קידוד, ולקידוד יש שם משלו. השם הזה הוא מה ששווה ללמוד, משום שהספירה שייכת לו ולא לשום מודל: כמה מודלים חולקים קידוד אחד, ומודל שמוחלף בחדש יותר שומר לעיתים קרובות מאוד על הקידוד של קודמו. כשהדף הזה מציג לכם מספר, הוא מציג לצידו את הקידוד שתחתיו המספר חושב, ממש ליד המודל שבחרתם.
- מודל משתמש בקידוד. המיפוי הוא רבים-לאחד, ולכן לדעת באיזה קידוד המודל שלכם משתמש אומר יותר מלדעת מהו המודל עצמו.
- לקידוד יש שם משלו שפורסם ברבים, כמו o200k_base, והשם הזה מציין את אותה טבלה בכל מקום שבו תפגשו בו. ספירה שנלקחה תחת קידוד מסוים בדף הזה וספירה שנלקחה תחת אותו קידוד בכל מקום אחר מסכימות ביניהן, וזה מה שהופך ספירה שהקידוד שלה מצורף אליה לניתנת לבדיקה בכלל.
- ספירה משמעותית רק כשהקידוד מצורף אליה. מספר שמצוטט עם שם מודל ובלי קידוד הוא מספר שאי אפשר לבדוק, וזה מה שרוב הדפים בנושא הזה נותנים לכם.
ההשלכה המעשית מפתיעה אנשים: מעבר בין שני מודלים שחולקים קידוד לא יזיז את המספר כלל, וזה הכלי שצודק ולא הכלי שמקולקל. אם אתם רוצים לראות ספירה משתנה, עליכם להחליף את הקידוד ולא את שם המודל.
למה טקסט שאינו אנגלית עולה יותר
כאן החלק ששום דף שאנגלית היא נקודת המוצא שלו לא יספר לכם, וזו הסיבה שהדף הזה קיים. הקידודים שבשימוש פועלים ברמת הבית: הם עובדים על בתי ה־UTF-8 של הטקסט שלכם ולא על התווים שלו. אות לטינית היא בית אחד. אות עברית, ערבית, יוונית או קירילית היא שניים. תו סיני, יפני או קוריאני הוא שלושה. אמוג'י הוא ארבעה, ודגל או משפחה המחוברים יחד הם כמה כאלה ברצף. כך שעוד לפני שנפתחה טבלה כלשהי, אותו משפט עצמו כבר מונה פי שניים או פי שלושה בתים בשפה אחת מאשר באחרת.
- הטבלאות נבנו מספירת רצפים בגוף טקסט שהוא אנגלי ברובו המכריע, ולכן מילים אנגליות קיבלו ערכים ומילים בשפות אחרות לעיתים קרובות לא. שפה שלמילים הנפוצות שלה אין ערך משלהן מאויתת בשברים.
- זה מצטבר על עלות הבתים ולא בא במקומה. מילה שצריך להרכיב משלושה שברים, שכל אחד מהם הוא שניים או שלושה בתים, יקרה פעמיים.
- ההשפעה אינה אחידה בין השפות שאינן אנגלית. כתב שיש לו רצפים תכופים משלו בטבלה מסתדר הרבה יותר טוב מכתב שכמעט לא היה מיוצג, והדרך היחידה לדעת היכן שלכם עומד היא להדביק טקסט משלכם ולהסתכל.
- זו הסיבה שתקציב שחושב באנגלית אינו תקף לשפה שלכם. אם אמרו לכם שחלון הקשר מכיל מספר עמודים מסוים, הנתון ההוא נמדד כמעט בוודאות באנגלית, והשפה שלכם לא תגיע אליו.
שום דבר מזה אינו פגם שאפשר לעקוף בכתיבה אחרת, וזו גם אינה סיבה לכתוב באנגלית. זו עלות שאתם אמורים להיות מסוגלים לראות לפני שאתם מתחייבים אליה, וזו כל עבודתו של המספר שלמעלה.
תו יכול להיחתך בין כמה טוקנים
מכיוון שטוקן הוא רצף בתים ותו שמחוץ לאלפבית הלטיני הוא כמה בתים, תו יחיד נחתך לשניים באופן קבוע: הבתים הראשונים שלו נופלים בטוקן אחד והאחרונים בזה שאחריו. אף אחד משני הטוקנים האלה אינו טקסט בפני עצמו. הדפסה שלהם כאילו היו כזה היא מה שמייצר את שורת תווי ההחלפה שאולי ראיתם בדפים אחרים שמבטיחים להראות לכם את הטוקנים שלכם, והיא הורסת בדיוק את התובנה שהתמונה הייתה אמורה לתת.
ולכן האתר הזה מצייר בלוק במקום זה: רצף הטוקנים הרצופים הקצר ביותר שהבתים שלו מתפענחים לטקסט שלם. בדרך כלל זהו טוקן אחד. במקום שבו תו נחתך זה שניים או יותר — עד ארבעה, עבור תו שהוא ארבעה בתים ונחתך בית אחר בית — והבלוק מצויר בשלמותו כשמספר הטוקנים שבתוכו כתוב לצידו, כך שאתם רואים את החיתוך במקום שהתו יאבד בתוכו. הספירה לעולם אינה מושפעת מכל זה. חיתוך הוא עובדה על האופן שבו נחתכו הבתים, והסך הכול הוא הסך הכול.
לקרוא את התמונה של הטקסט שלכם
מתחת לספירה, הטקסט שלכם מצויר פעם שנייה כשגבולות הטוקנים שלו גלויים. כל בלוק בתמונה הזאת הוא היחידה שתוארה למעלה, הבלוקים רצים בסדר שבו כתבתם אותם, ושום דבר אינו מושמט או מקוצר — כך שמה שאתם מסתכלים בו הוא הטקסט שלכם עצמו ולא רשימת שברים שנלקחו מתוכו. זו השאלה שהמספר אינו יכול לענות עליה: לא כמה עולה הדבר כולו, אלא אילו חלקים ממנו הם היקרים.
- בלוק שאין עליו מספר הוא טוקן יחיד, וזה המקרה הרגיל. הוא מושאר בלי סימון במכוון: ספרה על כל בלוק הייתה חומת ספרות מעל המשפטים שלכם עצמכם והייתה קוברת את הבלוקים ששווה להסתכל בהם. הגבול הוא הקריאה, וההצללה היא מה שגורם לבלוק אחד להסתיים ולזה שאחריו להתחיל.
- בלוק שנושא מספר קטן מכסה יותר מטוקן אחד, ושם תו נחתך על פני גבול. התו עדיין שם, מצויר בשלמותו, ומספר הטוקנים שהוא עלה כתוב לצידו — כך שחיתוך מופיע כעלות ולא כנזק לטקסט שלכם. אמוג'י או תו מכתב עתיק יכולים להגיע לארבעה.
- רווחים, מעברי שורה והזחה מצוירים ככל דבר אחר, משום שהם נספרים ככל דבר אחר. רצף בלוקים על מה שנראה כמו כלום בכלל הוא החלק הזול ביותר לתיקון בפרומפט ארוך, והוא בלתי נראה עד שאפשר לראות אותו.
- החלפת המודל מעצבת מחדש את התמונה בכל פעם שהיא מחליפה את הקידוד, ומשאירה אותה בדיוק כפי שהייתה בכל פעם שלא. זו אותה עובדה שהמספר מראה, בצורה שבה אפשר לראות היכן נופל ההבדל ולא רק שיש הבדל.
טקסט ארוך מאוד מצויר רק עד גבול מסוים, ובמקום שבו הציור נעצר הדף אומר כמה בלוקים צייר מתוך כמה. הספירה לעולם אינה מוגבלת באותו אופן: היא על כל מה שהדבקתם, בכל אורך, ושום דבר בתמונה אינו מגיע אליה. הגבול קיים משום שדפדפן פורש את הבלוקים בזה אחר זה ומסמך שלם היה יותר בלוקים מכפי ששום דף יכול להראות בצורה מועילה — כך שמה שאתם מאבדים מעבר לנקודה ההיא הוא התמונה של השאר, לעולם לא התשובה עליו.
למה מודלים מסוימים אינם נושאים כאן מספר
לא כל מודל אפשר לספור בדפדפן שלכם, והדבר ההגון לעשות עם זה הוא לומר אילו ולמה, ולא להציג לכם מספר שנוחש. יש שלושה מצבים שמודל יכול להיות בהם בדף הזה, והם מובחנים זה מזה על המסך ולא מטושטשים יחד.
- הקידוד שלו פורסם והאתר הזה מגיש אותו. אתם מקבלים ספירה מדויקת, שחושבה כאן, מול הטבלה האמיתית.
- הקידוד שלו פורסם והאתר הזה אינו מגיש אותו. השורה נוקבת בשם הקידוד ואומרת למה — לרוב משום שהקובץ פורסם בידי מי שאינו מצהיר על רישיון המתיר לאיש אחר לפרסם אותו מחדש. הטבלה קיימת; הסירוב הוא שלנו, והשורה אומרת זאת.
- הקידוד שלו מעולם לא פורסם כלל. אין טבלה להגיש ואין טבלה לסרב לה, ולכן שום דף בשום מקום אינו יכול לספור את המודל הזה בדפדפן שלכם, מה שלא יטען. השורה אומרת זאת, ואינה נושאת מספר, הערכה או טווח.
השורה האחרונה היא המקום שבו רוב הדפים בנושא הזה מרמים בשקט: הם מריצים את הטקסט שלכם דרך הטבלה של מודל אחר ומציגים את התוצאה כאילו הייתה מדידה. זה לא רק לא מדויק, זה מוטה, וההטיה גרועה ביותר בדיוק על הטקסט שהכי קשה לתקצב — קוד, וכל מה שאינו כתוב באנגלית. הספירה המדויקת עבור מודל כזה מגיעה משירות ספירת הטוקנים של היצרן שלו עצמו, שדורש מפתח API שדף הרץ כולו בדפדפן שלכם אינו יכול להחזיק ולעולם אסור לו לבקש מכם. לפנות לשירות ההוא היא התשובה ההגונה, והיא זו שהדף הזה נותן לכם במקום מספר.
להפוך ספירה לעלות בעצמכם
הדף הזה אינו נוקב במחירים, וזה במכוון: מחיר מתיישן מהר מכל דבר אחר בנושא הזה, ומחיר מיושן אינו משאיר דף חסר אלא משאיר אותו שקרי. מה שאינו מתיישן הוא החישוב, אז הנה הוא, ואתם יכולים להחיל אותו על מה שהדף של הספק עצמו אומר היום.
- ספקים נוקבים בתעריף למיליון טוקנים. קחו את הספירה מהדף הזה, חלקו במיליון, והכפילו בתעריף ההוא. זו העלות של שליחת הטקסט פעם אחת.
- קלט ופלט מתומחרים בנפרד, והפלט הוא בדרך כלל היקר מבין השניים. הדף הזה סופר את מה שאתם שולחים. הוא אינו יכול לספור תשובה שעדיין אינה קיימת, ולכן כל עלות שתחשבו ממנו היא רצפה ולעולם לא סך הכול.
- שיחה שולחת מחדש את ההיסטוריה שלה. אם הטקסט שלכם הוא הודעת מערכת שנוסעת עם כל תור, הכפילו במספר התורים שאתם מצפים להם, ושוב במספר המשתמשים, לפני שאתם מחליטים אם קיצור שלה שווה חצי יום עבודה.
אותה ספירה עונה גם על השאלה השנייה שאנשים מביאים לכאן, והיא אם טקסט ייכנס. גם על זה הדף הזה לא יענה לכם, משום שחלון הקשר הוא נתון שזז והבטחה על כניסה היא הבטחה ששום כלי שאינו המודל עצמו אינו יכול לקיים. מה שהוא נותן לכם הוא המספר שמולו אפשר להשוות כל נתון שהספק מפרסם.
שום דבר שאתם מדביקים אינו יוצא מהדפדפן שלכם
הספירה קורית בדף שכבר טענתם. הטבלה של הקידוד שבחרתם נטענת פעם אחת מהאתר הזה — וזו טעינה של קובץ ולא העלאה של הטקסט שלכם — וכל מה שאחריו רץ על המכונה שלכם עצמכם, בתהליך נפרד כדי שמסמך ארוך לא יקפיא את הלשונית. פתחו את חלונית הרשת של הדפדפן והסתכלו תוך כדי הקלדה: אף בקשה אינה יוצאת ונושאת את מה שכתבתם.
וזה מה שמאפשר להדביק בבטחה את הדבר שאתם באמת רוצים לספור — פרומפט של לקוח, הודעת מערכת פנימית, מקטע ממסמך פרטי — ולא גרסה מנוקה שלו שממילא הייתה מגיעה למספר אחר. שום דבר גם אינו נשמר: טענו את הדף מחדש והשדה ריק, אין היסטוריה ואין מה למחוק אחר כך.
שאלות נפוצות
- האם טוקן הוא אותו דבר כמו מילה?
- לא, וחשיבה כאילו כן היא הדרך הנפוצה ביותר לטעות בתקציב. מילה אנגלית נפוצה היא לעיתים קרובות טוקן יחיד, אבל מילה נדירה, שם או שגיאת הקלדה הם כמה, מילה נושאת בדרך כלל את הרווח שלפניה בתוך אותו טוקן עצמו, וסימני פיסוק והזחה נספרים ככל דבר אחר. מחוץ לאנגלית הפער גדול בהרבה, משום שטוקן הוא רצף בתים ותו יחיד הוא לעיתים קרובות שניים, שלושה או ארבעה בתים עוד לפני שנפתחה טבלה כלשהי.
- אפשר פשוט לחלק את מספר התווים בארבע?
- רק אם אתם כותבים פרוזה אנגלית ולא אכפת לכם לטעות בהפרש ניכר. הנתון ההוא הוא ממוצע על סוג טקסט אחד בשפה אחת. קוד מקור, טבלאות, רשימות מזהים וכל דבר שכתוב בכתב אחר שוברים אותו, והם שוברים אותו בכיוון שעולה יותר ולא פחות. המספר בדף הזה הוא החיתוך האמיתי שנעשה בידי הטבלה האמיתית, ולכן אין סיבה להעריך כשאפשר למדוד.
- למה הספירה אינה משתנה כשאני מחליף מודל?
- משום ששני המודלים האלה משתמשים באותו קידוד, והקידוד הוא מה שסופר. זה רגיל ואינו תקלה: מודל חדש יותר יורש לעיתים קרובות מאוד את הטבלה של קודמו, וכמה מודלים של יצרן אחד חולקים אחת. הקידוד מוצג לצד הספירה בדיוק מהסיבה הזאת — אם השם אינו משתנה כשאתם מחליפים, גם המספר לא ישתנה.
- למה השפה שלי עולה כל כך הרבה יותר טוקנים מאנגלית?
- שתי סיבות שמצטברות זו על זו. הקידודים עובדים על בתי UTF-8, ואות שמחוץ לאלפבית הלטיני היא שניים, שלושה או ארבעה בתים במקום שבו אות לטינית היא אחד. והטבלאות נבנו מספירת רצפים בגוף טקסט שהיה אנגלי ברובו המכריע, ולכן למילים אנגליות יש ערכים משלהן בעוד שמילים בשפות אחרות מורכבות לעיתים קרובות משברים. מילה העשויה משלושה שברים של שלושה בתים כל אחד יקרה פעמיים. הדביקו טקסט משלכם למעלה ותראו היכן השפה שלכם באמת עומדת.
- למה אין מספר לאחד המודלים ברשימה?
- משום שהקידוד שלו מעולם לא פורסם, ולכן אין טבלה שהדף הזה — או כל דף אחר שרץ בדפדפן שלכם — יכול לספור מולה. דף שמציג לכם מספר עבור מודל כזה מריץ את הטקסט שלכם דרך הטבלה של מודל אחר ומציג ניחוש כמדידה. הניחוש ההוא סופר בחסר, והוא סופר בחסר גרוע ביותר על קוד ועל טקסט שאינו אנגלית, וזה בדיוק המקום שבו הייתם צריכים שיהיה נכון.
- מהיכן מגיעה אם כן הספירה המדויקת למודל ההוא?
- משירות ספירת הטוקנים של יצרן המודל עצמו. זהו המקור היחיד שיכול להיות מדויק, משום שרק ליצרן יש את הטבלה. הוא דורש מפתח API, שדף הרץ כולו בדפדפן שלכם אינו יכול להחזיק ואסור לו לבקש מכם — ולכן הדבר ההגון שהדף הזה יכול לעשות הוא לומר לכם לאן ללכת ולא להמציא מספר. אם אתם כבר קוראים למודל ההוא מהקוד שלכם, אותו מפתח שאתם משתמשים בו שם יענה גם על זה.
- האם רווחים, מעברי שורה והזחה נספרים?
- כן, כולם, והם יכולים להצטבר ליותר מכפי שאנשים מצפים. קוד מוזח, שורות ריקות בין פסקאות והריפוד שבתוך טבלה מודבקת הם כולם בתים, ולקידודים אכן יש טוקנים לכמה רווחים בבת אחת, ולכן העלות אינה טוקן אחד לרווח — אבל היא גם אינה כלום. אם אתם מקצצים הודעת מערכת ארוכה, שווה למדוד עיצוב מחדש שלה לפני שאתם מתחילים לחתוך משפטים.
- האם הטקסט שלי נשלח לשרת?
- לא. הטבלה של הקידוד שבחרתם נטענת פעם אחת מהאתר הזה, ואחרי זה כל ספירה מחושבת בדפדפן שלכם עצמכם, בתהליך נפרד. פתחו את חלונית הרשת שלכם והסתכלו תוך כדי הקלדה: אף בקשה אינה נושאת את מה שכתבתם. שום דבר גם אינו נשמר, ולכן טעינה מחדש של הדף משאירה שדה ריק ואין מה למחוק.
- זה יאמר לי כמה עולה הפרומפט שלי, או אם הוא נכנס?
- לא ולא, ושני הסירובים במכוון. מחיר היה מתיישן תוך חודשים ושום דבר כאן לא היה יכול לתפוס אותו, ולכן המדריך מלמד את החישוב במקום זה ומשאיר את התעריף לדף של הספק עצמו. חלון הקשר הוא נתון זז מאותו סוג, והאם טקסט נכנס תלוי גם בתשובה, שהדף הזה אינו יכול לראות. מה שאתם מקבלים הוא המספר האחד ששתי השאלות מתחילות ממנו, מחושב במדויק.
כלים קשורים
- אורך מחרוזת
ספירת תווים, מילים ושורות — מודע ל־Unicode.
- בודק ביטויים רגולריים
בדיקת ביטויים רגולריים — התאמה, החלפה ופיצול.
- השוואת טקסטים
השוואת שני טקסטים — כל שורה ומילה שהשתנו.
- בוחן תווי יוניקוד
לראות בדיוק מאילו תווים בנויה מחרוזת.