[Brendan Shillingford, Yannis Assael, Chris Dyer]
Para esta práctica, se le proporcionará un cuaderno de iPython parcialmente completado, un entorno de computación de Python basado en la web interactivo que nos permite mezclar texto, código y parcelas interactivas.
Entrenaremos modelos Word2Vec en TED Talk y Data Wikipedia, utilizando la implementación de Word2Vec incluida en el paquete Python gensim . Después de entrenar a los modelos, analizaremos y visualizaremos las integridades aprendidas.
En una estación de trabajo de laboratorio, clone el repositorio práctico y ejecute el . install-python.sh shell script en un terminal para instalar Anaconda con Python 3, y los paquetes requeridos para esto práctico.
Ejecute ipython notebook en el directorio de repositorio y abra el cuaderno practical.ipynb en su navegador.
El código para descargar el conjunto de datos y el preprocesamiento se preescribe para ahorrar tiempo. Sin embargo, se espera que necesite realizar una tarea de este tipo en prácticas futuras, dados los datos sin procesar. Léelo y asegúrese de entenderlo. A menudo, uno usa una biblioteca como nltk para simplificar esta tarea, pero no lo hemos hecho aquí y, en su lugar, optamos por usar expresiones regulares a través del módulo re de Python.
Haga una lista de las palabras más comunes y sus recuentos de ocurrencias. Eche un vistazo a las 40 palabras principales. Es collections Counter desee utilizar la clase CountVectorizer sklearn.feature_extraction.text
Tome las 1000 palabras principales y traza un histograma de sus recuentos. El código de trazado para un histograma interactivo ya se da en el cuaderno.
Handin: Muestre el histograma de distribución de frecuencia.
Ahora que tenemos una lista procesada de oraciones, ejecutemos la capacitación Word2Vec. Comience leyendo la documentación Gensim para Word2Vec en https://radimrehurek.com/gensim/models/word2vec.html, para descubrir cómo usar la clase Word2Vec . Aprender incrustaciones en min_count=10 para que se ignoren las palabras poco frecuentes. El proceso de capacitación debe tomar menos de medio minuto.
Si su instancia Word2Vec entrenada se llama model_ted , debería poder verificar el tamaño del vocabulario usando len(model_ted.vocab) , que debería ser alrededor de 14427. Intente usar el método most_similar() para devolver una lista de las palabras más similares a "hombre" y "computadora".
Handin: Encuentra algunas palabras más con vecinos interesantes y/o sorprendentes más cercanos.
Handin: Encuentra un grupo interesante en la trama T-SNE.
Opcional, para estudiantes entusiastas: intente recuperar manualmente dos vectores de palabras utilizando el operador de indexación como se describe en la documentación de Gensim, luego a la computadora sus distancias de coseno (recuerde que se define como np.dot() y np.linalg.norm() , consulte la documentación Numpy para más detalles. Compare esto con la distancia calculada por las funciones de Gensim.
Hemos proporcionado código de descarga/preprocesamiento (similar al código anterior) para el conjunto de datos Wikitext-2. El código utiliza una submuestra aleatoria de los datos, por lo que es comparable en tamaño a los datos de TED Talk.
Repita el mismo análisis que el anterior pero en este conjunto de datos.
Handin: Encuentra algunas palabras con vecinos más cercanos más cercanos.
Handin: Encuentra un grupo interesante en la trama T-SNE.
Handin: ¿Hay alguna diferencia notable entre los incrustaciones aprendidas sobre los datos en comparación con los aprendidos en los datos de TED Talk?
Si tiene tiempo extra, intente realizar una agrupación de K-means (por ejemplo, usando sklearn.cluster.kmeans ) en los incrustaciones, sintonizando la cantidad de grupos hasta que obtenga grupos interesantes o significativos.
Vea el " handin" en negrita: "Partes arriba. En papel o verbalmente, muestre un demostrador práctico su respuesta a estos para que se firmen.