WordSyn 5: предрелизная подготовка
Итак, словари побеждены. Теперь они хранятся не в базе, а в файле, по одному файлу на словарь. При этом словари загружаются в оперативную память, и программа работает с хешированным списком. В зависимости от размера словаря скорость поиска синонимов для слов увеличилась от 20 до 5 раз (чем больше словарь, тем ниже скорость поиска). В любом случае скорость поиска слов увеличена. Кроме всего прочего, увеличилась скорость импорта словарей: словарь на 5к слов импортируется со средней скоростью 750 строк в секунду, так что импорт этого словаря занимает около не более 10 секунд. Словарь на 30к слов импортируется чуть медленней - со средней скоростью 650 строк в секунду, так что импорт проходит чуть меньше минуты. Все измерения производились на компьютере с процессором Intel Core 2 Duo 2.66GHz, 2MB RAM и дисковой подсистемой на базе двух SCSI дисков Fujitsu 74GB 10K RPM, подключенных через SCSI-контроллер с пропускной способностью шины 160 мегабайт в секунду. Чуть позже я сделаю замеры скоростей на своем ноутбуке, но уже сейчас можно предположить, что скорость работы будет меньше не более чем в четыре раза.
После импорта словари компилируются и в таком виде записываются на диск. Подключение или отключение словарей производится простым перемещением файлов со словарями в или из папки, в которой программ ищет словари во время старта. Я сделал это по аналогии с Apache Server, в котором активация/деактивация виртуальных хостов сделана аналогично - файлы конфигов активных хостов находятся в папке ENABLED, а неактивных - в папке AVAILABLE.
В настоящий момент осталась только одна проблема - научить программу разделять слова, которые должны приводиться к базовой форме с помощью морфологического движка, и слова, которые должны записываться в словарь в том виде, в котором пользователь вводит их. Это нужно как минимум для того, чтобы можно было в поной мере пользоваться преимуществами морфологического движка. Если же этого не сделать, то при записи слов в их оригинальном виде будет невозможно использовать синонимы одной формы слова для другой формы того же слова. К примеру, записав в словарь пару МАМА-МАМКА, с помощью морфологии мы сможем привести оба слова к любому падежу и числу, тогда как записав пару МАМЕ-МАМКЕ, мы уже не сможем сделать этого. Правда, тут есть другой нюанс - в этом случае польщователь может использовать разные пары для разных форм слова, что сделает текст более человечным. Впрочем, это внесет только больше неудобств, чем преимуществ.



08.11.2009 в 23:14
пиздец, я вообще думаю а нафиг ты свзязался с грамматикой
09.11.2009 в 00:13
Использование морфологии позволяет сэкономить кучу времени на пополнении словаря, так как не нужно добавлять синонимы для каждой из грамматических форм каждого слова, ведь у имен существительных их шесть у каждого из грамматических чисел (итого 12 у им.сущ. мужского и женского родов, и 6 - у среднего рода), а у имен прилагательных их аж 18!!! Ведь намного удобнее добавить синоним только один раз, чем восемьнадцать. Тут не спасет даже возможность, предоставляемая некоторыми программами для генерации грамматических форм слов, так как даже такое действие требует как минимум 20 секунд на то, чтобы создать морфологическое правило и сгенерировать все формы. Плюс ко всему, в моей программе “зашит” огромный словарь, из которого можно черпать синонимы вместо того, чтобы выдумывать их.
23.11.2009 в 11:48
Интерестно, а можно ли в новой версии WordSyn заносить слова в базу целыми словосочетаниями?
Например:
1. состояние болезни –> болезненное состояние;
2. во влажный песок –> в увлажненный грунт
23.11.2009 в 15:10
Денис, да, такое будет возможно как только программа научится работать с многословниками. В настоящий момент такое невозможно из-за того, что перед обработкой текст разбивается на слова, которые потом синонимизируются отдельно. В случае с многословниками будет несколько по-другому: программа будет проходить по списку многословников и проверять их наличие в тексте, выделяя результат в синонимизиции в одну единицу текста.