Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

想到个有意思的东西,是不是可以做小作文被引(偷)数+查重数+点赞等维度判断小作文质量分数捏 #33

Open
Shimada666 opened this issue Aug 29, 2021 · 4 comments
Labels
help wanted Extra attention is needed

Comments

@Shimada666
Copy link
Contributor

Shimada666 commented Aug 29, 2021

这个是上一个issue提的计算查重次数,按查重次数筛高质量小作文的延伸,是不是可以统计小作文被引(偷)数,展示这个高质量小作文列表,甚至由此定义一套小作文计算分数的计算方法捏
感觉很有意思诶

@Shimada666 Shimada666 changed the title 想到个有意思的东西,是不是可以做小作文被引(偷)数+小作文影响因子 想到个有意思的东西,是不是可以做小作文被引(偷)数+查重数+点赞等维度判断小作文质量分数捏 Aug 29, 2021
@Shimada666
Copy link
Contributor Author

坏了 本鼠铸币了 影响因子应该做不成,毕竟5人底下都是偷来偷去的,期刊影响因子相同了属于是,改成质量分数

@Shimada666
Copy link
Contributor Author

和朋友讨论了一下,感觉还是可以做,还蛮有意思的,以下是朋友的见解:

视频 -> conference
视频底下小作文 -> paper

官号的每个视频投稿类似于一次conference,每一条原创评论类似于一篇paper。为每个conference(视频)计算其权重因子,
image
再为每个conference底下的paper(评论)查找其被引次数 image

在此基础上计算影响分数
image

此时每个原创评论都有了其 imageimage ,若能构建评论引用的图网络,可将抄袭评论获得的分数,按一定图权重,加给被抄袭的原创评论。

但是由于图网络难以构建且意义不大,可以简化成抄袭评论所获得的 image 以一定权重加给原作者,权重默认可为1。

以上公式举个例子b,c,d,e 抄了 a,那么分数即为
image
其中 w1 是评论抄袭衰减权重,w2是被引次数计算权重,w1可以暂时为1,w2可以选取一个合适的参数

而每一个活跃在评论区的文豪都是Author,对其发过的所有原创评论的 imageimage 进行求和,就得到了衡量其个人总影响力的指标 image ,以此可以做文豪排行榜

在没有视频数据的情况下,可以将视频影响因子从评论分数计算公式的自变量里删除,简化逻辑先凑合用。

@stream2000 @ch3cknull @michaelfyc 大佬们觉得捏

@ch3cknull
Copy link
Member

判断是否优质小作文能否使用 朴素贝叶斯 做类似于 垃圾邮件分类?

朴素贝叶斯判别优质小作文

在不使用额外数据的情况下,我目前的思路是

  1. 人为规定敏感词
  2. 统计小作文全文敏感词的占比
  3. 统计小作文出现的字符种类,这里b站的表情要额外处理一下,只统计中文英文数字
  4. 字符种类超出阈值 而且 敏感词占比低于阈值 可以判定为疑似优质小作文,在数据库做标记
  5. 这一步在入库或者爬取时就可以做

b站表情额外处理

上面说的额外处理,就是用正则匹配形似 [七海_生闷气] 这种文本形式,将其视作一个单独的字符

对于不同表情的处理方式暂时没想好,目前打算是都替换成空格再统计

查重文本框下面的 判断小作文类型 就简单用到了这个思路,不过只判断是否是字符画
https://github.com/ASoulCnki/ASoulCnkiFrontEndV3/blob/main/src/utils/check/index.ts#L9

计算方式存在的霸榜问题

上面的这些计算由于我没太明白,所以还是要其他人再看一下?

这种计算方式对新的小作文不太友好的样子?感觉容易出现霸榜的情况

现在的 rank 的 总点赞榜 是有这种霸榜情况出现的,但是难以避免

@Shimada666
Copy link
Contributor Author

判断是否优质小作文能否使用 朴素贝叶斯 做类似于 垃圾邮件分类?

朴素贝叶斯判别优质小作文

在不使用额外数据的情况下,我目前的思路是

  1. 人为规定敏感词
  2. 统计小作文全文敏感词的占比
  3. 统计小作文出现的字符种类,这里b站的表情要额外处理一下,只统计中文英文数字
  4. 字符种类超出阈值 而且 敏感词占比低于阈值 可以判定为疑似优质小作文,在数据库做标记
  5. 这一步在入库或者爬取时就可以做

b站表情额外处理

上面说的额外处理,就是用正则匹配形似 [七海_生闷气] 这种文本形式,将其视作一个单独的字符

对于不同表情的处理方式暂时没想好,目前打算是都替换成空格再统计

查重文本框下面的 判断小作文类型 就简单用到了这个思路,不过只判断是否是字符画
https://github.com/ASoulCnki/ASoulCnkiFrontEndV3/blob/main/src/utils/check/index.ts#L9

计算方式存在的霸榜问题

上面的这些计算由于我没太明白,所以还是要其他人再看一下?

这种计算方式对新的小作文不太友好的样子?感觉容易出现霸榜的情况

现在的 rank 的 总点赞榜 是有这种霸榜情况出现的,但是难以避免

  1. 使用此种算法确实可以提高小作文的质量,但是我不知道能不能做到一个比较好的效果。在短期看我觉得是可以使用的,长期来看我觉得加入更多数据更合适,这样会使算法更加准确,数据多了也可以做更多有意思的东西
  2. b站表情额外处理同(1),都是算法优化的方向。我在做目前代码里这个比较 naive 的算法的时候,就遇到我想了很多关键词,尽量去屏蔽,结果还是能有新的我意想不到的撕逼评论出现在里面,所以短期来看我觉得可以用此类方法增加优质小作文命中率,长期来看我觉得还是希望能有更多数据支持。另外,敏感关键词过多,也许会影响到程序运行速度?因为我看现在代码是把所有数据全都读到内存 allReplies 里了。我只加了那些关键词,接口单次响应时间已经达到了40ms了,用正则更是超过70ms
  3. 以上计算方式只是初步设想,暂时是没有具体公式的。霸榜问题确实存在,我暂时想到两个优化方向。(1)类似于github trending,设计总榜|单日热榜等形式,默认展示热榜从产品上一定程度解决问题 (2)使用算法,以时间维度,对于新的小作文,相对于老的作文以一定权重补偿。霸榜问题这方面还可以再思考一下

另外问一下,生产环境下,现在数据读取是怎么读取的,还是直接加载全部数据在内存中么,原始数据是存在es还是db捏。

@michaelfyc michaelfyc added the help wanted Extra attention is needed label Aug 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

3 participants