当您通过其RSS频道关注特定维基百科文章的新闻时,如果不进行信息过滤,会很烦人,因为大多数编辑都是垃圾信息、破坏行为、微小编辑等。
我的方法是创建过滤器。我决定删除所有不包含贡献者昵称而仅通过贡献者IP地址识别的编辑,因为大多数这样的编辑都是垃圾信息(尽管也有一些好的贡献)。使用正则表达式很容易做到这一点。我还删除了包含粗俗语言和其他典型垃圾信息关键词的编辑。
您是否知道一些更好的方法,利用算法或启发式与正则表达式、人工智能、文本处理技术等结合?该方法应该能够检测出不良帖子(微小编辑或破坏行为),并且能够逐步学习什么是好的/坏的贡献,并更新其数据库。
谢谢
回答:
这里有很多不同的方法可以尝试,但传统上,具有增量学习功能的垃圾邮件过滤器通常使用朴素贝叶斯分类器来实现。个人而言,我更喜欢实现起来更简单的Winnow2算法(详细信息可以在这篇论文中找到)。
首先,您需要从要分类的文本中提取特征。不幸的是,维基百科的RSS订阅源似乎不太适合机器读取,因此您可能需要进行一些预处理。或者,您可以直接使用Mediawiki API,或者查看此页面底部链接的机器人框架是否对您有帮助。
理想情况下,您最终会得到一个列表,包含添加的单词、删除的单词、您可以从中计算的各种统计数据,以及编辑的元数据。我想象特征列表看起来会像这样:
editComment: wordA
(wordA出现在编辑评论中)-wordB
(wordB从文章中删除)+wordC
(wordC添加到文章中)numWordsAdded: 17
numWordsRemoved: 22
editIsMinor: Yes
editByAnIP: No
editorUsername: Foo
- 等等
任何您认为有助于区分好坏编辑的特征都可以使用。
一旦您提取了特征,使用它们来训练Winnow/贝叶斯分类器就相当简单了。