基于DataFrame的StopWordsRemover处理

stopwords简单来说是指在一种语言中广泛使用的词。在各种需要处理文本的地方,我们对这些停止词做出一些特殊处理,以方便我们更关注在更重要的一些词上。

对于不同类型的需求而言,对停止词的处理是不同的。

1. 有监督的机器学习 – 将停止词从特征空间剔除

2. 聚类– 降低停止词的权重

3. 信息检索– 不对停止词做索引

4. 自动摘要- 计分时不处理停止词

对于不同语言,停止词的类型都可能有出入,但是一般而言有这简单的三类

1. 限定词

2. 并列连词

3. 介词

停止词的词表一般不需要自己制作,有很多可选项可以自己下载选用。

Spark中提供了StopWordsRemover类处理停止词,它可以用作Machine learning Pipeline的一部分。

StopWordsRemover的功能是直接移除所有停用词(stopword),所有从inputCol输入的量都会被它检查,然后再outputCol中,这些停止词都会去掉了。

默认的话会在构建StopWordsRemover对象的时候调用loadDefaultStopWords(language: String): Array[String]加载/org/apache/spark/ml/feature/stopwords/english.txt

这是一个简单的停止词表,包含181个词(spark2.2)。

默认还提供了其他几种语言(danish, dutch, english, finnish, french, german, hungarian,italian, norwegian, portuguese, russian, spanish, swedish, turkish)的停止词,遗憾的是没有中文默认停止词表,所以对于中文停止词需要自己提供。

假如我们有个dataframe,有两列:id和raw。

Id

Raw

0

[I, saw, the, red, baloon]

1

[Mary, had, a, little, lamb]

Raw列作为StopWordsRemover的输出,filtered作为输出列,会得到如下数据:

Id

Raw

Filtered

0

[I, saw, the, red, baloon]

[saw, red, baloon]

1

[Mary, had, a, little, lamb]

[Mary, little, lamb]

在这里filtered,“I”,“the”,“had”和“a”这些停用词语已被滤除。

import org.apache.spark.ml.feature.StopWordsRemover
// $example on$
val remover = new StopWordsRemover().setInputCol("raw").setOutputCol("filtered")

val dataSet = spark.createDataFrame(Seq(
  (0, Seq("I", "saw", "the", "red", "balloon")),
 (1, Seq("Mary", "had", "a", "little", "lamb"))
)).toDF("id", "raw")

remover.transform(dataSet).show(false)

StopWordsRemover的常用API介绍

原文发布于微信公众号 - Spark学习技巧(bigdatatip)

原文发表时间:2017-12-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葬爱家族

Android高级动画(3)

上一篇文章我们讲了Android中的矢量动画,虽然文中展示的Demo并不多,但是相信大家还是体会到了矢量动画的强大。这里再做一个温故总结:

18810
来自专栏性能与架构

将 Redis 作为图数据库

1. 简介 Redis 在 4.0 中正式支持了Module模块系统,使其可以进行丰富的扩展 图数据库的应用越来越广泛,RedisGraph 就是一个 Redi...

47560
来自专栏前端杂货铺

不要使用浏览器嗅探,尽量使用特性检测和特性模拟

平淡的描述   在js中,能使用特征监测就尽量不要使用浏览器嗅探。嗅探浏览器目的是判断可否使用这个对象或者API,但是抛开浏览器 的各个版本的userAgent...

31250
来自专栏章鱼的慢慢技术路

CodeCombat森林关卡Python代码

22130
来自专栏牛客网

新鲜出炉的百度-春招-前端面经

1. 自我介绍 2. 项目经验,我说项目名说错了,然后又说了一遍,面试官不知道什么心态的鬼魅一下 3. Html5不同于以前版本的特点 4. Html5新增ap...

388110
来自专栏非典型技术宅

Quartz2D进行渲染1. 渲染模式2. even-odd rule:奇偶填充规则3. nonzero winding number rule:非零绕数规则4. 其他会用到的渲染模式5. 混合模式

14430
来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

用最简单的方式在C#中使用多线程加速耗时的图像处理算法的执行(多核机器)。

     图像处理中,有很多算法由于其内在的复杂性是天然的耗时大户,加之图像本身蕴涵的数据量比一般的对象就大,因此,针对这类算法,执行速度的提在很大程度上依赖于...

1.1K60
来自专栏流媒体人生

mpg文件切片之后,不能播放问题分析

对于大部分mpg文件切片都能正常播放,而少部分mpg切片之后只有第一个切片能播放,后续的切片视频播放均失败,只能播放视频。

10220
来自专栏阿凯的Excel

让你的Excel表动起来!!!

本次是第二次分享广大网友向我提问的经典问题。 本周问题,利用名称管理器完成二维表的匹配返回!让你的表格动起来! 话说!本次解决方案相对复杂,能看明白并且自己会...

31040
来自专栏hightopo

基于 HTML5 WebGL 的 3D 网络拓扑图

20530

扫码关注云+社区

领取腾讯云代金券