#map #unique-id
#Карта #уникальный идентификатор
Вопрос:
По сути, мы хотим иметь возможность однозначно присваивать идентификаторы всем N граммам, содержащимся в большом наборе документов. Итак, если у меня есть 10 миллионов документов для обработки, я бы прочитал текст из каждого документа и получил N грамм (в основном триграммы) и должен иметь возможность присваивать уникальные идентификаторы этим N-граммам. Каким-то образом мне нужно было бы сохранить эти уникальные идентификаторы, чтобы я мог быстро их извлекать.
Комментарии:
1. Предполагая, что ваше N достаточно мало, почему бы просто не использовать каждую N-грамму для идентификации себя?
2. В большинстве случаев N = 3 (триграмма), но все же мне нужно было бы сохранить их где-нибудь, чтобы они были извлечены позже. По сути, существует фаза сканирования (в которой триграмме присваиваются уникальные идентификаторы из всех документов) и фаза обработки (где документ считывается и создается подпись документа с уникальными идентификаторами из всех его триграмм)
Ответ №1:
Основываясь на комментариях выше, я бы посоветовал вам просто использовать N-gram в качестве собственного идентификатора. Таким образом, нет необходимости поддерживать отдельное сопоставление идентификаторов с N-граммами.
Например, предположим, что у вас есть документ, содержащий текст «hello», который содержит триграммы «hel», «ell» и «llo» (при условии, что вы не включаете границы слов). Вместо того, чтобы сначала настраивать сопоставление идентификаторов, например 1 = «hel», 2 = «ell», 3 = «llo», и иметь подпись документа в виде набора { 1, 2, 3}, вы могли бы использовать N-граммы непосредственно в качестве подписи документа { «hel», «ell», «llo» }. Таким образом, вы даже можете объединить этапы сканирования и обработки для одного прохода по документу.