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

需求

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

样本清洗

主要将重复的数据删除掉,将错误无效的数据纠正或删除,并检查数据的一致性等。比如我认为长度小于少于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 进行预定。感谢各位朋友。

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

欢迎关注:

时间: 2024-10-06 10:51:50

如何用机器学习对文本分类的相关文章

NLPIR深度机器学习的文本分类

近年来,随着Intemet的迅猛发展,网络信息和数据信息不断扩张,如何有效利用这一丰富的数据信息,已成为广大信息技术工作者所关注的焦点之一.为了快速.准确的从大量的数据信息中找出用户所需要的信息,文本信息的自动分析也成为了当前的迫切需要.对文本信息的分析中的一个主要技术就是文本分类.文本分类问题是自然语言处理的一个基本问题,很多相关的研究都可以归结为分类问题.文本分类是将文本按一定的规则归于一个或多个类别中的技术.近年来,许多统计的方法和机器学习的方法都应用到文本分类方面. 文本分类是指在给定的

我是如何用机器学习技术帮助 HR 省时间的

引言 假设简历库中有 10000 份名为 "软件工程师" 的简历. 一位 HR 在搜索 "Android 工程师" 时仅关注名称为 "Android 工程师" 的简历,她将遗漏 912 份有可能匹配的简历:如果这位 HR 愿意花时间从头到尾通读每一份 "软件工程师" 的简历,将其中真正从事 Android 研发的简历筛选出来,那么她需要多阅读 9088 份无效的软件工程师简历.假设阅览一份简历需要 15 秒,这项工作将占据她

手把手教你如何用 TensorFlow 实现基于 DNN 的文本分类

许多开发者向新手建议:如果你想要入门机器学习,就必须先了解一些关键算法的工作原理,然后再开始动手实践.但我不这么认为. 我觉得实践高于理论,新手首先要做的是了解整个模型的工作流程,数据大致是怎样流动的,经过了哪些关键的结点,最后的结果在哪里获取,并立即开始动手实践,构建自己的机器学习模型.至于算法和函数内部的实现机制,可以等了解整个流程之后,在实践中进行更深入的学习和掌握. 那么问题来了,既然作为初学者不需要掌握算法细节,但实现模型的过程中又必须用到相关算法,怎么办呢?答案是借助于互联网上已经实

一文详解如何用 TensorFlow 实现基于 LSTM 的文本分类(附源码)

 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实例,这个星期就用tensorflow实现了一下,感觉和之前使用的theano还是有很大的区别,有必要总结mark一下.   模型说明 这个分类的模型其实也是很简单,主要就是一个单层的LSTM模型,当然也可以实现多层的模型,多层的模型使用Tensorflow尤其简单,下面是这个模型的图  简单解释一下这个图,每个word经过embedding之后,进入LSTM层,这里LSTM是

从Facebook AI Research开源fastText谈起文本分类:词向量模性、深度表征和全连接

更多深度文章,请关注:https://yq.aliyun.com/cloud          文本分类(text classification)是机器学习的一个主要任务,通常用作垃圾邮件检测.新闻/文章主题生成.多义词正确词义选择等.之前,Statsbot团队已经分享了<如何检测垃圾邮件/信息/用户评论>.本文主要介绍少数几个广义上的文本分类算法及相关案例,同时也提供了一些有用的教程和工具. 文本分类基准(Benchmarks) 目前,搞文本挖掘的人通常会使用很多小技巧和工具,比如TF-ID

用神经网络进行文本分类

本文讲的是用神经网络进行文本分类, 理解聊天机器人如何工作是很重要的.聊天机器人内部一个基础的组成部分是文本分类器.让我们一起来探究一个用于文本分类的人工神经网络的内部结构. 多层人工神经网络 我们将会使用两层神经元(包括一个隐层)和词袋模型来组织(organizing 似乎有更好的选择,求建议)我们的训练数据.有三种聊天机器人文本分类的方法:模式匹配,算法,神经网络.尽管基于算法的方法使用的多项式朴素贝叶斯方法效率惊人,但它有三个根本性的缺陷: 该算法的输出是一个评分而非概率.我们想要的是一个

学术青年分享会:达观数据张健分享文本分类方法和应用案例

自然语言处理(NLP)一直是人工智能领域的重要话题,而人类语言的复杂性也给NLP布下了重重困难等待解决.随着深度学习(Deep Learning)的热潮来临,有许多新方法来到了NLP领域,给相关任务带来了更多优秀成果,也给大家带来了更多应用和想象的空间. 近期,雷锋网 AI 研习社就邀请到了达观数据的张健为大家分享了一些NLP方面的知识和案例. 分享主题:达观数据 NLP 技术的应用实践和案例分析  分享人:张健,达观数据联合创始人,文本挖掘组总负责人,包括文本审核系统的架构设计.开发和日常维护

文本分类的背景和流程

目前所说的文本分类是通过机器学习的方式对文本进行分类. 首先给出各类文本的样例,也就是训练集,然后程序会通过统计方法找出各类文本背后隐藏的统计规律,比如某类文本中某些词出现的次数比较多,然后对未知类别的文本进行判断. 具体可以分为以下流程: 1. 构建训练集:通过人工方式对原始文本进行标定,比如分为垃圾邮件和正常邮件.训练集中各类文本最好能偶达到数目平衡,避免出现某一类特别多,另外一类特别少的情况(如果出现了,可以通过一系列方法进行弥补,比如最简单的"向下取样法"或者"向上取

文本分类与SVM

之前做过一些文本挖掘的项目,比如网页分类.微博情感分析.用户评论挖掘,也曾经将libsvm进行包装,写了一个文本分类的开软软件Tmsvm.所以这里将之前做过一些关于文本分类的东西整理总结一下. 1 基础知识 1. 1 样本整理 文本分类属于有监督的学习,所以需要整理样本.根据业务需求,确定样本标签与数目,其中样本标签多为整数.在svm中其中如果为二分类,样本标签一般会设定为-1和1,而在朴素贝叶斯方法中,一般为0和1,但不是固定的,标签的设置和算法本身的性质有关的. 如下面的整理的样本,1为正类