首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
阿里云
SlipStupig
V2EX  ›  程序员

被 spam 评论给弄疯了,如何有效的建立机器学习模型呢?

  •  
  •   SlipStupig · 37 天前 · 4604 次点击
    这是一个创建于 37 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司产品评论区里面老是出现一些乱七八糟的评论,开始用正则表达式,但是太容易绕过了,而且还容易误杀。 后来用了 tfidf+native bayes 做个一个模型,开始还行,后来出现了一些内容嵌入发帖,例如:

    深度考察. 2019 年 10 月 23 日 23:16.棋牌游戏一对一真钱_新布丁娱乐大厅拼三张可以作弊吗. 关于棋牌游戏一对一 883321.com 真钱的 创新是民族进步之魂,创新型青年人才是国家的未来。周女士也想提醒广大家长,在孩子入学的问题上,一定要 ... 障用户更加便捷地在快手记录分享生活、学习、娱乐和社交,甚至获得经济收入。
    

    这种类似的文本,使用 tfidf 去提取文本特征,提取出来的特征基本上对这种文本没有什么用,大家有什么好的办法嘛

    第 1 条附言  ·  37 天前

    各位说买服务的兄弟,如果花钱能解决,我只需要劝一劝老板,花钱还是解决不了怎么办? 至于说加入审核,我们公司根本不是什么大公司,没有从事审核的人员,也养不起

    目前由于前期一些机制不完善,无法做到行为审计,文本审计这块能也不要求做到100%,能到90%+就行,还是希望各位能多给一些文本分类的建议

    71 条回复    2020-02-27 15:52:59 +08:00
    xfelix
        1
    xfelix   37 天前
    不要光考虑评论内容,试着从其他特征入手,比如 ip 地址,client type 等。
    mcone
        2
    mcone   37 天前
    之前做过一个类似的,首先我觉得你们思路就不太对
    > “但是太容易绕过了”
    你们不能简单粗暴地直接拒绝提交评论或者直接屏蔽掉,而是应该让这段内容不对其他用户显示,对发布 spam 的真人 /bot 透明,这样就能轻松很多了

    至于模型,我也没有特别好的 idea,之前被折磨地很痛苦,对“在别人的大段真实评论里插入几个字(甚至是火星文)”的广告,我至今都没什么好想法……
    murmur
        3
    murmur   37 天前   ❤️ 1
    关评论,筛选,实名
    feng12345
        4
    feng12345   37 天前
    看下市面上有没有合适的商用产品,有时候花点钱还是挺值得
    SlipStupig
        5
    SlipStupig   37 天前
    @murmur 关评论我会被骂死的。。

    @feng12345 公司穷不可能额外花钱
    SlipStupig
        6
    SlipStupig   37 天前
    @xfelix 能说的具体一点嘛
    huayumo
        7
    huayumo   37 天前
    发帖审核,要么关键字过滤,不然这产品迟早要完,要么加强账号审核,登录什么的
    cmdOptionKana
        8
    cmdOptionKana   37 天前
    提高注册门槛,封号。这样广告账号的注册成本提高了,自然就会减少。(比如需要做一些任务才能发评论)
    learnshare
        9
    learnshare   37 天前
    不审核,轻则暂停访问整改,重则永久封掉
    murmur
        10
    murmur   37 天前
    你们是大陆地区的产品么,没有审核没有实名制是严重问题
    xuanbg
        11
    xuanbg   37 天前
    评论的套路难道不都是审核后才能让别人看得到吗?然后问题就变成了怎么审核的问题。一般来说都是机器为主人工补充。就是符合通过和驳回规则的直接就通过或驳回了,剩下的人工来审核。
    SlipStupig
        12
    SlipStupig   37 天前
    @murmur
    @cmdOptionKana

    目前这个情况没办法实名验证,之前弄了手机验证,好像完全没用
    cmdOptionKana
        13
    cmdOptionKana   37 天前
    @SlipStupig 没有实名制,广告还算小事情了,万一被人家搞,给你发敏感词,再一举报。
    Juszoe
        14
    Juszoe   37 天前
    同意二楼,这种很类似贴吧
    SquirrelMAN
        15
    SquirrelMAN   37 天前
    有个 iOS 应用 熊猫吃短信 过滤垃圾文本做的非常好
    bitholic
        16
    bitholic   37 天前 via iPhone
    如果有资金,可以考虑第三方反垃圾服务
    WebKit
        17
    WebKit   37 天前 via Android
    大陆地区的评论没有实名,你们怕是要被永久封停
    fonlan
        18
    fonlan   37 天前 via Android
    用这些嵌入式文本继续训练你的模型啊,另外可以用模型给出一个疑似度值,高于某个门限的需要人工审核
    Cbdy
        19
    Cbdy   37 天前 via Android
    朴素贝叶斯解君愁
    qq316107934
        20
    qq316107934   37 天前
    新注册账号 2h 内禁止发言,账号需要验证邮箱,发帖需要验证码,发帖量在 3 个以下的需要手动发表审核。我就不信还有。
    fantastM
        21
    fantastM   37 天前
    学习一下 t66y 社区的管理方式
    dayeye2006199
        22
    dayeye2006199   37 天前
    试试中文分词+fasttext。这种模型使用了 ngram,所以 棋牌,游戏 这种 2-gram 可能可以被模型捕捉到。

    如果在 fancy 一点上深度学习: https://github.com/facebookresearch/pytext
    iConnect
        23
    iConnect   37 天前 via Android
    你用机器算法屏蔽,别人也会机器算法反屏蔽,猫和老鼠的游戏。除非你的数据特别大,否则很难彻底杜绝 Spam
    opengps
        24
    opengps   37 天前
    先买成品敏感词过滤服务,现学来不及
    tfdetang
        25
    tfdetang   37 天前
    可以用一个半监督的流程,让机器不停的自己标数据,然后人工抽样复合,再用这些数据生成模型,形成一个正向循环
    DoubleShut
        26
    DoubleShut   37 天前
    评论,加验证码
    DoubleShut
        27
    DoubleShut   37 天前
    行为验证码
    littiefish
        28
    littiefish   37 天前 via iPhone
    屏蔽,棋牌,真人,娱乐,一对一,收益,兼职
    sethverlo
        29
    sethverlo   37 天前
    亲测显而易见的问题,中文分词 + fasttext 效果拔群,训练速度也快,不用 gpu
    pythonee
        30
    pythonee   37 天前
    这个之前个人博客也很多类似的,应该有一些评论插件或软件吧
    flavoury
        31
    flavoury   37 天前
    你可以看看熊猫吃短信---我没说这个可以解决问题,或许能提供给你一些思路
    zscself
        32
    zscself   37 天前
    我也是刚接触机器学习,有哪里不对的欢迎指出。楼主你这个算是传统的机器学习方法了吧。我觉得你可以换成神经网络试一试?词嵌入加神经网络,如果样本足够大的话。比如最初级的文本分类问题-情感分类器的一种实现就是 word2vec 来进行词嵌入,然后交给神经网络( RNN、LSTM、CNN 都可以)来生成句子向量来进行判断。
    zgzhang
        33
    zgzhang   37 天前   ❤️ 3
    @SlipStupig 以下是我做过的 UGC 内容的风控工作的一些经验,你看下是否有帮助:
    1. 无论是正则 match 敏感词或者分词+native bayes 甚至神经网络,如果想绕过一定能绕过,想想异形字、拼音混合、火星文等等,如果支持图片那就更是噩梦,OCR 就是一个非常大的问题。
    2. 业界的基本操作基本上都是模型打分,分数不仅仅是依赖内容自身可能还有用户的一些历史行为维度,超出阈值部分人工审核,再审核通过前,仅作者可见(那些自以为沙发的评价)
    3. 换个维度解决问题,针对违规用户一定要处罚,禁言、封号,不然永远都是对抗
    4. 提高用户门槛,包括注册门槛,发言门槛,总之要提升成本
    5. 风控策略防止及其行为和团伙作案,IP、设备维度等维度的限制等
    6. 完善的应急制度,针对极度敏感内容要有预案能快速删除,以防封站
    swulling
        34
    swulling   37 天前 via iPhone
    思路转变下

    第一提高评论门槛。发评论需要用手机号登录新用户 2 小时只能发一条评论。一天内评论超过三天上复杂验证码。
    第二增加封禁机制,发现一条封一个手机号,来源 ip 封 48h,也是提高 spam 门槛。
    第三机器审核和人工审核并行。算法很多很成熟了,重点是思路转变,要识别正常评论,而不是广告评论。火星文,异形字很容易从正常评论筛选出来。然后调低阈值,用人工标注不断的喂数据进去。也可以购买专门的标注服务,不贵。
    summerwar
        35
    summerwar   37 天前
    如果评论之后审核才显示,那么就无利可图,他们也就不发了,因为发了也没用。

    审核的时候挑正常的显示就好了
    danhahaha
        36
    danhahaha   37 天前
    分词+贝叶斯算法

    然后人工添加几百个评论学习

    这种最直接简单了,曾经帮一个论坛搞了一个插件,从此各种广告绝迹
    RangerWolf
        37
    RangerWolf   37 天前
    不知道你有没有看过阿里云或者百度的接口,这种接口几乎不要钱。。。
    xupefei
        38
    xupefei   37 天前
    屏蔽 spam 而已还自己动手训练?现成的 Akismet 有啥不能满足的需求吗
    SlipStupig
        39
    SlipStupig   37 天前
    @zgzhang 绕过是能接受的,我需要能干掉 85%以上的就行。现状是:
    垃圾文本干不掉,正常用户被干扰。

    我很想知道你们是基于何种 metric, 对模型进行打分的? 希望能透露一二


    @zscself word2vec 如果在正确分词的情况下可能会很好,但是对方发的词千奇百怪,基本上人阅读都困难,你的 word embedding 可能会很 hit hard😭
    id7368
        40
    id7368   37 天前 via iPhone
    先审后发 一个月就没人拿脚本刷了
    shm7
        41
    shm7   37 天前 via iPhone
    前面有人讲过 fasttext 了,本质是一种结构稍微简单点的 nn,词向量平均一下做特征,代替 tfidf。

    你可以试试 fasttext 或者其他网络模型训练,比如扔一个 2 层 lstm+attention 的结构。

    还有一点,用模型训练的话,数据不能太少了。你得懂 train val test 数据集合怎么一回事。按你的描述,隔一段时间,你得重新加入新数据训练。
    encro
        42
    encro   37 天前
    比如参考 v2,注册后需要一天才能发信息;
    比如参考恩山,需要邀请或者花钱才能注册;

    33 楼的可以根据实际情况,找到办法解决。
    shm7
        43
    shm7   37 天前 via iPhone
    tfidf 首先就涉及分词、词语粒度。中文天然不具备很好的分词、词性标注,比起英语。所以你提取词频、tfidf 的特征可能会受到影响。

    也可能你数据太少。一般要 1w 到几万条数据。
    encro
        44
    encro   37 天前
    重要的是你连自己要防的是对象人还是机器都没有确定。

    假设对方是人,如果你不提高注册门槛,根本没法用机器的方式防住,

    贴吧,V2 很多论坛都有人工复审
    encro
        45
    encro   37 天前
    要自动发现垃圾信息,不用机器学习,简单分词即可:
    1,比如将所有历史垃圾内容进行分词,抽取特征词库(其实也可以人工建立和导入网络上的词库);
    2,对发布的内容进行分词,如果发现特征词超过一定数量,且存在疑似联系方式的的(这点很重要,因为都会留联系方式,而识别联系方式很简单,甚至有这一点你分词可以不做),直接进入待审核,用户账号进入禁言状态;

    但是必须还需要提高作案成本,比如:
    1,防止自动发帖工具(验证码,手机注册);
    2,防止人工发垃圾帖( IP 黑名单,手机号黑名单);
    dadieshaonian
        46
    dadieshaonian   37 天前
    单说模型,为什么不用 bert ?我很奇怪。。
    missdeer
        47
    missdeer   37 天前
    先看看 Akismet 满不满足要求,人家干这行好多年了,好多年前就工作得非常好
    zbz
        48
    zbz   37 天前
    之前做过相关的 spam 过滤(工程应用,算法没深入研究),简单总结一下:
    1. 如果要准确率(95%+),那么召回率会比较低;反之误伤比较大
    2. 如果 spam 的内容类别优先,那么用规则准确率+召回率都非常高;当然规则不是简单的正则了,当时实现了一个简单的 DSL 来描述规则,例如出:
    encro
        49
    encro   37 天前
    新鲜出炉的 BLOG 文章:
    论坛和社区如何防止垃圾文章和评论: https://c4ys.com/archives/2058

    包含:
    通过关键词库识别 spam 内容
    通过联系方式特征识别 spam 内容
    通过用户身份识别 spam 内容
    通过操作特征识别 spam 内容
    识别后的处理
    开源方案
    商业方案
    stabc
        50
    stabc   37 天前
    有个 stopformspam 的网站,有 SPAM IP 列表,有接口,英文站我试过很好用。
    SlipStupig
        51
    SlipStupig   37 天前
    @encro 关键词库基本上别想了,各种符号被绕过,还出现拼接的:弓虽, 行为数据没有,注意看我的 append
    SlipStupig
        52
    SlipStupig   37 天前
    @shm7 数据挺多的,tfidf 是基于文本加权,而目前 spamer 要表达的文本 tf-idf 值很低
    wangyzj
        53
    wangyzj   37 天前
    我昨天刚买了 spam 午餐肉
    看到了 spam 就点了进来
    encro
        54
    encro   37 天前   ❤️ 1
    @SlipStupig

    曾经负责两个世界排名 1000 以内的社区,
    每天发布内容条数十万以上吧,
    识别联系方式过滤是最有效的,
    逐渐优化后达到 95%以上。

    既然是小公司,追求智能不一定划算,因为样本不够,且调试过程比你逐渐完善过滤机制代价更大。
    当然如果是公司事少、不考虑成本、或者学习目的,那么肯定是可以的。
    我文章中开源方案提到一个,我没有实际使用过,[使用 TensorLayer 训练一个垃圾文本分类器] https://github.com/pakrchen/text-antispam
    Eleutherios
        55
    Eleutherios   36 天前 via iPhone
    熊猫吃短信是开源的么
    Marmot
        56
    Marmot   36 天前
    1,人工审核是绕不开
    2,考虑从根源解决,spam 需要通过特征来下手,封账号
    nobird
        57
    nobird   36 天前
    有些第三方 spam 检测服务的。百度就有。
    DevRoss
        58
    DevRoss   36 天前 via Android
    异常检测(领域外检测,out of domain detection )这个估计是你要的关键词
    siyemiaokube
        59
    siyemiaokube   36 天前 via iPhone
    1.提高对方连续发言的成本
    2.提高对方识别发言是否通过的成本
    lihongming
        60
    lihongming   36 天前 via iPhone   ❤️ 2
    打蛇打七寸,不用认识蛇,认识七寸就行了。无论他们拿什么混淆,最终总要把用户引导到他们的联系方式(网址、电话号码之类的),所以识别这个就行了。

    我以前是做了个库,把各种英文字母和数字的火星文都转成正常字母和数字,然后用正则检查有没有类似于网址和电话号码的子串,有就进入人工审核。

    简单一招就干掉了 90%的广告。
    shm7
        61
    shm7   36 天前 via iPhone
    文本分类本身有很多模型和研究了,套不套得上靠你自己了。模型+规则匹配应该更靠谱
    fiht
        62
    fiht   36 天前   ❤️ 1
    各位说买服务的兄弟,如果花钱能解决,我只需要劝一劝老板,花钱还是解决不了怎么办? 至于说加入审核,我们公司根本不是什么大公司,没有从事审核的人员,也养不起
    -------------------------------
    找售前要个试用,万一能解决呢?腾讯云天御了解一下 https://cloud.tencent.com/product/tms
    SlipStupig
        63
    SlipStupig   36 天前
    @encro 总算有个说到正题上的人了,十分感谢!
    loryyang
        64
    loryyang   36 天前
    这个真的很难,我不知道你评论有多少,不多的话,还不如雇一个人专门来删。先用程序简单定性一下,然后给人来过
    这个 spam 评论别看好像很简单,但是要全部干掉也不容易,至少需要一个小团队来专门解决
    yzc27
        65
    yzc27   36 天前
    文本分类试一下 fasttext
    zjuster
        66
    zjuster   36 天前
    你的思路还停留在针对问题发生的事后分析。
    一般成功防治的经验是
    1、购买第三方服务;
    2、评估评论的用途,非生存必备,关闭评论(大概某部门还没找过你们);
    3、自己聘用专门的外包进行处理和服务(结合第 2 条,有 UPGC 内容的平台,有关部门是有要求进行有效防范措施,否则可以惩罚至关停网站)
    4、要求实名认证等手段,加大垃圾评论发送的成本
    等等

    如果你还坚持自己处理的,花点时间看下垃圾内容的特征,然后收集这些内容输入用户的物理特征:账号字段、头像、ip 字段、电话号段、活跃时间等等,做用户风控模型。

    你可以看看 微博公众号 半佛仙人
    facert
        67
    facert   36 天前
    建立一个完整的反作弊系统,从前期数据收集到后期屏蔽方式都需要一个过程。算法模型是可以检测出一些垃圾文本,但也需要一定数据量学习的过程。针对楼主的问题,其实最简单快速的还是关键词策略,对于单一团伙,他们为了达到辨识度再加上机器发布,整体关键词分布都有规律,几种关键词匹配策略一上,基本能干掉 90% 。 前提是做好文本的预处理(简繁转换,数字转换,html 文本提取)。
    gladuo
        68
    gladuo   36 天前
    如果考虑自己做,且有人力标注数据,模型部分可以考虑 fasttext,达到了成本和效率比较好的平衡; nlp 相关问题可以回复我,可以给你一些专业建议;
    如其他网友所说,基于 ip id 时间屏蔽,可能是更立竿见影的手段;
    解决猫和老鼠的问题,首先还是要想清楚老鼠的动机是什么,能让他就算绕过 spam detection 也没有很大的收益的策略是什么,类似增加账号系统,账号需要有一些非常 postive 的评论,通过审核,认为是 human 用户,才会展示别的评论,有 2 条被判为 spam,整个账号所有评论都被隐藏,类似这样的一些策略,让老鼠觉得非常辛苦,边际效应非常低,他就没有动力去做了;
    simonzhd
        69
    simonzhd   36 天前
    如果是 wordpress 的话,可装个 Akismet Anti-Spam 插件,效果出奇的好
    SlipStupig
        70
    SlipStupig   35 天前
    @gladuo 能加个微信详聊不😊
    gladuo
        71
    gladuo   30 天前
    @SlipStupig Z2xhZGR1bw==
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2605 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:37 · PVG 23:37 · LAX 08:37 · JFK 11:37
    ♥ Do have faith in what you're doing.