Extracción/Reconocimiento de Entidades con herramientas gratuitas mientras se alimenta el Índice de Lucene


Actualmente estoy investigando las opciones para extraer nombres de personas, ubicaciones, palabras tecnológicas y categorías del texto (muchos artículos de la web) que luego se introducirán en un índice de Lucene/ElasticSearch. La información adicional se agrega como metadatos y debería aumentar la precisión de la búsqueda.

Por ejemplo, cuando alguien consulta 'wicket' debería poder decidir si se refiere al cricket sport o al proyecto Apache. Traté de implementar esto por mi cuenta con un éxito menor, así que lejos. Ahora encontré muchas herramientas, pero no estoy seguro de si son adecuadas para esta tarea y cuál de ellas se integra bien con Lucene o si la precisión de extracción de entidades es lo suficientemente alta.

Mi preguntas:

  • ¿Alguien tiene experiencia con algunas de las herramientas enumeradas anteriormente y su precisión/recuperación? O si hay datos de entrenamiento requeridos + disponibles.
  • ¿Hay artículos o tutoriales donde pueda comenzar con entity extraction(NER) para todas y cada una de las herramientas?
  • ¿Cómo se pueden integrar con Lucene?

Aquí hay algunas preguntas relacionadas con ese tema:

Author: Community, 2011-09-17

4 answers

El problema al que se enfrenta en el ejemplo 'wicket' se llama desambiguación de entidad, no extracción/reconocimiento de entidad (NER). NER puede ser útil, pero solo cuando las categorías son lo suficientemente específicas. La mayoría de los sistemas NER no tienen suficiente granularidad para distinguir entre un proyecto deportivo y un proyecto de software (ambos tipos quedarían fuera de los tipos típicamente reconocidos: persona, organización, ubicación).

Para la desambiguación, se necesita una base de conocimientos contra la que se desambiguado. DBpedia es una opción típica debido a su amplia cobertura. Ver mi respuesta para ¿ Cómo usar DBpedia para extraer etiquetas / Palabras clave del contenido? donde doy más explicaciones, y menciono varias herramientas para la desambiguación, incluyendo:

Estas herramientas a menudo usan una API independiente del lenguaje como REST, y no sepa que proporcionan directamente el apoyo de Lucene, pero espero que mi respuesta haya sido beneficiosa para el problema que está tratando de resolver.

 16
Author: John Lehmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:33:59

Puede usar OpenNLP para extraer nombres de personas, lugares, organizaciones sin capacitación. Solo tiene que utilizar modelos pre-existentes que se pueden descargar desde aquí: http://opennlp.sourceforge.net/models-1.5 /

Para ver un ejemplo sobre cómo usar uno de estos modelos, consulte: http://opennlp.apache.org/documentation/1.5.3/manual/opennlp.html#tools.namefind

 2
Author: Abul Fayes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-08 13:16:01

Rosoka es un producto comercial que proporciona un cálculo de "Prominencia" que mide la importancia del término o entidad para el documento. La prominencia se basa en el uso lingüístico y no en la frecuencia. Utilizando los valores de relevancia puede determinar el tema principal del documento en su conjunto. La salida está en su elección de XML o JSON, lo que hace que sea muy fácil de usar con Lucene. Está escrito en java. Hay una versión de Amazon Cloud disponible en https://aws.amazon.com/marketplace/pp/B00E6FGJZ0. El costo para probarlo es de 0 0.99 / hora. La versión en la nube de Rosoka no tiene todas las características de la API de Java disponibles que la versión completa de Rosoka. Si ambas versiones realizan una desambiguación de entidad y término basada en el uso lingüístico.

La desambiguación, ya sea humana o software, requiere que haya suficiente información contextual para poder determinar la diferencia. El contexto puede estar contenido en el documento, dentro de una restricción de corpus, o dentro del contexto de los usuarios. El primero es más específico, y el segundo tiene mayor ambigüedad potencial. Es decir, escribir la palabra clave "wicket" en una búsqueda de Google, podría referirse a cricket, software Apache o el personaje Ewok de Star Wars (es decir, una Entidad). La frase "El wicket está custodiado por el bateador" tiene pistas contextuales dentro de la frase para interpretarlo como un objeto. "Wicket Wystri Warrick era un Ewok scout masculino" debería entpret " Wicket "como el nombre de la entidad persona"Wicket Wystri Warrick". "Welcome to Apache Wicket" tiene las pistas contextuales de que "Wicket" es parte de un nombre de lugar, etc.

 0
Author: mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-28 13:42:58

Últimamente he estado jugando con Stanford crf ner. Han lanzado bastantes versiones http://nlp.stanford.edu/software/CRF-NER.shtml

Lo bueno es que puedes entrenar tu propio clasificador. Usted debe seguir el enlace que tiene las directrices sobre cómo entrenar a su propia NER. http://nlp.stanford.edu/software/crf-faq.shtml#a Desafortunadamente, en mi caso, las entidades nombradas no se extraen eficientemente del documento. La mayoría de las entidades pasan desapercibidas.

Por si le resulta útil.

 0
Author: Abhro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-26 06:25:22