从标记化输出 [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'.