Распознавание именованных объектов на основе словаря с нулевым расстоянием редактирования: LingPipe, Lucene или как?

Я пытаюсь выполнить NER на основе словаря для некоторых документов. Мой словарь, независимо от типа данных, состоит из пар ключ-значение строк. Я хочу найти все ключи в документе и возвращать соответствующее значение для этого ключа при каждом совпадении.

Проблема в том, что мой словарь довольно большой: ~7 миллионов значений ключей - средняя длина ключей: 8 и средняя длина значений: 20 символов.

Я пробовал LingPipe с MapDictionary, но в моей желаемой настройке среды ему не хватает памяти после вставки 200000 строк. Я не знаю ясно, почему LingPipe использует карту, а не хэш-карту в их алгоритме.

Итак, дело в том, что у меня нет опыта работы с Lucene, и я хочу знать, делает ли это возможность с таким числом проще.

пс. Я уже пробовал разбивать данные на несколько словарей и записывать их на диск, но это относительно медленно.

Спасибо за любую помощь.

Ура парса

1 ответ

Решение

Я полагаю, что если вы хотите повторно использовать ExactDictionaryChunker LingPipe для выполнения NER, вы можете переопределить их MapDictionary для хранения и извлечения из выбранной вами базы данных ключ / значение вместо их ObjectToSet (который, между прочим, расширяет HashMap).

Lucene / solr можно использовать как хранилище ключей / значений, но если вам не нужны дополнительные возможности поиска, просто просмотр, другие варианты могут быть лучше для того, что вы делаете.

Другие вопросы по тегам