元路
本帖最后由 lilanxiao 于 2020-4-16 17:57 编辑

元路智能反刷屏插件
1.介绍
 元路反刷屏插件是一款能够智能拦截玩家聊天的插件
 本插件通过玩家近期话语相似度判断、话语间转换难度、整句信息熵计算、平均信息熵计算
 来智能拦截玩家发言是否存在刷屏、无意义行为

 插件具有以下特点:






    高自定义度 - 插件中所有信息均可自定义,让插件更适合您的服务器
    高效性 - 本人非常注重代码运行效率,已尽可能地优化了速度,对服务器影响可忽略不计
    智能性 - 引用了2类共4种刷屏信息判定方式,极大地减少刷屏信息
    可拓展性 - 本插件开源并提供javadoc,方便各位学习及改进



2.原理介绍
 (1).信息熵
  信息熵简介:
信息是个很抽象的概念。人们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本五十万字的中文书到底有多少信息量。
直到1948年,香农提出了“信息熵”的概念,才解决了对信息的量化度量问题。信息熵这个词是C.E.香农从热力学中借用过来的。热力学中的热熵是表示分子状态混乱程度的物理量。香农用信息熵的概念来描述信源的不确定度。
信息论之父克劳德·艾尔伍德·香农第一次用数学语言阐明了概率与信息冗余度的关系。

信息熵的基本内容:

  由定义我们可知,当玩家的一句话中重复很多时,其信息熵会降低,由此我们可以通过信息熵来判断玩家说话是否有意义
  但由此直接判定玩家说话是否有意义不太公平(所以默认整句话信息熵是不被启用的)
  例如: "我的世界"与"我的世界我的世界"信息熵均为2.0,当玩家反复复制一段文字时也会显得有些无意义
  由此,我设想了一种方法,即,平均信息熵,此值为整体信息熵平均到每一个字符上的结果,但由于信息熵并非线性数值,所以我将话语长度取ln值后再带入除数,即得到平均信息熵
  公式如下: aH = (-∑Pi*log2(Pi))/ln(Length)
  注意:在我想出此方法前并没有注意到网上已经有了平均信息熵的概念,所以此公式并非通用公式
  我在网上找到的平均信息熵解释: (图片来源)



 (2).相似度
  相似度通过计算两字符串之间的编辑转换距离再除以两字符串中最长的一个长度得出
  插件将会缓存玩家近期聊天数据(数量由配置文件决定)然后再进行比对
  编辑转换距离计算方法如下:
  



3.命令
 插件提供了多种命令来满足您对玩家刷屏限制的需求
 对于命令您亦可在游戏中查看帮助
 命令工具类: yuanluCommand,版本:1.0.0 (id:1)
 所有命令均需玩家拥有yuanlu.antiSpam.admin权限才可执行
 此权限也为此插件唯一权限

 /yantispam reload 重载配置文件
 /yantispam test ... 测试某(几)段话的信息熵、相似度信息, 您可以用#分割多段话
 /yantispam set <player> 将玩家配置设为默认
 /yantispam set <player> <name> 将玩家配置设为已有的某配置
 /yantispam set <player> <datas> 为某玩家设置独立的配置1
1:datas所需信息
minLength判断最短长度
minAverageEntropy最小平均信息熵
minEntropy最小信息熵
checkAmount相似检查数量
maxSimilarity最大相似度
minDistance最小变换次数
time近期消息缓存时间(毫秒)




4.图片展示

 话语信息熵计算:
 更多信息已被隐藏
 

 内容无意义行为:
  聊天栏为触发的文字
 

 内容过于相似行为:
 聊天栏为触发文字
 

 配置文件截图:
 具体配置请详见config.yml文件
 



5.下载链接
https://share.weiyun.com/5rDMIf9
密码:ife9w3


6.记录
2019.8.17 15:43 调整算法, 相似度比较不再受长度限制
2019.8.17 15:30完成1.1.0版本, 加入消息时间戳
2019.8.17发布于MCBBS
2019.8.16完善插件 1.0.0
2019.8.15完成核心内容:信息熵、相似度判断
2019.8.14收集思路



7.编程相关
本插件核心工具保存在AntiSpamTool中, 内留一个main方法方便测试
您可下载-javadoc版本的文件, 内含javadoc及源码, 您可自行查看



8.写在最后
由于本人服务器未正式开服,所以未能在服务器内进行玩家测试
仅通过本人手动模拟聊天来测试出一定的数据
欢迎您寻找出更加合适的数值,反馈给我,我有空一定会来看的


本人为一名准高三党在明天(2019.8.18)就要开始上课了
所以接下来一年的时间将很少上线
有任何问题均可私聊我, 我会尽快尽力解决的

求人气求金粒qwq


本插件所用所有代码均为原创,不存在借用/抄袭等行为
本插件为非盈利性插件,免费发布,严禁销售和转卖

LastPoint
对付小学生刷屏很有用呢

元路
LastPoint 发表于 2019-8-17 15:43
对付小学生刷屏很有用呢

哈哈,谢谢

楠木i
期待未来的版本。

元路
1957863988 发表于 2019-8-17 17:46
期待未来的版本。

谢谢,未来版本会加入权限分级,格式相似判断,AI识别接入(可能)

楠木i
还有, 你为什么设仅作者可见。

元路
1957863988 发表于 2019-8-17 18:02
还有, 你为什么设仅作者可见。

hmm,之前emmmm

狐狸年酱
我觉得吧 其实最好设置一个玩家或者ai输入过一句话输入过二次之后就开始屏蔽上一句话的字眼了
比如玩家输入啊啊啊啊啊额 然后下一句是嗯嗯嗯嗯额我啊 然后额和嗯还有啊都会被屏蔽 然后提示玩家说你上句话已经说过这个字了!

元路
狐狸年酱 发表于 2020-4-21 21:42
我觉得吧 其实最好设置一个玩家或者ai输入过一句话输入过二次之后就开始屏蔽上一句话的字眼了
比如玩家输入 ...

这个拦不住的呀,比如第一句啊啊啊啊啊,第二句哦哦哦哦哦,照样是可以的

j16
谢谢分享,期待更好的更新版本

lmy5005
支持原创!!1

小天不甜
这个插件不错,比neverlag内置反刷屏好用很多呢

a1154849874
6啊,这判断机制绝了

Matthew123
這插件很棒:)

黑羽快斗´
有没有误拦截

csdm522
不错哦,很good

牧木目
防不了 安装了聊天格式的插件的

FireworkPolymer
那个set <data>怎么用,弄了半天不会

浩厉害哟
支持一下

二哈大魔王
感觉可以 但是这个太严格了  刷个66666666 都会说信息量不高

梦境哇
限制刷屏必备哦!

ggbssb
简直不要太棒

UsonTong
支持支持! 这公式= =看的我都裂开了= =(反正我又不看)

楚逍
MCBBS有你更精彩!

隐匿者
很不错的插件,感谢帖主的推荐,加油

Pease
帖主可以提供一下源代码和汉化版本吗,感谢

viseron
插件不错~推荐~

元路
感谢支持,最近本人所有插件都陆续搬移至个人网站上

转子拖拉机
小学生真的很喜欢刷屏支持1.16吗

shifan0711
艾斯这个插件了

熄灭星空
可以很好的治一治哪些刷屏的人了

Beiying丶
感谢分享

FanJang酱
woc!作者是学霸啊

闪123
感谢分享

Fracture_Moon
希望可以增加重复指令拦截功能,和聊天一样的机制,可以再新增一个如果被提示刷屏的话继续使用刷屏或者重复使用一种指令就会被踢出服务器

第一页 上一页 下一页 最后一页