首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R语言文本特征工程:词袋模型

作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。

Bag of words,中文译作词袋模型,即把文本的单词分开之后,统计每个单词出现的次数,然后作为该文本的特征表示。我们引用网上的一个图片来解释:

把原始文本转化为词袋模型的表示。Courtesy Zheng & Casari (2018)

下面我们会自己构造数据然后举一个实际例子,首先加载包:

实践操作

第一步,我们先手动创造一个数据集:

## # A tibble: 6x 3

## Document Category id

##

## 1 The sky is blue and beautiful. weather 1

## 2 Love this blue and beautiful sky! weather 2

## 3 The quick brown fox jumps over the lazy dog. animals 3

## 4 The brown fox is quick and the blue dog islazy! animals 4

## 5 The sky is very blue and the sky is verybeautiful today weather 5

## 6 The dog is lazy but the brown fox is quick! animals 6

词袋模型分词

因为这里有多个文本,因此要先根据文本分组,再来进行词袋模型分词。

去除停止词

中文里面有“的”、“了”等等不携带信息的词,而英文则有the/is等词,我们不希望把它们考虑进去,因此需要去掉。这里我们用包里面自带的停止词包,然后取出它们。

## Joining, by ="word"

观察与替换

现在让我们看看转化后的格式是什么样的。

## # A tibble: 27x 3

## idword n

##

## 1 1 beautiful 1

## 2 1 blue 1

## 3 1 sky 1

## 4 2 beautiful 1

## 5 2 blue 1

## 6 2 love 1

## 7 2 sky 1

## 8 3 brown 1

## 9 3 dog 1

## 10 3fox 1

## 11 3jumps 1

## 12 3lazy 1

## 13 3quick 1

## 14 4blue 1

## 15 4brown 1

## 16 4dog 1

## 17 4fox 1

## 18 4lazy 1

## 19 4quick 1

## 20 5sky 2

## 21 5beautiful 1

## 22 5 blue 1

## 23 6brown 1

## 24 6dog 1

## 25 6fox 1

## 26 6lazy 1

## 27 6quick 1

也许有时候你需要的是文档-词矩阵,那么好,我们来变形:

## # A tibble: 6x 11

## idbeautiful blue brown dog fox jumps lazy love quick sky

##

## 1 1 1 1 0 0 0 0 0 0 0 1

## 2 2 1 1 0 0 0 0 0 1 0 1

## 3 3 0 0 1 1 1 1 1 0 1 0

## 4 4 0 1 1 1 1 0 1 0 1 0

## 5 5 1 1 0 0 0 0 0 0 0 2

## 6 6 0 0 1 1 1 0 1 0 1 0

这样,我们就可以随心所欲地在R里面使用词袋模型了。不过真实的应用中,文档-词矩阵会特别大,我们可以用cast_dfm或cast_dtm函数把它变成一个稀疏矩阵,然后再处理。这取决于你后续要用什么分析,因为特定的文本包中具有特定的矩阵格式。词袋模型是典型的文本数据特征工程方法,可以不用,不能不会,因为它是后面n元模型、word2vec的基础。

回复爬虫爬虫三大案例实战

回复Python1小时破冰入门

回复数据挖掘R语言入门及数据挖掘

回复人工智能三个月入门人工智能

回复数据分析师数据分析师成长之路

回复机器学习机器学习的商业应用

回复数据科学数据科学实战

回复常用算法常用数据挖掘算法

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181222B0HAQC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券