为了账号安全,请及时绑定邮箱和手机立即绑定

Spark MLlib机器学习开发指南(7)--特征转换--Tokenizer

标签:
Spark

Spark MLlib机器学习开发指南(7)--特征转换--Tokenizer

翻译自Tokenizer,基于最新2.2.0版本翻译,转载注明出处 xcrossed 机器学习

Tokenizer

Tokenization(这个可以翻译成标记,或者分词)是一个接受文本(通常是句子)输入,然后切分成词汇(通常是单词)。Tokenizer类可以提供这个功能。下面的示例展示了将句子切分成单词序列。

RegexTokenizer(可以翻译成正则化分词器或者正则化标记)基于正则表达式匹配提供了更多高级的分词功能。默认情况下,使用空格作为分隔符来分陋输入的文本。或者,用户可以将gaps参数设置为false,表明使用正则表达式匹配标记,而不是使用分隔符,并找到所有匹配到标记结果。

详细API参考Tokenizer Scala docsRegexTokenizer Scala docs

Examples

import org.apache.spark.ml.feature.{RegexTokenizer, Tokenizer}import org.apache.spark.sql.functions._val sentenceDataFrame = spark.createDataFrame(Seq(
  (0, "Hi I heard about Spark"),
  (1, "I wish Java could use case classes"),
  (2, "Logistic,regression,models,are,neat")
)).toDF("id", "sentence")val tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words")val regexTokenizer = new RegexTokenizer()
  .setInputCol("sentence")
  .setOutputCol("words")
  .setPattern("\\W") // alternatively .setPattern("\\w+").setGaps(false)val countTokens = udf { (words: Seq[String]) => words.length }val tokenized = tokenizer.transform(sentenceDataFrame)
tokenized.select("sentence", "words")
    .withColumn("tokens", countTokens(col("words"))).show(false)val regexTokenized = regexTokenizer.transform(sentenceDataFrame)
regexTokenized.select("sentence", "words")
    .withColumn("tokens", countTokens(col("words"))).show(false)

完整代码在spark仓库的examples/src/main/scala/org/apache/spark/examples/ml/TokenizerExample.scala位置



作者:xcrossed
链接:https://www.jianshu.com/p/525ec416e5d3


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
46
获赞与收藏
144

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消