【NLP_Stanford课堂】文本分类1
文本分类实例:分辨垃圾邮件、文章作者识别、作者性别识别、电影评论情感识别(积极或消极)、文章主题识别及任何可分类的任务。
一、文本分类问题定义:
输入:
- 一个文本d
- 一个固定的类别集合C={c1,c2,...,cj},一共j个类别
输出:一个d的预测类别c∈C
方法:
- 最简单的是使用基于词或其他特征组合的手写规则
- 垃圾邮件:列举出一系列黑名单的邮箱地址或者词(比如,“dollars”和“have been selected”)
- 如果规则很完备,准确率会非常高,但是一般很难做到或者花费会很贵
- 一般方法:结合手写规则和机器学习
二、有监督的机器学习方法:
输入:
- 一个文本d
- 一个固定的类别集合C={c1,c2,...,cj},一共j个类别
- 一个训练集,其中包括m个已经被手动标记上类别的文档(d1,c1),...,(dm,cm)
输出:一个学习完毕的分类器γ: d→c,即给定一个新文档就可以输出一个对应的类别
分类器类别:
- Naive Bayes
- 逻辑回归
- 支持向量机Support-vector machines
- K近邻k-Nearest Neighbors
- ...
1. Naive Bayes
主要思想:非常简单,基于贝叶斯规则,用词袋表示文档
词袋:只统计文档中出现的单词本身及其计数,而忽略了词跟词之间的顺序,只是一个词的集合。词可以是文档中的词的全集或子集(即,只统计部分特征词),从而可以用一个词向量来表征文档
1.1 形式化描述:
对于一个文档d和一个类别c,我们旨在计算以下概率,,即给定一个文档,归属于该类别的概率是多少,从而找到最佳的类别:
最佳的匹配类别为:
其中P(d|c)为最大似然概率,P(c)为先验概率
继而有:
假定:
- Bag of Words assumption: 假定词的位置无关紧要,只关注是否出现某个词
- conditional independence条件独立性:假定给定类别c,各个特征x1,x2,...之间的概率P(xi|c)相互独立
当然以上的假设实际上并不正确,却能简化我们的计算问题,从而有:
1.2 参数学习:
最简单的方法:使用最大似然估计
这里需要将属于类别cj的文档都连接在一起,创建一个新的大文档,然后计算wi在该大文档中的频次
然而实际上,我们并不在naive Bayes中使用最大似然估计,因为:
- 当测试集中出现训练集中没有的词时,会按照训练集中的计数被记为0,而当一个测试文档中出现一个类别cj中未知的词时,该文档属于cj的概率会是0,因为是连乘。
解决方法:增加一个平滑
Add-1:
1.2.1 具体步骤:
- 从训练集中提取词汇表V
- 计算每一个类别的P(cj)
- 将所有属于cj类别的文档放入一个集合docsj
- 计算:
- 计算类别cj下文档中的某个词wk的条件概率P(wk|cj)
- 将docsj中的文档连接成一个文档Textj
- 对于词汇表中的每个词,计算:
- wk在Textj中出现的次数nk
,其中α是增加的一个平滑
1.2.2 如何应对未知词:
在词汇表中增加一个词“unknown word”,用wu表示。
由于在训练集中不存在未知词,所以count(wu,c)=0,条件概率为:
2. Naive Bayes与语言模型的关系
根据一个类别,我们可以围绕这个类别生成一个文本,其跟语言模型非常相似
假设:每个类别=一个unigram语言模型
证明:
在Naive Bayes中,对于文档中的一个词有一个归属于一个类别的概率:P(word | c)。从而每个句子有:。例子如下:
文档为:“I love this fun film”。类别为:postive。则每个词归属于positive的概率为左列所示。
则整个句子的概率为:
而unigram语言模型在计算概率时为P(s)=ΠP(word)
所以Naive Bayes其实就是一个已知类别下的unigram语言模型。
当我们在检验不同类别下句子的概率时,就好比在运行不同的语言模型,比如postive和negtive
所以寻找概率最高的归属类别的过程就变成了寻找概率最高的语言模型的过程。
3. 多项式Naive Bayes模型的实例
3.1新闻分类
设我们要对亚洲新闻进行分类,训练集中有四个文档,每个文档归属于chinese或japanese,测试集中有一个文档,要求对这个文档进行分类。P(c)和P(w | c)的计算方法如上所示。
解:
1) 首先计算P(c):
2) 然后计算P(w | c):统计词汇表中一共有6个单词:Chinese, Beijing, Shanghai, Macao, Tokyo, Japan。由于测试集中只有3个单词:Chinese,Tokyo,Japan,所以方便起见我们只计算这三个词的条件概率如下:
以P(Chinese|c)为例,Chinese在c这个类别下出现了5次,c这个类别下一共有3+3+2=8个词,词汇表一共有6个词,则根据公式可以计算得到结果为6/14=3/7
3) 然后计算P(c|d5):d5表示第5篇文档,即测试文档,表示已知文档d5,求归属类别。
因为P(c|d5)=P(d5|c)*P(c)/P(d5)=ΠP(word|c)*P(c)/P(d5)v9 ∝ ΠP(word|c)*P(c),所以:
P(c|d5)>P(j|d5),所以测试文档的类别应为c
3.2 垃圾邮件过滤
上述新闻分类的实例中采用每个词作为特征,但是大部分应用中选用的是特殊种类的词和其他作为特征。在垃圾邮件检测中,采用以下作为特征:
【NLP_Stanford课堂】文本分类1的更多相关文章
- 【NLP_Stanford课堂】文本分类2
一.实验评估参数 实验数据本身可以分为是否属于某一个类(即correct和not correct),表示本身是否属于某一类别上,这是客观事实:又可以按照我们系统的输出是否属于某一个类(即selecte ...
- Tensorflow二分类处理dense或者sparse(文本分类)的输入数据
这里做了一些小的修改,感谢谷歌rd的帮助,使得能够统一处理dense的数据,或者类似文本分类这样sparse的输入数据.后续会做进一步学习优化,比如如何多线程处理. 具体如何处理sparse 主要是使 ...
- Atitti 文本分类 以及 垃圾邮件 判断原理 以及贝叶斯算法的应用解决方案
Atitti 文本分类 以及 垃圾邮件 判断原理 以及贝叶斯算法的应用解决方案 1.1. 七.什么是贝叶斯过滤器?1 1.2. 八.建立历史资料库2 1.3. 十.联合概率的计算3 1.4. 十一. ...
- 基于weka的文本分类实现
weka介绍 参见 1)百度百科:http://baike.baidu.com/link?url=V9GKiFxiAoFkaUvPULJ7gK_xoEDnSfUNR1woed0YTmo20Wjo0wY ...
- LingPipe-TextClassification(文本分类)
What is Text Classification? Text classification typically involves assigning a document to a catego ...
- 文本分类之特征描述vsm和bow
当我们尝试使用统计机器学习方法解决文本的有关问题时,第一个需要的解决的问题是,如果在计算机中表示出一个文本样本.一种经典而且被广泛运用的文本表示方法,即向量空间模型(VSM),俗称“词袋模型”. 我们 ...
- R语言做文本挖掘 Part4文本分类
Part4文本分类 Part3文本聚类提到过.与聚类分类的简单差异. 那么,我们需要理清训练集的分类,有明白分类的文本:測试集,能够就用训练集来替代.预測集,就是未分类的文本.是分类方法最后的应用实现 ...
- Spark ML下实现的多分类adaboost+naivebayes算法在文本分类上的应用
1. Naive Bayes算法 朴素贝叶斯算法算是生成模型中一个最经典的分类算法之一了,常用的有Bernoulli和Multinomial两种.在文本分类上经常会用到这两种方法.在词袋模型中,对于一 ...
- 文本分类学习(三) 特征权重(TF/IDF)和特征提取
上一篇中,主要说的就是词袋模型.回顾一下,在进行文本分类之前,我们需要把待分类文本先用词袋模型进行文本表示.首先是将训练集中的所有单词经过去停用词之后组合成一个词袋,或者叫做字典,实际上一个维度很大的 ...
随机推荐
- docker jenkins使用(二)
jenkins的安装很简单,但是jenkins的初次使用却很头疼.对于小白来说有点不太明白 背景: 开发更新app需要很多步骤,生成jar包.上传服务器.更新启动程序,如果有很多服务器,那么需要做好多 ...
- linux新增特性timerfd
https://blog.csdn.net/shreck66/article/details/49745149
- vue 2.0创建新项目
参考链接 https://segmentfault.com/a/1190000011275993 背景在安装完node的基础上,机器什么都没安装参考上述链接 一.下载vue $ cnpm insta ...
- 003-BootStrap完整模板
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- 从C语言的整数取值范围说开去
在ILP32中, char, short, int, long, long long, pointer分别占1, 2, 4, 4, 8, 4个字节,在 LP64中, char, short, int, ...
- Unity3d编辑器扩展学习笔记
编辑器扩展 1.添加菜单栏:把特性应用于静态方法 参数1:菜单名的空格后面是定义快捷键(单符号得用"_"开头,组合键%=Ctrl,#=Shift,&=Alt) 参数2:通过 ...
- Ms SQL Server 游标嵌套 初始化数据
--TRUNCATE TABLE TAB_ROLE_FUNC; --SELECT * FROM TAB_ROLE_FUNC; ), ; --外层游标 DECLARE CURSOR_ROLE CURSO ...
- 微信小程序 三元运算 checked
预期效果: 根据用户性别,显示radio group,并将相应radio checked 代码如下: <view class="form-line"> <v ...
- [转]weui-wxss WeUI for 小程序 为微信小程序量身设计
本文转自:https://github.com/weui/weui-wxss/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=tou ...
- ASP.NET MVC4 新手入门教程之五 ---5.用控制器访问模型数据
在本节中,将创建一个新的MoviesController类并编写代码来检索电影数据并将其显示在浏览器中使用一个视图模板. 才走出下一步生成应用程序. 用鼠标右键单击控制器文件夹中并创建一个新的 Mov ...