понедельник, 27 апреля 2009 г.

Аспекты реализации

Давайте рассмотрим сущности, которые потребуются для будущей системы, а также некоторые требования к этим сущностям.

Текст
Класс для работы с текстом. Это, пожалуй, один из базовых классов для начальной работы с материалом. Он должен уметь провести общий анализ текста:
- чистка текста от лишних знаков, в зависимости от того, что планируется дальше делать с этим текстом. На текущем этапе работы класс должен оставить от текста группы русских букв в нижнем регистре, разделённые одним пробелом. Эти группы букв будут называться словами.
- класс должен уметь превратить текст в коллекцию слов.
- статистические данные по тексту - количество символов, количество байт, гистограмма популярности символов в тексте.
- аккумулировать данные из двух объектов этого класса в один.

Коллекция слов
Коллекция слов представляет собой класс для работы с неупорядоченным набором слов. Функции данного класса:
- количество слов;
- уникализация коллекции;
- сбор гистограммы триграмм по коллекции;
- итератор по словам;
- базовые методы работы с коллекцией - поиск, пересечение, объединение.

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

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

Книга и библиотека
Тут приличная горка кода будет. Код работающий с библиотекой и книгами. Чтение книги, преобразование книги в нужную кодировку и т.д. Получение автора и названия книги. Код не сложный, но весьма витиеватый.

Хранилище данных
Тут нет разницы работать с собственным хранилищем данных или же использовать базу данных. Дополнительный объём кода в первом случае просто напросто компенсируется кодом на работу с хранилищем, а также кодом создания хранилища.

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

Комментариев нет: