热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

舆情监控系统——step2.利用SVM实现中文文本分类

先放GitHub代码,如果觉得写得不错,记得加个star哦,嘻嘻~基本流程1、准备好数据食材、去停用词并利用结巴(jieba)进行分词处理数据食材选用参考:NLP中必不可少的语料资

先放GitHub代码,如果觉得写得不错,记得加个star哦,嘻嘻~

基本流程

1、准备好数据食材、去停用词并利用结巴(jieba)进行分词处理

数据食材选用参考:NLP中必不可少的语料资源

jieba分词模块参考官方文档啦~

# 参照代码中的cutWords.py文件

2、利用卡方检验特征选择

卡方检验:在构建每个类别的词向量后,对每一类的每一个单词进行其卡方统计值的计算。
1. 首先对卡方 检验所需的 a、b、c、d 进行计算。
a 为在这个分类下包含这个词的文档数量;
b 为不在该分类下包含这个词的文档数量;
c 为在这个分类下不包含这个词的文档数量;
d 为不在该分类下,且不包含这个词的文档数量。
2. 然后得到该类中该词的卡方统计值
公式为 float(pow((a*d – b*c), 2)) /float((a+c) * (a+b) * (b+d) * (c+d))。
3. 对每一类别的所有词按卡方值进行排序,取前 k 个作为该类的特征值,这里我们取 k 为 1000

# featureSelection.py

3、利用TF*IDF算法进行特征权重计算

TF-IDF算法

  • 全称叫 Term Frequency-Inverse Document Frequency 词频-逆文档频率算法
  • 主要用于关键词抽取
  • 优点:每个词的权重与特征项在文档中出现的频率成正比,与在整个语料中出现该特征项的文档数成反比。
  • 原理解说:
    《舆情监控系统——step2.利用SVM实现中文文本分类》
    训练文本的特征向量表示数据在 train.svm文件中,测试文本的特征向量表示数据在test.svm 中。

# featureWeight.py

3、基于训练文本的特征向量数据,使用LIBSVM库训练SVM 模型

使用libsvm对train.svm进行模型训练,和对test.svm模型进行预测

测试命令:

对train.svm文件数据进行缩放到[0,1]区间
./svm-scale -l 0 -u 1 train.svm > trainscale.svm
对test.svm文件数据进行缩放到[0,1]区间
./svm-scale -l 0 -u 1 test.svm > testscale.svm
对trainscale.svm 文件进行模型训练
./svm-train -s 1 trainscale.svm trainscale.model
对testscale.svm 文件进行模型预测,得到预测结果,控制台会输出正确率
./svm-predict testscale.svm trainscale.model testscale.result

4、对于测试集进行特征向量表示,代入训练得到的 SVM 模型中进行预测分类
预测结果:92%
《舆情监控系统——step2.利用SVM实现中文文本分类》

目前这个阶段,能够讲到这个程度,以后在补充吧,小明酱撤退了~


推荐阅读
author-avatar
一切随缘2502885767
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有