biolab / text-semantics

The package with scripts for semantic analyser project
MIT License
4 stars 5 forks source link

Izroček 2.1: predobdelava in razčlenitev besedil #29

Closed BlazZupan closed 3 years ago

BlazZupan commented 3 years ago

Izroček 2.1: knjižnica in primeri uporabe metod predobdelave besedil, ki ta razčlenijo v nabor besed oziroma pojmov.

PrimozGodec commented 3 years ago

Pripravili smo zvezek/skripto 02-01-document-exploration.ipynb, ki z uporabo obstoječih knjižnic sestavi postopek za predobdelavo besedil.

Ta postopek uporabimo na primeru besedila iz zbirke zakonov o registrih. V skripti pokažemo osnovne statistike besedila po predobdelavi, izpišemo najpogostejših 10 besed in prikažemo najpogostejše besede z oblakom besed.

V nadaljevanju pripravimo knjižnico za predobdelavo, ki iz zakonov odstrani strukturne dele specifične za zakone (predloge, ki so enake v večini zakonskih dokumentov). V zvezku 02-02-preprocessing-results.ipynb primerjamo predprocesiranje brez odstranitve strukturnih delov in z odstranitvijo.

BlazZupan commented 3 years ago

Dela na tem izročku so zaključena.

MLozej commented 3 years ago

Vprašanje: kaj se bo zgodilo, če bodo v prostor (skladišče) prišli novi dokumenti ali pa bodo prišli spremenjeni dokumenti? Ali bo možno pognati predobdelavo samo na novih/spremenjenih dokumentih? Verjetno bo potrebno dokumentom pripisati (meta podatki) tudi čas, ko so prispeli v prostor in na tej osnovi oceniti, kateri so novoejši. Morda tudi oznako, ali so bili že predprocesirani ali ne. S časom se bo struktura meta podatkov prostora še dopolnjevala glede na raznovrstnost uporabe, zato naj bo struktura meta podatkov dovolj fleksibilna (v neki kasnejši verziji, ni nujno da v okviru tega projekta).

mihajMJU commented 3 years ago

Včasih so bile stopwords v datotekah. Vidim, da je sedaj knjižnica. Kako dodajaš/odvzemaš besede, če bi želel/opazil manko? Ali ste kaj poskušali pri tokenizerju z besednimi izrazi, npr. \w+[ -/]\w+ in kako poteka (kako uspešna je) analiza na takih rezultatih?

def _preprocess_corpus(corpus: List[str], language: str) -> List[List[str]]: nltk.download("stopwords", quiet=True) lemmatizer = _get_lemmatizer(language) stop_words = set(stopwords.words(nltk_language(language.lower()))) tokenizer = nltk.RegexpTokenizer("\w+")

PrimozGodec commented 3 years ago

Vprašanje: kaj se bo zgodilo, če bodo v prostor (skladišče) prišli novi dokumenti ali pa bodo prišli spremenjeni dokumenti? Ali bo možno pognati predobdelavo samo na novih/spremenjenih dokumentih? Verjetno bo potrebno dokumentom pripisati (meta podatki) tudi čas, ko so prispeli v prostor in na tej osnovi oceniti, kateri so novoejši. Morda tudi oznako, ali so bili že predprocesirani ali ne. S časom se bo struktura meta podatkov prostora še dopolnjevala glede na raznovrstnost uporabe, zato naj bo struktura meta podatkov dovolj fleksibilna (v neki kasnejši verziji, ni nujno da v okviru tega projekta).

Mislimi, da je najbolje, da se glede tega vprašanja pogovorimo v torek na sestanku. Tole se zelo dobro navezuje na diskusijo, ki bi jo imeli glede točke 1.1 in 1.2.

PrimozGodec commented 3 years ago

Tili vprašanji sta zelo dobri in na mestu.

Včasih so bile stopwords v datotekah. Vidim, da je sedaj knjižnica. Kako dodajaš/odvzemaš besede, če bi želel/opazil manko?

V prototipni fazi (faza 2) smo se odločili, da uporabimo stopworde iz knjižnice. V fazi implementacije (faza 3) pa bo preprocesiranje seveda izvedeno tako, da bo možno uporabiti tudi stopworde iz datotek.

Ali ste kaj poskušali pri tokenizerju z besednimi izrazi, npr. \w+[ -/]\w+ in kako poteka (kako uspešna je) analiza na takih rezultatih?

V tej fazi tega nismo izvajali, bo pa to seveda omogočeno z implementacijo orodja v fazi 3. Iz izkušenj lahko povemo, da je velikokrat pomensko bolj učinkovito uporabiti besedne izraze (pare, trojke). Sevada je vse skupaj odvisno od besedil in naloge, ki jo opravljaš.

BlazZupan commented 3 years ago

Hvala za diskusijo, pripombe naslovimo v tretji fazi, kjer se bomo ukvarjali s tem, kako na najbolj enostaven način dodati stopworde, ki so lahko specifični za posamezen korpus.