词袋模型(新闻文本分类)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了词袋模型(新闻文本分类)相关的知识,希望对你有一定的参考价值。
参考技术A 我们要用词袋模型进行文本分类,训练模型大致可以分为两步:第一步,用TF-IDF表示文本特征;第二步,把TF-IDF值和标签值送入分类模型训练。“TF-IDF值” = “TF值” ✖ “IDF值” (在实操中,我们会把TF值进行归一化,以防止它偏向长文本)
TF值:某个词(字)在文本(一段话)中出现的频率
IDF值:某个词(字)在文本(一段话)中的普遍重要性的度量。某一词(字)的IDF值,可以由总文本数目除以包含该词(字)的文本的数目,再将得到的商取 10为底的对数。
首先看一下数据,此数据集为训练数据集,分为“频道”和“文章”两列,后面将使用这样的数据集来进行模型训练。
由于在文本中有许多没有用的词(字)和标点符号,所以要去停用词
参数解释:
tokenizer = jieba.lcut 用jieba分词中的精确模式;stop_words 定义停用词词典,会在结果中删除词典中包含的词;norm 表示对TF-IDF矩阵的每一行使用l2范数归一化; use_idf 表示在TF矩阵的基础上计算IDF,并相乘得到TF-IDF;smooth_idf 表示通过加1到文档频率平滑idf权重,为防止除零,加入一个额外的文档(防止计算IDF时出现除0的尴尬情况);sublinear_tf 表示使用 1+log(tf)替换原来的tf, True值表示使用
contents参数就是我们要计算成TF-IDF值的文本数据集(即文章那一列的数据)
得到的TF-IDF值:
我们可以看看这个词袋包含多少词:
我们在得到TF-IDF模型之后,我们还需要对频道那一列进行处理。频道那列其实就是标签值,包含娱乐,体育,音乐之类的类别。
把频道那一列进行编码,得到标签值y ,再用刚刚训练好的tfidf模型计算出x值:
这里我们在分割训练集和测试集时,不再直接用x,y来分割,因为此时数据量太大,会让分割时间变长,所以通过分割index值来得到训练集和测试集:
这里使用逻辑回归模型:
训练完我们评估一下模型效果:
最后保存模型:
加载保存的模型:
和实际类别进行比对:
上面整个流程就是一个简单的通过词袋模型进行新闻文本分类,通过计算出TF-IDF值,再送入分类模型进行预测。
以上是关于词袋模型(新闻文本分类)的主要内容,如果未能解决你的问题,请参考以下文章
R语言构建文本分类模型:文本数据预处理构建词袋模型(bag of words)构建xgboost文本分类模型xgboost模型预测推理并使用混淆矩阵评估模型可视化模型预测的概率分布
R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理构建词袋模型构建xgboost文本分类模型基于文本训练数据以及模型构建LIME解释器解释一个测试语料的预测结果并可视化
R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理构建词袋模型构建xgboost文本分类模型基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化