1 / 19

Slovník slovenského jazyka

Slovník slovenského jazyka. Riešiteľ: Zuzana Gallová Vedúci projektu: RNDr. Stanislav Krajči, PhD. Cieľ projektu:. Vytvoriť xml súbor ktorý bude obsahovať dáta zo SSJ Vytvoriť dtd súbor. Pre vytvorenie programu bolo potrebné:. zistiť čo môže obsahovať heslová jednotka

nikkos
Download Presentation

Slovník slovenského jazyka

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Slovník slovenského jazyka Riešiteľ: Zuzana Gallová Vedúci projektu: RNDr. Stanislav Krajči, PhD.

  2. Cieľ projektu: • Vytvoriť xml súbor ktorý bude obsahovať dáta zo SSJ • Vytvoriť dtd súbor

  3. Pre vytvorenie programu bolo potrebné: zistiť čo môže obsahovať heslová jednotka definovať výskyt jednotlivých častí heslovej jednotky (napr. výskyt koncoviek) Výsledná štruktúra bola základom pre návrh triedového modelu.

  4. Trieda CSlovnikSlovenskehoJazyka CSlovnikSlovenskehoJazyka=class private HeslovaJednotka: array of CHeslovaJednotka; number:integer; public constructor CREATE; function ANALYZUJ(s:string):boolean; procedure ULOZ(var f:text); end;

  5. CHeslovaJednotka CHeslovaJednotka=class private HesloveSlovo:CHesloveSlovo; Variant:CVariant; NerovnocennyVariant:array of CNerovnocennyCariant; Vyslovnost:CVyslovnost; Odkaz:COdkaz; GramatickaCharakteristika:CGramatickaCharakteristika; Povod:CPovod; Vyznamy:CVyznamy; variantt:boolean; public constructor CREATE; function ANALYZUJ(s:string):boolean; procedure ULOZ(var f:text); end;

  6. Triedy nižšie od heslovej jednotky obsahujú premennú “nastavene” typu boolean. Cautor=class private AutorStr:String; nastavene:boolean; public constructor CREATE; function ANALYZUJ(s:string):boolean; procedure ULOZ(var f:text); end;

  7. Základné procedúry a funkcie procedúra PREPIS - spustí sa celá analýza a prepis - načíta sa celý riadok a po slovách sa posiela na analýzu Každá trieda obsahuje: funkciu analyzuj procedúdu ulož

  8. funkcia ANALYZUJ function CGramatickaCharakteristika.ANALYZUJ(s:string):boolean;  begin    if(Koncovky.ANALYZUJ(s)=true) then      begin        nastavene:=true;        result:=true;        exit;      end;   if(Rod.ANALYZUJ(s)=true) then     begin        nastavene:=true;        result:=true; ... Zložitejšia analýza slova na vstupe sa vykonáva na nižších úrovniach stromu tried, kde sa slovo analyzuje podľa znakov. Napr koncovky.

  9. Procedúra ULOZ Volaním procedúry ULOZ najvyššej triedy, sa rekurzívne volajú procedúry nižších tried na uloženie, kde v najnižších triedach sú uložené príslušné stringy. Procedure CHeslovaJednotka.ULOZ(var f:TEXT);varbegin   writeln(f,' <HESLOVA_JEDNOTKA>');    HesloveSlovo.ULOZ(f);    Vyslovnost.ULOZ(f);    GramatickaCharakteristika.ULOZ(f);     ...  writeln(f,' </HESLOVA_JEDNOTKA>');end;

  10. Implementácia rôznych problémov Určovanie citátov – problémom je zistiť kde citát začína Vo význame sme mali ‘:’ - - môže ísť citát, môže ísť aj popis slova - citát vôbec nemusí byť v riadku - keď ide popis slova, jednotlivé popisy môžu byť oddelené znakom ‘;’tu sa môže stať že za nejakým popisom pôjde citát - na konci popisu môže byť dvojbodka a zase nevieme či ide za ňou citát Citát sa môže nachádzať aj ak nemáme pred ním znak ‘:’.

  11. Riešenie tohto problému: Ak načítam prvé slovo ktoré neviem nikam zaradiť, tak prechádzam daný riadok až kým nenarazím na: -  zátvorku - string v zátvorke skontrolujem - môže ísť o meno autora. Ak ide, tak máme citát ak nie tak ide o obyčajný popis. -  dvojbodku – nejde o citát, možno pôjde ale až za dvojbodkou teraz ide popis -  @ - narazili sme na variant slova, čiže nemáme meno autora, tak nejde o citát -  číslo – môže zaznamenávať, že ide ďalší význam takže nejde o citát Ak sme mali dvojbodku tak môže nasledovať citáta prechádzam daný riadok až kým nenarazím na: -  bodkočiarku - v citáte sa bodkočiarky nenachádzajú takže ide o popis -  zátvorku - skontrolujeme či ide o meno autora  a ak áno tak máme citát, ak nie, skontrolujem ďalšiu zátvorku Za citátom môže ísť ďalší citát.

  12. function CPopis.ANALYZUJ(s:string):boolean;  var j,i,q:integer;  begin             if (s[dlzka]=':') or (s[dlzka]=';') then       begin          AsiCitaty:=true;          for i:=zzac+1 to length(r) do            beginif (r[i]=';') or (r[i]=':') or (r[i]='@') or (r[i] in poradie) then beginCitatNie:=true;AsiCitaty:=false;                                                                       for j:=1 to dlzka do                                              begin veta:=veta+s[j]; end;....

  13. if (r[i]='(') then                                                        begin  p:=i;   while (r[p]<>')') do                                                      begin inc(p);           Aautor:=Aautor+r[p];end;AAAutor:=Form1.ZISTI_AUTORA(Aautor);      if (AAAUtor='<>') then                       begin          CitatNie:=true;          for j:=1 to dlzka do                    begin             veta:=veta+s[j];           end; ....   else              beginCitatNie:=false; for j:=1 to dlzka do                             beginveta:=veta+s[j];end;

  14. Funkcia na rozpísanie mena autora: -keď narazím vo význame na zátvorky, tak daný string pošlem tejto funkcii -dáta sú v súbore v takomto tvare: (Taj.)#Tajovský# while (rrriadok[p]<>'#') do              begin                 zzaznam:=zzaznam+rrriadok[p];                 inc(p);if (zzaznam=s) then                   begin                      inc(p);                      while (rrriadok[p]<>'#') do                          begin result:=result+rrriadok[p];                            inc(p);                         end;

  15. Implementácia variantov: Prvým druhom variantu, môže byť variant, ktorý sa nachádza za heslovým slovom za spojkou ‘i’. Ide len o samostatný tvar variantu bez popisu. pr.: adopcia i @adoptácia@, -ie ž. ... Druhý druh variantu, je variant menejcenný. Ide o zastarané slová a nachádzajú sa v zátvorke s celým popisom slova. Zisťujem to tak, že za zátvorkou je skratka star..Potom volám analýzu gramatickej charakteristiky atď. Pr.: almara i @armara@, -már (star. i almária i armária, -ie, -ií) ž. ľud. ... Ďalším variantom, je variant, ktorý má samostatný popis. -Variant beriem ako novú heslovú jednotku a pri analýze postupujem rovnako. -Pri výpise prídem na to či daný objekt bol pôvodne variant alebo heslové slovo pomocou booleovskej premennej - variant, ktorá zaznamenáva či išlo o variant alebo nie. Pr.: Abdéra, -y ž. mesto v Trácii, starogrécke Kocúrkovo;@Abderita@, -u m. obyvateľ Abdéry;

  16. Výpis variantu alebo heslovej jednotky procedure CHeslovaJednotka.ULOZ(var f:TEXT);  beginif variantt then       writeln(f,' <Variant>')    elsewriteln(f,' <Heslová_jednotka>');      HesloveSlovo.ULOZ(f);      Variant.ULOZ(f);      Vyslovnost.ULOZ(f);      Odkaz.ULOZ(f);      GramatickaCharakteristika.ULOZ(f);      Vyznamy.ULOZ(f);if variantt then     begin        writeln(f,' </Variant>');     end;  end;

  17. Delenie významov na podvýznamy ak ide v popise charakteristika slova ak máme napr. citát a za ním ide iný popis ak máme ľubovoľný popis a niekde za ním je dvojbodka, tak popis pred dvojbodkou je už iný podvýznam

  18. Záver Problémy: zdrojové súbory sú v zlom stave a môže sa stať napr. že namiesto 6. p. (šiesty pád) sa v zdrojovom súbore nachádza in. p. pri načítavaní slov zo vstupu keď sa dostanem na koniec riadku, niekedy to načítava ďalej rôzne znaky množstvo výnimiek v SSJ a tiež slovník dodržiava len najzákladnejšiu štruktúru ktorá je definovaná v úvode, a to nie stále.

More Related