GithubHelp home page GithubHelp logo

brown-uk / dict_uk Goto Github PK

View Code? Open in Web Editor NEW
547.0 43.0 71.0 109.05 MB

Project to generate POS tag dictionary for Ukrainian language

License: GNU General Public License v3.0

Shell 2.30% Java 4.92% Groovy 92.21% Perl 0.52% Dockerfile 0.04%
dictionaries morfologik pos-tag-dictionary hunspell

dict_uk's Introduction

SWUbanner

Це — великий електронний словник української мови (ВЕСУМ).

This is a project to generate POS tag dictionary for Ukrainian language.

Опис

Словник містить слова та їхні парадигми з відповідними тегами, а також іншу інформацію,
зокрема:
* додаткові теги: slang, rare, bad...
* пропоновані заміни для покручів
* зв’язок між базовими та порівняльними формами прикметників
* керування відмінками для прикметників

Для всіх файлів в data/dict цей проект генерує всі можливі словоформи з тегами частин мови
за допомогою правил афіксів у каталозі data/affix.

Докладніша інформація в теці doc/

Вимоги до програмних засобів

  • java (JDK >= 11)
  • 5Гб вільної пам'яті

Застосування

зі словником можна робити дві речі:
  1. згенерувати всі можливі словоформи для слів, що вже є в словнику (див. параграф «Як запускати» нижче)
  2. генерувати форми для довільних слів в інтерактивному режимі: докладніше

Як встановити

  • Встановити java (JDK 11 або новішу)
  • (Лише для Windows) встановити і запустити git bash
  • Клонувати проект: git clone https://github.com/brown-uk/dict_uk.git
  • Зайти в теку проекту: cd dict_uk

Як запускати

`./gradlew expand`

або для Windows:

`bin/expand_win.sh`

На виході:
  • out/dict_corp_vis.txt - словник у візуальному форматі (з відступами, згрупований за лемами) для перегляду, аналізу і опрацьовування
  • out/dict_corp_lt.txt - словник у табличному форматі для використання в ПЗ, зокрема з цього файлу генеруємо словник morfologik, що використовується в LanguageTool
  • out/words.txt - список всіх відомих словоформ
  • out/words_spell.txt - список всіх відомих словоформ, правильних з погляду правопису
  • out/lemmas.txt - список лем

Ліцензія

Дані словника доступні для використання згідно з умовами ліцензії "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License" (https://creativecommons.org/licenses/by-nc-sa/4.0/)

Програмні засоби вільно розповсюджується за умов ліцензії GPL 3.0 або вище.

Зауваження: похідні проекти мають свої ліцензії

Окрім цього матеріали цього проєкту дозволено використовувати у проєктах https://voice.mozilla.org/uk і https://common-voice.github.io/sentence-collector/#/ відповідно до їх ліцензій.

Copyright (c) 2023 Андрій Рисін ([email protected]), Василь Старко, команда БрУК

Похідні проекти

Description

For all files in data/dict the project generates all possible word forms with POS tags
by using affix rules from files in data/affix.

Required software

  • java (JDK >= 11)
  • 5G of free RAM

How to run

`./gradlew expand`

or on Windows:

`bin/expand_win.sh`

Output:
  • out/dict_corp_vis.txt - Dictionary in visual (indented) format for review, analysis or conversion
  • out/dict_corp_lt.txt - Dictionary in flat format (is used for preparing morfologik dictionary that can be used by LanguageTool)
  • out/words.txt - list of all unique known words
  • out/words_spell.txt - words valid for spelling
  • out/lemmas.txt - list of unique lemmas

Building under docker

sudo docker build -t brown-uk/dict_uk .
sudo docker run -d --name dict_uk brown-uk/dict_uk /bin/bash
sudo docker cp dict_uk:/src/out/ ./out
sudo chown -R $USER: ./out
sudo docker stop dict_uk

License

Dictionary data are distributed under "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License" (https://creativecommons.org/licenses/by-nc-sa/4.0/)

Software is distributed under GPL 3.0 or above.

Note: derivative projects have different licenses

Besides that materials in this project are allowed to be used in https://voice.mozilla.org/uk and https://common-voice.github.io/sentence-collector/#/ according to their licenses.

Copyright (c) 2023 Andriy Rysin ([email protected]), Vasyl Starko, BrUK team

Просимо посилатися на ресурс так:

Просимо посилатися на вебверсію ВЕСУМу так:

Рисін А., Старко В. Великий електронний словник української мови (ВЕСУМ). Вебверсія 6.1.0. 2005-2023. URL: https://vesum.nlp.net.ua/

Rysin, A., Starko, V. Large Electronic Dictionary of Ukrainian (VESUM). Version 6.1.0. 2005-2023. Available at: https://vesum.nlp.net.ua/

Derivative Projects

dict_uk's People

Contributors

arysin avatar burunduk avatar diundyk avatar jellysquider avatar k-bx avatar lukom avatar mariana-romanyshyn avatar mariana-scorp avatar martinjack avatar msklvsk avatar mystic-mirage avatar olvija avatar sundea avatar thorn0 avatar vsemozhetbyt avatar vstarko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dict_uk's Issues

дублювання _щонайменше_ та інших

Є

мало adv:compb
  менш adv:compr
  менше adv:compr
  найменш adv:super
  найменше adv:super
  щонайменш adv:super
  якнайменш adv:super
  щонайменше adv:super

А є щонайменше adv:super окремою лемою. Те ж з іншими.

Немає типу для семи займенників

Для котрих є, в дужках наводжу тип з уліфа. Чи правильний не знаю.

будь-котрий (indefinite)
будлі-який
казна-який (indefinite)
будлі-котрий
жодний (negative)
подеякий
такісінький (demonstrative)

такого-сякий

Неузгоджені складені займенники, ще наприклад сякий-такого тощо.

Дубльовані Називний і Знахідний у вусах

у згенерованому словнику:

вуса noun:inanim:p:v_naz:ns
  вуса noun:inanim:p:v_naz  <————
  вусів noun:inanim:p:v_rod:ns
  вусам noun:inanim:p:v_dav:ns
  вуса noun:inanim:p:v_zna:ns
  вуса noun:inanim:p:v_zna  <————
  вусами noun:inanim:p:v_oru:ns
  вусах noun:inanim:p:v_mis:ns

(може трапляється ще десь)

часу :v_mis

жокею :v_mis, в’їзду :v_mis
Так правильно чи глюк?

TODO.txt -> TODO.md

Переробити TODO у markdown. А краще завести для цього окремий issue і відмічати пункти по ходу виконання…


До першого випуску

  • додати коментар для омонімів у dict_corp_vis.txt

Після першого випуску

  • присвійні прикметники від імен прапорцем

  • розвести омоніми/омографи тощо

  • додати решту населених пунктів України

  • переглянути групування прапорців дієслів

  • наблизити теги словника правил LT до тегів словника корпусу

  • додати скрипт сортування входових файлів словника (після ручного редагування)

  • наразі деяки (коротші) дублети не мають всіх форм, якщо вони перетинаються з формами довшої леми

    (стягти - стягнути, відвологти - відвологнути, сп'ястися - зіпнутися…)

  • кличний відмінок для займенників та решти іменників

поміняти теги

  • impr -> imprt (щоб краще відрізняти від imprs)
  • додати тег :geo

Покращення структури

  • перенести теги базових форм з коду в афікси (?)
  • переписати скрипти з python на groovy
  • замінити скрипти командного рядку сценарієм gradle

Тестування/регресії

  • перевіряти лат. в укр. словах
  • перевіряти наявність всіх відмінків
  • різні рівні регресії

Інше

  • Firefox/LibreOffice.org addons
  • Вебсторінка для пошуку слів
  • додати словник синонімів
  • додати словник перенесення слів

Все одно проблеми з вусами

вуса noun:inanim:p:v_naz
  вуса noun:inanim:p:v_naz:ns
  вусів noun:inanim:p:v_rod:ns
  вусам noun:inanim:p:v_dav:ns
  вуса noun:inanim:p:v_zna
  вуса noun:inanim:p:v_zna:ns
  вусами noun:inanim:p:v_oru:ns
  вусах noun:inanim:p:v_mis:ns

(дивись #8)

плутанина лем для :emph

adv:&pron:emph є лемою для adv:&pron:neg, наприклад

нізвідки adv:&pron:emph
  нізвідки adv:&pron:neg

Іменникові emph йдуть окремою лемою:

нічим noun:inanim:v_oru:&pron:emph
але якщо є два омоніми, то один стає лемою для іншого:
нічого noun:inanim:v_rod:&pron:emph
  нічого noun:inanim:v_zna:&pron:emph

+m змінює лему на :m

До +m:

штунда noun:anim:f:v_naz
  штунди noun:anim:f:v_rod
  штунді noun:anim:f:v_dav
  …

Після +m:

штунда noun:anim:m:v_naz
  штунди noun:anim:m:v_rod
  штунді noun:anim:m:v_dav
  …
  штунда noun:anim:f:v_naz
  штунди noun:anim:f:v_rod
  …

Таким чином втрачається інфа про те, що штундин рідний рід — жіночий.

Очікується:

штунда noun:anim:f:v_naz
  штунда noun:anim:m:v_naz
  штунди noun:anim:m:v_rod
  …
  штунди noun:anim:f:v_rod
  штунді noun:anim:f:v_dav
  …

пасти гусей і пасти навколішки — одна лема

пасти verb:imperf:inf
  пади verb:imperf:impr:s:2
  паси verb:imperf:impr:s:2
  падім verb:imperf:impr:p:1
  пасім verb:imperf:impr:p:1
  падімо verb:imperf:impr:p:1
  пасімо verb:imperf:impr:p:1
  падіть verb:imperf:impr:p:2
  пасіть verb:imperf:impr:p:2
  ⋮

Глюк чи ще руки не дійшли до розрізнення за наголосом? Ця штука шкодитиме.

відпасти
припасти
підпасти
зади́ха́тися
коли́са́тися
заколи́са́тися
пле́ска́тися
розпле́ска́тися
струменітися ? — там лексема на 51 форму, не можу зрозуміти
о́бі́д

мну verb:imperf:futr:s:1

а також

verb:imperf:futr:s:3: мне
verb:imperf:futr:p:1: мнем, мнемо
verb:imperf:futr:p:2: мнете

немає розрізнення ні́ким і ніки́м (немає категорії emphatic)

Зацініть різницю: там тобі не знати ніко́го / там тобі не знати ні́кого (всі відомі).

Це ті, що в MTE emphatic. Цінна інфа, а не просто формальність для звідності в MTE. Можна не вносити окрему категорію (бо всі emphatic є negative), а лиш додати позначку, але тут треба подумати: вони зовсім різні, у них зовсім різний синтаксис: емфатичне включає в себе й присудок, тобто ні́ким це скорочення до немає ким. Їх всього два: нікого і нічого з відмінками.

@mariana-scorp @vstarko @Olvija

“піти в солдати”, “їх було з десять” — rv_naz?

Андрій сказав, що про це щось було в Синявського, але я швидко не знайшов.
Проте є в СУМі: “…8. із знах. (у давній формі, яка збігається з сучасним називним множини)” (http://sum.in.ua/s/v)
Нехай знахідний у давній формі, але солдати в словнику зараз або солдати noun:anim:p:v_naz або солдати noun:anim:p:v_kly, тож зробити щось треба: або додати давній знахідний, або додати :rv_naz, або? Що скажете?

_кожен_ без :&pron

кожний adj:m:v_naz:&pron:def
  кожного adj:m:v_rod:&pron:def
  …
  кожен adj:m:v_naz:short
  кожен adj:m:v_zna:short

стафілокок

ULIF каже стафілокок — це істота (відмінюється, як тварина)
ГС дає парадигму, що не є ані істотою, ані неістотою (власне як вони й кажуть): там подвійний знахідний множини (як у тварин: =р.в. і =н.в.) і подвійний знахідний однини (=р.в. і =н.в.).
Мені здається, що мати одну лему з такою парадигмою краще, ніж вводити омонімію двох лем anim/inanim. От лише не знаю чи тоді треба для бактерій вводити третю форму «істотності» (bacanim? :))

Треба .gitingore’ити виходові файли

Вигенерувані файли заважають при розробці. Не знаю чи їх по одному в ігнор додати, чи патерном, чи в одну папку всіх направити і її ігнорити…

Initiate and approach dic into t9 databases

We should inject vocabulary into modern operation systems like

  • Android
  • iOs

Also we need to take care about aspell, ispell libraries and basic libs like timezone (change kiev to kyiv) and others

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.