Szövegfeldolgozás I. INFOÉRA 2006 2006.11.18 Juhász István-Zsakó László: Informatikai képzések a ELTE-n
Szöveges típusok Szöveges típusok (ismétlés) karakter típus INFOÉRA 2006 2006.11.18 Szöveges típusok Szöveges típusok (ismétlés) karakter típus szöveg típus szövegfájl típus (input, illetve output szövegfájl) Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 2
Szöveges típusok Karakterábrázolás INFOÉRA 2006 2006.11.18 Szöveges típusok Karakterábrázolás fix kódhossz (ASCII, EBCDIC, ..., több karakterkészlet) változó kódhossz (pl. morze, Huffman) telex: betű-számváltó UTF-8-ban minden ékezetes magyar betű 2 byte-ot foglal el, míg egyéb speciális karakterek akár ennél hosszabbak is lehetnek. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 3
Szöveges típusok Szövegábrázolás Műveletek fix hossz változó hossz INFOÉRA 2006 2006.11.18 Szöveges típusok Szövegábrázolás fix hossz változó hossz karakterszámmal végjellel (pl. 0 kódú karakter) Műveletek hossz(s) relációk, értékadás + (azaz egymásután írás) Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 4
Szöveges típusok A. A szöveg karakterek tömbje INFOÉRA 2006 2006.11.18 Szöveges típusok A. A szöveg karakterek tömbje indexelés – s(i) B. A szöveg karakterek sorozata első(s), elsőutániak(s), utolsó(s), utolsóelőttiek(s), elejére(s,k), végére(s,k) C. A szöveg szövegekből áll függvények: bal(s,db), jobb(s,db), közép(s,k,db), közép(s,k,v) vagy részképzés – s(a..b), s(a..) , s(..b) Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 5
Szöveges típusok B. A szöveg karakterek sorozata INFOÉRA 2006 2006.11.18 Szöveges típusok B. A szöveg karakterek sorozata Függvény első(s):karakter első:=s(1) Függvény vége. Függvény elsőutániak(s):szöveg t:=’’ Ciklus i=2-től hossz(s)-ig t:=t+s(i) Ciklus vége elsőutániak:=t Függvény elejére(s,k):szöveg elejére:=k+s Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 6
Szöveges típusok C. A szöveg szövegekből áll Függvény bal(s,db):szöveg INFOÉRA 2006 2006.11.18 Szöveges típusok C. A szöveg szövegekből áll Függvény bal(s,db):szöveg t:=’’ Ciklus i=1-től db-ig t:=t+s(i) Ciklus vége bal:=t Függvény vége. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 7
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Fogalmak (azaz új típusok): karakter szó sor lap dokumentum Fogalmak a megjelenítéshez: képsor képlap Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 8
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Szó típus fogalma szó=Sorozat(karakter) Szó típus műveletei: végére(szó,karakter) elejéről(szó,karakter) Ha írásjelek vannak a szövegben, akkor azok tartozzanak az adott szóhoz! Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 9
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Műveletek megvalósítása: Eljárás végére(szó,karakter): szó:=szó+karakter Eljárás vége. Eljárás elejéről(szó,karakter): karakter:=első(szó) szó:=elsőutániak(szó) Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 10
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Sor típus fogalma: sor=Sorozat(szó) Sor típus műveletei: végére(sor,szó) elejéről(sor,szó) Elválasztó jel szavak között: szóköz sorvég Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 11
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Műveletek megvalósítása: Eljárás végére(sor,szó): Ha sor=’’ akkor sor:=szó különben sor:=sor+’ ’+szó Eljárás vége. Eljárás elejéről(sor,szó): szó:=’’ Ciklus amíg sor’’ és első(sor)’ ’ szó:=szó+első(sor); sor:=elsőutániak(sor) Ciklus vége Ha sor’’ akkor sor:=elsőutániak(sor) Eljárás vége. Figyelem! Itt és a későbbi algoritmusokban használt első() és elsőutániak() a szöveg típus műveleteit jelentik! Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 12
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Lap típus fogalma lap=Sorozat(sor) Lap típus műveletei: végére(lap,sor) elejéről(lap,sor) Végjel sorok után: sorvég Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 13
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Műveletek megvalósítása: Eljárás végére(lap,sor): lap:=lap+sor+SORVÉG Eljárás vége. Eljárás elejéről(lap,sor): sor:=’’ Ciklus amíg első(lap)SORVÉG sor:=sor+első(lap); lap:=elsőutániak(lap) Ciklus vége lap:=elsőutániak(lap) Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 14
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Dokumentum típus fogalma dokumentum=Sorozat(lap) Dokumentum típus műveletei: végére(dokumentum,lap) elejéről(dokumentum,lap) Végjel lapok után: lapvég Mi van, ha az utolsó lap után nincs lapvég-jel? Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 15
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Műveletek megvalósítása: Eljárás végére(dokumentum,lap): dokumentum:=dokumentum+lap+LAPVÉG Eljárás vége. Eljárás elejéről(dokumentum,lap): lap:=’’ Ciklus amíg első(dokumentum)LAPVÉG lap:=lap+első(dokumentum) dokumentum:=elsőutániak(dokumentum) Ciklus vége Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 16
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Meggondolandó: mondat típus A mondat szavak sorozata, ahol az utolsó szó utolsó karaktere mondat-vég jel (. vagy ? vagy !). Eljárás végére(sor,mondat,jel): Ha sor=’’ akkor sor:=mondat+jel különben sor:=sor+’ ’+mondat+jel Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 17
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Meggondolandó: mondat típus A mondat szavak sorozata, ahol az utolsó szó utolsó karaktere mondat-vég jel (. vagy ? vagy !). Eljárás elejéről(sor,mondat,jel): mondat:=’’ Ciklus amíg első(sor){’.’,’?’,’!’} mondat:=mondat+első(sor) sor:=elsőutániak(sor) Ciklus vége jel:=első(sor); sor:=elsőutániak(sor) Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 18
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Meggondolandó: Szó típus Az írásjel ne legyen része a szónak! Eljárás elejéről(sor,szó,jel): szó:=’’; jel:=’’ Ciklus amíg sor’’ és első(sor){’ ’}Írásjelek szó:=szó+első(sor); sor:=elsőutániak(sor) Ciklus vége Ha sor’’ akkor Ha első(sor)’ ’ akkor jel:=első(sor); sor:=elsőutániak(sor) sor:=elsőutániak(sor) Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 19
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Műveletek a formázáshoz: ElsőKépsor BalrólLevág JobbrólLevág BalraIgazít JobbraIgazít KözépreIgazít Sorkizárt Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 20
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Műveletek megvalósítása: Eljárás ElsőKépsor(sor,képsor): elejéről(sor,képsor) Ha sor’’ akkor elejéről(sor,X); van:=igaz Ciklus amíg hossz(képsor)+hossz(X)+1KSHOSSZ és van képsor:=képsor+’ ’+X Ha sor’’ akkor elejéről(sor,X) különben van:=hamis Ciklus vége Ha van akkor sor:=X+’ ’+sor Elágazás vége Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 21
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Műveletek megvalósítása: Eljárás BalrólLevág(ks): Ciklus amíg ks’’ és ks(1)=’ ’ ks:=elsőutániak(ks) Ciklus vége Eljárás vége. Eljárás JobbrólLevág(ks): Ciklus amíg ks’’ és ks(hossz(ks))=’ ’ ks:=utolsóelőttiek(ks) Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 22
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Műveletek megvalósítása: Eljárás BalraIgazít(ks): BalrólLevág(ks) Eljárás vége. Eljárás Jobbraigazít(ks): JobbrólLevág(ks) Ciklus amíg hossz(ks)<KSHOSSZ ks:=’ ’+ks Ciklus vége Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 23
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Műveletek megvalósítása: Eljárás KözépreIgazít(ks): BalrólLevág(ks); JobbrólLevág(ks) Ciklus amíg hossz(ks)<KSHOSSZ-1 ks:=’ ’+ks+’ ’ Ciklus vége Ha hossz(ks)<KSHOSSZ akkor ks:=ks+’ ’ Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 24
Szöveges típusok általánosítása INFOÉRA 2006 2006.11.18 Szöveges típusok általánosítása Műveletek megvalósítása: Eljárás Sorkizárt(ks): BalrólLevág(ks); JobbrólLevág(ks) kell:=KSHOSSZ-hossz(ks); db:=Szoszamol(ks)-1 kellplusz:=kell MOD db; kell:=kell DIV db Elejéről(ks,szó,jel); uj:=szó+jel Ciklus i:=1-től db-ig Ha i≤kellplusz akkor uj:=uj+Szöközök(kell+1) különben uj:=uj+Szöközök(kell) Elejéről(ks,szó,jel); uj:=uj+szó+jel Ciklus vége ks:=uj Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 25
Szövegfeldolgozási alapfeladatok INFOÉRA 2006 2006.11.18 Szövegfeldolgozási alapfeladatok Szűrés: egy szövegből vagy szövegfájlból hagyjunk ki bizonyos típusú részeket! Tömörítés: egy szöveget vagy szövegfájlt alakítsunk át úgy, hogy kevesebb helyet foglaljon (valamint alakítsuk vissza)! Keresés: egy szövegben vagy szövegfájlban keressünk egy szöveget! Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 26
Szövegfeldolgozás: szűrés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: szűrés Általános feladat: egy szövegből vagy szövegfájlból hagyjunk ki bizonyos típusú részeket! Lehet kiválogatás, ha egyes karaktereket kell szűrni. Lehet kiválogatás előreolvasással, ha karakter-párokat kell szűrni. Lehet szókeresés, ha szavakat kell szűrni (de ez is lehet kiválogatás). Lehet jelpár keresés, ha páros jelek közötti részt kell szűrni! Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 27
Szövegfeldolgozás: szűrés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: szűrés Szóköz szűrés Példa: Esik az eső Esikazeső Eljárás Szűrés: Nyit(f,g) Ciklus amíg nem FileVége?(f) Olvas(f,kar) Ha kar' ' akkor Ír(g,kar) Ciklus vége Zár(f,g) Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 28
Szövegfeldolgozás: szűrés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: szűrés Szóközcsoport szűrés – a szavak között csak egyetlen szóköz maradjon! Példa: Ugat a kutya Ugat a kutya Eljárás Szűrés: Nyit(f,g) Ciklus amíg nem FileVége?(f) ÚjszóOlvas(f,szó) Ír(g,szó) Ciklus vége Zár(f,g) Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 29
Szövegfeldolgozás: szűrés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: szűrés Lépjük át a szavak előtti szóközöket (és sorvégeket)! Eljárás ÚjszóOlvas(f,szó): Olvas(f,kar) Ciklus amíg kar=’ ’ vagy kar=SORVÉG Ciklus vége szó:=kar Ciklus amíg kar’ ’ és karSORVÉG Olvas(f,kar); szó:=szó+kar Eljárás vége. Most a szó része a szót követő szóköz vagy sorvég is. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 30
Szövegfeldolgozás: szűrés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: szűrés Karakter párok szűrése (pl. <=) – előreolvasás módszere: Eljárás Szűrés: Nyit(f,g); Olvas(f,ekar) Ciklus amíg nem FileVége?(f) Olvas(f,kar) Ha ekar=’<’ és kar=’=’ akkor Olvas(f,ekar) különben Ír(g,ekar); ekar:=kar Ciklus vége Ír(g,ekar); Zár(f,g) Eljárás vége. Figyelem! Az algoritmus kihasználja, hogy minden sor végén van egy sorvégjel. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 31
Szövegfeldolgozás: szűrés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: szűrés Szavak szűrése – egy szó kiírható, ha nincs benne a szűrendők halmazában: Eljárás Szűrés: Nyit(f,g) Ciklus amíg nem FileVége?(f) SzóOlvas(f,szó) Ha szóSzűrendők akkor Ír(g,szó) Ciklus vége Zár(f,g) Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 32
Szövegfeldolgozás: szűrés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: szűrés Páros jelek közöttiek szűrése (pl. {,}) Eljárás Szűrés: Nyit(f,g); Kell:=igaz Ciklus amíg nem FileVége?(f) Olvas(f,kar) Ha kar=’{’ akkor Kell:=hamis különben ha kar=’}’ akkor Kell:=igaz különben ha Kell akkor Ír(g,kar) Ciklus vége Zár(f,g) Eljárás vége. Ez csak akkor működik helyesen, ha nincsenek egymásba ágyazott zárójelpárok. Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 33
Szövegfeldolgozás: szűrés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: szűrés Páros jelek közöttiek szűrése (pl. {,}) Eljárás Szűrés: Nyit(f,g); Db:=0 Ciklus amíg nem FileVége?(f) Olvas(f,kar) Ha kar=’{’ akkor Db:=Db+1 különben ha kar=’}’ akkor Db:=Db-1 különben ha Db=0 akkor Ír(g,kar) Ciklus vége Zár(f,g) Eljárás vége. xx{xx{xx}xx}xx – a teljes belső rész kihagyása nyitott zárójelpárok számának kezelésével Zsakó László: Szövegfeldolgozás 2019.07.04. 19:20 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 34
Szövegfeldolgozás I. előadás vége INFOÉRA 2006 2006.11.18 Juhász István-Zsakó László: Informatikai képzések a ELTE-n