Ассоциации и с чем их едят... И связи, и правила. (Обновлено)
НАЙНОВІШЕ (05 10 2022 18 25):
Припустимо, ти хочешь створити іскіна бота здатного спілкуватися
Тобі знадобиться перш за все дві речі: словник слів та словник звязків
Суть сьогоднішного прозріння у тому, що обидва ці словники не є обчислюємими.
Це важливо — зрозуміти які це дає переваги.
Ці словники — не обчислюються, не вираховуються. Їх можно тільки накопичити.
Тобто взяти ці статистичні дані десь та поєднати із словником слів.
І далі вже можно створювати рендомні речення та шукати відклику у зовнішньому середовищі на цей рендом.
А якщо рендом буде фильтрований згідно умов то такі речення вже більш менш стануть схожі на якесь спілкування чи обговорення.
Характери зв язків у іскіна параноїка та у іскіна Елізи,яка його лікує (відсилка до самих перших ботів) мабуть такі будуть відрізнятися. Беремо дві ідентичних пустих форми та заповнюємо кожну своїми зв язками.
Ось така вправа пропонується. До речі, закину ще у тему де вирішують алгоритми LeetCode
ВЖЕ СТАРЕ:
НОВЬЕ:
По моим последним исследованиям, ассоциации, связи, линки и правила чем-то похожи между собой.
Что такое связь? Это упорядоченное перечисление.
Простая связь это два элемента, сложная больше.
Например, между кликом пользователя по кнопке fb1 и отображением экрана a2
можно записать связь вида: fb1 ---> a2
Второй пример: если вы заблудились в лесу, вы кричите сначала А, а потом У
АУ это связь.
Вот пример сложной связи: var i=1;
В представлении связи можно различить две основные части —> ДО и ПОСЛЕ
Например, слово СОЛЬ можно записать так:
НС — С
С — О
О — Л
Л — Ь
Ь — КС
НС начало слова, КС конец слова
Но также это правила. Например, если я напишу такие условия:
(’w’ and ’o’ linked in txt_buf) && (’o’ and ’r’ linked in txt_buf) && (r and d linked in txt_buf)
...
То проверяя все выражение на истинность, в случае удачной проверки, можно утверждать, что мы найдем хотя бы одно одиночное слово «word» в текстовом буфере.
Заметьте удивительное — если поменять местами правила, результат не изменится. Это значит, что сложные правила надо приводить к простым, неделимым. Затем формировать массив вот так:
if (w & o in txt) a[0]=t else a[0]=f
if (r & d in txt) a[1]=t else a[1]=f
if (o & r in txt) a[2]=t else a[2]=f
Я специально перепутал. Но это не играет роли при проверке количества true в массиве a — чем больше, тем вероятнее совпадение и если максимально — то есть — все элементы true в текстовом буфере, то найдено искомое.
Точно так же, как слово складывается из букв при помощи правил, связей и правила все эти эмпирические, запоминаемые от учителя, предложения складываются из слов.
В первую очередь мы проверяем входящий образец на самые часто используемые связи (правила)
е2-е4
Это шахматная нотация. Кто-то сказал бы — исчерпывающее описание произошедшего на шахматной доске события.
Для меня это также и связь между двумя состояниями. И правило проверки начала партии на дебют королевской пешки, испанской партии...
Ну и с чем ассоциируется у меня е2 ?
В первую очередь с е4
P.S.
Возможно «в небе» точнее чем «в», «небе» то есть связь «в небе» настолько сильная, что «в небе» это в каком-то смысле одно слово.
ТЕ, З ЧОГО ВСЕ ПОЧИНАЛОСЬ (просто для історії)
УСТАРЕВШЕЕ
Это очень просто:
Начнем с одного, первого слова. Солнце.
Что делает солнце? Свет.
Солнце светит.
Вы скажете: это существительное и глагол.
Я говорю, что слово светит является словом — ассоциацией к слову Солнце.
Как запрограммировать поиск ассоциаций и зачем это нужно?
Сие есть тайна, великий секрет, который я и хочу раскрыть и показать вам в этой статье. Почему я делаю это? Чтобы не взорваться от избытка полученной информации.
Мы будем использовать реляционные таблицы.
Кто не знает, что это такое, тех я сразу отсылаю к учебнику по основам SQL. Вам нужно прочитать про реляционную модель представления данных. А потом возвращайтесь сюда.
Где мы сейчас создадим с остальными две таблицы
Таблицу первую — «Солнце» и вторую таблицу — «Светит»
Вот они:
Солнце светит
------- --------
Сейчас они пустые. Компьютер еще не видит связи между двумя этими словами.
Как ее запрограммировать? Вставим по одной строке в каждую таблицу.
Солнце светит
------- ------
светит солнце
Теперь компьютер понимает, что между двумя алфавитными идентификаторами есть или существует связь.
Что дальше? А дальше давайте добавим еще одну ассоциацию. Задав себе случайный вопрос из любого списка вопросов.
Солнце светит где?
В
Да, есть такое слово, состоящее всего из одной букевы и обозначающее, связь между некоей формой и содержанием.
Неужели и для слова «В» надо создавать таблицу? Неужели даже слово «В»
является идентификатором?
Именно так. Это удивительная простота.
Самое замечательное, что таблица «В» может содержать в себе более чем одно слово (например — небе) но и два (доме) И так мы получаем два списка:
Солнце светит в небе.
Солнце светит в доме.
Но как Солнце может светить в доме? И может ли?
Все выше представленное является простым и понятным каждому программисту способом моделировать любую реальность на естественном языке.
Вследствие этого, я думаю, что словосочетание «единый формат представления данных на естественном языке» не будет слишком ложным для предложенной схемы моделирования.
Например:
Представьте себе, что у каждого из нескольких программистов собственный набор ассоциаций — слов связей при взгляде на некоторую проблему.
Что делает мозговой штурм? Именно что заполняет выше предложенные таблицы и тем самым находится общее решение.
То есть предложенный формат представления данных является интерфейсом передачи данных между разными людьми.
160 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів