Filosoft / vabamorf

Eesti keele morfanalüsaator
Other
24 stars 14 forks source link

Pärisnimede analüüsi aeglane juht #24

Closed tpetmanson closed 8 years ago

tpetmanson commented 8 years ago

Tere!

Seoses Estnltk probleemiga https://github.com/estnltk/estnltk/issues/55 tekkis probleem, et analüüs koos pärisnimede tuvastamisega on väga aeglane kui tekstis on suur hulk kinniminevaid(?) sulge ")".

Võimalik, et kinnise sulu korral käivitub mingi funktsioon, mis otsib lausest midagi eespoolt, võttes arvestatava hulga aega.

$ time ./etana analyze -guess -propername -phonetic -lex et.dct -in sulgudeta.json -out sulgudeta_out.json

real    0m0.146s
user    0m0.120s
sys 0m0.004s

$ time ./etana analyze -guess -propername -phonetic -lex et.dct -in sulgudega.json -out sulgudega_out.json

real    0m14.278s
user    0m14.216s
sys 0m0.008s

$ time ./etana analyze -guess -phonetic -lex et.dct -in sulgudega.json -out sulgudega_out.json

real    0m0.201s
user    0m0.144s
sys 0m0.008s

Siin on sisendfailid, millega probleem tekkis: sulgudega.json.txt sulgudeta.json.txt

Seega küsiimus, et kas seda saab kuidagi parandada või on ainus võimalus -propername lippu mitte kasutada?

merisiga commented 8 years ago

Õige viis seda olukorda vältida oleks õige lausestamine; praegu katsetati morf analüüsi 1000-sõnalise lause peal. Probleem ilmnes tõesti pärisnimede oletamise kontekstis, mille puhul püütakse aru saada, kas suure tähega algav sõna asub lause keskel (siis võiks ta olla nimi) või lause alguses (siis võiks ta olla ka tavasõna). Asi on selles, et kui lause algab numbriga, nagu loetelu puhul, nagu näiteks 1.1) või 1. siis sellele järgnev sõna on justkui lause keskel, aga tegelikult peab ta ikkagi algama suure tähega, kuigi pole nimi... Seega peab iga suurtähelise sõna puhul kontrollima, kas ta on päriselt lause keskel või ainult justkui lause keskel. Seda tehti nii, et vaadati lõpetavast sulust ettepoole kuni lause alguseni, et leida, kas eespool on midagi muud kui numbrid või sulud või punkt. Kui pole, siis on tegemist loetelu algusega ja jooksev suurtäheline sõna on justkui lause alguses. Praegu sai probleem lahendatud sellega, et ei vaadata tagasi enam lause alguseni, vaid ainult kuni on selge, et tegemist pole loetelu alguseks sobiva märgijadaga.