您当前的位置: 首页 > 

宝哥大数据

暂无认证

  • 0浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

分词器

宝哥大数据 发布时间:2019-05-29 22:45:09 ,浏览量:0

分词器(Tokenization)将文本划分为独立个体(通常为单词)。

package org.apache.spark.examples.ml

import org.apache.spark.ml.feature.{RegexTokenizer, Tokenizer}
import org.apache.spark.sql.functions._
import org.apache.spark.sql.SparkSession

object TokenizerExample {
    def main(args: Array[String]): Unit = {
        val spark = SparkSession
                .builder
                .master("local[*]")
                .appName("TokenizerExample")
                .getOrCreate()

        // $example on$
        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 countTokens = udf { (words: Seq[String]) => words.length }

        // 分词器
        val tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words")
        val tokenized = tokenizer.transform(sentenceDataFrame)
        tokenized.select("sentence", "words")
                .withColumn("tokens", countTokens(col("words"))).show(false)

        // 正则分词器
        val regexTokenizer = new RegexTokenizer()
                .setInputCol("sentence")
                .setOutputCol("words")
                .setPattern("\\W") // alternatively .setPattern("\\w+").setGaps(false)
        val regexTokenized = regexTokenizer.transform(sentenceDataFrame)
        regexTokenized.select("sentence", "words")
                .withColumn("tokens", countTokens(col("words"))).show(false)

        spark.stop()
    }
}


关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0392s