У меня есть набор данных с несколькими слоями аннотации над основным текстом, например, part-of-tags, chunks from a shallow parser, name entities и других различных natural language processing (NLP) инструментов. Для предложения, как The man went to the store
, аннотация может выглядеть следующим образом:индексирования и поиск по уровню слов аннотаций Слоев в 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
Я хотел индексировать кучу документов с аннотациями, подобным этим, используя Lucene, а затем выполнить поиск по различным слоям. Примером простого запроса было бы получить все документы, в которых Washington отмечен как человек. Хотя я не совсем привержен к обозначениям, синтаксический конечные пользователи могут ввести запрос следующим образом:
запрос: Word=Washington,NER=Person
Я хотел бы также сделать более сложные запросы, связанные с последовательным порядком аннотаций на разных слоях, например найти все документы, в которых есть слово с пометкой человек, а затем слова arrived at
, за которым следует слово с пометкой Местонахождение. Такой запрос может выглядеть следующим образом:
Query: "NER=Person Word=arrived Word=at NER=Location"
Что такое хороший способ идти о приближении это с Lucene? Есть ли способ индексировать и искать по полям документа, которые содержат структурированные маркеры?
Payloads
Одно из предложений было попытаться использовать Lucene payloads. Но я думал, что полезная нагрузка может быть использована только для корректировки ранжирования документов и что они не используются для выбора того, какие документы возвращаются.
Последнее важно, поскольку в некоторых случаях используются количество документов, которые содержат шаблон, действительно то, что я хочу.
Также рассматриваются только полезные значения на условиях, соответствующих запросу. Это означает, что полезная нагрузка может только помочь даже с ранжировании первого примера запроса, Word=Washington,NER=Person
, в результате чего мы просто хотим, чтобы убедиться, что этот термин Washingonton
помечается как Person
. Тем не менее, для второго примера запроса, "NER=Person Word=arrived Word=at NER=Location"
, мне нужно проверить теги на неопределенные и, следовательно, несовпадающие термины.
Вы нашли подходящее решение? – enguerran