中文文本分类-新闻分类[数据挖掘]

自然语言处理实战:新闻文本分类(附代码) 自然语言处理实战:新闻文本分类 ——本文比赛来源于天池零基础入门NLP - 新闻文本分类。 目录自然语言处理实战:新闻文本分类一、赛题理解1、学习目标2、赛题数据3、数据标签4、评测指标5、数据读取6、解题思路二、数据读取与数据分析1、学习目标2、数据读取3、数据分析3.1句子长度分析3.2新闻类别分布3.3字符分布统计4、数据分析的结论5、本章小结三、基于机器学习的文本分类1、学习目标2、机器学习模型3、文本表示方法 Part13.1One-hot3.2Bag of Words3.3N-gram3.4 阅读详情

对新闻文本(10类)进行文本分类,通过准确率、召回率、 f1-score 等指标对分类结果进行分析。

python版本:python 3.6
分类方法:朴素贝叶斯

需导入的相关库

import os
import time
import numpy as np
import pandas as pd
import jieba
from jieba import analyse
from sklearn.utils import shuffle
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer #词集转换成向量
from sklearn.naive_bayes import MultinomialNB #朴素贝叶斯多分类
from sklearn.metrics import classification_report
import gensim #自然语言处理库
from gensim import corpora,models,similarities

上述有些库源 在windows下好像与python3.7版本会出现版本不兼容的问题,我在linux下使用3.7正常,windows下出现“DLL load failed”,所以换用3.6

对数据源选取数据规模

大家可以选择网上现有的数据源,然后选出自己需要数量的数据。我的数据是我自行爬取的,所以在爬取的时候就做了相应的数据预处理。所以我选取的数据是已经去空行、去重去掉一些乱七八糟的信息之后的数据。
1、读取数据源

#读取数据源,注释掉的是拼接数据的部分,有需要的可以参考
def con_data():
    # df1 = pd.read_csv('chinanews00.csv',names=['category','theme','URL','content'])
    # df2 = pd.read_csv('chinanews11.csv',names=['category','theme','URL','content'])
    # data = pd.concat([df1,df2],axis=0,ignore_index=True) #拼接表格
    data = pd.read_csv('chinanews.csv',names=['category','theme','URL','content'])
    df = data.groupby('category').count()#展示数据规模
    print(df)
    # print(data.shape)
    return data

2、按类别,分别选出前n条
实验之前做的是100w条数据,但是在这里为了重复方便,我将每类数据缩减为1000条,这样比较快~

#分组选行
def group(data,amount,file_path):
    df = data.groupby('category').head(amount)
    df.to_csv(file_path,mode='a',header=None, index=False, encoding="utf-8-sig")

于是就有了目标数据 eg: test.csv

文本分类

1、读入待分类数据

def read_file():
    data = pd.read_csv('test.csv',names=['category','theme','URL','content'])
    df = data.groupby('category').count()#展示数据规模
    print(df)
    return data

数据规模:
在这里插入图片描述
样本长这样:
在这里插入图片描述
2、对数据进行切割
这一步可有可无,主要是因为有的新闻文本篇幅很长很长,有的又很短,后面会造成词向量的长短不一。所以理论上来讲,是需要去掉过长或过短的文本内容,使得新闻文本的字数大致保持在一个范围内。不剔除的话,会降低分类的准确率。

3、jieba分词并去停用词

def separate_words(data):
    content = data.content.values.tolist() #将文本内容转换为list格式
	#读入停用词表
    stopwords = pd.read_csv("stopwords.txt",index_col=False,sep="\t",quoting=3,names=['stopword'], encoding='utf-8') #list
    stopwords = stopwords.stopword.values.tolist()
    print("正在分词,请耐心等候......")
    contents_clean = []
    all_words = []
 
    for line in content:
        current_segment = jieba.lcut(line) #jieba分词
        current_segment = [x.strip() for x in current_segment if x.strip()!=''] #去掉分词后出现的大量空字符串
        if len(current_segment) > 1 and current_segment != "\r\n":
            line_clean = []
            for word in current_segment:
                if word in stopwords:
                    continue
                line_clean.append(word)
                all_words.append(str(word))
            contents_clean.append(line_clean)        
    print('------------分词完成-----------')
    return contents_clean, all_words

结果是这样的:
在这里插入图片描述
其中,all_words可以用来统计某些词出现的频率,依据这个来修改停用词表stopwords。下图是我按照自己的词频统计,去掉了一些不合理的高频词后出现的结果。
在这里插入图片描述
4、标签转换
中文标签改为数字标签,便于分类

转换之前的标签:
在这里插入图片描述

    #标签转换
    label_mappping = {'汽车':1,'财经':2, '法治':3, '社会':4, '体育':5, '国际':6, '文化':7, '军事':8, '娱乐':9, '台湾':0}
    df_train["label"] = df_train["label"].map(label_mappping)
    print(df_train.head())
    print("--------------------------------------3------------------------------------------")

转换之后的结果:
在这里插入图片描述
5、切分数据集
按1:1切分

    #切分数据集
    x_train,x_test,y_train,y_test = train_test_split(df_train["contents_clean"].values,df_train["label"].values,test_size=0.5)

6、开始训练
因为现在的数据内容是以‘,’分隔开的,所以需要去掉将词与词之间用‘ ’连接起来。

def format_transform(x): #x是数据集(训练集或者测试集)
    words =[]
    for line_index in range(len(x)):
        try:
            words.append(" ".join(x[line_index]))
        except:
            print("数据格式有问题")
    return words

    #训练
    words_train = format_transform(x_train) 
    vectorizer = TfidfVectorizer(analyzer='word', max_features=4000,ngram_range=(1, 3),lowercase = False)
    vectorizer.fit(words_train)#转为向量格式
    classifier = MultinomialNB()
    classifier.fit(vectorizer.transform(words_train), y_train)

7、测试,并查看相关结果

    words_test = format_transform(x_test)
    score = classifier.score(vectorizer.transform(words_test), y_test)
    print("----------------------------------分类结果报告-----------------------------------------")
    print("分类准确率:" + str(score))
    print("训练时间:" + str(round((end_1-start_1), 2)) + '秒')
    print("测试时间:" + str(round((end_2-start_2), 2)) + '秒')
    y_predict=classifier.predict(vectorizer.transform(words_test))
    print(classification_report(y_test,y_predict))

出来的结果是这样的:
在这里插入图片描述
emmmm,这个分类结果不是很理想。。。可以通过调参提高分类结果准确率。

中文新闻文本标题分类(基于飞桨、Text CNN) 中文标题分类 基于飞桨 TextCNN 阅读详情

相关推荐

合肥工业大学数据挖掘实验 分类任务

大学实验

AWP2020的博客 718

深度学习实战案例:新闻文本分类

深度学习多分类案例:新闻文本分类 公众号:机器学习杂货店作者:Peter编辑:Peter 大家好,我是Peter~ 这里是机器学习杂货店 Machine Learning Grocery~ 之前介绍过一个单分类的问题。当每个数据点可以划分到多个类别、多个标签下,这就是属于多分类问题了。 本文介绍一个基于深度学习的多分类实战案例:新闻文本分类,最终是有46个不同的类别 数据集 路透社数据集 广泛使用的文本分类数据集:46个不同的主题,即输出有46个类别。某些样本的主题更多,但是训练集中的每个主题至少有

尤尔小屋 7185

新闻文本主题分类实战:从TF-IDF到SVM的完整机器学习流程解析

文本分类是自然语言处理(NLP)的基础任务,其核心原理是将非结构化文本转换为计算机可处理的数值特征,再通过分类模型学习特征与标签的映射关系。这一技术具有重要价值,是实现信息自动化处理的关键,广泛应用于新闻推荐、舆情监控和内容归档等场景。在工程实践中,特征工程和模型选型是两大核心环节。以新闻文本主题分类为例,常采用TF-IDF进行文本向量化,它能有效衡量词语在文档中的重要性;随后可选用支持向量机(SVM)等分类器进行模型训练。SVM因其在处理高维稀疏特征上的优异性能,常作为该任务的强基线模型。本文将以一个完整

weixin_30667831的博客 350

【新手入门】课程5-深度学习入门NLP-文本分类

In[3] # 创建数据集和数据字典 data_root_path='/home/aistudio/data/' def create_data_list(data_root_path): with open(data_root_path + 'test_list.txt', 'w') as f: pass with open(data_root_pat...

PaddlePaddle 748

机器学习之自然语言处理——中文分词jieba库详解(代码+原理)

目录文本分类概述文本分类的应用文本分类的挑战文本分类的算法应用文本分类所需知识中文分词神器-jiebajieba分词的三种模式词性标注载入词典(不分词)词典中删除词语(不显示)停用词过滤调整词语的词频关键词提取基于TF-IDF算法的关键词提取基于 TextRank 算法的关键词抽取返回词语在原文的起止位置(论文常用算法)词频统计(附智能程序)每文一语 文本分类概述 文本分类的应用 在大数据时代,网络上的文本数据日益增长。采用文本分类技术对海量数据进行科学地组织和管理显得尤为重要。 文本作为分布最广、数据量最

迷茫与徘徊只会让你陷入绝境,欢迎私信博主,带你开始提升变现价值! 5301

中文文本分类中的深度学习

中文文本分类在自然语言处理中具有广泛的应用。深度学习模型,特别是像BERT这样的预训练Transformer模型,在这一领域表现出色,能够捕获复杂的语义信息。结合合适的数据集和有效的训练策略,可以达到高水平的准确率。

走向CTO的路上... 479

献给热衷于自然语言处理的业余爱好者的中文新闻分类语料库之一(转载)

原文地址:http://www.cnblogs.com/finallyliuyu/archive/2010/09/10/1823676.html     题记:     做研究,尤其是基于统计学方法的研究,常常需要大量的训练数据。详细这些东西在读研究生不难得到。在自然语言处理公司工作的工作人员也不难得到。但是这些东西属于机密,实验室和公司是不会轻易外传的。所以对于业余的爱好者来说,比如园子...

不会飞的鸟,不会游泳的鱼 409

NLP文本10分类EXCEL

用于自然语言处理的文本10分类语料,xlsx格式,数据量19467,分别为: [('science', 2093), ('car', 2066), ('finance', 2052), ('sports', 2017), ('military', 2007), ('medicine', 2000), ('entertainment', 1906), ('politics', 1865), ('education', 1749), ('fashion', 1712)]

文本分类数据集

文本分类数据集 https://hyper.ai/datasets 搜狐新闻文本分类数据集 官网https://www.sogou.com/labs/resource/list_news.php 数据集:https://pan.baidu.com/s/1V6o20temK2v3j-bo16x94g提取码:fech 今日头条中文新闻(文本)分类数据集 https://github.c...

Just for fun的专栏 3315

国内优秀MES开源框架

一套springboot 开源框架 代码标准规范化。 界面展示 演示地址 http://wangziyangmes.pzzd.xyz 用户名admin 密码123 系统管理 工艺管理 计划管理 物料管理 *用户管理* *工艺路线管理* 工单下达...

q707231019的博客 2万+

uniapp 使用摄像头 live-pusher (APP)

uniapp 中开发 app 时使用live-pusher踩过的坑

随身笔记 1万+

数据挖掘+python 中文文本分类

源码 github 点击打开链接 报告点击打开链接 修改自 :http://blog.youkuaiyun.com/github_36326955/article/details/54891204 文本分类 摘要 文本分类指按照预先定义的主题类别,为文档集合中的每个文档确定一个类别。这样用户不但能够方便地浏览文档,而且可以通过限制搜索范围来使文档的查找更容易、快捷。目前,主要方法有朴素贝叶斯分类

u010669349的博客 1万+

centos+apache+subversion+LDAP

yum install subversion 报错:[Errno 14] HTTP Error 416 - Requested Range Not Satisfiable 正在尝试其它镜像。 zaici

qq_41566366的博客 1544

中文文本分类

文本挖掘与文本分类的概念 文本挖掘(Text Mining)是从一个非机构化文本信息中获取用户感兴趣或者有用的模式过程。文本挖掘的 7 个主要领域如下: 搜索和信息检索:存储和文本文档的检索,包括搜索引擎和文档的检索。 文本聚类:使用聚类方法,对词汇、片段、段落或文件进行分组或分类。 文本分类:对片段、段落或文件进行分组和归类,在使用数据挖掘分类的方法基础上,经过训练地标记示例模型。 Web 挖...

sinat_38832964的博客 4127

保姆级教程:用Protege 5.5.0从零构建你的第一个知识图谱(附实战案例文件)

本文提供了一份详细的Protege 5.5.0使用指南,从零开始构建知识图谱。通过'中国古代文人关系网'实战案例,涵盖软件安装、本体创建、属性定义、实例填充到高级功能应用的全流程,帮助初学者快速掌握知识建模的核心技能。

weixin_26808205的博客 234

分布式训练中All-Reduce、All-Gather、Reduce-Scatter原理

Reduce-Scatter = 先对所有进程的数据做 Reduce(如 sum / mean),再把结果“切分”分发给各进程。(是 Reduce + Scatter 的融合操作。

comli_cn的博客 341

2.中文文本分类实战

  这这一篇博客中,将系统介绍中文文本分类的流程和相关算法。先从文本挖掘的大背景开始,以文本分类算法为中心,介绍中文文本分类项目的流程以及相关知识,知识点涉及中文分词,向量空间模型,TF-IDF方法,几个典型的文本分类算法和评价指标等。   本篇主要有:   朴素的贝叶斯算法   KNN最近邻算法。 2.1 文本挖掘与文本分类的概念   简单来说,文本挖掘就是从已知的大量文...

weixin_30653097的博客 1413

【C2000系列DSP的双向DC-DC电源】基于TMS320F28034的DC-DC项目开发流程

理解DC-DC 双向电源(基于 TMS320F28034)的开发流程,需要从功能拆解、开发步骤、验证 / 测试项

昔时扬尘处 323

AI day09(2020 8/8)

朴素贝叶斯 每个训练集中的输入值,在每个类别中默认至少出现一次。 新闻分类 贝叶斯拼写检查器 import re, collections def words(text): return re.findall('[a-z]+', text.lower()) def train(features): model = collections.defaultdict(lambda: 1) for f in features: model[f] += 1

weixin_44679856的博客 2869

SAP_MM模块非限制库存转冻结库存

项目非限制 → 冻结事务码移动类型343影响库存不可用,不参与MRP常见用途质量问题封存、盘点冻结、待退货品通过本文,我们了解了 SAP 的[SAP_MM模块非限制库存转冻结库存]的基本概念和应用方法。希望这些信息能帮助您在实际工作中更好地使用 SAP 系统,提高工作效率和管理水平。更多SAP文章请点击更多SAP文章更新,大家一起学习进步!!!文章中如有错误。敬请指正!搜索公众号:SAP资料文库微信号:SPRO_PP时间:2025-10-14。

我小时候很黑的博客 586

基于DRU-HVDC的构网型海上风电场环流机理仿真复现

本文介绍了基于DRU-HVDC的构网型海上风电场环流机理仿真模型的构建方法。主要内容包括: 完整的Simulink模型结构,包含主模型文件GFM_DRU_Main.slx和配置脚本GFM_DRU_Setup.m 系统参数设置,包括基础频率(20Hz)、电压基准值(690V)、功率基准值(2MVA)等 四种仿真场景配置:电压不平衡、相位不平衡、阻抗不平衡和频率不平衡 风力发电机(WT)子系统的详细构建步骤,包含电压源、输出阻抗和测量模块 变压器和DRU整流器的参数设置 该模型可用于研究构网型风电场的环流机理。

huanghm88的专栏 262

Python使用神经网络进行简单文本分类

原文链接:http://tecdat.cn/?p=8613 深度学习无处不在。在本文中,我们将使用Keras进行文本分类。 准备数据集 出于演示目的,我们将使用20个新闻组数据集。数据分为20个类别,我们的工作是预测这些类别。如下所示: 通常,对于深度学习,我们将训练和测试数据分开。 导入所需的软件包 ......

大数据部落 1968

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python实现关键词提取

简单的关键词提取的代码文章内容关键词的提取分为三大步:(1) 分词(2) 去停用词(3) 关键词提取 分词方法有很多,我这里就选择常用的结巴jieba分词;去停用词,我用了一个停用词表。具体代码如下: 1 import jieba 2 import jieba.analyse 3 4 #第一步:分词,这里使用结巴分词全模式 5 text = '''新闻,也叫消息...

weixin_30429201的博客 311

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

基于python文本分类的研究_基于朴素贝叶斯的中文文本分类及Python实现

摘要:当前,随着计算机不断普及以及互联网的快速发展,在这个新科技知识不断涌现和拥有空前规模信息量的"信息爆炸时代";信息来源渠道极广,传播速度极快,浩如烟海的信息鱼龙混杂,在短时间内能从中获取有用的信息成为人们迫切的需求.为了满足人们的需要,应运而生了文本数据挖掘中的中文文本分类方法,它是将统计方法与机器学习方法结合应用于文本分类中.中文文本分类是根据文本内容的主题词等属性特征将其划分到用户根据需...

weixin_39668965的博客 660

python 评论分析_基于Python-Snownlp的新闻评论数据分析

赵志升 靳晓松 温童童 梁俊花摘 要 网上热点新闻的评论不仅反映了民众对社会热点事件的关注程度,也反映了公众所表现出的各类情感价值和思想动态。基于Python-Snownlp经过数据采集,数据预处理,建立向量模型,数据挖掘与分析对新闻评论中用户观点与情绪进行研究,有效實现舆情分析和监控。关键词 Python Snownlp;网络爬虫;聚类分析;情感分析中图分类号 G2 文献标识码 A 文章编号 1...

weixin_39866087的博客 2707

机器学习-贝叶斯分类实验

机器学习-贝叶斯分类1. 中文文本分类介绍2. 文本分类的一般步骤:3. 具体操作4. 实验步骤5. 实验完整代码python 1. 中文文本分类介绍 文本挖掘是指从大量的文本数据中抽取事先未知的、可理解的、最终可用的知识的过程,同时运用这些知识更好的组织信息以便将来参考。 主要有以下几个方面的应用: 搜索和信息检索(IR):存储和文本文档的检索,包括搜索引擎个关键字搜索。 文本聚类:使用聚类方法,对词汇、片段、段落或文件进行分组和归类。 文本分类:对片段、段落或文件进行分组和归类,在使用数据挖掘分类方法的

贰十二的博客 3026
上一篇: 如何将本地文件上传至github
下一篇: git 介绍与相关命令
Mooney安
博客等级 码龄9年 92粉丝 48原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值