从标记化输出 [Spark] 中仅选择特定单词
Selecting Only Specific Words from tokenized output [Spark]
我正在尝试 select 仅来自 apache spark 中标记化输出的特定单词。基本上,我想要实现的是与 Spark Mlib 中的 StopWordsRemover 功能相反。例如:
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")));
上面的代码过滤掉 'cashback','rs','minimum' 的单词,但是我想要的只是 select 只有 'these' 个单词并删除其他一切不匹配的。
Spark 版本:1.6.0
请多多指教。
我找到了一种方法来做到这一点:
使用了 RegexTokenizer 和 setPattern() 方法。
RegexTokenizer tokenizer = new RegexTokenizer().setInputCol("DealDescription").setOutputCol("BrokenDown")
.setGaps(false).setPattern("cashback|rs|minimum");
有了这个我可以 select 字 'cashback','rs','minimum'.
我正在尝试 select 仅来自 apache spark 中标记化输出的特定单词。基本上,我想要实现的是与 Spark Mlib 中的 StopWordsRemover 功能相反。例如:
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")));
上面的代码过滤掉 'cashback','rs','minimum' 的单词,但是我想要的只是 select 只有 'these' 个单词并删除其他一切不匹配的。
Spark 版本:1.6.0
请多多指教。
我找到了一种方法来做到这一点:
使用了 RegexTokenizer 和 setPattern() 方法。
RegexTokenizer tokenizer = new RegexTokenizer().setInputCol("DealDescription").setOutputCol("BrokenDown")
.setGaps(false).setPattern("cashback|rs|minimum");
有了这个我可以 select 字 'cashback','rs','minimum'.