Изобретание, проектирование, разработка и сопровождение) Том Интеллектуальные системы (Системы решения проблем)  Альберт Александрович Красилов icon

Изобретание, проектирование, разработка и сопровождение) Том Интеллектуальные системы (Системы решения проблем)  Альберт Александрович Красилов


1 чел. помогло.
Смотрите также:
Изобретание, проектирование...
Изобретание, проектирование...
Изобретание, проектирование...
Изобретание, проектирование...
Том Интеллектуальные системы (Системы решения проблем)  Альберт Александрович Красилов...
Том Интеллектуальные системы (Системы решения проблем)  Альберт Александрович Красилов...
Лекция: Этапы проектирования ис с применением uml: Основные типы uml-диаграмм...
Программа дисциплины интеллектуальные информационные системы индекс дисциплины по учебному плану...
Рабочая программа учебной дисциплины (модуля) Интеллектуальные системы принятия проектных...
Интеллект человека и искусственный интеллект...
Программа: Iдень...
Предмет и метод курса "Проектирование информационных систем"...



Загрузка...
страницы: 1   ...   5   6   7   8   9   10   11   12   ...   32
вернуться в начало
скачать

^ 7.1. Лексический анализ


Многие транслирующие системы начинают свою работу с лексического анализа. Это положение удовлетворяет следующим причинам. Причина первая. Каждый исходный текст везде включает в себя безразмерные первичные объекты: слова, числа, выделенные строки, многосимвольные знаки, комментарии, сообщения системе и т.п. лексические элементы. Первый шаг в программировании состоит в приведении объектов к стандартному формату - первый шаг процесса сжатия информации. Выделение безразмерных объектов можно объединить с процедурой синтаксического анализа, тогда отладка транслятора затруднится. Причина вторая. Имеется практическая насущность разделения ошибок лексики и синтаксических ошибок. Лексический анализ может точно обнаружить, локализовать, идентифицировать и квалифицировать все ошибки в лексике. Отделение их от синтаксических ошибок позволяет осуществлять быстрое исправление ошибок. Причина третья. Структура программ транслятора упрощается концептуально, что обеспечивает ускорение их отладки. Ошибки в программах естественным образом связаны с понятиями исходного и объектного языков, что соответствует организационной структуре транслятора. Именно эта причина и воздействует на такой технологический подход создателей транслятора.


Сущность лексического анализа состоит в выделении лексем и в приведении объектов к стандартному формату. Каждая лексема после распознавания заменяется словом или его номером с признаком сорта лексемы. Весь исходный текст заменяется текстом из кодовых слов или номеров объектов вместе с определяемыми по их конструкциям характеристиками. Для ЯПП термин, состоящий из слов и знаков, не распознается при лексическом анализе. Термин в ЯПП является синтаксической конструкцией, он распознается при синтаксическом анализе. Лексический анализ ориентируется на локальный контекст, который позволяет осуществлять точное распознавание лексем с учетом только близлежащих символов окружения лексемы.


Для реализации лексического анализа необходимы словари, каждый из которых содержит однородные лексемы: слова, числа, строки, комментарии и т.п. В задачу лексического анализа входит процедура построения словарей с учетом стандартных частей каждого словаря. Некоторые лексемы должны быть известными в программах транслирующей системы для обеспечения точного распознавания понятий синтаксиса. В трансляторе ЯПП на язык Лейбниц введены следующие словари: словарь слов, словарь терминов, словарь знаков, словарь чисел, словарь паспортов структурных объектов, словарь строк, словарь комментариев, картотеки библиотеки и многие промежуточные или рабочие словари. Словари используются в программах идентификации синтаксических элементов в синтаксическом анализе.


Словари используются в качестве справочных таблиц пользователем для ручного контроля терминов, извлечения элементов словаря при составлении текстов знаний или запросов, интерпретации операций, печати результатов и для статистической оценки различных текстов. Инструментарий Интеллсист предусматривает выдачу в окне интерфейса словарей целиком или фрагментарно для реализации указанных приемов их использования. В процессе ввода знаний в БЗ или запросов словари пополняются, что отражается в показе словарей. Стандартные части словарей составляются при инициализации Интеллсист. Они возникают либо для учета особенностей СеГ, либо связаны с зарезервированными терминами понятий языка Лейбниц. Использование слов из состава зарезервированных терминов допустимо при формировании новых терминов.


^ 7.2. Выделение терминов


Из лексем строятся термины и только термины, поскольку в соответствии с СеГ весь текст знаний или запроса состоит из стандартных или пользовательских терминов. Выделение или идентификация терминов относится к синтаксическому анализу. В связи с этим проблема выделения или идентификации терминов выступает отдельно от алгоритмов синтаксического анализа. Сущность проблемы состоит в следующем. Последовательность лексем расчленяется на термины по принципу максимума. Можно представить дерево «и-или», в котором «и» моделирует операцию катенации лексем, «или» моделирует альтернативу частям терминов. При рассмотрении последовательности лексем вначале выбирается альтернатива по первой лексеме, а затем используется операция катенации лексем до конца некоторой ветви дерева. При этом учитываются альтернативы для каждой лексемы и продолжение применения операции катенации, а также завершения операции идентификации по признаку конца некоторого термина. Наличие признака конца запоминается всегда, когда он встречается в процессе идентификации. Последнее запоминание является результатом процесса идентификации. Если признак конца не был заполнен, то объявляется ошибка о неопределенном термине. Такая процедура реализует быстрый поиск или быструю идентификацию и выполняет принцип максимума.


Только что описанный алгоритм идентификации терминов может привести к коллизии. Самым простым является следующий пример. Пусть определены термины Т такого вида: Т1 = А, Т2 = АА, Т3 = ААА. Тогда последовательность лексем А вида ААААААА будет идентифицирована как Т3 Т3 Т1. Этот вариант идентификации может быть неправильным, поскольку имеются альтернативные результата идентификации: Т1 Т1 Т1 Т1 Т1 Т1 Т1, Т2 Т2 Т2 Т1, Т2 Т1 Т2 Т2 и т.п. Здесь приведен академический пример, демонстрирующий коллизии. Пример назван академическим только в силу того, что он формален и весьма трудно осмысливаем. Вполне возможно, что и не существует подходящего смысла у таких текстов. Практика составления текстов знаний (например, в книгах) показала, что вероятность появления таких примеров весьма и весьма мала. Действительно, человеку трудно выделить вручную термины из аналогичной последовательности лексем и распознать смысл исходного текста. Однако, теоретически такие примеры возможны, например, при рассмотрении текстов ФЯ. Тем не менее, такой алгоритм с принципом максимума заложен в программы Интеллсист, что необходимо иметь в виду при разработке текстов знаний и запросов. Можно надеяться на то, что, если человек будет находиться в затруднительном положении при осмысливании текстов знаний или запросов с примерными особенностями, то он никогда не составит таких текстов для Интеллсист с такими особенностями.


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


Рассмотрение алгоритмов идентификации для большинства пользователей не имеет никакого значения. Они представляют интерес только для тех пользователей, которые по своей профессиональной деятельности связаны с различными словарями самых разнообразных лексем. К таким пользователям можно отнести программистов, лингвистов, статистиков и т.п. Для них важно использовать те БЗ, которые включают эффективные алгоритмы составления и использования различных словарей. Они могут сами вводить структурные объекты, моделирующие словари с различными свойствами, и строить алгоритмы идентификации с помощью словарей. Пример использования деревьев (специальных графов) в программах Интеллсист может оказаться полезным.


^ 7.3. Перевод на ФЯ, синтаксический и семантический анализы


Второй этап трансляции текстов состоит из реализации алгоритмов синтаксического анализа. Если транслятор выполняет функцию проверки орфографии, то второго этапа достаточно. Если транслятор выполняет функции проверки грамматики или перевода текстов, то помимо синтаксического анализа необходимо выполнять и семантический анализ. Здесь рассматриваются особенности реализации таких видов анализа текстов в предположении, что лексический анализ и выделение терминов уже выполнены. При этом напомним, что указанные два алгоритма (лексический анализ и идентификация терминов) можно объединить программно или поэтапно в один алгоритм, если указанные трудности будут устранены или преодолены.


Смысл перехода от ЯПП или ФЯ к ФЯ обсуждался многократно. Будем считать, что трансляция текстов на ФЯ является обычным делом. Важно при этом еще раз подчеркнуть, что при том или ином переходе нельзя терять смысла, передаваемого текстом. Также частично обсуждались вопросы обнаружения синтаксических или семантических ошибок в текстах. Поэтому здесь рассматриваются только алгоритмические и организационные проблемы.


Грамматика ФЯ диктует метод реализации синтаксического анализа текстов. Для любого ФЯ можно составить граф языка, с помощью которого для данного текста можно проложить маршрут в графе, полностью соответствующий тексту. Если прокладка маршрута не удается, то обнаруживается синтаксическая ошибка. Эта мысль (см. гл.2) послужила основанием для применения интерпретатора МГР в реализации полного синтаксического анализа. Следует заметить, что размер (число вершин) графа языка определяет окончательный вывод по вопросу выбора алгоритма анализа. Например, граф языка Лейбниц (без учета подграфов грамматического разбора лексем) имеет около сотни вершин. В связи с этим альтернатива выбора МГР или прямого алгоритма анализа не возникает. При разработке Интеллсист испытывался и МГР, и прямой метод анализа (с помощью применения условных операторов ветвления в процессах грамматического разбора). Несколько предпочтительнее оказался метод МГР. При построении графа языка Лейбниц достаточно было рассматривать только одно понятие, а именно понятие логического выражения. Примерно такой же была ситуация выбора МГР или прямого метода в реализации лексического анализа. Там метод применения МГР оказался эффективнее прямого из-за символьного представления лексем, которые имеют значительный по объему граф языка всех лексем.


Для формализации семантики ЯПП или ФЯ к настоящему времени нет подходящих универсальных алгоритмов за исключением отдельных подалгоритмов, или частных алгоритмов. При наличии формализации синтаксический граф языка расширяется алгоритмами семантики, и используется МГР для формирования выходного или объектного текста. Поэтому во многих разработках трансляторов (транслятор ЯПП не является исключением) используется метод семантических подпрограмм для контроля контекстных условий и формирования фрагментов выходного текста на объектном языке. Всего для ЯПП построено около 150 семантических подпрограмм, включая общие для многих подпрограмм процедуры.


Семантический анализ тесно связан с синтаксическим анализом, он является составной частью семантических подпрограмм. Главной работой семантического анализа является проверка контекстных условий использования понятий синтаксиса. Проверка условий реализуется как составная часть семантических подпрограмм. Например, программы чтения текстов, записи атрибутов или формирования выходных текстов.


В процессе синтаксического анализа обнаруживаются синтаксические и семантические ошибки. Их число примерно равно числу семантических подпрограмм. Синтаксические ошибки обнаруживаются по тем же принципам, какие использовались в лексическом анализе. Если маршрут в графе языка, вершины которого связаны с грамматическими понятиями синтаксиса, укладывается «текст» из лексем, то ошибок не возникает, иначе идентифицируется синтаксическая ошибка. Среди этих ошибок имеются и концептуальные ошибки, которые связаны с правильностью построения или использования понятий. Некоторые смысловые ошибки также возникают и обнаруживаются семантическими подпрограммами.


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


Главным результатом работы синтаксического и семантического анализов является выходной текст на объектном языке. В случае транслятора ЯПП на язык Лейбниц результатом являются словари и элементы БЗ. Содержательно, выходным «текстом» транслятора Интеллсист являются совокупности древовидной информации, кодирующих формулы, слова и термины.


С транслятором Интеллсист непосредственно соединены МЛВ и МАВ, решающие логические уравнения. После формирования фрагмента формулы ветвь дерева передается в БЗ через алгоритмы логического вывода. Во-первых, это важно для быстрого и локализованного обнаружения противоречивости знаний. Во-вторых, так поступает человек при чтении книг или статей. В третьих, разнесенная по времени работа по формированию элементов БЗ с работами по синтаксическому, семантическому, концептуальному, прагматическому и смысловому анализу привело бы к повторению или дублированию некоторых детальных работ. В четвертых, для вычисления смысла фраз важным является наличие в БЗ элементов и использование «рабочего» контекста или контекста и величин, возникающих в процессе указанных анализов. Объединение по времени выполнения алгоритмов трансляции текстов и формирования БЗ с этих позиций является необходимым. Однако при таком объединении возникает новый эффект автоматического «программирования». Для ФЯ программирования повторная трансляция является привычным и необходимым делом. Повторная трансляция знаний и запросов недопустима без восстановления исходных состояний Интеллсист, поскольку транслятор Интеллсист обладает интегральным эффектом. В БЗ откладываются элементы знаний, которые остаются при повторном запуске, например запроса. Появляются ошибки «дважды описан термин» и другие, что не позволяет продвинуться вперед с модифицированным запросом. Для Интеллсист необходимо восстанавливать исходное (до вывода запроса) состояние БЗ, для чего необходимо позаботиться о сохранении начального состояния БЗ. Аналогично обстоит дело с запоминанием знаний человеком при хорошей работе его памяти.


Проверка орфографии (терминография) состоит из идентификации терминов, грамматическая проверка состоит из синтаксического контроля текстов. Такая проверка не строит БЗ, но создает всевозможные словари.


Здесь рассмотрены лишь самые общие черты алгоритмов трансляции ЯПП на язык Лейбниц. Это сделано в угоду пользователя (кроме программистов), которому неважно во что и как транслируется текст.


^ 7.4. Перевод с формального языка на естественный язык


Когда Интеллсист завершила логический вывод решения логического уравнения, осуществляется печать результатов в виде альтернатив совместных фактов. Тексты результатов должны (вообще говоря) удовлетворять правилам СиГ для обеспечения читаемости, поскольку с помощью СеГ хорошо передается смысл текстов, но от правил СеГ страдает красочность результирующих текстов. Приведение формальных записей результатов к грамотным (в соответствии с правильным использованием окончаний слов) текстам для человека составляет важную проблему информатики. Она является достаточно сложной в силу сложности СиГ. Правда, имеются случаи, когда результаты печатаются один к одному. Например, если решена математическая задача, то результат будет выглядеть следующим образом: Х = 23, У = 18; Х = -3, У = -8. Такая запись двух альтернатив для переменных Х и У является приемлемой. Но можно привести много примеров, когда запись становится неприемлемой: «не дождь идет», вместо текста «дождь не идет». Здесь логическая величина «дождь идет» может принимать логические значения ложь или истина (в примере ее значением является ложь).


Из приведенных примеров видна проблема перевода текстов с ФЯ Лейбниц на ЯПП, проблема выполнения правил СиГ, которая в принципе является разрешимой. Если задание имело вычислительный характер, то результаты готовы для восприятия человеком (что важно для встроенных ВМ). Если задание имело не числовой характер, то согласование слов и фраз в соответствии с правилами Сиг важно для правильно восприятия человеком (что неважно для автоматического формирования новых запросов для Интеллсист). Другая проблема касается способов формирования утверждений, являющихся результатом разрешения запросов. Сразу рассмотрим пример. Пусть решается задача с неполным знанием в многозначной логике, использующей слова «необходимо» или «возможно». Прямой результат работы МЛВ будет иметь вид: «работа выполнена = возможно» или «не построено здание = необходимо». Подобные тексты почти не воспринимаются без дополнительных размышлений. Воспринимаемыми текстами являются такие: «возможно работа выполнена» или «построение здания не необходимо» (фраза может быть сформирована более точно, если выбрано новое значение вместо значения «не необходимо», например «важно»). Проблема состоит в автоматизации (или в применении правил) анализа текстов по правилам стилистики.


Задача обратного перевода с ФЯ на ЯПП крайне необходима для наглядного представления результатов. Эта задача отпадает, если результаты используются далее некоторой Интеллсист, так как выходной текст удовлетворяет грамматике ЯПП. Задача обратного перевода крайне важна, она еще более усиливается при построении перевода с ЕЯ на другой язык. Здесь проделана большая работа [Кулагина79], ее опыт должен полностью использоваться. При построении таких трансляторов необходимо воспользоваться существующими программами перевода. Трудности учета СиГ полностью известны - это проблемы учета окончаний и правил стилистики. Алгоритмически (или через Интеллсист для гуманитарных задач) должны учитываться все правила и исключения СиГ, возможно с учетом синонимии, которая не использовалась в лексиконе.


^ 7.5. Сохранение смысла


Много раз упоминалась проблема сохранения исходного смысла исходного текста после трансляции и формировании результирующего текста. В т.2 понятие смысла было определено, а в разделе 6.1 развито. Там же рассматривается и проблема сохранения смысла. Трансляция, как процедура преобразования знания, должна учитывать и разрешать такую проблему и максимально сохранять и переносить смысл исходного текста в результат трансляции.


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


Хуже обстоит дело с искажением знания, выраженного логически. Локальное противоречие может нанести непоправимый ущерб для БЗ. Это происходит не всегда. Локальное противоречие в большинстве случаев «подправляет» содержимое БЗ, устраняет «шероховатости» неполного или неопределенного знания. Однако надо быть готовым к возможному искажению знаний. Интеллсист обеспечивает контроль над локальными противоречиями. Сигнализация о локальных противоречиях (если она подключена) может оказаться полезной для тщательной проверки знаний. Интеллсист не способна автоматически выправить положение с искажением знаний, но она способна обнаружить признаки такой ситуации и достаточно точно локализовать место локального противоречия. Глобальное противоречие, которое также обнаруживает Интеллсист, автоматически запрещает продвижение вперед к разрешению запросов. Зависимые знания, которые не искажают смысла знания или запроса, могут обнаруживаться по параметрическому запросу пользователя. Дело пользователя определить, что необходимо предпринять в таких случаях. Еще одно действие, которое подвластно Интеллсист. Полнота знаний контролируется в Интеллсист, но не используется для какого-либо искажения знаний. Неопределенность операций или величин может привести к индикации такой ситуации, но не более того. Здесь перечислены основные действия, так или иначе направленные на возможное изменение смысла знаний при трансляции или логическом выводе. Интеллсист может способствовать локализации причин искажения.


Потеря знаний в ПП происходит часто. Дело в том, что переводчиком знаний пользователя в алгоритмические знания является программист, то есть человек, который обладает свойством (как и все люди) ошибаться, он может не знать предметной и проблемной областей пользователя-заказчика программы. Его ошибки являются результатом использования неполного или частичного знания о предметной или проблемной области пользователя. Проблема формализации знаний для программистов была основной трудностью, при преодолении которой происходила потеря знаний. Для Интеллсист прямой пользователь сам формирует знания на ЯПП, поэтому потеря знаний может быть незначительной. Например, пользователь знает что-то, что кажется ему второстепенным или уже сообщенным для Интеллсист. Это что-то может сыграть важную роль для передаваемого знания. Однако и здесь имеется возможность потери части знаний. Она происходит при создании лексикона, при описании понятия. Поэтому описание понятий является весьма существенным, оно требует большого внимания и хорошего знания предметной или проблемной областей. Спасительным мероприятием в данном случае является использование отлаженных текстов БЗ по своей области знания. Поскольку БЗ включает в себя лексикон, пользователь может ориентироваться на его содержимое и продуктивно использовать полученные сведения о понятиях (величинах и операций).


Логический вывод в принципе не может приводить к потере какой-либо части знания. Преобразование знаний по законам (аксиомам и правилам) ИЛ исключает потерю знаний. Потеря может происходить только при формировании БЗ или запроса. МЛВ и МАВ решают задачу сохранения знаний и контролируют фактическую и возможную потерю. Это обосновано составлением правил преобразования. Можно привести пример внесения искажений знания. Пусть имеется формальная запись: «А * Х = В». Она обрабатывается программой МАВ так, что в результате получается запись: «Х = В / А и А <> 0». Если в результат не посылалось бы неравенство «А <> 0», то произошло бы искажение знания о линейном уравнении.


Поставим другим образом вопрос сохранения знаний. А всегда ли необходимо сохранять знания? Потеря знаний может играть и положительную роль. Это утверждение может показаться абсурдным. Но рассмотрение примера поможет сгладить впечатление абсурдности. Пользователь описывает понятие «человек». Формально это понятие представляется записью со многими полями, среди которых может присутствовать поля «паспорт» и «цвет волос». При рассмотрении задач о пригодности человека к торговле едва ли будут использованы указанные поля с данными из паспорта или о цвете волос. Поэтому, если при описании понятия будут опущены такие поля, то потери знания не произойдет. Формализация понятий со структурными характеристиками требует особого внимания к выбору частей структуры. В этом проявляется сущность процесса абстрагирования - учета главного и исключения второстепенного. Пример проиллюстрировал положительность роли потери знания. Не всегда следует скрупулезно исследовать понятия по второстепенным характеристикам, связанная с абстрагированием, потеря сведений может принести выгоду в использовании памяти или быстродействия Интеллсист.


^ 7.6. Общие операции анализа текстов и МГР


К операциям анализа текстов относятся следующие операции: выделение, сравнение и генерация слов терминов и языковых фрагментов. С помощью этих операций можно строить алгоритмы обработки текстов. Некоторые из них рассматриваются ниже.


Значительную роль в концептуальной информатике играет программа МГР или подобные ей программы. Они используются в первую очередь для грамматического анализа текстов и выявления терминов. Это не означает умаление свойств и назначение программ, которые реализуют поиск сообщений, идентификацию терминов и выражений, проводят корреляционный анализ смысла произвольных текстов и др. Важным свойством МГР для указанных целей является ее способность проверять принадлежность текстов языку или порождать тексты данного языка.


Тексты подвергаются анализу для решения следующих задач:

  • частотный анализ по буквам (вообще, символам), по словам, по терминам или по фразам;

  • подготовка текстов (первичная обработка) для эффективного преобразования его (вторичная обработка) в выходные тексты или таблицы в соответствии с выходным языком;

  • выделение терминов с частотными характеристиками их использования в тексте;

  • проведение корреляционного анализа текста по смыслу для составления словного или терминологического словарей;

  • использовать текст в поиске необходимых сведений с помощью ключевых слов, терминов или фраз;

  • выполнить текст, если он является программой;

  • ввести текст в Интеллсист, если он является записью знаний или запросом.

Отсюда следуют операции, с помощью которых решают одну какую-либо задачу из числа указанных. Многие операции являются частью семантических подпрограмм МГР. Например, выбор и идентификация слов и терминов, а также составление словарей, ведение подсчета числа использования элементов словарей, перевод лексем во внутреннее представление, сравнение слов и терминов, формирование таблиц с лексемами и характеристиками терминов - все эти операции являются составной часть подпрограмм семантического преобразования. МГР используется для распознавания лексем и грамматических понятий во входном тексте, распознавание описаний понятий. Такие операции необходимы при вводе исходных данных СП, если эти операции не применялись до формирования файлов с исходными данными.


МГР может с успехом применяться для решения многих задач концептуальной информатики. Отметим лишь некоторые. Прежде всего, программа МГР применима для анализа текстов на предмет контроля правильности использования языковых конструкций, другими словами - проводить полный грамматический анализ. Программа МГР применима для выделения малого контекста заданного термина, она применима для сравнения фрагментов текста с заведомо поставленной целью и для генерации фрагментов по заданной части грамматики. Конечно, с помощью семантических подпрограмм можно решать самые разнообразные задачи. Но их реализация таким методом сложна и (скорее всего) непродуктивна.





оставить комментарий
страница9/32
Дата23.09.2011
Размер6,34 Mb.
ТипДокументы, Образовательные материалы
Добавить документ в свой блог или на сайт

страницы: 1   ...   5   6   7   8   9   10   11   12   ...   32
отлично
  1
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Загрузка...
Документы

Рейтинг@Mail.ru
наверх