# ตัวกรองสแปมหลายภาษา

ตัวกรองสแปมจำนวนมากสร้างมาสำหรับภาษาอังกฤษ สแปมภาษาอื่นจึงหลุดรอดไปได้ และอีเมลทั่วไปภาษาอื่นถูกตีว่าเป็นสแปมเพราะระบบอักษร Spam Scanner สร้างมาเพื่อหลีกเลี่ยงทั้งสองปัญหา


## อ่านคำ

คำถูกแยกด้วย `Intl.Segmenter` ซึ่งใช้กฎขอบเขตคำของ Unicode พร้อมพจนานุกรมสำหรับภาษาจีน ญี่ปุ่น ไทย ลาว เขมร และพม่า ประโยคภาษาจีนจะกลายเป็นคำอย่าง 恭喜, 获得 และ 大奖 ไม่ใช่สตริงยาวสตริงเดียวที่ไม่เคยซ้ำ

การอำพรางถูกแปลงกลับก่อนนับ: อักขระที่มองไม่เห็นภายในคำ ตัวอักษรซีริลลิกหรือกรีกภายในคำภาษาละติน (`pаypal`) ตัวเลขแทนตัวอักษร (`v1agra`) และตัวอักษรทางคณิตศาสตร์หรือตัวอักษรในกรอบ (𝐅𝐑𝐄𝐄) การอำพรางแต่ละแบบเป็นเบาะแสในตัวเองด้วย


## ไม่ตีสิ่งที่ไม่รู้จักว่าเป็นสแปม

ชุดข้อมูลสแปมสาธารณะมีสแปมภาษาต่างประเทศมากกว่า ham ภาษาต่างประเทศมาก ตัวจำแนกแบบง่าย ๆ จึงเรียนรู้ว่าข้อความภาษาอาหรับหรือเกาหลีเองคือสแปม Spam Scanner ไม่ใช้ภาษาเป็นเบาะแสเลย ชั่งน้ำหนักแต่ละคำเทียบกับจำนวนสแปมและ ham ในภาษาของคำนั้นเอง และคงสถานะ "ไม่แน่ใจ" ตามสัดส่วนของ ham ที่เคยเห็นน้อยในภาษานั้น

ในการทดสอบกับข้อความ SMS ใน 21 ภาษาที่โมเดลที่มาพร้อมแพ็กเกจไม่เคยเห็น วิธีนี้ทำให้ผลบวกลวงในภาษาจีน อาหรับ เกาหลี ญี่ปุ่น ฮินดี เบงกาลี อูรดู ตุรกี ยูเครน และสวีเดนลดลงเหลือศูนย์


## จับสแปมได้ทุกภาษา

* **การตรวจที่ไม่ต้องอ่านคำ:** โดเมนเลียนแบบ ลิงก์หลอกลวง ไฟล์โปรแกรม มาโคร SPF, DKIM, DMARC และ blocklist
* **โมเดลภาษา** สำหรับข้อความที่ไม่แน่ใจ โมเดลแบบเปิดอย่าง Qwen 3.5 และ Gemma 4 อ่านได้ 140 ถึง 200 ภาษา การทดสอบแบบ end-to-end ตรวจสแปมและ 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/th/docs/languages/)
