Vir

Takie zwykłe blogowanie.

Wyrazy podobne

Wyraz podobny to taki który jest podobny znaczeniowo. Przykładowo jak mamy wyraz kamień no to w grze "kamień - papier" wyrazem podobnym będzie "papier" lub "nożyce". A w naturze mamy "kamień", "trawa", itd. To tak gwoli lingwistyki. I powiedzmy mamy taki tekst: "Ty pójdziesz górą, ty pójdziesz górą, a ja doliną" no i szukamy w nim słowa "górą" i "doliną", bo to są podobne słowa. Podobne tylko odmienione. Jeżeli więc szukamy takich słów to co robimy? Porównujemy każdy z każdym. Wykonałem to ćwiczenie w interpreterze. Czyli do tablicy dodałem pierwszy tekst i wiadomo, każdy znak jest w niej osobno, a nie jako ciąg znaków. Do tego utworzyłem osobne tablice dla słów "górą" oraz "doliną". Wyniki jakie otrzymałem.

+, 1, 3, +, 3, 2, +, 4, 3,

Otóż to, wyniki też zapisałem w interpreterze. Jak szukałem słów. Mam do przeczesania cały zestaw danych z tablicy głównej w której zapisany jest tekst. I powiedzmy zaczynam od początku, czyli od zera, no ale tablicę przeczesuję przy pomocy zwykłego indeksu. No i podczas przeczesywania rozpoczynam porównanie znaków. I tu ustawiam sobie dwa wartowniki. Pierwszy to indeks tekstu od którego zaczynam, a drugi to indeks szukanego tekstu. No bo trzeba sprawdzić każdy znak. Zapisując indeksami w taki sposób: [index] {znak}, mogę otrzymać zapis: [0] {T}, [1] {y}, [2] { }, [3] {p}. I tak dalej, aż dojdę do ostatniego znaku w tekście. Zauważmy, że indeksy zawsze zaczynają się od 0, a nie od 1. Czyli mamy indeks, a obok każdy kolejny znak. No i zaczynam porównanie, powiedzmy mam głównego wartownika ustawionego na 10, no a szukanego na 0. No i szukam, czy znak o 10 indeksie w tekście jest równy 0 znakowi w szukanym tekście. Jak tak to dalej szukam, czy 11 indeks jest równy 1 w szukanym, itd. Jak tak to szukam dalej, jak nie to już dalej nie szukam. I tak to wygląda. Jak okaże się, że wszystkie znaki są równe no to znalazłem wyraz którego szukałem i szukam dalej. Aż nie dobrnę do końca tekstu. Ja wszystko robię w pętlach, tak to tylko rozpisuję żeby było wiadomo o co chodzi.

I tak właśnie wyszukuję pojedyncze słowo. Jak chcę wyszukać kolejne słowo no to tworzę nową tablicę i rozpoczynam wyszukiwanie od nowa, ale już dla innego słowa. Wyszukało mi indeksy: 13, 32, 43. Bo w tekście: "Ty pójdziesz górą, ty pójdziesz górą, a ja doliną" szukałem słów "górą" oraz "doliną", bo są podobne. A wynik jaki otrzymałem to było widać. Skąd te plusy? Musiałem pooddzielać jakoś wyniki interpretowane. Jeżeli chcemy coś pokazać to to oddzielamy tak. Gdyby wszystkie słowa w tekście były zlane czyli bez spacji to nie moglibyśmy czytać tego tekstu tak na dłuższą metę. Interpreter rozpoznaje każdy znak pojedynczo. Tak więc jak znalazłem indeks to go oznaczyłem wpierw znakiem "+", no a potem osobno każdy znak indeksu do wyników wyszukiwania. Jednym słowem niezła jazda. No ale kurcze hula tak? No tak, jak halny w Tatrach. No to wszystko gra i buczy. Czyli jest dobrze. Znak "+" oddziela każdy wyszukany indeks. Jakby go nie było to byśmy mieli kolejne cyfry po przecinku i pierwsza cyfra tutaj była by 1, druga 3, itd. A tak to wiadomo że jest to indeks 13 bo liczba indeksu zaczyna się tak gdzie jest kolejny znak "+".