爬虫实战13—网页分类与针对文本的机器学习应用
来源:互联网 发布:交通大数据 编辑:程序博客网 时间:2024/05/21 06:41
文章说明:本文是在学习一个网络爬虫课程时所做笔记,文章如有不对的地方,欢迎指出,积极讨论。
一、分词
计算机是无法直接处理、读懂文本的语义的,因此要对文本进行处理,必须把一篇非结构化的连续的文本,转换为一个数学问题。目前最常用的转换,就是找出文本的关键词,把关键词用一个数学特征来代替,进而利用Logistci Regression、SVM(Support Vector Machine)、Naive Bayes等办法来处理。
(一)中文分词
分词最主要是针对中文的,因为以英文为代表的拉丁语系,文本的单词之间是有天然分割的,而中文则没有。
中文分词的手段主要是依靠字典和统计学结合。分词是基于文本的应用的基础。
得有一个词库。高质量的数据远远超过算法。
(二)分词首先是基于词典的,也就是对于一句话,依次对字的组合与词典做比较,来发现一个词。
(三)分词的歧义
交集型歧义;组合型歧义;混合型歧义。
对于歧义,需要依赖上下文来处理,有时候可以用正向最大匹配与逆向最大匹配来同时提取。
(四)结巴分词
结巴分词是一个python的中文分词库。
安装:pip install jieba
代码:
二、TF-IDF
机器学习与分类算法
(一)寻找特征词
1.在英文中,把没有任何特征含义的词汇,比如介词、副词等统称为stopwords,也就是成为停止词。需要把这些停止词去除掉。
2.统计每一篇文章里,各个词的词频,称为Term-Frequency
3.对每一个词汇,统计它在各个文档里出现的频次,用总文件数/包含该词汇的文件的数量,再取对数,称为Inverse Document Frequency
(二)TF-IDF
1.一个词在一篇特定文章里,出现的次数多,所得到的全中会增大;
2.一个词在所有的文档里,出现的次数少,权重会增大;
3.分类处理的时候,如果一个词在训练集里,类别的IDF值很高,而在别的类别的IDF很低,那么这个词可以是这个类别的特征词,因此可以额外提高它的权重。
(三)Python TF-IDF
1.安装:pipinstall sklearn scipy numpy
2.构造Tfidf对象,指定分词器为jieba,停止词是一个数组,用户自定义的
3.获取特征词及权重
三、线性回归
(一)线性回归
线性回归解决连续性问题。
(二)Sigmoid函数
四、Logistic回归
(一)Logistic回归
(二)python的Logistic回归
输出结果:[1,0,1,1,0,1]
五、SVM
SVM(SupportVector Machine):支持向量机
(一)线性分割
(二)核函数
Python SVM文本分类:
六、分类器
SVM、Logistic回归都是二分类的分类器,也就是0、1分类。
对于多个类别的处理有两种思路:
One v.s One : 对所有类别,两两训练分类器,n个类别的情况下,会需要n(n-1)/2个分类器,最后对多余预测结果排序,得分最高的类别胜出;
One v.s Others :每个类别训练一个分类器,也就是属于类别或者其它。
OvO v.s OvR :
1. OvO训练集需要n(n-1)/2个分类器,而OvR只需要N个分类器,因此OvO的存储和测试的开销比较大;
2. OvR每个训练集都包含了全部训练数据,因此训练的开销比较大;
3. 多数情况下,两者的总体开销差不多。
- 爬虫实战13—网页分类与针对文本的机器学习应用
- 《机器学习实战》基于朴素贝叶斯分类算法构建文本分类器的Python实现
- Python的网页爬虫&文本处理&科学计&机器学习&数据挖掘工具集
- Python的网页爬虫&文本处理&科学计&机器学习&数据挖掘工具集
- Python的网页爬虫&文本处理&科学计&机器学习&数据挖掘工具集
- Python的网页爬虫&文本处理&科学计&机器学习&数据挖掘工具集
- Python的网页爬虫&文本处理&科学计&机器学习&数据挖掘工具集
- 【机器学习实战】网格搜索--贝叶斯新闻文本分类器调优
- 非常全面到位的介绍与源代码地址 :Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
- 机器学习实战1:朴素贝叶斯模型+文本分类+垃圾邮件分类
- 机器学习实战1:朴素贝叶斯模型:文本分类+垃圾邮件分类
- 机器学习实战1:朴素贝叶斯模型:文本分类+垃圾邮件分类
- 机器学习-实战-入门-linearSVC和SVC,身高体重与胖瘦关系的分类与预测
- 机器学习实战--决策树分类
- 读书笔记:机器学习实战(3)——章4的朴素贝叶斯分类代码和个人理解与注释
- python-框架-网页爬虫-文本处理-科学计算-可视化-机器学习-数据挖掘-深度学习
- Python机器学习与实战笔记之朴素贝叶斯分类
- 针对python机器学习与实战代码在python3上运行出现的错误分析和warning的修改代码34—38
- 详解C++程序中定义struct结构体的方法
- 懒人法宝:定时订票详解
- bzoj3685普通VEB树
- shell中提取时间
- Android四大组件之Service
- 爬虫实战13—网页分类与针对文本的机器学习应用
- NYOJ 12 喷水装置(二)
- Android之广播接受者(无序广播)
- AtCoder Regular Contest 082-E-ConvexScore
- BP神经网络预测(人口)程序(matlab)
- Android--Xutils3源码案例调试
- Python入门01
- js 数据结构中邻接矩阵的图的直观表示
- 网络爬虫的规则