Парсим словарь русского языка Зализняка Андрея Анатольевича

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

    1 сентября 2009 года вступил в силу приказ Министерства образования и науки, утверждающий перечень словарей, грамматик и справочников, рекомендованных Межведомственной комиссией по русскому языку при Минобрнауки. Среди 4 утверждённых книг — Грамматический словарь русского языка А. А. Зализняка.

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

    Был еще вариант граббинга wiktionary.org — Категория: Русские существительные. Может быть имеет смысл совместить эти две базы, но пока остановимся на Зализняке.

    Словарь


    Словарь Зализняка был найден на сайте проекта «Вавилонская башня», посвященному сравнительно-историческому языкознанию. Словари Ожегова, Зализняка и Фасмера доступны как в режиме онлайн, так и для скачивания.

    Скачиваем файл dicts.exe от 27.11.2004. Устанавливаем. В папке c:\StarSoft\dict\ буду расположены файлы. Нам нужны только начинающиеся на Z_* (от Z_160 до Z_239). Слова в файлах сгруппированы по первым буквам. Т.е. в файле Z_160 находятся все слова, начинающиеся с буквы А, в Z_161 — с буквы Б и т.д.

    Парсер


    Файлы в кодировке OEM 866. Я для удобства перевёл их в UTF-8 с помощью Notepad++. Затем написал простенький парсер на PHP. Мне нужны были только существительные мужского и женского рода. Вы можете сами изменить регулярное выражение под свои нужды.
    <?php<br/> <br/>mb_internal_encoding('utf-8');<br/> <br/>$dir = new DirectoryIterator(dirname(__FILE__).'/dict/');<br/>foreach ($dir as $file) <br/>{<br/>    if($file->isDot()) {<br/>     continue;<br/>    }<br/> <br/>    if (!preg_match_all('/^(\\p{L}{2,})\\s+\\d+\\s+(?:с|м|ж|мо|жо)\\s+/um', file_get_contents($file->getPathname()), $matches)) {<br/>     continue;<br/>    }<br/> <br/>    foreach ($matches[1] as $word)<br/>    {<br/>     // делайте с $word что хотите<br/>    }<br/>}

    В итоге у меня получилась таблица с 39361 существительным.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 22

      –1
      Еще с сотню паролей сбрутил. Благодарю за линк на словари)
        +1
        Спасибо большое за выложенные линки!
        • НЛО прилетело и опубликовало эту надпись здесь
            –1
            +1 (оффтоп: + без кармы :))
              +1
              А под виндой я буду ставить себе cygwin из-за этих хитросплетений. Уж извольте, была поставлена задача, были выбраны удобные инструменты, и цель топика показать не как это делалось, а дать исходные данные и в частном случае базу существительных. Ну зато теперь я знаю что у Вас богатый опыт unix-like решения задач, я Вас поздравляю.
                0
                А ничего что для всех решений существуют оптимальные пути решения?
                Или Вы также за говнокод, например? :)
                • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    Да мне проще написать этот код в течение 5 минут и за полминуты добавить insert в mysql. Да мне так проще. Да я на винде.
                    • НЛО прилетело и опубликовало эту надпись здесь
                0
                Если нужны словари имён существительных, прилагательных и глаголов во всех формах, то это однозначно в Викисловарь. Качаем mediawiki, дамп викисловаря; часик установки, импорта, настройки и у нас свой словарь, где у кучи слов таблица со всеми формами. И начинаем парсить.
                  0
                  Почему же тогда скажите Министерство образования нигде не указывает в рекомендациях Викисловарь? Я лично не очень доверяю ему когда дело касается десяток тысяч слов.
                    +2
                    ~60k существительных, ~15k прилагательных, ~14k глаголов. С таблицами форм. Плевал я на рекомендации, я принимаю решения сам.
                      0
                      Викисловарь делался, насколько я знаю, именно через парсинг словаря Зализняка. Большинство статей там не руками писали.
                        0
                        А они много современного рекомендуют?
                          0
                          Министерство образования не истина в первой инстанции. Или для Вас это тоже новость? :)
                        –1
                        Любой школоло способен сделать данные действия. В чем смысл писать такие топики на хабре?
                          +2
                          Смысл дать толчок тем, у кого похожие задачи. Смысл в делении опытом, разве не для этого у нас хабр? Я потратил пару часов на поиски, другой их сэкономит. Я хотел поделиться полезной информацией, исходными данными и в данном случае готовым словарём существительных из ДОСТОВЕРНОГО источника. Что я делаю не так?
                            –1
                            Поиски чего, простите? www.google.ru/search?q=%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C+%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C+%D0%97%D0%B0%D0%BB%D0%B8%D0%B7%D0%BD%D1%8F%D0%BA%D0%B0
                            + «Вавилонская башня» известна любому человеку который собирается хоть чуть-чуть погрузиться в морфологию…

                            Пару часов на поиски? Уже с этого момента «что-то не так».

                            В чем ценность Вашего говнотопика?

                            p.s. Минусуйте, но не забывайте писать/думать зачем и за что.
                              0
                              Во-первых, я не сразу знал что существует словарь Зализняка, пришлось сначала придти к выводу что мне нужен именно он.
                              Во-вторых, не нашел на хабре топика с близкой тематикой.
                              В-третьих, я написал в личный блог, не нравится — проходите мимо.
                              В-четвертых, от Ваших комментариев попахивает бОльшим говном, чем от моего кода.
                          +2
                          Хотел связаться с Зализняком как-то, вышел на его секретаря. Выводы по итогам переписки: все пользуются словарями неправомочно, никто с Зализняком не договаривался, это несправедливо, но ничего они делать не будут, т.к. слишком далеко все зашло (у нас почти вся компьютерная морфология в России на словаре Зализняка).
                            +1
                            А скажите DBF файл удалось открыть чем-нибудь? А то я с башни скачал, а там дбф паролем залочен.

                            И если честно скачав в текстовом фарианте не совсем понял структуру текстового файла, что все это «аберрационный 9 п 1*а» значит.
                              +1
                              DBF файл пытался открыть плагином из TotalCommander BaseView. Открывает с крякозябрами :( Дальше с DBF не разбирался, ибо удобней с текстовиком было.

                              По поводу структуры — это описание слова по классификации Зализняка. Немного описания можно найти здесь

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое