Skip to content

Rules for generating syntactically and morphologically correct sentences in Russian

Notifications You must be signed in to change notification settings

GorbachevaTaisia/JSGF_generative_grammar

Repository files navigation

JSGF_generative_grammar

Rules for generating syntactically and morphologically correct sentences in Russian

Правила для генерирования синтаксически и морфологически корректных предложений на русском языке. Написаны в контекстно-свободной грамматике, в формате JSGF (Java Speech Grammar Format или JSpeech Grammar Format).

Файлы репозитория

  • rules_for_gen_simple_sent_without_kleene_import.gram: правила грамматики;

  • rules_for_gen_simple_sent_without_kleene_import_split.gram: те же правила грамматики, но адаптированные для запуска в модуле для генерации JSGFTools__ .

О правилах

Для генерации были необходимы слова часто с указанием их морфологической информации. Небольшая часть данных была взята из справочника русского языка Баранова М. Т. и др. [Баранов М. Т., Костяева Т. А., Прудникова А. В.; Под ред. Н. М. Шанского. Русский язык: Справ. материалы: Учеб. пособие для учащихся. 4-е изд. — М.: Просвещение, 1988. 288 с.], для получения прочих сведений использовались два набора данных: тезаурус RuWordNet и корпус «Тайга».

RuWordNet представляет собой вручную размеченные синсеты, однако только для трёх частей речи (существительных, прилагательных и глаголов), причём каждая представлена лишь начальной формой. Для получения всех грамматических форм с указанием морфологической информации слова использовался морфологический анализатор pymorphy2.

«Тайга» является большой подборкой данных, но они были размечены автоматически парсером UDPipe. Для получения большой точности в разметке этих корпусов сравнивалась морфологическая информация от UDPipe с той, которую даёт другой парсер – spaCy, и соответственно использовали только те слова, в которых разметка от обоих парсеров совпадает. Из «Тайги» были выбралы шесть под-корпусов (Lenta.ru, Интерфакс, N+1, Facebook, Vkontakte, Twitter). Из каждого корпуса брались слова, написанные только кириллицей. Под-корпуса социальных сетей также потребовали дополнительной чистки от опечаток и ругательств. Для этого использовался модуль PyEnchant со словарём от пакета LibreOffice и небольшой написанный мной с опорой на алгоритм с веб-ресурса Хабр фильтра мата.

Таким образом, после чистки корпуса социальных сетей, объединения всех корпусов «Тайги» с грамматическими парадигмами слов из тезауруса RuWordNet было получило 2 477 009 уникальных слов, которые и использовались далее в правилах.

About

Rules for generating syntactically and morphologically correct sentences in Russian

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published