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

program umie zmieniać tekst na głoski

Program umie zmieniać polski tekst na głoski. Zobacz, oto treść wiersza zmieniona na głoski:

{% for linia, slowa in wiersz_pogloskowany %} {{ linia }}
{% for slowo in slowa %} {% for gloska in slowo %}{{ gloska }}{% if not loop.last %}·{% endif %}{% endfor %} {% endfor %}
{% endfor %}

Ta zmiana tekstu w głoski nie uwzględnia wszystkich niuansów polskiej fonetyki, jest przybliżona. Jest tylko na tyle dobra, na ile trzeba, żeby wynajdywać rymy w wierszach.

Ta zmiana najpierw dzieli słowo na litery, i w przypadku niektórych prostych słów (na przykład krowa, kot, nos) to już wystarcza.

Potem niektóre grupy liter są zmieniane w pojedyncze głoski (na przykład ciąg liter s z jest zmieniany w głoskę sz).

Potem program znajduje wszystkie grupy liter takie jak dzi, ci, si itp. I jeśli taka grupa liter jest przed spółgłoską, jest traktowana jako głoska , ć, ś itp.; a jeśli taka grupa liter jest przed spółgłoską, jest traktowana jako para głosek: dź i, ć i, ś i itp.

Potem litera i stojąca po spółgłosce a przed samogłoską zmienia się w głoskę j.

Potem rz jest zmieniane w ż (bo to ta sama głoska), ó jest zmieniane w u (bo to ta sama głoska), ch jest zmieniane w h (bo to ta sama głoska).

Potem litery ę i ą zmieniane są w pary głosek e ł, e m albo e n, albo o ł, o m albo o n – w zależności od tego, czy stoją przed samogłoską, przed spółgłoską czy na końcu słowa.

Potem jest robione,  że jeśli w słowie jest głoska ż albo w następująca po głosce t, p, s, f, h albo k, to traci dźwięczność i zmienia się w sz albo f.

Potem jest robione, że jeśli na końcu słowa jest dźwięczna spółgłoska, to żeby utraciła dźwięczność.

Potem program sprawdza, czy na końcu słowa nie ma głoski ł następującej po spółgłosce. Jeśli tak jest, ta głoska ł jest usuwana.

program wyszukuje końcówki

Program najpierw wyszukuje w każdej linijce ostatnie słowo, rozkłada je 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_linii %}
{% 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 (w aktualnej wersji program porównuje tylko linijki będące od siebie nie dalej niż cztery linijki). 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 %}