Things that live here:

  1. Work log, where I note things I feel I'll have to Google later.
  2. Journal, very similar but about non-IT topics.
  3. Blog for rare longer-form posts (last one below).
  4. Links blog, formerly my personal wiki.

Feel free to look at what you can find here and enjoy yourself.

~17% of my country is occupied by Russia, and horrible things are happening there. You can help stop this! If you can donate - I contribute to (and fully trust) Come Back Alive and Hospitallers, but there are also other ways to help.

If you're in Germany, DHL sends packets with humanitarian help for free!

Latest posts from the Work log

Day 1736

Useful literature for Masterarbeit

Linguistics basics

Essentials of Linguistics, 2nd edition

The online version1 has cool tests at the end!

Generally: a lot of it is about languages/power, indigenous languages etc. Might be interesting for me wrt. UA/RU and colonialism

  • Chapter 5 / Morphology gets interesting
    • 5.7 Inflectional morphology!
  • 6: Syntax - even more interesting
    • 6.2 word order
    • p.264 Key grammatical terminology
    • word order
    • really cool and quite technical up until the end, esp. trees
    1. Semantics
    1. Pragmatics
    • todo - all of it

  1. 1.1 What even is language? – Essentials of Linguistics, 2nd edition ↩︎

Python self type

from typing import Self

class Shape:
    def set_scale(self, scale: float) -> Self:
        self.scale = scale
        return self

Related: 220726-1638 Python typing classmethods return type

I remember writing about the typevar approach but cannot find it…

Meta about writing a Masterarbeit

Literature review


Literature Review For Academic Outsiders: What, How, and Why — LessWrong

‘Literature review’ the process is a way to become familiar with what work has already been done in a particular field or subject by searching for and studying previous work

Masterarbeit toread stack

Also: 231002-2311 Meta about writing a Masterarbeit

Relevant papers in Zotero will have a ‘toread’ tag.

When can we trust model evaluations? — LessWrong

Day 1732

Random side quests about the Masterarbeit

UA-RU parallel corpus має статті трьома мовами:

The difference seems to be only in that one part of the URL!

Article; title; tags; date,author.

Then article title+classification might be one of the benchmark tasks!

Is there anything stopping me from scraping the hell out of all of it?

Google finds 50k articles in /eng/, 483k in /rus/, assumption: all english articles were translated to Russian as well.

=> For each english article, try to get the Russian and Ukrainian one from the URI.

Related: ua-datasets/ua_datasets/src/text_classification at main · fido-ai/ua-datasets Related: facebook/flores · Datasets at Hugging Face frow wikinews in infinite languages including UA!

Somehow magically use WikiData

How does alignment/censoring work with UA?

eg could other langs help for that?2

  1. Same goes for Економічна правда and friends. ↩︎

  2. (172) Detailed walkthrough of procedure to uncensor models : LocalLLaMA.g. ↩︎

Masterarbeit draft

This will be the Markdown draft, I’ll jot things down and then expand.


The Ukrainian language

  • Basic history
  • UA vs RU vs PL vs…
  • A bit about how it’s closer to DE with its prefix/suffixes etc. than to EN

Наукова новизна

These guys trained an UA LM(youscan/ukr-roberta-base · Hugging Face), but tested it on their internal tasks and they say it’s better than bert-base-multilingual-cased : How to Train a New Language Model for NLP | YouScan

LM Benchmarking



  • from my first paper - task / dataset / benchmark / …

Taxonomy of benchmark tasks

  • By task type/goal
    • Include more exotic/interesting ones, e.g. truthfulQA1
  • One/two/X shot?…

Notable benchmarks

Similar work

Benchmarks and benchmark tasks

Evaluation harnesses

… somewhere: why can’t one just google translate existing benchmarks and be done with it? precision, eval, etc.

Ukrainian LM evaluation benchmark

Basic description

Construction, validation, …

  • truthfulQA2 paper has examples

Eval tasks

Single-input understanding tasks3

POS tagging

POS tagging

News classification (NC)

News classification

Russian-Ukrainian interference test
  • Auto-complete sentences based on:
    • <@tihiySlovnikMovnihPokruchiv2009 (2009) z/d/>
    • The others listed in [[230928-1630 Ideas for Ukrainian LM eval tasks#Ideas]] / [[230928-1630 Ideas for Ukrainian LM eval tasks#^ff5ccc]]

Pair input understanding tasks



Word Sense Disambiguation

Contextual Embeddings for Ukrainian: A Large Language Model Approach to Word Sense Disambiguation - ACL Anthology<@labaContextualEmbeddingsUkrainian2023 Contextual Embeddings for Ukrainian (2023) z/d/>

Children’s book test

Original: <@taskCBT (2015) z/d/> Get Ukrainian book, POS-tag, generate questions


Benchmark data contamination

Canary GUID strings

  • My own benchmark tasks have a canary string
  • The three ones from ua-datasets don’t, and are too available online - they might have become part of some LLM training data


Models tested on the new benchmark

  • for ideas about it, see truthfulQA paper1 as well as any multi-lingual benchmark paper
  • openAI API


  1. TruthfulQA/TruthfulQA.csv at main · sylinrl/TruthfulQA ↩︎

  2. <@clarkBoolQExploringSurprising2019 (2019) z/d/↩︎

  3. XGLUE calls them that, todo better sourec: <@liangXGLUENewBenchmark2020 XGLUE (2020) z/d↩︎

LM Benchmarks notes

Context: 230928-1527 Evaluation benchmark for DE-UA text Here I’ll keep random interesting benchmarks I find.



code: GLUECoS/Code at master · microsoft/GLUECoS





‘evaluation harness’es

Random relevant code

  1. lm-evaluation-harness/lm_eval/tasks/glue at big-refactor · EleutherAI/lm-evaluation-harness ↩︎

  2. lm-evaluation-harness/lm_eval/tasks/benchmarks/t0_eval.yaml at big-refactor · EleutherAI/lm-evaluation-harness ↩︎

Ideas for Ukrainian LM eval tasks

Context: 230928-1527 Evaluation benchmark for DE-UA text


  • would be cool to create ones from different HELM scenarios1
  • would be cool to find not-work-intensive ways to create this data coming from other benchmarks (e.g. classify headers by article tags etc.)
  • especially find cool ways to use the annotated corpora I found
  • I could generate my own tasks easily with some kind of annotation tool, a la label-parser, and annotate bits of Ukrainian Wikipedia2
  • I could use some google translate API3 thing
  • LLMs shouldn’t scare me from including easy tasks - smaller LMs exist in many contexts!


  1. Based on LinguisticAndInformationSystems/mphdict: Digital lexicographic systems Ukrainian language + (the grammatical dictionary, synonymous dictionary, etymological dictionary +):
    1. Find the best synonym for $word
  2. Tasks on Ukrainian/Russians verbs of motion4:
    1. Correct verb of motion for hypothetical situations
  3. Ask whether certain words rhyme
    1. especially ones where the letter make it seem like they do, but they don’t
  4. Чи правильно використані фразеологізми
  5. Find the correct tag for the title of an article, from the possible parallel corpus: [[231002-2311 230928-1651 Random stuff about the Masterarbeit#UA-RU parallel corpus]]
  6. Children’s book test<@taskCBT (2015) z/d/>
    • Gutenberg has no Ukrainian books, but Anna’s archive does and many of them are actually stories and epub/fb2: казки - Search - Anna’s Archive
    • One could filter them by decade etc. for copyright
    • Then POS-tag, and automatically generate examples
  7. Yes/no questions:BoolQ: Exploring the Surprising Difficulty of Natural Yes/No Questions - ACL Anthology
  8. Russian-language interference!
    1. Remember how a number of “ukrainian” datasets of HF hub are actually Russian
    2. Resources:
    3. Frame as multiple-choice task! Or boolean?
  9. Implicature5:

Neat datasets

Work required


From 6, automatically generated!

  1. facebookarchive/bAbI-tasks at ccd8fd6af76d35346109e7bb5f7de9138d055e01
  2. bAbI-tasks/lua/babi/World.lua at ccd8fd6af76d35346109e7bb5f7de9138d055e01 · facebookarchive/bAbI-tasks
  3. !!! bAbI-tasks/lua/babi/tasks/worlds/world_basic.txt at ccd8fd6af76d35346109e7bb5f7de9138d055e01 · facebookarchive/bAbI-tasks

I could also use a graph-based approach? As in create an ontology, ask questions about it?..

Or split it into multiple sub-tasks! one for time, one for y/n, etc.?


Завдання та відповіді на тести ЗНО/НМТ 2022, 2021, 2020, 2019, 2018 та минулих років – Освіта.UA:

  • the ones I clicked were OCR’d PDFs
  • one could manually parse them

Make my own IMDB dataset

Find some popular website with comments and ratings, do sentiment analysis: can I scrape ?

Not all comments are in UA but I can filter it.

Use movie subtitles for basic dialogs

Literally google-translate other benchmarks and see what happens

Where to get ideas

  • Read a UA/RU language textbook for other cool hard things like the verbs of motion
  • Глянути завдання ЗНО!

Existing tasks


From fido-ai/ua-datasets: A collection of datasets for Ukrainian language:

Multilingual including UA

  1. Holistic Evaluation of Language Models (HELM) ↩︎

  2. ParlAI/parlai/tasks/squad2/test/squad2_index_test.yml at main · facebookresearch/ParlAI ↩︎

  3. matheuss/google-translate-api: A free and unlimited API for Google Translate :dollar::no_entry_sign: ↩︎

  4. Prefixes in Russian Verbs of Motion - The Ultimate Guide ↩︎

  5. <@ruisLargeLanguageModels2022 (2022) z/d/>: ↩︎

  6. Babi: <@westonAICompleteQuestionAnswering2015 Towards AI-Complete Question Answering (2015) z/d/> / Holistic Evaluation of Language Models (HELM) ↩︎

Evaluation benchmark for DE-UA text

Officially - I’m doing this!

This post will be about dumping ideas and stuff.

Related posts for my first paper on this topic:


  • I’ll be using Zotero
  • I’ll be writing it in Markdown
    • TODO: Zotero+markdown+obsidian?..

General questions:

  • Write my own code or use any of the other cool benchmark frameworks that exist?
    • Will it involve writing the code to actually run the model, or just parsing input/output types?
    • Metrics?
    • If I’ll write the code: in which way will it be better than, e.g., eleuther-ai’s lm-evaluation-harness?
  • Task types/formats support - a la card types in Anki - how will I make it
    • extensible (code-wise)
    • easy to provide tasks as examples? YAML or what?
  • Do I do German or Ukrainian first? OK to do both in the same Master-arbeit?
  • Using existing literature/websites/scrapes (=contamination) VS making up my own examples?

Actual questions

  • What’s the meaningful difference between a benchmark and a set of datastes? A leaderboard? Getting-them-together?..
  • Number of sentences/task-tasks I’d have to create to create a unique valid usable benchmark task?
  • Is it alright if I follow my own interests and create more hard/interesting tasks as opposed to using standard e.g. NER etc. datasets as benchmarks?

My goal

  • Build an Ukrainian benchmark (=set of tasks)
  • Of which at least a couple are my own
    • The datasets uploaded to HF
    • Optionally added/accepted to BIG-bench etc.
  • Optional experiments:
    • Compare whether google translating benchmarks is better/worse than getting a human to do it?
      • Optionally on some other cool evaluations e.g. shutdownability or things like1 or trufulQA2 etc.
      • See if multilingual models a la chatGPT or real ones differ
    • Evaluate the correctness of Ukrainian language VS Russian-language interference!
  • Really optional experiments
    • Something about UA-specific bits, e.g. does it answer better about Ukrainian Aberglauben in UA or in EN?


  • Will write in English
  • I’ll upload it to HF hub, since all the cool people are doing it
  • Will be on Github and open to contributions/extensions
  • Write the code as generally as possible, so that both it’ll be trivial to adapt to DE when needed


Benchmarks - generic

Cool places with potential

Plan, more or less

  1. Methodically look through and understand existing benchmarks and tasks
    1. Kinds of tasks
    2. How is the code for them actually written, wrt API and extensibility
  2. Do this for English, russian, Ukrainian
  3. At the same time:
    1. Start creating small interesting tasks 230928-1630 Ideas for Ukrainian LM eval tasks
    2. Start writing the needed code
  4. Write the actual Masterarbeit along the way, while it’s still easy


  • 2023-10-03 00:22: EvalUAtion is a really cool name! Ungoogleable though

  1. Reproducing ARC Evals' recent report on language model agents — LessWrong ↩︎

  2. TruthfulQA/TruthfulQA.csv at main · sylinrl/TruthfulQA ↩︎

  3. <@labaContextualEmbeddingsUkrainian2023 Contextual Embeddings for Ukrainian (2023) z/d/> / Contextual Embeddings for Ukrainian: A Large Language Model Approach to Word Sense Disambiguation - ACL Anthology ↩︎

Day 1723 / seaborn label bars in histogram plot

The ‘new’ function in matplotlib for this is matplotlib.pyplot.bar_label — Matplotlib 3.8.0 documentation (ty Revisions to Display count on top of seaborn barplot [duplicate] - Stack Overflow):

ax = sns.histplot(df.langs_parsed)
#ax.set_ylabel("# of files")

for i in ax.axes.containers:

The second link has infos about barplot, catplot, and countplot too!

If the text goes over the limit and the light-gray background of seaborn’s theme or something, increase the limit as:

ylim = ax.axes.get_ylim()[1]
new_ylim = ylim + 300

ax.axes.set_ylim(0, new_ylim)

# you can also set padding of the labels in px and Text ( properties:
for ax in g.axes.containers:
    g.bar_label(ax, padding=-10,fontsize=5)

Day 1718 / German NLP resources

GitHub - adbar/German-NLP: Curated list of open-access/open-source/off-the-shelf resources and tools developed with a particular focus on German

It includes a really cool list of corpora!

And at the end has a list of other such pages for other languages etc.

EDIT Oh wow: GitHub - asivokon/awesome-ukrainian-nlp: Curated list of Ukrainian natural language processing (NLP) resources (corpora, pretrained models, libriaries, etc.)

Also: deutschland · PyPI: “A python package that gives you easy access to the most valuable datasets of Germany.”

Day 1715 / Latex print or not the entire bibliography from a file

The LREC Author’s Kit prints all things in the .bib file and it uses \nocite{*} for that.

The Internet from 2009 agreess that’s the way to go : Biblatex - Printing all entries in .bib file (cited and not)

Removing this line removes the printout.

Lastly, the link above shows printing separate bibliographies; the LREC Author’s kit does something different for the same:

\subsection{Language Resource References}

Language resource references should be listed in alphabetical order at the end of the paper.

\section{Bibliographical References}\label{sec:reference}


\section{Language Resource References}

Day 1712 / Latex page-breaks

\newpage doesn’t always work for well me in, esp. not in the IEEE and LREC templates. Either only one column is cleared, or there are issues with images/tables/… positions.

\clearpage works for me in all cases I’ve tried.

Day 1640 / Saving plots matplotlib seaborn

When saving seaborn images there was weirdness going on, with borders either cutting labels or benig too big.


# bad: cut corners
# good: no cut corners and OK bounding box
ax.figure.savefig("inat_pnet_lorenz.png", bbox_inches="tight")

Day 1634 / Vaex iterate through groups

Didn’t find this in the documentation, but:

gg = ds.groupby(by=["species"])
lg = next(gg.groups)
# lg is the group name tuple (in this case of one string)
group_df = gg.get_group(lg)

Day 1633

Zotero web version for better tabs

Looking for a way to have vertical/tree tabs, I found a mention of the zotero web version being really good.

Then you can have multiple papers open (with all annotations etc.) in different browser tabs that can be easily navigated using whatever standard thing one uses.

You can read annotations but not edit them. Quite useful nonetheless!

Overleaf bits


Overleaf Keyboard Shortcuts - Overleaf, Online LaTeX Editor helpfully links to a PDF, screenshots here: 2023-06-21-191403_1204x858_scrot.png 2023-06-21-191405_690x267_scrot.png

It seems to have cool multi-cursor functionality that might be worth learning sometime.

Kurz und gut

  • Bold/italic work as expected, <C-b/i>. Same for copypaste etc.
  • Advanced reference search: is cool.
  • Comments:
    • <C-/> for adding %-style LaTex comments.
    • <C-S-c> for adding Overleaf comments


Overleaf has a lot of templates: Templates - Journals, CVs, Presentations, Reports and More - Overleaf, Online LaTeX Editor

If your conference’s is missing but it sends you a .zip, you can literally import it as-is in Overleaf, without even unpacking. Then you can “copy” it to somewhere else and start writing your paper.

Day 1620 / OSM data sources

Latest post from Blog

'The Hacker Manifesto', переклад українською

Оригінал: .:: Phrack Magazine ::.
Контекст: Маніфест хакера — Вікіпедія / Hacker Manifesto - Wikipedia
Існуючий дуже класний переклад, не відкривав, поки не закінчив свій: Маніфест хакера | Hacker’s Manifesto | webKnjaZ: be a LifeHacker

                               ==Phrack Inc.==

                    Том I, випуск 7, Ph-айл[0] 3 з 10

Наступне було написано невдовзі після мого арешту...

	                        \/\Совість хакера/\/


	                          +++The Mentor+++

	                           8 січня 1986р.

	Сьогодні ще одного спіймали, пишуть у всіх газетах. "Кібер-скандал:
підлітку повідомили про підозру", "Кіберзлочинця затримали після
проникнення в систему банку".
	Тупа школота[1], вони всі однакові.

	Та чи ви, з вашою трафаретною ментальністю[2] та знаннями 
інформатики зразка першої половини пʼятидесятих[3], коли-небудь дивилися 
в душу хакера?[4] Чи вас колись цікавило, що є причиною його поведінки[5], 
які сили на нього впливали, що його сформувало?
	Я хакер, ласкаво прошу у мій світ...
	Мій світ почався ще зі школи... Я розумніший за більшість інших
дітей, і дурниці, які нам викладають, мені набридають.
	Тупий відстаючий[6], вони всі однакові.

	Восьмий, девʼятий, десятий, одинадцятий клас[7]. В пʼятнадцятий
раз слухаю, як вчителька пояснює, як скорочувати дроби. Мені все ясно. "Ні, 
Вікторія Миколаївна[8], я не написав проміжні кроки, я розвʼязав все усно..."
	Тупий підліток. Мабуть списав. Всі вони такі.

	Сьогодні я зробив відкриття. Я знайшов компʼютер. Ха, почекай-но,
це круто. Він робить те, що я від нього хочу. І якщо він помиляється,
це тому, що помилився я. А не тому що він мене не любить...
                         Або відчуває від мене загрозу...
                         Або думає що я тіпа самий умний[9]...
                         Або не любить викладати[10] і йому тут не місце...
	Тупий підліток. Він постійно тільки грає в свої ігри. Всі вони такі...

	Потім це відбулось... відчинились двері в світ... несучись телефонною 
лінією як героїн венами наркомана, надсилається електронний пульс,
шукається спасіння від невігластва навколо...[11] Знаходиться борд.[12]
	"Це воно... це те, до чого я належу..."
	Я з усіма тут знайомий... попри те, що я з ними ніколи не 
зустрічався, не розмовляв, і колись можливо більше нічого не чутиму про 
них... Я їх всіх знаю...
	Тупий підліток. Знову займає телефонну лінію... Вони всі однакові.

	Та можете не сумніватись,[13] що ми всі однакові... Нас годували
дитячими сумішами з ложки, коли ми хотіли стейк... а ті куски мʼяса, які 
до нас все ж потрапляли, були вже пережовані і без смаку. Над нами
панували садисти, або нас ігнорували байдужі. Для тих, хто хотіли чомусь 
нас навчити, ми були вдячними учнями, але їх було як краплин дощу в

	Цей світ зараз наш... світ електрона і комутатора, світ краси
бода[14]. Ми користуємося існуючою послугою не платячи за те, що могло б 
бути дуже дешевим, якби ним не завідували ненажерливі бариги[15], і ви 
називаєте нас злочинцями. Ми досліджуємо... і ви називаєте нас 
злочинцями. Ми шукаємо знання... і ви називаєте нас злочинцями. Ми 
існуємо без кольору шкіри, без національності і без релігійної 
нетерпимості... і ви називаєте нас злочинцями. Ви будуєте атомні бомби, 
ви ведете війни, ви вбиваєте, обманюєте, і брешете нам, намагаючись 
заставити нас повірити, що ви це робите для нашого блага, і попри все - 
це ми тут злочинці.

	Так, я злочинець. Мій злочин - моя допитливість. Мій злочин - 
оцінювати людей по тому, що вони кажуть і думають, а не по тому, як 
вони виглядають. Мій злочин в тому, що я вас перехитрив, і ви мене 
ніколи не пробачите за це.

	Я хакер, і це мій маніфест. Можливо ви зупините мене як особу, але ви 
ніколи не зупините нас всіх... зрештою, ми всі однакові.


  1. Ph-айл: worst of both worlds between phile and файл
  2. Damn kids: тупі/кляті/грьобані діти/школота1/малолітки2? Дякую цьому твіту Букви, який дає мені моральне право використовувати слово “школота”, бо нічого інше не клеїлося (“Окаяні дітлахи!")
  3. three-piece-psychology: інтерпретую як невисоку оцінку розвитку внутрішнього світу. Тому: пересічним/шаблонним/банальним/трафаретним3/примітивним/нехитрим/безхитрим; psychology: ‘інтелект’ але не зовсім, мені подобається ‘ментальність’
  4. and 1950’s technobrain: Німецький переклад, який сподобався англіцизмами та дав ідею перекласти technobrain в значенні “знання про компʼютери”, а не слово в слово: Berühmte Manifeste 2 – openPunk
  5. хакер/гакер: Вікіпедія вважає обидва допустимими; сам Авраменко ссилаючись на ті самі правила українського правопису теж вважає обидва допустимими, але все ж любить “г” більше (Хакер чи гакер - експрес-урок - YouTube). А я не можу і не буду. Хакер. I will die on this hill.
  6. what makes him tick: TODO, нічого не подобається. Що його рухає/надихає, що у нього в середині, …
  7. underachiever: хай буде “відстаючий”. Хоча пригадую з ЗНО, що суфікси уч/юч обмежені у вживанні, правильніше ВІДСТАЛИЙ мені не подобається.
  8. junior high or high school: тут додаю драми замість дослівності, тому що все ближче до оригіналу, що я можу придумати, занадто канцеляристично: “я закінчую базову чи повну загальну середню освіту”..?
  9. Ms. Smith:
  10. I’m a smart ass
  11. doesn’t like teaching: оплакую невикористаний варіант від душі “ненавидить себе, дітей, і педагогіку”. Дуже оплакую.
  12. a refuge from the day-to-day incompetencies is sought
  13. a board is found: мається на увазі електронна дошка оголошень (BBS — Вікіпедія), дід форумів і прадід іміджбордів. Найцікавіше слово для перекладу. Якщо буде “борд” то збережеться драматизм оригіналу, але є шанси, що хтось спутає з іміджбордами. Коли вони були популярні, нормальні люди в Україні їх не називали ніяк, російською були варіанти “доска”, “бибиэска”4. “BBS” був би найпростішим виходом; “електронна дошка оголошень” знову ж таки канцеляризм. По контексту далі очевидно, що мова йде про якесь спілкування, тому хай буде “борд”, принесу в жертву однозначність і зрозумілість милозвучності.
  14. you bet your ass we’re all alike: як же складно підбирати такі речі. Умовні embeddings з ML тут були б в тему. “Дай мені щось на кшталт ‘авжеж’ тільки більш emphatical”. Попередня версія “Авжеж ми всі однакові!”
    1. You bet – phrases: базара нет, по любому, я вас умоляю
    2. Будьте певні5
    3. ЩЕ Б ПАК — СИНОНІМІЯ | Горох — українські словники
      1. Авжеж?6
  15. the beauty of the baud: Бод — Вікіпедія Нехай мій (і єдиний можливий) переклад буде всім настільки ж зрозумілим, наскільки мені був зрозумілий оригінал, коли я його читав вперше.
  16. profitteering gluttons

Hat tip to:


  1. (1) Букви on X: “@donikroman Пане, Ви знову з матами, як школота ¯_(ツ)_/¯ Зауваження, до слова, правильне, українською мовою, а не “на українській мові”, це калька з російської. Може б варто почати з такого?” / X ↩︎

  2. „підліток“ синоніми, антоніми, відмінки та тлумачення слова ↩︎

  3. ПРОЗАЇЧНИЙ — СИНОНІМІЯ | Горох — українські словники ↩︎

  4. BBS | зеркало лурк Lurkmore ↩︎

  5. ВПЕВНЕНИЙ — СЛОВОВЖИВАННЯ | Горох — українські словники ↩︎

  6. ЗВИЧАЙНО — СЛОВОВЖИВАННЯ | Горох — українські словники ↩︎