КИБЕР-МОЗГ
Содержание.
О проекте.
Принцип действия
Как добавить новые слова в словарь.
Как создать свой словарь.
Правила формирования словаря.
Примеры.
Заключение.
P.S.
О проекте.
Поразмышляем. Как выразить мысль? Ну, например, воспроизвести ее в виде фразы(предложения).
Что такое фраза? Это набор слов, расставленных в определенном порядке. Определенный
порядок это некая общепринятая модель, причем таких моделей на любую
мысль существует множество. Слова тоже берутся не с потолка, а строго соответствуют
предметам и персонажам выражаемой мысли.
Итак, для того, чтобы выразить мысль, необходимы особый набор слов и модель
фразы. Тогда у мысли появляется смысл и она дойдет до слушателей. Что же будет,
если в этой цепочке что-нибудь перепутать? Получается бессмыслица. А порой,
в этой путанице кроется что-то похожее на потайной смысл. Обычно всё это вызывает
у нас смех.
Наше "чудо биокибернетики" Кибер-Мозг отличное хранилище слов и
моделей фраз. Но вот правильно подобрать их он не умеет. Да и мыслей у него
своих нет. Всё генерируется случайным образом. Получается весьма симпатичный
и смешной бред.
Принцип действия Кибер-Мозга.
Словари.
Конечно способности Кибер-Мозга, как и любой другой программы, будут зависеть
от той информации для размышления, которая будет ему предоставлена. Информация
для размышления Кибер-Мозга находится в файле словаря. Словарь это список
слов, упорядоченных по смыслу, и модели предложений, сгруппированные по темам.
Имя файла словаря задается в инициализационном файле "start.xml".
По умолчанию он содержит запись <listfile name="PGVList.xml"/>.
Для того чтобы Кибер-Мозг работал с другим файлом словаря переправьте
значение параметра "name" на соответствующее имя файла.
Проблема загрузки словаря.
Во время запуска Flash-приложение Кибер-Мозга загружает файл словаря. Если
словарь содержит сложную и громоздкую структуру данных, загрузка файла может
продолжаться довольно долго. Flash Player может даже предложить прервать работу
клипа. В этом случае откажитесь и подождите еще немного. Если в структуре
словаря нет замкнутых ссылок значит, всё будет в порядке. Кстати, такое
предложение чаще всего выдается при работе клипа из Internet-броузера, из-за
особенностей Active-X Player он работает медленнее.
Функционирование.
Выберите нужную тему и жмите на красную кнопку, пока не выскочит что-нибудь
смешное типа: "Держи пиво в холоде а дитя без глаза."
или "Береги честь с молоду, за умного сойдешь."... Некоторые
фразы, с грамматической и логической точки зрения, выглядит довольно диковато,
но, закроем глаза на грамматику... Ведь мозги уже не свежие, заспиртованные,
и память уже не феноменальная, а логика немного подпортилась...
Принцип действия прост. Случайным образом из списка выбирается модель предложения.
Каждый элемент в модели предложения ссылается на список слов. Слова в списке
слов разделяются запятыми. Также в списке слов наряду с простыми словами могут
находиться и ссылки на другие списки слов. Далее слово обрабатывается согласно
заданным параметрам (склоняется, спрягается и т.д.), то есть изменяется его
окончание. Окончание берется из списков параметров. Все правила, по которым
формируется фраза, изложены ниже.
Как добавить новые слова в словарь.
Словарь можно дополнить и изменить. Для этого необходимо просто открыть файл
"имя_файла.xml" в любом текстовом редакторе. Теперь дополняйте,
изменяйте или заменяйте списки слов, которые вам понравятся. В списке слова
должны разделяться только запятыми.
Как создать свой словарь.
При желании можно составить новый словарь. Если вы хоть немного знаете что
такое документ XML и хотите поупражняться в его составлении, да еще и получить
удовольствие это для вас. Помимо правил XML есть еще принципы взаимосвязей
между элементами словаря и принцип генерации предложения. Всё это изложено ниже.
Правила формирования словаря.
Формирование списка слов.
- Весь словарь должен быть заключен в теги <dictionary>... структуры
...</dictionary>.
- Любой список слов и параметров должен располагаться по следующему принципу:
<имя_раздела>
<имя_списка_слов_1>слово_1,слово_2,...,слово_n</имя_списка_слов_1>
<имя_списка_слов_2>...</имя_списка_слов_2>
...
<имя_списка_слов_N>...</имя_списка_слов_N>
<имя_списка_параметров>
<params source="окончание_1" P1="замена_1" P2="замена_2"
p3="..." p4="..." P5="..." p6="..."/>
<params source="окончание_2" P1="замена_1" P2="замена_2"
p3="..." p4="..." P5="..." p6="..."/>
...
<params source="окончание_M" P1="замена_1" P2="замена_2"
p3="..." p4="..." P5="..." p6="..."/>
</имя_списка_параметров>
</имя_раздела>
- Слова обрабатываются следующим образом - в списке параметров ищется окончание
слова по значению "source", и, в зависимости от номера параметра,
задаваемого в модели ("P1","P2","P3","P4","P5","P6"),
заменяется на значение этого параметра.
- Если необходимо, чтобы слова, взятые из списка, были с заглавной буквы,
первый тег указывается <имя_списка_слов CASE="UP">
- Слова в списке могут быть не только одиночными. Например "Доктор Айболит"
- словосочетание. Чтобы в каждое слово подверглось обработке, слова разделяются
символом "|", т.е. "Доктор| Айболит". Тогда,
например, в родительном падеже, фраза будет звучать не "Доктор Айболита"
а "Доктора Айболита".
- Если слово не должно обрабатываться - к нему добавляется "&NT".
Например "метро&NT".
- Списки слов и параметров могут быть вложенными и представлять древовидную
структуру.
- В списке слов кроме слов могут находиться ссылки на другие списки слов.
Тогда слово будет браться из указанного в ссылке списка. Это делается по следующим
принципам:
- Ссылка задается следующим образом:"&имя_раздела&имя_списка_слов&имя_списка
параметров&имя_параметра". Например "&noun&male&single&P1".
- Первые три элемента ссылки могут представлять собой и сложный путь, разделяемый
символом "/". Например "&noun&male/name&single/rod&P1".
- Любой элемент ссылки может быть опущен. Тогда он будет взят из модели
предложения. Например, если ссылка в разделе "noun" в списке
"male/prof" задана как "&&/name"
то слово будет взято по ссылке "&noun&male/name",
а остальные параметры взяты из модели.
- В случае, если слово по ссылке не надо обрабатывать, вместо третьего
элемента ставится "&NT". Например "&noun&male/name&NT".
Формирование списка моделей.
- Все темы моделей заключаются в теги <structures> ... темы ...
</structures>.
- Модели заключаются в теги тем <theme name="имя_темы">
... модели ... </theme>.
- Теги модели описываются как <clause context="объяснение предложения">
... члены предложения ... </clause>.
- Члены предложения:
- Слово из списка <MEMBER domain="имя_раздела" section="имя_списока_слов"
option="имя_списка_параметра" param="имя_параметра"
case="UP"/>. Параметры "option", "param",
"case" - не обязательные.
- Модель из списка вспомогательных моделей предложений <ENTRY name="имя
модели"/>. См. ниже.
- Модель из списка моделей предложений (если надо сделать сложное предложение)
<STRUCT/>.
- Пробел <SPACE/>.
- Тире <DASH/>.
- Простой текст <TEXT>... любой текст ...</TEXT>.
- Точка <DOT/>.
- Запятая <COMMA/>.
- Восклицательный знак <EXCLM/>.
- Тройное восклицание <3EXCLM/>.
- Вопросительный знак <QUEST/>.
- Вопросительное восклицание <QUEX/>.
- Список членов предложения для случайного выбора <RANDOM>...
члены предложения ...</RANDOM>.
- Группировка членов предложения (полезно для случайного выбора) <GROUP>...
члены предложения ...</GROUP>.
- Пустой член (полезно для случайного выбора) <EMPTY/>.
Формирование списка вспомогательных моделей предложений.
- Списки вспомогательных моделей заключаются в теги <entries>...
вспомогательные модели ...<entries>.
- Каждая вспомогательная модель задается как <имя_вспомогательной_модели>...
члены предложения ...<имя_вспомогательной_модели>.
Примеры.
К проекту прилагаются примеры:
- "PGVList.xml" - простейший пример, в котором поговорки
разделены пополам и в случайном порядке совмещаются.
- "RCRList.xml" - моя попытка приближенно создать модель
русского языка. Списоки слов классифицированы по частям речи (noun - группа
существительного, numeral - числительное, prep - предлог, pref - приставка,
verb - глагол, adv - наречие, conj - союз, int - междометие). Существительное
классифицировано следующим образом - &noun&(смысл/(муж.,жен.,прилаг.))&(время/(муж.,жен.,прилаг.))&(падеж).
Глагол - &verb&(смысл/(актив,пассив))&(время)&(лицо,род(для
прошедшего)).
Заключение.
Я не претендую на то, что вы проникнитесь этим проектом, возьметесь создавать
свои модели... И все-таки надеюсь, что это существо вызовет у вас
симпатию. Поле деятельности большое! Можно даже стихи запрограммировать!
Если вы загоритесь этой идеей, присылайте мне свои словари! Я буду обновлять
свои словари и выкладывать новые.
P.S.
Идея этого проекта зародилась еще в середине 90-х, когда я, студент МГТУ им.
Н.Э. Баумана, с моим лучшим другом-сокурсником (SDA), сидели за 286-ми в лабораторном
комплексе НИИ ПМ и писали разные полезные программы, делали лабораторные работы,
играли и т. д... Тогда то мы и сделали аналогичную программу на Turbo Pascal
7.0.
RACER
racer242@mailru.com
2001
Используются технологии
uCoz