Skip to content

Instantly share code, notes, and snippets.

@agricolamz
Last active November 7, 2025 00:03
Show Gist options
  • Select an option

  • Save agricolamz/d9850b44767c176bc1a1142c16201e15 to your computer and use it in GitHub Desktop.

Select an option

Save agricolamz/d9850b44767c176bc1a1142c16201e15 to your computer and use it in GitHub Desktop.
library(ellmer)
chat <- chat_ollama(model = "gemma3n")
type_dictionary_entry <- type_object(
lemma = type_string("Begining of the string before parenthesis or list of meanings."),
morphology = type_string("Data provided in parenthesis", required = FALSE),
meanings = type_array(
type_string(),
"List of translation into Russian and examples. In most cases I expect just a sing meaning after parenthesis. If there are multiple meanings they will be listed using roman numerals like 1) 2) 3) or 1. 2. 3. The number of meanings should be exactly as much as there are items in the enumerated list. There are also examples of word usage that are listed after the colon. For each meaning there could be multiple examples",
)
)
akhvakh_example_1 <- "а/б/ажу'рулъIа (абажвари', аба-жу'ва, абажва', абажве̄'гье, абажве'ре) 1) общаться||| поддерживать отношения; *чес̄уга-че абажвӣгьи бакIурулъIа* общаться, поддерживать отношения между собой 2) привязываться; *микIели илога абажвӣгьи голи* _перен._ дети привязались к бабушке 3) кидаться, набрасываться на _кого-чего-л._; *хвади диге кьIадо аражвари* собаки набросились на меня; _ратл._ *абажулахъе*, _тлян._ *гьажехъе*, _цег._ *жубалахъе*"
result <- chat$chat_structured(akhvakh_example_1, type = type_dictionary_entry)
result
# $lemma
# [1] "а/б/ажу'рулъIа"
#
# $morphology
# [1] "абажвари', аба-жу'ва, абажва', абажве̄'гье, абажве'ре"
#
# $meanings
# [1] "общаться||| поддерживать отношения"
# [2] "привязываться"
# [3] "кидаться, набрасываться на кого-что-л."
akhvakh_example_2 <- "ава'да/б/е 1) веселый, жизнерадостный; *авадабе ракIвалIи аᴴде* жизнерадостный (_букв._ с веселым сердцем) человек; *авадайе акĪа* жизнерадостная, веселая женщина; *авадабе бикIвари зама* веселое было время 2) свободный; *авадабе гIуми* а) веселая жизнь б) свободная жизнь; *авабаде гIумила, гIатIидабе дунал̄а* _пожелание_ свободной, раскованной, счастливой жизни (_букв._ свободной жизни и широкого мира); _ратл._ *авадандаб*,_ тлян., цег. _*аваданаб*"
result <- chat$chat_structured(akhvakh_example_2, type = type_dictionary_entry)
result
# $lemma
# [1] "ава'да/б/е"
#
# $morphology
# [1] "ава'да/б/е"
#
# $meanings
# [1] "1) веселый, жизнерадостный"
# [2] "2) свободный"
akhvakh_example_3 <- "аза'зарода _числ._ тысячами||| бесчисленное множество; *азазарода бакала гве дулъIа хакъилъ̄илIи* тысячу благодарностей тебе от народа; *азазарода аᴴде* много людей; _тлян._ *азаз̄арода*"
result <- chat$chat_structured(akhvakh_example_3, type = type_dictionary_entry)
result
# $lemma
# [1] "аза'зарода"
#
# $morphology
# [1] "plural of аззарода"
#
# $meanings
# [1] "числ. тысячами||| бесчисленное множество"
# [2] "много людей"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment