python 实现中文文本分类

NLP新手入门-第N2周:中文文本分类-Pytorch实现 中文文本分类-Pytorch实现 阅读详情

python 实现中文文本分类

本文基于 Python 采用 scikit-learn 模块实现中文文本分类。

文本分类

一、预处理

1. 获取语料库

语料库数据选用搜狗语料库的搜狐新闻数据精简版:http://www.sogou.com/labs/resource/cs.php。

数据集介绍:
来自搜狐新闻2012年6月—7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据,提供URL和正文信息

格式说明:
数据格式为

<doc>

<url>页面URL</url>

<docno>页面ID</docno>

<contenttitle>页面标题</contenttitle>

<content>页面内容</content>

</doc>

注意:content字段去除了HTML标签,保存的是新闻正文文本

下载后解压到 SogouCS.reduced 文件夹。下载的文本是 xml 格式,需要解析为纯文本。参考这篇博文进行解析:http://www.sohu.com/a/147504203_609569 。需要注意的是,下载的原文本数据中 缺少跟节点,并且有些特殊符号需要去掉,因此进行了一些格式处理步骤。代码如下所示,保存为 sougou_text.py:

#!/usr/bin/python
# -*- encoding:utf-8 -*-
 
 
import os
from xml.dom import minidom
from urllib.parse import urlparse
import glob
from queue import Queue
from threading import Thread, Lock
import time

THREADLOCK = Lock()
# 解析的文本保存路径
corpus_dir = './SogouCS.corpus/'


def file_format(from_file, to_file):
    """对下载的文本进行格式处理"""
    try:
        # 原文本需要用 gb18030 打开
        with open(from_file, 'r', encoding='gb18030') as rf:
            lines = rf.readlines()
        # xml 格式有问题,需添加根节点
        lines.insert(0, '<data>\n')
        lines.append('</data>')
        with open(to_file, 'w', encoding='utf-8') as wf:
            for l in lines:
                l = l.replace('&', '')
                wf.write(l)
    except UnicodeDecodeError:
        print("转码出错",from_file)


def praser_handler(q: Queue):
    # 建立url和类别的映射词典
    dicurl = {
   
   'auto.sohu.com': 'qiche', 'it.sohu.com': 'hulianwang', 'health.sohu.com': 'jiankang',
              'sports.sohu.com': 'tiyu', 'travel.sohu.com': 'lvyou', 'learning.sohu.com': 'jiaoyu',
              'cul.sohu.com': 'wenhua', 'mil.news.sohu.com': 'junshi', 'business.sohu.com': 'shangye',
              'house.sohu.com': 'fangchan', 'yule.sohu.com': 'yule', 'women.sohu.com': 'shishang',
              'media.sohu.com': 'chuanmei', 'gongyi.sohu.com': 'gongyi', '2008.sohu.com': 'aoyun'}
    while not q.empty():
        file = q.get()
        with THREADLOCK:
            print("文件" + file)
        file_code = file.split('.')[-2]
        file_format(file, file) # 进行格式处理
        doc = minidom.parse(file)
        root = doc.documentElement
        claimtext = root.getElementsByTagName("content")
        claimurl = root.getElementsByTagName("url")
        textnum = len(claimurl)
        for index in range(textnum):
            if claimtext[index].firstChild is None:
                continue
            url = urlparse(claimurl[index].firstChild.data)
            if url.hostname in dicurl:
                if not os.path.exists(corpus_dir + dicurl[url.hostname]):
                    os.makedirs(corpus_dir + dicurl[url.hostname])
                fp_in = open(
                    corpus_dir + dicurl[url.hostname] + "/%s_%d.txt" % (file_code, index),"wb")
                fp_in.write((claimtext[index].firstChild.data).encode('utf8'))
                fp_in.close()


def sougou_text_praser(org_dir):
    # 用8个线程处理文本
    q = Queue()
    for file in glob.glob(org_dir + '*.txt'):
        q.put(file)
    for i in range(8):
        Thread(target=praser_handler, args=(q,)).start()
    while not q.empty():
        time.sleep(10)


def files_count(corpus_dir):
    # 统计各类别下的文本数
    folders = os.listdir(corpus_dir)
    total = 0
    for folder in folders:
        if folder.startswith('.DS'):
            continue
        fpath = os.path.join(corpus_dir, folder)
        files = os.listdir(fpath)
        num = len(files)
        total += num
        print(folder, num, sep=
python3使用fasttext进行中文文本分类 本文完成在python3下,利用fasttext对中文文本进行分类。期间使用了jieba分词。 数据集 本文使用skdjfla在github上的头条新闻数据集.包括新闻数据382688条(只包含标题),共15个类别。 数据预处理 fastext包进行文本分类类似于sklearn,已经进行完整封装,只需要生成指定格式的文本文件即可以开始训练。文件格式如下(__labe__为类别标记) 2018 年... 阅读详情

相关推荐

python 实现加载CSV分类文本进行中文文本分类,使用google-bert\bert-base-chinese进行微调

print(f"GPU内存: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.1f} GB")print(f"训练损失: {train_loss:.4f}, 训练准确率: {train_acc:.4f}")print(f"验证损失: {val_loss:.4f}, 验证准确率: {val_acc:.4f}")id_to_label = {0: "负面", 1: "正面", 2: "中性"} # 根据实际训练结果替换。

Wanda && Aidem 964

中文文本多标签文本分类(python tensorflow2实现 )

中文文本多标签文本分类 (python实现)

qq_56154355的博客 2316

基于TF-IDF+KMeans聚类算法构建中文文本分类模型(附案例实战)

TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。简单来说就是:一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章。这也就是TF-IDF的含义。

m0_64336780的博客 1万+

基于python利用支持向量机实现中文文本分类(附完整代码)

基于python利用支持向量机实现中文文本分类(附完整代码)

1105

基于CNN的中文文本分类算法(Python实现)

TensorFlow是谷歌开发的一款开源机器学习库,它支持广泛的深度学习模型,非常适合进行大规模的数值计算和训练。TensorFlow的核心组件包括:Tensor:多维数组,是所有数据的基础。Graph:表示计算的图结构。Session:运行和计算图的对象。TensorFlow提供两种API:低级API(tf):对构建计算图提供了低级别的控制,适用于需要对神经网络进行精确控制和优化的场景。高级API(tf.keras)

weixin_42603332的博客 926

新能源知识库(68)复叠压缩式热泵蒸汽系统介绍

复叠压缩式热泵蒸汽系统通过多级压缩技术将低品位热能转化为高品位蒸汽,在汽车电镀场景中实现了高效、精准的能源利用。随着超高温工质与智能联供系统的发展,该技术将深度赋能电镀行业的高质量可持续发展。​:±1℃控温保障镀层均匀性,提升产品良率;多台复叠热泵+储热装置(如纺织厂6台热泵)复叠热泵+余热回收+智能控制(化工厂案例)​:无燃烧设计契合汽车行业ESG目标。单台高温热泵机组(如92P型号)复叠压缩式热泵蒸汽系统以。67.4万元(↓22%)600万–1200万元。事故率 ↓90%​​。150万–600万元。

竹君子之家 1421

快手极速版抓包实战:安卓/iOS双端获取client_salt全流程解析(避坑指南)

本文详细解析了在安卓和iOS平台上获取快手极速版关键参数`client_salt`的全流程,包括环境配置、抓包工具使用、参数识别与转换等实战技巧。特别针对双端差异和反抓包机制提供了避坑指南,帮助开发者高效安全地完成数据获取任务。

weixin_29021195的博客 714

避坑指南:PyCINRAD处理CINRAD雷达数据时遇到的5个典型报错及解决方案

本文针对使用PyCINRAD库处理CINRAD雷达基数据时常见的5个典型报错,提供了详细的解决方案。内容涵盖环境配置、数据读取、PPI可视化及性能优化等核心环节,重点解决了版本兼容性、数据异常处理和中文乱码等实际问题,帮助用户高效处理雷达基数据并生成准确的PPI图像。

cc789的博客 1068

材料仿真软件:Quantum Espresso_(15).声子与振动模式计算

通过上述步骤和代码示例,您应该能够使用 Quantum Espresso 进行声子与振动模式的计算。声子计算是材料科学研究中的重要工具,可以帮助我们更好地理解和设计材料的性能。希望本节内容对您有所帮助。

kkchenjj的博客 1185

10年上位机开发踩过的20个坑:C#通信/线程/UI适配避坑指南

通信层:所有通信操作异步化、异常全覆盖,加断线重连+心跳检测,多设备隔离资源;线程层:UI更新必做跨线程判断,共享数据加锁,线程池限流,异常不静默;UI层:适配高分屏/DPI,用布局容器替代固定坐标,多屏场景绑定主屏幕。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 904

ICP-10111气压传感器原理图设计,已量产(压力传感器)

在最近的室内导航定位项目中,我们需要一款能捕捉厘米级垂直高度变化的气压传感器 —— 毕竟室内环境里,哪怕是单个台阶的高度差都得精准识别。对比了几款器件后,最终选定了 ICP-10111:它 ±1Pa 的压差精度刚好能把高度差分辨到 8.5cm,0.4Pa 的低压力噪声能让数据输出足够稳定,再加上 0.5Pa/℃的低温漂特性,长期工作的可靠性也能满足需求。下面聊聊这套适配 ICP-10111 的硬件电路设计细节。

不脱发的程序猿 334

第01章 Hermes Agent 是什么

如果读者所在的开发团队已经引入了 Cursor、Claude Code 这类 AI IDE,可能会有一个困惑:写代码已经有 AI 帮忙了,还需要 Hermes Agent 做什么?这一章将给出答案。Hermes Agent 不是另一个写代码的 AI,而是一个常驻在团队里的"AI 协作成员",专门负责写代码之外的协作环节——讨论需求、审查代码、查日志、监控告警、生成报告。学完本章,读者将清楚 Hermes 的定位以及它在团队里的角色。

亢少军的博客 75

从零开始:C#上位机集成YOLO完成摄像头目标追踪(保姆级教程)

新手入门C#上位机+YOLO做摄像头目标追踪,最忌讳的是“只抄代码,不懂逻辑”。这个教程不仅给了完整代码,还把核心原理和踩坑点都讲清楚了,新手跟着走,不仅能跑通demo,还能理解为什么这么写。如果你们在运行时遇到具体问题,比如模型导出失败、代码报错,都可以在评论区留言,我会一一解答。后续也可以出一期工业相机+YOLO目标追踪的教程,帮助大家把demo落地到实际生产中。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1030

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: python 爬虫获取网页 html 内容以及下载附件的方法
下一篇: 机器学习之预测回归一:简单线性回归
XnCSD
博客等级 码龄12年 132粉丝 30原创
评论 27
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值