词袋模型的通俗介绍

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud



所谓的词袋(Bag-of-words)模型是一种用机器学习算法对文本进行建模时表示文本数据的方法。

在本教程中,你将了解到自然语言处理中的特征抽取方法。

完成本教程后,你将知道:

1.什么是词袋(Bag-of-words)模型,以及为什么需要用它来表示文本。

2.如何为一组文档开发一个词袋(Bag-of-word)模型。

3.如何使用不同的技术准备词汇和单词。

教程概述

本教程分为6部分; 它们是:

1、文本问题。

2、什么是词袋(Bag-of-Words)?

3、Bag-of-Words模型的例子。

4、管理词汇(managing vocabulary)。

5、得分词(scoring words)

6、词袋(Bag-of-Words)的局限。

1、文本问题

机器学习这样的技术比较喜欢被定义好的固定长度的输入和输出,因此不固定输入输出是文本建模的一个问题。

机器学习算法不能直接处理原始文本,文本必须转换成数字。具体来说,是数字的向量。

“在语言处理中,向量x是由文本数据派生而来的,以反映文本的各种语言属性。”在自然语言处理中神经网络方法,2017年。

这被称为特征提取或特征编码。这是一种流行的、简单的文本数据提取方法被称为文本的词汇模型。

2、什么是词袋(Bag-of-Words)?

一个简单的词袋模型(BOW),是一种使用机器学习算法。从文本中提取特征的方法。该方法非常简单和灵活,可以用于从文档中提取各种功能的各种方法。词袋(Bag-of-words)是描述文档中单词出现的文本的一种表示形式。它涉及两件方面:

1.已知词汇的集合。

2.测试已知单词的存在。

因为文档中单词是以没有逻辑的顺序的放置,所以称为单词的“袋子”。该模型只关注文档中是否出现已知的单词,并不关注文档中的出现的单词。

“bag-of-words方法(BOW)是句子和文件的一个非常常见的特征提取程序。在这种方法中,我们查看文本中单词的直方图,也就是将每个单词计数作为一个特性。”- 自然语言处理中的神经网络方法,2017。

词袋(bag-of-words)可以像你喜欢的那样简单或复杂。其复杂性在于决定如何设计已知单词(或令牌)的词汇量以及如何统计已知单词的存在。

接下来我们将仔细研究这两个问题。

3、词袋(Bag-of-Words)模型的例子

让我们用一个有效的例子来制作一个词袋(bag-of-words)模型。

步骤1:收集数据

以下是Gutenberg项目中Charles Dickens的《双城记》一书中的前几行文字。

“It was the best of times,
it was the worst of times,
it was the age of wisdom,
it was the age of foolishness,”

对于这个小示例,我们将每一行视为一个单独的“文档”,将4行视为整个文档。

步骤2:设计词汇

现在我们可以列出我们的模型词汇表中的所有单词:

•   
“it”

•   
“was”

•   
“the”

•   
“best”

•   
“of”

•   
“times”

•   
“worst”

•   
“age”

•   
“wisdom”

•   
“foolishness”

这是一个由包括24个词组成的语料库中其中包含10个词汇。

步骤3:创建文档向量

下一步是在每个文档中记录单词。目的是将自由文本的每个文档转换为一个文本向量,这样我们就可以将其用作机器学习模型的输入或输出。

因为我们知道词汇有10,所以我们可以使用固定长度为10的文档,来表示向量中的每一个单词的位置。

最简单的设计方法是将单词的存在标记为布尔值,0表示缺席,1表示存在。使用我们的词汇表中列出的任意顺序排列,我们可以通过第一个文档(“It was
the best of times”),并将其转换为二进制向量。

该文件的评分如下所示:

·                 
“it” = 1

·                 
“was” = 1

·                 
“the” = 1

·                 
“best” = 1

·                 
“of” = 1

·                 
“times” = 1

·                 
“worst” = 0

·                 
“age” = 0

·                 
“wisdom” = 0

·                 
“foolishness” = 0

作为二进制向量,如下所示:

[1, 1, 1, 1, 1, 1, 0, 0, 0, 0]

其他三份文档如下:

"it was the worst of times" = [1, 1, 1, 0, 1, 1, 1, 0, 0, 0]
"it was the age of wisdom" = [1, 1, 1, 0, 1, 0, 0, 1, 1, 0]
"it was the age of foolishness" = [1, 1, 1, 0, 1, 0, 0, 1, 0, 1]

这些传统的文档式词的所有排序都被丢弃了,我们可以用这种通用的方法来从我们语料库中的任何文档来提取特征,进而可以用于建模。但可能包含新的词汇,但仍然可以进行编码,其中只有已知单词的出现被统计,而未知单词将被忽略。

你可以想到这种方式将如何自然的扩展到更大型的文档。

4、词汇管理(Managing Vocabulary)

随着词汇量的增加,文档的向量表示也将随之增加。在前面的示例中,文档向量的长度等于已知单词的数量。你可以想象,对于一个非常大的语料库,比如成千上万的词汇量,向量的长度可能达到成千上万。此外,每个单一的文档可能包含词汇中已知的词汇量很少。

这就产生了很多零向量,称为稀疏向量(sparse vector)稀疏表示(sparse representation)

稀疏向量在建模时需要更多的内存和计算资源,大量的位置或维度使建模过程使用传统算法非常具有挑战性。

因此,当使用词袋(bag-of-words)模型时可以迫使其减小词汇量的大小。

当然,也有一些简单的文本清理技术可以作为第一步,如:

•   
忽视案例。

•   
忽略标点符号。

•   
忽略没有太多信息的频繁单词(又被称为停止词),如“a”,“of”等。

•   
修正拼错的单词。

•   
使用词干算法减少词语(例如“播放”)。

一种更复杂的方法是创建分组单词的词汇表。这两者都改变了词汇表的范围,并允许词袋(bag-of-words)从文档中获取更多的意义。

在这种方法中,每个单词或标记被称为“gram”。创建两个词对的词汇又被称为二元模型(bigarm)。再次,只有出现在语料库中的bigarm,而非所有的bigram都能被称为二元模型。

一个N-gram是一个N符号的单词序列:一个2-gram(更常称为二进制)是一个两个字的序列,如“please turn”,“turn your”或“your homework”,一个3-gram(更通常称为三元组)是一个三个字的序列,如“please turn your”或“turn your homework”。-语音和语言处理,2009。

例如,上一节的第一行文字中的双字:“It
was the best of time”如下:

•   
“it was”

•   
“was the”

•   
“the best”

•   
“best of”

•   
“of time”

•   
然后,词汇跟踪三元组的单词称为三元模型,通用方法称为n-gram模型,其中n表示分组单词的数量。

通常,简单的二元组方法比用于文档分类的任务的1-gram 词袋(bag-of-words)模型简单的多。

“一个bag-of-bigrams表示比词袋(bag-of-words)更强大,在许多情况下该观点难以被推翻。”-,自然语言处理中的神经网络方法,2017。

5、词的统计

一旦选择了词汇表,就需要对示例文档中的单词进行统计。在上面的例子中,我们已经看到一个非常简单的评分方法:用二进制来表示单词的存在或不存在。

其他一些的简单评分方法包括:

•   
计数:计算每个单词在文档中出现的次数。

•   
频率:在文档中的所有单词中计算每个单词在文档中出现的频率。

(1)散列词(Word Hashing

从计算机科学来看,一个哈希函数是将数据映射到一个固定大小的数字的数学。例如,我们在哈希表中使用它们,在编程时,可能会将名称转换为数字,以便快速查找。

我们可以在我们的词汇表中使用已知单词的散列表示。这解决了对大型文本语料库非常大的问题,因为我们可以选择散列空间的大小,也可以完成文档的向量表示。

在目标散列空间中,对相同的整数索引进行散列处理。然后可以用二进制的分数或计数来得分。

这被称为“哈希技巧(hash trick)”“特征散列(feature hashing)”。而其所面对的挑战在于选择一个散列空间来容纳所选的词汇表大小,将冲突的可能性和交换的稀疏性最小化。

(2)TF-IDF

词频统计的问题是,在整片文档中的高频率单词虽然占主导地位,但是可能只是在特定领域的单词包含着少量信息内容,整体不会包含很多的“信息内容”。

一种方法是通过在所有文档中单词出现的频率来重新调整单词出现的频率,以便对所有文档中频繁出现的频繁单词(如the)的分数带来坏的影响。

这种统计方法称为术语频率 - 逆文档频率,简称为TF-IDF,其中:

•   
术语频率:是本文档中单词频率的得分。

•   
逆文档频率:是在文档中罕见单词的得分。

分数是一个权衡的结果,不是所有的词都同样重要或有用。分数具有在给定文档中突出显示不同的单词(包含有用信息)的效果。

“因此,一个罕见的术语的idf是高的,而一个频繁的术语的idf可能很低。”——“信息检索简介”,2008年。

6、词袋(Bag-of-words)的限制

词袋(Bag-of-words)模型非常易于理解和实施,并为定制特定的文本数据提供了很大的灵活性。

它在语言建模和文档分类等预测问题上取得了很大的成功。

然而,它有一些缺点,比如:

•   
词汇:词汇需要仔细的设计,特别是为了管理文档的大小,这会影响文档表示的稀疏性。

•   
稀疏性:由于计算的原因(空间和时间复杂性)以及信息的原因,稀疏表示更难模拟,因为模型在如此庞大的代表空间中利用这么少的信息面临着巨大挑战。

•   
含义:丢弃词序忽略了上下文,进而又影响在文档中的词语的意义(语义)。上下文和意义可以提供很多模型,如果模型可以区分相同的单词不同的排列(“这是有趣的”vs“这是有趣的”),同义词(“旧自行车”vs“二手自行车”)。

相关资料:

1.维基百科上的词袋模型

2.维基百科上的N-gram

3.tf-idf在维基百科解释

总结

在本教程中,你发现了使用文本数据进行特征提取的词袋模型。

具体来说,你学到了:

•   
词袋模型是什么,为什么我们需要它。

•   
如何通过应用一个词袋的模型来处理文档的集合。

本文由北邮@爱可可-爱生活 老师推荐,阿里云组织翻译。

文章原标题《A Gentle Introduction to the Bag-of-Words
Model》

作者:Jason Brownlee  

译者:乌拉乌拉,审校:袁虎。

文章为简译,更为详细的内容,请查看原文文章

时间: 2024-11-03 21:06:12

词袋模型的通俗介绍的相关文章

深度学习必备手册(上)

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 请收下这份关于人工智能的根目录--博客整理系列(一) 关于数据科学的那些事--博客整理系列(二) 机器学习必备手册--博客整理系列(三) 扩展眼界的都在这--博客整理系列(四) 深度学习必备手册--博客整理系列(六) 深度学习的概念源于人工神经网络的研究,如果追溯深度学习的概念还是要回到2006年Hinton那篇论文,基于深信度网(DNB)提出非监督贪心逐层训练算法,未解决深层结构相关的优化难题出现的论文.

(转) SLAM系统的研究点介绍 与 Kinect视觉SLAM技术介绍

      首页 视界智尚 算法技术 每日技术 来打我呀 注册     SLAM系统的研究点介绍          本文主要谈谈SLAM中的各个研究点,为研究生们(应该是博客的多数读者吧)作一个提纲挈领的摘要.然后,我们再就各个小问题,讲讲经典的算法与分类. 1. 前言         在<SLAM for Dummy>中,有一句话说的好:"SLAM并不是一种算法,而是一个概念.(SLAM is more like a concept than a single algorithm.

站长必备工具推荐之搜索词排名

好的站长工具总能更好的提高站长的工作效率,特别现在很多站长最常用的推广方式都是SEO.一些SEO相关的站长工具,总是站长们最热衷的.今天跟大家分享的这款站长工具就是和SEO工作紧密相关的,相信会成为SEO工作者的最爱. 2年前就想到这样的站长工具 第一次在百度统计上看到"搜索词排名"站长工具的时候,让我挺有感触的.因为在09年的时候,有个酷讯的老同事找我出去吃饭聊天.他是技术出身,准备自己创业,想做套SEO工具.知道我也涉及这方面的工作,因此向我做用户调查,了解下做SEO人员到底需要什

两个小例子带你词嵌入层学习入门——Keras版

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 词嵌入提供了词的密集表示及其相对含义.最简单的理解就是:将词进行向量化表示,实体的抽象成了数学描述,就可以进行建模了.它们是对较简单的单词模型表示中使用的稀疏表示的改进. Word嵌入可以从文本数据中学习,并在项目之间重用.它们也可以作为在文本数据上拟合神经网络的一部分. 在本教程中,你将学到如何使用Python与Keras来学习词嵌入. 完成本教程后,你将学会: ·         关于词嵌入的相关介绍,并

牟长青:搜索词排名功能 精准省时的实用工具

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 好的站长工具总能更好的提高站长的工作效率,特别现在很多站长最常用的推广方式都是SEO.一些SEO相关的站长工具,总是站长们最热衷的.今天跟大家分享的这款站长工具就是和SEO工作紧密相关的,相信会成为SEO工作者的最爱. 2年前就想到这样的站长工具 2年前与老同事闲聊时,被问及SEO人员最需要但目前没有开发出来的站长工具.我联想到自己每天打开电

网络营销入门之通俗篇(全文)

中介交易 SEO诊断 淘宝客 云主机 技术大厅 本人对于电脑.网络还属于半文盲阶段,所以也只能以通俗地方法将自己网络营销的心得.所知所闻与大家共享.通俗介绍,概述而已,仁者见仁,智者见智,更欢迎高手对本文点评. 一.网站建立: (一) 网站.域名:在网络上经销极应有自己的网站,而网站的域名则需要购买.阿里巴巴这一点做的很好,凡是诚信通会员都赠送一个独立域名的网站.例如阿里巴巴送我的网站域名:www.dyestuff.net.cn(正在建设中).通俗讲,域名既是自己的网站在互联网上的地址.门牌号.

自然语言处理技术(NLP)在推荐系统中的应用

个性化推荐是大数据时代不可或缺的技术,在电商.信息分发.计算广告.互联网金融等领域都起着重要的作用.具体来讲,个性化推荐在流量高效利用.信息高效分发.提升用户体验.长尾物品挖掘等方面均起着核心作用.在推荐系统中经常需要处理各种文本类数据,例如商品描述.新闻资讯.用户留言等等.具体来讲,我们需要使用文本数据完成以下任务: 候选商品召回.候选商品召回是推荐流程的第一步,用来生成待推荐的物品集合.这部分的核心操作是根据各种不同的推荐算法来获取到对应的物品集合.而文本类数据就是很重要的一类召回算法,具有

综述 | 一文读懂自然语言处理NLP(附学习资料)

前言 自然语言处理是文本挖掘的研究领域之一,是人工智能和语言学领域的分支学科.在此领域中探讨如何处理及运用自然语言. 对于自然语言处理的发展历程,可以从哲学中的经验主义和理性主义说起.基于统计的自然语言处理是哲学中的经验主义,基于规则的自然语言处理是哲学中的理性主义.在哲学领域中经验主义与理性主义的斗争一直是此消彼长,这种矛盾与斗争也反映在具体科学上,如自然语言处理. 早期的自然语言处理具有鲜明的经验主义色彩.如 1913 年马尔科夫提出马尔科夫随机过程与马尔科夫模型的基础就是"手工查频&quo

神经网络和机器学习基础入门分享

         最近在做知识图谱实体对齐和属性对齐中,简单用了下Word2vec谷歌开源代码.Word2vec是一个将单词表征成向量的形式,它可以把文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度.         Word2vec采用CBOW(Continuous Bag-Of-Words Model,连续词袋模型)和Skip-Gram(Continuous Skip-GramModel)两种模型,涉及到神经网络和深度学习的一些知识.故这周给学弟和