ภาษา

สแปมมาในทุกภาษา อีเมลทั่วไปก็เช่นกัน 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 แก้เรื่องนี้สามวิธี:

  1. ภาษาไม่ใช่หลักฐาน ภาษาและระบบอักษรที่ตรวจพบไม่ถูกใช้เป็นเบาะแส
  2. ชั่งน้ำหนักคำภายในภาษาของคำนั้น ความน่าจะเป็นของสแปมของคำหนึ่งคำนวณเทียบกับจำนวนข้อความสแปมและ ham ที่ตัวจำแนกเคยเห็นในภาษาของข้อความ ไม่ใช่ในทุกภาษา คำภาษาโปรตุเกสในชีวิตประจำวันในโมเดลที่เคยเห็นภาษาโปรตุเกสเป็นสแปมเสียส่วนใหญ่จึงยังคงเป็นกลาง
  3. ความมั่นใจเป็นไปตามความครอบคลุม ผลลัพธ์ถูกดึงเข้าหา "ไม่แน่ใจ" ตามสัดส่วนของจำนวนข้อความแต่ละประเภทที่ตัวจำแนกเคยเห็นในภาษานั้น: ความมั่นใจเต็มที่ต้องมีอย่างละ 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 ภาษา

แก้ไขหน้านี้บน GitHub · Markdown ·