[开坑][思考笔记]关于社区反垃圾算法的设计实现与发展

提示:本文的目标人群主要还是针对对NLP、机器学习了解不多的人,所以在部分概念上会解释的很详细。如果你对这些领域有所了解,在阅读时还请谅解,同时错误之处还请指正。

起因有很多:

目前依旧在摸索中……

负面情绪

dalao在博客里就提到了负面情绪这项。dalao的方法是:

将分词的结果与词典进行匹配,遇到负面词语就减分,遇到积极的词语就加分,将最终的得分作为情感判断结果。

这是一种可行方法,还可以通过给词加权来进行优化。但是局限性也是显而易见的:

  1. 如果不给词汇加权,结果准确性会低不少。比如“自杀”和“伤心”明显所能表示的负面程度不同。而且诸如:“自杀”这样十分负面的情绪词很可能会被几个程度轻乐观词影响,从而误判为乐观。
  2. 加权:逐个标注加权词汇的成本十分巨大,然而带来的实际。

当然解决这个问题,同样也是有方法的。首先我们需要一个方法量化一个句子,以便于进一步数学处理。首先,我们需要将字典中情感相关的词语全部选出,Google之即可。其次,我们量化每一个词都和待处理的那句话之间的关系,并全部塞进一个向量即可。于是,我们就成功得到了一个可以描述这个句子情感特征的特征向量,所以接下来我们要做的就是把些特征进行分析,就能得到量化的一个情绪值。

很好,理想的模型已经有了,但是在细节上还需要完善下。

首先,关于特征向量的生成。“量化每一个词都和待处理的那句话之间的关系”这样的说法十分暧昧,基本上没有说怎么生成,所以我们先来探究下生成这么一个向量。在所有分析前,我们先对这句话进行分词。有种十分简单的方法就是:若这句话中出现了这个词就赋值1,反之则为0。升级下的话,就是统计这个词在句子中出现的次数,而为了方便比较,我们就把这个值除以所有词的数量,这个量有个名字,就叫做词频(Term Frequency)。然而这样的处理,本质上和不加权的方法没什么区别,依旧没有对情感词的“重要性”进行描述。我们知道,在情感的描述上,我们的用词还是有一定规律的。比如,我们经常会说“不开心”,而在大部分情况下,我们说“自杀”的频率与说“不开心”相比就小得多。当然也有可能有些人天天喊着“我要去死”等等,但是这样的人非常少。统计学告诉我们,只要我们收集的数据越多、语料越充足,这样的情况在很大程度是完全不需要考虑的。说到底,我们可以总结出一条规律——在情感上表达程度越重的词在使用时出现的频率就越少。即表达程度重的词相较于轻者,我们使用的概率越小。当然我在这里给出支持这个规律的依据的确不太充分,而事实上其实是能用更科学的方法来证明这条规律的。到此为止,我们能定性描述这个词的权重了。但是,这是远远不够的,要想得出真正的可靠的结果,我们需要一个定量描述。了解信息论的同学不难发现(不了解的同学,我会专门写一篇介绍信息熵的文章),事实上这就是一种特殊的条件熵,根据神奇的条件熵公式:

H(X|Y)=\sum_{x,y}p(x,y)log\frac{1}{p(x|y)}

不难得到公式:$latex log\frac{D}{D_{x}}$(D为语料库总文章数,Dx为出现这个词的文档数)。由于这个值的计算方式,我们将其命名为逆文档频率(Inverse Document Frequency)。所以,将这个值和之前的词频一乘就得到了这样一个定量描述的值,他还有一个名字——TF-IDF,非常有名的算法。通过科学的方法,第一个问题被我们解决了。

随后,关于量化特征向量为情绪值也是个问题。一种可行的思路是:取一些参照的负面特征向量,计算余弦相似度。选取合适的参照,可以采用对语料取特征向量再进行聚类。聚类方法很多,比如根据欧拉距离筛选啊等等……但是这个方法其实有很大的问题,即负面情绪并不一定会包含那么多的负面词!很可能一句话只有那么几个负面词,而且事实上负面句子含有的负面词并不是都有固定的组成(当然和参考向量的选取也有关系)。所以,我们需要找一个能更加优秀的分类的方法,而且这个方法一定要有一定的泛化能力。所以——支持向量机(SVM)!SVM有不错的泛化能力,适合二类化,而且实现也不是很复杂。关于SVM,我会专门写一篇文章进行介绍。

缺陷。非常可惜的是,即使我们那么认真的规划了这个算法,但它依旧不完美,甚至是缺陷甚至不比上一个少。放效率等等不提,单说提取特征没有考虑语义就是一个很大的问题。比如这句话:

他们都说我一定会失败,都说我的努力是徒劳、我的作品是垃圾、我的成功是不可能,面对这些不公平的言论使我崩溃。但是我终究会成功,因为我心理的信念!

这句话里的负面词相较正面词,无论怎么统计:

负面词:失败、徒劳、垃圾、不可能、崩溃、不公平

正面词:成功、信念

都很难得到正面的评价,然而直观的理解,这句话很明显是正面、积极的。所以,如果不考虑语义,情感分析的正确率很难有大的提升。

那就考虑啊!(Coming Soon……)

尾声 – 负面情绪

讲道理,负面情绪和垃圾评论有什么关系啊!

引战言论

(Coming Soon……)

后记

我不是NLP工作者,但是我有必要分享下——反垃圾的经验。说的有问题的地方还请各位指正,你们非常熟悉NLP这一套理论。对反垃圾的研究,真的不是一件简单的事情。甚至连对“垃圾信息”的定义也是很模棱两可的。我之所以想要涉足于这个领域,只是单纯的希望靠自己不高的能力去尝试解决一个难题。如果你有什么想法,欢迎告诉我,我们一起来探讨(admin@kaaass.net)!

分享到

KAAAsS

喜欢二次元的程序员,喜欢发发教程,或者偶尔开坑。(←然而并不打算填)

相关日志

  1. 没有图片
  2. 没有图片
  3. 没有图片
  4. 没有图片

评论

还没有评论。

在此评论中不能使用 HTML 标签。