Namen normalizatorja je, da vse elemente, ki niso zapisani v črkah in v polni obliki, zapiše z besedami (npr. številke, okrajšave, datume, simbole).
Predpogoj za uporabo je nameščen Python v3.9 in pip.
py -m venv env
.\env\Scripts\activate
pip install -r requirements.txt
python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
Glavna metoda se nahaja v direktoriju normalizator
/main_normalization.py
, kliče pa se z metodo normalize_text(text: string)
.
Na primer:
normalize_text("Sodobna definicija Celzijeve temperaturne lestvice, ki velja od leta 1954, je, da je temperatura trojne točke vode enaka 0,01 °C.")
Normalizator vrne rezultat v obliki slovarja (dictionary), in sicer z naslednjimi ključi: input_text
je vhodno besedilo v obliki niza, normalized_text
je normalizirano besedilo v obliki niza, status
je status normalizacije v obliki celega števila in logs
je seznam terk vseh sprememb v obliki (izvirni element, normalizirani element).
{'input_text': 'Sodobna definicija Celzijeve temperaturne lestvice, ki velja od leta 1954, je, da je temperatura trojne točke vode enaka 0,01 °C.',
'normalized_text': 'Sodobna definicija Celzijeve temperaturne lestvice, ki velja od leta tisoč devetsto štiriinpetdeset, je, da je temperatura trojne točke vode enaka nič celih nič ena stopinje Celzija.',
'status': 1,
'logs': [('1954', 'tisoč devetsto štiriinpetdeset'), ('0,01', 'nič celih nič ena'), ('°C', 'stopinje Celzija')]}
Normalizator v izhodu vrne tudi status normalizacije. Statusi so cela števila od -2 do 2. Pomeni posameznega statusa so naslednji:
-2
Težava z normalizacijo vsaj ene povedi.-1
Težava z normalizacijo vsaj enega tokena.0
Normalizacija ni potrebna.1
Normalizacija uspešna.2
Besedilo vsebuje tip tokena, ki potrebuje normalizacijo, vendar še ni podprt.
Opcijsko lahko normalizatorju dodamo polje custom_config
. Če tega parametra ne podamo, se uporabijo osnovne nastavitve (osnovna konfiguracijska datoteka).
Spremeniti je mogoče samo posamezne parametre. Parametri, ki niso definirani, bodo ostali takšni, kot so določeni v osnovni konfiguracijski datoteki (normalizator\config\basic_config.json
).
custom_config={
"abbr":{
"normalize":"true",
"include":{
"lekt.":{
"lektor+lektorica":"NOUN"
}
},
"exclude":[
"dr.",
"mag."
],
"set":[
]
},
"tokenize_sentences":"false"
}
Kategorijam, ki temeljijo na vnaprej definiranem naboru elementov lahko dodamo polje include
, kjer lahko element dodamo v množico ali prepišemo obstoječi element z drugačnim pomenom, kot ga želimo.
Če želimo iz nabora odstraniti elemente, dodamo polje exclude
, kjer določimo ključe, ki naj se iz nabora odstranijo.
Če želimo popolnoma spremeniti nabor, dodamo polje set
, ki bo prepisal obstoječi nabor.
Kategorija številke (v konfiguracijski datoteki pod poljem num
; prednastavljeno True
) je sestavljena iz več podkategorij, in sicer:
cele številke (number
), vrstilni števniki (ordinal_number
), decimalne številke (decimal_number
), ulomki (fraction
), ure (hour
), razdelki (npr. poglavje 3.1.1; section
) rezultati (npr. 1 : 2; result
), telefonske številke (phone_number
), datumi (date
), kjer lahko dodatno izberemo še način izgovorjave meseca (pronunciation_month
) in leta (pronunciation_year
), zapisi kompleksnega trajanja (npr. 2:26,17; complex_duration
), alfanumerični tokeni (alnum
) in številke z znakom krat (times
).
Rimske številke so v konfiguracijski datoteki shranjene pod parametrom roman_numeral
. Prednastavljena nastavitev je True
.
Intervali so v konfiguracijski datoteki shranjeni pod parametrom interval
. Prednastavljena nastavitev je True
.
E-maili so v konfiguracijski datoteki shranjeni pod parametrom email
. Prednastavljena nastavitev je True
.
Simboli so v konfiguracijski datoteki shranjeni pod parametrom symbol
. Prednastavljena nastavitev je True
.
Nabor podprtih simbolov je sledeč:
{
"$":"dolar",
",":"vejica",
"-":"-",
"–":"–",
"_":"podčrtaj",
"%":"odstotek",
"#":"lojtra",
"@":"afna",
"+":"plus",
"×":"krat",
"*":"krat",
"/":"skozi",
":":"dvopičje",
">":"je več kot",
"<":"je manj kot",
"<=":"je manj ali enako",
">=":"je več ali enako",
"=":"je enako",
"√":"koren",
"∑":"vsota",
"¬":"negacija",
"∞":"neskončno",
"≠":"ni enako",
"≡":"je ekvivalentno",
"≪":"je veliko manjše",
"≫":"je veliko večje",
"&":"in",
"∀":"za vsak",
"∃":"obstaja",
"∈":"je element",
"Γ":"veliki gama",
"δ":"veliki delta",
"Δ":"delta",
"π":"pi",
"∏":"produkt",
"σ":"sigma",
"α":"alfa",
"β":"beta",
"γ":"gama",
"ε":"epsilon",
"λ":"lambda",
"ξ":"ksi",
"τ":"tau",
"ψ":"psi",
"ω":"omega",
"≈":"je približno enako",
"±":"plus minus",
"⊆":"je podmnožica",
"⊂":"je prava podmnožica",
"⊄":"ni podmnožica"
}
Enote so v konfiguracijski datoteki shranjene pod parametrom unit
. Prednastavljena nastavitev je True
.
Nabor podprtih enot je sledeč:
{
"dan":"dan",
"mesec":"mesec",
"m2":"kvadratniMeter",
"m3":"kubicniMeter",
"ha":"hektar",
"mol":"mol",
"kcal":"kalorija",
"tbl.":"tableta",
"KM":"konjskaMoc",
"´":"sekunda",
"´´":"minuta",
"˝":"palec",
"‰":"promil",
"B":"bajt",
"min":"minuta",
"m":"meter",
"g":"gram",
"l":"liter",
"L":"liter",
"t":"tona",
"b":"bar",
"N":"newton",
"Pa":"paskal",
"V":"volt",
"W":"vat",
"A":"amper",
"s":"sekunda",
"h":"ura",
"K":"kelvin",
"Hz":"herc",
"J":"džul",
"F":"farad",
"Ω":"ohm",
"°":"stopinja",
"°C":"stopinjaCelzija",
"°F":"stopinjaFahrenheita",
"EUR":"evro",
"SIT":"tolar",
"€":"evro",
"%":"odstotek",
"$":"dolar"
}
Okrajšave so v konfiguracijski datoteki shranjene pod parametrom abbr
. Prednastavljena nastavitev je True
.
Okrajšave se v konfiguracijsko datoteko doda kot ključ {"okrajšava": {"lema1+lema2": "POS"}}
. Če ne želimo, da se okrajšava sklanja, lahko na mesto oznake za POS
, dodamo oznako "FIXED"
.
Nabor okrajšav je sledeč:
{
"g.":{
"gospod":"NOUN"
},
"dr.":{
"doktor+doktorica":"NOUN"
},
"mag.":{
"magister+magistrica":"NOUN"
},
"prof.":{
"profesor+profesorica":"NOUN"
},
"asist.":{
"asistent+asistentka":"NOUN"
},
"doc.":{
"docent+docentka":"NOUN"
},
"ing.":{
"inženir+inženirka":"NOUN"
},
"gdč.":{
"gospodična":"NOUN"
},
"psih.":{
"psiholog+psihologinja":"NOUN"
},
"prim.":{
"primarij+primarijka":"NOUN"
},
"spec.":{
"specialist+specialistka":"NOUN"
},
"kem.":{
"kemik+kemičarka":"NOUN"
},
"št.":{
"številka":"NOUN"
},
"tbl.":{
"tableta":"NOUN"
},
"žl.":{
"žlica":"NOUN"
},
"maks.":{
"maksimalen":"ADJ"
},
"roj.":{
"rojen":"ADJ"
},
"kl.":{
"kliničen":"ADJ"
},
"izr.":{
"izreden":"ADJ"
},
"dipl.":{
"diplomiran":"ADJ"
},
"univ.":{
"univerziteten":"ADJ"
},
"ev.":{
"eventuelen":"ADJ"
},
"pribl.":{
"približno":"ADV"
},
"oz.":{
"oziroma":"ADV"
},
"cca.":{
"cirka":"ADV"
},
"ge.":{
"gospe":"FIXED"
},
"go.":{
"gospo":"FIXED"
},
"el.":{
"elektronski":"ADJ"
},
"čl.":{
"člen":"NOUN"
},
"odst.":{
"odstavek":"NOUN"
},
"sv.":{
"svet":"ADJ"
},
"tj.":{
"to je":"FIXED"
},
"itd.":{
"in tako dalje":"FIXED"
},
"itn.":{
"in tako naprej":"FIXED"
},
"ipd.":{
"in podobno":"FIXED"
},
"npr.":{
"na primer":"FIXED"
},
"ddr.":{
"dvojen_doktor+doktorica":"ADJ_NOUN"
},
"t. i.":{
"tako_imenovan":"ADV_ADJ"
},
"pr. n. št.":{
"pred_našim_štetjem":"FIXED"
}
}
Povezave so v konfiguracijski datoteki shranjene pod parametrom link
. Prednastavljena nastavitev je True
.
Neprepoznani tipi se lahko normalizirajo po principu osnovne normalizacije (znak po znak). Prednastavljena nastavitev je False
.
Če želimo, da se besedilo razbija na povedi, nastavimo parameter tokenize_sentences
na True
. Prednastavljena nastavitev je False
.