基于大模型的電信網絡詐騙預警技術研究
學習論文:基于大模型的電信網絡詐騙預警技術研究

研究背景與核心問題
- 問題現狀
- 電信網絡詐騙案件數量持續上升(2017-2021年全國案件超28萬件,詐騙罪占比36.53%),詐騙手段快速迭代導致傳統基于知識庫的預警技術效果有限。
- 當前難點:詐騙話術冗長、線索分散(平均1182字,最長超6000字),人工特征提取效率低且無法適應新型詐騙變種。
- 技術契機
- 大模型(如ChatGPT)在few-shot/zero-shot任務中表現優異,為少樣本詐騙文本分類提供新思路。
關鍵技術方法
基于大模型的詐騙文本分類框架
-
總體流程:
語音輸入 → 語音轉寫 → 主題分類(貸款相關?) → 特征判定(多要素分解) → 綜合判定

- 主題分類:過濾非貸款對話(如閑聊、業務辦理),減少計算量。
- 特征判定:將復雜詐騙判別分解為粒度更小的子任務(如判定“宣傳話術”“要求交費”等特征)。
核心創新點
- 特征提取自動化
- 采用句向量聚類技術:
- 使用嵌入模型
bge-large-zh-v1.5提取句向量,對152份詐騙樣本的6874個短句聚類(K-means, k=30)。 - 聚類結果分為三類:貸款相關(如“還款”“凍結解凍”)、對話相關(如“回復聯系”)、無主題(雜亂文本)。
- 替代人工拆解特征,提升效率與一致性。
- 使用嵌入模型
- 采用句向量聚類技術:
- 提示詞自動生成與優化(APE方法)
- 步驟:
- 大模型基于模板生成初始提示詞(填充正負樣本)。
- 評分篩選(公式:
Score = 0.6 * Recall + 0.4 * Precision,側重召回率)。 - 多輪迭代:對高分提示詞進行語義變體重采樣。
- 解決提示詞人工編寫耗時、質量不穩定的問題。
- 步驟:
分類器構建
手工特征方案
-
提煉貸款詐騙7大特征(如“無抵押宣傳”“要求交費”“操作出錯”等),設計ICIO框架提示詞(指令-背景-輸入-輸出)。


-
分類規則:加權投票(特征權重25-40),累計權重≥40判定為詐騙。
貸款詐騙7大特征
- 宣傳話術
- 使用“無抵押、免征信、低利率、快速放款”等虛假廣告誘導受害者。
- 陌生關系
- 對話雙方為陌生人關系(如“客服與客戶”),排除熟人稱呼(如“某師傅”“某總”)。
- 要求下載App
- 以辦理貸款手續為由,要求受害者下載指定App或登錄網站。
- 要求交費
- 編造“認證還款、保證金、手續費、刷流水”等理由要求轉賬。
- 操作出錯
- 受害者操作時必然“出錯”(如賬戶凍結、貸款失敗),為后續詐騙鋪墊。
- 解凍賬戶
- 以“解凍賬戶”為由要求二次交費(如“再次轉賬方可繼續貸款”)。
- 要求截圖
- 受害者交費后被要求提供“電子回執單、短信截圖”等作為“憑證”。
特征權重與判定規則
-
權重分配(用于綜合判定):
特征 權重 宣傳話術 35 操作出錯 40 解凍賬戶 35 要求交費 25 要求下載App 20 要求截圖 20 陌生關系 10 -
判定規則:
累計權重 ≥40 即判定為貸款詐騙。
實際數據分布
在152個貸款詐騙樣本中,各特征出現比例:
- 陌生關系:100%(所有詐騙樣本均偽裝陌生關系)
- 要求交費:62.5%
- 操作出錯:48.6%
- 要求截圖:44.0%
- 要求下載App:38.1%
- 宣傳話術:23.6%
- 解凍賬戶:35.5%
說明:單一樣本通常不會包含全部特征(詐騙分多階段進行),但權重較高的特征(如“操作出錯”“解凍賬戶”)更具判別性。
自動聚類特征方案
- 聚類生成15個貸款詐騙的特征,劃分為高權重特征(如“凍結解凍”“截圖”)和低權重特征。
- 分類規則:累計權重≥45判定為詐騙。
自動聚類特征方案的核心是通過無監督學習替代人工特征拆解,解決傳統方法效率低、一致性差的問題:
- 任務目標
自動識別詐騙文本中的高頻語義片段,形成可量化判別的特征集合。 - 技術路線
句向量提取 → 無監督聚類 → 特征權重分配 → 綜合判定
實現步驟
1. 數據預處理
- 原始數據:152個貸款詐騙樣本的語音轉寫文本(平均長度1182字)。
- 短句切分:
- 按標點符號分割文本,過濾長度<5字符或>30字符的句子。
- 得到6874個有效短句作為聚類輸入。
2. 句向量提取
- 嵌入模型:采用
bge-large-zh-v1.5(當前最優中文文本嵌入模型之一)。 - 向量維度:1024維向量表示每個短句的語義特征。
3. K-means聚類
-
聚類參數:
k=30(根據經驗設定)。 -
距離度量:余弦相似度(更適合文本向量)
-
聚類結果:

聚類測試代碼,感覺效果不是很好:
import re
import numpy as np
from sentence_transformers import SentenceTransformer
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
import matplotlib
# 設置matplotlib后端以避免PyCharm兼容性問題
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import seaborn as sns
class FraudTextCluster:
def __init__(self, k=30, min_len=5, max_len=30):
"""
初始化聚類器
:param k: 聚類數量(默認為30)
:param min_len: 最短句子長度(字符數)
:param max_len: 最長句子長度(字符數)
"""
self.k = k
self.min_len = min_len
self.max_len = max_len
# 加載中文嵌入模型(論文使用的bge-large-zh-v1.5)
self.model = SentenceTransformer('D:\\llms\\bge-large-zh-v1.5')
def preprocess(self, texts):
"""
文本預處理:分割句子并過濾無效短句
:param texts: 原始文本列表(每個元素為一個詐騙樣本)
:return: 有效短句列表
"""
short_sentences = []
for text in texts:
# 按標點符號分割句子
sentences = re.split(r'[。?!;,]', text)
for sent in sentences:
# 過濾長度不符合要求的句子
if self.min_len <= len(sent) <= self.max_len:
short_sentences.append(sent.strip())
return short_sentences
def extract_embeddings(self, sentences):
"""
提取句向量
:param sentences: 短句列表
:return: 句向量矩陣 (n_samples, 1024)
"""
return self.model.encode(sentences, normalize_embeddings=True)
def cluster(self, embeddings):
"""
K-means聚類
:param embeddings: 句向量矩陣
:return: 聚類標簽和中心點
"""
# 獲取樣本數量(嵌入矩陣的第一維)
n_samples = len(embeddings)
if not isinstance(n_samples, int):
raise ValueError("embeddings 的長度應該是一個整數")
# 動態調整聚類數量
k = min(int(self.k), n_samples) # 確保聚類數不超過樣本數
# 動態調整PCA維度
if n_samples > 50:
pca = PCA(n_components=50)
reduced_emb = pca.fit_transform(embeddings)
used_emb = reduced_emb
else:
# 樣本數不足50時,不進行降維
used_emb = embeddings
# K-means聚類
kmeans = KMeans(
n_clusters=k,
init='k-means++',
n_init=10,
max_iter=300,
tol=1e-4,
random_state=42
)
labels = kmeans.fit_predict(used_emb)
return labels, kmeans.cluster_centers_
def analyze_clusters(self, sentences, labels):
"""
分析聚類結果
:param sentences: 短句列表
:param labels: 聚類標簽
:return: 聚類分析字典
"""
cluster_dict = {}
for i in range(max(labels) + 1):
cluster_dict[i] = []
for sent, label in zip(sentences, labels):
cluster_dict[label].append(sent)
return cluster_dict
def visualize_clusters(self, embeddings, labels):
"""
可視化聚類結果(降維到2D)
:param embeddings: 句向量
:param labels: 聚類標簽
"""
# 降維到2D
pca = PCA(n_components=2)
vis_emb = pca.fit_transform(embeddings)
plt.figure(figsize=(12, 8))
sns.scatterplot(
x=vis_emb[:, 0],
y=vis_emb[:, 1],
hue=labels,
palette="viridis",
alpha=0.7,
s=50
)
plt.title("Sentence Clustering Visualization")
plt.xlabel("PCA Component 1")
plt.ylabel("PCA Component 2")
plt.legend(title='Cluster', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
# 保存圖像到文件而不是直接顯示,以避免PyCharm兼容性問題
plt.savefig('clustering_result.png', dpi=300, bbox_inches='tight')
print("聚類結果已保存到 clustering_result.png")
plt.close() # 關閉圖形以釋放內存
def full_pipeline(self, texts):
"""
完整聚類流程
:param texts: 原始文本列表
:return: 聚類結果字典
"""
# 1. 預處理
sentences = self.preprocess(texts)
print(f"預處理完成,得到{len(sentences)}個有效短句")
if len(sentences) == 0:
print("警告:未獲得有效短句,請檢查輸入數據")
return {}
# 2. 提取句向量
embeddings = self.extract_embeddings(sentences)
print(f"句向量提取完成,維度:{embeddings.shape}")
# 3. 聚類
labels, centers = self.cluster(embeddings)
print(f"聚類完成,共生成{len(set(labels))}個簇")
# 4. 分析結果
cluster_data = self.analyze_clusters(sentences, labels)
# 5. 可視化(可選)
if len(sentences) > 1: # 至少需要2個樣本才能可視化
self.visualize_clusters(embeddings, labels)
return cluster_data
# ====================== 使用示例 ====================== #
if __name__ == "__main__":
# 模擬論文中的詐騙文本數據(實際應替換為真實數據)
sample_texts = [
"您的賬戶因操作失誤被凍結,需轉賬5000元解凍才能繼續貸款",
"銀行卡異常凍結,請掃碼支付解凍費,否則無法提現",
"貸款審核需要驗證還款能力,請先繳納2000元保證金",
"系統檢測到風險,需要您提供身份證照片和銀行卡截圖",
"下載我們的APP即可申請無抵押貸款,秒批秒到賬",
"請稍等,正在為您處理貸款申請,可能需要幾分鐘時間",
"您好,我是XX銀行客服,請問有什么可以幫您?",
"麻煩提供下您的姓名和手機號,我們需要登記信息",
"貸款已審批通過,但需要先支付手續費才能放款",
"您的賬戶存在異常操作,請立即聯系客服處理"
]
# 初始化聚類器(參數與論文一致)
clusterer = FraudTextCluster(k=30, min_len=5, max_len=30)
# 運行完整流程
results = clusterer.full_pipeline(sample_texts)
# 打印聚類結果(每個簇的前3個句子)
print("\n聚類結果示例:")
for cluster_id, sentences in results.items():
print(f"\nCluster {cluster_id} (樣本數: {len(sentences)}):")
for i, sent in enumerate(sentences[:3]):
print(f" - {sent}")
輸出:
預處理完成,得到21個有效短句
句向量提取完成,維度:(21, 1024)
聚類完成,共生成21個簇
聚類結果已保存到 clustering_result.png
聚類結果示例:
Cluster 0 (樣本數: 1):
- 系統檢測到風險
Cluster 1 (樣本數: 1):
- 您的賬戶存在異常操作
Cluster 2 (樣本數: 1):
- 貸款已審批通過
Cluster 3 (樣本數: 1):
- 請掃碼支付解凍費
Cluster 4 (樣本數: 1):
- 需要您提供身份證照片和銀行卡截圖
Cluster 5 (樣本數: 1):
- 請先繳納2000元保證金
Cluster 6 (樣本數: 1):
- 可能需要幾分鐘時間
Cluster 7 (樣本數: 1):
- 請立即聯系客服處理
Cluster 8 (樣本數: 1):
- 請問有什么可以幫您
Cluster 9 (樣本數: 1):
- 否則無法提現
Cluster 10 (樣本數: 1):
- 秒批秒到賬
Cluster 11 (樣本數: 1):
- 麻煩提供下您的姓名和手機號
Cluster 12 (樣本數: 1):
- 貸款審核需要驗證還款能力
Cluster 13 (樣本數: 1):
- 下載我們的APP即可申請無抵押貸款
Cluster 14 (樣本數: 1):
- 我們需要登記信息
Cluster 15 (樣本數: 1):
- 我是XX銀行客服
Cluster 16 (樣本數: 1):
- 需轉賬5000元解凍才能繼續貸款
Cluster 17 (樣本數: 1):
- 正在為您處理貸款申請
Cluster 18 (樣本數: 1):
- 但需要先支付手續費才能放款
Cluster 19 (樣本數: 1):
- 銀行卡異常凍結
Cluster 20 (樣本數: 1):
- 您的賬戶因操作失誤被凍結

4. 特征權重分配
- 高權重特征(5類,權重=20):
資金周轉(3)、出錯(9)、截圖(10)、凍結解凍(24)、提現(27)(直接對應詐騙關鍵環節) - 低權重特征(10類,權重=10):
其他貸款相關類別(如還款、審核、身份證等) - 判定規則:累計權重 ≥45 即判定為詐騙。
提示詞自動生成(APE方法)
針對每個聚類特征,自動生成優化提示詞:
-
生成模板:
"請找出‘特征句子’和非特征句子的區別,生成一個prompt用于檢測特征句子。示例: 特征句:[正樣本1]、[正樣本2]... 非特征句:[負樣本1]、[負樣本2]..." -
優化流程:
- 初始生成:用聚類結果中的正/負樣本填充模板,生成候選提示詞。
- 舉例:如“賬戶被凍結需轉賬解凍”
- 正樣本(詐騙話術):
“您的賬戶因操作失誤被凍結,需轉賬5000元解凍”
“銀行卡異常凍結,請掃碼支付解凍費” - 負樣本(正常對話):
“系統卡頓請稍后重試”
“網絡延遲導致交易失敗”
- 正樣本(詐騙話術):
- 舉例:如“賬戶被凍結需轉賬解凍”
- 評分篩選:
- 測試效果,例如:
- 召回率(Recall)= 75%(正確識別15/20個真實“凍結解凍”句)
- 精確率(Precision)= 75%(20個判定結果中15個正確)
- 計算得分:
Score = 0.6×85% + 0.4×75% = 81% - 結果:該提示詞進入Top 5候選(需與其他生成提示詞比較得分)。。
- 測試效果,例如:
- 迭代優化:對高分提示詞語義變體重采樣(如調整措辭、擴充描述)。
- 初始生成:用聚類結果中的正/負樣本填充模板,生成候選提示詞。
-
最終提示詞示例:
"請在文本中查找涉及賬戶凍結、解凍要求的句子,典型話術如‘需轉賬解凍’‘賬戶被凍結’。 輸出格式:JSON數組,包含原文句子、判斷理由、是否特征句。"
實驗與結果
-
數據預處理
- 數據來源:944條真實語音對話 → 過濾為667條文本(含152條貸款詐騙數據)。
- 預處理:
- 語音轉寫糾錯(GLM-4-9B模型增強可讀性)。
- 隱私脫敏(Qwen2.5-14B-Instruct檢測敏感信息,人工核驗)。
- 標注:5名標注員3輪標注(獨立-交叉-合并),主題分類首輪平均F1=0.810。
-
關鍵實驗結果
- 主題分類:召回率84.9%,精確率72.2%,F1=0.782(接近人工標注水平)。
- 手工特征分類:召回率79.6%,精確率87.6%,F1=0.834。
- 自動聚類特征分類:召回率81.6%,精確率84.9%,F1=0.832(與手工方案性能相當且優于人工首輪標注)。
-
對比優勢
方案 召回率 精確率 F1值 人工首輪標注 79.6% 82.4% 0.810 手工特征 79.6% 87.6% 0.834 自動聚類特征 81.6% 84.9% 0.832
應用價值與展望
- 實際意義
- 少量樣本高效預警:僅需數十個樣本構建分類器(APE),快速響應新型詐騙變種(傳統方法需更新知識庫)。
- 全流程優化:自動化特征提取和提示詞生成將人工介入環節減少50%以上,顯著提升處理效率。
- 未來方向
- 擴展至其他詐騙類型(如冒充客服、投資詐騙)。
- 優化聚類算法特征權重分配策略。

浙公網安備 33010602011771號