Показаны сообщения с ярлыком структура. Показать все сообщения
Показаны сообщения с ярлыком структура. Показать все сообщения

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

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

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

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

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

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

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

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

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

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

среда, 15 апреля 2009 г.

Части речи и части слова и части предложения

Необходимо чётко понимать разницу между этими понятиями.

Части слова

В русском языке выделяются следующие части слова: приставка, корень, суффикс, окончание, соединительная гласная. Данное правило не распространяется на такие вырожденные части речи как междометия, союзы, предлоги, местоимения и т.д. Теория гласит, что основой слова является корень, а различные словоформы (формы слова) образуются за счёт изменения приставки, суффикса, и окончания. Стоит учитывать, что в слове может быть несколько приставок, суффиксов, окончаний или корней. Корень может состоять из одной буквы, а также видоизменяться в словоформах.

Части речи
Все слова русского языка можно классифицировать на несколько категорий: существительное, сказуемое, числительное, прилагательное, причастие, деепричастие, наречие, местоимение, союз, предлог и, возможно ещё какие-то. Пожалуй, основным критерием этой типизации является вопрос, на который это слово отвечает вкупе со смысловой нагрузкой этого слова. Да, это довольно размытое понятие, но если вдуматься, то можно обнаружить некоторые закономерноости между частями слова и частями речи. Так, например, если слово оканчивается на -ться, то с большой вероятностью это слово является глаголом, если слово оканчивается на -ный, то скорее всего это слово является прилагательным. Иногда встечаются случаи превращения слова из одной части речи в другую, как пример можно привести слово учащийся. Изначальнно это, как я понимаю, было деепричастие, но оно в русском языке может встречаться как в однном так и в другом виде.

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

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

[Для себя: сбор данных по существительным.]