最近在看机器学习的书籍和视频,主要有:
统计学习方法 李航
西瓜书 周志华
python机器学习实战
机器学习算法原理与编程实战 郑捷(本文主要参看这本书,有代码,不过做本文做了稍微修改,环境为Python3+Scikit-learn)
文本分类步骤
文本分类顾名思义就是将文本分为几个类别,主要步骤有以下几个:
- 语料选择,得有已经标记好的语料
- 预处理,除去噪声,如:HTML标签,格式转换,句子边界
- 中文分词,将文章分割成一个个词语,并去掉(的,是,在...)停用词
- 构建词向量空间,统计词频(TF),生成每个文本的词向量空间
- 分类器,使用算法训练分类器
- 结果评价
语料选择
选择是郑捷书上的那个,就是小语料,下载地址 ,不过需要注册。下载完毕可以看到如下的格式:
可以看到有10类文本,计算机200指的是计算机类别的200篇文本。
预处理
这一步主要是针对测试数据,测试数据格式和来源不明确,有可能乱码,或者有HTML标签等,用python去除HTML标签,后面具体用代码表明。
中文分词
中文分词就是将一句话拆分为各个词语,中文分词在不同语境中歧义比较大,不像英文分词那么简单,所以分词在NLP中是很重要的。
- 原型:今天天气很好!
- 分词:今天、天气、很、好、!
分词方法一般很多,都是基于概率模型,方法有CRF(条件随机场),HMM(隐马尔可夫模型)等。本人只是用C++写过HMM分词,是基于字标注的,准确率还可以吧。
当然现在都有分词工具了,如中科院分词,哈工大分词,python jieba分词等,可以直接调用,此处就直接用别人的了---jieba分词