Sorprendentemente, no he podido encontrar a nadie que realmente esté haciendo esto, pero seguramente alguien sí. Actualmente estoy trabajando en un proyecto de Python que implica la corrección ortográfica de unas 16 mil palabras. Esa cantidad de palabras solo va a crecer por desgracia. En este momento estoy sacando palabras de Mongo, iterando a través de ellas, y luego deletreo revisándolas con pyenchant. Eliminé a mongo como posible cuello de botella al agarrar todos mis artículos de allí primero. Eso me deja alrededor de 20 minutos para procesar 16k palabras, lo que obviamente es más largo de lo que quiero gastar. Esto me deja con un par de ideas/preguntas:Revisión ortográfica a "gran escala" en Python
Obviamente, podría aprovechar el enhebrado o alguna forma de paralelismo. Incluso si corté esto en 4 pedazos, todavía estoy mirando aproximadamente 5 minutos que asumen funcionamiento máximo.
¿Hay alguna forma de saber qué biblioteca de ortografía Enchant usa debajo de pyenchant? El sitio web de Enchant parece implicar que utilizará todas las bibliotecas/diccionarios de ortografía disponibles cuando realice correcciones ortográficas. Si es así, entonces estoy potencialmente ejecutando cada palabra a través de tres a cuatro dictados de ortografía. Este podría ser mi problema aquí, pero estoy teniendo dificultades para demostrar que ese es el caso. Incluso si lo es, ¿es mi opción realmente desinstalar otras bibliotecas? Suena desafortunado
¿Alguna idea sobre cómo puedo sacar al menos un poco más el rendimiento de esto? Estoy de acuerdo con dividir esto en tareas paralelas, pero aún me gustaría conseguir que la pieza central sea un poco más rápida antes que yo.
Editar: Lo siento, publicar antes del café de la mañana ... Enchant genera una lista de sugerencias para mí si una palabra se deletrea incorrectamente. Eso parece ser donde paso la mayor parte de mi tiempo en esta parte de procesamiento.
20 minutos por sólo 16 mil palabras suena como un tiempo terriblemente largo. ¿Podría simplemente cargar sus palabras en un diccionario de Python y hacer una búsqueda en cada una? Eso llevará ciertamente menos de 20 minutos. (Probablemente en menos de 20 minutos para escribir, también). – ggg
¿Está utilizando todo el poder de Enchant, o simplemente está revisando si una palabra está escrita correctamente (es decir, en un diccionario previamente conocido)? Si es lo último, haz lo que dice 'ggg' y crea tu propio corrector ortográfico. – katrielalex
Ni siquiera piense en paralelizar; Acabo de verificar 100k palabras contra un diccionario de 60k en menos tiempo de lo que tardé en presionar Enter. Necesitas un mejor algoritmo – msw