Я просто разбирался с идеей разбить большую группу текста на одно целое с помощью рекурсивного 2-граммового хранилища, пока не останется только одно значение.
table pair
{
id
first_parent_id (points to -> this.id)
second_parent_id (points to -> this.id)
}
Например, вВ следующем коде у меня есть предложение из 11 слов (двенадцать с точкой).Я мог бы сохранить каждую пару слов в базе данных («this» + «is» = ID # 1), а затем сохранить каждый набор из двух пар слов в базе данных (1 + 2 = ID # 7) и повторять до тех пор, пока я не доберусь доосталось только одно слово - это будет идентификатор 12.
This is my group of words which I plan to compress.
---1---|--2-----|--3-----|-----4-|----5--|-------6-
-------7--------|--------8-------|-------9---------
----------------10---------------11----------------
------------------------12-------------------------
Затем, используя число "12", мы можем работать в обратном направлении (если у нас один и тот же набор данных)
------------------------12-------------------------
----------------10---------------11----------------
-------7--------|--------8-------|-------9---------
---1---|--2-----|--3-----|-----4-|----5--|-------6-
This is my group of words which I plan to compress.
Покадля сжатия / распаковки каждой строки потребовалось бы огромное количество работы - кажется, что она может найти применение в какой-либо архивной работе, где необходимо хранить содержимое, - но никогда не читается, за исключением редких случаев, когда процесс распаковки не выполняется.это не проблема.
Правильно ли я думаю об этом?Будет ли возможное количество последовательностей слов слишком велико, чтобы их хранить таким образом?(Представьте себе документ из 500 слов).