Padawan писал(а):
1) Создание формализованного русского языка (Ф для краткости) на уровне перевода текста с него на русский (Р) и обратно. Здесь же - описание правил перевода. Перевод может быть не однозначным, но смысл русской фразы при переводе Р->Ф->Р не должен сильно искажатся (что значит сильно еще надо уточнять, но там разберемся, я думаю).
Т.е., короче говоря, хочется получить автоматический
семантический анализ (и синтез) текста на естественном языке, так?
worm2 писал(а):
Padawan писал(а):
2) Создание базы знаний (например в виде какого-нибудь графа ), которая бы отражала смысловые связи между словами в русском языке.
Пример: Там могут быть записаны такие высказывания: Мужчины обычно носят брюки. Если мужчина носит юбку, то вероятно он шотландец. И т.д.
Это уже, на мой взгляд, чистой воды ИИ. И по моему сугубо личному мнению, такая база знаний будет сильно тяготеть к тому, чтобы включить в себя вообще все известные знания.
Именно. Более того, такие базы знаний (т.н. common sense knowledge bases) давно существуют - тот же
Cyc (
OpenCyc) ведёт свою историю ещё с 80-х годов (являясь преемником системы [url=http://www.nigma.ru/index.php?q=Ленат+Эвриско]"Эвриско"[/url] Дугласа
Лената).
Сейчас это весьма обширный (сотни тысяч понятий, миллионы утверждений) каркас из
общефундаментальных знаний - как об окружающем мире, так и о весьма абстрактных вещах; все знания в базе структурируются в виде
онтологического дерева контекстов-"микротеорий" (с учётом того, что в разных контекстах одно и тоже утверждение может иметь различные смыслы, либо вообще не иметь смысла).
Padawan писал(а):
3) Поиск знаний на заданную тему.
4) Создание правил вывода в Ф, аналогичным правилам вывода в математической логике.
Hу, ядро Cyc (его inference engine) как раз и является, грубо говоря, очень продвинутым экспертным движком. Значительная часть нужных правил вывода (в том числе все общелогические) там уже есть - т.е., как и в любой [url=http://ru.wikipedia.org/wiki/Экспертная_система]ЭС[/url], можно задавать "вопросы" (на Лиспо-подобном CycL, аналоге твоего Ф) и получать разумный ответ. (Кстати говоря - спецификация CycL, afair, рассматривается сейчас в качестве черновика стандарта на онтологическое представление знаний.)
В общем, как я понимаю, для решения твоей задачи достаточно:
- написать NL-парсер (aka мат. модель aka микротеорию) русского языка - т.е. правила перевода Р->Ф(->Р), в твоих терминах;
- объяснить смысл используемых русских слов, т.е. ассоциировать их с соответствующими CycL-понятиями из базы знаний (толковый словарь Р->Ф; словарь Ф->Р должен получиться автоматически).
NL-парсер английского, кстати говоря, там уже работает (свободно пока не доступен - как я понял, включат в следующий open source-релиз).
Добавлено спустя 16 минут 48 секунд:Сомик писал(а):
Хм.. ИМХО нереальная задача. Вот у нас на кафедре бьются над проблемой автоматического решателся математических задач
http://intsys.msu.ru/invest/solver/ И что-то сделали, но до настоящего и окончательного продукта еще далеко.
"Что-то сделали" и у нас в политехе на кафедре
ИТАС. Причём утверждается, что созданная мат. модель русского языка успешно работает и решает любую задачу из школьных учебников (кроме т.н. "олимпиадных" - там уже не с русским языком проблемы, а, скорее, с нехваткой "интуиции" - тех самых common sense-знаний, о которых писалось выше).
Сомик писал(а):
Я это тут к тому упоминаю, что формальный математический язык куда проще русского - в нем, как минимум, однозначная трактовка, и то проблем уже очень много. А в русском трактовка не однозначная. Hу вот к примеру - "кран номер один поднимает кран номер два". Так какой кран тут собственно поднимает ? =))
Первый. Вполне однозначная трактовка (за отсутствием остального контекста). А если будет другой контекст - возможно, будет другая трактовка. Hичего страшного.
Сомик писал(а):
Hа самом деле русский язык куда сложнее английского в этом смысле. Если для английского можно ну хоть в некотором виде сделать распознаватель речи, то для русского это (по крайней мере на современных компах) не реальная задача.
По-моему, ты слишком преувеличиваешь сложность русского языка (точнее, преуменьшаешь сложность английского). И там и там достаточно проблем - но это общие проблемы, возникающие при переводе естественных текстов на формальные языки.