Package: ukrainian-word-stress
Ukrainian word stressWord stress is an emphasis we place on a particular syllable of a word as
we pronounce it: ма́маThis package takes text in Ukrainian and adds the stress mark after an accented
vowel. This is useful in speech synthesis applications and for preparing text
for language learners.ExampleFrom Python>>>fromukrainian_word_stressimportStressifier>>>text="""Потяг зупинився, ми зійшли на платформу. Було тихо, широкі навскісні промені золотили повітря, заважаючи бачити речі такими, якими вони були. Третя по обіді. Жодноі живоі душі. Найкращий час для урочистих відвідин померлих. Взяли в привокзальному торбу вина, рушили вздовж колій, піщаною стежкою.""">>>stressify=Stressifier()>>>stressify(text)'Потяг зупини´вся, ми зійшли´ на платфо´рму. Було´ ти´хо, широ´кі навскі´сніпро´менізолоти´липові´тря,заважа´ючиба´читире´чітаки´ми,яки´мивони´були´.Тре´тяпообі´ді.Жодноіживоідуші´.Найкра´щийчасдляурочи´стихвідві´динпоме´рлих.Взя´ливпривокза´льномуто´рбувина,ру´шиливздовжко´лій,піща´ноюсте´жкою.'Theukrainian_word_stress.Stressifierclass has optional arguments for
fine-graded configuration (see sections below). For example:>>>fromukrainian_word_stressimportStressifier,StressSymbol>>>stressify=Stressifier(stress_symbol=StressSymbol.CombiningAcuteAccent)>>>stressify(text)'Потяг зупини́вся, ми зійшли́ на платфо́рму. Було́ ти́хо, широ́кі навскі́сні про́менізолоти́липові́тря,заважа́ючиба́читире́чітаки́ми,яки́мивони́були́.Тре́тяпообі́ді.Жодноіживоідуші́.Найкра́щийчасдляурочи́стихвідві́динпоме́рлих.Взя́ливпривокза́льномуто́рбувина,ру́шиливздовжко́лій,піща́ноюсте́жкою.'From command-line$echo'Золоті яйця, але нема ні яйця'|ukrainian-word-stress
Золоті´я´йця,але´нема´ніяйця´Setup$pipinstallukrainian-word-stressNote, that on the first call this will download around 500M of Stanza resources.
The default location for this is~/stanza_resourcesHandling ambiguitySome words have different pronunciation and meaning but share the same spelling.
These are so calledheteronyms.In most cases, this happens when a word used in its form (singular/plural, case).
For example:блохи́ - родовий відмінок в однині ("немає ані блохи́")бло́хи - множина називного відмінку ("повсюди були бло́хи")We handle this more or less correctly by doing morphological and POS text parse
with Stanza.A much smaller category of heteronyms is where words have completely different meanings:а́тлас - збірник картатла́с - тканинаResolving this is much harder and sometimes impossible.There's no ideal solution to heteronyms ambiguity. We let you decide what to
do for such cases. Possible strategies are:skip: do not place stress at all (this is the default).all: return all possible options at once.  This will look as multiple
stress symbols in one word (за´мо´к).first: place a stress of the first match with a high chance of being
incorrect. Essentially, means a random guess on the heteronyms meaning.The strategy can be configured via--on-ambiguityparameter of the
command-line utility. In Python, useon_ambiguityparameter of theukrainian_word_stress.Stressifierclass.Stress mark symbolsBy default, the Unicode Acute Acent symbol is used: “´” (U+00B4).On print, Combining Acute Acent is more common and visually less intrusive.
This can be turned on by passing "--symbol=combining" to the CLI utility,
orstress_symbol=StressSymbol.CombiningAcuteAccentin theStressifierclass.Note, that some platforms (Windows, for example) render it incorrectly.You can also pass custom characters in place of these two:$echo'олені небриті і не голені.'|ukrainian-word-stress--symbol+
о+ленінебри+тіінего+лені.

$echo'олені небриті і не голені.'|ukrainian-word-stress--symbolcombining
о́ленінебри́тіінего́лені.Variative stressSome words allow for multiple stress positions. For example,
по́милка and поми́лка are both acceptable. For such words we return
double stress:$ echo помилка | ukrainian-word-stress
по´ми´лкаDebugging and reporting issuesUse the--verboseswitch to get info useful for debugging.If you believe that you found a bug, please open aGithub issueBut first, make sure that the bug is not related to heteronyms disambiguation.
For example, if you see that some word lacks accent, add the--on-ambiguity=allswitch to see if this was a heteronym. If the word of question has
multiple accents, that's a heteronym, not a bug:$echoзамок|ukrainian-word-stress--on-ambiguity=all
за´мо´кMore docsDictionary format