Искусственный интеллект: начала MSM. Сингулярность неизбежна - страница 9



Сделать это можно следующим образом:

Мы сравниваем поочередно каждое из слов-множеств со всеми присутствующими; причем сравниваем по-хитрому, получая в качестве ответа процентное соотношение «попадания» в искомое.

Например, имея некие коды A B C D E, мы можем получить средневзвешенную оценку общности так:

А и В = 95%, А и С=93%, А и D=5%, А и E=50%, итого (95+93+5+50) /4=60.75%

Проделав тот же самый фокус в цикле, мы получим такие значения для каждого элемента, и тогда нам останется только выбрать тот, который имеет самую низкую оценку.

Если взглянуть на процедуру процентного сравнения детальнее, сначала мы сравниваем каждый символ позиционно с первого до последнего. Затем оцениваем нахождение всех частей одного слова в другом. То есть, если у нас есть строка «ABCDEF» мы берем и сравниваем подстроку AB, потом BC, потом CD, потом DE и EF. Затем группу трех символов ABC, BCD, CDE и DEF. Затем сравниваем группы четырех символов ABCD, BCDE и CDEF, и наконец пять – ABCDE и BCDEF. Так же мы снижаем оценку схожести, если «слова» отличаются по длине. (Но все же описанный здесь метод больше подходит для работы со словами естественного языка, где значение имеют корни, приставки суффиксы, словоформы и прочее. Для сравнения элементов MSM вполне подходит метод «первого расхождения», когда начиная сравнивать объекты с «головы», мы доходим до позиции расхождения и затем сравниваем пройденную длину с общей длиной самого длинного объекта. Процент отношения пройденного пути к общей длине и будет здесь показателем схожести. В более поздней версии программы именно этот способ сравнения показал наиболее точные решения. Прим. автора ко второму изданию.)

В указанном выше примере правильным решением для программы будет «Стол», поскольку его средневзвешенная оценка общности покажет наименьшее значение из всех. А следующим кандидатом «на вылет» однозначно станет «Акула».

Пользуясь этим приемом, можно определять лишний элемент в списке достаточно точно. Ошибки здесь допустимы только теоретически, если слова-множества имеют глубокие расхождения в порядке положения «в длину», но на практике такие случаи мне еще не встречались.

Сыграем в эту игру еще раз:

AAAAAAABAAB Сила

AAAAAAABAAA Вес

AABDABAA Водород

AAAAAAADC Теория

Здесь программа отсечет самый инородный объект – Водород. А затем на «вылет» пойдет и Теория.

2.2 Расширение значений свойствами и их наследование

Одной картой классификатора – нам не ограничиться. Ведь объекты реального мира имеют массу характеристик и свойств, которые дополняют их смысловые кластеры.

Поэтому мы можем дополнять характеристики объекта, и сделать это достаточно просто. Необходимо выделить для этого отдельный файл (или базу данных), и там вписывать свойства, в качестве указателя отмечая его «носителя».

Например, запишем «Лев сильный»:

ABABACBBBA AAAAAAABAABA

Или «Лев большие когти»:

ABABACBBBA AAAAAAABAADAC AAAAAAADAABBAABAABDAA

Хотя, логичнее было бы наличие больших когтей приписать сразу целому классу объектов, например, хищникам.

Так и запишем «Хищное большие когти»:

ABABACB AAAAAAABAADAC AAAAAAADAABBAABAABDAA

Так с помощью слов-множеств мы сможем умножать знания на подмножества объектов.

Каков механизм этого?

Мы знаем что Лев ABABACBBBA это часть подмножества хищное ABABACB.

ABABACBBBA = ABABACB [+BBA]

//Лев Хищное

Поэтому для того чтобы определить, что Льву принадлежат свойства ABABACB, мы найдем в словаре свойств слово-множество ABABACB и сравним, является ли оно «головой» объекта Лев ABABACBBBA. Мы выяснили, что это так, и запомнили.