/quickpoeter_core

Rust implementation of advanced ryhmes finder

Primary LanguageRustGNU General Public License v3.0GPL-3.0

Авторский алгоритм поиска рифмы.

Инуструкция по использованию

Код написан для quickpoeterGUI, но алгоритм можно использовать как самостоятельную консольную утилиту, можно — как Rust-библиотеку для своих приложений (с GPL-лицензией). Почти весь функционал (за исключением удаления из рассмотрения частей речи) доступен в quickpoeterGUI.

USAGE:
    quickpoeter.exe [OPTIONS] <TO_FIND>

ARGS:
    <TO_FIND>    What to find (use ' to mind the stress)

OPTIONS:
    -d, --debug                Print all subdistances
    -h, --help                 Print help information
    -m, --measure <MEASURE>    Measure distance to given word (primarly for debug purposes)
    -n, --top-n <TOP_N>        Number of returned best matches (doesn't affect speed) [default: 100]
    -r, --rps <RPS>            Remove some parts of speech separated with "+"
                               List of available parts of speech:
                               с      существительное
                               п      прилагательное
                               мс     местоимение-существительное
                               мс-п   местоименное-прилагательное
                               г      глагол
                               н      наречие
                               числ   числительное
                               числ-п счётное прилагательное
                               вводн  вводное слово
                               межд   межометие
                               предик предикатив
                               предл  предлог
                               союз   союз
                               мс     местоимение-существительное
                               мс-п   местоименное-прилагательное
                               г      глагол
                               н      наречие
                               числ   числительное
                               числ-п счётное прилагательное
                               вводн  вводное слово
                               межд   межометие
                               предик предикатив
                               предл  предлог
                               союз   союз
                               сравн  сравнительная степень
                               част   частица
                               ?      куски фразеологизмов и т.п.
    -t, --theme <THEME>        Mean theme name (one from config/themes.yaml)
    -V, --version              Print version information

Принцип работы

Построен на следующих метриках:

  1. Расстояние между соответствующими гласными
  2. Расстояние между всеми возможными парами согласных (чем дальше в слове, тем меньше вес) и их наличие в слове.
  3. Расположение согласных относительно гласных в слове
  4. Длина (фильтр слишком коротких/длинных)
  5. Популярность (фильтр устаревших/редко используемых слов)
  6. Часть речи (штраф на глагольные/прилагательные)
  7. Значение слова (указывается через "тематику")

Больше подробностей (вместе с формулами) можно найти в комментариях в файле настроек config.yaml (файл можно и рекомендуется редактировать для своих нужд).

Словари

Использованные словари основаны на словарях Зализняка, распространяются под лицензией GPL, поэтому мои модифицированные словари в формате .pkl (питоновский pickle) также распространяются под лицензией GPL. В них также входят данные тренировки word2vec на открытых литературных источниках.