Pregunta

Me gustaría utilizar el reconocimiento de entidad con nombre (NER) para encontrar etiquetas adecuadas para textos en una base de datos.

Sé que hay un artículo de Wikipedia sobre esto y muchas otras páginas que describen NER, preferiría escuchar algo sobre este tema de usted:

  • ¿Qué experiencias hiciste con los diversos algoritmos?
  • ¿Qué algoritmo recomendarías?
  • ¿Qué algoritmo es el más fácil de implementar (PHP / Python)?
  • ¿Cómo funcionan los algoritmos? ¿Es necesaria la capacitación manual?

Ejemplo:

" El año pasado, estuve en Londres donde vi a Barack Obama. " = > Etiquetas: Londres, Barack Obama

Espero que me puedan ayudar. ¡Muchas gracias de antemano!

¿Fue útil?

Solución

Para comenzar, echa un vistazo a http://www.nltk.org/ si planeas trabajar con python aunque, hasta donde yo sé, el código no es "fuerza industrial" pero te ayudará a comenzar.

Consulte la sección 7.5 de http://nltk.googlecode.com /svn/trunk/doc/book/ch07.html pero para comprender los algoritmos probablemente tendrá que leer una gran parte del libro.

También vea esto http://nlp.stanford.edu/software/CRF- NER.shtml . Se hace con Java,

NER no es un tema fácil y probablemente nadie te dirá "este es el mejor algoritmo", la mayoría de ellos tienen sus ventajas y desventajas.

Mi 0.05 de un dólar.

Saludos,

Otros consejos

Depende de si quieres:

Para aprender sobre NER : Un excelente lugar para comenzar es con NLTK y el libro .

asociado.

Para implementar la mejor solución : Aquí tendrá que buscar el estado del arte. Eche un vistazo a las publicaciones en TREC . Una reunión más especializada es Biocreative (un buen ejemplo de NER aplicado a un campo estrecho) .

Para implementar la solución más fácil : en este caso, básicamente solo desea hacer un etiquetado simple y extraer las palabras etiquetadas como sustantivos. Puede usar un etiquetador de nltk, o incluso buscar cada palabra en PyWordnet y etiquetarlo con el más común sentido de la palabra.


La mayoría de los algoritmos requieren algún tipo de entrenamiento, y funcionan mejor cuando están entrenados en contenido que representa lo que se le pedirá que etiquete.

Hay algunas herramientas y API disponibles.

Hay una herramienta construida sobre DBPedia llamada DBPedia Spotlight ( https: // github. com / dbpedia-spotlight / dbpedia-spotlight / wiki ). Puede usar su interfaz REST o descargar e instalar su propio servidor. Lo mejor es que asigna entidades a su presencia DBPedia, lo que significa que puede extraer datos vinculados interesantes.

AlchemyAPI (www.alchemyapi.com) tiene una API que también lo hará a través de REST, y utilizan un modelo freemium.

Creo que la mayoría de las técnicas se basan en un poco de PNL para encontrar entidades, luego usan una base de datos subyacente como Wikipedia, DBPedia, Freebase, etc. para hacer la desambiguación y la relevancia (por ejemplo, tratar de decidir si un artículo que menciona a Apple es sobre la fruta o la compañía ... elegiríamos la compañía si el artículo incluye otras entidades que están vinculadas a Apple (la compañía).

Es posible que desee probar el último sistema de enlace rápido de entidades de Yahoo Research: el documento también ha actualizado las referencias a nuevos enfoques de NER utilizando incrustaciones basadas en redes neuronales:

https://research.yahoo.com / Publicaciones / 8810 / ligero-multilingüe-entidad-extracción-y-vinculación

Se pueden usar redes neuronales artificiales para realizar el reconocimiento de entidades con nombre.

Aquí hay una implementación de una red bidireccional LSTM + CRF en TensorFlow (python) para realizar el reconocimiento de entidades con nombre: https://github.com/Franck-Dernoncourt/NeuroNER (funciona en Linux / Mac / Windows).

Proporciona resultados de vanguardia (o similares) en varios conjuntos de datos de reconocimiento de entidades con nombre. Como menciona Ale, cada algoritmo de reconocimiento de entidad nombrada tiene sus propias desventajas y ventajas.

Arquitectura ANN:

 ingrese la descripción de la imagen aquí

Como se ve en TensorBoard:

 ingrese la descripción de la imagen aquí

Realmente no sé acerca de NER, pero a juzgar por ese ejemplo, podrías hacer un algoritmo que buscara letras mayúsculas en las palabras o algo así. Para eso recomendaría regex como la solución más fácil de implementar si está pensando en pequeño.

Otra opción es comparar los textos con una base de datos, que coincidirá con cadenas previamente identificadas como Etiquetas de interés.

mis 5 centavos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top