Elaboración de un Modelo de Reconocimiento de Entidades Nominales (NER) para su uso en aplicaciones de Procesamiento del Lenguaje Natural (NLP)

Baciero Fernández, José Ignacio (2020). Elaboración de un Modelo de Reconocimiento de Entidades Nominales (NER) para su uso en aplicaciones de Procesamiento del Lenguaje Natural (NLP). Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S.I. Industriales (UPM), Madrid, España.

Description

Title: Elaboración de un Modelo de Reconocimiento de Entidades Nominales (NER) para su uso en aplicaciones de Procesamiento del Lenguaje Natural (NLP)
Author/s:
  • Baciero Fernández, José Ignacio
Contributor/s:
  • Ordieres Meré, Joaquín
Item Type: Final Project
Degree: Grado en Ingeniería en Tecnologías Industriales
Date: 26 June 2020
Subjects:
Freetext Keywords: Inteligencia Artificial, IA, Artificial Intelligence, AI, Natural Language Processing, NLP, Named Entity Recognition, NER
Faculty: E.T.S.I. Industriales (UPM)
Department: Ingeniería de Organización, Administración de Empresas y Estadística
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[img]
Preview
PDF - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (15MB) | Preview

Abstract

El Reconocimiento de Entidades Nominales (NER) es una tarea compleja dentro del campo del NLP que tradicionalmente ha requerido grandes cantidades de conocimientos en forma de ingeniería de caracteres y léxicos para lograr un rendimiento competente. Antes del descubrimiento de los modelos de Machine Learning y la mejora de las adaptaciones de las técnicas basadas en Redes Neuronales, el análisis del Lenguaje Natural se hacia atendiendo a normas morfológicas, sintácticas y léxicas previamente parametrizadas. Con estos enfoques se obtuvieron resultados satisfactorios pero que han sido superados en grado sumo por la entrada en escena de las mencionadas Redes. Ya se han conseguido obtener modelos con rendimientos muy altos en idiomas como el inglés. Sin embargo, en otros idiomas, el castellano entre ellos, se obtienen rendimientos muy pobres en dominios muy concretos. Con este proyecto, se pretende conseguir realizar una primera aproximación en este campo en el idioma castellano. A lo largo del siguiente informe de Elaboración de un Modelo de Reconocimiento de Entidades Nominales (NER) para su uso en Aplicaciones de Procesamiento del Lenguaje Natural (NLP), se realizará un recorrido por todas y cada una de las fases que conforman el trabajo, desde la fase de extracción de los textos de los artículos de noticias mediante Web Scraping, hasta la fase de evaluación de la herramienta NER y posterior adición al pipeline del modelo de Deep Learning de la herramienta EntityRuler de la librería spaCy. Este módulo por sí mismo será capaz de llevar a cabo la identificación de cualquier palabra o grupo de palabras como pertenecientes a una categoría semántica, siempre y cuando haya sido sometida a un entrenamiento suficiente en dicha clase. Con esto conseguimos distinguir unas palabras de otras según el significado que ofrecen en el contexto en que se encuentren. Esto es posible incluso en casos en los que una misma palabra, en función del entorno que la rodee, pueda tener implícito uno u otro significado, esto es, son polisémicas. La palabra “capital” podría considerarse un buen ejemplo de esta conflictiva ocurrencia: - Por un lado, en la oración “La empresa ACME lanzará su primera ampliación de capital” En este primer caso se entiende como capital al dinero que pretende obtener ACME. - Como posible significado alternativo, “La Capital de España es Madrid” La herramienta NER no intentará comprender las normas léxicas ni semánticas, sino que se estudio se centrará en identificar los patrones de palabras que la acompañan con mayor frecuencia para que, guiando su predicción por normas estadísticas, tome la decisión de identificar una palabra como perteneciente o no a un tipo de Entidad Nominal. Es por esto que se considerará dicha herramienta como un modelo clasificador de palabras. A continuación se procede a presentar brevemente cada una de las fases que conforman el proyecto. Para la representación del flujo de trabajo que se llevará a cabo, podría considerarse cada tarea que se realice durante el procesamiento de los datos de entrenamiento como cada una de las pequeñas secciones que componen una tubería; y los datos de entrenamiento, como el fluido que se pretende tratar y trasvasar de un punto A a otro B. El primer paso, comúnmente conocido como Web Scraping, consiste en la extracción de documentos de texto plano de distintas fuentes como puede ser sitios web (formato HTML), PDFs o cualquier otro formato de texto, y su posterior transformación a texto plano. La gran mayoría de los documentos de textos susceptibles de ser transformados en datos de entrenamiento serán fragmentos de artículos de noticias de fuentes diversas entre las cuales se debe mencionar instituciones como la Agencia EFE, Clínica Mayo y la OMS (WHO por sus siglas en inglés) entre otras. Se reunirán un total de 1535 ejemplares de entrenamiento, tras este proceso. Se elaborará un guión de código en lenguaje de programación “Python” tanto para esta como para las demás fases del trabajo. Una vez sean extraídos, fragmentados y guardados; estos documentos serán anotados manualmente, con los tipos de etiquetas necesarios para que el modelo de Machine Learning realice eficientemente la tarea para la cual será entrenado. Este será el proceso más arduo de la totalidad del proyecto; pero gracias a la anotación manual, se asegurará la calidad de las anotaciones realizadas frente a otros enfoques en los que se opte por un aprendizaje no supervisado o semi supervisado. Se anotarán todos los textos sobre una clasificación elaborada sobre 22 tipos diferentes de Entidades Nominales con tal de cubrir la mayor cantidad de dominios temáticos posible. Como se discutirá más adelante en este informe, cuanto mayor sea el numero de tipos diferentes de Entidades Nominales, mayor variabilidad será introducida al análisis y más compleja e incorrecta será la predicción que realice el módulo NER del modelo en cuestión. Es por este motivo que se elaborarán diferentes variantes entrenadas sobre los mismos textos pero controlando el número de entidades que son incluidas en la “enseñanza" del modelo. La elaboración previa de una clasificación supondrá un ahorro de tiempo en el proceso de anotación pues podrá ser, en parte, automatizado. Cabe mencionar que para la elaboración de dicha clasificación se deberá de tener un conocimiento básico de la lógica del lenguaje de programación XML. A posteriori se volcará dicha clasificación previamente realizada y se hará uso de un módulo de anotación manual disponible herramienta GATE Developer. Tras el procesado de todos los textos de noticias, se llevará a cabo una fase de aleatorización, y posterior guardado de los textos originales y de sus correspondientes documentos de anotación en diferentes particiones dentro del mismo conjunto de datos de entrenamiento (Dataset). Esta fase es conocida como Validación Cruzada (Cross Validation) y se realizará con la división del conjunto de datos en 5 y en 10 particiones, cada una de las cuales servirá para realizar cada una de las iteraciones de entrenamiento o evaluación del modelo de NLP. El motivo de aleatorizar los datos de entrenamiento será crucial para asegurar que, en cada una de las iteraciones, se entrene o evalúe el modelo de una muestra lo más representativa posible del conjunto de dominios requeridos. En este momento, comienza la elaboración del Modelo de Reconocimiento de Entidades Nominales propiamente dicho. Se partirá de un modelo base, pre-entrenado con cuatro tipos distintos de entidades nominales: “LOC”, “MISC”, “ORG”, “PER”. Los datos de entrenamiento, contenidos en un corpus de artículos de la wikipedia, llamado WikiNER. Este modelo y muchos otros preparados para el entrenamiento en diferentes idiomas entre los que se encuentra el español son accesibles desde el sitio web de la librería spaCy de Python especializada en el campo del NLP. Se escoge esta librería sobre otras como NLTK debido a la simplicidad y versatilidad que ofrece a la vez de los increíbles resultados en muchos de los modelos alcanzando la consideración de Estado del Arte. Se decide beneficioso partir de un modelo de DL pre-entrenado pues, como se discutirá en apartados posteriores, el Transfer Learning le proporciona una primera aproximación a la información con la que va a ser posteriormente entrenado. Esto es, le permite calcular los primeros pesos y sesgos antes del entrenamiento propiamente dicho. Estos pesos y sesgos no serán ni mucho menos una aproximación cercana a aquellos que tendrá el modelo tras el entrenamiento pero se evita que se cojan unos pesos y sesgos aleatorios, con el coste que supone de tiempo de computación y ejemplos del conjunto de datos de entrenamiento invertidos en esta tarea. Como se ha especificado previamente, los datos de entrenamiento variarán la cantidad de tipos de Entidades Nominales en función del modelo que se esté entrenando. Así, se obtendrán modelos entrenados sobre un corpus de documentos con 12 o 24 tipos de entidades; ambos tipos de modelos respetarán todos los tipos presentes en el modelo de partida (“LOC”, “MISC”, “ORG”, “PER”) excepto “MISC” que se juzga poco beneficioso para combatir la variabilidad del modelo. No sólo la cantidad de Entidades Nominales a “aprender” y la cantidad de particiones del conjunto de datos distinguirá los diferentes modelos; tambien se variarán ciertos híper- parámetros de los mismos con el fin de encontrar la combinación idónea de estos a igualdad en la cantidad de datos de entrenamiento y evaluación. Dichos parámetros son el numero de iteraciones por sesión de entrenamiento y la tasa de olvido. A mayor numero de iteraciones se obtendrán mejores precisiones con el posible efecto desfavorable de la memorización de los ejemplos particulares y la consecuente incapacidad de generalización. De forma opuesta, la tasa de olvido representa el porcentaje de conexiones de la red neuronal que “se olvidan” (son eliminadas) durante el entrenamiento para evitar esta memorización de los datos de entrenamiento. Que un modelo memorice los datos con los que es entrenado no es una cualidad muy aceptada en la comunidad pues aunque el modelo obtenga buenos rendimientos en el dominio en que es entrenado (con los datos de entrenamiento), obtendrá malos resultados en la evaluación contra los textos pertenecientes a otros dominios. A este efecto se le conoce como Overfitting. Por otra parte, tampoco es bueno el abusar una alta tasa de olvido y un reducido número de iteraciones durante la sesión de entrenamiento, pues esto podría resultar en un entrenamiento insuficiente, conocido como Underfitting. Así, el módulo NER será sometido a 6 variantes diferentes de entrenamiento: k_5, k_5_sm, k_5_sm_dr, k_10, k_10_sm y k_10_sm_dr. Los detalles de estas variantes de entrenamiento serán presentados en la tabla 5.5.2.. Por último, se realizará la fase de evaluación, comparando las predicciones realizadas por el modelo resultante de la fase de entrenamiento, con las anotaciones manuales realizadas en una fracción del conjunto de datos, reservada para este cometido y conocida como conjunto de evaluación o Gold Standard.

More information

Item ID: 62858
DC Identifier: http://oa.upm.es/62858/
OAI Identifier: oai:oa.upm.es:62858
Official URL: https://github.com/IBacieroFdez/SpanishNER
Deposited by: Sr. José Ignacio Baciero Fernández
Deposited on: 06 Oct 2020 14:45
Last Modified: 06 Oct 2020 14:45
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM