Skip to content

bamaxi/sakha-corp-course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sakha corpus

Contents

Installation

This was developed with python 3.7.1, then 3.9.10. Most code should be compatible with the former, except for spacy

  1. Use venv (create it and switch to it as described here) Windows cmd:
     python -m venv venv
     venv\Scripts\activate.bat 
    Windows PowerShell:
     python -m venv venv
     venv\Scripts\Activate.ps1
    Linux:
     python -m venv venv
     source venv/Scripts/activate
  2. Use pip to install the dependencies. This is needed only for the pipeline (requirements_pipeline.txt), which uses nltk.tokenizer.Punkt for sentences and spacy for russian analysis and general tokenization.
    pip install -r requirements_pipeline.txt

Usage

Pipeline

Сейчас, поскольку использует foma, требует UNIX с установленным libfoma-dev...

  • Файлы
    • data_models.py — API для итерации и индексирования данных, в будущем все данные будут оформлены таким или похожим образом;

    • tidy_string.py — разные группы преобразований с целью нормализации;

    • profile_characters.py — посмотреть на символы, которые не принадлежат небольшому алфавиту и при этом не улавливаются общими преобразующими правилами;
      rare characters in files

    • pipeline.py — общий пайплайн обработки текста.

      • train_sentence_tok.py — тренировка токенизатора предложений (первая, без препроцессинга. Её результат - файл sakha_edersaas_0.pickle, см. ниже)
    • nltk.tokenizer.Punkt для парсинга на предложения

    • spacy для токенизации и анализа русксого. (пока не до конца)

    • foma конечный преобразователь (FST) для якутского (по правилам в табличке)

      • foma_utils.py функции для работы с морфоанализатором (и в сторону анализа и в сторону генерации).
        Для введённой формы выдаётся словарь с разными возможными морфологическими сегментациями формы и соответствующими анализами

      parse of a word, including guesses

Правила записываются не сразу, а в достаточно абстрактном виде в таблице, которая потом преобразуется в грамматику. В будущем это позволит внеся не слишком большие изменения, добавить новый анализатор, грамматика для которого будет строиться по уже существующей таблице (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)

several lines from sakhatyla table with ud pos

Итог: сейчас имеем немало текстов, умеем неплохо разбивать якутский текст на предложения, токенизировать их, переводить таблицу с правилами в общем виде в вид фомы, и разбирать слова морфологически по этой грамматике!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published