Word2Vec para reconocimiento de entidad con nombre


25

Estoy buscando usar la implementación word2vec de google para construir un sistema de reconocimiento de entidad con nombre. He oído que las redes neuronales recursivas con propagación hacia atrás a través de la estructura son adecuadas para tareas de reconocimiento de entidades con nombre, pero no he podido encontrar una implementación decente o un tutorial decente para ese tipo de modelo. Debido a que estoy trabajando con un corpus atípico, las herramientas NER estándar en NLTK y similares han funcionado muy mal, y parece que tendré que entrenar mi propio sistema.

En resumen, ¿qué recursos están disponibles para este tipo de problema? ¿Existe una implementación de red neuronal recursiva estándar disponible?


¿Has intentado entrenar al NER de Stanford en tu corpus? Hay un tutorial aquí .
Emre

No lo he hecho, debería intentarlo para ver cómo le va.
Madison mayo

Sin embargo, me gustaría usar las funciones de word2vec o similares, ya que tengo acceso a un conjunto de datos etiquetado relativamente pequeño y necesito aprovechar al máximo los datos no etiquetados que tengo a mano.
Madison mayo

Respuestas:



7

Dos artículos recientes utilizan una arquitectura de aprendizaje profundo llamada CharWNN para abordar este problema. CharWNN se usó por primera vez para obtener resultados de vanguardia (sin características artesanales) en el etiquetado de Parte de discurso (POS) en un corpus inglés.

El segundo artículo del mismo autor usa la misma arquitectura (o similar) para predecir si una palabra pertenece a 10 clases de Entidades Nombradas, con aparentes resultados de última generación.


Interesante. Gracias por compartir esto. Me pregunto por qué no probaron este enfoque en corpus en inglés.
MaticDiba


1

Aquí hay algunas ideas sobre cómo usar vectores de palabras para NER, que adopta un enfoque centrado en word2vec sin supervisión.

  1. Dado un conjunto de vectores de palabras (ya sea algo que haya entrenado o algo comercial como GoogleNews-vectors-negative300.bin), descubra grupos en el espacio vectorial. Estos grupos son básicamente sus definiciones para varios conceptos sin nombre.
  2. Con una supervisión mínima, puede asignar / convertir los grupos sin nombre para que coincidan con el conocimiento humano, creando así conceptos con nombre basados ​​en los vectores de palabras conocidas y conceptos sin nombre. Por ejemplo, un método findCluster(['joy', 'surprise', 'disgust', 'trust', 'fear', 'sadness', 'anger', 'anticipation'])puede devolver una lista que contiene cientos de palabras relacionadas principalmente con la emoción. Si nombra esta lista 'emoción', entonces tiene un concepto llamado 'emoción' definido en función del espacio vectorial.
  3. También puede hacer matemática vectorial para encontrar el concepto intermedio entre dos dados. Por ejemplo, la matemática vectorial podría decirle que cuando se le dan dos palabras 'sorpresa' y 'asco', se encuentran las siguientes: consternación, asombro, desilusión, asombro, desconcierto, exasperación, incredulidad, conmoción, etc. Esto permite usted para construir una relación entre conceptos.
  4. Puede repetir lo anterior para crear varios tipos de concuptos con nombre, como: días laborables, todas las emociones, emociones felices, vehículos, etc.
  5. Una vez que haya creado capas de conceptos con nombre, puede entrenar a un RNN en un corpus de texto que se ha aumentado con los conceptos con nombre, por lo que 'saltos de zorro marrón' también es '{color} {animal} {acción}' etc. De esta manera, el RNN debería poder aprender algo de gramática rudimentaria sin supervisión.
  6. Si ha desarrollado una gramática suficientemente poderosa a partir de lo anterior, entonces debería poder aplicarla a algunas de sus tareas NER.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.