Как убрать стоп-слова из текста при предварительной обработке искры
У меня есть требование предварительно обработать данные в искре перед запуском алгоритмов. Одна из логики предварительной обработки заключалась в удалении стоп-слов из текста. Я пробовал с искрой StopWordsRemover. StopWordsRemover требует ввода и вывода должен быть массив [String]. После запуска программы окончательный вывод столбца отображается как набор строк, мне потребуется простая строка.
Мой код выглядит следующим образом.
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.
- StopWordsRemover от SparkMlib
- Standford CoreNLP Library.
Какой из вариантов дает лучшую производительность при разборе огромных файлов.
Любая помощь приветствуется.
Заранее спасибо.
1 ответ
Вы можете использовать это, чтобы получить строку вместо массива строк - df.collect()[0]
- если вы уверены, что только первый пункт в ваших интересах.
Однако это не должно быть проблемой, если вы пересекаете массив и получаете каждый элемент там.
В конечном итоге HiveDF даст вам RDD[String] - и он станет Array[String], когда вы конвертируете из RDD.