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
------------------------------------------------------------------------------------------------------------------------------
介绍完毕,虽然介绍得看起来很简单,但是事实上决非如此。实际上每一步都需要认真仔细的研究,找到最好的解决方法。
分享到:
相关推荐
总结而言,信息检索和文本分类的流程涵盖了从数据预处理到模型应用的多个环节,每一步都对最终结果有着重要影响。通过深入理解这些概念和技术,可以有效提升信息检索系统的性能和文本分类的准确性。
简单的文本预处理程序,将输入文档去掉数字(不包含字母的字符串),去掉停用词,去掉标点符号,生成基本可用的词库(保留下的基本都是有意义的特征)。便于之后用支持向量机或者决策树等进行文本分类处理等。
在"Python-Keras文本深度学习数据预处理工具"中,我们主要探讨的是如何利用Keras库对文本数据进行预处理,以便更好地应用于深度学习任务,如文本分类、情感分析或自然语言生成。 1. **文本预处理的基本概念**: 在...
除了上述基本操作,数据预处理还包括标准化(z-score标准化或min-max标准化)、编码分类变量(如one-hot编码)、归一化、异常值检测与处理等。R语言中有很多库如`dplyr`、`tidyr`、`ggplot2`、`preprocessCore`等,...
在Python编程语言中,数据预处理是数据分析流程中至关重要的一步,它为后续的数据建模和洞察挖掘奠定基础。对于新手来说,理解并掌握数据预处理技能是成为合格的数据分析师或科学家的关键。以下是对给定的四个案例的...
数据预处理是人工智能和机器学习领域中的核心环节,它对模型的性能有着至关重要的影响。本资源包"数据预处理从入门到实战 基于 SQL 、R 、Python.zip"聚焦于如何通过SQL、R和Python进行有效且高效的数据预处理。以下...
例如,2000年A题中的DNA序列分类数据是以文本文档的形式提供的,需要提取特定类别的序列。在这种情况下,可能需要手动清理数据,去除不必要的字符,或者利用编程技巧(如MATLAB)将数据转换为可处理的矩阵或cell数组...
对文本数据的预处理进而运用LinerSVC进行模型训练对数据进行标签分类_对文本数据的预处理进而运用_Classification-analysis-of-data
"文本分类.py"则涉及到文本分类任务,可能使用了各种机器学习或深度学习模型,如朴素贝叶斯、支持向量机、卷积神经网络(CNN)或循环神经网络(RNN)。 总的来说,这个压缩包包含了一个完整的文本预处理和分析流程...
在人工智能和机器学习领域,数据预处理是至关重要的一步,尤其对于文本数据而言。这个"文本数据预处理小工具"提供了便捷的方式,帮助用户将文本序列高效地转换为数值矩阵和TF-IDF数值矩阵。接下来,我们将深入探讨...
在"svm文本处理的数据预处理过程"这个主题中,我们将深入探讨在使用SVM进行文本分类时的数据预处理方法。 首先,我们要理解文本数据的特性。文本通常包含大量的词汇和结构,这需要通过一系列处理步骤将其转化为可被...
《THUCNews新闻文本分类数据集详解》 THUCNews新闻文本分类数据集是一个广泛用于自然语言处理(NLP)领域,尤其是文本分类任务的重要资源。这个数据集包含了丰富的新闻内容,涵盖了体育、游戏等十个不同的类别,...
"数据采集和数据预处理" 数据采集是数据分析研究的重要步骤之一,主要用于实现对DSM分析研究中所需的电力供需、相关政策法规等原始数据、信息的多种途径采集。数据采集功能主要包括定时数据采集、随机采集、终端...
数据采集与预处理教案—使用 OpenRefine 进行数据预处理 本教案旨在使学生熟悉 OpenRefine 的相关基础知识,并学会使用 OpenRefine 完成“北京公交线路信息”数据的预处理。通过本教案,学生将掌握使用 OpenRefine ...
4. 数据预处理流程:一般包括数据清洗(处理缺失值、异常值)、数据转换(标准化、归一化)、特征选择(去除无关或冗余特征)、数据编码(对分类变量进行数值化)等步骤。在`PD_Pred_Demo_test02.ipynb`和`my_PD_...
已分类好的新闻文本数据,内含十个类别,财经、股票、教育、科技、社会、游戏等等,共约10W篇文本,是一个非常好的数据集。
通过数据清洗、数据变换、数据归约等步骤,数据预处理可优化数据质量,提高分类器的准确性和召回率。 数据预处理的流程包括数据集成、数据清洗、数据变换和数据归约。数据集成是将多个数据源合并成一个一致的数据...
### 数据预处理 #### 数据概述 数据是大数据分析的基础,对于数据的理解至关重要。在数据分析的初期阶段,我们首先需要了解数据的基本属性。 ##### 数据类型 数据类型是指在计算机科学中,用于表示数据的一种...
在数据预处理阶段,我们需要对数据进行清洗和转换,以便后续的建模和分析。在这个过程中,数据摘要、数据可视化和处理缺失值是关键环节。 首先,数据摘要提供了对数据集基本信息的理解。`pandas`库的`read_csv`函数...