• No results found

Vad som behöver lagras i databasen

3.4 Tekniska val

3.4.1 Vad som behöver lagras i databasen

För att kunna spara plats i databasen och veta hur ord och meningar kan lagras med morfem åtskilda så långt det är möjligt är det viktigt med en

grundläggande kunskap om arabiska. Det som är lexikalt behöver lagras i databasen medan det som är morfologiskt inte behöver lagras i databasen.

Abrahamsson [7] beskriver skillnaden mellan lexikalt och morfologiskt i ett språk.

• Lexikalt

Sker inte utifrån några bestämda regler. Man måste lära sig det lexikalt (varje ord för sig).

• Morfologiskt

Sker utifrån bestämda regler. Det räcker att lära sig regeln.

De flesta arabiska ord har en rot som innehåller tre till fem bokstäver. De flesta rötter innehåller tre bokstäver. Det finns även ord som saknar rot.

Arabiska nomen böjs beroende på följande parametrar:

• Numerus

Singular. Dual. Plural.

• Genus

Maskulinum. Femininum. Det finns även ord som saknar genus eller som har båda.

• Tillstånd av bestämdhet

Bestämd form. Obestämd form. Konstrukt.

• Kasus

Arabiska verb har något som brukar kallas verbform på svenska. Det betyder att de byggs upp på ett bestämt sätt kring roten beroende på vilken verbform de tillhör. De viktigaste tempusformerna för arabiska verb är perfekt (dåtid) och imperfekt (nutid). Verb böjs beroende på vem som utför dem.

Böjningsmönstren i perfekt är i stort sett samma för alla verb. Det finns två vanliga böjningsmönster i imperfekt, vilket som används beror på ordets verbform.

Denna korta och förenklade beskrivning av arabisk grammatik är

grundläggande för uppbyggnaden av databasen och av JavaScript-klasserna.

Jag har valt att varje ord som inte är verb ska sparas i alla sina numerus- och genusformer. Dock inte dualis eftersom jag anser att det är överkurs för en nybörjare. Tillstånd av bestämdhet och kasus behöver inte sparas i databasen eftersom det är morfologiskt. Varje ord visas bara med sin grundform i ordlistan (ofta maskulinum singular). När användaren klickar på ett ord visualiseras ordets alla numerus- och genusformer på skärmen.

Alternativet hade varit att låta administratörerna mata in en form av ordet i taget. Ska en administratör till exempel lägga in ordet ingenjör hade den administratören själv valt om den ville lägga in ingenjör (m), ingenjör (f), ingenjörer (m) eller ingenjörer (f). Problemet hade varit att ordlistan hade blivit mindre överskådlig eftersom alla former av ordet hade hamnat där. Dessutom hade användaren inte lika lätt kunna överblicka de olika former som finns av vare ord.

Numerus- och genusformer kan vara både morfologiskt och lexikalt i arabiska.

Det vill säga böjningarna är regelbundna för vissa ord, och oregelbundna för vissa ord. För detta har jag lagt till ytterligare parametrar i databasen

(kolumnerna sinplu och maskfem som innehåller två bitar vardera). Dessa anger om eventuella plural- repsektive genusböjningar är regelbundna eller inte. Om de är regelbundna behöver dessa former inte sparas i databasen, de skapas istället i JavaScript. Så är fallet för exempelvis ordet ingenjör. Där sparas endast ordets grundform (ingenjör maskulinum singular) och de övriga formerna skapas utifrån bestämda mönster. För många andra ord är böjningarna inte regelbundna. Exempelvis färger. Där får administratören lägga in fyra former av varje ord.

När administratören lägger in ett ord i databasen fyller denna i om ordet har regelbundna genus- och pluralböjningar eller inte. Applikationen räknar sedan ut vilka former av ordet som administratören behöver mata in, och sedan uppmanas administratören att mata in dessa former. Administratören behöver alltså inte själv fundera på vilka former av ordet som behövs.

När det gäller verb sparas inte verbet på arabiska alls. I stället sparas verbets rot och verbform, samt några ytterligare parameter som behövs. Verbet, och dess böjningsformer, skapas istället i JavaScript utifrån rot, verbform och de övriga parametrarna. Syftet är dels att spara utrymme i databasen, men också att verbet lättare ska kunna visualiseras med färger. På startsidan markeras verbets

böjningar med färg (se figur 3), och på en annan sida markeras verbets rotbokstäver med färg (se figur 4).

Nackdelen är att om man vill låta användaren söka efter arabiskt ord blir sökningsalgoritmen mycket krångligare än om hela ordet vore lagrat. Å andra sidan: Om en användare skriver in sökordet aktubu (jag skriver) så vill man ändå prova att ta bort prefix och så vidare för att hitta till grundformen (i själva verket är det ordet kataba = han skrev). Det vill säga, koden bakom sökning på arabiska kanske inte skulle bli så mycket mer komplicerad ändå.

Figur 3. Verböjningar visas med olika färger.

Figur 4. Verbens rotbokstäver visas med blått.

Eftersom verb sparas på andra sätt än andra ord finns det i databasen två olika tabeller för att lagra ord: Verb och Advancedword. I JavaScript finns också två olika klasser för att ta hand om orden: Verb och CWord.

Tanken var från början att skapa ytterligare en tabell i databasen –

Simpleword. Tanken var att Advancedword skulle innehålla nomen (substantiv och adjektiv med mera) och Simpleword skulle innehålla exempelvis

pronomen, konjunktioner och prepositioner, det vill säga ord som bara finns i en form.

Valet blev till sist att bara ha två tabeller och två klasser för ord. En

anledning är att det även finns flera varianter av vissa pronomen eftersom både du, de, och ni finns i både maskulinum och femininum. Dock har jag fått respons på av lärare i arabiska att de vore mer pedagogiskt om både du (m) och

En annan anledning är just att det hade behövts tre tabeller och tre klasser, det hade blivit lite krångligare. Dessutom tar det inte särskilt mycket mer plats att lagra information om ord som finns flera former, det behövs bara två kolumner med två bitar i vardera.

Det vanliga sättet att spara arabiska ord i databasen hade antagligen varit att spara dem som datatypen varchar och använda Unicode. Jag har istället valt att spara de arabiska orden som datatypen varbinary, det vill säga en sträng av ettor och nollor.

För att möjliggöra detta har jag skapat en JavaScript-klass - letter - som beskriver arabiska bokstäver. Alla bokstäver som behövs lagras som instanser av denna klass. Dessa instanser lagras i en array.

Ett femtiotal bokstäver behövs för att skapa all arabisk text. Det innebär att man behöver sex binära siffror för att lagra varje bokstav. Varje bokstavs binära representation motsvarar dess ordningsnummer i arrayen.

Detta sparar plats jämfört med att använda riktiga bokstäver eftersom endast sex bitar behövs för varje bokstav. Men huvudsyftet är att få större kontroll över hur orden visas. Varje bokstav omvandlas till en instans av klassen letter innan den sätts ihop till arabiska och transkriberad form.

Nackdelen med att spara de arabiska orden som binärsträngar är att de bara kan användas i min webbplats.

Related documents