Tokenizer

  Tokenization是一个将文本(如一个句子)转换为个体单元(如词)的处理过程。
一个简单的Tokenizer类就提供了这个功能。下面的例子展示了如何将句子转换为此序列。

  RegexTokenizer基于正则表达式匹配提供了更高级的断词(tokenization)。默认情况下,参数pattern(默认是\s+)作为分隔符,
用来切分输入文本。用户可以设置gaps参数为false用来表明正则参数pattern表示tokens而不是splitting gaps,这个类可以找到所有匹配的事件并作为结果返回。下面是调用的例子。

  1. import org.apache.spark.ml.feature.{RegexTokenizer, Tokenizer}
  2. val sentenceDataFrame = spark.createDataFrame(Seq(
  3. (0, "Hi I heard about Spark"),
  4. (1, "I wish Java could use case classes"),
  5. (2, "Logistic,regression,models,are,neat")
  6. )).toDF("label", "sentence")
  7. val tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words")
  8. val regexTokenizer = new RegexTokenizer()
  9. .setInputCol("sentence")
  10. .setOutputCol("words")
  11. .setPattern("\\W") // alternatively .setPattern("\\w+").setGaps(false)
  12. val tokenized = tokenizer.transform(sentenceDataFrame)
  13. tokenized.select("words", "label").take(3).foreach(println)
  14. val regexTokenized = regexTokenizer.transform(sentenceDataFrame)
  15. regexTokenized.select("words", "label").take(3).foreach(println)