FraudSquad — LLM 生成虚假评论检测:LM 嵌入 + 门控图变换器
Skill-FraudSquad-LLM-Review-Detection · 19-风控反欺诈
1. 解决的问题
核心思想:LLM 生成的虚假评论文本质量极高(语法流畅、情感真实),传统文本特征工程(词频/情感/长度)已失效。FraudSquad 转变思路——不只看"单条评论写得怎样",而是看"这个评论者在评论图中的行为模式是否异常"。
2. 核心算法逻辑
核心思想:LLM 生成的虚假评论文本质量极高(语法流畅、情感真实),传统文本特征工程(词频/情感/长度)已失效。FraudSquad 转变思路——不只看"单条评论写得怎样",而是看"这个评论者在评论图中的行为模式是否异常"。
3. 业务应用场景
业务问题:竞品通过 ChatGPT 批量生成高质量 5 星好评(语言自然流畅、细节丰富),注入自家 listing 的同时给我们的 listing 刷低评,导致: 1. 竞品 BSR 飙升 → 抢占 Featured Offer 2. 我们 listing 评分下降 → 转化率下滑 10-25% 3. Amazon 算法降权 → 广告 CVR 下降
数据要求: - Amazon 评论爬虫数据:reviewer_id、product_asin、rating(1-5)、review_text、review_date、reviewer_join_date - 构建三方图:reviewer ↔ review ↔ product - 最少 50 条评论(含至少5条可疑评论)用于半监督训练 - 可选:reviewer 历史评论数量、verified_purchase 标志
预期产出: - 每条评论的欺诈概率分数(0-1) - 高置信度虚假评论列表(建议举报/屏蔽) - 刷评团伙聚类(识别哪些账号协同作战)
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
未自动抽取;请查看原始 Skill 卡片。
7. 代码模板
代码块数量:1 · 路径:未检测到
"""
FraudSquad — LLM 生成虚假评论检测
论文: arXiv:2510.01801 (2025-10)
场景: Amazon 母婴品类刷评检测 / WF-E Review 清洗前置层
"""
from __future__ import annotations
import numpy as np
import pandas as pd
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Tuple
from collections import defaultdict
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
# ────────────────────────────────────────────
# 图数据结构
# ────────────────────────────────────────────
@dataclass
class ReviewGraph:
"""用户-产品-评论三方异构图"""
review_ids: List[str] = field(default_factory=list)
user_ids: List[str] = field(default_factory=list)
product_ids: List[str] = field(default_factory=list)
texts: List[str] = field(default_factory=list)
ratings: List[float] = field(default_factory=list)
timestamps: List[float] = field(default_factory=list)
labels: Optional[np.ndarray] = None # 1=虚假, 0=真实, -1=未知
def add_review(
self,
review_id: str,
user_id: str,
product_id: str,
text: str,
rating: float,
timestamp: float,
label: int = -1,
) -> None:
self.review_ids.append(review_id)
self.user_ids.append(user_id)
self.product_ids.append(product_id)
self.texts.append(text)
self.ratings.append(rating)
self.timestamps.append(timestamp)
if self.labels is None:
self.labels = np.array([label])
else:
self.labels = np.append(self.labels, label)
def __len__(self) -> int:
return len(self.review_ids)
# ────────────────────────────────────────────
8. 论文来源
- 2510.01801