Python library for analysis and generation of poems in Russian
Install
git clone https://github.com/IlyaGusev/rupo
cd rupo
pip install -r requirements.txt
sh download.sh
Usage manual
Analysis
>>> from rupo.api import Engine
>>> engine = Engine(language="ru")
>>> engine.load(<stress model path>, <zalyzniak dict path>)
>>> engine.get_stresses("ΠΊΠΎΡΠΎΠ²Π°")
[3]
>>> engine.get_word_syllables("ΠΊΠΎΡΠΎΠ²Π°")
["ΠΊΠΎ", "ΡΠΎ", "Π²Π°"]
>>> engine.is_rhyme("ΠΊΠΎΡΠΎΠ²Π°", "Π·Π΄ΠΎΡΠΎΠ²Π°")
True
>>> text = "ΠΠΎΡΠΈΡ Π²ΠΎΡΡΠΎΠΊ Π·Π°ΡΡΡ Π½ΠΎΠ²ΠΎΠΉ.\nΠ£ΠΆ Π½Π° ΡΠ°Π²Π½ΠΈΠ½Π΅, ΠΏΠΎ Ρ
ΠΎΠ»ΠΌΠ°ΠΌ\nΠΡΠΎΡ
ΠΎΡΡΡ ΠΏΡΡΠΊΠΈ. ΠΡΠΌ Π±Π°Π³ΡΠΎΠ²ΡΠΉ\nΠΡΡΠ³Π°ΠΌΠΈ Π²ΡΡ
ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅Π±Π΅ΡΠ°ΠΌ."
>>> engine.classify_metre(text)
iambos
Generation
Script for poem generation. It can work in two different modes: sampling or beam search.
python generate_poem.py
Argument | Default | Description |
---|---|---|
--metre-schema | +- | feet type: -+ (iambos), +- (trochee), ... |
--rhyme-pattern | abab | rhyme pattern |
--n-syllables | 8 | number of syllables in line |
--sampling-k | 50000 | top-k words to sample from (sampling mode) |
--beam-width | None | width of beam search (beam search mode) |
--temperature | 1.0 | sampling softmax temperature |
--last-text | None | custom last line |
--count | 100 | count of poems to generate |
--model-path | None | optional path to generator model directory |
--token-vocab-path | None | optional path to vocabulary |
--stress-vocab-path | None | optional path to stress vocabulary |
Models
- Generator: https://www.dropbox.com/s/dwkui2xqivzsyw5/generator_model.zip
- Stress predictor: https://www.dropbox.com/s/i9tarc8pum4e40p/stress_models_14_05_17.zip
- G2P: https://www.dropbox.com/s/7rk135fzd3i8kfw/g2p_models.zip
- Dictionaries: https://www.dropbox.com/s/znqlrb1xblh3amo/dict.zip
ΠΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
- ΠΡΠ΅ΠΉΠ΄ΠΎ, 1996, ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΡΡΡΡΠΊΠΎΠ³ΠΎ ΡΡΠΈΡ Π°
- ΠΠ°Π³Π°Π½ΠΎΠ², 1996, ΠΠΈΠ½Π³Π²ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ°
- ΠΠΎΠ·ΡΠΌΠΈΠ½, 2006, ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΡΠΈΡ Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Starling
- ΠΡΠΈΡΠΈΠ½Π°, 2008, ΠΠΎΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΡΠΏΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΠΠ Π―: ΠΎΠ±ΡΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
- ΠΠΈΠ»ΡΡΠΈΠΊΠΎΠ², Π‘ΡΠ°ΡΠΎΡΡΠΈΠ½, 2012, ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΠ°: ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ
- ΠΠ°ΡΠ°Ρ Π½ΠΈΠ½, 2015, ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΡΡΠΊΠΈΡ ΠΏΠΎΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ² Ρ ΡΠ΅Π»ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΈ ΠΊΠΎΠ½ΠΊΠΎΡΠ΄Π°Π½ΡΠΎΠ², ΡΠ°ΠΌΠ° ΡΠΈΡΡΠ΅ΠΌΠ°