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

作者: xcrossed | 来源:发表于2017-10-24 22:20 被阅读268次

    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位置

    相关文章

      网友评论

        本文标题:Spark MLlib机器学习开发指南(7)--特征转换--To

        本文链接:https://www.haomeiwen.com/subject/snqfpxtx.html