Почему мой код IDF Python работает намного медленнее, чем pysparkPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой код IDF Python работает намного медленнее, чем pyspark

Сообщение Anonymous »

Я создаю значения IDF, и мой код Python работает намного медленнее по сравнению с реализацией pyspark (2+ часа для меня по сравнению с секундами), и мне интересно, почему это так. Я знаю, что pyspark основан на Java, но разница, похоже, больше, чем между Python и Java. Я использую такую ​​простую функцию:

Код: Выделить всё

def calc_idf(data, terms):
# data is a list of lists filled with tokenized data
# terms is a list of the tokens to calculate IDF values
num_docs = len(data)

idf_values = []
for term in tqdm(terms, desc="IDF", position=0, leave=True):
idf_val = 0
for doc in data:
if term in doc:
idf_val += 1
idf_values.append(math.log2((num_docs+1)/(idf_val+1))) # Using base 2 as original paper did

return idf_values
IDF, который я использую, взят из этой документации (https://spark.apache.org/docs/3.5.1/api ... ib.feature .IDF.html). Я не думаю, что моя реализация актуальна, но ее можно найти по этому вопросу (сохранение и загрузка RDD (pyspark) в файл Pickle меняет порядок SparseVectors), просто знайте, что это значительно медленнее.
Может ли кто-нибудь посоветовать, как я могу улучшить скорость расчета IDF?
Изменить: каждый документ в данных действительно представляет собой список, как упоминал Джером в комментариях. Преобразовал документ в набор, и это примерно в 68 раз быстрее! Спасибо!
Редактирование 2. Я только что понял, что преобразование списка в набор не работает, поскольку набор не может содержать повторяющиеся значения. Таким образом, вам необходимо преобразовать в Multiset из пакета multiset.

Подробнее здесь: https://stackoverflow.com/questions/787 ... an-pyspark
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»