Как убрать стоп-слова из текста при предварительной обработке искры

У меня есть требование предварительно обработать данные в искре перед запуском алгоритмов. Одна из логики предварительной обработки заключалась в удалении стоп-слов из текста. Я пробовал с искрой 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.

  1. StopWordsRemover от SparkMlib
  2. Standford CoreNLP Library.

Какой из вариантов дает лучшую производительность при разборе огромных файлов.

Любая помощь приветствуется.

Заранее спасибо.

1 ответ

Вы можете использовать это, чтобы получить строку вместо массива строк - df.collect()[0] - если вы уверены, что только первый пункт в ваших интересах.

Однако это не должно быть проблемой, если вы пересекаете массив и получаете каждый элемент там.

В конечном итоге HiveDF даст вам RDD[String] - и он станет Array[String], когда вы конвертируете из RDD.

Другие вопросы по тегам