¿Cómo se puede reducir el tamaño del modelo TFIDF sin reducir significativamente la precisión?

La forma más fácil es filtrando palabras poco frecuentes. Puede lograr esto estableciendo argumentos de entrada de la siguiente manera [1]:

  • min_df : para ignorar los términos que tienen una frecuencia de documento inferior a min_df . Si flotante, el parámetro representa una proporción de documentos, recuentos enteros absolutos.
  • max_features : para considerar solo las principales max_features ordenadas por frecuencia de término en todo el corpus. Esto es útil si tiene un límite estricto en el tamaño de las características transformadas TF-IDF (por ejemplo, hasta 100,000 características TF-IDF).

Cuando se trata de un corpus relativamente grande, usar min_df de 5, 10 o 50 reduce significativamente el tamaño del vocabulario mientras se mantiene (o a menudo mejora) la precisión.

Notas al pie

[1] sklearn.feature_extraction.text.TfidfVectorizer – documentación de scikit-learn 0.18.2

Hackeando manualmente alguna extracción prematura de entidades con nombre (antes de lo normal), si es para un dominio de problema específico (por ejemplo, política / finanzas / deportes / tecnología / entretenimiento, en un área geográfica y un marco de tiempo bien definidos).

Pero tenga cuidado: normalmente esto se hace por separado y más tarde, y tenga cuidado con las colocaciones y la ambigüedad que requiere un contexto más profundo. Esto también es muy arriesgado si está utilizando el TFIDF para el sentimiento en lugar de la clasificación de temas o textos: “Trump promete vetar cualquier nueva regulación de armas” puede causar un sentimiento diferente del lector a “la Casa Blanca se opone a las nuevas leyes de control de armas”.

Además, debe hacerlo antes o simultáneamente para eliminar minúsculas, espacios en blanco y signos de puntuación.

Por ejemplo, podría asignar todo lo siguiente a una entidad (usando expresiones regulares, dictados o un subclasificador):

  • siglas: NRA, ISIS, FCC, EU, etc.
  • Estados Unidos, Estados Unidos, Estados Unidos, Estados Unidos, Estados Unidos [de América]. Pero no ‘nosotros’.
  • (y si el plazo es 2017-2019, y excluimos referencias históricas, futuras o genéricas a los presidentes) Presidente, Pres Trump, Donald [J.] Trump, POTUS.
  • usando un nombre de teletipo bursátil (o nombre de HQ, o nombre de CEO) como sinónimo de una compañía (que cotiza en bolsa), al menos en discusiones financieras: AAPL-> Apple, MSFT-> Microsoft, UAL-> United Airlines, Cupertino-> Apple, Armonk-> IBM, etc. Ídem tickers de moneda o símbolos, por ejemplo, EURUSD, el Euro.
  • usando los nombres de los equipos deportivos o sus apodos o abreviaturas o sus ciudades de origen (/ países) o apodos o los de sus jugadores estrella como sinónimos, por ejemplo, “LBJ sella la victoria” o “Vista previa del partido: los rápidos se dirigen a la Ciudad de los Vientos buscando construir Quakes ganar”
  • códigos de área telefónica, números de carretera, códigos postales, códigos IATA de aeropuerto u otros términos (por ejemplo, “Norcal”, “OC”) como abreviatura de lugares (/ ciudades / condados / regiones / estados).

Al igual que la advertencia anterior, este es un pirateo rápido y sucio, y eventualmente se romperá. Pero dentro de algunos dominios de nicho específicos (por ejemplo, foros de comentarios financieros, deportivos, bursátiles) puede ayudarlo a lidiar con una proliferación de términos sinónimos y evitar que el tamaño de su matriz explote sin recortar la cola larga.

  1. lematizar sus palabras o detener su (perro y perros generalmente el mismo significado)
  2. minúscula (Perro, perro generalmente el mismo significado)
  3. frecuencia de corte mínima (generalmente 5 ocurrencias, pero depende del tamaño de su cuerpo)
  4. frecuencia de corte / palabras de parada máximas (ignore las palabras comunes que tendrán poca contribución)
  5. brazalete basado en pesos (cualquier palabra que tenga un peso muy bajo probablemente puede ignorarse)