que tienen un conjunto de datos con múltiples capas de anotaciones sobre el texto subyacente, como part-of-tags, chunks from a shallow parser, name entities, y otros de diversas herramientas natural language processing (PNL). Para una oración como The man went to the store
, las anotaciones pueden ser:indexación y búsqueda capas de anotaciones sobre palabra de nivel en Lucene
Word POS Chunk NER ==== === ===== ======== The DT NP Person man NN NP Person went VBD VP - to TO PP - the DT NP Location store NN NP Location
me gustaría índice de un montón de documentos con anotaciones como estas utilizando Lucene y luego realizar búsquedas a través de las diferentes capas. Un ejemplo de consulta simple sería recuperar todos los documentos donde Washington está etiquetado como persona. Aunque no estoy absolutamente comprometido con la notación, sintácticamente los usuarios finales podrían entrar en la consulta de la siguiente manera:
consulta: Word=Washington,NER=Person
También me gustaría hacer consultas más complejas que implican el orden secuencial de las anotaciones en diferentes capas, por ejemplo encuentre todos los documentos donde hay una palabra etiquetada persona seguida de las palabras arrived at
seguido de una palabra etiquetada ubicación. dicha consulta podría ser:
consulta: "NER=Person Word=arrived Word=at NER=Location"
Qué es una buena manera de ir sobre esto con Lucene se acerca? ¿Hay alguna forma de indexar y buscar en los campos de documentos que contienen tokens estructurados?
cargas útiles
Una de ellas fue a tratar de utilizar Lucene payloads. Pero, pensé que las cargas útiles solo se podían usar para ajustar los rankings de los documentos, y que no se usan para seleccionar qué documentos se devuelven.
Esto último es importante ya que, para algunos casos de uso, el número de documentos que contienen un patrón es realmente lo que quiero.
Además, solo se examinan las cargas útiles en los términos que coinciden con la consulta. Esto significa que las cargas útiles sólo podrían incluso ayudar con la clasificación de la primera consulta de ejemplo, Word=Washington,NER=Person
, con lo que sólo quieren asegurarse de que el término Washingonton
está etiquetado como Person
. Sin embargo, para la segunda consulta de ejemplo, "NER=Person Word=arrived Word=at NER=Location"
, necesito verificar las etiquetas en términos no especificados y, por lo tanto, no coincidentes.
¿Encontró una solución satisfactoria? – enguerran