The Divvun and Giellatekno teams build language technology aimed at minority and indigenous languages
Formål: byggja eit alternativ til preprocess
og lookup2cg
. Begge perl-skripta inneheld lingvistisk prosessering, og denne
prosesseringa må anten flyttast til andre komponentar (fst eller cg) eller
fjernast heilt.
Saker:
preprocess + lookup -> hfst-proc2
Testsetning:
echo "Svein Holmestrand ozai doarjjaolbmo guovtti diibmui vahkkui, Kárášjoga gielda biehttalii dán veahki addimis. Holmestrand váiddii biehttaleami Finnmárkku Fylkkamánnái, ja oažžu dál logi diimmu doarjjaolbmoveahki." | hfst-proc2 --xerox -w tools/preprocess/preprocessor-gt-desc.pmhfst|l
Testsetning endra til ei kasusform av Kárášjoga gielda, slik at vi får testa at kasusbøygde former fungerer som dei skal:
echo "Svein Holmestrand ozai doarjjaolbmo guovtti diibmui vahkkui, Kárášjoga gielddas biehttalii dán veahki addimis. Holmestrand váiddii biehttaleami Finnmárkku Fylkkamánnái, ja oažžu dál logi diimmu doarjjaolbmoveahki." | hfst-proc2 --xerox -w tools/preprocess/preprocessor-gt-desc.pmhfst
For meir systematisk testing, bruk gullkorpuset:
$GTBIG/gt/sme/corp/sme-goldcorpus.txt
Analyser med både gamalt og nytt oppsett, jamfør utdata.
Nyaste hfst (svn 4228) gjev fleire identiske analyser:
vahkkui vahkku+N+Err/Sub+Sg+Ill 0
vahkkui vahkku+N+Sg+Ill 0
vahkkui vahkku+N+Err/Sub+Sg+Ill 0
vahkkui vahkku+N+Sg+Ill 0
vahkkui vahkat+V+IV+Der/PassS+V+IV+Ind+Prt+Sg3 0
Vi vil bere ha éi, dvs unike analyser.
Bruk skriptet perl $GTHOME/gt/script/sort-cohort.pl
for å sikra at ikkje
skilnader i rekkjefylgja i analysene i kohorten gjev utslag.
Vi har eit problem med longest match og tvetydige punktum:
2010. 2010+A+Ord+Attr 0
dr. Petersen
echo "Fitnodat lea A.S. Nu dat lea." | preprocess --abbr=abbr.txt
Fitnodat
lea
A.S.
.
Nu
dat
lea
.
vs.
echo "Fitnodat lea A.S. ja nu dat lea." | preprocess --abbr=abbr.txt
Fitnodat
lea
A.S.
ja
nu
dat
lea
.
vs.
echo "Fitnodat lea A.S. Nu dat lea." | hfst-proc2 --xerox tools/preprocess/preprocessor-gt-desc.pmhfst
Fitnodat fitnodat+N+Sg+Nom
lea leat+V+IV+Ind+Prs+Sg3
A.S. A.S+N+ABBR+Gen
A.S. A.S+N+ABBR+Acc
A.S. A.S+N+ABBR+Nom
A.S. A.S+N+ABBR+Attr
Nu nu+Adv
dat dat+Pron+Dem+Pl+Nom
dat dat+Pron+Dem+Sg+Nom
dat dat+Pcle
lea leat+V+IV+Ind+Prs+Sg3
. .+CLB
Setningsgrensa forsvann i hfst-proc2
-varianten.
preprocess>echo "Fitnodat lea 20. ja nu dat lea." | preprocess --abbr=abbr.txt
Fitnodat
lea
20.
ja
nu
dat
lea
.
vs
preprocess>echo "Fitnodat lea 20. Nu dat lea." | preprocess --abbr=abbr.txt
Fitnodat
lea
20
.
Nu
dat
lea
.
Vi har med hfst-proc2:
20.
20. 20+A+Ord+Attr 0,000000
Vi vil ha:
20.
20. 20+A+Ord+Attr 0,000000
.+CLB-potensiell
20 20+Num+Sg+Nom 0,000000
.+CLB
Neste
ord
...
og så disambiguerer vi Attr vs Nom avh av CLB og Neste ord..
Tilsvarande kan vi faktisk gjere det med intransitive forkortingar. (Dat lea A.S. Šillju.)
Jf. [http://www.korrekturavdelingen.no/K4Forkortelser.htm]
Mun boađán 20.02 !
Boađátgo 20. ?
Mii háliidit leat a.s!
Mii háliidit leat a.s.!
≠```
Fleire døme:
* Erenomážit boazosápmelaččaid mielas lei dát oahppu dušši, go sin mánát han galggašedje viidásat bargat boazodoaluin. Ja maid vel boazodoalus ge dárogielain, norgga historjjáin, matematihkain jna.?
* Gámasgoikademiin, bassamiin, neaskimiin, vuoidamiin, galle gottura gápmasat ja galle gápmasa ovtta gotturis jna.?
## Bug i hfst-proc2 eller i pmatch-skriptet vårt
Juos gorreválggain => Juos go r r e válggain
og:
rehket-bihtáid =>
rehket- rehket+N+Sem/Money_Txt+SgGenCmp+RCmpnd 0 rehket- rehket+N+Sem/Money_Txt+SgNomCmp+RCmpnd 0
bihtáid bihttá+N+Sem/Part_Prod-cogn+Err/Sub+Pl+Acc 0 bihtáid bihttá+N+Sem/Part_Prod-cogn+Err/Sub+Pl+Gen 0 bihtáid bihttá+N+Sem/Part_Prod-cogn+Pl+Acc 0 bihtáid bihttá+N+Sem/Part_Prod-cogn+Pl+Gen 0
# Lookup2cg
* utfordring: lookup2cg inneheld lingvistikk
* arbeid: flytta lingvistikken over i lingvistiske komponentar
Arbeid framover:
* lookup2cg - vi gjer ingenting med denne
* forskjellar mellom lookup2cg og hfst-proc2
- lemma av derivasjonar (når det kjem samansetjing etter) -> vi ser bort frå denne
- lemma av samansetjingar -> vi ser bort frå denne
- stjerne-POS -> underlesingar + cg-conv
- lokal disambiguering -> vekting + spesifiserte vektklasser
- ...
Handtering av skilnadene:
* sjå bort frå dei (dei er ikkje viktige)
* flytta til fst
* flytta til cg3
* fst+cg-conv (=underlesing)
Døme på mogleg utformat:
echo borrojuvvojin | usme borrojuvvojin borrat+V+TV+Der/PassL+V+IV+Ind+Prt+Sg1
correct$ echo borrojuvvojin | usme | lookup2cg
“
Ciprian vil ha: "borrojuvvot" som lemma, som ikke finnes i FST
Slik, men det er ikke mulig (?):
“
Slik er to etasjar:
“
echo beavdelágan | usme | lookup2cg
“
Ciprian vil ha: "beavdelágan" som lemma, som ikke finnes i FST
evt generere en del av analysen tilbake til FST for å generere et lemma (jf est)
Tre prinsipp:
1. **Vis alt**: Vis all avleiing, og prioriter dynamisk avleiing heller enn leksikaliserte former
1. **Vis ingenting**: Leksikaliser all avleiing dynamisk, stå att med bøyingsmorfologi
1. **Vis leksikon**: Bruk leksikaliserte former, men vis dynamisk avleiing og ikkje lag dynamisk leksikalisering
praktiske bruk:
1. ordbok:
1. vi bruker leksikaliserte former i den grad det finnes som ord i XXX-smX
1. vi bruker Der-taggen og dens lemma for å gi oversetting når vi ikke har ordparet i ordboka
1. MT:
1. vi bruker leksikaliserte former i den grad det finnes som ord i bidix
1. for dem det ikke finnes, bruker vi Der-taggene for å generere tilsvarende i målspråket
1. Korp
1. for å søke på lemmaer er det bra med leksikaliserte former
som *liktenviessu*
1. for å søke på bestemte typer derivasjoner eller produktivitet, trenger vi Der-taggen og rotlemma
1. disambiguering
1. bra å vite derivasjon for en del disambiguering
1. Grammatikkontrollen
Fleire døme:
echo echo liktenbeavdi | usme | lookup2cg
“
echo liktenviessu | usme | lookup2cg
“
correct$ usme geallan geallan geallat+V+TV+PrfPrc geallan geallat+V+TV+Actio+Nom geallan geallat+V+TV+Actio+Gen geallan geallat+V+TV+Ind+Prt+ConNeg geallan geallat+V+TV+Der/NomAct+N+Sg+Nom geallan geallat+V+TV+Der/NomAct+N+Sg+Gen
^C usme geallan geallan geallat+V+TV+PrfPrc geallan geallat+V+TV+Actio+Nom geallan geallat+V+TV+Actio+Gen geallan geallat+V+TV+Ind+Prt+ConNeg geallan geallat+V+TV+Der/NomAct+N+Sg+Nom geallan geallat+V+TV+Der/NomAct+N+Sg+Gen
^C
echo geallanbeavdi | usme | lookup2cg
“
echo geallan | usme | lookup2cg
“
echo divodanbeavdi | usme | lookup2cg
“
echo divodanbeavdi | usme divodanbeavdi divodeapmi+N+SgCmp+Cmp#beavdi+N+Sg+Nom divodanbeavdi divvut+V+TV+Der/d+V+Der/NomAct+N+SgCmp+Cmp#beavdi+N+Sg+Nom divodanbeavdi divodit+V+TV+Der/NomAct+N+SgCmp+Cmp#beavdi+N+Sg+Nom ```