Распознавание именованных объектов на основе словаря с нулевым расстоянием редактирования: LingPipe, Lucene или как?
Я пытаюсь выполнить NER на основе словаря для некоторых документов. Мой словарь, независимо от типа данных, состоит из пар ключ-значение строк. Я хочу найти все ключи в документе и возвращать соответствующее значение для этого ключа при каждом совпадении.
Проблема в том, что мой словарь довольно большой: ~7 миллионов значений ключей - средняя длина ключей: 8 и средняя длина значений: 20 символов.
Я пробовал LingPipe с MapDictionary, но в моей желаемой настройке среды ему не хватает памяти после вставки 200000 строк. Я не знаю ясно, почему LingPipe использует карту, а не хэш-карту в их алгоритме.
Итак, дело в том, что у меня нет опыта работы с Lucene, и я хочу знать, делает ли это возможность с таким числом проще.
пс. Я уже пробовал разбивать данные на несколько словарей и записывать их на диск, но это относительно медленно.
Спасибо за любую помощь.
Ура парса
1 ответ
Я полагаю, что если вы хотите повторно использовать ExactDictionaryChunker LingPipe для выполнения NER, вы можете переопределить их MapDictionary для хранения и извлечения из выбранной вами базы данных ключ / значение вместо их ObjectToSet (который, между прочим, расширяет HashMap).
Lucene / solr можно использовать как хранилище ключей / значений, но если вам не нужны дополнительные возможности поиска, просто просмотр, другие варианты могут быть лучше для того, что вы делаете.