כלי לספירת מילים וניתוח טקסט

כלי לספירת מילים וניתוח טקסט

  • פרסומת

לחץ להדגמה

ספירת מילים הוא תהליך חשוב בבניית אתרים ושיפור האופטימיזציה למנועי החיפוש (SEO). מנועי החיפוש מדרגים את תוצאות החיפוש בין היתר על פי כמות התוכן והרלוונטיות שלו בהתאם למחרוזת החיפוש. איך בדיוק נקבעת הרלוונטיות של התוכן? שאלה מעולה! אך התשובה אינה כל כך פשוטה: מנועי החיפוש משתמשים בדרכים רבות – האלגוריתמים האחראיים על כך מאד מורכבים ואופן פעולתם בד"כ נשמר בסוד. אך עניין ידוע וגלוי הוא, שאחת הדרכים היא על ידי ספירת מילות מפתח בטקסט, אשר מעידה על הרלוונטיות של האתר בהקשר למחרוזת החיפוש. אתם בטח חושבים לעצמכם ברגע זה – "למה לא למלא את כל תוכן המאמר במילות מפתח?" הבעיה היא שמנועי החיפוש אינם תמימים, ויעלו על התרמית במהרה. לפיכך, כל שנותר הוא לכתוב תוכן אמיתי, ולנסות לנסח אותו תוך שימוש במילות המפתח הרצויות. בשביל זה בניתי את התוכנה הבאה.

ספירת מילים

התוכנה הינה כלי פשוט לספירת מילים, המיועד בעיקר בשביל שיפור ה- seo של האתר. הכלי מתריע כאשר מספר המילים במאמר נמצא בטווח של כמות המילים הרצויה לדרוג טוב במנועי החיפוש.
בנוסף, הכלי מציג רשימה של מילות מפתח (המילים הכי דומיננטיות בקטע) כולל מספר החזרות של כל מילה, ומדגיש מתוכן את מילות הקישור. כך ניתן לדעת על פי אילו מילות מפתח יסווגו מנועי החיפוש את המאמר.
את התוכנה בניתי בהחלה בתור התלמדות, והיא אפשרה ספירת מילים בלבד. לאחר מחשבה רבה החלטתי להוסיף מספר אפשרויות לכלי בכדי להפוך אותו ליותר שימושי. כעת הכלי גם סופר את המילים הייחודיות (מתעלם מחזרות) ומציג רשימה של מילים דומיננטיות המשמשות כמילות המפתח של המאמר – בדיוק כפי שמנועי החיפוש מנתחים את המאמרים לפני שהם נכנסים לאינדקס שלהם.
זהו כלי שימושי מאד לבוני אתרים. אני ממליץ להזין לתוכנה (להעתיק ולהדביק) את המאמר אותו אתם קוראים ברגע זה ולראות את התוצאה.

רשימת תכונות:
  1. סופר את המילים בקטע טקסט מסוים
  2. כשהכלי סופר את המילים, ניתן לראות את המספרים עולים (אנימציה)
  3. תיבת המספרים נצבעת באדום אם מספר המילים נמוך מדי ובירוק אם מספר המילים מעל למינימום הנדרש
  4. ניתן לבחור את כל הטקסט בלחיצה על "בחר הכל"
  5. ניתן לנקות את השדה בלחיצה על "נקה שדה"
  6. מציג רשימה של מילים דומיננטיות
  7. סופר את המילים הייחודיות
  8. מדגיש את מילות הקישור באדום

נכתב עם השפות הבאות:

  • HTML
  • JavaScript
  • CSS

פירוט הקוד

להלן חלק מהפונקציות בהן השתמשתי בכלי לספירת מילים. אני חושב שהן יכולות להיות שימושיות במקרים רבים:

ספירת מילים

function numOfWords(text) {
    if(text != null && text != '') 
        return text.match(/\S+/g).length; //match any none space character
    else return 0;
}

ספירת כל התווים ללא רווחים

הפונקציה הבאה סופרת את כל התווים (כולל תווים מיוחדים) אך ללא רווחים.

// Count number of characters without spaces
function numOfchars(text) {
    return text.replace(/\s/g, "").length;
}

ספירת כל התווים

הפונקציה הבאה סופרת את כל התווים, כולל תווים מיוחדים ורווחים.

// Count the total number of characters
function numOfcharsAndSpaces(text) {
    return text.length;
}

מציאת מספר השורות

הפונקציה הבאה סופרת את מספר השורות \n.

// Count the number of lines
function numOfLines(text) {
    var lines = text.split(/\r\n|\r|\n/);
    return lines.length;
}

חלוקת הטקסט למילים ללא תווים מיוחדים

הפונקציה הבאה מסירה את כל התווים המיוחדים מהטקסט, ואז מחלקת אותו למערך (Array) של מילים.

// Convert the input text into an array of words
function getWords(text) {
    // Remove all special characters
    var temp = text.replace(/[-–'`[email protected]#$%^&*()_|+=?;:'",.<>\{\}\[\]\\\/]+/gi, '');
    
    // Split into words using whitespaces as delimiter
    var words = temp.split(/[\s\r\n\t]+/);
    
    return words;
}

מציאת מילים ייחודיות (השמטת מילים שחוזרות על עצמן)

הפונקציה הבאה לוקחת מערך (Array) ומבטלת את החזרות בתוכו ובכך יוצרת מערך של מחרוזות ייחודיות.

// Make the array unique
function ArrUnique(text) {
   var u = {}, a = [];
   for(var i = 0, l = text.length; i < l; ++i){
      if(u.hasOwnProperty(text[i])) {
         continue;
      }
      a.push(text[i]);
      u[text[i]] = 1;
   }
   return a;
}

ספירת מילים ייחודיות

הפונקנציה הבאה משתמשת בפונקציה הקודמת ומחזירה את מספר המילים הייחודיות.

// Get the number of unique words
function numUniqueWords(text) {
    var words = getWords(text);
    
    // Make the array unique
    words = ArrUnique(words);
    
    return words.length;
}