训练分类器
特征提取
我们将N-Gram(该模型基于这样一种假设,第n个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。)的出现当作其二元特征。因为整体情感不一定能从重复的词语中体现出。
不同论文中对Uni-Gram(一个词为单位)Bi-Gram和三元的Tri-Gram都有所探析。理论上说多元将更能捕捉情感表述的特征和规律,而Uni-Gram则有更高的覆盖度。(可以考虑Bi-Tri-Gram结合啊)
获得N-Gram模型的过程如下:
- 过滤:过滤URL链接啊、推特名啊什么的。
- 凭证化:将文字用空格和标点分开,形成“一大包”词语;但是确保“don’t”, “I’ll”, “she’d”这样的词还保持原型。
- 移除停顿词:从词汇包中剔除冠词。
- 构建N-Gram:用连续的词语构建。一个否定词(如"no/not")要和其之前或之后的词语链接在一起。比如"I do not like fish"的Bi-Gram有三个(原文打成两个了……)是“I do+not”, “do+not like”,“not+like fish”,因为否定词在观点中很重要,所以这样会提高准确率。
分类器
我们用多项式贝叶斯分类器构建了舆情分类器。我们也尝试使用了SVM(向量机)和CRF(随机条件场->就是马尔科夫),但是还是贝叶斯最屌么么哒(看来概率论有必要再重翻一遍了,最近接手的东西都是贝叶斯啊、马尔科夫啊、蒙特卡洛啊什么的,实际上社会学问题本身都是概率问题不是么)。
其中s是情感,M是推特信息。因为我们正面、负面和中性评价的消息数量是一样哒,所以我们化简如下:
我们训练了两组贝叶斯分类器,分别使用N-Gram和词性分布(Part-of-Speech or POS)信息。
POS分布分类器估算不同组中POS标签的出现概率作为先验概率。尽管POS和N-Gram是独立的,我们为了计算简便假设他们的条件独立性关系:
其中G是代表信息内容的N-Gram,T是信息的POS标签。我们假设N-Gram之间条件独立:
POS间也类似:
最终我们计算出每个情感的对数似然函数的值(log-likelihood)【<-这是什么我还要查下资料】
提高准确率
为了提高准确率我们应该摒弃常见的N-Gram,因为他们并不表现出明显的主观情感(比如不同组中出现概率相近)。有两种方法:
- 计算不同组分布熵(entropy),公式如下:
其中N是感情的数量(本文中为3)
-
计算出每个N-Gram的经验性(salience)
最后我们得出的结果实例:
熵低且经验性高的词语应该剔除,我们用上述方法计算log-likelihood
其中f(g)是熵/经验性,θ则是阈值(控制是否剔除某词语,一般根据实验结果和经验确定)
后面就是实验验证什么的,就不赘述了。
这篇文章质量虽然不是特别高,但是至少在自然语言处理这方面了解了很多知识,算是接触了些皮毛,后面可以根据这篇文章里涉及到的技术再深入了解。
明天其实可以总结一下写篇综述了。
That's all for today. See you tomorrow.
Kevin Ham@Wuhu
Department of Internet Engineering, Anhui Normal University, Wuhu, China
3.7.2015