Мдя. На форуме тихо как на кладбище. Аж мурашки по коже.
Что-бы не теряться, решил отписать о текущих наработках.
Уже почти доделал генератор словоформ, но в ходе последних исследований и опытов над прилагательными базы АОТ выяснилось, что генерировать формы прилагательных в полностью автоматическом режиме не так уж и сложно!
Сделал программу, строящую по базе дерево зависимости изменения окончаний от начальной формы прилагательного и нашлось колоссальное кол-во закономерностей! Я, полный воодушевления и находящийся на 7-ом небе от счастья
, бросил все силы на дальнейшее изучение и начал составлять программу, которая бы генерировала формы в автоматическом режиме но...
(как всегда это противное НО)... нашлась проблема, которая не может решаться компьютером автоматически: мягкий знак, зависящий от вопроса, поставленного к прилагательному (незнаю как это называется, плохо учил русский язык в школе, от чего сейчас страдаю
), например:
акулий (чей?) -> акулЬего
бывший (какой?) -> бывшего
вроде-бы оба слова - прилагательные, а мягкий знак зависит именно от вопроса... а как научить компьютер определять вопрос? Никак. Для этого нужен разум.
Но я не сдавался!
И после нескольких дней работы и четырёх переписываний функции с нуля родилось оно! Я даже не стал делать функцию в виде дерева, а просто загнал всё в таблицу (на столько уже это надоело). Если бы не этот мягкий знак, о котором говорилось выше, то таблица содержала бы не больше 10-ти записей, а так она выросла до 80-ти записей. Все эти записи были вылизаны ручками и подправлены для максимально эффективной работы.
Итоги: на данный момент функция правильно генерирует 42184 прилагательных из 42227, а неправильно только 43, причём больше половины из этих ошибок - это ошибки в базе АОТ. Т.е. процент правильного угадывания словоформы составляет 99,9%! И это без словаря и с возможностью составления словоформ, отсутствующих в словаре АОТ!
Под прилагательными я подразумеваю такие слова:
- прилагательные (большой, красивый)
- притяжательные прилагательные (мамин, акулий, Адамов)
- числительные (первый, двадцатый, двухсотый)
Показать пока нечего, т.к. сделан только модуль синтеза прилагательного и тестовая программа, на которой он прогонялся по словарю АОТ.
Сейчас осталось допилить табличку, чтобы максимально снизить кол-во ошибок (сейчас 43 штуки) и оформить это всё в программку для демонстрации. Потом хочу попробовать таким-же образом обработать существительные, но думаю, что там не так всё просто
.
В дальнейшем можно будет оформить эти функции в DLL и прикрутить к новому ТОМ-у. Проблема в том, что я не писал DLL-ки и придётся этому учиться. А можно ли вызывать из одной DLL другую DLL?
Прошу прощения за раздутое сообщение, просто накипело, захотелось выговориться. 