# 다국어 스팸 필터

많은 스팸 필터는 영어를 기준으로 만들어졌습니다. 다른 언어로 된 스팸은 빠져나가고, 다른 언어로 된 평범한 메일은 문자 체계 때문에 스팸으로 표시됩니다. Spam Scanner는 두 문제를 모두 피하도록 만들어졌습니다.


## 단어 읽기

단어는 `Intl.Segmenter`로 찾습니다. 이는 유니코드 단어 경계 규칙으로, 중국어, 일본어, 태국어, 라오어, 크메르어, 버마어에는 사전을 사용합니다. 중국어 문장은 다시는 반복되지 않는 하나의 긴 문자열이 아니라 恭喜, 获得, 大奖 같은 단어로 나뉩니다.

위장은 세기 전에 원래대로 되돌립니다. 단어 안의 보이지 않는 문자, 라틴 문자 단어 안에 섞인 키릴 문자나 그리스 문자(`pаypal`), 글자 대신 쓴 숫자(`v1agra`), 수학용 글자나 둘러싼 글자(𝐅𝐑𝐄𝐄)가 그 대상입니다. 각 위장 방식은 그 자체로도 단서가 됩니다.


## 모르는 것을 스팸으로 표시하지 않기

공개 스팸 데이터 세트에는 외국어 ham보다 외국어 스팸이 훨씬 많으므로, 단순한 분류기는 아랍어나 한국어 텍스트 자체를 스팸으로 배웁니다. Spam Scanner는 언어를 단서로 쓰지 않고, 각 단어를 그 언어의 스팸 개수와 ham 개수를 기준으로 평가하며, 그 언어에서 본 ham이 적을수록 그만큼 "unsure"에 머무릅니다.

번들 모델이 본 적 없는 21개 언어의 SMS 메시지로 테스트한 결과, 중국어, 아랍어, 한국어, 일본어, 힌디어, 벵골어, 우르두어, 터키어, 우크라이나어, 스웨덴어의 오탐이 0이 되었습니다.


## 모든 언어의 스팸 잡기

* **단어를 읽지 않는 검사:** 유사 도메인, 기만적인 링크, 실행 파일, 매크로, SPF, DKIM, DMARC, 차단 목록.
* **unsure 메시지를 위한 언어 모델.** 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/ko/docs/languages/)
