Лемматизирование со Spacy и Pyspark - PullRequest
0 голосов
/ 07 ноября 2019

Я создал функцию для лемматизации столбца Pyspark DataFrame. Вот код:

def custom_lemmatizer(df,input_col, output_col) -> DataFrame:
  """
      Lemmatizes the df's using input_column and returns
      a df with lemmatized words as output_column
  """
  input_col = udf(lambda x: " ".join(x))(df[input_col])
  def spacy_lemma(input_col)->list:
    nlp = spacy.load('en', disable=['parser', 'ner'])
    doc = nlp(input_col)
    return [token.lemma_ for token in doc]

  spacy_udf = udf(lambda string: spacy_lemma(string), ArrayType(StringType()))
  return df.withColumn(output_col, spacy_udf(input_col))

Проблема в том, что когда я тестирую его, он работает примерно через две минуты, тогда как, если я запускаю его в основной функции с другими операциями, такими как векторизация, удаление стоп-слов и т. Д .;Главное работает вечно. Кажется, что это мешает всему процессу. Уверен, что главное прекрасно, так как эффективно выполняет другие задачи. Как я могу решить эту проблему?

...