Понимание телефонных номеров

Как мы запоминаем последовательности цифр, например, номера телефонов? Разбивая последовательность на группы цифр и строя ассоциации с каждой из них.
Ок, а по какому принципу мы выбираем эти группы? Ведь возможны различные варианты. Пример, запоминаем 951945
Варианты:
  • 9-5-1-9-4-5
  • 9-5-1945
С одной стороны мы берем группы цифр, которые наиболее узнаваемы, имеют высокую частоту упоминания. Но позвольте, у отдельной цифры частота априори выше чем у группы цифр, в то же время второй вариант выглядит более привлекательным. Значит мы разбиваем на группы цифр, таким образом, чтобы количество групп было минимально, но каждая группа была узнаваема.
 
Мы только что описали процесс понимания телефонных номеров. Подозреваю что данные принципы можно использовать и для понимания текстовой информации - нам ее нужно разбить на такие блоки-инварианты, чтобы их количество было минимально, но они были узнаваемы (распознаваемы). Вопросы связи с контекстом пока оставим за бортом.

PS Сформулировалась текущая цель: модель процесса понимания.

Понимание ради понимания

Понимание = связывание поступающей информации с имеющейся.
Вопрос - а для чего?
 
Один из побочных эффектов, согласно Хоукинга - возможность прогнозировать следующие действия. У нас есть текущие активные элементы. Благодоря связыванию мы определяем контекст и, тем самым, ограничиваем количество связанных с ними элементов. Таким образом у нас есть ограниченное количество элементов, релевантных текущим, причем ограничены они не по частотному принципу а по контекстному.
 
Две крайности понимания:
 
1. Не смогли определить текущий контекст. Имеем полный хаос по связанным объектам.
2. Новое слово (встретили в первый раз). Не имеем ни одного объекта.
 
Кстати, при наличии текущего контекста, если встречаем незнакомое слово, то выполняется процедура, как ее обычно называют - "Понять значение слова по контексту". Что это? Наверное связывание его с тем самым прогнозируемым словом по Хоунингу.
 
Ок, еще раз. Понимание - определение контекста - связывание новых слов с существующими. Для чего? Чтобы новые слова легче вязать, чтобы незнакомые слова тоже как-то связывать. Получается связывание ради связывания => понимание ради понимания.
 
А зачем понимать текст?
 
???
 
Вопрос...
 
Наверное, пока реализуем сам процесс понимания, тем более база знаний для него уже готова, а там разберемся, зачем все это.

Слоеный пирог

Итого мы получили отличный слоеный пирог (по уровням):

  1. commerci_ technic_ specif_ protocol_ data_ network_ Internet_
  2. connect_ infrastructur_ commerci_ technic_ protocol_ network_ Internet_
  3. version_ develop_ connect_ commerci_ protocol_ network_ Internet_
  4. system_ develop_ connect_ commerci_ protocol_ network_ Internet_
  5. layer_ tcp_ comput_ system_ protocol_ network_ Internet

Здесь нет восстановления целого по части, шумов и прочая-прочая.

А что же есть? Есть последовательное дифференцирование входного потока по частотности. Исходный слой - входной поток, слой 0 - ключевые слова, и далее производные слоя 0.

А зачем это? А очень просто. Чем выше уровень, тем более частотные объекты на него попадают, очищая окружение от менее частотных шумов. Это похоже на zoom-out. Или взлету в Google Earth, когда маленькие города уходят из фокуса внимания, зато за один раз мы можем обозреть больше крупных городов.

PS Как всегда, доведя ситуацию до жирного многоточия, мотаю в командировку.

Навыворот шиворот

На сейчас получаем любопытную картину - на нижнем слое выделяются достаточно емкие инварианты, которые на высших уровнях асбтрагируются до голого скелета. Пример, в разбивке по уровням:

  1. Internet_ comput_ network_ standard_ protocol_
  2. Internet_ interconnect_ comput_ network_ col_
  3. Internet_ system_ interconnect_ comput_
  4. Internet_ global_ system_

Хочется же совершенно обратного процесса: выделения на нижних уровнях маленьких строительных блоков, и построение из них здания на верхних уровнях. Моункастл крут а правила обработки на разных уровнях могут быть одинаковыми, а вот параметры этих правил должны изменятся при движении вверх.

Собственно и только тогда мы получим восстановление целого по фрагменту. Пример (подкрутив параметры) - опять по уровням:

  1. wide_ web_
  2. world_ wide_ web_

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

При этом должно быть интересно поведение скорости увеличения количества новых элементов в зависимости от уровня:

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

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

Соответственно, неплохо бы понаблюдать за первой и второй производной от прибавления количества в разрезе уровней - мы увидим численные метрики обучения системы! Вот вам и автотест процесса обучения.

Проекции базы знаний

Представим что у нас есть некоторая база знаний. Ее структуру оставим за бортом но попробуем снять с нее проекции в различных измерениях.

  • Слово - частота. Позволяет выделить стоп слова, и примерно оценить важность слова.
  • Матрица отношений между словами. Для любой пары слов отображает их одновременную частотность без учета контекста.

Далее начинаются интересности и неоднозначности. На формирование последующих слоев сильное влияние оказывает оставшаяся за бортом структура базы знаний.

  • Добавляем контекст (проработать)
  • Добавляем контекст (проработать)

[...]

  • Исходный уровень. Соответствует нераспознанному исходному тексту (интересно, его место в самом верху, самом низу или сбоку)

Двухмерные знания

С этими командировками пауза затянулась. Зато созрел каркас модели хранения знаний по двум измерениям. Начнем с примера:

  1. Движение по вертикали: регион – город – район – площадь Ленина
  2. Движение по горизонтали: место Х – площадь – площадь Ленина – площадь Ленина в городе Н

Движение по вертикали – путь округления. Как мы вспоминаем число 72? Наверное, так: 100-70-72. Как мы вспоминаем место? Примерно как описано в п.1.  Вспомним также что “100” нам запомнить проще чем “72”. По этой же вертикали кванты образую элементарные частицы, те в свою очередь, молекулы и т.д.

Движение по горизонтали – путь уточнения контекста через последовательное уточнение окружения. Здесь же формирование инвариантов, условно-постоянных в большинстве контекстов.

Важно разделять эти понятия. На понимание у меня ушло два дня программинга на мешанине знаний, пока не осознал что процессов здесь два и не стоит их мешать. Соответственно в нашей модели памяти нарисовались два измерения: глобализация и контекст. О чем это говорит? Для каждого элемента есть родители и дети по двум измерениям. Нарисуем графически:

      Регион
      Город Г
      Район Н
Место Х Площадь Площадь Ленина Площадь Ленина в районе Н

Теперь еще немного командировок и продолжим.

Хранение знаний

Пример 1.

  • 40
  • 40 градусов
  • 40 градусов температура
  • 40 градусов температура была вчера у меня

Пример 2.

Арнольд Шварценегер - Терминатор - Командо - Губернатор Калифорнии.

  • Он снимается в кино.
  • Он ищет Сару Конор.
  • Он подписывает распоряжения.
  • У него два глаза.

Пример 3.

Запоминаем 117. Вспоминаем 100 - 120 - 117.

 

Все примеры приводят нас к некоторой иерархии, расположенной вдоль оси абстракции.

Из примера 1, сверху - 40, снизу - "40 градусов температура была вчера у меня".

Т.е. чем ниже иерархия, тем определеннее контекст, больше связей, выше понимание. Почему внизу связей больше, когда 40 встречается чаще чем "40 градусов температура была вчера у меня"? Потому что с 40 в примере ни одной связи, а во фразе - несколько внутренних связей.

Пример три показывает что хранится может не прямая ссылка на объект в контексте. А также то что вверх по иерархии он может видоизменятся, округляться. Окр(117)=120; Окр(120)=100;

Так, иерархия, вверх идет округление. Что такое округление - отбрасывание уникальных свойств.

Отлично, есть контекст, внутри объект. Объект пророс связями внутри контекста. Есть другой контекст, с похожим объектом. Выделяем общие связи, выносим объект на уровень выше. Да, на самом верху каждый объект имеет максимально абстрактного представителя - без единой связи.

Хорошо, объект вынесли вверх, что с его связями (свойствами)? А мы их тоже выносим вверх. Фактически мы выделили инвариант в двух контекстах.

Позвольте, но примерно также, судя по описаниям, работает зрение - несколько плоскостей, на каждой следующей более абстрактный объект. А почему бы и нет! Монкастл сказал что мозг использует единый вычислительный инструмент для всего, чем он занимается. Так давайте же управление знаниями распишем по алгоритму управления зрением.

Теперь коннект на определение понимания от прошлого поста. Понимание есть определение объекта в иерархии на уровнях отличных от максимального (где ни одной связи). Чем ниже уровень тем выше понимание. Круг замкнулся.

Нерешенный вопрос - как арбуз станет ягодой? Т.е. мы отрежем часть уникальных свойств, абстрагируем арбуз с одного контекста, малину - с другого, как их дружно на ягоду замкнуть? А вот здесь предлагаю не умничать, а взять готовые базы онтологии.

Хорошо, есть дерево, понимание - позиционирование внутри дерева. А построение дерева - что? Очевидно, обучение.

Одна проблема - впереди командировка, сразу промоделировать не успею.

Понимая понимание – 2

Пора с этим кончать. Все знают об этом процессе, все его понимают… только объяснить не могут. А когда мы с buriyдошли до стадии его формализации и программирования, то поняли что понять понимание задача не тривиальная.

Начнем с того что накидаем свойства этого процесса:

  1. Согласно Хокинсу понимание есть способность предсказания – пережевывали здесь;
  2. Понимание задачи – разделение ее на модули, под каждый из которых есть план решения
  3. Сопоставление: мы с вами пронумеровали анекдоты, и когда я называю номер, вы номер понимаете не так, как остальные
  4. XML формат. Или JPEG. Некоторая формализованная запись и алгоритм для ее обработки, который понимает что с ней делать
  5. Некоторая последовательность (пример выдуман):
    40
    40 градусов
    40 градусов температура
    40 градусов температура была вчера у меня
    Здесь на каждом новом шаге мы добавляем контекста, в результате понимание меняется.

 

Обобщая приведенные свойства можно сделать очевидный вывод – понимание тесно связано с контекстом. Вот моя версия:

Понимание есть процесс (одно и тоже разными словами) :

  • сопоставления объекта с контекстом
  • нахождение контекста для объекта
  • отождествление….

В общем, есть объект и есть некоторая иерархическая база знаний, где объект встречается множество раз в разных контекстах. Понимание отождествляет/сопоставляет/находит объект в базе знаний.

Для выполняемых алгоритмов контекст есть некоторый исполняемый алгоритм, который данный объект готов обработать.

Перечисленным выше свойствам определение удовлетворяет.

Сразу вопросы: что такое обучение, как наполняется база контекстами, что за иерархия и т.д.

free speach

Продолжим предложение:

internet_ servic_ provid_ broadband_ dsl_ nake_ voip_ phone_ offer_ iinet_ rang_ discov_ product_ adsl2_ mobil_ adsl_ paid_ australia_ dodo_ includ_ dial_ pre_ post_ web_ host_ www_ wireless_ access_ world_ wide_ abbrevi_ commonli_ known_ document_ system_ hypertext_ interlink_ resourc_ global_ commun_ contrast_ imag_ set_ comput_ softwar_ hardwar_ soft_ market_ idea_ lot_

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

А прелесть в том что последовательность является сконструированной, т.е. сгенерированной на основе текстовой информации, а не вырезанной из нее!

Еще тест.

mysql_ databas_ product_ softwar_ enterpris_ cluster_ oem_ embed_ isv_ workbench_ connector_ industri_ solut_ busi_ offer_ rang_ wide_ varieti_ small_ network_ cisco_ servic_ storag_ custom_ server_ data_ larg_ provid_ internet_ access_ isp_ compani_ refer_ iap_ compar_ info_ easi_ great_ popular_ chart_ stock_ date_ view_ financ_ oftwar_ hardwar_ soft_ market_ idea_ lot_

Что это? Хотелось бы чтобы было понимание системой запроса пользователя, по факту - free speach на заданную пользователем тему.

Теперь весьма непростой и местами скучный вопрос - озвучка. Данные последовательности нормализованных ключевых слов нужно привести к семантически правильным предложениям. Будем делать "вырезки из газет", т.е. подбирать соответствующие куски предложений и клеить результат на экран.