• Каков алгоритм работы сервиса типа rifmaslovo.ru?

    Мне кажется тут какой то простой 'топорный' вариант.
    Пример на python 3.*:
    var = 'Слово'
    arrayWords = ['нетослово', 'олово', 'рубилово']
    resultArray = []
    for i in range(0, len(var) - 1):
        # Тут по идее мы должны обращаться к базе с запросом типа:
        # SELECT * FROM table_words WHERE word LIKE '%тут_будет_значение';
        for word in arrayWords:
            if var[-2 - i:] in word:
                if word not in resultArray:
                    resultArray.append(word)
    print(resultArray)
    Ответ написан
    Комментировать
  • Каков алгоритм работы сервиса типа rifmaslovo.ru?

    DDDsa
    @DDDsa
    Ищете статьи на тему, как работает рифма, создаёте набор правил, присваиваете им ранг, ищете по этим правилам слова в словаре и выдаёте пользователю, отсортировав по рангу.

    Первое, что приходит в голову: берём словарь ударений отрезаем от слова из запроса всё окончание, начиная с ударной гласной, ищем по словарю слова с таким же окончанием и той же ударной гласной. "красивый" — "сивый". Это будет первый ранг

    Второй ранг будет немного изменённое окончание. Например, если пользователь ввёл слово "кратный", можно заменить "а" на "я" и найти, например "приятный". "у" на "ю" — "подруга", "вьюга".

    Третий ранг можно сделать ещё более мягким, например, в окончании может присутствовать одна дополнительная согласная, или порядок согласных может различаться.

    Это только что пришло сходу в голову. База данных со словарём, RegEx в руки и вперёд
    ***
    UPD: В сервисе у вас по ссылке вообще всё примитивно. Они выводят сначала то, что я описал выше как первый ранг, а потом отрезают от окончания по одной букве и ищут такие же окончания. Бред, это уже не рифмы
    Ответ написан
    Комментировать