使用sklearn+jieba完成一个文档分类器

简介: 使用sklearn+jieba完成一个文档分类器

最近在学习数据分析的知识,接触到了一些简单的NLP问题,比如做一个文档分类器,预测文档属于某类的准确率,应该怎么做呢


从头一起做一个吧


01.文档分类原理


文本分类是自然语言处理领域比较常见的一类任务,一般是给定多个文档类别,将文档或语句归类到某个类别中。其本质是文本特征提取+机器学习的多分类问题。

好的,这就是基本概念了,再来看看几个重要的步骤。


1.文档标注

就是要把样本文档分类,我们首先是要知道我们要把文档分为哪几类,这样才能有依据的构建模型,进而预测其他文档类型。


2.格式转换

为了方便后面的数据处理,一般是要把非txt文本,如word,excel,pdf等转换为txt格式,保证文档中不包含图片,不包含任何文档格式。


3.中文分词

这里就使用jieba了,很流行的工具,同时还要给文档加上标签,其实就是分类的数值化,后面具体说。


4.计算词语权重

如果某个词或短语在一篇文章中出现的频率很高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。通过计算词语的权重,可以找出文档中的关键词,从而确定分类的依据。常用的词语权重计算方法为TF-IDF算法,公式如下

TF-IDF = 词频(TF) * 逆文档频率(IDF)

词频(TF) = 某个词在文档中的出现次数/文章的总词数

逆文档频率(IDF) = log(语料库的文档总数/(包含该词的文档数+1))

sklearn支持该算法,使用TfidfVectorizer类,就可以帮我们计算单词的TF-IDF。


5.构建朴素贝叶斯分类器

sklearn提供的多项式朴素贝叶斯,类MultinomialNB,以单词为粒度,会计算单词在某个文件中的具体次数,用于文档分类很适合。


6.预测准确性

最后就是使用训练的模型来预测未知的文档类型了,当然这之前还要经过准确率的测试。


02.Coding


话不多说,show me the code!

本次是使用的如下数据集,stop目录放置停用词,train目录是训练使用的数据,test目录数据用来做测试准确性的,两个数据集下都有数百个txt文件。



1.获取数据,并打上标签

我这里的思路是循环获取到对应目录下的txt文件内容后,保存到一个总的文件中,用于后面使用,并增加一列,保存标签



2.生成训练数据

使用jieba工具,做中文分词,并且加载停用词,最后返回训练feature和label


3.同理,处理测试数据

直接给出完整代码


4.构建模型

调用TfidfVectorizer类,使用TF-IDF算法拟合训练数据,再使用MultinomialNB类,生成训练模型,即朴素贝叶斯分类器


5.使用生成的分类器做预测

同样,使用训练集的分词创建一个TfidfVectorizer类,然后用TfidfVectorizer类对测试集的数据进行fit_transform拟合,即可以得到测试集的特征矩阵,然后再使用MultinomialNB类的predict函数,找出后验概率最大的label,最后使用accuracy_score函数对比实际结果和预测结果。


6.准确性验证

我做了初步的验证,不同标签,准确率差别还是挺大的


到这,一个简单的文档分类器就完成了,是不是也不是很难呢,代码还要很多有待完善的地方,有兴趣的同学一起加油喽!

相关文章
|
人工智能 自然语言处理 数据挖掘
从行业痛点到AI前沿:揭秘AGI时代企业培训的终极之选
近几年接触到的各类培训合作方越来越多,从国际咨询巨头、互联网科技培训平台,到本土独角兽型的专业培训公司;从专攻新技术与创新场景的培训团队,到深谙传统行业痛点的咨询顾问。作为一名在央企、国企、上市公司人力资源培训条线深耕多年的HR负责人,深知在这片竞争激烈的培训服务蓝海中,寻找高质、高效的合作伙伴并不简单,因为企业培训的逻辑正在悄然改变。
|
数据库 数据安全/隐私保护 Python
使用wxpython开发跨平台桌面应用,设计系统的登录界面
【11月更文挑战第12天】本文介绍了使用wxPython开发的简单跨平台桌面应用登录界面的示例代码。主要包括导入wxPython模块,创建登录界面类`LoginFrame`,定义界面布局与事件处理,以及启动应用程序的步骤。示例中实现了用户名和密码输入框及登录按钮的基本功能。
354 1
|
人工智能 异构计算 Python
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
633 1
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
|
人工智能 自然语言处理 算法
【人工智能】TF-IDF算法概述
TF-IDF算法,全称Term Frequency-Inverse Document Frequency(词频-逆文档频率),是一种在信息检索和文本挖掘领域广泛应用的加权技术。它通过评估一个词语在文档中的重要程度,来挖掘文章中的关键词,进而用于文本分析、搜索引擎优化等场景。其核心思想是:如果某个词或短语在一篇文章中出现的频率高(TF高),且在其他文章中很少出现(IDF也高),则认为这个词或短语具有很好的类别区分能力,适合用来代表这篇文章的内容。 具体而言,TF-IDF由两部分组成,即词频(TF)和逆文档频率(IDF)。词频(TF)指的是某一个给定的词在该文件中出现的频率。这个数值通常会被归一化
1261 3
|
机器学习/深度学习 自然语言处理 算法
分词算法在自然语言处理中的应用与性能比较
分词算法在自然语言处理中的应用与性能比较
|
机器学习/深度学习 自然语言处理 开发者
Python中实现简单文本分类器
【8月更文挑战第31天】本文将通过一个简明的教程,展示如何在Python环境下利用scikit-learn库构建一个简单的文本分类器。我们将从数据准备开始,逐步介绍文本预处理、特征提取、模型训练及评估过程,并附上代码示例。无论你是机器学习新手还是希望巩固知识的开发者,这篇文章都将提供有价值的实践指导。
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的二手手机交易平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的二手手机交易平台附带文章和源代码部署视频讲解等
354 7
|
安全 中间件 API
【超详细教程】FastAPI表单处理全攻略:手把手教你实现安全的用户输入验证与数据校验!
【8月更文挑战第31天】FastAPI是一款注重开发效率与代码简洁性的现代API框架,其表单处理功能可有效接收并验证用户输入,提升应用安全性和用户体验。本文通过具体示例介绍如何利用FastAPI及Pydantic库处理表单数据,确保数据有效性和安全性。首先安装FastAPI和Uvicorn并创建基本应用,接着使用`Form`参数接收表单数据,并通过Pydantic模型验证数据,如检查邮箱格式和密码强度。最后,通过添加CORS中间件、HTTPS加密及CSRF保护等措施进一步增强安全性。通过本文,你将学会如何在FastAPI中安全地处理表单数据,构建高效且可靠的Web应用。
659 0
|
消息中间件 程序员 Windows
Windows消息机制《MFC深度详解》
Windows消息机制《MFC深度详解》
416 1
|
JSON 数据格式 开发者
preflight 错误,但服务端告诉你已经设置过了 CORS 信息怎么办
preflight 错误,但服务端告诉你已经设置过了 CORS 信息怎么办