杂记 · 2022年3月31日 0

广告判断算法笔记

在管理telegram的频道过程中,有很多垃圾信息处理。需要一套算法来计算一个账号是否是一个营销广告号。

1、先提取当前账号最近的10条消息进行分词,然后对词频进行统计,统计高频词的个数,如果某些词出现的次数很多,且大于消息的条数,那么我们可以认为这个账号是营销号。正常的用户不会一直发重复的文本。也有一些账号会增加一些随机码来营销判断,所以我们可以直接通过分词过滤到无效的信息;如果重复的系数达到设定的阈值,那么我们就判断这个号是营销号。

2、如果第一步的系数,没有达到阈值,那么我们就进行进一步的判断。首先,我们先进行词库的样本,先抽取20个核心词,对核心词进行词性分类;如果消息中广告词性的词出现的次数达到设定的阈值那么这个账号就是一个营销号。正常的用户首先,不会说这样的词很多次。然后,附带的判断一些辅组的词来判断,是否有多个品牌的词性出现,和多个地区的词性出现。

其他辅助判断依据,屏蔽重复说同样消息的用户;屏蔽机器人的消息;过滤emoji表情;统计 @username 出现的次数;统计 “https://t.me/***” 出现的次数;

后续计划:完善词性库,然后细分词性库;对词性详细的分类有助于识别标记用户的偏好和擅长的领域;对用户名一刀切的计算,如果用户名中包含广告词性的文本直接判断为营销号;还有对简介进行判断,类似与包含“联系主号”或是“看头像”之类的介绍性的文本也直接判断为营销号。辅助词性的完善,增加一些表达供应服务的词性,例如:“需要的老板”、“联系我”或是“私聊我”;结合这些辅助的词性能有助于提高识别的准确率。

欠缺:对于一些软文类营销广告表现不佳,后续再完善词性库以后会识别的更加精准。判断是持续的,但是样本的加入一条一条加入的,如果账号刚好发了2条相似的文本,会造成高频词的系数很高,从而判断为营销号;应该统计发言的条数来制定更精细的阈值。其次,如果收集了1000条消息,只拿最近的10条消息判断也有失准确性。

修正系数:通过对大量文本的测试,计算一个合理的阈值来衡量使结果更加精准。

分词模块引用的是 jieba