piatok 11. apríla 2008

Hľadanie v korpuse II

Tak trochu neočakávane sa mi dnes podarilo dosiahnu obe položky zo včerajšieho ToDo-listu. Pri jednoduchých vzoroch (napr. pekný) si dokážem vziať všetky potrebné údaje zo vzoru definovaného v Languste. Samozrejme, že ak tam sú komplikovanejšie zmeny vo vzore, tak to bude ešte nemálo roboty, ale zatiaľ to stačí. Napísať tento generátor by nebol až taký problém, keby nie kombinácie Perl & RegExp &Unicode. Samozrejme, že sa mi podarilo dosiahnuť SEGFAULT :( Nakoniec som ich nahradil za prácu s podreťazcami a všetko funguje, aj keď pomalšie.

Keďže už funguje generátor, tak som ho otestoval aj na predložke pre (frekvencia ~700K). Aj keď sa frekvencia zdvihla len o polovicu, tak počet výsledkov sa zdvihol na štvornásobok. Počet false-positive sa zdvihol zo skoro zanedbateľného množstva na priveľa. Neznamená to, že je chyba v algoritme ako sa na prvý pohľad zdá. Ale fakt, že napr. slovo balení by úplne kľudne mohlo byť základným tvarom prídavného mena. Ak by sme mali vo vzoroch aj vysvedčenie, tak by tieto slová mali stále viac než jeden možný vzor a nemali by sme žiaden výsledok. Existuje ešte pár prípadov, kde nám iné slová smú robiť nejaké problémy, ale ich počet je dosť nízky. Tento problém je ešte výraznejší pri podstatných menách, kde vďaka tomu vzniká takmer dokonalý chaos. Úplne rovnaký problém som riešil aj v Languste, kde som sa nakoniec rozhodol, že sa nebudem pokúšať vytvoriť základný tvar slova. Tam som mal, ale využíval len zoznam slovných tvarov, použitie pádov v predložkových väzbách by mohlo výrazne pomôcť.

ToDo:
  • pridať vzor vysvedčenie
  • prepočítať predložky pre a pri [kvôli novému vzoru]
  • pridať ďalšiu predložky a vyskúšať, že aký má zmysel spájať medzivýsledky

Žiadne komentáre: