ภาษา
สแปมมาในทุกภาษา อีเมลทั่วไปก็เช่นกัน Spam Scanner อ่านได้ทั้งสองแบบ และระมัดระวังกับภาษาที่รู้จักน้อย: ตัวกรองสแปมที่ตีข้อความภาษาอาหรับหรือภาษาจีนทุกข้อความว่าเป็นสแปมแย่กว่าการไม่มีตัวกรองเลย
อ่านได้ทุกระบบอักษร#
- คำ ข้อความถูกแบ่งด้วย
Intl.Segmenterซึ่งใช้กฎขอบเขตคำของ Unicode และใช้พจนานุกรมสำหรับภาษาจีน ญี่ปุ่น ไทย ลาว เขมร และพม่า ซึ่งเป็นระบบอักษรที่เขียนโดยไม่เว้นวรรค ข้อความยาวจะถูกแบ่งเป็นชิ้นก่อน เพราะตัวตัดคำใน Node.js 18 ทำงานช้าลงกับสตริงที่ยาวมาก - การปรับให้เป็นมาตรฐาน Unicode NFKC แปลงตัวอักษรเต็มความกว้างและตัวอักษรตกแต่งส่วนใหญ่ (𝐅𝐑𝐄𝐄, Ⓕⓡⓔⓔ) เป็นตัวอักษรธรรมดา ข้อความถูกแปลงเป็นตัวพิมพ์เล็กตามกฎของ Unicode
- การอำพราง อักขระที่มองไม่เห็นภายในคำ (
freeที่มีช่องว่างความกว้างศูนย์อยู่ระหว่างตัวอักษรสองตัว, soft hyphen) ถูกลบออกและนับไว้ คำที่ใช้ตัวอักษรหลายระบบปนกัน เช่นpаypalที่ใช้ а แบบซีริลลิก ถูกแปลงกลับเป็นระบบเดียวและนับไว้ ตัวเลขที่ใช้แทนตัวอักษร (v1agra) ถูกแปลงกลับ การอำพรางแต่ละแบบเป็นคุณลักษณะของตัวเอง และอักขระที่มองไม่เห็นตั้งแต่สามตัวขึ้นไป หรือคำที่ใช้อักษรปนกันตั้งแต่สองคำขึ้นไป จะเพิ่มคะแนนด้วย
ตรวจหาภาษา#
ภาษาของแต่ละข้อความตรวจหาจากระบบอักษร และสำหรับระบบอักษรที่หลายภาษาใช้ร่วมกัน ตรวจจากตัวอักษร:
- อักษรฮันกึลคือภาษาเกาหลี ฮิรางานะและคาตากานะหมายถึงภาษาญี่ปุ่น อักษรไทย กรีก ฮีบรู อาร์เมเนีย จอร์เจีย เบงกาลี ทมิฬ และระบบอักษรอื่นที่ใช้เพียงภาษาเดียวบอกภาษาได้โดยตรง
- ตัวอักษรซีริลลิกที่พบในภาษาเดียวเท่านั้นใช้แยกระหว่างภาษายูเครน (і, ї, є, ґ) เบลารุส (ў) เซอร์เบีย (ђ, ћ, џ) มาซิโดเนีย (ѓ, ќ, ѕ) และรัสเซีย (ы, э, ё)
- ข้อความในระบบอักษรที่หลายภาษาใช้ร่วมกัน (ละติน ซีริลลิก อาหรับ เทวนาครี และอื่น ๆ) เมื่อยาวพอจะตัดสินได้ จะส่งให้ franc โดยจำกัดเฉพาะภาษาที่พบบ่อยในอีเมล เพื่อไม่ให้ข้อความสั้นถูกระบุเป็นภาษาที่พบน้อย
ภาษาจะรายงานไว้ใน result.language และ allowedLanguages: ['en', 'de'] (--allow-language en,de) เพิ่ม 3 คะแนนให้อีเมลที่ตรวจพบอย่างมั่นใจว่าเป็นภาษาอื่น
ภาษาที่โมเดลรู้จักน้อย#
ตัวจำแนกเรียนรู้จากตัวอย่าง ชุดข้อมูลสแปมสาธารณะมีสแปมภาษาต่างประเทศมากกว่า hamอีเมลที่ต้องการ: ตรงข้ามกับสแปม ภาษาต่างประเทศมาก ตัวจำแนกแบบง่าย ๆ จึงเรียนรู้ว่าข้อความภาษาจีนหรืออาหรับเองหมายถึงสแปม Spam Scanner แก้เรื่องนี้สามวิธี:
- ภาษาไม่ใช่หลักฐาน ภาษาและระบบอักษรที่ตรวจพบไม่ถูกใช้เป็นเบาะแส
- ชั่งน้ำหนักคำภายในภาษาของคำนั้น ความน่าจะเป็นของสแปมของคำหนึ่งคำนวณเทียบกับจำนวนข้อความสแปมและ ham ที่ตัวจำแนกเคยเห็นในภาษาของข้อความ ไม่ใช่ในทุกภาษา คำภาษาโปรตุเกสในชีวิตประจำวันในโมเดลที่เคยเห็นภาษาโปรตุเกสเป็นสแปมเสียส่วนใหญ่จึงยังคงเป็นกลาง
- ความมั่นใจเป็นไปตามความครอบคลุม ผลลัพธ์ถูกดึงเข้าหา "ไม่แน่ใจ" ตามสัดส่วนของจำนวนข้อความแต่ละประเภทที่ตัวจำแนกเคยเห็นในภาษานั้น: ความมั่นใจเต็มที่ต้องมีอย่างละ 1,000 ข้อความ (หรือ 2% ของประเภทที่เล็กกว่า สำหรับโมเดลส่วนตัวขนาดเล็ก) ภาษาที่ไม่มี ham ในข้อมูลฝึกเลยจะได้ "ไม่แน่ใจ" เสมอ
โมเดลที่มาพร้อมแพ็กเกจไม่เคยเห็น SMS Spam Multilingual Collection ซึ่งเป็นข้อความ SMS ที่แปลด้วยเครื่องเป็น 21 ภาษา ก่อนมีกฎเหล่านี้ โมเดลตี ham ในชุดนั้นว่าเป็นสแปม 5.7% รวมถึง 55% ของภาษาโปรตุเกสและ 41% ของภาษาฝรั่งเศส เมื่อมีกฎเหล่านี้ เหลือ 0.18%: ไม่มีเลยในภาษาจีน อาหรับ เกาหลี ญี่ปุ่น ฮินดี โปรตุเกส ฝรั่งเศส หรืออีก 20 ภาษา และ 0.27% ในภาษาอังกฤษ
จับสแปมในภาษาเหล่านั้น#
"ไม่แน่ใจ" นั้นปลอดภัย แต่จับสแปมไม่ได้ สามสิ่งต่อไปนี้จับได้:
- การตรวจอื่น ไม่ขึ้นกับภาษา: โดเมนเลียนแบบ ลิงก์หลอกลวง ไฟล์โปรแกรม มาโคร การยืนยันตัวตน blocklist และกฎ
- โมเดลภาษา โมเดลแบบเปิดรุ่นใหม่อ่านได้ 100 ถึง 200 ภาษา และ Spam Scanner จะถามโมเดลทุกครั้งที่ตัวจำแนกไม่แน่ใจ การทดสอบแบบ end-to-end ตรวจว่า
qwen3.5:4bจับสแปมและปล่อย ham ผ่านในภาษาจีน อาหรับ เกาหลี ฮินดี และไทยได้ โมเดลภาษา - การฝึกด้วยอีเมลของคุณ ในโมเดลที่ฝึกจากอีเมลของคุณเอง ข้อความแต่ละประเภทไม่กี่ร้อยข้อความในภาษาหนึ่งทำให้ตัวจำแนกมั่นใจเต็มที่ในภาษานั้น การฝึกโมเดล และชุดข้อมูลเสริมที่เพิ่ม 21 ภาษา