?

Log in

No account? Create an account
Лабораторный журнал -- Day [entries|friends|calendar]
Anatoly Levenchuk

[ website | Лабораторный журнал ]
[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Проблема перевода для киборгов, компиляции для людей [16 Mar 2012|05:16pm]
Для человечьей речи используется слово "перевод" -- при этом лингвистическая традиция уклончива относительно того, является ли порождаемый текст программой (про которую можно говорить в терминах "выполнения" -- вся традиция обсуждения речевых актов -- обещания, просьбы, согласия и отказы, по большому счёту именно про аспект "выполнения". Можно говорить про заход со стороны "нейролингвистического программирования", который вообще про исполнение программ бессознательным. В общем, есть над чем подумать, если задаваться вопросом, что именно за текст переводится), или просто декларациями (которые нужно "понимать", то есть исполнять с ними какие-то действия собственного ума, не порождающие видимых внешних деятельных эффектов).

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

Если вам нужно перевести или откомпилировать данные (про которые непонятно, как их "исполнять"), то ни "перевести" ни "компилировать" не используется. Говорят только про "мэппинг" (соотнесение одних данных с другими).

Впрочем, и про выполнение тоже много разных слов. Выполнение одних текстов называют "исполнением", других -- "оценкой", третьих -- "выводом", четвертых -- "моделированием", и т.д.


Тут у меня несколько соображений.

1. Онтологизирование, моделирование, программирование, синтез текстов на естественном языке -- это одно.

2. Задача перевода онтологий, моделей, программ и текстов на естественном языке -- это одна и та же задача (а поскольку мы стремительно входим в эпоху мультипарадигмальности, то разные типы "выполнений" нужно признать таковыми, при всём уважении к специализациям типа reasoning или "я просто выполнял приказ"). Есть и множество других похожих задач (например, задача поиска -- это тоже перевод текста вопроса в развернутый текст ответа. Отчёт по базам данных -- перевод текста базы данных и поискового запроса в текст отчёта. Ну, и так далее).

3. Нужно срочно строить онтологию, в терминах которой можно все эти тексты-данные-программы с их исполнениями и переводами можно обсуждать. Меня в нежном программистском детстве учили, что "компиляция -- это такое особое исполнение. Процессор читает текст, и строит в соответствии с этим текстом какой-то другой текст -- выходной, будь то результат традиционного исполнения программы, или результат нетрадиционного исполнения -- откомпилированный входной текст". Такая онтология должна быть основана на лучших известных, контринтуитивных, а не расхожих идеях -- revisionary, а не descriptive (мы ведь ревизионисты, чего и не скрываем -- см. пункт 1 http://ailev.livejournal.com/521610.html, это еще 2007г.. Я, кстати, с тех пор определился -- я ревизионист "справа", конечно. Моя онтология будет радикальной, а в "народную онтологию" я буду мэппить -- и, скорее всего, мэппить в нее уже буду не я, а те самые "критики слева").

Если построить такую общую для разных областей информатики-логики-лингвистики онтологию, то можно пробовать:

а) перенести знания из одних областей в другие. Ибо даже спецы лингвисты и спецы логики по поводу иллокутивности имеют разные представления -- ибо им эта иллокутивность нужна для разного. Вот и нужно договориться как обозначать это разное (выполнение/вычисление в разных смыслах выполнителями/решателями разных видов, перевод с одного языка на другой -- включая "понимание" как перевод с чужого языка на свой собственный с попутным пополнением своего словаря и belief revision, и т.д.). После этого "мэппирования" (перевода, компиляции и т.д.) может появиться идея, как проблемы одной предметной области решать при помощи знаний, найденных в другой предметной области -- несмотря, что формулировки этих проблем и знаний даны в разной терминологии, и сообщества экспертов в этих предметных областях никогда не пересекаются.

б) найти более компактные способы описания многообразия информатики, и за счёт повторноиспользуемости (например, выноса общего для всех этих областей на мета-уровень. Или прописывании операций, которые применимы ко многим типам их операндов) можно резко поднять компактность описания. Алан Кей любит говорить об этом, как "найти тут математику". В других дисциплинах говорят о паттернах, эвристиках, логиках -- неважно, важна цель компактификации знания, чтобы знание принципов освобождало от знания мириадов фактов.

в) учить людей ("компиляции знаний в мозговой код") по времени меньше, а давать знаний больше, как раз за счет компактизации описания многообразия информатики. Я глубоко благодарен Гарегину Карапетовичу Тер-Григорянцу, который когда-то давным-давно в исследовательском ВЦ РГУ учил меня разнообразию вариантов, как можно исполнить одну и ту же программу (макрокомпилировать в машинный код, компилировать традиционно, интерпретировать спецпроцессором именно этого языка -- и т.д., причём всё это на большом стеке языков/выполнителей, включая микропрограммный уровень процессора -- ибо на тогдашних EC ЭВМ уровень микропрограмм был вполне себе еще одним уровнем программирования выполнителя исходной программы), не забывая подсовывать программы с существенной декларативной компонентой и объясняя, что вся эта "декларативность" должна обсуждаться не в связи с текстом программы, а в связи со свойствами ее выполнителя. Мне это до сих пор помогает соображать быстрее в сложных архитектурных ситуациях.

г) переходить от бесплодных споров про "всё должно описываться логическими языками", против "всё должно моделироваться, и потом только будем говорить о коде", против "всё равно естественный язык никто не отменял", против "придётся тяжело вздохнуть и написать программу на универсальном языке программирования", и т.д., к работе с аккуратным представлением мира в виде какого-то текста (программы ли, данных ли, семантической сети ли, набора полнотекстовых документов и данных ли -- это уже будет вопрос второй, и ответом тут может быть -- представлений множество!), с работой над этим текстом множества специализированных выполнителей (опять же -- агентов ли, или просто "спецпроцессоров", или "решателей" -- это вопрос третий). Главное, чтобы не было зацикливания на какой-то моноархитектуре одной из дисциплин, одной терминологии, одной области знаний.

Что мы делаем в этом направлении?

1. регулярно думаем, что уже немало. Пытаемся общаться с командами, представляющими разные парадигмы (например, вот наши попытки общения с computational ontologists -- см. мои мартовские письма в списке рассылки Ontology Summit 2012: http://ontolog.cim3.net/forum/ontology-summit/2012-03/index.html, или разговоры с лингвистами -- http://incose-ru.livejournal.com/32524.html, или разговоры с логиками про "интеракцию" -- http://minski-gaon.livejournal.com/26627.html?thread=362755#t362755 и http://ailev.livejournal.com/915253.html, а последний раз я на заседании логико-философского кружка в ВШЭ, где обсуждалось логическое моделирование текстов был буквально вчера).

2. Разрабатываем методики работы и поддерживающий их софт, отражающий эти идеи общности программистского, моделирующего, онтологического подходов (dot15926 -- это как раз оно). Надеюсь, общность с лингвистическим мы к этому компоту добавим уже в очень скором времени.

3. Пишем такие постинги, как этот -- чтобы в какой-то момент обнаружить, что и слова правильные уже найдены и собраны в одном месте, и объяснение целей нашего поиска сформулировано и записано, и потенциальные партнёры прочли, что-то поняли, и готовы помогать.
1 comment|post comment

Об статические онтологии [16 Mar 2012|06:23pm]
Те, кто считают, что я делаю неправильную ставку на статические онтологии, существенно заблуждаются: ничего статического в моих задачах нет, все онтологии эволюционируют, да и онтологий обычно бывает более чем одна. Я думаю, с любителями порассуждать о динамике можно легко договориться, если задать им вопрос про шкалу времени, в какой они готовы обсуждать эту самую динамику -- миллисекунды, секунды, дни, годы? Знания-то они накапливать как-то собираются? Или каждый новый счёт начинать с нуля, ничего не запоминать? Ведь если запоминать -- это ведь уже статика!

Чем критиков не устраивает замечание, что современные (2012 год, а не 1982 год) онтологи давно договорились об эволюции онтологий как единственном способе онтологической работы? Чем не устраивает консенсус сегодняшних онтологов, что нет "единственно верной абсолютной онтологии" и фокус дисциплины в том, чтобы обеспечивать работу при наличии как раз самых разных уникальных и асинхронно меняющихся онтологий? Что статичного в этой постановке задачи?

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

У меня есть подозрение, что в случае критики "статических онтологий" обсуждаюсь даже не я с моими проектами, а состояние онтологических разработок времён расцвета экспертных систем. Эй, критики, проснитесь! С тех "статических" экспертных пор прошло 30 лет, и в некоторых онтологических тусовках (хотя, конечно, не всех) жизнь сильно изменилась за эти тридцать лет, вы будете удивлены, узнав, насколько сильно.
11 comments|post comment

Программы и данные, вебсайты и приложения -- вот они и встретились [16 Mar 2012|08:46pm]
Сегодня открылся сервис http://theappbuilder.com/ -- обратите внимание, эти люди называют "приложением" (application) ровно то, что еще совсем недавно называлось просто вебсайтом. И набор фич у них ровно такой, какой предполагался у вебсайтов. И даже язык -- HTML, хотя и в его пятой инкарнации.

Разница -- в бизнес-модели. Вебсайт сгружается к вам после прохода по любой ссылке. А вот приложение вам нужно сначала сгрузить из магазина приложений. Вот за этот сложноорганизованный проход на приложение aka вебсайт не по обычной ссылке, а через магазин с вас и будут брать по $29 в месяц.

Впрочем, осенью 2012 всё вернётся на круги своя, и приложение опять станет вебсайтом: In addition to iPhone, iPad, Android and Windows Phone, we’ll make your app available to every other device as a “web app”. Web apps are great as there’s no store approval process and virtually every device that can access the internet will be able to view your app.
3 comments|post comment

navigation
[ viewing | March 16th, 2012 ]
[ go | previous day|next day ]