如何用机器学习对文本分类

简介: 需求使用监督学习对历史数据训练生成模型,用于预测文本的类别。样本清洗主要将重复的数据删除掉,将错误无效的数据纠正或删除,并检查数据的一致性等。

需求

使用监督学习对历史数据训练生成模型,用于预测文本的类别。

样本清洗

主要将重复的数据删除掉,将错误无效的数据纠正或删除,并检查数据的一致性等。比如我认为长度小于少于13的数据是无效的遂将之删掉。

def writeFile(text):
   file_object = open('result.txt','w')
   file_object.write(text)
   file_object.close()

def clear():
   text = ""
   file_obj = open("deal.txt")
   list_of_lines = file_obj.readlines()
   for line in list_of_lines:
     if(len(line)>13):
       text += line
   writeFile(text)
   file_obj.close()

定好类别集合

按照样本集人工做好分类,比如分为以下几类:

编号 类别
1 环保
2 交通
3 手机
4 法律
5 汽车

分类词库

特征提取涉及到文本分词,由搜狗http://pinyin.sogou.com/dict/可以搜索各种类别的词汇,自己下载下来再整理,它的格式为scel,可以使用深蓝词汇转换工具转成txt方便使用。

这里写图片描述

常用算法

  • 朴素贝叶斯
  • Rocchio
  • SVM
  • KNN
  • 决策树
  • 神经网络

这里选择用SVM,SVM本质上其实也就是一种特殊的两层神经网络,具有高效的学习算法。

特征集

使用SVM分类时其中一项重要的工作就是要确定特征集,只有特征集确定好了才能往下计算,那么怎么确定特征集呢?一般的做法可以是将所有样本的词都提取出来作为特征集。比如我们有两个文本
“小学生上学”和“股票大跌”,那特征集就是{“小学生”,”上学”,”股票”,”大跌”}。

特征权重

特征集确定就可以看成是向量的维数,而对于每个样本来说就需要确定每个维度的值了,这个值可以看成是特征的权重,常常用TF-IDF作为值。TF-IDF又是什么?简单来说TF就是某文档中某个term出现的次数,而IDF即逆文档频率,可由下面公式计算:

IDF=log(Tt)

其中,T为统计样本中总文档数,t为包含某term的文档数。
TF和IDF的相乘则为特征权重。

特征降维

当统计样本越来越多且每个样本都比较大时,这时可能会导致特征维度特别大。所以可能会要对特征集进行降维处理。特征降维其实就是将一些几乎没影响的维度去掉,以避免维度灾难。有比较多处理方式:比如可以直接定义一个无意义词库将一些没意义的单词去掉、或以词频作为依据选择出代表性的单词、或以其他算法提取出若干热词作为代表性单词、或用经典的卡方校验算法选择代表性单词,以上方式都可以达到降维效果。

代码

机器学习库很多,可以选一个自己比较熟悉的且叫有名的库来实现,关键的代码如下:

double[][] samples = 所有样本特征集及权重数组
int labelInt[] = 分类标签数组
SVM<double[]> svm =
        new SVM<double[]>(new LinearKernel(), 1.0, 12, SVM.Multiclass.ONE_VS_ALL);
svm.learn(samples, labels);
svm.finish();

double[] test = 测试数据的特征集及权重数组
svm.predict(x)

参数

SVM参数需要选择的主要有两个:核函数和惩罚因子。主要的核函数包括RBF核、线性核、多项式核和Sigmoid核,文本分类中一般可选线性核。惩罚因子用来惩罚分错的样本,惩罚因子越大说明越重视损失,不断增大它最终总能让所有样本都正确分类,但这可能会存在过拟合,影响后面的泛化能力。

====广告时间,可直接跳过====

鄙人的新书《Tomcat内核设计剖析》已经在京东预售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

=========================

欢迎关注:

这里写图片描述

目录
相关文章
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
基于非英语数据集的图形机器学习和集成学习方法增强文本分类和文本情感分析
基于非英语数据集的图形机器学习和集成学习方法增强文本分类和文本情感分析 摘要 近年来,机器学习方法,特别是图学习方法,在自然语言处理领域,特别是文本分类任务中取得了巨大的成果。然而,许多这样的模型在不同语言的数据集上显示出有限的泛化能力。在本研究中,我们在非英语数据集(如波斯语Digikala数据集)上研究并阐述了图形机器学习方法,该方法由用户对文本分类任务的意见组成。更具体地说,我们研究了(Pars)BERT与各种图神经网络(GNN)架构(如GCN、GAT和GIN)的不同组合,并使用集成学习方法来处理某些知名的非英语数据集上的文本分类任务。我们的分析和结果表明,应用GNN模型可以更好地捕捉文
76 0
|
9月前
|
机器学习/深度学习 数据采集 算法
如何利用机器学习进行文本分类
在当今信息爆炸的时代,我们每天都要面对大量的文本数据。无论是社交媒体的评论、新闻文章还是电子邮件,都需要有效地对这些文本进行分类和理解。传统的基于规则的方法在处理这种大规模文本数据时存在一些局限性,因此机器学习成为了解决这个问题的热门技术。
99 0
|
1月前
|
机器学习/深度学习 数据采集 存储
使用机器学习算法进行文本分类的方法与实践
本文将介绍使用机器学习算法进行文本分类的方法与实践。通过分析文本特征、选择合适的机器学习算法和构建有效的训练模型,可以实现准确和高效的文本分类任务。我们还将探讨如何处理文本数据预处理、特征提取和模型评估等方面的关键问题,以帮助读者更好地应用机器学习技术解决文本分类挑战。
|
1月前
|
机器学习/深度学习 Python
使用Python实现基于机器学习的文本分类
本文将介绍如何使用Python实现基于机器学习的文本分类。机器学习在文本分类中发挥了重要作用,它能够自动从文本数据中学习模式和规律,以便对新的文本进行分类。我们将探讨如何使用Python的scikit-learn库来训练一个文本分类器,并使用该分类器对电影评论进行情感分析。
|
10月前
|
机器学习/深度学习 自然语言处理 专有云
阿里云的机器学习平台提供了名为"文本分类"的服务
阿里云的机器学习平台提供了名为"文本分类"的服务
278 1
|
机器学习/深度学习 自然语言处理 算法
循序渐进的机器学习:文本分类器
在 Python 中构建监督机器学习文本分类器的指导指南和流程图
116 0
|
机器学习/深度学习 自然语言处理
文本分类(上)- 基于传统机器学习方法进行文本分类
文本分类(上)- 基于传统机器学习方法进行文本分类
375 0
|
机器学习/深度学习
【阿旭机器学习实战】【11】文本分类实战:利用朴素贝叶斯模型进行邮件分类
【阿旭机器学习实战】【11】文本分类实战:利用朴素贝叶斯模型进行邮件分类
【阿旭机器学习实战】【11】文本分类实战:利用朴素贝叶斯模型进行邮件分类
|
机器学习/深度学习 自然语言处理 大数据
NLPIR深度机器学习的文本分类
NLPIR深度文本分类,可以用于新闻分类、简历分类、邮件分类、办公文档分类、区域分类等诸多方面。此外还可以实现文本过滤,能够从大量文本中快速识别和过滤出符合特殊要求的信息,可应用于品牌报道监测、垃圾信息屏蔽、敏感信息审查等领域。
1781 0
|
机器学习/深度学习 算法 Python
《机器学习实战》基于朴素贝叶斯分类算法构建文本分类器的Python实现
============================================================================================ 《机器学习实战》系列博客是博主阅读《机器学习实战》这本书的笔记,包含对其中算法的理解和算法的Pyt...
1226 0

热门文章

最新文章