rupo.generate package

Submodules

rupo.generate.filters module

class rupo.generate.filters.Filter[исходный код]
Базовые классы: object

Фильтр языковой модели.

filter_model(model: <built-in function array>, vocabulary: rupo.util.vocabulary.Vocabulary) → <built-in function array>[исходный код]

Фильтрация языковой модели.

Параметры:
  • model – изначальная модель.
  • vocabulary – словарь
Результат:

модель после фильтрации и нормирования.

filter_word(word: rupo.main.markup.Word) → bool[исходный код]
filter_words(words: typing.List[rupo.main.markup.Word]) → typing.List[rupo.main.markup.Word][исходный код]

Фильтрация набора слов.

Параметры:words – слова.
Результат:слова после фильтрации.
pass_word(word: rupo.main.markup.Word) → None[исходный код]
class rupo.generate.filters.MetreFilter(metre_pattern: str)[исходный код]
Базовые классы: rupo.generate.filters.Filter

Фильтр по шаблону метра.

filter_word(word: rupo.main.markup.Word) → bool[исходный код]

Фильтрация слова по метру в текущей позиции.

Параметры:word – слово.
Результат:подходит слово или нет.
pass_word(word: rupo.main.markup.Word) → None[исходный код]

Сдвинуть позицию в шаблоне метра на слово.

Параметры:word – слово (Word).
reset() → None[исходный код]

Сброс позиции в шаблоне.

class rupo.generate.filters.RhymeFilter(rhyme_pattern: str, letters_to_rhymes: dict = None)[исходный код]
Базовые классы: rupo.generate.filters.Filter

Фильтр по шаблону рифмы.

filter_word(word: rupo.main.markup.Word) → bool[исходный код]

Фильтрация слова по рифме в текущей позиции.

Параметры:word – слово (Word).
Результат:подходит слово или нет.
pass_word(word: rupo.main.markup.Word) → None[исходный код]

Сдвинуть позицию в шаблоне рифмы на строчку.

Параметры:word – рифмующееся слово (Word).

rupo.generate.generator module

class rupo.generate.generator.Generator(model_container, vocabulary: rupo.util.vocabulary.Vocabulary)[исходный код]
Базовые классы: object

Генератор стихов

generate_line(metre_filter: rupo.generate.filters.MetreFilter, rhyme_filter: rupo.generate.filters.RhymeFilter, prev_word_indices: typing.List[int]) → typing.List[str][исходный код]

Генерация одной строки с заданными шаблонами метра и рифмы.

Параметры:
  • metre_filter – фильтр по метру.
  • rhyme_filter – фильтр по рифме.
  • prev_word_indices – индексы предыдущих слов.
Результат:

слова строка.

generate_poem(metre_schema: str = '-+', rhyme_pattern: str = 'abab', n_syllables: int = 8, letters_to_rhymes: dict = None) → str[исходный код]

Генерация стихотворения с выбранными параметрами.

Параметры:
  • metre_schema – схема метра.
  • rhyme_pattern – схема рифмы.
  • n_syllables – количество слогов в строке.
  • letters_to_rhymes – заданные рифмы.
Результат:

стихотворение.

generate_poem_by_line(line: str, rhyme_pattern: str, accent_dict: rupo.accents.dict.AccentDict, accents_classifier: rupo.accents.classifier.MLAccentClassifier) → str[исходный код]

Генерация стихотвторения по одной строчке.

Параметры:
  • accent_dict – словарь ударений.
  • accents_classifier – классификатор.
  • line – строчка.
  • rhyme_pattern – шаблон рифмы.
Результат:

стихотворение

generate_word(prev_word_indices: typing.List[int], filters: typing.List[rupo.generate.filters.Filter]) → int[исходный код]

Генерация нового слова на основе предыдущих с учётом фильтров.

Параметры:
  • prev_word_indices – индексы предыдущих слов.
  • filters – фильтры модели.
Результат:

индекс нового слова.

rupo.generate.generator.choice(a, size=None, replace=True, p=None)

Generates a random sample from a given 1-D array

Добавлено в версии 1.7.0.

a : 1-D array-like or int
If an ndarray, a random sample is generated from its elements. If an int, the random sample is generated as if a was np.arange(n)
size : int or tuple of ints, optional
Output shape. If the given shape is, e.g., (m, n, k), then m * n * k samples are drawn. Default is None, in which case a single value is returned.
replace : boolean, optional
Whether the sample is with or without replacement
p : 1-D array-like, optional
The probabilities associated with each entry in a. If not given the sample assumes a uniform distribution over all entries in a.
samples : 1-D ndarray, shape (size,)
The generated random samples
ValueError
If a is an int and less than zero, if a or p are not 1-dimensional, if a is an array-like of size 0, if p is not a vector of probabilities, if a and p have different lengths, or if replace=False and the sample size is greater than the population size

randint, shuffle, permutation

Generate a uniform random sample from np.arange(5) of size 3:

>>> np.random.choice(5, 3)
array([0, 3, 4])
>>> #This is equivalent to np.random.randint(0,5,3)

Generate a non-uniform random sample from np.arange(5) of size 3:

>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0])

Generate a uniform random sample from np.arange(5) of size 3 without replacement:

>>> np.random.choice(5, 3, replace=False)
array([3,1,0])
>>> #This is equivalent to np.random.permutation(np.arange(5))[:3]

Generate a non-uniform random sample from np.arange(5) of size 3 without replacement:

>>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([2, 3, 0])

Any of the above can be repeated with an arbitrary array-like instead of just integers. For instance:

>>> aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
>>> np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])
array(['pooh', 'pooh', 'pooh', 'Christopher', 'piglet'],
      dtype='|S11')

rupo.generate.markov module

class rupo.generate.markov.MarkovModelContainer(dump_filename: str, markup_dump_path: str = None)[исходный код]
Базовые классы: object

Марковские цепи.

add_markup(markup: rupo.main.markup.Markup) → None[исходный код]

Дополнение цепей на основе разметки.

Параметры:markup – разметка.
generate_chain(words: typing.List[int]) → typing.List[collections.Counter][исходный код]

Генерация переходов в марковских цепях с учётом частотности.

Параметры:words – вершины цепи.
Результат:обновленные переходы.
get_model(word_indices: typing.List[int]) → <built-in function array>[исходный код]

Получение языковой модели.

Параметры:word_indices – индексы предыдущих слов.
Результат:языковая модель (распределение вероятностей для следующего слова).

Module contents