我试图在apache spark中只选择标记化输出中的特定单词。基本上,我想要实现的是与Spark Mlib中的StopWordsRemover功能相反。对于Eg:
StopWordsRemover stopWords = new StopWordsRemover();
stopWords.setInputCol("BrokenDown");
stopWords.setOutputCol("Filtered");
stopWords.setStopWords(new String[]{"cashback","rs","minimum"});
Tokenizer tokenizer = new Tokenizer().setInputCol("DealDescription").setOutputCol("BrokenDown");
DataFrame dfTemp2 = tokenizer.transform(dfTemp1.select("Deals.MerchantName","Deals.DealDescription")
.filter(lower(col("DealDescription")).contains("cashback")));
上面的代码会过滤掉“返现”,“rs”,“最小”字样,但我想要的只是选择“这些”字词并删除其他不匹配的字词。
Spark版本:1.6.0
请建议。
答案 0 :(得分:0)
我能找到一种方法:
使用RegexTokenizer和setPattern()方法。
RegexTokenizer tokenizer = new RegexTokenizer().setInputCol("DealDescription").setOutputCol("BrokenDown")
.setGaps(false).setPattern("cashback|rs|minimum");
有了这个,我就可以选择单词' cashback',' rs'''最小'