Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Философия программирования > Ещё один язык. |
Автор: default 1.12.2006, 15:20 |
Предлагаю создать новый язык, вернее новую модификацию старого. Условно назовём его LANG. Фактически нужна новая модификация естественного языка в общем, а русского языка в частности, доступная для машинного понимания. Для логического программирования, что-то вроде пролога (очень отдалённо). Зачем? Для чёткого описания сущностей этого мира и связей между ними на естественном языке. Где это может быть полезно? Например, вы создаёте экспертную юридическую систему проще посадить юриста он за неделю портирует семейный кодекс на ruLANG, чем программиста, который будет 2 месяца создавать правила в прологе и разбираться в законодательстве. А может быть даже закон напишите, в котором нет разночтений или неясностей (валидатор их просто не пропустит), или энциклопедию которую автоматически можно переводить на другие языки и которая понятна машине. Смысл в том чтоб создать язык, чтото среднее между естественным и прологом, который бы был понятен и компьютеру и обычному человеку, не программисту. Даже не так, создать описание мира понятное как машине, так и обычному человеку далёкому от class, import, include. Конструкции будут, например: «Вася получил почту», но никак не: «почта была получена Васей» или: «Васе притаранили почту» и т.д. и т.п. и недай бог не: « Вася (почту, «получил»)» В общем, синтаксис только предстоит придумать, главное, что б он был чётким логически и максимально естественным. Основные названия логических связей и объектов должны быть на английском, с соответствующими трансляциями на русский или например хинди. Часть определений можно взять из существующих реализаций XML для совместимости. Пока есть только идея, впрочем, продуманная, если будет интересно буду развивать. Что думаете по этому поводу? |
Автор: regis 1.12.2006, 15:43 |
Думаю, что прежде, чем создавать свои проекты, вам стоит познакомиться с уже существующими "естественно-логическими" языками. Вот, для затравки, несколько ссылок: LOGLAN: http://www.loglan.org/ LOJBAN: http://www.lojban.org/ VORLIN: http://www.vorlin.org |
Автор: default 1.12.2006, 16:23 |
regis благодарю читаю |
Автор: smartov 1.12.2006, 17:30 |
На форуме какое-то сезонное обострение желания написать язык, берущий корни от естественного ![]() |
Автор: sergejzr 1.12.2006, 18:14 | ||||
Э-э не совсем так. Следите за тенденциями. 1С программист всё же на 50% бухгалтер. Пройдёт время и все будут программистами. Даже врачи и секретарши, просто языки будут специальные и обучение профессии будет больше на информационные технологии ориентировано. так же как сейчас всех читать учат, будут всех немного программить учить. Уже сейчас все инженеры в обязательном порядке обучаются информатике. Добавлено @ 18:16 default, для начала неплохо было бы найти/написать библиотечку раскладки нормального русского предложения на подлежащее/сказуемое/второстепенные. С определением сущ/прил/глагола и перевода слов в начальную словоформу (последнее уже точно есть). Потом можно и поиграть ![]() |
Автор: default 1.12.2006, 19:37 |
[quote]На форуме какое-то сезонное обострение желания написать язык, берущий корни от естественного [quote] немного неправильно я не предлагаю написать язык понятный не программистам, я предлагаю упростить естественный язык что б он логически был понятен компьютеру как упрощенный английский для аборигенов и это не сезонное обострение, а скорее вирус у меня эта мысль возникла когда про этот душевный язык Д читал ![]() У меня вот такой практический вопрос : как автоматизировать труд юриста? есть законодательства государства: конституция, законы, постановления, указы, изменения дополнения всё это превращается в огромную массу данных. Как всё это привести в вид понятный машине и доступный людям которые с этим работают юристам, чиновникам и др.? На каком языке написать? |
Автор: Exception 1.12.2006, 21:23 | ||
А зачем это нужно (если, конечно, не преследуются чисто академические цели)? |
Автор: FatalError 2.12.2006, 10:00 |
Когда всё это превращается в огромную массу данных, возникает большое желание написать что-нибудь на чисто русском языке. Но нецензурное. |
Автор: smartov 2.12.2006, 11:20 | ||
Наверное чтобы потом у машины можно было спросить "а вот за такое что мне грозит" или "виновен или не виновен"... Чеолвек - удивительно ленивое существо. Не будут все программерами, пока у компа нельзя будет просто спросить обычным языком то, что тебе надо. А когда этот светлый момент наступит, программеров больше не будет. |
Автор: Artemios 3.12.2006, 18:51 | ||||||||
А чем Пролог не нравится? Определяем для выбранной предметной области операторную нотацию, например:
и тогда следующее предложение будет корректным прологовским фактом:
и можно задавать вопросы:
P.S. Пример копировал из http://isr.by.ru/prolog/index.htm, на различных реализациях Пролога возможны незначительные изменения. |
Автор: smartov 3.12.2006, 19:38 |
Artemios, красиво. Наглядно. Лаконично. |
Автор: regis 4.12.2006, 11:56 |
Так пример, который привел Artemious, 100% искусственный. Вы же не будете утверждать, что в этот пример как-то поможет Пролог-системе понять семантику глагола "работает", и уж тем более, объяснит ей смысл аттрибута "нашем" и как-то даст возможность отличать "наши" отделы от "не наших". Я, в принципе, такие примеры могу хоть на C++ создать (особенно, если макрорасширения подключить) -- но это все-таки не значит, что моя программа будет понимать сколь-нибудь осмысленное подмножество натурального языка. |
Автор: Sun 4.12.2006, 12:18 |
ABBYY Natural Language Compiler http://www.abbyy.ru/press/?param=60773 |
Автор: sergejzr 4.12.2006, 12:31 | ||
А кто сказал, что интерпретер обязан "понимать" семантику ?? |
Автор: Artemios 4.12.2006, 13:36 | ||
sergejzr совершенно прав: формальные языки оперируют только синтаксисом, а любой язык программирования принципиально не может быть ни чем иным, кроме как формальным языком. По этому поводу еще в первой половине прошлого века математиками было доказано: семантика не сводима к синтаксису. Как я понял первый пост default: требуется выделить из естественного языка поддающееся формализации подмножество. Синтаксическое. А для работы с этим подмножеством -- Пролог например вполне может подойти. |
Автор: sergejzr 4.12.2006, 15:11 | ||
Ого! Проектище! Очень интересно, как там разработки идут. В принципе это то, чем я хотел бы заниматься.. |
Автор: regis 4.12.2006, 15:52 | ||||
Даже если ограничиться исключительно синтаксисом, подобная программа на Прологе сможет понимать очень небольшое подмножество естественного языка. Синтаксис языка, особенно русского, допускает слишком много разнообразия. И, кстати, полностью избежать анализа семантики невозможно. Попробуйте формально проанализировать фразу "Джек видел их семью своими глазами". Ее можно интерпретировать как минимум двумя путями, и без дополнительных знаний (например о том, человек Джек или нет) понять ее нельзя. Вот для устранения таких проблем и созданы языки типа Логлана. |
Автор: Artemios 4.12.2006, 16:48 | ||
Никто не спорит ![]() Я наверно не совсем корректно высказался. Имел ввиду не невозможность некоторого сведения семантики к синтаксису (и ABBYY прекрасно собираются доказать такую возможность), а принципиальную невозможность полного сведения семантики к синтаксису. То есть формально мы можем определить, что между объектом A и объектом B существует отношение C. Само C может также выступать объектом для некоторого иного отношения. Чем больше в базе знаний забито объектов и отношений, тем более "умной" будет машина (даже в ABBYY это наполнение данными называют обучением семантике и прагматике, хотя на самом деле происходит формализация оных). Так или иначе, это всего лишь формализация, в конечном итоге редуцируемая все к тем же 0,1 и булевым операциям на них. Интерпретация же формального вывода из базы знаний -- все равно на плечах человека. Логлан, Ложбан -- устраняют проблему формализации синтаксиса естественного языка, так как сами уже синтаксически являются формальными языками. Что может облегчить частичную формализацию семантики, полная же невозможна и в этом случае. |
Автор: default 4.12.2006, 21:43 |
Хорошо, немного по другому Поставим конкретную цель: Создать базу данных об этом мире, аналог Wikipedia приспособленную для понимания и семантического анализа компьютером. Хороший вариант как часть страниц уже существующих в Wikipedia. Она должна: 1.Описывать свойства и отношения между объектами реального мира. 2. Быть приспособленной для понимания и семантического анализа компьютером. 3.Быть доступной для понимания пополнения и редактирования человеком без специальной подготовки. |
Автор: smartov 4.12.2006, 23:57 |
Насколько я понял пример, то база данный, в основе которой лежал бы Prolog в этом смысле подошла бы. Здорово, прикинь себе запрос hunanql('select * where свойство=мягкий') ![]() Тут даже больше проблема стоит заполнения такой базы, чем ее создания ![]() |
Автор: Artemios 5.12.2006, 08:53 | ||||
Угу. Уже ближе, имхо. Хотя в этом контексте лучше употреблять термин "база знаний". Что-то вроде семантической сети...
Про понимание машиной ничего не скажу (не формализуемый термин). Приспособленность для анализа. Язык наподобие того же Ложбана, только редуцированного до некоторого псевдокода, оптимального для внутреннего представления данных.
Здесь подошло бы изоморфное отображение внутреннего языка из предыдущего пункта в выделенное формализованное подмножество естественного языка. Конечно, для человека запись на этом подмножестве будет выглядеть иногда не очень красиво, но все равно понятно. Проблема здесь будет в выделении свободной от неоднозначностей структуры естественного языка, пригодной для описанных целей. Другая проблема -- человек, забивающий данные в базу, остается человеком, а следовательно -- несвободным от неоднозначности. И если вводимые им данные синтаксически уже можно будет проверить на корректность, то полная семантическая проверка была бы возможна только при условии, что вся база данных уже существует, что невозможно. Исходя из вышеизложенного, БД лучше назвать не "база данных об этом мире", а "БД, реализующая некоторое представление об этом мире". А вообще, идея имхо становится интересной ![]() |
Автор: sergejzr 5.12.2006, 13:53 | ||
Есть такие базы как в свободном, так и в коммерческом варианте. Выполнено в логических формулах.. Базы знаний (Cyc - EnCYClopedy): ![]() http://www.cyc.com/ (коммерч.) http://research.cyc.com/(свободн.) http://www.opencyc.org/ Семантические лексиконы: http://wordnet.princeton.edu/ http://www.pgups.ru/WebWN/wordnet.uix?event=browse&source=wnBrowseMenu&location=0%2C |
Автор: regis 8.12.2006, 13:09 |
Собственно, если вопрос о том, где взять базу знаний -- то он решается легко. Основа любой экспертной системы -- база знаний в некой формализованной форме. А такие системы есть по любой отрасли науки -- физика, химия, биология, медицина... |