Отфильтруйте все нормализованные слова из столбца данных PySpark. - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть столбец предложений в кадре данных PySpark с нормализованным текстом, например:

{product} {number} {number} был куплен {date} и возвращен

Нормализованный текст помечен {}, как {число} или {дата}

Мне нужно отбросить все нормализованные слова, чтобы предложение выглядело так:

был куплен и возвращен

Есть предложения?

Начал писать, но потом застрял:

data.filter (data.sentence.contains ('{'))

1 Ответ

0 голосов
/ 06 апреля 2019

Я думаю, что самый простой способ - использовать замену в каждом поле регулярным выражением, которое фиксирует все между {}, и заменить его пустой строкой.

data = [(1, '{product} {number} {number} was purchased on {date} and 
returned')]
df = spark.createDataFrame(data, ["ix", "string"])
# here I created a new column called new_col replacing everything
# that matches the regular expression with an empty string 
df = df.withColumn('new_col', F.regexp_replace(F.col("string"), "\\{(.*?)\}", ""))
df.show()

Вывод:

+---+--------------------+--------------------+
| ix|              string|             new_col|
+---+--------------------+--------------------+
|  1|{product} {number...|   was purchased ...|
+---+--------------------+--------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...