aboutsummaryrefslogtreecommitdiff
path: root/mllib/src/main/scala/org
diff options
context:
space:
mode:
authorYuhao Yang <hhbyyh@gmail.com>2015-11-09 16:55:23 -0800
committerJoseph K. Bradley <joseph@databricks.com>2015-11-09 16:55:23 -0800
commit61f9c8711c79f35d67b0456155866da316b131d9 (patch)
treef8a120c315999ba1a459d8b2965b6a7646865df1 /mllib/src/main/scala/org
parent7dc9d8dba6c4bc655896b137062d896dec4ef64a (diff)
downloadspark-61f9c8711c79f35d67b0456155866da316b131d9.tar.gz
spark-61f9c8711c79f35d67b0456155866da316b131d9.tar.bz2
spark-61f9c8711c79f35d67b0456155866da316b131d9.zip
[SPARK-11069][ML] Add RegexTokenizer option to convert to lowercase
jira: https://issues.apache.org/jira/browse/SPARK-11069 quotes from jira: Tokenizer converts strings to lowercase automatically, but RegexTokenizer does not. It would be nice to add an option to RegexTokenizer to convert to lowercase. Proposal: call the Boolean Param "toLowercase" set default to false (so behavior does not change) Actually sklearn converts to lowercase before tokenizing too Author: Yuhao Yang <hhbyyh@gmail.com> Closes #9092 from hhbyyh/tokenLower.
Diffstat (limited to 'mllib/src/main/scala/org')
-rw-r--r--mllib/src/main/scala/org/apache/spark/ml/feature/Tokenizer.scala19
1 files changed, 17 insertions, 2 deletions
diff --git a/mllib/src/main/scala/org/apache/spark/ml/feature/Tokenizer.scala b/mllib/src/main/scala/org/apache/spark/ml/feature/Tokenizer.scala
index 248288ca73..1b82b40caa 100644
--- a/mllib/src/main/scala/org/apache/spark/ml/feature/Tokenizer.scala
+++ b/mllib/src/main/scala/org/apache/spark/ml/feature/Tokenizer.scala
@@ -100,10 +100,25 @@ class RegexTokenizer(override val uid: String)
/** @group getParam */
def getPattern: String = $(pattern)
- setDefault(minTokenLength -> 1, gaps -> true, pattern -> "\\s+")
+ /**
+ * Indicates whether to convert all characters to lowercase before tokenizing.
+ * Default: true
+ * @group param
+ */
+ final val toLowercase: BooleanParam = new BooleanParam(this, "toLowercase",
+ "whether to convert all characters to lowercase before tokenizing.")
+
+ /** @group setParam */
+ def setToLowercase(value: Boolean): this.type = set(toLowercase, value)
+
+ /** @group getParam */
+ def getToLowercase: Boolean = $(toLowercase)
+
+ setDefault(minTokenLength -> 1, gaps -> true, pattern -> "\\s+", toLowercase -> true)
- override protected def createTransformFunc: String => Seq[String] = { str =>
+ override protected def createTransformFunc: String => Seq[String] = { originStr =>
val re = $(pattern).r
+ val str = if ($(toLowercase)) originStr.toLowerCase() else originStr
val tokens = if ($(gaps)) re.split(str).toSeq else re.findAllIn(str).toSeq
val minLength = $(minTokenLength)
tokens.filter(_.length >= minLength)