В настоящее время я пытаюсь решить проблему, когда у меня есть большая строка текста (резюме), и я ищу определенные слова в этом резюме.Основываясь на одном из нескольких слов, которые существуют в определенной категории, я хочу иметь возможность создать массив соответствующих тегов, как указано ниже:
ground = ['car', 'motorbike']
air = ['plane']
colour = ['blue', 'red']
| Summary | Tag_Array |
|------------------------|----------------------|
| This is a blue car | ['ground', 'colour'] |
| This is red motorbike | ['ground', 'colour'] |
| This is a plane | ['air'] |
Идея состоит в том, что он читает каждую сводку, а затем создает массив в столбце Tag_Array, который содержит соответствующие теги, связанные с текстом сводки.Метка для заземления может основываться на любом количестве возможных вариантов, в этом случае мотоцикл и автомобиль возвращают метку на землю.
Функционально у меня это работает с действительно ужасным подходом и очень многословно, и поэтому я собираюсь найти наиболее подходящий способ достичь этого в Pyspark.
df = (df
.withColumn("summary_as_array", f.split('summary', " "))
.withColumn("tag_array", f.array(
f.when(f.array_contains('summary_as_array', "car"), "ground").otherwise(""),
f.when(f.array_contains('summary_as_array', "motorbike"), "ground").otherwise("")
)
)
)