从标记化输出中选择仅特定字[Spark]

时间:2016-10-14 05:56:14

标签: apache-spark tokenize

我试图在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

请建议。

1 个答案:

答案 0 :(得分:0)

我能找到一种方法:

使用RegexTokenizer和setPattern()方法。

RegexTokenizer tokenizer = new RegexTokenizer().setInputCol("DealDescription").setOutputCol("BrokenDown")
                                        .setGaps(false).setPattern("cashback|rs|minimum");

有了这个,我就可以选择单词' cashback',' rs'''最小'