文本分类

与聚类的区别

聚类是无监督学习而分类是监督学习
聚类是根据密度,距离等将数据集分成若干个簇,而分类是根据训练集提供的标签,训练模型,达到将文本归到某个固定的类中.

卡方特征

在构建词袋模型的过程中,有些对特征影响很小的词语(如助词,标点符号等).可以使用停用词,但不一定准确。这个时候,可以使用卡方特征
卡方特征通过统计某词语在某种特定类型的文档中出现的次数,计算该词语出现在某类型文档上的数学期望,再通过查表的方式计算两者独立的置信度.这个置信度越低,说明该词语和该类文档关联的可能性越高.
利用卡方特征提取后,可以减少词袋向量的长度,降低运算的复杂度

朴素贝叶斯分类器

基本原理

典型的生成模型.
通过贝叶斯定理将联合概率转换为先验分布和条件概率
p(x = x, y = y1) = p(y = y1)* p(x = x|y=y1)
p(y = y1) 通过统计的方法,利用极大似然估计很好估计
而p(x = x|y=y1)就不是很好估计
这时朴素贝叶斯假设X之间完全独立,也就是p = (x = x|y=y1) = p(x = x1|y = y1)*p(x = x2|y = y1)…
这也就是朴素二字的由来
在预测种类时,取能使p(x = x, y = y1) 最大的y为预测种类

优点

贝叶斯分类器适合多分类任务,适合增量式训练,对于大规模数据,计算复杂度较低,同时算法原理比较简单易懂。

缺点

特征独立的假设显然不成立,会影响准确性;并且对输入的数据比较敏感

支持向量机(svm)

前面我们学习了感知机,通过使用超平面划分数据集来达到序列标注的目的
感知机追求最大正确划分,非常容易导致过拟合;而支持向量机追求大致正确划分,且能一定程度避免过拟合(因为它追求的是最大化所有样本点的集合间隔的最小值,所以当出现噪声的时候,不会产生太大的影响;而感知机追求的是通过超平面尽可能多的将样本点划分,噪声容易产生影响)

SVM存在的不足之处

不适合样本过大的情况,因为其时间复杂度较高

hanlp实现

hanlp中封装了支持向量机分类器, 下面是实现代码

训练模型:
def train_or_load_classifier():
    model_path = sogou_corpus_path + '.svm.ser'
    if os.path.isfile(model_path):
        return LinearSVMClassifier(IOUtil.readObjectFrom(model_path))
    classifier = LinearSVMClassifier()
    classifier.train(sogou_corpus_path)
    model = classifier.getModel()
    IOUtil.saveObjectTo(model, model_path)
    return LinearSVMClassifier(model)
预测:
predict(classifier, "text")

另外,只要把文本种类改成“正面”与“负面”,修改训练集,不需要改变代码,就可以实现情感分析

文本分类的步骤

根据本书提供的步骤,大概可分为
构建模型(朴素贝叶斯,svm等)
投入大量带标签的数据集进行训练
训练时通过卡方特征去除一些与本次分类关联较小的词语,减少运算量
预测

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值