爬虫实战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. 多数情况下,两者的总体开销差不多。

 


阅读全文
0 0
原创粉丝点击