{% extends "szkielet.html" %} {% block head %} {% endblock %} {% block lewy %}

program wyszukuje końcówki

Program najpierw wyszukuje w każdej linijce ostatnie słowo, rozkłada je (w sposób trochę uproszczony) na głoski, a potem z tego ostatniego słowa wybiera końcówkę. Rym w języku polskim jest wtedy, jeśli w dwu słowach końcówka od ostatniej akcentowanej samogłoski do końca słowa jest podobna – i taką końcówkę program próbuje wyciągnąć. Jeśli słowo jest dwusylabowe, program bierze końcówkę od przedostatniej samogłoski do końca. Jeśli słowo jest jednosylabowe, bierze końcówkę od ostatniej samogłoski do końca.

Zobacz: poniżej masz pokazane, jak program z każdej linijki wyciągnął ostatnie słowo (jest zaznaczone na różowo), a z niego końcówkę (jest zaznaczona na niebiesko).

{% for linia_i_koncowka in linie_i_koncowki %} {{ linia_i_koncowka.linia }} {{ linia_i_koncowka.slowo }} {{ linia_i_koncowka.koncowka }}
{% endfor %}

program liczy podobieństwo między bliskimi wierszami

Potem program bierze bliskie linijki i liczy odległość Levenshteina między ich końcówkami. A potem na podstawie tej odległości liczy podobieństwo, które jest liczbą od zera (kiedy dwie końcówki są całkiem niepodobne) do jednego (kiedy dwie końcówki są identyczne).

Zobacz: poniżej są wszystkie pary bliskich linijek posortowane według podobieństwa. Na górze są pary podobne, na dole – niepodobne.

{% for linie, zrymowanie in pary_wierszy %}
{% for linia in linie %} {{ linia }} {% if loop.first %} ← między tą końcówką{% endif %} {% if loop.last %} ← a tą końcówką{% endif %}
{% endfor %}
jest podobieństwo: {{ '%.2f' % zrymowanie }}
{% endfor %} {% endblock %} {% block prawy %}

znajdowanie rymujących się linijek

Żeby stwierdzić, która linijka rymuje się z którą, trzeba patrzeć na podobieństwo między bliskimi linijkami. Jeśli dwie linijki są podobne, to znaczy, że pewnie się rymują. Więc trzeba przyjąć jakąś graniczną wartość podobieństwa, od której w górę będziemy uznawać, że to już jest rym. Jeśli tę wartość progową przyjmiemy za niską, będziemy mieć za dużo fałszywych pozytywów. Jeśli tę wartość progową przyjmiemy za wysoką, będziemy mieć za dużo fałszywych negatywów. Dość sensowną wartością jest 0.75. A jaką wartość ty chcesz przyjąć? Wpisz w formularzu poniżej (albo zostań przy domyślnym 0.75) i wciśnij przycisk dawaj - a zobaczysz, jak program znajdzie rymujące się wiersze.

próg odległości Levenshteina:
{% endblock %}