RuPo: library for russian poetry analysis and generation


Keywords
poetry, nlp, russian
License
Apache-2.0
Install
pip install rupo==0.2.6.1

Documentation

Python library for analysis and generation of poems in Russian

Current version on PyPI Python versions Build Status Code Climate Documentation Status

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

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°