ИТЕРАЦИОННЫЙ СПОСОБ ПОЛУЧЕНИЯ ФУНКЦИИ ПОХОЖЕСТИ МЕЖДУ ОБЪЕКТАМИ СО ССЫЛКАМИ
ITERATIVE METHOD OBTAINING SIMILARITY FUNCTIONS BETWEEN OBJECTS WITH LINKS

Изобретение относится к области цифровых вычислений и обработки данных при определении семантической похожести между объектами со ссылками и может быть использовано, например, при построении машинных алгоритмов определения похожести объектов, коллаборативной фильтрации, устранении семантических неоднозначностей, классификации, кластеризации, семантического поиска, интеллектуальной проверки орфографии, перевода.
Для удобства изложения и понимания рассмотрим основные понятия.
1. Гипертекстовая энциклопедия (далее для краткости просто «энциклопедия» или «база данных») - совокупность информации, состоящая из объектов и ссылок между объектами. Каждый объект представляет собой некоторую энциклопедическую концепцию (которая может быть интересна читателю), например, «Город Москва» или «Теорема Пифагора». Каждый объект может иметь ссылки на другие объекты, где ссылка обозначает отношение взаимосвязи между двумя объектами: (i) тем объектом, который ссылается, и (ii) тем объектом, на который ссылаются при помощи ссылки. Помимо ссылок, каждый объект, содержащийся в энциклопедии, может иметь произвольные дополнительные данные, относящиеся к данному объекту, например: текстовое имя концепции, тип сущности («имя собственное», «существительное» и т.п.), текстовое описание сущности. Какой-либо конкретный формат или содержимое подобных дополнительных данных у объектов в настоящей модели не фиксируется и может быть произвольным.
2. Предполагается, что у каждого объекта в энциклопедии имеется некоторый идентификатор, по которому объект может быть однозначным образом найден в энциклопедии. Таким идентификатором может быть: (а) уникальное целое число, которое сопоставляется с объектом при его создании в энциклопедии; (б) имя соответствующей энциклопедической сущности; или (в) любой другой способ однозначного нахождения объекта в энциклопедии, например указатель в терминах языка программирования или первичный ключ в случае использования реляционной модели для представления энциклопедии. В последующем, употребляя слово «объект», мы будем иметь в виду его идентификатор, подразумевая при этом, что дополнительные данные, которыми обладает объект (и которые потенциально могут иметь большой размер хранения), из базы данных не копируются, но действия производятся с компактным идентификатором.
3. Предполагается, что для идентификатора каждого объекта, содержащегося в базе данных, база позволяет просканировать внутреннюю структуру данного объекта и получить идентификаторы всех объектов, ссылки на которые он имеет. Аналогичным образом, предполагается, что для идентификатора каждого объекта база позволяет получить идентификаторы всех объектов, которые имеют ссылки на данный.
В практической деятельности часто актуальной является задача определения степени семантической похожести между парой объектов в энциклопедии. Данная задача складывается из двух аспектов:
1) имея пару объектов из энциклопедии, определить степень похожести между ними.
2) имея один объект из энциклопедии, определить максимально похожие на него объекты в порядке убывания похожести.
Похожесть между энциклопедическими объектами имеет несколько практических приложений, например, если человеку-читателю энциклопедии интересен некоторый объект энциклопедии, то читателю, скорее всего, будут интересны и семантически близкие объекты энциклопедии, т.е. те, на которые данный объект похож.
а
b
a
b
s
Для формализации семантической похожести между объектами энциклопедии вводится функция похожести, которая в общем случае определяется как функция от пары объектов как аргументов - похожесть (, ) - и значения которой для любой пары объектов принадлежат отрезку от 0 до 1. При этом значение похожести, равное 1, означает максимальную похожесть между парой объектов; обычно максимальная похожесть достигается для пары тождественных объектов. В противоположность, значение похожести, равное нулю, означает непохожесть пары объектов. Функция похожести хранится в памяти вычислительной машины как совокупность троек (, , ); первые две компоненты в каждой тройке являются идентификаторами объектов, похожесть которых специфицирует данная тройка, а третья компонента содержит значение похожести.
Известна мера похожести "SimRank", которая определяет значения похожести между объектами в энциклопедии, описанная в «Glen Jeh, and Jennifer Widom. SimRank: A measure of structural-context similarity. In Proceedings of the 8-th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 538-543, 2002» [1]. B модели данных меры SimRank используют только два типа сущностей из энциклопедии: объекты и ссылки между объектами. Основная предпосылка модели формулируется так: «два объекта похожи, если на них ссылаются похожие объекты». Поскольку данная предпосылка формулирует понятие похожести через саму себя, то базовой предпосылкой в модели SimRank служит утверждение: «каждый объект считается максимально похожим на себя самого», т.е. имеющим с самим собой значение похожести, равное единице.
a
а
s
a
b
а
b
Обозначая под I() множество всех тех объектов в энциклопедии, которые имеют ссылки на объект , мера похожести SimRank получает следующую формулировку. В качестве базового случая, каждый объект имеет максимальную похожесть с самим собой, т.е. (, )=1. В общем случае, похожесть пары объектов  и  выражается через похожесть объектов, которые на них ссылаются, т.е.
а
b
Здесь С является константой, значение которой принадлежит интервалу от 0 до 1 и которая называется коэффициентом затухания. Значение константы С определяет, насколько сильно значение похожести пары объектов зависит от тех объектов, которые на них ссылаются. Нотация  обозначает количество объектов в энциклопедии, имеющих ссылку на объект ; нотация  обозначает аналогичное для объекта .
Поскольку формула для определения похожести объектов является рекурсивной, то для определения похожести на практике используется итеративная модель вычисления. В итеративной модели начальное (нулевое) значение похожести между объектами определяется как единица для одного и того же объекта и как ноль для разных объектов. В процессе итеративного вычисления похожесть пары объектов на данной итерации вычисляется через похожесть объектов на предыдущей итерации, как
4
24
2
Известна сходимость вышеописанного итеративного процесса, причем значения похожести, достигаемые через К=5 итераций, считаются достаточно точными для того, чтобы считать их теоретическими значениями похожести. Однако для вышеописанного способа вычисления количество требуемых операций в общем случае равно O(n), где число n равно количеству объектов в энциклопедии. Ввиду такого большого количества требуемых операций, для энциклопедий (баз данных) с большим количеством объектов (единиц хранения) использование известного способа вычисления значений похожести оказывается практически неприменимым. Например, для энциклопедии, содержащей 1 миллион объектов, вычисление значений похожести потребует порядка 10вычислительных операций. Даже при способности современных вычислительных машин к выполнению десятков миллиардов операций в секунду, выполнение такого объема вычислений потребует многих лет работы вычислительной машины, что является практически неприемлемым. Другим ограничивающим фактором при вычислении значений похожести является объем машинной памяти, требуемой для хранения итеративных и результирующих значений похожести. Непосредственное хранение значения похожести для каждой пары объектов из энциклопедии требует в целом порядка n единиц памяти. Так, для энциклопедии с 1 миллионом объектов размер требуемой памяти для известного способа хранения значений похожести составляет несколько Терабайтов, что не может быть предоставлено аппаратурой большинства современных стандартных вычислительных машин. Приведенные оценки для количества требуемых операций и памяти показывают, что известный способ является неприменимым для типичных электронных энциклопедий, и это является основным недостатком известного способа.
Решаемая изобретением техническая задача состояла в создании способа вычисления похожести объектов из энциклопедии, основанного на модели SimRank, обеспечивающего вычисление значений семантической похожести для существующих энциклопедий, существенно уменьшив необходимое число операций и памяти для получения результата с той же точностью, которая достигается при использовании модели SimRank.
а
b
a
b
а
b
а
а
а
а
и
и
v
v
v
b
v
b
b
а
b
v
b
v
v
и
а
и
v
r
0
K+1
K+2
Сущность изобретения состоит в том, что предложен итерационный способ получения функции похожести между объектами со ссылками, хранящимися в базе данных ЭВМ, по которому каждому объекту базы данных присваивают индивидуальный идентификатор, для пары сравниваемых объектов, имеющих идентификаторы  и , задают начальное приближенное значение для функции похожести R(, ), равное единице, если идентификаторы объектов  и совпадают, и нулю в противном случае, задают коэффициент затухания С, имеющий любое постоянное положительное значение больше 0 и меньше 1, задают количество итерации К, проводимых для вычисления значений похожести, имеющее положительное целочисленное значение больше единицы, вычисляют значение константы Δ по формуле Δ=C-C, в памяти вычислительной машины выделяют массив частичных сумм Р, количество ячеек хранения в котором равно количеству объектов в базе и каждая ячейка которого предназначена для хранения вещественного числа либо специального значения «значение ячейки не определено», при этом каждому объекту из базы сопоставляют индивидуальную ячейку в выделенном массиве, причем первоначально все ячейки в массиве имеют значение «не определено», выделяют память под множество один Т и множество два Е, причем оба множества на момент создания пусты, выделяют ячейку памяти k под целочисленный тип данных, для хранения номера текущей итерации, производят К+1 итерацию, при этом числовое значение в ячейке k последовательно меняют от 1 до К+1, причем на каждой итерации вычисляют значение константы , кроме того, последовательно сканируют каждый объект в базе, и для каждого идентификатора  сканируемого объекта, если текущая итерация не является последней (т.е. k≠К+1), то в базе проверяют наличие ссылок из объекта, соответствующего идентификатору , на другие объекты, при этом, если у объекта отсутствуют такие ссылки, то последующие шаги алгоритма для данного объекта на данной итерации пропускают, в противном случае заполняют элементы множества Т для объекта  таким образом, что множество Т состоит из всех таких объектов, которые имеют ненулевую похожесть в соответствии с предыдущей итерацией с каким-либо объектом, имеющим ссылку на а, при этом для заполнения элементов множества Т производят сканирование всех объектов, имеющих в базе ссылку на объект , и для каждого такого объекта, обозначаемого , производят запрос к функции похожести от предыдущей итерации для получения набора всех объектов, имеющих с  ненулевую похожесть, обозначают их , и для каждого такого объекта  производят добавление этого объекта к множеству Т, кроме того, на основании элементов множества Т заполняют элементы множества Е, для этого производят сканирование всех элементов множества Т, и для каждого объекта  этого множества производят запрос к базе на получение всех объектов , таких, на которые имеется ссылка с объекта , при этом все объекты  добавляют к множеству Е, при этом для каждого объекта  из множества Е в памяти вычислительной машины выделяют ячейку вещественного типа, на которую в дальнейшем ссылаются по имени r, вещественное число, содержащееся в данной ячейке, обозначает значение близости между объектами  и, и первоначально в ячейку записывают нулевое значение, при этом производят последовательный обход по базе всех объектов , которые имеют ссылку на объект , и для каждого такого объекта  проверяют, определено ли значение ячейки в массиве частичных сумм Р, соответствующей объекту , если это значение не определено, то производят обход всех объектов , которые в базе имеют ссылку на объект , значения похожести по предыдущей итерации между объектами   и  суммируют, и в ячейку массива частичных сумм записывают полученную сумму , при этом значение ячейки  увеличивают на значение ячейки из массива частичных сумм, после этого значение, содержащееся в ячейке r, умножают на величину ,
а
где  обозначает количество объектов в базе, имеющих ссылку на объект ,
b
r
а
b
r
а
b
r
а
b
а
b
а
b
k
k
K+1
обозначает аналогичное для объекта , при этом если значение, содержащееся в ячейке , превосходит величину порога δ, то к функции похожести R добавляют тройку (, , ), отражающую информация о том, что значение похожести между объектами  и  на текущей итерации равно величине, содержавшейся в ячейке , при этом множества Т и Е очищают, удаляя все содержащиеся в них идентификаторы объектов, а все ячейки в массиве частичных сумм Р перезаписывают неопределенными значениями, при этом для каждой пары объектов  и значение функции похожести R (, ), полученное на последней итерации, принимают как результирующее значение похожести объектов  и , а функцию похожести, полученную на последней итерации, сохраняют в постоянной памяти вычислительной машины для последующего использования в приложениях, которым нужна мера похожести объектов из базы данных ЭВМ.
Кроме того, при вычислениях значение коэффициента затухания могут выбирать равным 0.6, а К могут выбирать равным 5.
3
Технический результат использования предлагаемого изобретения состоит в том, что изобретение позволяет получать значения похожести между объектами электронной энциклопедии за значительно меньшее количество вычислительных операций и с более экономным использованием памяти, чем известный ранее способ, что делает практически выполнимым вычисление значений похожести между всеми объектами электронной энциклопедии типичного размера ресурсами стандартной ЭВМ. Так, при количестве объектов в энциклопедии, равном n, и при общем количестве ссылок в энциклопедии, равном l, предлагаемое изобретение обеспечивает вычисление значений похожести для всех пар объектов энциклопедии за количество операций O(nl). Даже в самом неблагоприятном с вычислительных позиций случае, когда каждый объект в энциклопедии имеет ссылку на каждый другой объект (что крайне маловероятно для практической энциклопедии), предлагаемое изобретение обеспечивает вычисление значений похожести за количество операций, не большее O(n), что является значительным улучшением по сравнению с известным ранее способом. Поскольку в типичной энциклопедии присутствует гораздо меньшее количество ссылок, изобретение обеспечивает на практике еще более значительный вычислительный выигрыш при вычислении значений похожести. Помимо улучшения по количеству операций, изобретение также обеспечивает уменьшение объема машинной памяти, используемой для хранения значений похожести, что делает вычисление значений похожести для электронных энциклопедий менее требовательным к ресурсам вычислительных машин.
Технический результат достигается за счет того, что предлагаемый в заявке способ оптимизации вычислений основан на следующих трех принципах:
- Выбор только тех пар объектов, для которых вычисление значения итеративной похожести реально необходимо.
- Уменьшение количества операций при суммировании.
- Сохранение только достаточно больших значений похожести (прочие значения похожести принимаются нулевыми).
Уменьшение объема машинной памяти при хранения значений похожести достигается за счет следующих факторов:
- Все тройки, в совокупности образующие функцию похожести, имеют попарно различные первые две компоненты (т.е. значение похожести для любой пары объектов хранится не более одного раза).
- С целью экономии памяти вычислительных машин в функции похожести не хранятся следующие виды троек: (а) для пар объектов, имеющих нулевую похожесть; (б) для объекта с самим собой, поскольку в последнем случае значение похожести заранее известно и равно единице по определению похожести.
На чертеже представлен пример базы данных, состоящей из объектов и ссылок между объектами, где в прямоугольниках указаны объекты, а стрелками указанны ссылки.
Изобретение работает следующим образом.
K+1
K+2
1. Вычисляется значение константы Δ вещественного типа, определяемое как Δ=C-C, где верхний индекс обозначает операцию возведения в степень. Данная константа задает максимальную погрешность, которая может возникать ввиду отбрасывания малых значений похожести по ходу последующих шагов алгоритма. Заметим, что поскольку С<1, то Δ имеет положительное значение.
0
2. Задается начальное (нулевое) приближение для функции похожести: R(a, b), равное единице, если идентификаторы объектов а и b совпадают (т.е. идентифицируют один и тот же объект в базе), и нулю в противном случае. Заметим, что в соответствии со способом хранения, принятым для функции похожести, нулевое приближение для функции похожести не требует памяти вычислительной машины для хранения. (Все тройки, в совокупности образующие функцию похожести, имеют попарно различные первые две компоненты (т.е. значение похожести для любой пары объектов хранится не более одного раза). С целью экономии памяти вычислительных машин в функции похожести не хранятся следующие виды троек: (а) для пар объектов, имеющих нулевую похожесть; (б) для объекта с самим собой, поскольку в последнем случае значение похожести заранее известно и равно единице по определению похожести.)
3. В памяти вычислительной машины выделяется массив частичных сумм Р, количество ячеек хранения в котором равно количеству объектов в базе и каждая ячейка которого предназначена для хранения вещественного числа либо специального значения «значение ячейки не определено». Каждому объекту из базы сопоставляется индивидуальная ячейка в выделенном массиве. Первоначально все ячейки в массиве имеют значение «не определено».
4. Выделяется память под два множества, к которым мы будем в дальнейшем обращаться по именам Т и Е. Оба множества на момент создания пусты, назначение множеств рассказывается на последующих шагах алгоритма, где будет производиться добавление идентификаторов объектов к множествам.
5. Заводится ячейка памяти под целочисленный тип данных, к которой мы в дальнейшем обращаемся по имени k и которая в каждый момент времени содержит номер текущей итерации. Производится К+1 итерация, т.е. числовое значение в ячейке k последовательно меняется от 1 до К+1. На каждой итерации выполняются следующие действия.
k
a) вычисляется значение константы δ вещественного типа, определяемое как  Данная константа фиксирует величину порога для значений похожести на текущей итерации;
а
b) последовательно сканируется каждый объект в базе, и для каждого идентификатора  текущего объекта выполняются следующие действия:
а
а
i) Если текущая итерация не является последней (т.е. k≠K+1), то в базе проверяется наличие ссылок из объекта, соответствующего идентификатору , на другие объекты. Если у объекта отсутствуют такие ссылки, то последующие шаги алгоритма для данного объекта на данной итерации пропускаются. (В работе «Dmitry Lizorkin, Pavel Velikhov, Maxim Grinev and Denis Turdakov. Accuracy estimate and optimization techniques for SimRank computation. Proceedings of the 34-th international conference on Very Large Data Bases (VLDB-2008), 1(1):422-433, 2008» [2], Утверждение 4 и Следствие 1, доказывается, что в описанном случае вычислять попарную похожесть объекта  с другими объектами не требуется.)
а
а
а
и
ii) Заполняются элементы множества Т для объекта : множество Т состоит из всех таких объектов, которые имеют ненулевую похожесть в соответствии с предыдущей итерацией с каким-либо объектом, имеющим ссылку на . Для заполнения элементов множества Т производится сканирование всех объектов, имеющих в базе ссылку на объект , и для каждого такого объекта :
и
(1) Производится запрос к функции похожести от предыдущей итерации для получения набора всех объектов, имеющих с  ненулевую похожесть.
v
(2) Для каждого такого объекта  производится добавление этого объекта к множеству Т.
v
iii) На основании элементов множества Т заполняются элементы множества Е. Для этого производится сканирование всех элементов множества Т, и для каждого объекта  этого множества:
b
v
(1) Производится запрос к базе на получение всех объектов , таких, на которые имеется ссылка с узла .
b
(2) Все объекта  добавляются к множеству Е.
b
iv) Для каждого объекта  из множества Е выполняются следующие действия
а
(Для прочих узлов в базе вычисление их похожести с узлом  на данной итерации не требуется, что доказывается в работе [2], Утверждение 3.)
r
а
b
(1) В памяти вычислительной машины выделяется ячейка вещественного типа, на которую мы будем в дальнейшем ссылаться по имени . Вещественное число, содержащееся в данной ячейке, обозначает значение близости между объектами и , и первоначально в ячейку записывается нулевое значение.
v
b
v
(2) Производится последовательный обход по базе всех объектов , которые имеют ссылку на объект, и для каждого такого объекта производятся следующие действия:
v
и
а
и
v
(a) Проверяется, определено ли значение ячейки в массиве частичных сумм Р, соответствующей объекту . Если это значение не определено, то производится обход всех объектов , которые в базе имеют ссылку на объект , значения похожести по предыдущей итерации между объектами  и  суммируются, и в ячейку массива частичных сумм записывается полученная сумма:
r
(b) Значение ячейки  увеличивается на значение этой ячейки из массива частичных сумм: r+=P(v).
(3) Значение, содержащееся в ячейке r, умножается на величину: .
а
b
Здесь нотация  обозначает количество объектов в базе, имеющих ссылку на объект; нотация  обозначает аналогичное для объекта .
r
а
b
r
а
b
r
k
k
(4) Если значение, содержащееся в ячейке , превосходит величину порога δ, то к функции похожести R добавляется тройка (, , ), т.е. информация о том, что значение похожести между объектами  и  на текущей итерации равно величине, содержавшейся в ячейке .
а
b
K+1
K+1
v) Множества Т и Е очищаются (т.е. из них удаляются все содержащиеся в них идентификаторы объектов). Все ячейки в массиве частичных сумм Р перезаписываются неопределенными значениями. Для каждой пары объектов  и  значение функции похожести R (а, b), полученное на последней итерации, принимается как результирующее значение похожести соответствующих объектов. Функция похожести, полученная на последней итерации, сохраняется в постоянной памяти вычислительной машины для последующего использования в приложениях, которым нужна мера похожести объектов из базы. (В работе [2], Утверждение 7 доказывается, что посчитанные в соответствии с приведенным выше алгоритмом значения похожести отличаются от теоретической похожести SimRank не более чем на величину C, что совпадает с точностью неоптимизированного итеративного вычисления.)
При этом следует иметь в виду следующее:
а
b
а
b
d
а
b
d
а
b
m
1. Коэффициент затухания С в модели SimRank варьируется в пределах 0<С<1 и определяет, насколько сильно влияет на значение похожести объекта  и  объект, который ссылается на  и  посредством цепочки ссылок. А именно, если из объекта  ведет цепочка ссылок длины m к объекту  и цепочка ссылок такой же длины к объекту , то вклад объекта  в похожесть объектов  и  в модели SimRank пропорционален величине С. Таким образом, при выборе маленького значения С вклад похожести по цепочкам ссылок затухает быстрее. Значение С может быть выбрано любым в пределах 0<С<1 в зависимости от конкретной прикладной области; в большинстве случаев может быть рекомендовано значение С=0.6.
2. Традиционно для SimRank для итераций, проводимых для вычисления значений похожести, используется значение К=5; в работе [2] было доказано, что это значение в большинстве случаев обеспечивает достаточную точность результата.
Пример работы итерационного способа получения функции похожести между объектами базы данных, представленной на чертеже.
Опишем последовательность машинных действий по вычислению значений семантической похожести между парами объектов в приведенном на чертеже примере.
Для данного примера будем использовать величину коэффициента затухания, равную С=0.6, и величину числа итераций, равную К=2. (Для практических вычислений используется большее число итераций, К=5, однако для целей данного примера меньшее количество итераций обеспечивает достаточную иллюстрацию предлагаемого алгоритма.)
K+1
K+2
2+1
2+2
1) Определяем величину Δ, через значение которой определяются величины порогов на каждой из итераций: Δ=C-C=0.6+0.6=0.0864.
0
0
2) Задаем начальное приближение для значений похожести R(а, b), равное 1 для одного и того же объекта и 0 для разных объектов. В терминах хранения значений похожести в вычислительной машине нулевые значения похожести и значения похожести для объекта с самим собой (всегда равное 1) физически не хранятся. Данное соглашение позволяет экономить ресурсы памяти вычислительных машин и позволяет однозначно узнать значение похожести для любой пары объектов: если для этой пары объектов значение похожести не хранится, то это означает, что это значение похожести равно 0 в случае различных объектов и равно 1 в случае одного и того же объекта. При сделанных соглашениях начальное приближение для значений похожести R(а, b) не требует никаких ресурсов памяти для хранения значений похожести.
3) Выделяем в памяти вычислительной машины массив частичных сумм Р, количество ячеек хранения в котором равно количеству объектов в примере (8 объектов) и каждая ячейка которого предназначена для хранения вещественного числа либо специального значения «значение ячейки не определено». Каждому объекту сопоставляется индивидуальная ячейка в выделенном массиве.
4) Выделяем память под множества Т и Е. Каждое из множеств используется на последующих шагах для хранения некоторых объектов из базы. А именно для сканируемого объекта множество Е будет содержать все объекты, для каждого из которых на данной итерации необходимо вычислить похожесть со сканируемым объектом; множество Т - это вспомогательное множество, используемое для конструирования содержимого множества Е. Поскольку каждое из множеств Т и Е состоит из объектов базы, то каждое из множеств по максимуму может содержать столько элементов, сколько имеется объектов в базе (т.е. максимум 8 для данного примера). На момент создания оба множества пусты (т.е. не содержат ни одного объекта).
5) Производим первую итерацию: k=1:
а) Определяем значение порога для первой итерации:
b) Последовательно рассматриваем каждый объект (чтобы вычислить для него его похожесть со всеми остальными объектами на данной итерации).
а
c) Рассматриваем объект =«Дорога»:
а
i) Анализируем ячейку хранения для данного объекта в базе со ссылками и определяем, имеет ли данный объект ссылки на какие-либо другие объекты в базе. Поскольку объект  не ссылается ни на какой другой объект и поскольку текущая итерация не является последней, то для данного объекта никаких действий на данной итерации не требуется.
d) Полностью аналогичным образом обрабатываются объекты «Автомобиль», «Самолет» и «Вертолет», поскольку ни один из этих объектов также не имеет ссылок на другие объекты в базе со ссылками.
а
e) Рассматриваем объект =«Транспорт»:
i) Поскольку данный объект имеет в базе ссылки на другие объекты, то для этого объекта производятся последующие действия.
а
ii) Считываем ячейку хранения для данного объекта и находим все объекты, которые ссылаются на данный. Поскольку ни один объект не ссылается на объект , то и множество Т является пустым.
iii) Поскольку множество Е состоит из всех объектов, на которые ссылается хотя бы один объект из множества Т, и множество Т - пустое, то пустым является и множество Е.
а
iv) Так как множество Е пусто, то нет ни одного объекта, который имеет ненулевую похожесть с данным объектом =«Транспорт», поэтому действия над этим объектом в данной итерации завершаются.
f) Полностью аналогичным образом обрабатывается объект «Автомобильная инфраструктура», и для него нет ни одного похожего объекта для данной итерации.
а
g) Рассматриваем объект =«Наземный транспорт»:
i) Данный объект имеет ссылки на другие объекты в базе со ссылками, поэтому для данного объекта выполняются последующие действия.
а
ii) Множество Т (состоящее из всех объектов, которые имеют ненулевую похожесть по предыдущей итерации с каким-либо объектом, имеющим ссылку на данный объект ) состоит из единственного элемента - объекта «Транспорт».
а
iii) Множество существенных объектов Е для данного объекта =«Наземный транспорт» включает в себя сам этот объект и объект «Воздушный транспорт».
а
Таким образом, все объекты, которые на данной итерации имеют ненулевую похожесть на данный объект , представлены элементами этого множества.
а
iv) Значение похожести объекта  с самим собой по определению равно единице, и по вышеприведенным соображениям это значение в вычислительной машине физически не хранится.
b
b
v) Для каждого объекта  из множества Е, т.е. в данном случае для объекта =«Воздушный транспорт», выполняются следующие действия:
r
а
b
r
(1) В памяти вычислительной машины заводится ячейка  вещественного типа, значение которой будет обозначать значение похожести объектов и ; на момент создания в ячейку  записывается нулевое значение.
b
b
v
(2) Для объекта  в базе со ссылками сканируются все объекты, которые имеют ссылку на . Для каждого такого объекта, в данном случае для единственного объекта «Транспорт», на который мы далее будем ссылаться по имени , выполняются следующие действия:
v
v
а
v
(a) Проверяется, определено ли значение ячейки для объекта в массиве частичных сумм Р. Так как значение этой ячейки не определено, то оно вычисляется суммированием значений похожести с предыдущей итерации объекта  с каждым из объектов в базе со ссылками, имеющими ссылку на объект . В виде математической формулы значение ячейки массива Р для объекта  определяется как .
В данном случае суммирование производится по единственному объекту «Транспорт», и в качестве слагаемого берется значение похожести этого объекта с самим собой, что дает единицу.
r
v
(b) Значение ячейки  теперь увеличивается на содержимое ячейки массива частичных сумм P(), т.е. теперь становится равным единице.
r
а
b
r
r
(3) Значение, содержащееся в ячейке , теперь умножается на величину , где в знаменателе стоит количество объектов, имеющих в базе со ссылками ссылки на объекты и  соответственно. Поскольку на оба объекта ссылается по одному объекту, то значение множителя равно С и значение, содержащееся в ячейке , становится равным: =С=0.6.
1
1
а
b
r
а
b
(4) Полученное значение похожести превосходит величину порога δ=0.08, поэтому полученное значение не отбрасывается, но к функции похожести R добавляется тройка (, , ), т.е. информация о том, что значение похожести между объектами =«Наземный транспорт» и =«Воздушный транспорт» на текущей итерации равно 0.6, сохраняется в памяти вычислительной машины.
vi) Множества Т и Е очищаются (т.е. из них удаляются все содержащиеся в них идентификаторы объектов). Все ячейки в массиве частичных сумм Р прописываются значением «неопределенное значение».
а
h) Объект =«Воздушный транспорт» обрабатывается полностью симметрично предыдущему.
i) Таким образом, все объекты для данной итерации были просмотрены. Отметим, что тогда как полное рассмотрение всевозможных пар включает 8×8 комбинаций, рассмотренный метод позволил сократить необходимое количество пар всего до двух.
2
6) Вторая итерация (k=2) происходит аналогично первой за исключением величины порога δ, и значения похожести на этой итерации остаются неизменными по сравнению с прошлой итерацией.
7) Производим последнюю итерацию: k=К+1=3.
a) Значение порога для данной итерации равно:
b) Последовательно рассматриваем каждый объект.
а
c) Рассматриваем объект =«Автомобиль».
а
i) Поскольку текущая итерация является последней, для данного объекта  последующие действия выполняются вне зависимости от того, есть ли у этого объекта ссылки на другие объекты.
ii) На данный объект имеются ссылки у объектов «Автомобильная инфраструктуры» и «Наземный транспорт». В соответствии с предыдущей итерацией, каждый из этих объектов имеет ненулевую похожесть с самим собой, а также объект «Наземный транспорт» имеет ненулевую похожесть с объектом «Воздушный транспорт». Таким образом, множество Т состоит из трех элементов: «Автомобильная инфраструктура», «Наземный транспорт» и «Воздушный транспорт».
iii) Соответственно, множество Е состоит из всех объектов, на которые имеются ссылки от одного из элементов множества Т, что дает объекты «Дорога», «Автомобиль», «Самолет» и «Вертолет».
iv) Последовательно обрабатываем каждый объект из множества Е:
b
v) Для объекта =«Самолет» из этого множества выполняются следующие действия:
r
а
b
(1) Снова заводится ячейка  вещественного типа, имеющая нулевое значение на момент создания, значение которой будет обозначать значение похожести объектов  и .
b
b
v
v
(2) Для объекта  в базе со ссылками берутся все объекты, которые имеют ссылку на . Множество таких объектов состоит из единственного объекта - «Воздушный транспорт». Для каждого объекта  из этого множества, т.е. для =«Воздушный транспорт», выполняются следующие действия:
v
v
и
а
(а) Проверяется, определено ли значение ячейки для объекта  в массиве частичных сумм Р. Так как значение этой ячейки не определено, то оно вычисляется суммированием всех значений похожести в соответствии с предыдущей итерацией объекта  и каждого из объектов , имеющих ссылку на объект , т.е.
.
и
В данном случае суммирование производится по двум объектам  - «Автомобильная инфраструктура» и «Наземный транспорт», и в качестве слагаемых в соответствии с предыдущей итерацией стоят соответственно величины 0 и 0.6, что в сумме дает 0.6.
r
v
(b) Значение ячейки  увеличивается на содержимое ячейки массива частичных сумм Р(), т.е. становится равным 0.6.
r
r
(3) Значение ячейки  наконец умножается на величину , которая равна: . Таким образом, значение ячейки  становится равным .
r
а
b
r
3
(4) Полученное значение ячейки  превосходит величину порога δ, поэтому полученное значение сохраняется в памяти вычислительной машины как значение похожести на третьей итерации в виде тройки (, , ), т.е. обозначает похожесть между объектами «Автомобиль» и «Самолет», равную 0.18.
а
b
v
vi) Аналогичным образом вычисляется похожесть данного узла  с узлом =«Вертолет». Существенным наблюдением здесь является то, что значение соответствующей ячейки Р() в массиве частичных сумм уже определено, поэтому его повторное вычисление не требуется.
а
b
vii) Похожесть данного узла  с узлом=«Дорога» вычисляется технически аналогично, и значение похожести равно 0.3.
viii) Множества Т и Е очищаются (т.е. из них удаляются все содержащиеся в них идентификаторы объектов). Все ячейки в массиве частичных сумм Р прописываются значением «неопределенное значение».
d) Для объектов «Дорога», «Самолет» и «Вертолет» все вычисления производятся по аналогии.
8) Полученные на последней итерации значения похожести становятся результирующими значениям похожести. Отметим, что в данном примере полученные значения похожести являются точными значениями, т.е. проведение последующих итераций не дает изменения значений похожести.
Таким образом, для данного примера с точностью до симметрии были получены следующие значения похожести:
- похожесть(«Наземный транспорт», «Воздушный транспорт»)=0.6,
т.к. оба объекта являются конкретизациями объекта «Транспорт».
- похожесть(«Автомобиль», «Дорога») = 0.3,
т.к. оба объекта принадлежат категории «Автомобильная инфраструктура»
похожесть («Автомобиль», «Самолет»)=похожесть(«Автомобиль», «Вертолет») = 0.18,
через общую категорию «Транспорт», которая является не непосредственной, но косвенной, для обоих объектов в паре
- похожесть(«Самолет», «Вертолет») = 0.6.
т.к. оба объекта принадлежат категории «Воздушный транспорт».
Из полученных значений похожести следует, в частности, что в соответствии с рассмотренным примером объект «Автомобиль» более всего похож на объект «Дорога» (т.к. оба относятся к автомобильной инфраструктуре) и в меньшей степени похож на объекты «Самолет» и «Вертолет» (т.к. все являются транспортными средствами). Объект «Дорога», с другой стороны, не похож на объект «Вертолет».
Приведенные соображения иллюстрируют, что вычисленные значения соответствуют интуитивному человеческому пониманию об относительной похожести рассмотренных объектов и, таким образом, могут быть эффективно использованы для решения многих задач, в которых используются величины похожести между объектами энциклопедии. Заметим дополнительно, что вычисленные значения похожести были получены исключительно на основе анализа ссылок между объектами, а пример показал, что предложенный метод вычисления позволяет устранить многие излишние или повторяющиеся вычисления и, таким образом, значительно повысить скорость получения значений похожести с помощью вычислительной машины.