传统模型——基于情感词典
- 输入句子,预处理
- 文本分词
- 训练情感词典(积极消极词汇、否定词、程度副词等)
- 判断规则(算法模型)
- 情感分类
文本预处理
使用正则表达式,过滤掉我们不需要的信息(如 Html 标签等)
句子自动分词
- jieba 中文分词
- HanLp 中文分词
- 中科院分词
- ...
载入情感词典
- 积极情感词典
- 消极情感词典
- 否定词典
- 程度副词词典
文本情感分类
- 每个积极情感词语赋予权重 1
- 每个消极情感词语赋予权重 -1
- 否定词会导致权值反号
- 程度副词则让权值加倍
- 最后,根据总权值的正负性来判断句子的情感
优化点
- 考虑句子的类型(祈使句、疑问句等)
- 每个词语(考虑主语、谓语、宾语等)
- 情感词典的自动扩充(无监督式的词频统计)
通过已有的模型对评论数据进行情感分类,然后在同一类情感(积极或消极)的评论集合中统计各个词语的出现频率,最后将积极、消极评论集的各个词语的词频进行对比。某个词语在积极评论集中的词频相当低,在消极评论集中的词频相当高,那么我们就有把握将该词语添加到消极情感词典中,或者说,赋予该词语负的权值。
深度学习模型
标准模型
- 标注语料的收集
- 模型阈值选取问题
- word2vec 将词语转换为向量
- CNN、RNN、LSTM 等网络模型,特征抽取句子向量
算法步骤
- 分词
- 词向量
- 句向量(LSTM)
- 分类
分词 OR 不分词
“端到端”的模型:能够直接将原始数据和标签输入,然后让模型自己完成一切过程——包括特征的提取、模型的学习。
- one hot:以字为单位,不分词,将每个句子截断为200字(不够则补空字符串),然后将句子以“字-one hot”的矩阵形式输入到LSTM模型中进行学习分类
- one embedding:以字为单位,不分词,,将每个句子截断为200字(不够则补空字符串),然后将句子以“字-字向量(embedding)“的矩阵形式输入到LSTM模型中进行学习分类
- word embedding:以词为单位,分词,,将每个句子截断为100词(不够则补空字符串),然后将句子以“词-词向量(embedding)”的矩阵形式输入到LSTM模型中进行学习分类
更好的更新方案
设定一个阈值为0.6,那么模型对某个正样本的输出大于0.6,我就不根据这个样本来更新模型了,模型对某个负样本的输出小于0.4,我也不根据这个样本来更新模型了,只有在0.4~0.6之间的,才让模型更新,这时候模型会更“集中精力”去关心那些“模凌两可”的样本,从而使得分类效果更好
网友评论