# מסנן ספאם רב-לשוני

מסנני ספאם רבים נבנו עבור אנגלית. ספאם בשפות אחרות חומק מהם, ודואר רגיל בשפות אחרות מסומן בגלל הכתב שלו. Spam Scanner בנוי כדי להימנע משני הדברים.


## קריאת המילים

המילים מזוהות בעזרת `Intl.Segmenter`, כללי גבולות המילים של Unicode עם מילונים לסינית, יפנית, תאית, לאו, חמרית ובורמזית. משפט בסינית הופך למילים כמו 恭喜, 获得 ו-大奖, ולא למחרוזת ארוכה אחת שלעולם לא חוזרת.

הסוואות מבוטלות לפני הספירה: תווים בלתי נראים בתוך מילים, אותיות קיריליות או יווניות בתוך מילים לטיניות (`pаypal`), ספרות במקום אותיות (`v1agra`), ואותיות מתמטיות או מוקפות (𝐅𝐑𝐄𝐄). כל הסוואה היא גם סימן בפני עצמו.


## לא לסמן את מה שהוא לא מכיר

מאגרי ספאם ציבוריים מכילים הרבה יותר ספאם בשפות זרות מאשר ham בשפות זרות, ולכן מסווג תמים לומד שטקסט בערבית או בקוריאנית כשלעצמו הוא ספאם. Spam Scanner אף פעם לא משתמש בשפה כסימן, שוקל כל מילה מול ספירות הספאם וה-ham של השפה שלה, ונשאר „לא בטוח” ביחס למיעוט ה-ham שראה בשפה.

בבדיקה על הודעות SMS ב-21 שפות שהמודל המצורף מעולם לא ראה, זה הוריד לאפס את החיוביות השגויות שלו בסינית, ערבית, קוריאנית, יפנית, הינדי, בנגלית, אורדו, טורקית, אוקראינית ושוודית.


## תפיסת ספאם בכל שפה

* **בדיקות שלא קוראות מילים:** דומיינים מתחזים, קישורים מטעים, קבצי הרצה, פקודות מאקרו, SPF,‏ DKIM,‏ DMARC ורשימות שחורות.
* **מודל שפה** להודעות „לא בטוח”. מודלים פתוחים כמו Qwen 3.5 ו-Gemma 4 קוראים 140 עד 200 שפות; בדיקות הקצה-לקצה בודקות ספאם ו-ham בסינית, ערבית, קוריאנית, הינדי ותאית מול מודל אמיתי.
* **הדואר שלכם.** כמה מאות הודעות מכל סוג בשפה מסוימת נותנות למודל שאומן על הדואר שלכם ביטחון מלא בה.

```sh
spamscanner scan message.eml --llm ollama --llm-model qwen3.5:4b
spamscanner train --spam ~/Maildir/.Junk --ham ~/Maildir/cur --out my-model.json
```

כדי לקבל רק חלק מהשפות, `--allow-language en,de` מוסיף נקודות לדואר שזוהה בביטחון בכל שפה אחרת.

[שפות בפירוט](https://spamscanner.net/he/docs/languages/)
