В настоящий момент я уже успел сделать следующее:
- обработчик одиночного текста с учетом морфологии. текст представлен в виде веб-странички с выпадающим списком на месте слов, для которых найден хотя бы один синоним.
- редактор словаря. Для каждого слова из словаря может быть добавлен новый синоним или удален уже существующий
Continue reading »
Итак, после того, как все приготовления были произведены, можно приступать к тестированию производительности. Возьмем наш текст про мышонка Феликса и прогоним его через наш синонимайзер. В результате получилось следующее:
- символов с пробелами: 3239
- символов без пробелов: 2706
- всего русских слов: 539
- неповторяющихся слов: 372
- неповторяющихся слов, имеющих хотя бы один синоним: 275
- всего найдено синонимов: 11868
- неповторяющихся синонимов: 5372
- время выполнения: 38.2 секунды (320 слов в секунду)
Continue reading »
Итак, перейдем от теории к практике. Посте того, как было решено оптимизировать базу на предмет оптимизации, я произвел следующие шаги:
- нашел в словаре все слова, для которых морфологический движок содержит базовые формы. Из 310 тысяч таких слов оказалось всего 56 тысяч.
- определил, к какому классу (существительное, прилагательное, наречие и т.д.) относится каждое из слов.
- добавил две таблички, одна из которых содержит все возможные варианты всех существительных (просклонял их по числу и падежу). Всего оказалось 250 тысяч возможных вариантов без учетов повторений для 26 тысяч имен существительных, имеющих базовую форму. Вторая табличка - индекс, содержащий все варианты чисел и падежей и ссылающийся на таблицу вариантов существительных. Индекс содержит 318 тысяч записей, по количеству всех словоформ имен существительных (с повторными ссылками на таблицу слов)
- то же самое сделал для имен прилагательных. Правда, из-за того, что склонять имена прилагательные нужно не только по числу и падежу, но еще и по роду, времени и сравнительной форме, то количество вариантов превысило 10 миллионов. Придется разделить индекс на несколько частей (скорее всего на столько, на сколько букв начинаются варианты), чтобы ускорить поиск.
Continue reading »
Как известно, пользователи программных продуктов хотят чтобы эти самые продукты занимали как можно меньше места, работали безошибочно и как можно быстрее. Но, как знают разработчики, иногда приходится жертвовать одним качеством для достижения максимальной выгоды в другом месте.
Continue reading »
Последние комментарии