Mejora del rendimiento del modelo lingüístico mediante vocabularios inteligentes
Este proyecto está diseñado para explorar el uso del preprocesamiento del Billion Word Corpus con etiquetas de parte del discurso y entidades nombradas para crear un vocabulario "más inteligente". Utilizando estas técnicas es posible obtener mejores puntuaciones de perplejidad que utilizando únicamente las N palabras principales del corpus.
Para obtener una explicación completa del procesamiento y su impacto en las puntuaciones de perplejidad que se pueden obtener, consulte Cómo mejorar el rendimiento del modelo lingüístico con vocabularios más inteligentes.
El proyecto incluye guiones para
El proyecto está diseñado para ser utilizado en obra y no existe instalación de tubería para ello. Simplemente descargue el código fuente de GitHub, establezca las opciones de configuración y ejecute los scripts numerados en orden. Tenga en cuenta que este código está diseñado para el investigador, por lo que deberá revisar el código de los scripts que se ejecutan y modificar las opciones según sea necesario para obtener resultados específicos.
Los scripts del directorio principal tienen el prefijo de un número para indicar en qué orden ejecutarlos. La mayoría de los scripts en el directorio principal son una serie relativamente corta de llamadas a las funciones de la biblioteca asociada. Antes de ejecutar cada script, asegúrese de abrirlo y configurar cualquiera de los parámetros de configuración para obtener los resultados que desea.
Las opciones de configuración global utilizadas por múltiples scripts se establecen en ./configs/config.py. Asegúrese de ingresar a este archivo y modificar las rutas a sus datos antes de ejecutar cualquiera de los scripts a continuación.
00_StanfordCoreNLPServer.py : inicia el analizador Stanford Core NLP utilizando el archivo de configuración ./configs/snlp_server.py. El script se bloquea mientras el servidor se está ejecutando. Si lo prefiere, el servidor se puede iniciar manualmente. Este script es sólo por conveniencia.
10_ExtractUniqueSents.py : extrae oraciones únicas del Billion Word Corpus antes del análisis. Cerca de la parte superior del archivo hay algunas instrucciones sobre cómo descargar y configurar el corpus sin formato.
12_STParseBWCorpus.py : ejecuta todas las oraciones únicas a través del analizador Stanford. Tenga en cuenta que este paso requiere una cantidad considerable de tiempo (posiblemente un día completo) y se beneficia enormemente de un procesador multinúcleo. Consulte las notas en el archivo sobre los tiempos de ejecución.
14_RemoveDuplicates.py : realiza un segundo paso a través de los datos para eliminar oraciones duplicadas que ocurren después del análisis/normalización.
20_CreateEnglishDictionary.py : Requerido para la creación de vocabulario inteligente.
22_CreateVocab.py : este script crea los distintos tipos de vocabularios. Existe un gran bloque if/elif en el archivo para que el usuario elija qué tipo de vocabulario crear.
24_IndexVocab.py : crea los datos del corpus indexados utilizados para entrenar el modelo de lenguaje. Nuevamente hay un gran bloque if/elif aquí que el usuario debe configurar para seleccionar el tipo de vocabulario que se utilizará.
30_TrainBasicLM.py : configura y ejecuta el entrenamiento del modelo. Nuevamente hay un bloque de declaraciones que permiten al usuario elegir el vocabulario con el que entrenar. Además, el usuario debe elegir el archivo con los parámetros de configuración del modelo. Los parámetros de configuración del modelo se almacenan en el directorio de configuración con nombres de archivo como L1_2048_512.py.
32_TestPerplexity : ejecuta una prueba de perplejidad contra el modelo entrenado. Elija el modelo a probar en la parte inferior del script.
34_NextWordPrediction.py : permite al usuario ingresar la primera parte de una oración y llama al modelo para predecir la siguiente palabra. Configure qué modelo usar en la parte principal del script.
Partes del código se adaptaron del conjunto de herramientas del modelo de lenguaje de la Universidad de Saarland. Consulte TF-NNLM-TK.
Ese código se basó en parte en el modelo de ejemplo de TensorflowPTB-LM.