【2】广义向量空间模型

来源:互联网 发布:c 函数定义数组长度 编辑:程序博客网 时间:2024/05/17 00:12

转自 NLP论坛 http://www.threedweb.cn/thread-1283-1-1.html

文本最流行的结构化表示就是向量空间模型,它把文本表示为一个向量,其中该向量的每个元素表示为文本中出现的单词。这会导致极高维的空间;通常,文本文档的集合中出现的每一个不同的字符串都是一个维度,包括常用英语词和其他类型字符串,如电子邮件地址和URL。对于合理大小的文本文件集合,向量很容易就包含数十万个元素。对于那些熟悉数据挖掘和机器学习的读者,向量空间模型可以被看作是一个传统的特征向量,其中的词和字符串代替更传统的数字功能。因此,这并不奇怪,许多文本挖掘解决方案,把文本存储为向量空间的表示,都可用于数据挖掘或机器学习算法。这些算法适用并扩展为有效处理高维空间的文本情况。

向量空间模型提出一个隐含的假设(称为bag-of-words假设),表示的词语在文档中的次序并不重要。这似乎是一个很大的假设,因为文本必须按特定的顺序来读取才能理解。对于许多文本挖掘任务,如文件分类或聚类,这种假设通常不是问题。出现在文件中(以任何顺序)词的集合通常对区分语义概念是足够的。文本挖掘算法的主要优势是它使用了文档中所有的词–主要关键词,以及一般文本的词汇。通常情况下,关键词本身并不能区分一个文件,反而二级字的使用模式提供了区别的特性。

虽然词袋的假设适用于许多任务,但它不是一个通用的解决方案。对于某些任务,如信息提取和自然语言处理,词的顺序是成功解决任务的关键。实体抽取(见第13章)和自然语言处理的突出特点是要考虑前面和后面的字来决定中心词的特性(例如,词性判断)。使用专门的算法和模型来处理序列问题,如有限状态机或条件随机场都用在这些情况下。

用于使用向量空间模型的另一个挑战是多义词的存在。这些是拼写相同,但具有不同的含义的词语。一个例子是词SAW,它可以是一个名词,描述的工具切割木材(例如,“I used a saw to cut down the tree”)或动词的过去时看到(如 “I saw the tree fall”)。幸运的是,多义词通常不会对文本挖掘算法的结果的原因有三个大的影响:

1,使用文档中的一个多义词的多种含义并不多见。
2,如果使用,多义词通常不用于该任务的最有意义的特征。
3,出现在文档中的单词通常是足够不同的使用情况之间进行区分(例如,词cut)。

文本预处理

其中一个文本挖掘的挑战是将非结构化和半结构化文本结构转化为向量空间模型。这之前,必须做任何先进的文本挖掘和分析完成的。在大多数文本挖掘任务中,文本预处理的步骤都是相同的,虽然其中的处理步骤选择取决于任务。基本步骤如下:

选择的文本的范围,以进行处理(文档,段落等)。

对于许多文本挖掘任务时,文本的范围是容易确定的。例如,电子邮件或呼叫记录可以把每封邮件自然转化为单一向量。但是,对于较长的文件需要决定是否使用整个文档或切分文档分成各节、段落或句子。选择适当的范围取决于文本挖掘任务的目标:对于分类或聚类的任务,往往适当范围可以是整个文档;对于情感分析,文档自动文摘,或信息检索,更小的文本单位,如段落或章节可能更合适。

Tokenize 分词

接下来的预处理步骤是把文本单元分解成单个的单词或标记。此过程可以采取多种形式,这取决于被分析的语言。就英语而言,直截了当的和有效的标记化的策略是使用空格和标点符号作为标记分隔符。这种策略是很容易实现,但也有一些情况下它可能不匹配所期望的行为。在首字母缩略词和缩写的情况下,使用一个无序向量空间和分离令牌上标点符号的组合将把缩写的不同部分放入不同的令牌。例如,“U.N.”(缩写为联合国)将被表征为单独标记“U”和“N”就失去了缩写词的含义。有两种方法来解决这个问题:智能标记化,试图以检测缩略语,避免拆分这些词,以及调整下游加工通过单独的标记器在转换为向量空间之前来处理这类缩写。

删除停用词(常用词)

对于许多文本挖掘任务,除去一些词语,诸如几乎出现每一个文档中,为了节省存储空间和加快加工是很有用的。这些常用词被称为“停用词”,除去这些词语的过程被称为“Stopping”。来自流行的开源文本挖掘库Lucene为例,有专门的模块去除停止字。几乎所有的文本挖掘软件Stopping被封装为通用的功能。停用词的去除可以不丢失信息,因为对于大多数的文本挖掘任务和算法,这些词对算法的最终结果影响不大。涉及的短语,如信息检索的文本挖掘任务,是个例外,因为如果一些词语被删除,短语就会失去意义。
停止字去除特殊情况是头部和“样板”信息的检测。例如,许多企业的邮件还包括在邮件的底部有一个冗长的法律免责声明。对于短信,很长的免责声明可以在执行任何类型的文本挖掘时,影响实际文本。以同样的方式,电子邮件标题信息,例如“标题”,“到”和“从”,如果不除去,可导致类似的结果。去除这种类型的文本依赖于它出现的情况。

词干提取(对于英文文本)

删除前缀和后缀正常化词语 - 比如,run,running, runs,其词干都是run。
词干提取是把相关词归结单一形式的过程。通常情况下,词干提取包括识别和去除前缀,后缀和名词不恰当的复数形式。
例如,一个典型的词干算法将walking,walks,walked,walker等等规范化为walk。对于许多文本挖掘任务,包括分类,聚类,或者搜索索引,由于词干提取算法缩小了维数并且按概念分组词语,导致了精度的改进。维数的降低改善了算法的效率。
其中最流行的词干提取算法,波特词干法,使用了一系列启发式规则转换词为其词干的形式(波特,1980)。这些规则进行了细化到现在被称为snowball stemmer。snowball stemmer用可在近20种不同的语言,Lucene搜索引擎索引的主要组件,由Apache software Foundation发布.与大多数文本应用一样,一般情况下效果很好,但在一些特殊情况下的,Porter Stemmer需要“查找字典”。例如,以y结尾的单词的词干为ability/abilit,但sky没了y就失去了意义。类似地,后缀-ly(如在quickly)通常可以除去,但对于词语如reply除去-ly是不恰当的。
词形还原是词干法更高级的形式,它试图根据核心概念或词元组词。词形还原使用两个环绕词和附加语法的上下文信息,如语音,以确定词元的一部分。因此,词形还原需要更多的信息才能精确执行。对于词语,如walk,词干和词形还原产生相同的结果。然而,对于词语meeting,同时有名词或动词的词性,词干产生了同一根meet,但词形还原为动词meet,并保持其名词形式为meeting。

拼写规范化

统一拼写错误和其他拼写变化成单一的标记。 。
拼错的单词可导致文本向量空间的不必要的扩展。在最近的一个涉及手工输入文本的项目中,我们发现超过50种不同的短语拼写“学习障碍”(图3.3)。有许多不同的方法来自动更正拼写。首先,基于字典的方法可以用来解决常见的拼写问题,如美式和英式英语(如color和colour)之间的差异。第二,模糊匹配算法,例如探测法,的Metaphone,或字符串编辑距离可以用来聚集具有相似的拼写单词。字符串哈希函数,如 Soundex 或 Metaphone 常被发现用于流行的数据库软件和文本挖掘软件。最后,如果这些方法还不够,词集群和概念扩展技术(参见第8章和第13章),可用于聚集在一起的基础上使用的拼写错误。这些方法也可以组合使用;例如,如果两个标记都用于相似的上下文中(词聚类),并且有很小的字符串编辑距离或类似的发音,那么它们可能是同一词的变种拼写。如果文本是清晰而且拼写错误是罕见的,可能不需要拼写规范化。对于凌乱的文本,从互联网上收集的文本,拼写规范化是非常重要的。

检测句子边界:标记句子的结束。

句子边界检测是分解整个文档,并转换成单独句子的过程。对于英文文本,它就是寻找像“。”“?”或 “!”的标点符号一样容易。然而,某些词语出现的缩写或缩写词的一部分(如前所述的符号化)。此外,报价通常会包含句子边界标点符号,但实际的句子还未结束。这些情况表明使用一些简单的启发式规则,可以正确识别大多数句子边界。为了达到近乎完美的(〜99%)的精度,可以使用统计分类技术。更多关于文本分类技术可以在第7章中看到。

标准化大小写(英文文本)

将文本转换为要么全部小写或全部大写。
大部分英文文本(和其他拉丁系语言)都是混合大小写的–即文本包含大写和小写字母。大写帮助人类读者区分名词和专有名词,并且对于自动算法也是有用的(参见命名实体提取的第9章)。但是在许多情况下,句首大写词 - 在句子的开头应被视为不同于在文档其他地方出现的同一小写词。在归一化的情况下,转换整个文档为全部小写或大写字符。

文本特征提取

 tf-idf

经过文本预处理,各个词标记必须被转换成适合于输入到文本挖掘算法的向量表示。该向量表示可以采取三种不同的形式:二元表示;整型的计数;浮点值的权重向量。下面是一个非常简单的例子,说明三种方法之间的差异。假设文本是以下三个文件的集合:

文件1:My dog ate my homework文件2:My cat ate the sandwich文件3:A dolphin ate the homework

这些文档向量空间包含15个标记,其中9个是不同的。这些术语在括号总计数按字母顺序排序:

a (1), ate (3), cat (1), dolphin (1), dog (1), homework (2), my (3), sandwich  (1), the (2).

二元和整型计数载体直接从标记(token)流来计算。文档中出现的词汇二元向量存储为1,而整型向量存储在文档中单词出现次数。

文件10,1,0,0,1,1,1,0,0(注意,尽管“my”出现了两次,在的句子中,二元向量仍然是“1”) 文件20,1,1,0,0,0,1,1,1 文件31,1,0,1,0,1,0,0,1 

这三个文件将如下所示整型计数向量:

文件10,1,0,0,1,1,2,0,0(请注意,“my”在句子中出现的两次)文件20,1,1,0,0,0,1,1,1 文件31,1,0,1,0,1,0,0,1

tfidf(t,d)=tf(t,d)idf(t)

tf(t,d)=id|d|{di=t}

idf(t)=log(|D||D|dDtd)

存储文本的权重向量,首先需要选择一个权重方案。最流行的方案是对TF-IDF权重的方法。TF-IDF代表词频–逆文档频率。词条的词频是词条出现在文档中的次数。在前面的例子中,在文件1的词频“my”是2,因为它在文档中出现了两次。词条的文档频率是包含给定条件的文档数量;对于“my”,在前三个文件集合中,也是2。这些值的公式下图所示。

TF-IDF的假设是,高频率词应该具有高权重,除非它也是高文档频率。“my”这个词在英语语言中是最经常出现的词汇之一。它经常发生在单一的文件中很多次,但也几乎也发生在每个文档中。这两种竞争的影响相互抵消,得到一个低的权重。

还有其他方法用于提取文本特征,后面再详细介绍

LSA

pLSA

LDA

其他

0 0
原创粉丝点击