- Высокоуровневый интерфейс взаимодействия с библиотекой. Ориентироваться на CanonicalRule
- Лемматизация (получение нормальной формы слова)
- Получение грамматической информации для слова (часть речи, падеж, спряжение и т.д.)
- Библиотека принимает на вход слово и возвращает список возможнных лемм (исходных форм) этого слова.
- К каждой лемме прикреплён список из наборов грамматических характеристик.
- Каждый набор грамматических характеристик соответсвует искомому слову.
Например, рассмотрим результат работы библиотеки для слова "замок":
1. <замок, [С, мр, ед, им], [С, мр, ед, вн]>
2. <замок, [С, мр, ед, им], [С, мр, ед, вн]>
3. <замокнуть, [Г, дст, прш, мр, ед]>
Мы видим три леммы.
- Первая лемма, это слово зАмок (строение).
Вместе с ней лежат два набора характеристик, говорящие о том, чем же является слово замок, по отношению к этой лемме.
Это либо замок (кто?) в именительном падеже, либо замок (кого?) в винительном падеже. - Вторая лемма, это слово замОк (устройство для запирания дверей).
Для нее, слово замок так же может быть либо именительным, либо винительным падежом. - И наконец, третья лемма, это слово замокнуть (он что сделал? он замок под дождем).
Для нее слово замок характеризуется лишь одним набором грамматической информации.
- Вввиду частого взаимозаменяемого использования в речи,
буква ё рассматривается наравне с буквой е.
- Аббревиатуры использованые в перечислении GrammarInfo
- Описание исходного формата словаря
- Консольное приложение использующее aot-lemmatizer
- Согласовать процесс компиляции:
редактируемая база данных -> mrd формат -> бинарный формат.
Можно целиком загрузить индексы в словарь, а строки оставить в mmap. Так как в строки разделены символом \n, зная индекс, мы сможем быстро добежать циклом (по байтам) до нужной строки.
количество морфологий
морфология
...
морфология
количество строк
строка
...
строка
количество лемм
(индекс строки, индекс морфологии) (индекс строки, индекс морфологии)... (индекс строки, индекс морфологии) (индекс строки, индекс морфологии)
(индекс строки, индекс морфологии) (индекс строки, индекс морфологии)... (индекс строки, индекс морфологии) (индекс строки, индекс морфологии)
...
(индекс строки, индекс морфологии) (индекс строки, индекс морфологии)... (индекс строки, индекс морфологии) (индекс строки, индекс морфологии)
количество хешей (коллизии проверяются в рантайме, нет смысла отделяеть их во время компиляции, т. к. могут быть и внешние коллизии)
хеш, индекс леммы, индекс леммы
хеш, индекс леммы, индекс леммы, индекс леммы
хеш, индекс леммы, индекс леммы, индекс леммы, индекс леммы
...
хеш, индекс леммы, индекс леммы, индекс леммы