Я получаю ошибку рассола при выполнении этого. Я новичок в pyspark, поэтому я не был бы шокирован, если бы что-то пропустил. Может ли кто-нибудь помочь мне понять мою ошибку? Код должен связывать с _ в текстах все словосочетания, которые есть в ключевых словах.
from pyspark.sql.types import StringType, Row
from pyspark.sql import functions as F, SparkSession
spark = SparkSession.builder.appName('kwTool').getOrCreate()
sentence_tokenized_docs = spark.createDataFrame(
[Row(sentence='machine learning is a core domain of the artificial intelligence.'),
Row(sentence='it contains multiple algorithms.'),
Row(sentence='neural networks are efficient when there is a lot of training data')])
combinations = spark.createDataFrame(
[Row(keyword='machine_learning', key='machine learning'), Row(keyword='artificial_intelligence',
key='artificial intelligence'), Row(
keyword='neural_networks', key='neural networks')])
def combine_keywords(sentence: str):
useful_keywords = combinations.filter('locate(key, "{}") != 0'.format(sentence))
useful_keywords = list(useful_keywords.select('key').collect()[0])
for key in sorted(useful_keywords, key=len, reverse=True):
sentence = sentence.replace(key, key.replace(' ', '_'))
return sentence
combined_udf = F.udf(combine_keywords, StringType())
updated_sentences = sentence_tokenized_docs.withColumn('combined_keywords',
combined_udf(sentence_tokenized_docs['sentence'])).drop(
'sentence')
updated_sentences.show()
РЕДАКТИРОВАТЬ: После небольшой отладки я пришел к выводу, что, очевидно, я не могу получить доступ к кадрам данных из внешний вид функции, как это. Может ли кто-нибудь предложить исправление?