新闻分类

本文选取的数据集是一个包含五千条新闻的数据集,该数据集一共有四个维度,主要使用朴素贝斯进行分类,仅供学习和参考

数据集:https://pan.baidu.com/s/14z–kvHYgwDAbgO0dxlHDg 提取码:9a8a

使用的工具如下:

  • numpy
  • pandas
  • jieba
  • sklearn

1.数据读取

首先读取数据,并对数据进行清洗

import numpy as np
import pandas as pd
newdata = pd.read_table("数据集路径",names=['label','theme','URL','content'],encoding='utf-8')
newdata = df_news.dropna()#删除缺失值
#查看数据维度
newdata.shape

(5000,4)

#查看数据前五行
newdata.tail()

从上面不难看出我们的数据一共有五千篇文章和四个特征,而我们主要用到的就是文章内容,我们要根据文章的内容来判断文章的类别,接下来我们提取我们要用到的数据(就是文章内容)

content = newdata['content'].values.tolist()
#content[100]

2.分词,删除停用词(删除那些没有价值的内容)

import jieba#分词
content_S = []
for text in content:cut_content = jieba.lcut(text)if len(cut_content)>1 and cut_content != '\r\n':content_S.append(cut_content)

接下来删除停用词

停用词:是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词。

这里要注意,不设置quoting,默认会去除英文双引号,只留下英文双引号内的内容,设置quoting = 3,会如实读取内容。

#删除停用词
stopwords = pd.read_csv("停用词表路径",sep='t',quoting=3,names=['stopwords'],encoding='utf-8')
def drop_stopwords(contents,stopwords):content_clearn = []for line in contents:line_clearn = []for word in line:if word in stopwords:continueline_clearn.append(word)content_clearn.append(line_clearn)return content_clearnstopwords = stopwords.stopwords.values.tolist()
content_clearn = drop_stopwords(content_S,stopwords)df_content = pd.DataFrame({'content_clearn':content_clearn})
#查看前五行
df_content.head()

3.划分训练集和测试集

我们已经把用于训练模型的数据提取出来了,接下来对数据做最后一部整理,找到数据对应的标签,划分训练集和测试集

new_train = pd.DataFrame({'content_clearn':content_clearn,'label':df_news['label']})
#查看后五行
new_train.tail()

先看看我们的数据集一共有几个标签,然后给每个标签构建对应的映射,毕竟计算机只看得懂数字嘛

new_train.label.unique()

用数字构建对应的标签,比如 1 代表 汽车

label_mapping = {'汽车':1, '财经':2, '科技':3, '健康':4, '体育':5, '教育':6, '文化':7, '军事':8, '娱乐':9, '时尚':0}
new_train['label'] = new_train['label'].map(label_mapping)#构建一个映射方法
#new_train.head()
#划分训练集和测试集
from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test = train_test_split(new_train['content_clearn'].values,new_train['label'].values,random_state=1)
#x_train.shape

4.模型训练

4.1利用词袋模型进行训练

#首先将训练集中的所有词都存在一起
words = []
for line_index in range(len(x_train)):try:words.append(" ".join(x_train[line_index]))except:print(line_index)
#查看有多少个词print(len(words))  一共有3750个词

制作词袋特征模型

from sklearn.feature_extraction.text import CountVectorizervec = CountVectorizer(analyzer='word', max_features=4000 ,lowercase=False)
feature = vec.fit_transform(words)
feature.shape  #(3750,4000)

导入贝叶斯模型进行训练

from sklearn.naive_bayes import MultinomialNBclassifier = MultinomialNB()
classifier.fit(feature, y_train)
#查看在训练集上的测试结果
classifier.score(feature,y_train)

查看在测试集上的结果

test_words = []
#提取测试集中的所有词
for line_index in range(len(x_test)):try:test_words.append(" ".join(x_test[line_index]))except:print(line_index)
#len(test_words)classifier.score(vec.transform(test_words),y_test)

2利用TF-IDF进行训练

TF-IDF是一种统计方法,用以评估一个字或一个词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数正比增加,但同时会随着它在语料库中出现的频率成反比下降.

该方法常用与NLP分类任务中的特征提取环节,且往往有很好的效果

TF:词频 IDF:逆文本频率指数

主要思想:如果某个词或者某个短语在一篇文章中出现的频率TF高,并且在其它文章中很少出现,则认为此词或短语具有很好的类别区分能力,适合用来分类。

from sklearn.feature_extraction.text import TfidfVectorizervectotizer = TfidfVectorizer(analyzer='word', max_features=4000,lowercase=False )
vectotizer.fit(words)

模型训练

classifier.fit(vectotizer.transform(words),y_train)

训练集测试

classifier.score(vectotizer.transform(words),y_train)

测试集测试

classifier.score(vectotizer.transform(test_words),y_test)

新闻分类(文本分类)相关推荐

  1. 基于pandas python sklearn 的美团某商家的评论分类(文本分类)

    基于pandas python sklearn 的美团某商家的评论分类(文本分类) 美团店铺评价语言处理以及分类(NLP) 第一篇 数据分析部分 第二篇 可视化部分, 本文是该系列第三篇,文本分类 主 ...

  2. 从0到1构建新闻长文本分类系统

    新闻分类系统概述 新闻分类系统,顾名思义,就是对于一片新闻或者是一片文章,进行自动的分类,例如政治,财经,娱乐等等 从技术角度讲,其实属于自然语言处理中比较经典的文本分类问题.当然在一个工业级别的分类 ...

  3. 句子分类_Bert做新闻标题文本分类

    本文介绍一下如何使用bert_seq2seq框架很轻松的做文本分类任务-框架地址在: https://github.com/920232796/bert_seq2seq​github.com 上面还有 ...

  4. 文本分类:4、工程经验

    数据决定上限,模型逼近上限.工程不是刷论文,看到效果先分析数据. 写在前面: 夕小瑶:文本分类中的重要tricks 娄杰(2020.01):NLP分类任务中的11个关键问题 娄杰(2020.06):文 ...

  5. 贝叶斯分类器做文本分类案例

    贝叶斯分类器做文本分类 文本分类是现代机器学习应用中的一大模块,更是自然语言处理的基础之一.我们可以通过将文字数据处理成数字数据,然后使用贝叶斯来帮助我们判断一段话,或者一篇文章中的主题分类,感情倾向 ...

  6. textcnn文本词向量_基于Text-CNN模型的中文文本分类实战

    1 文本分类 文本分类是自然语言处理领域最活跃的研究方向之一,目前文本分类在工业界的应用场景非常普遍,从新闻的分类.商品评论信息的情感分类到微博信息打标签辅助推荐系统,了解文本分类技术是NLP初学者比 ...

  7. 文本分类(朴素贝叶斯分类)介绍

    文章目录 1 文本分类 2 文本数据处理 3 文本数据准备 4 朴素贝叶斯分类建模 1 文本分类 文本分类是现代机器学习应用中的一大模块,更是自然语言处理的基础之一. 文本分类现广泛应用于各个行业领域 ...

  8. 文本分类:Keras+RNN vs传统机器学习

    摘要:本文通过Keras实现了一个RNN文本分类学习的案例,并详细介绍了循环神经网络原理知识及与机器学习对比. 本文分享自华为云社区<基于Keras+RNN的文本分类vs基于传统机器学习的文本分 ...

  9. FastText 总结:文本分类、词向量训练、参数详解

    FastText:文本分类.词向量训练.参数详解 前言 - FastText 简介 一.FastText - 安装 1.1 - Github下载安装 1.2 - 编译器安装 二.FastText - ...

  10. 文本分类与聚类(text categorization and clustering)

    1. 概述 广义的分类(classification或者categorization)有两种含义:一种含义是有指导的学习(supervised learning)过程,另一种是无指导的学习(unsup ...

最新文章

  1. 4月第4周全球域名商TOP15:万网第四 增势减弱
  2. 【AutoML】激活函数如何进行自动学习和配置
  3. boost::base_from_member相关的测试程序
  4. jQuery插件素材网站
  5. 提升逻辑!APP数据可视化界面设计灵感
  6. oracle创建参数文件,Oracle的参数文件
  7. jQuery具体实例介绍什么时候用ajax,ajax应该在什么地方使用
  8. javascript 常用方法 解析URL,补充前导字符, 省市联动, 循环替换模板
  9. HTML期末网页设计——设计报告
  10. Google翻译api接入及Java、Python实现
  11. 01-【分析】神策系统的拆解与分析
  12. 数值分析与算法——读书笔记(一)
  13. 计算机视觉:基本的图像操作和处理
  14. Convex Optimization: 3 Convex functions
  15. 携程日处理20亿数据,实时用户行为服务系统架构实践
  16. 林轩田之机器学习课程笔记( embedding numerous feature之support vector regression)(32之22)
  17. 我心中的linux,和我如何用GNU linux工作!【强帖,精彩,真精彩】
  18. 谈谈8583报文的使用及测试
  19. 关于前端接口报错500原因
  20. 数据分析——算法——K-means聚类(天池:汽车产品聚类分析)

热门文章

  1. 本科生计算机论文中文核心,本科计算机想投中文核心,求推荐刊物!
  2. 线性代数学习笔记——第三十三讲——向量混合积的几何意义
  3. 2021腾讯算法大赛
  4. 英文pdf翻译为中文(word+google浏览器即可)
  5. php源雄武,8个新鲜的PHP常用代码
  6. 王献之碧玉小楷《洛神赋十三行》王献之小楷高清原石拓本对比图
  7. NLP(自然语言处理)基本入门之分词操作
  8. 什么是增量绩效管理?华为是如何做
  9. 导数定义考法一网打尽
  10. 基于R语言绘制标准化平均差(Standardized mean difference SMD)可视化图(1)