前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于DataFrame的StopWordsRemover处理

基于DataFrame的StopWordsRemover处理

作者头像
Spark学习技巧
发布2018-01-31 12:13:59
1K0
发布2018-01-31 12:13:59
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧

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”这些停用词语已被滤除。

代码语言:js
复制
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介绍

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浪尖聊大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档