diff --git a/nemo_text_processing/text_normalization/sv/data/abbreviations/__init__.py b/nemo_text_processing/text_normalization/sv/data/abbreviations/__init__.py new file mode 100644 index 000000000..6ebc808fa --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/abbreviations/__init__.py @@ -0,0 +1,13 @@ +# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/nemo_text_processing/text_normalization/sv/data/abbreviations/case_insensitive.tsv b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_insensitive.tsv new file mode 100644 index 000000000..9e9a46b87 --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_insensitive.tsv @@ -0,0 +1,168 @@ +AlkhL Alkohollagen +AnstF anställningsförordningen +AnstF:s anställningsförordningens +ArkivF Arkivförordningen +AvbetköpL Avbetalningsköplagen +BokfL Bokföringslagen +Co. kompani +CoQ10 koenzym Q 10 +DelgL:s delgivningslagens +DepCh departementschef +DiskrL diskrimineringslagen +FiskeL fiskelagen +FullmL Lagen om fullmaktsanställning +FörfSamlF författningssamlingsförordningen +HSjvL Hälso och sjukvårdslagen +HyresfL lagen om förvärv av hyresfastighet +HyresftL lagen om förvärv av hyresfastighet +HögskF Högskoleförordningen +HögskL Högskolelagen +Ibid. Ibidem +JustR justitieråd +K. Instr kunglig instruktion +KKöpL Konsumentköplagen +KTjL konsumenttjänstlagen +KamR Kammarrätten +KamR:s Kammarrättens +Kebbe-förl Kebbe-förlaget +KomL Kommunallagen +KomL:s Kommunallagens +KonkurrensL konkurrenslagen +KulturmL Lagen om kulturminnen +KulturmL:s Lagen om kulturminnens +Kungl Maj:t kungliga majestät +Kungl Maj:ts kungliga majestäts +Kungl. Maj:t kungliga majestät +Kungl. Maj:ts kungliga majestäts +KökrkL Körkortslagen +KökrkL:s Körkortslagens +KörkF Körkortsförordningen +LKAvg Lagen om rätt för kommun att ta ut avgift +LSTInstr Förordning med länsstyrelseinstruktion +LivsmL Livsmedelslagen +LivsmL:s Livsmedelslagens +LösdrL lösdriverilagen +MedbL Lagen om svenskt medborgarskap +MedbL:s Lagen om svenskt medborgarskaps +Mme madame +MyndF Myndighetsförordningen +NamnL Namnlagen +PartnerL partnerlagen +PolisF polisförordningen +PreskL preskriptionslagen +PreskrL preskriptionslagen +RättsprL Rättsprövningslagen +SBetL Skattebetalningslagen +SkolL Skollagen +TullL tullagen +US$ US-dollar +VitesL Viteslagen +VägL Väglagen +VägmF Vägmärkesförordningen +a st. anfört ställe +adr. adress +adv. adverb +agr. agronomie +al.fälgar aluminiumfälgar +alufälg aluminiumfälgar +arbetsmarkn.pol arbetsmarknadspolitisk +art nr artikelnummer +avg. avgift +begr.byrå begravningsbyrå +beh. behandling +behandl. behandling +behanl behandling +best nr beställningsnummer +chefsexp chefsexpedition +chefsexp. chefsexpedition +d:o dito +dens. densamma +dep chef departementschef +dep sek departementssekreterare +dep. chef departementschef +dep. chefen departementschefen +dep. sekreterare departementssekreterare +dep.chef departementschef +dep.chefen departementschefen +dep.sekreterare departementssekreterare +doc. docent +dw dödvikt +e.t.c. etcetera +ekon. ekonomie +el dyl. eller dylikt +el. eller +eng. engelska +epist. epistel +ex. exempel +fig. figur +fjv fjärrvärme +fr a. framför allt +fr. från +fre-sön fredag till söndag +fred-sönd fredag till söndag +frfattare författare +följ. följande +förf.s författarens +förf:a författarna +förf:na författarna +förf:nas författarnas +förf:s författarens +hovr. hovrätt +i sht. i synnerhet +inv/km2 invånare per kvadratkilometer +isht i synnerhet +jmftal jämförelsetal +jr junior +jur. juris +jur.utr. juris utriusque +k:a kyrka +kand. kandidat +km:s kilometers +kostn. kostnad +kr/kg kronor per kilo +kr/m2 kronor per kvadratmeter +kr/månad kronor per månad +kr/styck kronor styck +kr/år kronor per år +kton kiloton +leg. legitimerad +lic. licentiat +lig. ligament +mag. magister +maj:t majestät +maj:ts majestäts +mbar millibar +mdkr miljarder kronor +min övers. min översättning +ml/l milliliter per liter +mm³ kubikmillimeter +mnkr miljoner kronor +mom. moment +nr/år nummer per år +omm om och endast om +op. opus +ord pris ordinarie pris +ord. pris ordinarie pris +ord.pris ordinarie pris +pat.avg. patientavgift +pers. person +rec. recension +reg. register +rev. reviderad +s:a summa +sign. signatur +spec. speciell +startförp. startförpackning +startförpackn startförpackning +stud. studerande +t e x till exempel +tab. tabell +tekn. teknologie +tel. telefon +tel: telefon +temp. temperatur +teol. teologie +tkr/månad tusen kronor per månad +tkronor tusen kronor +vs. versus +överkl.nämnd överklagarnämnd diff --git a/nemo_text_processing/text_normalization/sv/data/abbreviations/case_insensitive_alternatives.tsv b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_insensitive_alternatives.tsv new file mode 100644 index 000000000..42d6d4fb1 --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_insensitive_alternatives.tsv @@ -0,0 +1,21 @@ +Ibid. på samma sida +adj. adjektiv +bearb. bearbetade +ev. eventuell +ex. exemplar +fr. fru +fr. fröken +omarb. omarbetade +omm ekvivalent +red. redaktörer +red. redigerad +red. revision +rev. revision +sign. signum +suppl. supplement +tekn. tekniska +tkr. tusental kronor +tkronor tusental kronor +trol. trolovad +utg. utgivare +övers. översättare diff --git a/nemo_text_processing/text_normalization/sv/data/abbreviations/case_insensitive_opt_dot.tsv b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_insensitive_opt_dot.tsv new file mode 100644 index 000000000..993fac142 --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_insensitive_opt_dot.tsv @@ -0,0 +1,336 @@ +Drottningg Drottninggatan +Engl England +Frankf Frankfurt +Friedr Friderich +Hantverkarg Hantverkargatan +Hornsg Hornsgatan +LL-förl LL-förlaget +Läkartidn Läkartidningen +Pirat-förl piratförlaget +Sveav Sveavägen +Söderk Söderköping +TPB-nr TPB-nummer +Tunnbindareg Tunnbindaregatan +a. st anfört ställe +a.st anfört ställe +adj adjunkt +ak. avh akademisk avhandling +akad. avh akademisk avhandling +allm allmän +ankomstnr ankomstnummer +anläggn anläggning +anm anmärkning +anmärkn anmärkning +anskaffn anskaffning +anst anställning +anstnr anställningsnummer +arb arbete +art. nr artikelnummer +art.nr artikelnummer +artikelnr artikelnummer +artnr artikelnummer +avd avdelning +avh avhandling +bakgr bakgrund +bearb bearbetad +begravn begravning +best. nr beställningsnummer +best.nr beställningsnummer +bestnr beställningsnummer +beställn beställning +betaln betalning +betr beträffande +bg bankgiro +bitr biträdande +bl a bland annat +bl. a bland annat +bl.a bland annat +bokförl bokförlag +brottsbal brottsbalken +bränsleförbr bränsleförbrukning +budgetprop budgetproposition +civ ek civilekonom +civ ing civilingenjör +civ. ek civilekonom +civ. ing civilingenjör +d v s det vill säga +d. v. s det vill säga +d.v.s det vill säga +dagl dagligen +delnr delnummer +deltävl deltävling +dep. sek departementssekreterare +dep.sek departementssekreterare +dgr dagar +diagr diagram +div diverse +dnr diarienummer +dopgtj dopgudstjänst +dvs det vill säga +e Kr efter Kristus +e dyl eller dylikt +e. Kr efter Kristus +e. dyl eller dylikt +e.Kr efter Kristus +e.dyl eller dylikt +eftr efterträdare +ekonomprogr ekonomiprogram +el. dyl eller dylikt +el.dyl eller dylikt +elitutb elitutbildning +et al med flera +et. al med flera +etc etcetera +ev eventuellt +ex vis exempelvis +ex. vis exempelvis +exkl exklusive +exv exempelvis +exvis exempelvis +f Kr före Kristus +f. Kr före Kristus +f. v. b för vidare befordran +f.Kr före Kristus +f.v.b för vidare befordran +fil cand filosofie kandidat +fil dr filosofie doktor +fil lic filosofie licentiat +fil mag filosofie magister +fil. cand filosofie kandidat +fil. dr filosofie doktor +fil. lic filosofie licentiat +fil. mag filosofie magister +fil.cand filosofie kandidat +fil.dr filosofie doktor +fil.lic filosofie licentiat +fil.mag filosofie magister +fortf fortfarande +forts fortsättning +fr o m från och med +fr. a framför allt +fr. o. m från och med +fr.a framför allt +fr.o.m från och med +fr.om från och med +fskr festskrift +fvb för vidare befordran +färgill färgillustration +föreg föregående +förest föreståndare +förf författare +försl förslag +försäkr försäkring +försälj försäljning +förv. arb förvärvsarbete +förv.arb förvärvsarbete +förvärvsarb förvärvsarbetande +geriatr geriatriska +ggr gånger +hg hekto +hovr hovrätt +hänv hänvisning +högskoleutb högskoleutbildning +högskoleutbildn högskoleutbildning +i o f s i och för sig +i o. f. s i och för sig +i st. f i stället för +i st.f i stället för +i.o.f.s i och för sig +i.st.f i stället för +infonr infonummer +inkl inklusive +inkomstfr inkomstfrämjande +inköpsnr inköpsnummer +inst. f institutionen för +inv invånare +iofs i och för sig +jfr jämför +jmf jämför +jmfr jämför +jourtfn jourtelefon +kommunfullm kommunfullmäktige +kompetensutv kompetensutveckling +kongl kongelige +kr kronor +kr/st kronor styck +krm kryddmått +kulturdep kulturdepartementet +kundtelnr kundtelefonnummer +köksutr köksutrustning +licensnr licensnummer +lärarutb lärarutbildning +löneutv löneutveckling +löpnr löpnummer +m a o med andra ord +m fl med flera +m m med mera +m. a. o med andra ord +m. fl med flera +m. m med mera +m.a.o med andra ord +m.e.m mer eller mindre +m.fl med flera +m.v.h med vänlig hälsning +medförf medförfattare +medl medlem +mfl med flera +mkr miljoner kronor +mkt mycket +mnkr miljoner kronor +motsv motsvarande +msek miljoner svenska kronor +mvh med vänlig hälsning +målgr målgrupp +målnr målnummer +möjl möjligen +ngt något +nuv nuvarande +nybes nybesiktad +näml nämligen +näringsdep näringsdepartementet +närv närvarande +o d och dylikt +o dyl och dylikt +o s v och så vidare +o. s. v och så vidare +o.s.v och så vidare +obesk obeskattad +obet obetald +obs observera +odont odontologie +officersutb officersutbildning +omarb omarbetad +omkr omkring +onsd onsdag +op cit i anfört arbete +op. cit i anfört arbete +op.cit i anfört arbete +opubl opublicerad +ordertel ordertelefon +ordertlf ordertelefon +ordf ordförande +orig original +osign osignerad +ospec ospecificerad +osv och så vidare +p g a på grund av +p gr a på grund av +p. g. a på grund av +p. gr. a på grund av +p.g.a på grund av +p.gr.a på grund av +pat avg patientavgift +pat. avg patientavgift +pediatr pediatrik +personnr personnummer +pga på grund av +pkt paket +plac placering +pocketuppl pocketupplaga +postnr postnummer +prof professor +prog program +progr program +prop proposition +psalt Psaltaren +pseud pseudonym +publ publikation +påfölj påföljande +radnr radnummer +rangnr rangnummer +rapportnr rapportnummer +red redaktör +repr repris +resp respektive +revsekr revisionssekreterare +revuppl revisionsupplaga +rundskr rundskrivelse +rundskriv rundskrivelse +s. a. s så att säga +s.a.s så att säga +samtl samtliga +sedv sedvanlig +sekr sekreterare +serviceorg serviceorganisation +sjukd sjukdom +sjuksköt sjuksköterska +sjukv sjukvård +socialdemokr socialdemokratiska +soffgr soffgrupp +spec ped specialpedagog +spec. ped specialpedagog +spec.ped specialpedagog +specialped specialpedagog +spårnr spårnummer +startm startmotor +stl storlek +studentlitt studentlitteratur +studieförb studieförbund +suppl suppleant +sv. övers svensk översättning +sängb sängbord +sänkn sänkning +särsk särskilt +t ex till exempel +t o m till och med +t. e. x till exempel +t. o. m till och med +taknr taknummer +tandvb tandvårdsbyrån +tel nr telefonnummer +tel. nr telefonnummer +tel.nr telefonnummer +telefon-nr telefonnummer +telefonnr telefonnummer +telnr telefonnummer +temanr temanummer +tex till exempel +texttfn texttelefon +tfn telefon +tfn nr telefonnummer +tfn. nr telefonnummer +tfn.nr telefonnummer +tfnnr telefonnummer +tidn tidning +tidskr tidskrift +tidsskr tidsskrift +tillb tillbehör +tillg tillgång +tillh tillhör +tjf tjänsteförrättare +tjl tjänstledig +tkr tusen kronor +trol troligen +trpt transport +träningslgh träningslägenhet +tävl tävling +u p a utan personligt ansvar +u. p. a utan personligt ansvar +u.p.a utan personligt ansvar +udg udgave +univ universitet +uppdr uppdrag +upphandl upphandling +urspr ursprungligen +ursprungl ursprungligen +utb utbildning +utbildn utbildning +utg utgiven +uth uthyres +utl utländsk +vanl vanligen +varusmugglingssl varusmugglingslagen +verksamh verksamhet +vindistr vindistrikt +vol volym +vuxenutb vuxenutbildning +vx växel +webbnr webbnummer +ytterl ytterligare +yttr yttrande +årg årgång +åtg åtgärd +ökn ökning +övers översättning +övn övning +övr övrigt diff --git a/nemo_text_processing/text_normalization/sv/data/abbreviations/case_sensitive.tsv b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_sensitive.tsv new file mode 100644 index 000000000..f8194bee3 --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_sensitive.tsv @@ -0,0 +1,176 @@ +AckL ackordslagen +ActL lagen om avtal och andra rättshandlingar på förmögenhetsrättens område +AnlL anläggningslagen +AnmL Anmälningsskyldighetslagen +ArkF Arkivförordningen +ArkivL Arkivlagen +AvbetKL lagen om avbetalningsköp mellan näringsidkare +AvbetLN lagen om avbetalningsköp mellan näringsidkare +AvgF avgiftsförordningen +AvtL avtalslagen +AvtvillkL Lagen om avtalsvillkorslag i konsumentförhållanden +BVerfG Bundesverfassungsgericht +BVerfGE Entscheidungen des Bundenverfassungerichts +BehL Behandlingslagen +BehandlL Lagen om behandling av häktade och anhållna med flera +BetsL Betalningssäkringslagen +BoU bostadsutskottet +BrB brottsbalken +BrB:s brottsbalkens +BrL Brottsskadelagen +BrP Lagen om införande av brottsbalken +ChL checklagen +CheckL Checklagen +CsSkr Centralstyrelsens skrivelse +DataF Dataförordningen +DelgF Delgivningsförordningen +DelgL Delgivningslagen +DelgivnL Delgivningslagen +DepL depositionslagen +DjsL Djurskyddslagen +DlgL Delgivningslagen +DsJu Departementsserien, Justitiedepartementet +DödnL dödningslagen +EGTullK EG tull K +EkomL Lagen om elektronisk kommunikation +ErFL Lagen om ersättningsfonder +ErsL Ersättningslagen +Exml Expansionsmedelslagen +ExpL Expropriationslagen +ExprL Expropriationslagen +Exprk Expropriationskungörelsen +F d föredetta +FVIII faktor åtta +FiU finansutskottet +FingeravtrycksF Fingeravtrycksförordningen +FirmaL firmalagen +FrämjandeL Främjandelagen +FtaxL Fastighetstaxeringslagen +FvL Förvaltningslagen +FvPrL Förvaltningsprocesslagen +FöU försvarsutskottet +GUtlL gamla utlänningslagen +GåvoL Gåvolagen +HovR hovrätten +HovR:n hovrätten +HovR:ns hovrättens +HskL Hälsoskyddslagen +IndrivningsF Indrivningsförordningen +InkassoL Inkassolagen +InsiderL Insiderlagen +InstrRPS Förordning med instruktion för RPS +InstrRÅ Förordning med instruktion för riksåklagaren +Ju-dep justitiedepartementet +JuU Justitieutskottet +JvSL Järnvägssäkerhetslagen +JvTrL Järnvägstrafiklagen +JämL jämställdhetslagen +K.prop. Kunglig proposition +KKL Konsumentköplagen +KRes Kunglig Resolution +KSkr Kunglig Skrivelse +KamrR kammarrätten +KamrR:s kammarrättens +Kförkl Kunglig förklaring +KkL Körkortslagen +KkrL Konsumentkreditlagen +KommL kommissionslagen +KonkL Konkurslagen +KonsTjL Konsumenttjänstlagen +KrU Kulturutskottet +KskL Kommunalskattelagen +Ku-dep kulturdepartementet +KungL Kungörandelagen +KöpL köplagen +LSt:s Länsstyrelses +LagR Lagrådet +Lst Länsstyrelsen +MSkL Miljöskadelagen +Mc mac +MiljöB Miljöbalken +MiljöB:s Miljöbalkens +NUtlL nya utlänningslagen +NoK Natur och kultur +NyttjL lagen om nyttjanderätt till fast egendom +OffSekrL offentlighets- och sekretesslagen +PbrL Lagen om pantbrevsregister +PolL polislagen +PolL:s Polislagens +PolisL polislagen +ProkuraL Prokuralagen +RBKomm Kommentar till rättegångsbalken +RegF Regeringsformen +RegR regeringsrätten +RegR:s Regeringsrättens +RhjF Rättshjälpsförordningen +RhjL Rättshjälpslagen +Ridd.O Riddarhusordningen +RomF Romfördraget +RtjL Räddningstjänstlagen +RänteL räntelagen +SEK svenska kronor +SamboL Lagen om sambors gemensamma hem +SamägarL Lagen om samäganderätt +SekrF Sekretessförordningen +SekrL sekretesslagen +SekrL:s Sekretesslagens +SemL Semesterlagen +ServL Lagen om servitut +SjöL Sjölagen +SkBrL Skattebrottslagen +SkL Skadeståndslagen +SkU skatteutskottet +SkadestL Skadeståndslagen +SkadestL:s Skadeståndslagens +SkbrL skuldebrevslagen +SkkL Skogskontolagen +SksanL skuldsaneringslagen +SkstL skadeståndslagen +SmittskL Smittskyddslagen +SmittskL:s Smittskyddslagens +SoF Socialtjänstförordningen +SoL Socialtjänstlagen +SoL:s Socialtjänstlagens +SoU socialutskottet +SofL Socialförsäkringslagen +StsSkl Strålskyddslagen +SvJT Svensk Juristtidning +TR:n tingsrätten +TR:ns tingsrättens +TaxL Taxeringslagen +TaxL:s Taxeringslagens +TeleL Telelagen +Tr.F Tryckfrihetsförordningen +Tr.O Tryckfrihetsförordningen +TrF Trafikförordningen +TrF:s Trafikförordningens +TraF Trafikförordningen +TraF:s Trafikförordningens +TrafikF Trafikförordningen +TrafikF:s Trafikförordningens +TskL Trafikskadelagen +TvL Lagen om särskilda tvångsåtgärder i beskattningsförfarandet +UbU Utbildningsutskottet +UpphL upphovsrättslagen +UtlF Utlänningsförordningen +UtlL utlänningslagen +UtlL:s Utlänningslagens +ValL:s Vallagens +VerksF Verksförordningen +VerksF:s Verksförordningens +VxL Växellagen +a.d. anno domini +c:a cirka +dBA decibel +e l. eller liknande +eg. egentligen +eo. extra ordinarie +f d. föredetta +fn. för närvarande +sr. senior +valL vallagen +ÄgofrL Lagen om ägofred +ÄktB Äktenskapsbalken +ÄktP Lagen om införande av äktenskapsbalken +ÄrendeL Lagen om domstolsärenden +ÅklF Åklagarförordningen diff --git a/nemo_text_processing/text_normalization/sv/data/abbreviations/case_sensitive_alternatives.tsv b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_sensitive_alternatives.tsv new file mode 100644 index 000000000..c8da639e0 --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_sensitive_alternatives.tsv @@ -0,0 +1,2 @@ +e. u. enligt uppdrag +e.u. enligt uppdrag diff --git a/nemo_text_processing/text_normalization/sv/data/abbreviations/case_sensitive_opt_dot.tsv b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_sensitive_opt_dot.tsv new file mode 100644 index 000000000..fdaceb265 --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/abbreviations/case_sensitive_opt_dot.tsv @@ -0,0 +1,41 @@ +Ca cirka +F. d föredetta +Fd föredetta +Sc.St.L Scandinavian Studies in Law +ca cirka +d. y den yngre +d. ä den äldre +d.y den yngre +d.ä den äldre +e. l eller liknande +e. o extra ordinarie +e. u enligt uppgift +e.c e contrario +e.l eller liknande +e.o extra ordinarie +e.u enligt uppgift +f. d föredetta +f. n för närvarande +f. ö för övrigt +f.n för närvarande +f.ö för övrigt +fd föredetta +ff och följande sidor +fg föregående +interp interpellation +o. a och andra +o.a och andra +rskr riksdagsskrivelse +u. a utan anmärkning +u. o utan ort +u. å utan årtal +u.a utan anmärkning +u.o utan ort +u.å utan årtal +ua utan anmärkning +uo utan ort +uå utan årtal +ö. g över gården +ö. h över havet +ö.g över gården +ö.h över havet diff --git a/nemo_text_processing/text_normalization/sv/data/abbreviations_nondet.tsv b/nemo_text_processing/text_normalization/sv/data/abbreviations/nondeterministic.tsv similarity index 100% rename from nemo_text_processing/text_normalization/sv/data/abbreviations_nondet.tsv rename to nemo_text_processing/text_normalization/sv/data/abbreviations/nondeterministic.tsv diff --git a/nemo_text_processing/text_normalization/sv/data/math_operations.tsv b/nemo_text_processing/text_normalization/sv/data/math_operations.tsv index ce51d4154..20c4c3bc9 100644 --- a/nemo_text_processing/text_normalization/sv/data/math_operations.tsv +++ b/nemo_text_processing/text_normalization/sv/data/math_operations.tsv @@ -1,8 +1,10 @@ + plus ++/- plus minus +± plus minus - minus / delad ÷ delad : delad × gånger * gånger -· gånger \ No newline at end of file +· gånger diff --git a/nemo_text_processing/text_normalization/sv/data/measure/unit.tsv b/nemo_text_processing/text_normalization/sv/data/measure/unit.tsv index e0e2af1fe..d40217315 100644 --- a/nemo_text_processing/text_normalization/sv/data/measure/unit.tsv +++ b/nemo_text_processing/text_normalization/sv/data/measure/unit.tsv @@ -21,6 +21,7 @@ cu mi kubikmil cwt centner da atommassenhet db decibel +dl deciliter dm2 kvadratdecimeter dm² kvadratdecimeter dm3 kubikdecimeter @@ -112,6 +113,7 @@ ms millisekund Mv megavolt mv millivolt mw megawatt +mwh megawattimme nm nanometer ns nanosekund ºc celsiusgrad @@ -134,6 +136,8 @@ TB terabyte tim timme tj terajoule tl teraliter +tsk tesked +twh terawattimme " tum v volt YB yottabyte @@ -145,3 +149,31 @@ zj zettajoule μs mikrosekund ω ohm msk matsked +cl centiliter +hpa hektopascal +hPa hektopascal +kbit kilobit +kHz kilohertz +kJ kilojoule +kV kilovolt +kWh kilowattimme +kcal/dag kilokalori per dag +kcal/gram kilokalori per gram +l liter +lx lux +mbyte megabyte +mm vp millimeter vattenpelare +mmhg millimeter kvicksilver +mmHg millimeter kvicksilver +mmol millimol +mwel megawatt el +nmol nanomol +personkm personkilometer +pmol pikomol +twhel terawattimme el +twhkyla terawattimme kyla +twhvärme terawattimme värme +µm mikrometer +kvm kvadratmeter +m.ö.h meter över havet +mö.h meter över havet diff --git a/nemo_text_processing/text_normalization/sv/data/measure/unit_neuter.tsv b/nemo_text_processing/text_normalization/sv/data/measure/unit_neuter.tsv index 0ca4d4e3c..da70c6b60 100644 --- a/nemo_text_processing/text_normalization/sv/data/measure/unit_neuter.tsv +++ b/nemo_text_processing/text_normalization/sv/data/measure/unit_neuter.tsv @@ -1,3 +1,4 @@ +dg decigram g gram kg kilogram kp kilopond @@ -11,3 +12,5 @@ pg petagram rpm varv per minut varv/min varv per minut μg mikrogram +cg centigram +mikrog mikrogram diff --git a/nemo_text_processing/text_normalization/sv/data/measure/unit_optional_dot.tsv b/nemo_text_processing/text_normalization/sv/data/measure/unit_optional_dot.tsv new file mode 100644 index 000000000..5ec5bf9f1 --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/measure/unit_optional_dot.tsv @@ -0,0 +1 @@ +cal kalori diff --git a/nemo_text_processing/text_normalization/sv/data/measure/unit_plural.tsv b/nemo_text_processing/text_normalization/sv/data/measure/unit_plural.tsv index 1e7d79aa9..654dbc610 100644 --- a/nemo_text_processing/text_normalization/sv/data/measure/unit_plural.tsv +++ b/nemo_text_processing/text_normalization/sv/data/measure/unit_plural.tsv @@ -9,6 +9,8 @@ celsiusgrad celsiusgrader centimeter centner decibel +decigram +deciliter decimeter decisekund decisekunder elektronvolt @@ -76,6 +78,7 @@ megasekund megasekunder megasiemens megavolt megawatt +megawattimme megawattimmar meter mikrogram mikrometer @@ -106,6 +109,8 @@ radian radianer sekund sekunder sievert terabyte +terawattimme terawattimmar +tesked teskedar terajoule teraliter timme timmar @@ -119,3 +124,24 @@ yottajoule zettabyte zettajoule matsked matskedar +centigram +centiliter +hektopascal +kilobit per sekund +kalori kalorier +kilokalori per dag kilokalorier per dag +kilokalori per gram kilokalorier per gram +liter +lux +megawatt el +megabyte +meter över havet +millimeter kvicksilver +millimeter vattenpelare +millimol +nanomol +personkilometer +pikomol +terawattimme el terawattimmar el +terawattimme kyla terawattimmar kyla +terawattimme värme terawattimmar värme diff --git a/nemo_text_processing/text_normalization/sv/data/reference/__init__.py b/nemo_text_processing/text_normalization/sv/data/reference/__init__.py new file mode 100644 index 000000000..6ebc808fa --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/reference/__init__.py @@ -0,0 +1,13 @@ +# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/nemo_text_processing/text_normalization/sv/data/reference/cardinal.tsv b/nemo_text_processing/text_normalization/sv/data/reference/cardinal.tsv new file mode 100644 index 000000000..fc26c067c --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/reference/cardinal.tsv @@ -0,0 +1,6 @@ +§ paragraf +art artikel +kap kapitel +mom moment +s sida +st stycke diff --git a/nemo_text_processing/text_normalization/sv/data/reference/cardinal_nondeterministic.tsv b/nemo_text_processing/text_normalization/sv/data/reference/cardinal_nondeterministic.tsv new file mode 100644 index 000000000..7e57c1c1d --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/reference/cardinal_nondeterministic.tsv @@ -0,0 +1 @@ +kl klass diff --git a/nemo_text_processing/text_normalization/sv/data/reference/ordinal_common.tsv b/nemo_text_processing/text_normalization/sv/data/reference/ordinal_common.tsv new file mode 100644 index 000000000..ea5c97366 --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/reference/ordinal_common.tsv @@ -0,0 +1,4 @@ +§ paragrafen paragraf +art artikeln artikel +kl klassen klass +s sidan sida diff --git a/nemo_text_processing/text_normalization/sv/data/reference/ordinal_neuter.tsv b/nemo_text_processing/text_normalization/sv/data/reference/ordinal_neuter.tsv new file mode 100644 index 000000000..a3b2c9b4a --- /dev/null +++ b/nemo_text_processing/text_normalization/sv/data/reference/ordinal_neuter.tsv @@ -0,0 +1,3 @@ +kap kapitlet kapitel +mom momentet moment +st stycket stycke diff --git a/nemo_text_processing/text_normalization/sv/data/whitelist.tsv b/nemo_text_processing/text_normalization/sv/data/whitelist.tsv index a8f66fb52..a08b6a1cf 100644 --- a/nemo_text_processing/text_normalization/sv/data/whitelist.tsv +++ b/nemo_text_processing/text_normalization/sv/data/whitelist.tsv @@ -56,3 +56,5 @@ rdr. riksdaler ÅR åskådliga rummet o.s.a. om svar anhålles o. s. a. om svar anhålles +& co och kompani +& Co. och kompani diff --git a/nemo_text_processing/text_normalization/sv/taggers/cardinal.py b/nemo_text_processing/text_normalization/sv/taggers/cardinal.py index 750ff867b..5145175ad 100644 --- a/nemo_text_processing/text_normalization/sv/taggers/cardinal.py +++ b/nemo_text_processing/text_normalization/sv/taggers/cardinal.py @@ -25,7 +25,7 @@ insert_space, ) from nemo_text_processing.text_normalization.sv.graph_utils import SV_ALPHA -from nemo_text_processing.text_normalization.sv.utils import get_abs_path +from nemo_text_processing.text_normalization.sv.utils import get_abs_path, load_labels def make_million(number: str, non_zero_no_one: 'pynini.FstLike', deterministic: bool = True) -> 'pynini.FstLike': @@ -360,6 +360,17 @@ def __init__(self, deterministic: bool = True): optional_minus_graph = pynini.closure(pynutil.insert("negative: ") + pynini.cross("-", "\"true\" "), 0, 1) final_graph = optional_minus_graph + pynutil.insert("integer: \"") + self.graph + pynutil.insert("\"") + reference_graph = pynini.Fst() + reference_labels = load_labels(get_abs_path("data/reference/cardinal.tsv")) + if not deterministic: + reference_labels += load_labels(get_abs_path("data/reference/cardinal_nondeterministic.tsv")) + for written, spoken in reference_labels: + optional_dot = pynini.closure(pynutil.delete("."), 0, 1) if written.isalpha() else pynini.accep("") + unit = pynutil.delete(written) + optional_dot + unit_first = pynutil.insert(f"{spoken} ") + unit + delete_space + self.graph + number_first = pynutil.insert(f"{spoken} ") + self.graph + delete_space + unit + reference_graph |= unit_first | number_first + final_graph |= pynutil.insert("integer: \"") + reference_graph + pynutil.insert("\"") if not deterministic: final_graph |= pynutil.add_weight( optional_minus_graph + pynutil.insert("integer: \"") + self.graph_en + pynutil.insert("\""), -0.001 diff --git a/nemo_text_processing/text_normalization/sv/taggers/measure.py b/nemo_text_processing/text_normalization/sv/taggers/measure.py index 4da3f81c2..2668a757e 100644 --- a/nemo_text_processing/text_normalization/sv/taggers/measure.py +++ b/nemo_text_processing/text_normalization/sv/taggers/measure.py @@ -49,6 +49,8 @@ def __init__(self, cardinal: GraphFst, decimal: GraphFst, fraction: GraphFst, de cardinal_graph_en = cardinal.graph_en graph_unit = pynini.string_file(get_abs_path("data/measure/unit.tsv")) + graph_unit_optional_dot = pynini.string_file(get_abs_path("data/measure/unit_optional_dot.tsv")) + graph_unit |= graph_unit_optional_dot + pynini.closure(pynutil.delete("."), 0, 1) graph_unit_ett = pynini.string_file(get_abs_path("data/measure/unit_neuter.tsv")) graph_plurals = pynini.string_file(get_abs_path("data/measure/unit_plural.tsv")) greek_lower = pynini.string_file(get_abs_path("data/measure/greek_lower.tsv")) @@ -215,13 +217,14 @@ def __init__(self, cardinal: GraphFst, decimal: GraphFst, fraction: GraphFst, de math_operations = pynini.string_file(get_abs_path("data/math_operations.tsv")) delimiter = pynini.accep(" ") | pynutil.insert(" ") + math_operand = cardinal_graph_ett | SV_ALPHA | greek equals = pynini.cross("=", "är") if not deterministic: equals |= pynini.cross("=", "är lika med") math = ( - (cardinal_graph_ett | SV_ALPHA | greek) + math_operand + delimiter + math_operations + (delimiter | SV_ALPHA) @@ -229,11 +232,11 @@ def __init__(self, cardinal: GraphFst, decimal: GraphFst, fraction: GraphFst, de + delimiter + equals + delimiter - + (cardinal_graph_ett | SV_ALPHA | greek) + + math_operand ) math |= ( - (cardinal_graph_ett | SV_ALPHA | greek) + math_operand + delimiter + equals + delimiter @@ -244,6 +247,8 @@ def __init__(self, cardinal: GraphFst, decimal: GraphFst, fraction: GraphFst, de + cardinal_graph_ett ) + math |= math_operand + delimiter + math_operations + delimiter + math_operand + math = ( pynutil.insert("units: \"math\" cardinal { integer: \"") + math diff --git a/nemo_text_processing/text_normalization/sv/taggers/ordinal.py b/nemo_text_processing/text_normalization/sv/taggers/ordinal.py index 0877ca08f..3f713895b 100644 --- a/nemo_text_processing/text_normalization/sv/taggers/ordinal.py +++ b/nemo_text_processing/text_normalization/sv/taggers/ordinal.py @@ -26,7 +26,7 @@ insert_space, ) from nemo_text_processing.text_normalization.sv.taggers.cardinal import filter_punctuation, make_million -from nemo_text_processing.text_normalization.sv.utils import get_abs_path +from nemo_text_processing.text_normalization.sv.utils import get_abs_path, load_labels class OrdinalFst(GraphFst): @@ -200,12 +200,26 @@ def __init__(self, cardinal: GraphFst, deterministic: bool = True): self.suffixed_to_words = self.suffixed_ordinal @ self.graph self.bare_ordinals = cleaned_graph - kapitlet_word = pynini.union("kapitlet", pynini.cross("kap", "kapitlet")) - kapitlet = cleaned_graph + NEMO_SPACE + kapitlet_word + reference_graph = pynini.Fst() + if not deterministic: + reference_groups = [ + ("ordinal_common.tsv", "den", "denna"), + ("ordinal_neuter.tsv", "det", "detta"), + ] + for filename, article, demonstrative in reference_groups: + for written, definite, indefinite in load_labels(get_abs_path(f"data/reference/{filename}")): + optional_dot = pynini.closure(pynutil.delete("."), 0, 1) if written.isalpha() else pynini.accep("") + unit = pynutil.delete(written) + optional_dot + reference = cleaned_graph + delete_space + unit + reference_graph |= reference + pynutil.insert(f" {definite}") + reference_graph |= pynutil.insert(f"{article} ") + reference + pynutil.insert(f" {definite}") + reference_graph |= ( + pynutil.insert(f"{demonstrative} ") + reference + pynutil.insert(f" {indefinite}") + ) tok_graph = ( pynutil.insert("integer: \"") - + (cleaned_graph + pynutil.delete(".") | self.suffixed_to_words | kapitlet) + + (cleaned_graph + pynutil.delete(".") | self.suffixed_to_words | reference_graph) + pynutil.insert("\"") ) diff --git a/nemo_text_processing/text_normalization/sv/taggers/tokenize_and_classify.py b/nemo_text_processing/text_normalization/sv/taggers/tokenize_and_classify.py index ff2495524..ac980d61e 100644 --- a/nemo_text_processing/text_normalization/sv/taggers/tokenize_and_classify.py +++ b/nemo_text_processing/text_normalization/sv/taggers/tokenize_and_classify.py @@ -147,7 +147,7 @@ def __init__( | pynutil.add_weight(decimal_graph, 1.1) | pynutil.add_weight(measure_graph, 1.1) | pynutil.add_weight(cardinal_graph, 1.1) - | pynutil.add_weight(ordinal_graph, 1.1) + | pynutil.add_weight(ordinal_graph, 1.09) | pynutil.add_weight(money_graph, 1.1) | pynutil.add_weight(telephone_graph, 1.1) | pynutil.add_weight(electonic_graph, 1.1) diff --git a/nemo_text_processing/text_normalization/sv/taggers/whitelist.py b/nemo_text_processing/text_normalization/sv/taggers/whitelist.py index e8bf8151c..689a1ac58 100644 --- a/nemo_text_processing/text_normalization/sv/taggers/whitelist.py +++ b/nemo_text_processing/text_normalization/sv/taggers/whitelist.py @@ -14,7 +14,8 @@ import pynini from pynini.lib import pynutil -from nemo_text_processing.text_normalization.en.graph_utils import GraphFst, convert_space +from nemo_text_processing.text_normalization.en.graph_utils import NEMO_SIGMA, GraphFst, convert_space +from nemo_text_processing.text_normalization.sv.graph_utils import TO_LOWER from nemo_text_processing.text_normalization.sv.utils import get_abs_path, load_labels @@ -41,11 +42,31 @@ def _get_whitelist_graph(input_case, file): graph = pynini.string_map(whitelist) return graph + def _get_optional_dot_graph(input_case, file): + graph = _get_whitelist_graph(input_case, file) + return graph + pynini.closure(pynutil.delete("."), 0, 1) + + def _get_case_insensitive_graph(input_case, file): + graph = _get_whitelist_graph("lower_cased", file) + if input_case == "lower_cased": + return graph + lower_cased_input = pynini.cdrewrite(TO_LOWER, "", "", NEMO_SIGMA) + return lower_cased_input @ graph + + def _get_case_insensitive_optional_dot_graph(input_case, file): + graph = _get_case_insensitive_graph(input_case, file) + return graph + pynini.closure(pynutil.delete("."), 0, 1) + graph = _get_whitelist_graph(input_case, get_abs_path("data/whitelist.tsv")) + graph |= _get_whitelist_graph(input_case, get_abs_path("data/abbreviations/case_sensitive.tsv")) + graph |= _get_optional_dot_graph(input_case, get_abs_path("data/abbreviations/case_sensitive_opt_dot.tsv")) + graph |= _get_case_insensitive_graph(input_case, get_abs_path("data/abbreviations/case_insensitive.tsv")) + graph |= _get_case_insensitive_optional_dot_graph( + input_case, get_abs_path("data/abbreviations/case_insensitive_opt_dot.tsv") + ) if not deterministic and input_case != "lower_cased": - graph |= pynutil.add_weight( - _get_whitelist_graph("lower_cased", get_abs_path("data/whitelist.tsv")), weight=0.0001 - ) + lower_cased_graph = _get_whitelist_graph("lower_cased", get_abs_path("data/whitelist.tsv")) + graph |= pynutil.add_weight(lower_cased_graph, weight=0.0001) if input_file: whitelist_provided = _get_whitelist_graph(input_case, input_file) @@ -57,7 +78,15 @@ def _get_whitelist_graph(input_case, file): if not deterministic: units_graph = _get_whitelist_graph(input_case, file=get_abs_path("data/measure/unit.tsv")) units_graph |= _get_whitelist_graph(input_case, file=get_abs_path("data/measure/unit_neuter.tsv")) - units_graph |= _get_whitelist_graph(input_case, file=get_abs_path("data/abbreviations_nondet.tsv")) + units_graph |= _get_whitelist_graph( + input_case, file=get_abs_path("data/abbreviations/nondeterministic.tsv") + ) + units_graph |= _get_case_insensitive_graph( + input_case, get_abs_path("data/abbreviations/case_insensitive_alternatives.tsv") + ) + units_graph |= _get_whitelist_graph( + input_case, get_abs_path("data/abbreviations/case_sensitive_alternatives.tsv") + ) graph |= units_graph self.graph = graph diff --git a/tests/nemo_text_processing/sv/data_text_normalization/test_cases_cardinal.txt b/tests/nemo_text_processing/sv/data_text_normalization/test_cases_cardinal.txt index 7b0f75a54..2fcd04af9 100644 --- a/tests/nemo_text_processing/sv/data_text_normalization/test_cases_cardinal.txt +++ b/tests/nemo_text_processing/sv/data_text_normalization/test_cases_cardinal.txt @@ -18,6 +18,15 @@ 201~tvåhundraett 111~hundraelva 110~hundratio +§ 3~paragraf tre +3 §~paragraf tre +kap. 9~kapitel nio +9 kap~kapitel nio +st. 2~stycke två +2 st.~stycke två +s. 4~sida fyra +art. 7~artikel sju +3 mom.~moment tre 1000~tusen 540~femhundrafyrtio 850~åttahundrafemtio diff --git a/tests/nemo_text_processing/sv/data_text_normalization/test_cases_measure.txt b/tests/nemo_text_processing/sv/data_text_normalization/test_cases_measure.txt index 2fa5a70bb..e026137d1 100644 --- a/tests/nemo_text_processing/sv/data_text_normalization/test_cases_measure.txt +++ b/tests/nemo_text_processing/sv/data_text_normalization/test_cases_measure.txt @@ -5,3 +5,29 @@ 3mm~tre millimeter 1+5=6~ett plus fem är sex α+1=3~alfa plus ett är tre +1 +/- 0~ett plus minus noll +1 ± 0~ett plus minus noll +1 dg~ett decigram +2 dg~två decigram +1 dl~en deciliter +2 dl~två deciliter +1 MWh~en megawattimme +2 MWh~två megawattimmar +1 TWh~en terawattimme +2 TWh~två terawattimmar +1 tsk~en tesked +2 tsk~två teskedar +1 cg~ett centigram +2 cg~två centigram +1 cal.~en kalori +2 cal~två kalorier +1 hPa~en hektopascal +2 MWel~två megawatt el +1 TWhel~en terawattimme el +2 TWhel~två terawattimmar el +1 µm~en mikrometer +1 mmol~en millimol +1 mbyte~en megabyte +1 mmHg~en millimeter kvicksilver +100 m.ö.h~hundra meter över havet +1 kvm~en kvadratmeter diff --git a/tests/nemo_text_processing/sv/data_text_normalization/test_cases_normalize_with_audio.txt b/tests/nemo_text_processing/sv/data_text_normalization/test_cases_normalize_with_audio.txt index dd9874bae..a7cddb3d0 100644 --- a/tests/nemo_text_processing/sv/data_text_normalization/test_cases_normalize_with_audio.txt +++ b/tests/nemo_text_processing/sv/data_text_normalization/test_cases_normalize_with_audio.txt @@ -12,3 +12,27 @@ två ett tredje december tjugotjugotvå tredje december tjugohundratjugotvå tredje december tvåtusen tjugotvå +~3 § +paragraf tre +tredje paragraf +tredje paragrafen +den tredje paragrafen +denna tredje paragraf +~9 kap. +kapitel nio +nionde kapitlet +det nionde kapitlet +detta nionde kapitel +~2 st. +stycke två +andra stycket +det andra stycket +detta andra stycke +~kl. 3 +klockan tre +klass tre +~3 kl. +klass tre +tredje klassen +den tredje klassen +denna tredje klass diff --git a/tests/nemo_text_processing/sv/data_text_normalization/test_cases_ordinal.txt b/tests/nemo_text_processing/sv/data_text_normalization/test_cases_ordinal.txt index fee817946..f11bdeb5f 100644 --- a/tests/nemo_text_processing/sv/data_text_normalization/test_cases_ordinal.txt +++ b/tests/nemo_text_processing/sv/data_text_normalization/test_cases_ordinal.txt @@ -4,4 +4,3 @@ 2.~andra 20.~tjugonde 23.~tjugotredje -9 kap~nionde kapitlet diff --git a/tests/nemo_text_processing/sv/data_text_normalization/test_cases_whitelist.txt b/tests/nemo_text_processing/sv/data_text_normalization/test_cases_whitelist.txt index 78649e640..d9e2c64d9 100644 --- a/tests/nemo_text_processing/sv/data_text_normalization/test_cases_whitelist.txt +++ b/tests/nemo_text_processing/sv/data_text_normalization/test_cases_whitelist.txt @@ -1 +1,15 @@ s:t erik~sankt erik +allm. information~allmän information +ALLM information~allmän information +bg. 123~bankgiro hundratjugotre +Kalle Anka & co~Kalle Anka och kompani +bl. a. böcker~bland annat böcker +se ff.~se och följande sidor +d.v.s. samma sak~det vill säga samma sak +fr.o.m. måndag~från och med måndag +akad. avh. i ämnet~akademisk avhandling i ämnet +dnr. 123~diarienummer hundratjugotre +i.o.f.s. inte~i och för sig inte +pga. vädret~på grund av vädret +AckL gäller~ackordslagen gäller +ackl gäller~ackl gäller diff --git a/tests/nemo_text_processing/sv/test_sparrowhawk_normalization.sh b/tests/nemo_text_processing/sv/test_sparrowhawk_normalization.sh index 49480ee6a..0f204bae9 100644 --- a/tests/nemo_text_processing/sv/test_sparrowhawk_normalization.sh +++ b/tests/nemo_text_processing/sv/test_sparrowhawk_normalization.sh @@ -15,7 +15,7 @@ runtest () { # trim white space spoken="$(echo -e "${spoken}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')" - denorm_pred="$(echo -e "${denorm_pred}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')" + denorm_pred="$(echo -e "${denorm_pred}" | sed -e 's/ / /g' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')" # input expected actual assertEquals "$written" "$spoken" "$denorm_pred"