基于规则进行情感判断的优势在于只要在规则可控的范围之内,情感的判断不易失误,超出规则导致情感判断错误的话,也比较方便解释; 基于机器学习的情感判断的优势在于对规则没有考虑到的说法也有很好的适应性,但是劣势在于有可能会在很简单的句法上判断错误导致难以解释。
基于规则的情感极性判断,需要准备否定词表,褒义词贬义词表(如果需要计算具体数值的话,还要准备程度副词表,以及程度的量化值以及褒义词贬义词的极性量化值),另外需要分词工具可以进行句法分析,这里推荐使用pyltp,需要加载ltpdata模型,下载ltpdata的时候要注意模型和pyltp的版本匹配。
如图所示这是一个句法分析的结果,比如vob代表拿和外衣是动宾关系,按照句法分析的结果,我们设定规则:
(1)从一个情感词出发,向整个句法树上方寻找所有否定副词,向整个句法树下方寻找所有否定副词,组成一个情感模块,模块中否定副词为双数,整个模块的情感则取情感词的情感,否则取情感词情感的反面
(2)一段话发现一个负面的模块,就判定整句话为负面
结果如下,这里和腾讯提供的情感接口做了个对比:
目前词库还是随意从网上下载的,没有去清理,对付简单的句子效果还不错。