This was developed with python 3.7.1
, then 3.9.10
.
Most code should be compatible with the former, except for spacy
- Use venv (create it and switch to it as described here)
Windows
cmd
:Windowspython -m venv venv venv\Scripts\activate.bat
PowerShell
:Linux:python -m venv venv venv\Scripts\Activate.ps1
python -m venv venv source venv/Scripts/activate
- Use pip to install the dependencies.
This is needed only for the pipeline (
requirements_pipeline.txt
), which usesnltk.tokenizer.Punkt
for sentences andspacy
for russian analysis and general tokenization.pip install -r requirements_pipeline.txt
Pipeline
Сейчас, поскольку использует foma
, требует UNIX с установленным libfoma-dev
...
- Файлы
-
data_models.py
— API для итерации и индексирования данных, в будущем все данные будут оформлены таким или похожим образом; -
tidy_string.py
— разные группы преобразований с целью нормализации; -
profile_characters.py
— посмотреть на символы, которые не принадлежат небольшому алфавиту и при этом не улавливаются общими преобразующими правилами;
-
pipeline.py
— общий пайплайн обработки текста.train_sentence_tok.py
— тренировка токенизатора предложений (первая, без препроцессинга. Её результат - файлsakha_edersaas_0.pickle
, см. ниже)
-
nltk.tokenizer.Punkt
для парсинга на предложения -
spacy
для токенизации и анализа русксого. (пока не до конца) -
foma
конечный преобразователь (FST) для якутского (по правилам в табличке)foma_utils.py
функции для работы с морфоанализатором (и в сторону анализа и в сторону генерации).
Для введённой формы выдаётся словарь с разными возможными морфологическими сегментациями формы и соответствующими анализами
-
Правила записываются не сразу, а в достаточно абстрактном виде в таблице, которая потом преобразуется в грамматику.
В будущем это позволит внеся не слишком большие изменения, добавить новый анализатор, грамматика для которого будет строиться по уже существующей таблице (rules.xlsx
).
/foma/rules2foma.py
csv файлы в исходники foma (.lexc
and.foma
)
То, что ниже, в целом уже было сделано до курса:
Парсинг сайта словаря sakhatyla.ru:
collect_words.py
,utils.py
(с помощью словариков вdata-metadata
) сбор слов из строки поискаparse.py
,lexemes.py
довольно страшный парсинговый код, но даёт неплохую табличку типаsakhatyla.csv
, где представлены слова с сайта с разборами.
Поскольку части речи в словаре странные, русское определение / перевод разбирается в UDPipe и записывается вершина разбора (retag_pos_ud.py
:sakhtyla_udtransl.csv
)
Итог: сейчас имеем немало текстов, умеем неплохо разбивать якутский текст на предложения, токенизировать их, переводить таблицу с правилами в общем виде в вид фомы, и разбирать слова морфологически по этой грамматике!