更准更快的微博 Spammer 水军账号检测模型,支持 API 调用

月小水长

共 2042字,需浏览 5分钟

 · 2023-10-23

欢迎关注公众号「月小水长」,唯一笔者是 BuyiXiao,又名小布衣、肖不已。 

BuyiXiao,何许人也?本衡州一乡野村夫,身高八尺不足,年方二十有余;弱冠之年曾求学于潭州,为谋生计,背井离乡,远赴京畿,我本南人,不习北土,兼有故友,威逼利诱,急于星火,遂下岭南,打工未半,中道创业,所为何业?赛博朋克,智能硬件;假工程师之名,行农民工之实,满腹经纶,无用书生,善于自黑,贻笑大方。 

笔者水平有限,可能暂时无法将非常干货的教程讲的不拖泥带水又不哗众取宠,公众号文章诸多遗漏或不妥之处,可以加月小水长微信「2391527690」备注「学校专业/研究方向/工作岗位」进行交流。

另外,文末点下「」和「在看」,这样每次新文章推送,就会第一时间出现在你的订阅号列表里。

去年底分享过一个工作:微博水军账号 spammer 检测模型上线

当时耗费数周,手动标注了数 K 条微博账号数据集,正负样本 1:1,构建识别模型,准确度在 85% 左右。

只要输入一个微博用户的 uid,就能自动抓取账号信息并且进行 spammer 属性判别。

近来得空,升级了下模型,主要是对数据集进行了再次标注,尽可能保证训练数据的噪声尽可能低。

同时新加了一些识别特征,比如同时抓取账号发布过的微博文本信息,账号的多(3)层深度关系网络等等,精确度上升到了 95% 左右。

但是这带来了一个新问题,由于新加的判别特征抓取特别耗时,一个账号的判别耗时指数上升。

原来是秒级,到 95% 左右的精度,抓取一个账号的所有特征耗时来到了百秒级;

这种速度是显然难以接受的,于是我做了一个折中的处理,微博文本信息只抓第一页的微博,深度关系网络只抓第一层,且限制 10 个节点。

这样一来,虽然精度有所下降,来到了 88% 左右,但是识别速度大大提升,耗时仅在数秒左右。

以下是最终模型的一次训练过程中的 ACC、Loss 和 F1 曲线。

新版模型在线地址如下:

https://weibo-crawl-visual.buyixiao.xyz/weibo-spammer-evaluator

同时新增了 API 接口调用,接口地址是:

https://api.buyixiao.xyz/weibo/spammer-account-evaluate

使用 Python 调用该接口的 demo 代码如下:

test_token = "在此处填入在模型在线地址申请的 token"
def test_spammer_evaluate(user_id):
    resp = requests.get(url=f'https://api.buyixiao.xyz/weibo/spammer-account-evaluate', params={
        'user_id': user_id,
        'token': test_token
    })

    print(resp.url)
    print(resp.json())
test_spammer_evaluate(user_id="2557129567")

接口限速 1 request/per second,超速会返回 429 错误,其他参数错误会在返回结果中提示,一次成功的响应如下

{
  "code"0,
  "data": {
    "confidenceLevel"1,
    "isSpammer"false
  },
  "msg""suc"
}

isSpammer 取值 True or False,表示是否是机器人水军账号,confidenceLevel 可信度介于 0-1 之间。

点击阅读原文直达新版模型地址~

浏览 439
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报