我将spark与scala结合使用,并尝试将每个单词只包含字母的句子标记化。这是我的密码
def tokenization(extractedText: String): DataFrame = {
val existingSparkSession = SparkSession.builder().getOrCreate()
val textDataFrame = existingSparkSession.createDataFrame(Seq(
(0, extractedText))).toDF("id", "sentence")
val tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words")
val regexTokenizer = new RegexTokenizer()
.setInputCol("sentence")
.setOutputCol("words")
.setPattern("\\W")
val regexTokenized = regexTokenizer.transform(textDataFrame)
regexTokenized.select("sentence", "words").show(false)
return regexTokenized;
}
如果我在标记化后提供“我要去学校5”的感觉,它应该只有[我,正在,要去],应该放弃学校5。但以我目前的模式,它不会忽略单词中的数字。我该如何删除带数字的单词?
1条答案
按热度按时间mspsb9vt1#
您可以使用下面的设置来获得所需的标记化。基本上,您可以使用适当的regex模式提取只包含字母的单词。
因为我要
gaps
至false
,见文件:一种基于regex的标记器,通过使用提供的regex模式(用java方言)分割文本(默认)或重复匹配regex(如果gaps为false)来提取标记。可选参数还允许使用最小长度过滤令牌。它返回一个可以为空的字符串数组。
您希望重复匹配正则表达式,而不是用给定的正则表达式拆分文本。