Diff for /db/prgsrc/Attic/readme.txt between versions 1.1 and 1.2

version 1.1, 2001/10/31 03:00:10 version 1.2, 2001/10/31 03:07:29
Line 1 Line 1
   
   
 ▌║И╗╔ А╚╝╒═  Общие слова
 ~~~~~~~~~~~  ~~~~~~~~~~~
   
 ▒╚╝╒╝Д╝Ю╛╝╘ АГ╗Б═╔БАО ╕═╓╜═О ╞╝А╚╔╓╝╒═Б╔╚Л╜╝АБЛ ЮЦАА╙╗Е ║Ц╙╒, ╚═Б╗╜А╙╗Е ║Ц╙╒  Словоформой считается жадная последовательность русских букв, латинских букв
 ╗ Ф╗ДЮ. █═╞Ю╗╛╔Ю, "┘╙═Б╔Ю╗╜═", "England", "1974", "H2O".  и цифр. Например, "Екатерина", "England", "1974", "H2O".
 "H_2O", "┌╚═╓╗╒╝АБ╝╙-2000"  -- МБ╝ ╞═ЮК А╚╝╒╝Ю╛.  "H_2O", "Владивосток-2000"  -- это пары словорм.
   
 █═Г═╚Л╜═О Д╝Ю╛═ А╚╝╒╝Д╝Ю╛К, ╜╔ А╝АБ╝ОИ╔╘ Ф╔╚╗╙╝╛ ╗╖  Начальная форма словоформы, не состоящей целиком из 
 ЮЦАА╙╗Е ║Ц╙╒ -- МБ╝ А═╛═ А╚╝╒╝Д╝Ю╛═.  русских букв -- это сама словоформа. 
   
 ░╔ё╗АБЮ ║Ц╙╒ ╞Ю╗ ╞╝╗А╙╔ ╜╔ ЦГ╗БК╒═╔БАО.  Регистр букв при поиске не учитывается.
   
 ▐╝╗А╙ ╞╝ Г═АБ╗ А╚╝╒═ ╜╔ ╞╝╓╓╔Ю╕╗╒═╔БАО. █╔ ╞╝╓╓╔Ю╕╗╒═НБАО ╗  Поиск по части слова не поддерживается. Не поддерживаются и 
 Ю╔ёЦ╚ОЮ╜К╔ ╒КЮ═╕╔╜╗О.  регулярные выражения.
   
 ▒╞╗А╝╙ ╜╝╒КЕ Д═╘╚╝╒, ╙╝Б╝ЮК╔ ╞╚═╜╗ЮЦ╔БАО ╞╝АБ═╒╗БЛ ╞╝╓ CVS.  Список новых файлов, которые планируется поставить под CVS.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   
 ▒╚╝╒═Ю╗:  Словари:
   
   dict.koi      ▒╚╝╒═ЮЛ ─╚╔╙А═╜╓Ю═ ▀╔║╔╓╔╒═ ╓╚О ispell.    dict.koi      Словарь Александра Лебедева для ispell. 
                 ▌║Ю═╖╝╒═╜ А╚╗О╜╗╔╛ ╒А╔Е А╚╝╒═Ю╔╘,                  Образован слиянием всех словарей, 
                 ╙╝Б╝ЮК╔ О А╛╝ё ╜═╘Б╗.                  которые я смог найти.
   
   mydict.koi    ▒═╛╝╞═╚Л╜╝╔ ╓╝╞╝╚╜╔╜╗╔ А╚╝╒═ЮО. └╝╞ЦА╙═НБАО ╜╔╙╝Б╝ЮК╔    mydict.koi    Самопальное дополнение словаря. Допускаются некоторые 
                 ╒╝╚Л╜╝АБ╗. █═╞Ю╗╛╔Ю, ╒ ▀╔║╔╓╔╒А╙╝╛ А╚╝╒═Ю╔                  вольности. Например, в Лебедевском словаре 
                 АЦИ╔АБ╒╗Б╔╚Л╜К╔ ╒Б╝Ю╝ё╝ А╙╚╝╜╔╜╗О, ╙═╙ ╞Ю═╒╗╚╝,                  существительные второго склонения, как правило, 
                 ╞╝╛╔Г╔╜К ╙╚НГ╔╛ "K" ╗╚╗, ╔А╚╗ ╝╜╗ ╜╔ ╗╛╔НБ Д╝Ю╛К                  помечены ключем "K" или, если они не имеют формы 
                 ╛╜╝╕╔АБ╒╔╜╜╝ё╝ Г╗А╚═ - ╙╚НГЯ╛ "J". ┌ mydict.koi                  множественного числа - ключём "J". В mydict.koi
                 ╒А╔ Б═╙╗╔ АЦИ╔АБ╒╗Б╔╚Л╜К╔ ╞╝╞═╓═НБ А ╙╚НГЯ╛ "K".                          все такие существительные попадают с ключём "K".        
   
   
   ndict.koi     ─╒Б╝╛═Б╗Г╔А╙╗ Аё╔╜╔Ю╗Ю╝╒═╜╜К╘ ╓╝╞╝╚╜╗Б╔╚Л╜К╘ А╚╝╒═ЮЛ.                  ndict.koi     Автоматически сгенерированный дополнительный словарь.              
                 ▐Ю╗╛╔Ю: ╒ dict.koi ╜╔Б А╚╝╒═ "²╘╓╔╚Л╛═╜",                  Пример: в dict.koi нет слова "Эйдельман",
                 ═ ╒ ║═╖╔ ╒АБЮ╔Г═НБАО А╚╝╒╝Д╝Ю╛К "²╘╓╔╚Л╛═╜"                  а в базе встречаются словоформы "Эйдельман"
                 ╗ "²╘╓╔╚Л╛═╜═". ▒╙Ю╗╞Б, ╝║╜═ЮЦ╕╗╒ МБ╝,                  и "Эйдельмана". Скрипт, обнаружив это,
                 ╞╝╜О╚, ГБ╝ МБ╝ ╛╝ёЦБ ║КБЛ Д╝Ю╛К  АЦИ╔АБ╒╗Б╔╚Л╜╝ё╝                  понял, что это могут быть формы  существительного 
                 ╕╔╜А╙╝ё╝ Ю╝╓═ "²╘╓╔╚Л╛═╜═" ("²╘╓╔╚Л╛═╜" -- Д╝Ю╛═                  женского рода "Эйдельмана" ("Эйдельман" -- форма 
                 Ю╝╓╗Б╔╚Л╜╝ё╝ ╞═╓╔╕═ ╛╜╝╕╔АБ╒╔╜╜╝ё╝ Г╗А╚═), ╗ ╓╝╞╝╚╜╗╚                  родительного падежа множественного числа), и дополнил 
                 ╔Н А╚╝╒═ЮЛ.                  ею словарь.
                                  
   
   raff.koi      ▓═║╚╗Ф═ ═ДД╗╙А╝╒ ╙ А╚╝╒═ЮН ▀╔║╔╓╔╒═.    raff.koi      Таблица аффиксов к словарю Лебедева.
   
 ▒╙Ю╗╞БК:  Скрипты:
      
   makecheck.pl  ▐╝ Б═║╚╗Ф╔ ═ДД╗╙А╝╒ ё╔╜╔Ю╗ЮЦ╔Б Б╔╙АБ ДЦ╜╙Ф╗╗,    makecheck.pl  По таблице аффиксов генерирует текст функции,
                 ╗ИЦИ╔╘ ╜═Г═╚Л╜ЦН Д╝Ю╛Ц А╚╝╒╝Д╝Ю╛К.                  ищущей начальную форму словоформы.
   
   mkRS.pl       ▐╔Ю╔А╝╖╓═ЯБ ╞╝╗А╙╝╒К╔ Б═║╚╗ФК ╗ ╝║╜Ц╚О╔Б ╞╝╚╔    mkRS.pl       Пересоздаёт поисковые таблицы и обнуляет поле 
                 ProcessedBySeacrh Ц ╒А╔Е ╒╝╞Ю╝А╝╒.                  ProcessedBySeacrh у всех вопросов.
   
   updateRS.pl   ┬И╔Б ╒╝╞Ю╝АК А ╜Ц╚╔╒К╛ ProcessedBySearch    updateRS.pl   Ищет вопросы с нулевым ProcessedBySearch 
                 ╗ ╓╝║═╒╚О╔Б ╗╜Д╝Ю╛═Ф╗Н ╝ ╜╗Е ╒ Б═║╚╗ФК.                  и добавляет информацию о них в таблицы.
                 ░═║╝Б═╔Б ╝Г╔╜Л ╛╔╓╚╔╜╜╝ (╝╙╝╚╝ А╔╙Ц╜╓К ╜═ ╒╝╞Ю╝А ╜═                  Работает очень медленно (около секунды на вопрос на 
                 AMD-400), ╜═Г╗╜═╔Б ╝║Ю═║═БК╒═БЛ А╚╔╓ЦНИ╗╘ ╗╘ ╒╝╞Ю╝А                  AMD-400), начинает обрабатывать следующий ий вопрос 
                 Б╝╚Л╙╝ ╞╝А╚╔ Б╝ё╝, ╙═╙ ╒ ║═╖╔ ╞╝О╒╗╚═АЛ ╗╜Д╝Ю╛═Ф╗О ╝                  только после того, как в базе появилась информация о 
                 ╞Ю╔╓К╓ЦИ╔╛. ┌ Ю╔╖Ц╚ЛБ═Б╔ ╛╝╕╔Б ║КБЛ ╒ ╚Н║╝╘ ╛╝╛╔╜Б ╞Ю╔Ю╒═╜                  предыдущем. В результате может быть в любой момент прерван
                 ║╔╖ ЦИ╔Ю║═ ╓╚О Б═║╚╗Ф.                  без ущерба для таблиц.
   
   updateRS1.pl  └╔╚═╔Б Б╝╕╔ А═╛╝╔, ГБ╝ updateRS.pl, ╜╝ ╝║Ю═║═БК╒═╔Б ╒╝╞Ю╝АК    updateRS1.pl  Делает тоже самое, что updateRS.pl, но обрабатывает вопросы
                 ╞╝ЮФ╗О╛╗, ╖═╞╗АК╒═О ╗╜Д╝Ю╛═Ф╗Н ╒ ╞═╛ОБЛ, А╙╗╓К╒═О                  порциями, записывая информацию в память, скидывая
                 ╗╜Д╝Ю╛═Ф╗Н ╒ ║═╖Ц Б╝╚Л╙╝ ╞╝А╚╔ Б╝ё╝, ╙═╙ ╞╝ЮФ╗О                  информацию в базу только после того, как порция 
                 ║Ц╓╔Б ╞╝╚╜╝АБЛН ╝║Ю═║╝Б═╜═. ▌╞Б╗╛═╚Л╜К╘ Ю═╖╛╔Ю ╞╝ЮФ╗╗                  будет полностью обработана. Оптимальный размер порции 
                 ╖═╒╗А╗Б ╝Б ╛╝И╜╝АБ╗ ╛═Х╗╜К.                  зависит от мощности машины.
   
   dumpRS.pl     ▒╙╗╓К╒═╔Б ╒ Д═╘╚ ╓═╛╞ Б═║╚╗ФК word2question.    dumpRS.pl     Скидывает в файл дамп таблицы word2question. 
                                  
   dumpin2out.pl ▒╙╗╓К╒═╔Б ╒ Д═╘╚ Б═║╚╗ФЦ А╝╝Б╒╔БАБ╒╗╘    dumpin2out.pl Скидывает в файл таблицу соответствий 
                 ╗╓╔╜Б╗Д╗╙═Б╝Ю ╒╝╞Ю╝А═ ╒ ║═╖╔ -> ╒╜╔Х╜╔╔ ╗╛О                  идентификатор вопроса в базе -> внешнее имя
                 (▓ЦЮ╜╗Ю.▓ЦЮ.█╝╛╔Ю).                  (Турнир.Тур.Номер).
   
   dump2dump.pl  ▐Ю╔╝║Ю═╖Ц╔Б ╓═╛╞ Б═║╚╗ФК word2question    dump2dump.pl  Преобразует дамп таблицы word2question
                 ╞╝╓ ╓ЮЦёЦН ╖═╚╗╒╙Ц ║═╖К, ╗А╞╝╚Л╖ЦО Б═║╚╗ФК                  под другую заливку базы, используя таблицы 
                 А╝╝Б╒╔БАБ╒╗╘ ╓╒ЦЕ ╖═╚╗╒╝╙. ▒ЦБЛ ╒ Б╝╛, ГБ╝                  соответствий двух заливок. Суть в том, что 
                 ╞Ю╗ ╞╔Ю╔╖═╚╗╒╙╔ ║═╖К ╗╖╛╔╜ОНБАО ╗╓╔╜Б╗Д╗╙═Б╝ЮК                  при перезаливке базы изменяются идентификаторы 
                 ╒╝╞Ю╝А╝╒. ┬А╞╝╚Л╖╝╒═╜╗╔ МБ╝ё╝ А╙Ю╗╞Б═ ╞╝╖╒╝╚О╔Б ╗╖║╔╕═БЛ                  вопросов. Использование этого скрипта позволяет избежать 
                 ╖═╞ЦА╙═ "╓╝╚ё╗Е" А╙Ю╗╞Б╝╒ updateRS.pl ╗ updateRS1.pl                  запуска "долгих" скриптов updateRS.pl и updateRS1.pl
                 ┼Ю╝╛╔ Б╝ё╝, А╙Ю╗╞Б ╛╝╕╔Б ╗А╞╝╚Л╖╝╒═БЛАО ╞Ю╗ ╞╔Ю╔╜╝А╔ Б═║╚╗Ф,                  Кроме того, скрипт может использоваться при переносе таблиц,
                 ╜═╞Ю╗╛╔Ю, А ║╗╚Л║╝ ╜═ ╙Ц╚╗Г╙╗.                  например, с бильбо на кулички. 
   
    delRS        ⌠╓═╚О╔Б ╗╖ ╓═╛╞═ Б═║╚╗ФК word2question ╗╜Д╝Ю╛═Ф╗Н ╝     delRS        Удаляет из дампа таблицы word2question информацию о 
                 ╒╝╞Ю╝А═Е, А╝╝Б╒╔БАБ╒ЦНИ╗Е Ц╙═╖═╜╜К╛ Д═╘╚═╛.                  вопросах, соответствующих указанным файлам.
   
    checkPBS.pl  ▐Ю╝АБ═╒╚О╔Б ╞╝╚╔ ProcessedBySearch ╜═ ╝А╜╝╒═╜╗╗     checkPBS.pl  Проставляет поле ProcessedBySearch на основании 
                 ╗╜Д╝Ю╛═Ф╗╗ ╗╖ Б═║╚╗ФК word2question                  информации из таблицы word2question
          
   
 ┌А╞╝╛╝ё═Б╔╚Л╜К╔ Д═╘╚К:  Вспомогательные файлы:
      
   chgk.cnf      ┼╝╜Д╗ёЦЮ═Ф╗╝╜╜К╘ Д═╘╚.    chgk.cnf      Конфигурационный файл.
   
   chgkfiles.pm  ▄╝╓Ц╚Л ╓╚О Ю═║╝БК c Д═╘╚═╛╗    chgkfiles.pm  Модуль для работы c файлами
   
   dbchgk        ▄╝╓Ц╚Л ╓╚О Ю═║╝БК А ║═╖╝╘    dbchgk        Модуль для работы с базой
   
   
   
   
 ▒Б═╜╓═ЮБ╜К╔ ╞Ю╝Ф╔╓ЦЮК  Стандартные процедуры
 ~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~
   
 ▐╝╚╜═О ╖═╚╗╒╙═  Полная заливка
                                      
   ┤═╞ЦАБ╗БЛ mkRS.pl, ╖═Б╔╛ updateRS.pl ╗ ╞╝╓╝╕╓═БЛ АЦБ╙╗ ╗╚╗ ║╝╚ЛХ╔.    Запустить mkRS.pl, затем updateRS.pl и подождать сутки или больше.
   ┌╛╔АБ╝ updateRS.pl ╛╝╕╜╝ ╗А╞╝╚Л╖╝╒═БЛ updateRS1.pl, Б╝ё╓═ ║Ц╓╔Б ╞╝║КАБЮ╔╔,    Вместо updateRS.pl можно использовать updateRS1.pl, тогда будет побыстрее,
   ╜╝ ╒АЯ Ю═╒╜╝ ╓╝╒╝╚Л╜╝ ╓╝╚ё╝.    но всё равно довольно долго.
   
   
 ▐╔Ю╔╜╝А Б═║╚╗Ф ╜═ ╓ЮЦёЦН ╛═Х╗╜Ц  Перенос таблиц на другую машину
                                                                 
   █═ ╞╔Ю╒╝╘ ╛═Х╗╜╔:    На первой машине:
   dumpRS.pl dump1    dumpRS.pl dump1
   dumpin2out.pl first    dumpin2out.pl first
   
   ┤═Б╔╛ ╖═╚╗БЛ dump1 ╗ first ╜═ ╒Б╝ЮЦН ╛═Х╗╜Ц ╗ Ц╕╔ Б═╛:    Затем залить dump1 и first на вторую машину и уже там:
   dumpin2out.pl second    dumpin2out.pl second
   dump2dump.pl dump1 dump2 first second    dump2dump.pl dump1 dump2 first second
   loaddump second    loaddump second
   
   ┌А╔ А╝╖╓═╜╜К╔ Д═╘╚К ╛╝╕╜╝ Ц╓═╚╗БЛ.    Все созданные файлы можно удалить. 
   
 └╝║═╒╚╔╜╗╔ ╒ ║═╖Ц ╜╝╒КЕ Д═╘╚╝╒  Добавление в базу новых файлов
   
    └╝║═╒╗БЛ Д═╘╚К А╙Ю╗╞Б╝╛ updatedb.pl ╗ ╖═╞ЦАБ╗БЛ updateRS.pl.     Добавить файлы скриптом updatedb.pl и запустить updateRS.pl.
    ²Б╝Б А╙Ю╗╞Б ё╔╜╔Ю╗ЮЦ╔Б А╞╗А╝╙ ╜╔Ю═А╞╝╖╜═╜╜КЕ А╚╝╒.     Этот скрипт генерирует список нераспознанных слов.
    ┬Е ╜═Г═╚Л╜К╔ Д╝Ю╛К ╛╝╕╜╝ ╓╝║═╒╗БЛ ╒ А╚╝╒═ЮЛ mydict.koi.     Их начальные формы можно добавить в словарь mydict.koi.
         
    ┌ ╞Ю╗╜Ф╗╞╔, МБЦ ╞Ю╝Ф╔╓ЦЮЦ Е╝Ю╝Х╝ ║К ╓╔╚═БЛ ╞╔Ю╔╓ ╖═╚╗╒╙╝╘ (╞Ю╝╒╔Ю╗╒     В принципе, эту процедуру хорошо бы делать перед заливкой (проверив
    Б╔╙АБ╝╒К╔ Д═╘╚К), ╜╝ ╒╝-╞╔Ю╒КЕ А╙Ю╗╞Б═ ╓╚О ╞Ю╝╒╔Ю╙╗ Д═╘╚╝╒ ╞╝╙═ ╜╔Б     текстовые файлы), но во-первых скрипта для проверки файлов пока нет
    (╞╝Б╝╛Ц ╙═╙ О Б╝╚Л╙╝ А╔╘Г═А ╔ё╝ ╞Ю╗╓Ц╛═╚), ═ ╒╝-╒Б╝ЮКЕ ЦБО╕╔╚╗Б     (потому как я только сейчас его придумал), а во-вторых утяжелит 
    ╞Ю╝Ф╔АА ═╞╓╔╘Б═. ▀ЦГХ╔ ╗╚╗ ╗╜╝ё╓═ (Ю═╖ ╒ ╜╔А╙╝╚Л╙╝ ╛╔АОФ╔╒) ╓╔╚═БЛ ╞╝╚╜ЦН     процесс апдейта. Лучше или иногда (раз в несколько месяцев) делать полную
    ╞╔Ю╔╗╜╓╔╙А═Ф╗Н, ╗╚╗ А╝ЕЮ═╜╗╒ А╞╗А╝╙ ╜╝╒КЕ Д═╘╚╝╒, Ю═╖ ╒ Б╔ ╕╔ А═╛К╔     переиндексацию, или сохранив список новых файлов, раз в те же самые 
    ╜╔А╙╝╚Л╙╝ ╛╔АОФ╔╒ ╞Ю╝╓╔╚К╒═БЛ ╞Ю╝Ф╔╓ЦЮЦ Ц╓═╚╗БЛ-╓╝║═╒╗БЛ.     несколько месяцев проделывать процедуру удалить-добавить.
   
   
   
 ┬А╞Ю═╒╚╔╜╗╔ АЦИ╔АБ╒ЦНИ╗Е Д═╘╚╝╒  Исправление существующих файлов
   
   ▐╔Ю╔╓ Ц╓═╚╔╜╗╔╛ АБ═Ю╝╘ ║═╖К:    Перед удалением старой базы:
     dumpRS.pl temp      dumpRS.pl temp
     delRS temp А╞╗А╝╙ Ц╓═╚Я╜╜КЕ ╗╚╗ ╗А╞Ю═╒╚╔╜╜КЕ Д═╘╚╝╒      delRS temp список удалённых или исправленных файлов
   
   ▐╝А╚╔ ╖═╚╗╒╙╗ Б═║╚╗Ф Questions ╗ Tournaments:    После заливки таблиц Questions и Tournaments:
     loaddump.pl temp      loaddump.pl temp
     rm temp      rm temp
     updateRS.pl      updateRS.pl
   
   
 ┐╔╜╔Ю═Ф╗О ╓╝╞╝╚╜╗Б╔╚Л╜╝ё╝ А╚╝╒═ЮО  Генерация дополнительного словаря
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ─╒Б╝╛═Б╗Г╔А╙╗ Аё╔╜╔Ю╗Ю╝╒═╜╜К╘ ═╒Б╝╛═Б╗Г╔А╙╗╘ А╚╝╒═ЮЛ  Автоматически сгенерированный автоматический словарь 
 ╜Ц╕╔╜ ╓╚О ╝║Ю═║╝Б╙╗ А╚╝╒, ╙╝Б╝ЮКЕ ╜╔Б ╒ АБ═╜╓═ЮБ╜╝╛ А╚╝╒═Ю╔,  нужен для обработки слов, которых нет в стандартном словаре, 
 ╜╝ ╙╝Б╝ЮК╔ ╒АБЮ╔Г═НБАО ╒ ║═╖╔, ╞Ю╗ГЯ╛ ╒ Ю═╖╜КЕ Д╝Ю╛═Е.  но которые встречаются в базе, причём в разных формах. 
 ┌ ╝А╜╝╒╜╝╛, МБ╝ ╗╛╔╜═ А╝║АБ╒╔╜╜К╔. ░═║╝Б═ МБ╝ ╝╓╜╝Ю═╖╝╒═О,  В основном, это имена собственные. Работа это одноразовая,
 ╝╜═ ╞Ю╝╓╔╚═╜═, ╞╝Б╝╛Ц А╙Ю╗╞БК ╜╔ ╒К╙╚═╓К╒═Н.  она проделана, потому скрипты не выкладываю.
   
 1. ▒╓╔╚═╚╗ ╞╝╚╜К╘ А╞╗А╝╙ ЮЦАА╙╗Е А╚╝╒╝Д╝Ю╛, ╒АБЮ╔Г═НИ╗ЕАО ╒ ║═╖╔.  1. Сделали полный список русских словоформ, встречающихся в базе.
   
 2. ▐Ю╝╒╔Ю╗╚╗ ╙═╕╓ЦН А╚╝╒╝Д╝Ю╛Ц, ╗А╞╝╚Л╖ЦО ╝А╜╝╒╜К╔ А╚╝╒═Ю╗,  2. Проверили каждую словоформу, используя основные словари,
 ╞╝╚ЦГ╗╚╗ А╞╗А╝╙ ╜╔╝╞╝╖╜═╜╜КЕ А╚╝╒╝Д╝Ю╛  получили список неопознанных словоформ
   
 3. ▐╝АБЮ╝╗╚╗ ёЮ═Д, ╒╔ЮХ╗╜К ╙╝Б╝Ю╝ё╝ -- ╜╔╝╞╝╖╜═╜╜К╔ А╚╝╒╝Д╝Ю╛К (╝╙╝╚╝ 70000),  3. Построили граф, вершины которого -- неопознанные словоформы (около 70000), 
 ═ ЮЯ║Ю╝ ╔АБЛ ╒ Б╝╛ ╗ Б╝╚Л╙╝ Б╝╛ А╚ЦГ═╔, ╙╝ё╓═ ╝╓╜═ А╚╝╒╝Д╝Ю╛═  а рёбро есть в том и только том случае, когда одна словоформа 
 ╛╝╕╔Б О╒╚ОБЛАО ╜═╚Л╜╝╘ Д╝Ю╛╝╘ ╓ЮЦё╝╘.  может являться нальной формой другой. 
   
 4. ░═╖║╗╚╗ ёЮ═Д ╜═ ╙╝╛╞╝╜╔╜БК А╒О╖╜╝АБ╗, ╒ ╙═╕╓╝╘ ╞╝╞КБ╒╚╗АЛ  4. Разбили граф на компоненты связности, в каждой попытвлись 
 ╜═╘Б╗ А╚╝╒╝Д╝Ю╛Ц, ╙╝Б╝Ю═О ╛╝╕╔Б ║КБЛ ╜═Г═╚Л╜╝╘ Д╝Ю╛╝╘ ╒А╔Е ╝АБ═╚Л╜КЕ.  найти словоформу, которая может быть начальной формой всех остальных.
 ┘А╚╗ Б═╙═О ╜═Х╚═АЛ -- ╓╝║═╒╗╚╗ ╔Я ╒ ╓╝╞╝╚╜╗Б╔╚Л╜К╘ А╚╝╒═ЮЛ.  Если такая нашлась -- добавили её в дополнительный словарь.
   
 ┌ Ю╔╖Ц╚ЛБ═Б╔ Ю═║╝БК МБ╝ё╝ ═╚ё╝Ю╗Б╛═ ╝║Ю═╖╝╒═╚╗АЛ ╓╝╞А╚╝╒═ЮЛ (╝╙╝╚╝ 7000  В результате работы этого алгоритма образовались допсловарь (около 7000
 ╜═Г═╚Л╜КЕ Д╝Ю╛) ╗ А╞╗А╝╙ Б═╙ ╗ ╜╔╝╞╝╖╜═╜╜КЕ А╚╝╒╝Д╝Ю╛ (╗Е ╝АБ═╚╝АЛ  начальных форм) и список так и неопознанных словоформ (их осталось 
 ╝╙╝╚╝ 40000). │╝╚ЛХ═О Г═АБЛ МБ╗Е А╚╝╒ -- ╝ЮД╝ёЮ═Д╗Г╔А╙╗╔ ╝Х╗║╙╗. ▌Г╔╜Л  около 40000). Большая часть этих слов -- орфографические ошибки. Очень 
 ╛╜╝ё╝ ╗╖ ╜╗Е  ╞╝╚ЦГ╗╚╗АЛ ╗╖-╖═ Б╝ё╝, ГБ╝ ╒ ╜╔╙╝Б╝ЮКЕ Д═╘╚═Е ╒ ЮЦАА╙╗Е  много из них  получились из-за того, что в некоторых файлах в русских 
 А╚╝╒═Е ╒АБЮ╔Г═НБАО ╚═Б╗╜А╙╗╔ ║Ц╙╒К, А╝╒╞═╓═НИ╗╔ ╞╝ ╜═Г╔ЮБ═╜╗Н А ЮЦАА╙╗╛╗.  словах встречаются латинские буквы, совпадающие по начертанию с русскими.
   
 └╚О ╒А╔╝║И╔╘ ё═Ю╛╝╜╗╗ ╜╔╝║Е╝╓╗╛╝ А╓╔╚═БЛ А╚╔╓ЦНИ╔╔:  Для всеобщей гармонии необходимо сделать следующее:
   
 1. ┬А╞Ю═╒╗БЛ ╝ЮД╝ёЮ═Д╗Г╔А╙╗╔ ╝Х╗║╙╗  1. Исправить орфографические ошибки
 2. ▐Ю╝╒╔Ю╗БЛ ╗ ╗А╞Ю═╒╗БЛ ═╒Б╝╛═Б╗Г╔А╙╗ Аё╔╜╔Ю╗Ю╝╒═╜╜К╔ ╜═Г═╚Л╜К╔ Д╝Ю╛К.  2. Проверить и исправить автоматически сгенерированные начальные формы.
 3. └╝║═╒╗БЛ ╒ А╚╝╒═ЮЛ ╞╝ГЯ╛ ╖ЮО ╜╔ ╝╞╝╖╜═╜╜К╔ А╚╝╒╝Д╝Ю╛К.  3. Добавить в словарь почём зря не опознанные словоформы.
   
 ┌Б╝ЮК╛ ╗ БЮ╔БЛ╗╛ ╞Ц╜╙Б═╛╗ О ╗╜╝ё╓═ ╛╔╓╚╔╜╜╝ ╗ ╞╔Г═╚Л╜╝ ╖═╜╗╛═НАЛ.  Вторым и третьим пунктами я иногда медленно и печально занимаюсь.
   
   
 ▒БЮЦ╙БЦЮ═ Б═║╚╗Ф ╓╚О ЮЦАА╙╝ё╝ ╞╝╗А╙═  Структура таблиц для русского поиска
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   
 ▓═║╚╗Ф═ nf. ┌ МБ╝╘ Б═║╚╗Ф╔ ╕╗╒ЦБ А╞╗А╝╙ ╜═Г═╚Л╜К╔ Д╝Ю╛К.  Таблица nf. В этой таблице живут список начальные формы.
   
    ▐╝╚О:     Поля: 
   
    id    INT UNSIGNED - ╗╓╔╜Б╗Д╗╙═Б╝Ю ╜═Г═╚Л╜╝╘ Д╝Ю╛К     id    INT UNSIGNED - идентификатор начальной формы
    word  CHAR(30)     - А═╛═ ╜═Г═╚Л╜═О Д╝Ю╛═, ╖═╞╗А═╜╜═О       word  CHAR(30)     - сама начальная форма, записанная  
                         ╖═ё╚═╒╜К╛╗ ЮЦАА╙╗╛╗ ║Ц╙╒═╛╗.                            заглавными русскими буквами.  
    flag CHAR(5)       - А╞╗А╝╙ Д╚═ё╝╒ Б═║╚╗ФК ═ДД╗╙А╝╒     flag CHAR(5)       - список флагов таблицы аффиксов
    number             - ╙╝╚╗Г╔АБ╒╝ ╒Е╝╕╓╔╜╗╘ Д╝Ю╛ ╓═╜╜╝╘ ╜═Г═╚Л╜╝╘     number             - количество вхождений форм данной начальной 
                         Д╝Ю╛К ╒ ╒╝╞Ю╝АК                          формы в вопросы
   
 ▓═║╚╗Ф═ nests. ┌ МБ╝╘ Б═║╚╗Ф╔ ╕╗╒ЦБ ╞═ЮК А╝╝Б╒╔БАБ╒╗╘ А╚╝╒╝Д╝Ю╛═ -  Таблица nests. В этой таблице живут пары соответствий словоформа - 
    ╜═Г═╚Л╜═О Д╝Ю╛═. ▌╓╜╝╘ А╚╝╒╝Д╝Ю╛╔ ╛╝ёЦБ А╝╝Б╒╔БАБ╒╝╒═БЛ ╜╔А╙╝╚Л╙╝     начальная форма. Одной словоформе могут соответствовать несколько 
    ╜═Г═╚Л╜КЕ Д╝Ю╛.     начальных форм.
   
    ▐╝╚О:     Поля:
   
    id   INT UNSIGNED  - ╗╓╔╜Б╗Д╗╙═Б╝Ю ╖═╞╗А╗     id   INT UNSIGNED  - идентификатор записи
    w1   CHAR(30)      - А╚╝╒╝Д╝Ю╛═, ╖═╞╗А═╜╜═О ╖═ё╚═╒╜К╛╗ ║Ц╙╒═╛╗     w1   CHAR(30)      - словоформа, записанная заглавными буквами
    w2   INT UNSIGNED  - ╗╓╔╜Б╗Д╗╙═Б╝Ю ╜═Г═╚Л╜╝╘ Д╝Ю╛К.     w2   INT UNSIGNED  - идентификатор начальной формы.
   
   
 ▓═║╚╗Ф═ word2question. ▓═║╚╗Ф═ А╝╝Б╒╔БАБ╒╗╘ ╜═Г═╚Л╜═О Д╝Ю╛═ -  Таблица word2question. Таблица соответствий начальная форма - 
    А╞╗А╝╙ ╒Е╝╕╓╔╜╗╘ ╒ ╒╝╞Ю╝АК. █═╒╔Ю╜╝╔, МБЦ Б═║╚╗ФЦ ╛╝╕╜╝     список вхождений в вопросы. Наверное, эту таблицу можно 
    ║К╚╝ ╝║Й╔╓╗╜╗БЛ А Б═║╚╗Ф╔╘ nf.     было объединить с таблицей nf. 
   
    ▐╝╚О:     Поля: 
   
    word INT UNSIGNED     - ╗╓╔╜Б╗Д╗╙═Б╝Ю ╜═Г═╚Л╜╝╘ Д╝Ю╛К     word INT UNSIGNED     - идентификатор начальной формы
    questions MEDIUMBLOB  - А╞╗А╝╙ ╒Е╝╕╓╔╜╗╘. ┼═╕╓╝╛Ц ╒Е╝╕╓╔╜╗Н А╝╝Б╒╔БАБ╒Ц╔Б     questions MEDIUMBLOB  - список вхождений. Каждому вхождению соответствует 
                            4 ║═╘Б═: ╝╓╗╜ ╜═ ╜╝╛╔Ю ╞╝╚О, ╓╒═ ╜═ ╜╝╛╔Ю ╒╝╞Ю╝А═,                             4 байта: один на номер поля, два на номер вопроса, 
                            ╝╓╗╜ ╜═ ╞╝╖╗Ф╗Н ╒ ╒╝╞Ю╝А╔. ▒ Ц╕═А╝╛ ╕╓Ц, ╙╝ё╓═                             один на позицию в вопросе. С ужасом жду, когда 
                            ▌╚╔ё ╓╝║═╒╗Б ╒╝╞Ю╝А ╜╝╛╔Ю 65536 ╗ ╞Ю╗╓ЯБАО                             Олег добавит вопрос номер 65536 и придётся 
                            Ц╒╔╚╗Г╗╒═БЛ Г╗А╚╝ ║═╘Б, ╝Б╒╔╓╔╜╜КЕ ╜═ ╒Е╝╕╓╔╜╗╔                             увеличивать число байт, отведенных на вхождение
                            ╗╚╗ ╒╝╖╗БЛАО А ║╗Б═╛╗ :) ∙Ю═╜╗БАО Б╝╚Л╙╝ ╜╗╕╜╗╘ ║═╘Б                             или возиться с битами :) Хранится только нижний байт 
                            ╜╝╛╔Ю═ ╒Е╝╕╓╔╜╗О ╒ ╞╝╚╔. ▐╝ёЮ╔Х╜╝АБЛ, А╒О╖═╜╜ЦН                             номера вхождения в поле. Погрешность, связанную
                            А МБ╗╛, АГ╗Б═Н ╞Ю╔╜╔║Ю╔╕╗╛╝ ╛═╚╝╘.                             с этим, считаю пренебрежимо малой.
   
   
 ▐╝╗А╙  Поиск
 ~~~~~  ~~~~~
 ░ЦАА╙╗╘ ╞╝╗А╙ ╞Ю╝╗╖╒╝╓╗БАО А╙Ю╗╞Б╝╛ db.cgi ╞Ю╗ Ц╙═╖═╜╗╗ ╝╞Ф╗╗  Русский поиск производится скриптом db.cgi при указании опции 
 "metod=rus".  ┌╝Б ═╚ё╝Ю╗Б╛:  "metod=rus".  Вот алгоритм:
   
   
 1. ┌К╓╔╚О╔╛ ╗╖ ╞╝╗А╙╝╒К╘ АБЮ╝╙╗ ╛═╙А╗╛═╚Л╜К╔ ╞╝А╚╔╓╝╒═Б╔╚Л╜╝АБ╗  1. Выделяем из поисковый строки максимальные последовательности 
 ЮЦАА╙╗Е, ╚═Б╗╜А╙╗Е ║Ц╙╒ ╗ Ф╗ДЮ.  русских, латинских букв и цифр. 
   
 2. ┬И╔╛ ╜═Г═╚Л╜К╔ Д╝Ю╛К ╞╝╚ЦГ╔╜╜КЕ А╚╝╒╝Д╝Ю╛ ╞╝ Б═║╚╗Ф╔ nests. ■╝Ю╛К,  2. Ищем начальные формы полученных словоформ по таблице nests. Формы, 
 ╙╝Б╝ЮКЕ Б═╛ ╜╔Б, ╞Ю╝╒╔ЮО╔╛ ╞╝ А╚╝╒═ЮН ╗ Б═║╚╗Ф╔ ═ДД╗╙А╝╒. ■╝Ю╛К, ╙╝Б╝ЮК╔  которых там нет, проверяем по словарю и таблице аффиксов. Формы, которые 
 ╒АЯ ╔ИЯ ╜╔╝╞╝╖╜═╜К, АГ╗Б═╔╛ ╜╔╜═╘╓╔╜╜К╛╗.  всё ещё неопознаны, считаем ненайденными.
   
 3. ▐╝ Б═║╚╗Ф╔ word2questions ╗И╔╛ А╞╗А╙╗ ╒Е╝╕╓╔╜╗╘ А╚╝╒ ╒  3. По таблице word2questions ищем списки вхождений слов в 
 ╖═БЮ╔║╝╒═╜╜К╔ ╞╝╚О, ╒К╓╔╚О╔╛ А╞╗А╙╗ ╒╝╞╝А╝╒, ╒ ╙╝Б╝ЮК╔ ╒Е╝╓ОБ А╚╝╒═,  затребованные поля, выделяем списки вопосов, в которые входят слова,
 ╒ ╖═╒╗А╗╛╝АБ╗ ╝Б ╖╜═Г╔╜╗О ╝╞Ф╗╗ all ║╔ЮЯ╛ ╗Е ╝║Й╔╓╗╜╔╜╗╔ ╗╚╗ ╞╔Ю╔А╔Г╔╜╗╔ -  в зависимости от значения опции all берём их объединение или пересечение -
 МБ╝ А╞╗А╝╙ ╜═╘╓╔╜╜КЕ ╒╝╞Ю╝А╝╒. ▒╝ЕЮ═╜О╔╛ ╓╚О ╙═╕╓╝ё╝ ╒╝╞Ю╝А═ А╞╗А╙╗ ╒Е╝╕╓╔╜╗╘.  это список найденных вопросов. Сохраняем для каждого вопроса списки вхождений. 
   
 4. ▒Г╗Б═╔╛ ╓╚О ╙═╕╓╝ё╝ ╜═╘╓╔╜╜╝ё╝ ╒╝╞Ю╝А═ Ю╔╚╔╒═╜Б╜╝АБЛ ╞╝╗А╙╝╒╝╘ ДЮ═╖К ╗  4. Считаем для каждого найденного вопроса релевантность поисковой фразы и 
 А╝ЮБ╗ЮЦ╔╛ ╞╝ ╜╔╘.  сортируем по ней.
   
 5. ▐Ю╗ ╒К╒╝╓╔ ╒К╓╔╚О╔╛ ╕╗Ю╜К╛ ХЮ╗ДБ╝╛ ╒Е╝╕╓╔╜╗О ╗А╙╝╛КЕ А╚╝╒.  5. При выводе выделяем жирным шрифтом вхождения искомых слов. 
 ≤═║╚╝╜, ╞╝ ╙╝Б╝Ю╝╛Ц ╒К╓╔╚ОНБАО А╚╝╒═, Д╝Ю╛╗ЮЦ╔БАО ╞╝ Б═║╚╗Ф╔  Шаблон, по которому выделяются слова, формируется по таблице 
 nests.  nests.
   
   
 ┌ db.cgi ╓╝║═╒╚╔╜═ Б═╙╕╔ ╝╞Ф╗О debug, ╞Ю╗ ЦАБ═╜╝╒╙╔ ╙╝Б╝Ю╝╘  В db.cgi добавлена также опция debug, при установке которой 
 ╒К╒╝╓╗БАО ╝Б╚═╓╝Г╜═О ╗╜Д╝Ю╛═Ф╗О.  выводится отладочная информация.
   
 ┌ db.cgi ╞╝╓╓╔Ю╕╗╒═НБАО Б═╙╕╔ ╞╝╗А╙ ╞╝ Simple Query ╗ Advanced  В db.cgi поддерживаются также поиск по Simple Query и Advanced
 Query (╙═╙ ╗Е ╞╝╜╗╛═╔Б altavista), ╜╝ ╝╙═╖═╚╝АЛ, ГБ╝  Query (как их понимает altavista), но оказалось, что 
 ╞╝╗А╙ ╞╝ Ю╔ёЦ╚ОЮ╜╝╛Ц ╒КЮ═╕╔╜╗Н ╜═ ╞ОБ╗╓╔АОБ╗ БКАОГ═Е ╒╝╞Ю╝А╝╒ Ю═║╝Б═╔Б  поиск по регулярному выражению на пятидесяти тысячах вопросов работает 
 Г╔Ю╔АГЦЮ ╓╝╚ё╝, ╞╝Б╝╛Ц МБ╗ ╒╝╖╛╝╕╜╝АБ╗ ╜╔ ╗А╞╝╚Л╖ЦНБАО.  чересчур долго, потому эти возможности не используются. 
 █╝, ╒╝╝║И╔-Б╝, ╓╚О ╜╗Е ╔АБЛ ╝╞Ф╗╗ "metod=simple" ╗ "metod=advancde".  Но, вообще-то, для них есть опции "metod=simple" и "metod=advancde".
   
 ■╝Ю╛Ц╚═ Ю╔╚╔╒═╜Б╜╝АБ╗  Формула релевантности
 ~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~
 ≈╔АБ╜╝ ё╝╒╝ЮО, О ╒╖О╚ ╞╔Ю╒ЦН ╞Ю╗Х╔╓ХЦН ╜═ Ц╛ Д╝Ю╛Ц╚Ц, ╒Ю╝╓╔ ЕЦ╓╝-║╔╓╜╝  Честно говоря, я взял первую пришедшую на ум формулу, вроде худо-бедно 
 Ю═║╝Б═╔Б.  работает.
   
 ▐ЦАБЛ ╞╝╗А╙╝╒═О ДЮ═╖═ А╝АБ╝╗Б ╗╖ А╚╝╒ s1,s2,...sn.  Пусть поисковая фраза состоит из слов s1,s2,...sn. 
 ┼═╕╓╝╔ ╜═╘╓╔╜╜╝╔ А╚╝╒╝ ╓╝║═╒╚О╔Б ╙ Ю╔╚╔╒═╜Б╜╝АБ╗ А╚╔╓ЦНИ╔╔ ╖╜═Г╔╜╗╔:  Каждое найденное слово добавляет к релевантности следующее значение:
 ╙╝╚╗Г╔АБ╒╝_╒Е╝╕╓╔╜╗╘_╒_╒╝╞Ю╝А+1000+1000/╙╝╚╗Г╔АБ╒╝_╒Е╝╕╓╔╜╗╘_╒_║═╖Ц.  количество_вхождений_в_вопрос+1000+1000/количество_вхождений_в_базу.
   
 ┼═╕╓═О ╞═Ю═  (si, sj) ╓╝║═╒╚О╔Б ╙ Ю╔╚╔╒═╜Б╜╝АБ╗ А╚╔╓ЦНИ╔╔ ╖╜═Г╔╜╗╔:  Каждая пара  (si, sj) добавляет к релевантности следующее значение:
 10 * (10- (min ( distance(i,j) , 10)).  10 * (10- (min ( distance(i,j) , 10)).
   
 distance(i,j)=min(|i-j-pi+pj|)  distance(i,j)=min(|i-j-pi+pj|)
                (pi ╗ pj -- ╞╝╖╗Ф╗╗ А╚╝╒ i ╗ j ╒ ╒╝╞Ю╝А╔, ╛╗╜╗╛Ц╛                 (pi и pj -- позиции слов i и j в вопросе, минимум 
                 АГ╗Б═╔БАО ╞╝ ╒А╔╛ pi ╗ pj)                  считается по всем pi и pj)
   
   
   
 ▒ЦБЛ ╒ Б╝╛, ГБ╝ ╛═╙А╗╛═╚Л╜═О Ю╔╚╔╒═╜Б╜╝АБЛ ║Ц╓╔Б Ц ╒╝╞Ю╝А╝╒, ╒ ╙╝Б╝ЮКЕ  Суть в том, что максимальная релевантность будет у вопросов, в которых 
 ╒АБЮ╔Г═╔БАО ╛═╙А╗╛═╚Л╜╝╔ ╙╝╚╗Г╔АБ╒╝ ╗А╙╝╛КЕ А╚╝╒ (МБ╝ ╗╛╔╔Б ╖╜═Г╔╜╗╔,  встречается максимальное количество искомых слов (это имеет значение, 
 ╔А╚╗ all=no), ╖═Б╔╛ ЦГ╗БК╒═╔БАО Ю═А╞Ю╝АБЮ═╜Я╜╜╝АБЛ ╙═╕╓╝ё╝ А╚╝╒═ ╗  если all=no), затем учитывается распространённость каждого слова и 
 ║╚╗╖╝АБЛ ╗Е ╒ ╒╝╞Ю╝А╔ ╓ЮЦё ╙ ╓ЮЦёЦ. ▄═╙А╗╛═╚Л╜═О Ю╔╚╔╒═╜Б╜╝АБЛ,  близость их в вопросе друг к другу. Максимальная релевантность, 
 ╙═╙ ╞Ю═╒╗╚╝, ║Ц╓╔Б Ц ╒╝╞Ю╝А╝╒, ╒ ╙╝Б╝ЮКЕ ╞╝╗А╙╝╒К╔ А╚╝╒═ ╒АБЮ╔Г═НБАО ╞╝╓ЮО╓,  как правило, будет у вопросов, в которых поисковые слова встречаются подряд, 
 ╒ Б╝╛ ╕╔ ╞╝ЮО╓╙╔, ГБ╝ ╗ ╒ ╖═╞Ю╝А╔.  в том же порядке, что и в запросе.
   
   
   
 ┼═╙╗╔ Д╝Ю╛К ╞Ю╗╖╜═НБАО ╝╓╗╜═╙╝╒К╛╗  Какие формы признаются одинаковыми
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ▓╔, ╙╝Б╝ЮК╔ ╞╝╞═╓═НБ ╒ ╝╓╜╝ ё╜╔╖╓╝, А╝ё╚═А╜╝ Б═║╚╗Ф╔ ═ДД╗╙А╝╒ А╚╝╒═ЮО ▀╔║╔╓╔╒═  Те, которые попадают в одно гнездо, согласно таблице аффиксов словаря Лебедева
 ╓╚О ispell.  для ispell. 
   
 ▌╞╗АК╒═БЛ, ╙═╙╗╔ А╚╝╒╝╗╖╛╔╜╔╜╗О ЦГ╗БК╒═НБАО, ═ ╙═╙╗╔ -- ╜╔Б,  Описывать, какие словоизменения учитываются, а какие -- нет, 
 ╜╔╞Ю╝АБ╝. ▐╝А╙╝╚Л╙Ц А╚╝╒═ЮЛ А╝╖╓═╜ ╜╔ ╓╚О ╝╞Ю╔╓╔╚╔╜╗О ╜═Г═╚Л╜╝╘ Д╝Ю╛К,  непросто. Поскольку словарь создан не для определения начальной формы, 
 ═ ╓╚О ╞Ю╝╒╔Ю╙╗ ╝ЮД╝ёЮ═Д╗╗, ╝Г╔╜Л ╛╜╝ё╝ А╚╝╒╝╗╖╛╔╜╔╜╗╘ ╝╜ ╜╔ ЦГ╗БК╒═╔Б.  а для проверки орфографии, очень много словоизменений он не учитывает.
 █═╞Ю╗╛╔Ю, ╒ А╚╝╒═Ю╔ ╛╝╕╜╝ ╒АБЮ╔Б╗БЛ ╗ А╚╝╒╝ ═ё╜╔Ф, ╗ А╚╝╒╝ ═ё╜Ф╔╒ --  Например, в словаре можно встретить и слово агнец, и слово агнцев -- 
 ╓╝║═╒╗БЛ Д╝Ю╛К ╒ А╚╝╒═ЮЛ, ╒╗╓╗╛╝, ╝╙═╖═╚╝АЛ ╞Ю╝И╔, Г╔╛ ╞Ю═╒╗БЛ  добавить формы в словарь, видимо, оказалось проще, чем править 
 Б═║╚╗ФЦ ═ДД╗╙А╝╒. ▐╝-Е╝Ю╝Х╔╛Ц ╜═╓ Б═║╚╗Ф╔╘ ═ДД╗╙А╝╒ ╗ А╚╝╒═ЮЯ╛ ╜═╓╝ ╝Г╔╜Л  таблицу аффиксов. По-хорошему над таблицей аффиксов и словарём надо очень 
 А╔ЮЛЯ╖╜╝ Ю═║╝Б═БЛ. ┌ ╗╓╔═╚╔, ╜═╓╝ ╗А╞╝╚Л╖╝╒═БЛ ╜╔ А╚╝╒═ЮЛ ▀╔║╔╓╔╒═, ═  серьёзно работать. В идеале, надо использовать не словарь Лебедева, а 
 А╚╝╒═ЮЛ ┤═╚╗╖╜О╙═, ╜╝ ╔ё╝ Б═║╚╗Ф ╒ Ц╓╝║╜╝╛ ╓╚О ╝║Ю═║╝Б╙╗ М╚╔╙БЮ╝╜╜╝╛ ╒╗╓╔  словарь Зализняка, но его таблиц в удобном для обработки электронном виде 
 О ╜╔ ╜═ХЯ╚.  я не нашёл.
   
   
 ░╝╛═╜ ▒╔╛╗╖═Ю╝╒  Роман Семизаров
 roma7@zaba.ru  roma7@zaba.ru
   
   

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>