Datawhale 之NLP学习-打卡(三)
Task3 基于机器学习的文本分类
1.学习目标
- 学会TF-IDF的原理和使用
- 使用sklearn的机器学习模型完成文本分类
2.机器学习模型
- 概念
- 机器学习是对能通过经验自动改进的计算机算法的研究
- 机器学习通过历史数据训练出模型对应于人类对经验进行归纳的过程,机器学习利用模型对新数据进行预测对应于人类利用总结的规律对新问题进行预测的过程
- 机器学习初学者注意点
- 机器学习能解决一定的问题,但不能奢求机器学习是万能的
- 机器学习算法有很多种,看具体问题需要什么,再来进行选择
- 每种机器学习算法有一定的偏好,需要具体问题具体分析
3.文本表示方法Part1
文本表示成计算机能够运算的数字或向量的方法一般称为词嵌入(Word Embedding)方法。词嵌入将不定长的文本转换到定长的空间内,是文本分类的第一步。
-
One-hot
- 概念:
将每一个单词使用一个离散的向量表示。具体将每个字/词编码一个索引,然后根据索引进行复制。 - 实例:
{'我':1,'爱':2,'北':3,'京':4,'天':5,'安':6,'门':7 ,'喜':8,'欢':9,'上':10,'海':11} 我: [1,0,0,0,0,0,0,0,0,0,0] ... 海: [0,0,0,0,0,0,0,0,0,0,1]
- 概念:
-
Bag of Words
- 词袋表示,也称为Count Vectors,每个文档的字/词可以使用其出现次数来进行表示
- 实例:
sklearn中实现我 爱 北 京 天 安 门 [1,1,1,1,1,1,1,0,0,0,0]
from sklearn.feature_extraction.text import CountVectorizer corpus= ['This is the first document.' ,'This document is the second document.' ,'And this is the third one.' ,'Is this the first document?'] vectorizer = CountVectorizer() vectorizer.fit_transform(corpus).toarray()
-
N-gram
- 与Count Vectors类似,不过加入了相邻单词组合成为新的单词,并进行计数
- 实例:
我爱 爱北 北京 京天 天安 安门
-
TF-IDF
- 概念:
由两部分组成:词语频率和逆文档频率。其中计算语料库中文档总数除以含有该词语的文档数量,然后再取对数就是逆文档频率 - 实例:
TF(t)=该词语在当前文档出现的次数 / 当前文档中词语的总数 IDF(t)=loge(文档总数 / 出现该词语的文档总数)
- 概念:
4.基于机器学习的文本分类
- Count Vectors + RidgeClassifier
- TF-IDF + RidgeClassifier