训练,顾名思义,就是training(汗,这解释),简单的说就是让计算机从给定的一堆文档中自己学习分类的规则(如果学不对的话,还要,打屁屁?)。
开始训练之前,再多说几句关于VSM这种文档表示模型的话。
举个例子,假设说把我正在写的“文本分类入门”系列文章的第二篇抽出来当作一个需要分类的文本,则可以用如下的向量来表示这个文本,以便于计算机理解和处理。
w2=(文本,5,统计学习,4,模型,0,……)
这个向量表示在w2所代表的文本中,“文本”这个词出现了5次(这个信息就叫做词频),“统计学习”这个词出现了4次,而“模型”这个词出现了0次,依此类推,后面的词没有列出。
而系列的第三篇文章可以表示为
w3=(文本,9,统计学习,4,模型,10,……)
其含义同上。如果还有更多的文档需要表示,我们都可以使用这种方式。
只通过观察w2和w3我们就可以看出实际上有更方便的表示文本向量的方法,那就是把所有文档都要用到的词从向量中抽离出来,形成共用的数据结构(也可以仍是向量的形式),这个数据结构就叫做词典,或者特征项集合。
例如我们的问题就可以抽离出一个词典向量
D=(文本,统计学习,模型,……)
所有的文档向量均可在参考这个词典向量的基础上简化成诸如
w2=(5,4,0,……)
w3=(9,4,10,……)
的形式,其含义没有改变。
5,4,10这些数字分别叫做各个词在某个文档中的权重,实际上单单使用词频作为权重并不多见,也不十分有用,更常见的做法是使用地球人都知道的TF/IDF值作为权重。(关于TF/IDF的详细解释,Google的吴军研究员写了非常通俗易懂的文章,发布于Google黑板报,链接地址是http://googlechinablog.com/2006/06/blog-post_27.html,有兴趣不妨一读)TF/IDF作为一个词对所属文档主题的贡献程度来说,是非常重要的度量标准,也是将文档转化为向量表示过程中的重要一环。
在这个转化过程中隐含了一个很严重的问题。注意看看词典向量D,你觉得它会有多大?或者说,你觉得它会包含多少个词?
假设我们的系统仅仅处理汉语文本,如果不做任何处理,这个词典向量会包含汉语中所有的词汇,我手头有一本商务印书馆出版的《现代汉语词典》第5版(2005年5月出版),其中收录了65,000个词,D大致也应该有这么大,也就是说,D是一个65,000维的向量,而所有的文本向量w2,w3,wn也全都是65,000维的!(这是文本分类这一问题本身的一个特性,称为“高维性”)想一想,大部分文章仅仅千余字,包含的词至多几百,为了表示这样一个文本,却要使用65,000维的向量,这是对存储资源和计算能力多大的浪费呀!(这又是文本分类问题的另一个特性,称为“向量稀疏性”,后面会专门有一章讨论这些特性,并指出解决的方法,至少是努力的方向)
中国是一个人口众多而资源稀少的国家,我们不提倡一味发展粗放型的经济,我们所需要的可持续发展是指资源消耗少,生产效率高,环境污染少……跑题了……
这么多的词汇当中,诸如“体育”,“经济”,“金融”,“处理器”等等,都是极其能够代表文章主题的,但另外很多词,像“我们”,“在”,“事情”,“里面”等等,在任何主题的文章中都很常见,根本无法指望通过这些词来对文本类别的归属作个判断。这一事实首先引发了对文本进行被称为“去停止词”的预处理步骤(对英文来说还有词根还原,但这些与训练阶段无关,不赘述,会在以后讲述中英文文本分类方法区别的章节中讨论),与此同时,我们也从词典向量D中把这些词去掉。
但经过停止词处理后剩下的词汇仍然太多,使用了太多的特征来表示文本,就是常说的特征集过大,不仅耗费计算资源,也因为会引起“过拟合问题”而影响分类效果[22]。
这个问题是训练阶段要解决的第一个问题,即如何选取那些最具代表性的词汇(更严格的说法应该是,那些最具代表性的特征,为了便于理解,可以把特征暂时当成词汇来想象)。对这个问题的解决,有人叫它特征提取,也有人叫它降维。
特征提取实际上有两大类方法。一类称为特征选择(Term Selection),指的是从原有的特征(那许多有用无用混在一起的词汇)中提取出少量的,具有代表性的特征,但特征的类型没有变化(原来是一堆词,特征提取后仍是一堆词,数量大大减少了而已)。另一类称为特征抽取(Term Extraction)的方法则有所不同,它从原有的特征中重构出新的特征(原来是一堆词,重构后变成了别的,例如LSI将其转为矩阵,文档生成模型将其转化为某个概率分布的一些参数),新的特征具有更强的代表性,并耗费更少的计算资源。(特征提取的各种算法会有专门章节讨论)
训练阶段,计算机根据训练集中的文档,使用特征提取找出最具代表性的词典向量(仍然是不太严格的说法),然后参照这个词典向量把这些训练集文档转化为向量表示,之后的所有运算便都使用这些向量进行,不再理会原始的文本形式的文档了(换言之,失宠了,后后)。
下一章继续训练,咱们之间还没完。(怎么听着像要找人寻仇似的)
<!-- 分页 -->
分享到:
相关推荐
- 可以通过训练特定的情感分类器实现。 **总结** 本教程旨在为初学者提供一个关于Python NLP的基础指南。通过以上内容的学习,读者可以了解到如何使用Python进行基本的文本处理、分词以及词频统计等操作,并对NLP...
在自然语言处理、生物信息学和语音识别等领域,经常需要对一系列观察到的数据进行标签序列的分配,例如,将自然语言文本中的每个词标记为相应的词性(Part-of-Speech, POS)。CRF在这里提供了一种强大而灵活的方法,...
- **项目选择**:可以从简单的文本分类、情感分析开始。 - **项目实施**:使用上述技术解决问题。 - **结果评估**:通过准确率、召回率等指标评估模型性能。 ##### 6. 持续学习 - **跟踪最新进展**:关注顶级学术...
1. **类别到序列**:例如文本分类,将一段文本映射到一个或多个预定义的类别。 2. **序列到类别**:如情感分析,通过分析文本序列预测其所属的情感类别。 3. **同步的序列到序列**:比如机器翻译,将一种语言的句子...
3. **词法分析**:介绍分词(Tokenization)、词性标注(Part-of-Speech Tagging)和命名实体识别(Named Entity Recognition),这些是处理文本的初步步骤,用于将连续的文本分解成有意义的单位。 4. **句法分析**...
在深度学习的基本过程中,模型训练通常包括前向传播和反向传播,用于优化权重参数以提高模型对文本数据的拟合程度。深度学习模型如循环神经网络(RNN)、长短时记忆网络(LSTM)和Transformer等在NLP任务中表现出色...
在NLTK中,数据集的集合被称为“Corpora”,它们是预处理过的文本集,可以用作分析和训练模型的数据源。例如,NLTK提供了一些经典的语料库,如莎士比亚的剧本、布朗语料库(Brown Corpus)等。而“Histogram”是指...
1. **文本预处理**:在进行NLP任务前,通常需要对原始文本进行清洗,去除无关字符、停用词和标点符号,转换为小写,进行词干提取和词形还原。例如,Python的nltk库提供了`word_tokenize`进行分词,`stopwords`模块...
1. **第1章**:通常会涵盖Python NLP的基础知识,包括Python编程基础、文本数据的基本操作,以及NLP领域常用的库介绍,如NLTK、jieba、spaCy和TextBlob等。 2. **第2章**:可能涉及文本预处理,这是NLP中的重要步骤...
通过学习这个资源,你可以掌握如何使用Python进行文本预处理、文本分类、情感分析、词性标注、实体识别等NLP任务,进一步提升你的NLP技能。记得解压文件并按照里面的指导逐步学习,同时结合实际项目进行实践,将理论...
研讨会可能涵盖从基础概念,如词性标注(Part-of-Speech tagging)、情感词汇表(Sentiment Lexicons)到更高级的技术,如机器学习模型(如朴素贝叶斯、支持向量机)的构建和训练,用于自动识别文本情感。...
这里的“监督式”意味着训练过程中需要有已标注的数据集作为指导,而“序列标注”则特指对于输入序列中的每个元素进行分类或标记的任务。 #### 描述解析 描述部分简短地重复了标题内容,并没有提供额外的信息。但从...
OpenNLP 包含了一系列用于处理文本数据的模块,如词性标注(Part-of-Speech tagging)、命名实体识别(Named Entity Recognition)、句子分割(Sentence Detection)、依存关系分析(Dependency Parsing)等。...
首先,我们来看看“任务Part1 Demo(html及css不含js代码)”。这部分主要是关于HTML和CSS的基础应用。HTML(超文本标记语言)是网页内容的结构框架,用于定义页面上的不同元素,如标题、段落、图像等。CSS(层叠样式...
这个项目的核心理念是降低编程的入门门槛,让编程变得更加亲切和易懂,尤其是对于那些母语非英语的开发者。 在Java编程世界中,这可能涉及到使用特定的库或框架来实现自然语言处理(NLP),以便将母语指令转化为可...
Visual C++MFC入门教程 目录 +-- 第一章 VC入门 |------ 1.1 如何学好VC |------ 1.2 理解Windows消息机制 |------ 1.3 利用Visual C++/MFC开发Windows程序的优势 |------ 1.4 利用MFC进行开发的通用方法介绍 |----...