Pärisnimede analüüsi aeglane juht
Closed this issue · 1 comments
Tere!
Seoses Estnltk probleemiga estnltk/estnltk#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?
Õ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.