Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
1. Каждая строка может быть представлена как конкатенация двух своих половин ... "Половины" - можно понимать не как ТОЧНОЕ деление пополам, но как "приблизительное" деление, - с тем, чтобы - по возможности - не "разбивать" ни слова (если строка состоит из нескольких словоформ), ни "предложения" (если строка состоит из нескольких предложений) ... Каждая из двух половин - тоже является строкой, и даже - как правило - более-менее осмысленной. 2. В процессе последовательного деления любой конкретной строки мы рано или поздно придем к "алфавиту" - к "терминальным символам", понимаемым (в зависимости от задачи) или как буквы, или как словоформы, или как комбинации букв - части слова ... 3. Пусть мы обрабатываем некоторый "большой контент", понимаемый как набор "текстов" (=строк) ... При помощи некоторого алгоритма хеширования мы составляем "индекс", понимаемый как список уникальных (!) хеш-ключей всех текстов, входящих в данный контент. Этот индекс представляет собой таблицу из трех числовых полей ( key , key1 , key2 ), каждая строка которой описывает одну уникальную текстовую строку. Значения полей: key - хеш-ключ описываемой текстовой строки (= уникальный идентификатор строки таблицы!), key1 - хеш-ключ ее "левой половины", key2 - хеш-ключ ее "правой половины". При этом - наряду с "исходной" ("длинной") текстовой строкой - в данный индекс мы заносим (если они еще не занесены!) также обе ее "половины" ... так, чтобы значения key1 и key2 всегда указывали на РЕАЛЬНЫЕ строки таблицы ... 4. Понятно, что строки индекса, описывающие "терминальные символы" (см. п. 2), будут иметь ПУСТЫЕ значения полей key1 и key2 (поскольку терминальный символ не имеет "подстрок") ... или, например, - в соответствии со СПЕЦИАЛЬНЫМ СОГЛАШЕНИЕМ - одно из этих полей может иметь пустое значение, а другое - указывать "вовне индекса" на специальную таблицу используемых нами "терминальных символов". 5. Возвращаясь к subj-у, - понятно, почему там значится "хранилище": потому, что используя подобный индекс мы можем ЛЕГКО восстановить каждую исходную строку (текст!) по ее уникальному хеш-ключу. _____________________________________ Очень хотелось бы услышать содержательные комментарии ... в частности, - делает ли кто-нибудь подобные индексы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2004, 15:20 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
Иван FXS в частности, - делает ли кто-нибудь подобные индексы? Подобные - подобным алгоритмом, или подобные - уникальные индексы для фиксированного набора строк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2004, 20:58 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
Подобные индексы - для "больших контентов". Подобные индексы - то есть индексы строк, рекурсивно увязанных СО ВСЕМИ их "подстроками" вплоть до "словоформ"... И дальше - как можно такие индексы ИСПОЛЬЗОВАТЬ? Акромя как - в качестве ХРАНИЛИЩА строк ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2004, 14:07 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
На самом деле это какие-то странные индексы :) На счёт эффективности такого хранилища, тоже есть сомнения. На каждом шаге деления, кол-во текстов требующих уникальный ключ растёт как 2^n. Если тексты в "контенте" действительно большие, то кол-во строк проиндексированных "просто так" не плохо разрастётся, пока не начнут появляться одинаковые фрагменты текста. Опять же, выбор терминальных символов не тривиальная задача. Если хеш-функции описанной в п.3 нет и задавать последнюю путём перечисления, то процесс вычисления хеш-функции сильно усложнится. Фактически придётся фиксировать правило разбияния строки "пополам" и каждую строчку разбивать до терминальных символов, а потом в обратном порядке восстанавливать хеш, пробегая для этого по списку всех пар (key1, key2), короче мало приятного. А если такая хеш-функция есть, то почему бы её и не использовать в качестве ключа? Восстановление значения по сложному ключу будет порядка (ln(кол-во захешированных подстрок) т.е. пробежки по таблице связей), а пробежка по исходным строкам в хеш-таблице(ln(исходное число строк)). Эффект сжатия достигаемый за счёт кодирования терминальными символами (если цель экономия памяти и т.п.) можно обеспечить и по другому. Например, при помощи статического алгоритма Хафмана. По крайней мере будет уверенность, что сжатие оптимально, в отличиии от выбора терминальных символов от балды. Хранить тексты в виде древовидных структур (леса) тоже никто не запрещает. Для текстов, где действительно много общих частей, получим экономию. Однако при этом индексировать промежуточные узлы деревьев нет необходимости (что происходит в описанном алгоритме). Такие индексы могли бы прокатить для поиска подстрок, если терминальные символы были бы примитивами (буквами, знаками припинания). Но про эффективность/не эффективность такого алгоритма говорить не стану :) Кроче говоря, исходный алгоритм, это три задачи в одной, и чем он лучше решения трех задач по отдельности не ясно :) --- Выше написанное, это поверхностный взгляд на вопрос. В полне возможно, что в чём-то я не прав :) И дальше - как можно такие индексы ИСПОЛЬЗОВАТЬ? Акромя как - в качестве ХРАНИЛИЩА строк ... Обычно сначала ставят задачу, а потом ищут её решение, а не на ходят какое-то решение и думают потом для какой же оно задачи. Хотя всякое бывает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2004, 14:57 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsНа каждом шаге деления, кол-во текстов требующих уникальный ключ растёт как 2^n. - на каждом шаге растёт в два раза, - Вы, наверное, это хотели сказать? NotGonnaGetUsЕсли тексты в "контенте" действительно большие, то кол-во строк проиндексированных "просто так" не плохо разрастётся, пока не начнут появляться одинаковые фрагменты текста.- дык, мы же не хаос собирается индексировать, а ЧЕЛОВЕЧЕСКИЕ тексты ... есть ПРЕДПОЛОЖЕНИЕ, что "одинаковых фрагментов текста" там довольно много ... NotGonnaGetUsЕсли хеш-функции описанной в п.3 нет ... А если такая хеш-функция есть, то почему бы её и не использовать в качестве ключа?- хеш-функция ЕСТЬ, именно она и используется в качестве ключа. NotGonnaGetUsЭффект сжатия достигаемый за счёт кодирования терминальными символами ...- основной "эффект сжатия" я предполагаю достигаемый не за счёт терминальных символов, а за счёт наличия "одинаковых фрагментов текста". NotGonnaGetUsХранить тексты в виде древовидных структур (леса) тоже никто не запрещает. Однако при этом индексировать промежуточные узлы деревьев нет необходимости (что происходит в описанном алгоритме).- не понял: а как их - тогда - идентифицмровать??? NotGonnaGetUsОбычно сначала ставят задачу, а потом ищут её решение, а не на ходят какое-то решение и думают потом для какой же оно задачи. Хотя всякое бывает :)- так то - обычно! ;-) Есть такое слово - интуиция ... Она мне подсказывает, - что-то в этом есть ... а чтобы разобраться, что именно, - для этого я на форумы и вылезаю. Получишь несколько раз по голове и ... картина прорисовывается! ;-) А если серьезно - насчет задачи ... без всякого сомнения, присутствует задача ... ммм ... социолингвистики: посмотреть - статистически - какие строки (не слова, а ... что-то намного более длинное) насколько часто встречаются в ... окрухающих нас контентах. Ну и - семантикая всякая ... сети семантические и прочее ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2004, 10:47 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
Иван FXSПри помощи некоторого алгоритма хеширования мы составляем "индекс", понимаемый как список уникальных (!) хеш-ключей всех текстов, входящих в данный контент. ... Значения полей: key - хеш-ключ описываемой текстовой строки (= уникальный идентификатор строки таблицы!), ... 5. Возвращаясь к subj-у, - понятно, почему там значится "хранилище": потому, что используя подобный индекс мы можем ЛЕГКО восстановить каждую исходную строку (текст!) по ее уникальному хеш-ключу. Еще раз. Хеш-ключ (значение хэш-функции) по определению не может быть уникальным . Не может быть уникального идентификатора исходной строки, полученного путем вычисления хэш-функции. И нельзя по хэш-ключу восстановить исходный ключ. Иначе это не хэш-функция просто. Я думаю, ты не в том направлении роешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2004, 10:48 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
Иван FXS 5. Возвращаясь к subj-у, - понятно, почему там значится "хранилище": потому, что используя подобный индекс мы можем ЛЕГКО восстановить каждую исходную строку (текст!) по ее уникальному хеш-ключу. это не так. нельзя восстановить строку по ключу. возьми какую-нибудь библиотеку, реализующую zip, или rar, или другой архиватор. Многие такие библиотеки компрессируют строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2004, 22:15 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
Коллеги MasterZiv и S.G.! С прискорбием сообщаю, что вы ничегошеньки не поняли. ;-) ________________________________ "Хеш-ключ (значение хэш-функции) по определению не может быть уникальным" - это банальность, которую уже не интересно обсуждать. Я различаю хэш-функцию и ПРАКТИЧЕСКИЙ хэш-алгоритм (см. об этом Q: "многомерное хеширование" - Голова, ноги ... хвост!!! ). Впрочем, буду черезвычайно признателен, если вы приведете пример двух ОСМЫСЛЕННЫХ фраз, у которых CRC32 совпадает (про MD5 я не вспоминаю, - это было бы слишком жестоко ;-) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2004, 10:06 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
Ты когда-нибудь видел утконоса ? Нет ? Но это же не значит, что он не существует. "Я больше не буду тебе помогать. Мне это ... неинтересно". (С) Евгений Шварц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2004, 10:28 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
Иван FXS NotGonnaGetUsНа каждом шаге деления, кол-во текстов требующих уникальный ключ растёт как 2^n. - на каждом шаге растёт в два раза, - Вы, наверное, это хотели сказать? Именно это мы и сказали. NotGonnaGetUsЕсли тексты в "контенте" действительно большие, то кол-во строк проиндексированных "просто так" не плохо разрастётся, пока не начнут появляться одинаковые фрагменты текста.- дык, мы же не хаос собирается индексировать, а ЧЕЛОВЕЧЕСКИЕ тексты ... есть ПРЕДПОЛОЖЕНИЕ, что "одинаковых фрагментов текста" там довольно много ... Да хоть набор букв. В текстах часто могут повторяются "слова", а не "наборы слов" - т.е. группы предложений, предложений, части приложений. NotGonnaGetUsЕсли хеш-функции описанной в п.3 нет ... А если такая хеш-функция есть, то почему бы её и не использовать в качестве ключа?- хеш-функция ЕСТЬ, именно она и используется в качестве ключа. У нас разногласие в терминах. Хеш-функция вычисляется для любой строки и даёт в общем случаее не уникальное значение - т.е. восстановить строку по занчению хеш-функции нельзя. Ключ - уникальный идентификатор. Он взаимнооднозначно связывается с набором каких-то объектов. NotGonnaGetUsЭффект сжатия достигаемый за счёт кодирования терминальными символами ...- основной "эффект сжатия" я предполагаю достигаемый не за счёт терминальных символов, а за счёт наличия "одинаковых фрагментов текста". Я же не говорил, что это основной эффект - так? Про деревья отдельный разговор. NotGonnaGetUsХранить тексты в виде древовидных структур (леса) тоже никто не запрещает. Однако при этом индексировать промежуточные узлы деревьев нет необходимости (что происходит в описанном алгоритме).- не понял: а как их - тогда - идентифицмровать??? ? Лес служит для хранения строк. Вершина дерева идентифицирует строку. Строка идетифицируется ключём. Ключ -> вершина -> строка. А если серьезно - насчет задачи ... без всякого сомнения, присутствует задача ... ммм ... социолингвистики: посмотреть - статистически - какие строки (не слова, а ... что-то намного более длинное) насколько часто встречаются в ... окрухающих нас контентах. Ну и - семантикая всякая ... сети семантические и прочее ... Забавно. Я на этот алгоритм смотрел с других позиций :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2004, 17:30 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs NotGonnaGetUsЕсли тексты в "контенте" действительно большие, то кол-во строк проиндексированных "просто так" не плохо разрастётся, пока не начнут появляться одинаковые фрагменты текста.- дык, мы же не хаос собирается индексировать, а ЧЕЛОВЕЧЕСКИЕ тексты ... есть ПРЕДПОЛОЖЕНИЕ, что "одинаковых фрагментов текста" там довольно много ... Да хоть набор букв. В текстах часто могут повторяются "слова", а не "наборы слов" - т.е. группы предложений, предложений, части приложений. - не очень понял, с чем и о чем Вы - в этом месте полемизируете ... Но я-то как раз считаю, что НЕ ТОЛЬКО слова, но и "наборы слов" в ЧЕЛОВЕЧЕСКИХ ... ммм ... потоках символов часто повторяются: намного чаще, чем они повторялись бы в "хаотических" потоках. NotGonnaGetUsхеш-функция ЕСТЬ, именно она и используется в качестве ключа.У нас разногласие в терминах. Хеш-функция вычисляется для любой строки и даёт в общем случаее не уникальное значение - т.е. восстановить строку по занчению хеш-функции нельзя. Ключ - уникальный идентификатор. Он взаимнооднозначно связывается с набором каких-то объектов. - разногласие в терминах - наверное ... Я обсуждаю уникальный идентификатор, постороенный НА ОСНОВЕ хеш-функции. Такой идентификатор полезен тем, что он "почти вычислимый": после вычисления хеш-функции - нужно только произвести некоторую ОГРАНИЧЕСННУЮ работу по так называемому "разрешению коллизий". Да, "хеш-функция ... в общем случае не уникальное", но насколько эта "в общем случае неуникальность" практически значима? Например, MD5 ... дайджест длиной 128 бит ... какова для него ЗНАЧИМОСТЬ коллизий? NotGonnaGetUsЛес служит для хранения строк. Вершина дерева идентифицирует строку. Строка идетифицируется ключём. Ключ -> вершина -> строка. - как ССЫЛАТЬСЯ на ветки, если им не присвоены ИДЕНТИФИКАТОРЫ? Вот о чем было мое недоумение! Мы же должны записать ТРОЙКУ ( key,key1,key2 )! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2004, 19:04 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
Иван FXS- не очень понял, с чем и о чем Вы - в этом месте полемизируете ... Но я-то как раз считаю, что НЕ ТОЛЬКО слова, но и "наборы слов" в ЧЕЛОВЕЧЕСКИХ ... ммм ... потоках символов часто повторяются: намного чаще, чем они повторялись бы в "хаотических" потоках. Я не обсуждаю человеческие ммм потоки. Речь об вашем алгоритме :) Он выделяет не одинаковые "наборы слов", а "половины текстов". Тексту придётся раздробиться до уровня слов, пока не начнутся массовые повторения. Это моя "интуиция" если вам так угодно :) - разногласие в терминах - наверное ... ... Например, MD5 ... дайджест длиной 128 бит ... какова для него ЗНАЧИМОСТЬ коллизий? Я просто говорю, что если вы научились считать уникальный хеш, то он сам по себе уже ключ(или идентификатор), и нет смысла городить из него тройку. - как ССЫЛАТЬСЯ на ветки, если им не присвоены ИДЕНТИФИКАТОРЫ? Вот о чем было мое недоумение! Мы же должны записать ТРОЙКУ ( key,key1,key2 )! По вашему утверждению key0 уникален. Какие проблемы в том, что бы пометить им вершину? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2004, 15:01 |
|
||
|
Индекс , он же - хранилище (строк)
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsЯ просто говорю, что если вы научились считать уникальный хеш, то он сам по себе уже ключ(или идентификатор), и нет смысла городить из него тройку. - "тройка" нужна для того, чтобы ВОССТАНАВЛИВАТЬ (по идентификатору) исходную строку ... отсюда - в названии ветки - "он же - хранилище". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2004, 15:22 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=215&tid=1348159]: |
0ms |
get settings: |
13ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
111ms |
get tp. blocked users: |
2ms |
| others: | 262ms |
| total: | 466ms |

| 0 / 0 |
