基于微信好友签名识别AI诈骗

案例背景

近期"AI换脸"诈骗事件频发,许多人在社交媒体上收到"好友"的借钱请求,结果发现是骗子利用AI技术伪造了好友的声音和面容。这让我们意识到网络社交中情感判断的重要性。本教程将基于微信好友签名数据,使用SnowNLP进行情感分析,并通过PyEcharts可视化结果,帮助用户识别好友签名中的情感倾向。

技术准备

  • Python 3.x

  • 所需库:pyecharts, snownlp, csv

  • 数据文件:微信好友信息CSV文件(包含签名列)

实现步骤

第一步:准备数据

假设我们有一个名为my_wechat_friends.csv的文件,其中第6列(索引5)是好友的签名信息。

昵称,性别,地区,...,签名
张三,1,北京,...,生活很美好
李四,2,上海,...,最近心情不太好
...

 第二步:情感分析代码实现

from pyecharts.charts import Pie
from pyecharts import options as opts
from collections import Counter
from snownlp import SnowNLP
import csv

def get_csv_data(filename, index):
    """读取CSV文件中指定列的数据"""
    lst_data = []
    with open(filename, 'r', encoding='utf-8') as fr:
        reader = csv.reader(fr)
        for row in reader:
            if len(row) > index:  # 确保索引有效
                lst_data.append(row[index])
    return lst_data

def analyze_mood(signature_list):
    """分析签名情感倾向"""
    # 跳过标题行
    signatures = signature_list[1:] if len(signature_list) > 0 else []
    
    positive_count = 0
    negative_count = 0
    neutral_count = 0
    
    for sig in signatures:
        if not sig.strip():  # 跳过空签名
            continue
            
        try:
            s = SnowNLP(sig)
            sentiment = s.sentiments
            
            # 情感分类标准
            if sentiment > 0.7:  # 积极
                positive_count += 1
            elif sentiment < 0.3:  # 消极
                negative_count += 1
            else:  # 中性
                neutral_count += 1
        except:
            # 处理可能的分析错误
            neutral_count += 1
    
    return positive_count, negative_count, neutral_count

def create_emotion_chart(positive, negative, neutral):
    """创建情感分析饼图"""
    emotion_types = ['积极签名', '消极签名', '中性签名']
    values = [positive, negative, neutral]
    
    # 计算百分比
    total = sum(values)
    percentages = [f'{v/total*100:.1f}%' for v in values]
    
    # 创建饼图
    pie = (
        Pie()
        .add(
            "",
            [list(z) for z in zip(emotion_types, values)],
            radius=["30%", "75%"],  # 环形饼图
            center=["50%", "50%"],
            rosetype="radius",  # 通过半径显示数值大小
            label_opts=opts.LabelOpts(
                formatter="{b}: {c} ({d}%)",  # 显示名称、数值和百分比
                color="#333"
            )
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title="微信好友签名情感分析",
                subtitle=f"共分析 {total} 位好友签名 (结合近期AI诈骗热点)",
                pos_left="center",
                pos_top="20"
            ),
            legend_opts=opts.LegendOpts(
                orient="vertical",
                pos_top="15%",
                pos_left="2%"
            ),
            tooltip_opts=opts.TooltipOpts(
                trigger="item",
                formatter="{a} <br/>{b}: {c} ({d}%)"
            )
        )
        .set_colors(["#67C23A", "#F56C6C", "#909399"])  # 设置颜色: 绿-积极,红-消极,灰-中性
    )
    
    return pie

 第三步:执行分析并生成可视化

# 主程序
if __name__ == "__main__":
    # 1. 获取签名数据
    signatures = get_csv_data("my_wechat_friends.csv", 5)  # 假设签名在第6列
    
    # 2. 分析情感
    positive, negative, neutral = analyze_mood(signatures)
    
    print(f"分析结果: 积极 {positive}, 消极 {negative}, 中性 {neutral}")
    
    # 3. 创建图表
    chart = create_emotion_chart(positive, negative, neutral)
    
    # 4. 保存为HTML文件
    chart.render("wechat_friends_emotion_analysis.html")
    
    print("情感分析图表已生成: wechat_friends_emotion_analysis.html")

第四步:解读分析结果

结合近期AI诈骗热点,我们可以从情感分析中获得以下洞察:

  1. 积极签名占比高:如果好友签名大多积极向上,说明整体社交圈氛围健康。但仍需警惕,骗子可能伪装成正能量好友。

  2. 消极签名突增:如果发现某些好友签名突然变得消极,可能是账号被盗用的信号,需特别关注。

  3. 中性签名分析:中性签名中可能隐藏着广告或诈骗信息,需要进一步检查内容。

进阶功能:添加风险提示

我们可以修改代码,对消极签名进行关键词检测,添加诈骗风险提示:

def analyze_mood_with_risk(signature_list):
    """分析情感并检测风险关键词"""
    # ...(前面的情感分析代码保持不变)...
    
    risk_keywords = ['转账', '借钱', '紧急', '帮忙', '验证码', '点击']
    risk_signatures = []
    
    for sig in signatures:
        if not sig.strip():
            continue
            
        # 检测风险关键词
        if any(keyword in sig for keyword in risk_keywords):
            risk_signatures.append(sig)
    
    return positive_count, negative_count, neutral_count, risk_signatures

# 修改主程序
if __name__ == "__main__":
    signatures = get_csv_data("my_wechat_friends.csv", 5)
    positive, negative, neutral, risks = analyze_mood_with_risk(signatures)
    
    print(f"发现 {len(risks)} 条可能的风险签名:")
    for i, sig in enumerate(risks, 1):
        print(f"{i}. {sig}")
    
    # ...(其余代码保持不变)...

最终效果

生成的HTML文件将展示一个交互式饼图,显示好友签名的情感分布。用户可以:

  • 悬停查看具体数值

  • 点击图例筛选特定情感类别

  • 结合右侧的图例直观理解分布情况

项目总结

通过本教程,我们实现了:

  1. 微信好友签名数据的自动收集

  2. 使用SnowNLP进行中文情感分析

  3. 通过PyEcharts生成专业可视化图表

  4. 结合近期热点添加风险检测功能

这个工具可以帮助用户:

  • 了解社交圈的整体情感氛围

  • 及时发现异常情感变化(可能是账号异常)

  • 识别潜在的诈骗风险签名

  • 在AI诈骗盛行的当下,提高社交安全意识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值