judge_spamSMS
- 题号:—
- 来源:LeetCode
- 难度:—
- 标签:—
- 语言:Python
- 解法:1 个
- 作者:lmliheng
- 最近更新:2026-09-29
Python · 更新于 2026-09-29
python
import jieba
import joblib
model = joblib.load('model/spam_svm_model.pkl')
vectorizer = joblib.load('model/spam_tfidf.pkl')
def predict_spam(text):
seg = ' '.join(jieba.lcut(text))
X = vectorizer.transform([seg])
decision = model.decision_function(X)[0] # 用decision_function代替predict_proba
label = model.predict(X)[0]
return ('垃圾短信' if label == 1 else '正常短信'), decision
tests = [
# === 垃圾短信(应该被拦截)===
"免费送iPhone点击链接马上领取",
"您的白条额度已提升加微信办理",
"恭喜您中奖了回复TD退订",
"无抵押贷款当天放款联系VX",
"您的积分即将过期请点击兑换",
"刷单返利日赚300联系客服",
"澳门赌场上线啦注册送彩金",
"您的ETC已过期请点击认证",
"淘宝好评返现加微信领红包",
"您的社保账户异常点击处理",
# === 边缘案例(容易误判)===
"免费咨询热线400-800-8888", # 含"免费"但可能是正规客服
"点击下方链接查看会议纪要", # 含"点击""链接"但可能是正常工作
"您的快递已到达请凭码领取", # 正常物流通知
"邀请您参加免费体检活动", # 含"免费"但可能是社区活动
# === 正常短信(不应该被拦截)===
"爸我放学了马上回家",
"明天一起吃饭别忘带伞",
"今晚加班晚点回去不用等我吃饭",
"你的快递放在丰巢柜了验证码1234",
"本周六同学聚会地点在老地方",
"收到请回复明天上午九点开会",
]
for t in tests:
label, score = predict_spam(t)
print(f"{label} 得分={score:.3f} -> {t}")源码:python/SVM/judge_spamSMS.py
在 GitHub 上查看题目所在目录:lmliheng/algorithm