Что ж, вы меня активно читаете и вдохновляете, поэтому продолжим.
В аспирантуру меня ещё не зачислили, мало ли все остальные также всё сдали на пять, и у них послужной список окажется круче? :) Это маловероятно, но всё же. Ладно, будем исходить из оптимистичного и наиболее вероятного сценария.
Сегодня поговорим о цели моего исследования. Внимание, здесь я имею в виду не исследование в аспирантуре, а более общую тему - свои разработки вообще. То, чем я буду заниматься в аспирантуре, будет, надеюсь, в большой степени относиться к общему исследованию, но будут и вынужденные отвлечения от основной темы. Они необходимы, чтобы на наглядных примерах доказать практическую значимость работы.
Итак, имеем в виду общее исследование. Важно поставить перед собой цель, иначе нельзя будет задать верное направление для движения.
Основной мой интерес вы уже знаете, это машинная обработка текста на естественном (прежде всего русском) языке. Интерес этот появился у меня со времён курса "Теории компиляторов", который показал, что сложные языковые конструкции можно описывать весьма элегантными и выразительными правилами вывода (формальные грамматики Хомского). Да, всё это хорошо работает на формальных языках, но возникает соблазн попробовать проделать всё тоже самое и для неформальных. Было бы здорово написать систему, понимающую команды на русском языке. Как бы вы отнеслись к программированию на русском языке? :)
"Нарисовать окно размером 200 на 300 пунктов. Изобразить в окне красный круг радиусом 30 пунктов на чёрном фоне. В течение 10 секунд плавно перемещать круг от левой границы окна к правой, одновременно с этим плавно изменяя его цвет на яркоголубой".
Задача в общем виде слишком сложна, понятное дело, и до сих пор не решена. Сществуют решения для частных случаев обработки текстов, как правило, ориентированные на определённую предметную область.
Дальнейшее обучение в институте подсказало другие пути к использованию механизма обработки текстов. Существует большая проблема по обработке массы документов, размещённых в сети. Придуманы языки для разметки сайтов, с помощью которой боты могут использовать размещённую на сайтах информацию. Но это всё костыли: такую разметку нужно писать в дополнение к основному содержанию сайта. Куда естественнее было бы, если бы машина могла пользоваться теми же текстовыми страницами, что и мы с вами. Всё, что нужно сделать - это научить её работать с естественным языком.
В дипломном проекте мной была предпринята первая попытка по созданию собственной системы работы с текстом на естественном языке. Система не была доведена до какого-то приемлемого состояния; после защиты диплома я двинулся в другую сторону (и в этом направлении планирую работать в аспирантуре). В результате мне удалось разработать весьма симпатичную платформу, на которой достаточно легко описывать сложные операции с потоками данных вообще и с текстами в частности. На основании этой платформы я планировал переработать свою дипломную систему, но сейчас уже немного поменял планы. Алгоритмы, использованные мной в первой системе, частично вошли в язык DTL, а частично видятся мне в настоящий момент несовершенными. Поэтому они будут заменены другими, более эффектиными.
Изучение литературы и веб-сайтов по проблемам обработки текстов позволит изучить существующие и существовавшие приёмы по обработке текстов, выбрать лучшее или на их основе разработать что-то своё. Но во многих случаях это позволит не изобретать велосипед, который, к тому же, будет весьма неэффективным.
Таким образом, отсюда мы начнём движение к разработке системы обработки текстов, которая будет иметь ряд ценных практических применений. Одним из них, как я уже упоминал ранее, может стать генератор вопросов СИ.
Но перед тем как начать активное изучение этого вопроса, определим конечную цель работы. Помимо всего прочего, это позволит нам по завершении ответить на вопрос, удалось ли нам достичь эту цель или нет. Сроки выполнения задачи, достижимость цели и возможность участия в коллективных проектах в данном тексте не рассматривается.
Минимальной целью, которую я перед собой ставлю, будет разработка системы, которая на введённый текст
"У Васи было 5 яблок, а у Маши - 2. Сколько яблок было у них вместе?"
будет давать ответ "7".
Это программа-минимум :)
Максимальной целью исследования будет система, которой можно будет скармливать произвольные объёмы текста (вплоть до Википедии целиком) и которая на основе этих кусков текста будет строить в памяти формальную картину мира и будет обладать способностью отвечать на вопросы по этой картине мира.
Итак, направление задано. Теперь, невзирая на трудности, будем двигаться к цели.