Ábrázold hisztogramon az Anyám tyúkja versben a szavak hosszának eloszlását.
Mivel a megoldás során használni fogjuk a numpy
csomag funkcióit, először hívjuk meg!
%pylab inline
Mivel a versben írásjelek is vannak, amik nem számítanak bele a szavak hosszába, ezért először készítsünk egy függvényt, ami eldönti, hogy egy kapott string benne van-e a magyar nyelv 35 különböző egybetűs betűjében! (Ezt a függvényt nyilvánvalóan úgy van értelme használni, hogy a neki átadott string egy darab karakter.)
betuk = ['a', 'á', 'b', 'c', 'd', 'e', 'é', 'f', 'g', 'h', 'i', 'í', 'j', 'k', 'l', 'm', 'n', 'o',
'ó', 'ö', 'ő', 'p', 'q', 'r', 's', 't', 'u', 'ú', 'ü', 'ű', 'v', 'w', 'x', 'y', 'z'] # A betűket tartalmazó lista, ez lesz a referencia
def betue(s):
for c in betuk:
if c == s.lower(): # Ha a kapott string megegyezik az egyik betűvel, akkor a függvény visszatérési értéke True
return True
return False # Egyébként False
Ezután, egy adott szóban ki kell szűrni az írásjeleket, hogy ténylegesen csak a betűk számát nézzük! Erre írjunk egy függvényt, ami egy kapott stringet a benne lévő nem hangot jelölő karakterek nélkül ad vissza. Ehhez minden karakterét megvizsgálja az előbb elkészített betue
függvénnyel.
def normal(normalando):
normalt = ""
for c in normalando: # Végigmegy a kapott string karakterein
if betue(c): # és csak akkor írja bele a visszaadandó stringbe, ha valóban betű
normalt += c
return normalt
És végül elkészíthetjük a függvényt, amely tetszőleges szöveget felbont szavakra, és megszámolja a hosszukat.
def elemzo(szoveg):
szohossz = list()
for szo in szoveg.split(): # Végigmegy a megvizsgálandó szöveg szavain egyesével.
if len(normal(szo))>0: # Előfordulhat, hogy gépelési hiba, miatt, vagy önmagában álló írásjel miatt lesznek 0 karakterű szavak, ezek nyilvánvalóan nem számítanak
szohossz += [len(normal(szo))] # A szavak hosszát egy listához hozzáadjuk
szohossz = array(szohossz) # Majd a listát tömbbé alakítjuk, hogy a hist függvény kezelni tudja
hist(szohossz, szohossz.max() - szohossz.min() + 1) # És végül ábrázoljuk, annyi oszlopban, ahány különböző szóhossz van
xlabel("szóhossz")
ylabel("gyakoriság")
Most már kipróbálhatjuk a függvényt, nézzük meg a feladatul kapott verset!
anyamtyukja = "Ej mi a kő! tyúkanyó, kend A szobában lakik itt bent? Lám, csak jó az isten, jót ád, Hogy fölvitte a kend dolgát! Itt szaladgál föl és alá, Még a ládára is fölszáll, Eszébe jut, kotkodákol, S nem verik ki a szobábol. Dehogy verik, dehogy verik! Mint a galambot etetik, Válogat a kendermagban, A kiskirály sem él jobban. Ezért aztán, tyúkanyó, hát Jól megbecsűlje kend magát, Iparkodjék, ne legyen ám Tojás szűkében az anyám. – Morzsa kutyánk, hegyezd füled, Hadd beszélek mostan veled, Régi cseléd vagy a háznál, Mindig emberűl szolgáltál, Ezután is jó légy, Morzsa, Kedvet ne kapj a tyúkhusra, Élj a tyúkkal barátságba’... Anyám egyetlen jószága."
elemzo(anyamtyukja)