设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2130|回复: 0

SAS代码构建贝叶斯文本分类器全教程

[复制链接]

21

主题

264

金钱

349

积分

入门用户

发表于 2019-8-5 13:46:26 | 显示全部楼层 |阅读模式

当我们进行文本分析、尤其是舆情监控的工作时,常常需要迅速对一段文本的倾向性做出判断:比如这条客户评论,洋洋洒洒几百字,究竟是好评还是差评?是赞美还是批判?对于这种需要“分类”的问题如果文本量较大,人工进行判断显然是缺乏效率的,这时贝叶斯分类器就可以帮上大忙了。

分类器就是利用某些特征对已有内容项进行分类的工具。对文档进行分类时,要先定义内容项为文档,特征为文档中的单词。本文以SAS代码为基础,根据已有文档的属性,构建训练数据集,训练贝叶斯分类器,将一讲如何利用贝叶斯分类器判断未知属性的文档。

1. 构造数据集
首先我们来利用已有文档构造两个数据集,一个是fc表(即feature-category),存放每个特征值(单词)出现在某个属性出现的次数;另外一个是cc表(即category-count),存放某个属性的内容项出现的次数。

存放每个特征值在某个属性出现次数的fc表的示例为:
1.jpg
fc表存放特征值、特征值的分类、特征值分类的个数三项信息。如果训练数据为简单的“Nobody owns the water” - “good”,这样就会在下图的fc表中记录4条信息(这里面the的次数在第一次训练的时候应该为1)。
2.jpg
具体的构造方法为:
3.jpg
4.jpg
另外一个数据集cc则负责存放某个属性的内容项出现的次数,示例如下:
5.jpg
其中category存放分类种类,count主要存放每种分类的计数。构造方法为:
6.jpg
7.jpg

2. 设置训练函数
训练函数的格式为:
%train("buy carnow","good");
%train("make quickmoney at the online casino","bad");
8.jpg

3. 计算训练数据集的条件概率
计算条件概率Pr(document|category):
9.jpg
10.jpg
然后计算加权的条件概率,设置每个特征单词初始的对于所有分类的加权概率从0.5开始,这样设计比较合理。
11.jpg

4. 计算整个文章的概率
整个文章的概率就是Pr(document)。我们需要先假设每个特征值都是独立的:
12.jpg

5. 概率转换
目前计算出的是Pr(document|category),我们需要利用贝叶斯变化,将之转换成Pr(category|document)。
Pr(category|document) = Pr(document|category) * Pr(category)/Pr(document)
13.jpg
接下来,我们选取“quick car”这两个单词构成的文本,测试分类效果:
14.jpg

通过选定的5段文本训练,经过计算,“quick car”属于good的概率为0.0312,远远大约属于bad的概率0.009,因此可以判断为“good”。

同样,贝叶斯分类器不仅仅可以用来判断文本的感情倾向,只要需要给文本进行分类的时候都可以用到。当然,本文介绍的方法只是一种示例,实际的训练集和需要判断的文本都会更加复杂。而且,本文假设每个特征变量都是独立的,但这种假设并不现实,因此是未来可以改进的地方。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表