去年我在做股票市场的情绪指数的时候,遇到了词库及其不匹配的情况。市面上对于一些股吧上的词库是比较少的,所以必须自己创建词库。
但为了训练,我们必须对每一个句子都进行情绪的标注,几百万条的数据对于我们团队2个人而言有点不可逾越。
所以到目前位置我们应用了两种方式进行(单单对于评论而言,而不是文章),效果提升都非常明显 从0.4~0.5提升到0.7~0.9
一、绝对词来代替标注(自己想的)
绝对词就是:一个句子有了这个词大概率会指向一种情绪
比如:牛逼。 有了这个词的句子大概率会是正向的情绪。虽然也有例外:不是那么牛逼,一点都不牛逼。 但是大概率是的。
我们的做法就是,先通过jieba分词,再删去停用词(,。等,具体资源可以上网搜索,百度这些都有专门的停用词txt的),找出出现频率最高的1000个词,从上往下看,如果看到第一眼就觉得有了这个词这个句子大概率是正向的就标注为1,反之为-1,看不出来的标记为0
然后把所有含有标注1的词的句子打分全为正向,-1的全为负向,同时含有的看数量,一样的话就为0.然后丢进去学习(我们的环境是snowNLP)
这样虽然是一个比较粗略的办法,但有效的提高了句子情绪判断的准确率,省下了大量工时
原理:因为一般人们的语言都习惯于同类词会一起出现,透过这样标注,让模型也能够学到别的正向或负向词进行打分
相对于60w笔的数据,只需要标注1000词,600分之一的工作量就可以完成
二、使用active learning(这个是在我朋友的导师的paper上看到的)
直接说方法:先随机标注一部分,丢进去训练
然后预测全部的数据
拿出中间预测最难判断的(情绪分为0的)一部分,再进行标注
一直往复
那位老师的研究结果是,最后只需要八分之一的标注量就可以达到和全部标注一样的训练效果
下图是论文出处