Python y el algoritmo tfidf, ¿lo hacen más rápido?

Estoy implementando el tf-idf algoritmo en una aplicación web que usa Python, sin embargo, funciona extremadamente lento. Lo que básicamente hago es:

1) Crear 2 diccionarios:

Primer diccionario: clave (identificación del documento), valor (lista de todas las palabras encontradas (incl. Repetidas) en el documento)Segundo diccionario; clave (identificación del documento), valor (conjunto que contiene palabras únicas del documento)

Ahora, hay una petición de un usuario para obtener tfidf resultados del documento d. Lo que hago es:

2) Pase sobre las palabras únicas del segundo diccionario para el documento d, y para cada palabra única w obtendrá:

2.1) puntuación tf (cuántas veces aparece w en d: recorre la lista de palabras del primer diccionario para el documento)

2.2) puntuación df (cuántos documentos contienen w: recorrer el conjunto de palabras de todos los documentos (segundo diccionario) y verificar si w está contenido). Estoy usando un conjunto, ya que parece ser más rápido para verificar si un conjunto contiene una palabra en comparación con una lista.

Step 2.2 es terriblemente lento. Por ejemplo, tener 1000 documentos y un documento con 2313 palabras únicas, demora alrededor de 5 minutos para generar los resultados.

¿Hay alguna otra forma de acelerar el paso 2.2? ¿Los diccionarios son lentos para iterar?

Respuestas a la pregunta(2)

Su respuesta a la pregunta