0

アルゴリズムを実行する前にsparkのデータを前処理する必要があります。 前処理ロジックの1つは、ストップワードをテキストから削除することでした。私はスパークStopWordsRemoverで試してみました。 StopWordsRemoverは入力と出力がArray [String]である必要があります。プログラムを実行した後、最終的な列の出力は文字列のコレクションとして表示されます。プレーンな文字列が必要です。sparkの前処理でテキストからストップワードを削除する方法

マイコードは次のとおりです。

val tokenizer: RegexTokenizer = new RegexTokenizer().setInputCol("raw").setOutputCol("token") 
val stopWordsRemover = new StopWordsRemover().setInputCol("token").setOutputCol("final") 
stopWordsRemover.setStopWords(stopWordsRemover.getStopWords ++ customizedStopWords) 
val tokenized: DataFrame = tokenizer.transform(hiveDF) 
val transformDF = stopWordsRemover.transform(tokenized) 

実際の出力

["rt messy support need help with bill"] 

必要な出力:

rt messy support need help with bill 

私の出力が文字列のようなものではなく、文字列の配列としてすべきです。これを行う方法はありますか?私は文字列としてデータフレーム内の列の出力を必要とします。

また、sparkプログラムのテキストからストップワードを削除するには、以下のオプションについての提案が必要です。

  1. SparkMlib
  2. スタンフォードCoreNLPライブラリからStopWordsRemover。

巨大なファイルを解析するときにパフォーマンスが向上するオプションはどれですか。

助けてください。

ありがとうございます。

答えて

0

最初の項目だけがあなたの興味を引くのであれば、配列の代わりに文字列を取得するために - df.collect()[0]を使用することができます。

ただし、配列を走査して各項目を取得する限り、ここで問題はありません。

最終的にHiveDFはRDD [String]を提供し、RDDから変換するとArray [String]になります。

関連する問題