您当前的位置:首页 > 电脑百科 > 软件技术 > 软件技术

手把手教你搭建一个简易的文本分类器

时间:2021-08-02 11:05:29  来源:  作者:老K玩代码
手把手教你搭建一个简易的文本分类器

 

我是@老K玩代码,专注分享实战项目和最新行业资讯,已累计分享超1000实战项目!


前言

所有的人工智能学习者,都是从一个个简易的分类器开始的实践之路,自然语言处理领域也不例外。虽然有着包括:分词、词性标注、关键词提取、新闻摘要、机器翻译等各种各样的实际应用,但文本分类还是AI自然语言处理的基础。

那么,我们应该如何构建起一个建议的文本分类器呢?老K就带大家来实践一下。


准备工作

首先,你需要有一个已经标记好分类的文本文件,当然也可以用老K准备的源数据,可以根据文末的方法获取。

然后,开始安装必要的第三方库:pandas、sklearn

pip install pandas

pandas是最常用的数据处理的工具库

pip install -U scikit-learn

sklearn是机器学习的一个常用库


数据清洗

首先,我们把数据通过pandas导入到程序中来,然后对数据进行基础的清洗

import pandas as pd

data = pd.read_csv('data.csv')

data = data.dropna(subset=['fearures'])
data = data[['features', 'targets']]

然后将数据转为array格式,把特征和标签分别提取出来

dataset = data.as_matrix()
features = dataset[:, 0]
targets = dataset[:, 1]

数据预处理

由于不论特征还是标签,都是以文本形式表现的,所以我们首先需要把这些文本转化为计算机能够理解的形式,也就是把文本数字化。

对于特征部分,我们用sklearn自带的词向量化器模型转化一下即可:

from sklearn.feature_extraction.text import TfidfVectorizer

tfidf = TfidfVectorizer()
X = tfidf.fit_transform(features)

通过上述代码,就能一步实现文本的分词和向量化;

然后我们对标签部分,用encoder器进行数值化预处理:

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()
Y = encoder.fit_transform(targets)

说明一下: 模型中的fit_transform()方法相当于fit()后立刻进行transform(),是后两者的合并,主要起到简化代码的效果。


抽取训练集、测试集

sklearn有自带的选择器,可以按照设定的参数随机生成训练集和测试集

from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.5)

通过上述代码,就可以将特征和标签,按照50%测试集的比例,拆分为训练集和测试集


训练模型

接下来我们只需要选择一个合适的模型,进行训练就可以了。

这里我们选择的是随机森林模型,参数是默认的。大家也可以根据自己的任务本身,选择各自认为合适的模型。

from sklearn.ensemble import RandomForestClassifier

cls = RandomForestClassifier()
cls.fit(X_train, Y_train)

训练完成后,可以用score()查看模型的准确率,然后进一步调整模型

print(cls.score(X_test, Y_test))

模型预测

在训练好合适的模型后,我们就可以用这个模型进行预测了。

我们把用来预测的特征文本输入作为sents输入模型。

sents = ["用于预测的语句"]
sents = tfidf.transform(sents)
labers = cls.predict(sents)

值得注意的是,此处输入的sents需要是list格式的数据,而非str。


总结

以上就是实现一个简易的文本分类器的步骤详解,实际的分类器应用,写法也与之大致相同。

由于选择的是默认的模型,所以准确率并不能保证,需要不断改进模型选择和模型参数,才能提高模型的准确率,达到商业应用的水准。

以下是完整代码:

import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder

# 数据清洗 ====
data = pd.read_csv('data.csv')

data = data.dropna(subset=['context'])
data = data[['features', 'targets']]

dataset = data.as_matrix()
features = dataset[:, 0]
targets = dataset[:, 1]

# 预处理 ====
tfidf = TfidfVectorizer()
X = tfidf.fit_transform(features)

encoder = LabelEncoder()
Y = encoder.fit_transform(targets)

# 抽取训练集 ====
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.5)

# 训练模型 ====
cls = RandomForestClassifier()
cls.fit(X_train, Y_train)

print(cls.score(X_test, Y_test))


Tags:文本分类器   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
我是@老K玩代码,专注分享实战项目和最新行业资讯,已累计分享超1000实战项目!前言所有的人工智能学习者,都是从一个个简易的分类器开始的实践之路,自然语言处理领域也不例外。虽...【详细内容】
2021-08-02  Tags: 文本分类器  点击:(84)  评论:(0)  加入收藏
▌简易百科推荐
今天教大家通过windows的CMD终端查看WIFI密码 使用管理权限打开CMD 查看本机连接过WIFI名称netsh wlan show profiles 查询某一个WIFI的密码比如这里我想查询猪猪侠的...【详细内容】
2021-12-27  吉祥同学学安全    Tags:wifi密码   点击:(1)  评论:(0)  加入收藏
从本质上来讲,PE系统最广泛的用途只是用来安装系统。通过其内置的Ghost软件来调用第三方的GHO系统镜像来完成系统的安装。从表面来看,最终的系统是否纯净、是否安全,与Gho镜像...【详细内容】
2021-12-27  u盘装系统    Tags:pe工具   点击:(2)  评论:(0)  加入收藏
Safari是苹果在iPhone和iPad上的默认网络浏览器。虽然我们天天都在使用,但是,你是否深入研究了Safari的所有功能和设置?"无痕浏览"、"阅读器"视图和下载文件等标准选项只是其...【详细内容】
2021-12-16  趣玩公社    Tags:Safari   点击:(20)  评论:(0)  加入收藏
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个开源的 HTML5 视频播放器插件——MuiP...【详细内容】
2021-12-16  GitHub精选    Tags:插件   点击:(22)  评论:(0)  加入收藏
给电脑安装软件,最让人担心的就是安装到“拖家带口”的,而这样的手法正是国产软件惯用的!全家桶自动安装、软文弹窗等等,这些让我们讨厌的却是软件的直接收入来源。 那么在你安...【详细内容】
2021-12-15  老毛桃winpe    Tags:软件   点击:(18)  评论:(0)  加入收藏
不知道你是否遇到过这么一种情况:在一个A4大小的图框画一个接近满框的图形,在打印的时候却发现图形很小根本不符合模型空间的实际情况。看似明显是比例问题,但又不知道究竟是什...【详细内容】
2021-12-14  设计师小仁君    Tags:CAD   点击:(20)  评论:(0)  加入收藏
哈喽大家好! 前几天一个朋友向我疯狂吐槽。 快到年底了,公司要统计年度数据。 需要把一月到十二月份,十二张表格的数据,全部汇总到一个表格内。 这样的数据汇报每年都会有,每到年...【详细内容】
2021-12-14  秋叶Excel    Tags:Excel   点击:(23)  评论:(0)  加入收藏
我发现最近不少小叶子的留言都和 Excel 相关,我寻思是时候出一期解决 Excel 疑难杂症的小合集了。于是毛毛在众多问题中,挑了三个被问次数最多的有关 Excel 的问题,今天就来给...【详细内容】
2021-12-14  叶PPT    Tags:Excel   点击:(27)  评论:(0)  加入收藏
大家好,我是Stark-C。油猴简介【油猴】一款免费的浏览器扩展和最为流行的用户脚本管理器,它是一个附加组件(扩展程序),让用户安装一些脚本使大部分HTML为主的网页改变得更方便易...【详细内容】
2021-12-13  什么值得买    Tags:油猴   点击:(43)  评论:(0)  加入收藏
年末,又到了各大厂商盘点年度最佳的时候了。不过让世超感到意外的是 Google 竟然给自己 Chrome 的插件,做了一个 2021 年精选集锦,挑选出了 13 款今年最热门的 Chrome 插件。...【详细内容】
2021-12-13  科技知迅    Tags:Chrome   点击:(19)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条