fastText, y cómo usarlo para el análisis de texto?

Todos usamos Facebook y debes haber experimentado en algún momento que has publicado algo y Facebook comienza a mostrarte anuncios exactamente relacionados con esa cosa.

Por ejemplo, si haces una publicación en Facebook, vas a dejar tu trabajo para comenzar una nueva aventura tuya y de repente Facebook comienza a mostrarte anuncios como este:

Entonces, ¿cómo sabe exactamente Facebook qué mostrar?

Bueno, es la magia de su biblioteca de PNL: fastText.

FastText es una biblioteca de código abierto, gratuita y liviana de reciente apertura de Facebook. FastText es una biblioteca creada por el Equipo de Investigación de Facebook para el aprendizaje eficiente de representaciones de palabras y clasificación de oraciones.

Esta biblioteca ha ganado mucha atención en la comunidad de PNL, ya que ha mostrado excelentes resultados en varios dominios de PNL.

¿Cómo usarlo?

En este artículo te diré cómo usarlo para la clasificación de texto.

Paso 1: poner sus datos en el formato correcto

Es muy importante para fastText tener datos en un formato correcto prescrito.

El formato:

_label_0 your_text

Aquí lab _label_ ’debe usarse tal como está.

"0" le dice a su etiqueta. (El valor en la columna de etiqueta para esa fila en particular)

"Su_texto" es el texto en el que desea entrenar a su clasificador.

En el código anterior, he mostrado la forma de abrir un nuevo archivo "train.txt" para escribir y escribir su marco de datos en él.

Paso 2: clonando el repositorio

Luego, necesitamos clonar el repositorio de fastText en nuestro cuaderno para usar sus funciones.

Identificación del repositorio: https://github.com/facebookresearch/fastText.git

Después de clonarlo, siga estos pasos:

Asegúrese de que su archivo "train.txt" esté dentro de la carpeta fastText creada al clonar el repositorio.

Paso 3: jugando con los comandos

Ahora su modelo está listo para entrenar, dé el siguiente comando para entrenar su clasificador:

./fasttext supervisado -input train.txt -output

-etiqueta __label__ -lr 0.1 -epoch 40

Los siguientes argumentos son obligatorios:

  • ruta de archivo de entrenamiento de entrada
  • ruta de salida del archivo de salida

Puede jugar con estos parámetros para ajustar su modelo (asegúrese de usar un guión (-) antes de usar cualquier argumento)

Argumento proporcionado sin un guión!

Uso:

Los siguientes argumentos son opcionales:

  • -verboso nivel de verbosidad [2]

Los siguientes argumentos para el diccionario son opcionales:

  • -minCount número mínimo de apariciones de palabras [1]
  • -minCountLabel número mínimo de ocurrencias de etiqueta [0]
  • -wordNgrams longitud máxima de la palabra ngram [2]
  • -número de cubetas [2000000]
  • -minn longitud mínima de char ngram [0]
  • -maxn longitud máxima de char ngram [0]
  • -t umbral de muestreo [0.0001]
  • -etiqueta etiquetas prefijo [__label__]

Los siguientes argumentos para la capacitación son opcionales:

  • -lr tasa de aprendizaje [0.1]
  • -lrUpdateRate cambia la tasa de actualizaciones para la tasa de aprendizaje [100]
  • -dim tamaño de los vectores de palabras [100]
  • -ws tamaño de la ventana de contexto [5]
  • -tiempo de épocas [40]
  • -neg número de negativos muestreados [5]
  • función de pérdida de pérdida {ns, hs, softmax, one-vs-all} [softmax]
  • -número de subprocesos [12]
  • -pretrainedVectors vectores de palabras pretrained para aprendizaje supervisado []
  • -saveOutput si los parámetros de salida deben guardarse [falso]

Los siguientes argumentos para la cuantización son opcionales:

  • número de corte de palabras y ngrams para retener [0]
  • -retratar si las incrustaciones están afinadas si se aplica un límite [verdadero]
  • -qnorm si la norma se cuantifica por separado [falso]
  • -qout si el clasificador está cuantizado [falso]
  • -dub tamaño de cada sub-vector [2]

Paso 4: predicción usando el modelo guardado

El siguiente comando es probar el modelo en un conjunto de datos de prueba previamente anotado y comparar las etiquetas originales con las etiquetas predichas y generar puntajes de evaluación en forma de valores de precisión y recuperación.

La precisión es el número de etiquetas correctas entre las etiquetas predichas por fastText. El retiro es el número de etiquetas que se predijeron con éxito.

./fasttext test   k

Asegúrese de que el archivo de prueba también esté en el mismo formato que el archivo de tren.

Para predecir nuevas etiquetas:

./fasttext predic   k> 

donde k significa que el modelo predecirá las k etiquetas principales para cada revisión.

Las etiquetas predichas para las revisiones anteriores son las siguientes:

__etiqueta__2
__etiqueta__1
__etiqueta__2
__etiqueta__2
__etiqueta__2
__etiqueta__2
__etiqueta__2
__etiqueta__2
__etiqueta__1
__etiqueta__2
__etiqueta__2

El archivo de predicción se puede utilizar para fines de análisis y visualización más detallados.

fastText ha mostrado excelentes resultados en otros campos, como representaciones de palabras, etc., que se tratarán en los próximos artículos.

Gracias por leer este artículo.