From:http://blog.csdn.net/luowen3405/article/details/6305651
在进行文本分类时,毫无疑问会涉及到对文本数据进行预处理,包括文档切分、文本分词、去停用词(包括标点、数字、单字和其它一些无意义的词)、文本特征提取、词频统计、文本向量化等操作。下面就这几方面作一个概括性的介绍,具体的实现还有待慢慢的研究。
1. 文档切分
文档切分这个操作是可选的,取决于你获取到的文档集合的形式。如果你得到的文档集合本身就是一篇一篇文章分开的,那么这一步就可以省略了。反之,如果文档集合是一个单一的文件,所有的文章都存储在这个文件中,那么你就要将其中的文章提取出来单独存放在一个文件中,从而便于以后的操作。
一般来说,单一文件的文档集合中文章与文章之间都会使用一些标记来区分,比如用空行、特定符号等等。我做的课程作业中有一个人民日报语料库,语料库中文章与文章之间就是用空行来分隔的。
2. 文本分词
文本分词是预处理过程中必不可少的一个操作,因为后续的分类操作需要使用文本中的单词来表征文本。目前文本分词已经有很多比较成熟的算法和工具,在网上搜索一下就会发现很多。
文本分词包括两个主要步骤,第一个是词典的构造,第二个是分词算法的操作。
词典的构造目前比较流行的有字典树即标准trie树,字典树的构造有很多方法,本人博客中也有一篇用java实现字典树的博文,但是空间利用率和效率可能不是很高。目前比较不错(节约空间和效率)的构造方法有双数组trie树等。
分词算法有简单的有复杂的,常见的主要有正向最大匹配、反向最大匹配、双向最大匹配、语言模型方法、最短路径算法等等,这些算法在网上都可以找到详细的资料。
3. 去停用词
去停用词也是预处理过程中不可缺少的一部分,因为并不是文本中每一个单词或字符都能够表征这个文本,比如说“这个”、“的”、“一二三四”、“我 你 他”、“0 1 2 ……9”等等,那么这些词就应当从文本中清除掉。可以在网上下载一份中文的停用词表来作为去停用词的参考。
4. 文本特征提取
这个是文本分类过程中很重要的一部分,但是并不是必要的,当然最好有这一部分。我们不能肯定的说文本中的某一个单词就能100%表征这篇文档,只能说这个单词能以某种程度来表征这篇文档,这个程度具体衡量的标准就是概率。概率越大,说明这个单词越能表征这篇文档;反之则越不能表征这篇文档,当概率小到一个阀值(人为设定)的时候,这个单词就可以舍弃了(不能表征,要你何用呢)。
表征的概率目前有两种使用比较广泛的方法,一种是差方统计(这个概率越小越好),另一种是信息增益(这个概率越大越好)。两种方法都比较晦涩难懂,但是网上资料很多,多看看相关资料就会明白了。如果嫌这一步麻烦,大不了不做这一步了(摆平不了,咱撤还不行吗),当然这就要牺牲一点分类的准确率了,有时候可不是一点点哦。
5. 词频统计
这一步是必不可少的一个步骤。去停用词和文本特征提取之后,剩下的词是文本的精华所在了,这时就要涉及到另一个表征标准了---词频。显然,如果一个单词在文本中出现的频率很高,那么这个单词就越有可能(记住,只是可能而已,并不能肯定,这其中还涉及到一个反文档频率)表征这个文本。同时词频也是构造文本空间向量模型的必要元素,因此这一步至关重要。
词频统计方法也有很多成熟的方法,比如hash、改造的trie树等方法,搜搜更明白!
6. 文本向量化
进行如上操作以后,还差一步就会达到胜利的彼岸了,这个彼岸可不是分类完成,而是可以运用分类算法了。大都数分类算法都只适用于离散的数值类型,因此到目前为止预处理还差的最后一步就是将文本进行空间向量化,也就是用数学上的多维特征向量来表示一个文本。比如有如下两个文档:
d1 (A, B, C, D, E, F, G)
d2(C, E, F, G, A, B)
就已经表示成向量模型了,只不过括号内的每一维的值暂时用文档的特征词来表示了。那么我们应该将特征词转换成数值表示,这个数值就可以用概率来表示了。
概率的计算涉及两个方面,前面也说过,即特征单词在文档中出现的频率p(通常由该词在所属文档中出现的词频除以全部文档的特征词数),还有该词的反文档频率q(表示该词出现在多少个文本中的频率,如果一个单词在很多文档中出现的频率都很高,那么这个单词就太普遍了,不足以用来表征一篇文档)。那么某一维的表征概率值就是p和q的一个因式乘积,当然根据需要还有可能乘上另外一些影响因子。下面都简单介绍一下这两个概率是如何计算的:
特征词集合/文档 d1 d2 单词出现总数
A 2 1 3
B 2 2 4
C 2 1 3
D 1 0 1
E 4 3 7
F 2 1 3
G 2 2 4
文档单词总数 15 10 25
其中表格内面的数字表示特征单词在对应文档中出现的次数,下一步计算p并标准化(将数值映射到-1到1之间,以防止大值特征词对文本特征的控制,当然也可以便于后续的计算):
计算p值 d1 d2
A 0.08(2 / 25) 0.04
B 0.08 0.08
C 0.08 0.04
D 0.04 0.00
E 0.16 0.12
F 0.08 0.04
G 0.08 0.08
q的计算需要利用公式log((1+|D|)/|Dt|)(这是前人总结出来的,咱只是站在了他们的肩膀上),其中其中|D|表示文档总数,|Dt|表示包含特征词t的文档数量。例子的q值计算结果如下:
计算q值 ln
A 0.4
B 0.4
C 0.4
D 1.1
E 0.4
F 0.4
G 0.4
最后将p、q相乘得到每个文档的最终向量表示:
计算p值 d1 d2
A 0.032 0.016
B 0.032 0.032
C 0.032 0.016
D 0.044 0.000
E 0.064 0.048
F 0.032 0.016
G 0.032 0.032
那么最终就可以将d1和d2表示成如下的空间向量:
d1 = (0.032, 0.032, 0.032, 0.044, 0.064, 0.032, 0.032)
d2 = (0.016, 0.032, 0.016, 0.000, 0.048, 0.016, 0.032)
其中向量对应的维度特征变量为A,B,C,D,E,F,G
------------------------------------------------------------------------------------------------------------------------------
介绍完毕,虽然介绍得看起来很简单,但是事实上决非如此。实际上每一步都需要认真仔细的研究,找到最好的解决方法。
分享到:
相关推荐
简单的文本预处理程序,将输入文档去掉数字(不包含字母的字符串),去掉停用词,去掉标点符号,生成基本可用的词库(保留下的基本都是有意义的特征)。便于之后用支持向量机或者决策树等进行文本分类处理等。
已分类好的新闻文本数据,内含十个类别,财经、股票、教育、科技、社会、游戏等等,共约10W篇文本,是一个非常好的数据集。
2、数据集为电商真实商品评论数据,主要包括训练集data_train,测试集data_test ,经过预处理的训练集clean_data_train和中文停用词表stopwords.txt,可用于模型训练和测试,详细数据集介绍见商品评论情感数据说明...
基于Python开发的特征表达增强的恶意代码家族分类方法,内含完整源代码,数据集,数据预处理,特征提取,家族分类,可视界面 EFEMalwareClassification 基于特征表达增强的恶意代码家族分类方法,首先反编译恶意...
文本分类是NLP领域的较为容易的入门问题,本文记录我自己在做文本分类任务以及复现相关论文时的基本流程,绝大部分操作都使用了torch和torchtext两个库。 1. 文本数据预处理 首先数据存储在三个csv文件中,分别是...
文本预处理,先进行向量化,编程向量形式进行后期处理。本文是C++程序,实现文本向量化
有24000条新闻,共六个类别,直接用python3的pickle.load()该文件即可,是一个24000个元素的list,list的每个元素是一个tuple,tuple的第一个元素是与处理好的文本,第二个元素是对应的标签。
实验要求 ...语料库的数据预处理,包括文档建模,如去噪,分词,建立数据字典。 自行实现朴素贝叶斯,训练文本分类器。 对测试集的文本进行分类 对测试集的分类结果利用正确率和召回率进行分析评价。
对下载的IMDB数据集中的test和train分别进行预处理从而方便后续模型训练,代码为PreProcess.py。预处理主要包括:大小写转化、特殊字符处理、stopwords过滤、分词,最后将处理后的数据存储为CSV格式,以方便后续调试...
utils.py 数据处理部分,主要使用torchtext完成了数据的词典映射,pad,shuffle等操作。 run.py 包含了训练和验证代码,以及单句测试 data data文件夹从百度网盘下载,直接考入即可。 data_tag 过程中生成的文件,...
2、数据集为电商真实商品评论数据,主要包括训练集data_train,测试集data_test ,经过预处理的训练集clean_data_train和中文停用词表stopwords.txt,可用于模型训练和测试,详细数据集介绍见商品评论情感数据说明...
本系统采用深度学习中的卷积神经网络作为文本分类的方法之一,旨在将原始文本归类到预先设定的分类体系中。本方法包括 1)数据集预处理,包括数据集格式化、分词、去停用词、文本截取和补齐、构建词汇表等;2)模型...
语料库的数据预处理,包括文档建模,如去噪,分词,建立数据字典, 使用词袋模型或主题模型表达文档等; 注:使用主题模型,如LDA可以获得实验加分; 3. 选择分类算法(如朴素贝叶斯、SVM等),训练文本分类器,...
1、内容概要:资源主要包括:英文文本分类电影评论情感判别源码及数据集等文件。 标注的训练集:labeledTrainData.tsv...2、本资源适用于初学者学习文本分类使用,主要包括数据预处理、机器学习、文件的读取和写入等。
2、数据集为电商真实商品评论数据,主要包括训练集data_train,测试集data_test ,经过预处理的训练集clean_data_train,训练好的word2vec词向量模型w2v_model.pkl和中文停用词表stopwords.txt,可用于模型训练和...
这段代码是一个文本分类的应用,旨在对新闻文章进行分类。首先,它通过读取新闻文本数据并进行预处理,包括文本的小写化、去除标点符号、分词、去除停用词和词干提取。接着,利用TF-IDF向量化方法将文本转换为数值...
朴素贝叶斯文本分类器 将微博信息分类为正向情感和负向情感 类标签为表情符号 工程中包含源数据 数据预处理程序 具体使用方法参见readme
#### 数据预处理 要求训练集和测试集分开存储,对于中文的数据必须先分词,对分词后的词用空格符分开,并且将标签连接到每条数据的尾部,标签和句子用分隔符\分开。具体的如下: * 今天 的 天气 真好\积极 #### ...
文本分类作为自然语言处理中一个基本任务,在20世纪50年代就已经对其算法进行了研究,现在单标签文本分类算法已经...介绍了多标签文本分类的基本概念以及基本流程,包括数据集获取、文本预处理、模型训练和预测结果。