Fonetisk distansmätning av ord i lexikon



Relevanta dokument
Namn:.. Personnr:. 1. (4 p) I vilket av följande ord kan man i central rikssvenska höra 6 språkljud?

Hur bestämmer man vilka fonem ett språk har? Fonologi. Kommutationstest. Hur bestämmer man vilka fonem ett språk har?

Fonologi. Kommutationstest. Minimala par. Hur bestämmer man vilka fonem ett språk har?

Fonetik. Dolores Meden

fonetik konsonanter + fonologi

Rysk fonetik 7,5 hp föreläsning III. Institutionen för moderna språk Karine Åkerman Sarkisian Ryska A

Talets fysiologi, akustisk fonetik. Lungorna och struphuvudet. Röst David House: Talets fysiologi, akustisk fonetik VT16.

Rysk fonetik 5 hp föreläsning II. Institutionen för moderna språk Karine Åkerman Sarkisian Ryska A

foner fonem stol 4 4 mamma 4 2 sjukskötare 9 8 gata 4 3 stat 4 3 Haparanda 9 6 heter 5 4 el. 5 kärvänlig 8 el. 9 7 el 8

man kan lyssna på vad de betyder man kan lyssna efter hur de låter utan att bry sig om vad de betyder.

Uttalsutveckling. Språkstruktur. Språkstruktur. Språkstruktur. Det mänskliga talet. Barns tidiga språkutveckling

1. Turkologisk transkription och notation

Skillnader vokaler - konsonanter. Konsonanters akustiska mönster. Vokaler. Konsonanter. Konsonantklasser. Sonoranter

Uppgift 1 ( Betyg 3 uppgift )

Skrivstöd. Joakim Nivre. Introduktion till språkteknologi. Skrivstöd. Inledning. Orsaker till stavfel. Detektering av icke-ord

Lär dig engelska med bilder Mappia AB Facebook.se/mappia Twitter/mappiaab

Programmering II (ID1019) :00-11:00

tentaplugg.nu av studenter för studenter

Fonologisk typologi

Några ord om fonologi. Några ord om fonologi. Några ord om fonologi. Några ord om fonologi. Några ord om fonologi. Några ord om fonologi

/r/ i några svenska dialekter

Fonembegreppet

Vokaler. Vokaler och Konsonanter. Vokaler och Konsonanter. Vokaler och Konsonanter. Skillnad: bildningssätt. Vokaler och Konsonanter

Allmän Grammatik och Fonetik HT10 Dag 1. Lingvistik och grammatik. Fonetik och fonologi

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Kurslitteratur Taltranskription: Introduktion

fonetik intro + vokaler

Excel Övning 1 ELEV: Datorkunskap Sida 1 Niklas Schilke

ViTal. Talsyntes. Användarhandledning

Uttalskorrigering med hjälp av Fonetisk text

Kortfattad tysk uttalslära

>> Inledning.

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

H LH L] fonologikompendium] (x.) (.x) Tomas Riad Sep.tem.ber mcmxcvii

Talsystem Teori. Vad är talsystem? Av Johan Johansson

Artikulatorisk fonetik

I. GRUNDERNA I RYSK FONOLOGI

Lista på transkriptionstecken för arabiskt dialektmaterial 1

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Föreläsning 3.1: Datastrukturer, en översikt

Svenska språkets struktur: fonetik. kända svårigheter i svenska som andraspråk. Helen Winzell (rum 4315, Key-huset) helen.winzell@liu.

Följande program utvecklades av BITTECH. De flesta såldes via Elevdata, Frölunda Data och VetaMer. De finns inte längre till försäljning.

3. Metoder för mätning av hörförmåga

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET.

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Dagens föreläsning Programmering i Lisp Fö 5

Passiva stimulusstyrda processer. Talperceptionsteorier. Sekundära perceptoriska. Primära perceptoriska. Aktiva hypotesstyrda processer

FÖR ÖPPET OCH TONLÖST. UTTALSSVÅRIGHETER I SVENSKAN PÅ UNIVERSITETSNIVÅN. Henna Volotinen

Välkommen till ClaroStava svenska mac med tal artnr 12312

Logisk semantik I. 1 Lite om satslogik. 1.1 Konjunktioner i grammatisk bemärkelse. 1.2 Sant och falskt. 1.3 Satssymboler. 1.

ENKEL Programmering 3

1. Klicka på längst upp, när du har fönstret Familjeöversikt på skärmen. Denna meny visas:

Guide till att använda Audacity för uttalsövningar

Användarhandledning Version 1.2

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016

Nonogram

Facit till peer-uppgifterna, som även är vägledande för tentan

Tove Andersson IT-Pedagoglinjen 09/10. hängande mot golvet, stå så några sekunder för att sträcka ut hela ryggen. Rulla sakta upp kota för kota.

Idag. Tillägg i schemat. Segmenteringsproblemet. Transkription

2 = 2. Tal skrivna på det sättet kallas potenser. I vårt fall har vi tredje tvåpotensen. Tredje tvåpotensen har 2 som bas och 3 som

Appar vi arbetat med

KALIBRERINGENS ABC. Korrekt kalibrering en förutsättning för bra utvärdering!

Tentamen, Algoritmer och datastrukturer

Institutionen för lingvistik och filologi HT 2007

Övningsuppgifter kapitel 8

Programmering. Den första datorn hette ENIAC.

Övningshäfte 2: Induktion och rekursion

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Att skriva på datorn

Anpassa uttal i Infovox desktop Pro

Graärgning och kromatiska formler

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Grundläggande Textanalys VT Språkgranskning (1) Eva Pettersson

Vanliga frågor för VoiceXpress

729G09 Språkvetenskaplig databehandling

UPPGIFT 1 V75 FIGUR 1.

FRANSKA I ALLMÄN FONETIK. Inga hjälpmedel är tillåtna vid skrivningar (information om undantag finns på vår hemsida).

Vardagssituationer och algebraiska formler

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

TATM79: Föreläsning 1 Notation, ekvationer, polynom och summor

BLOCK 1. 1A. Att komma igång

StoCKK Stockholm Center för Kommunikativt och Kognitivt stöd. Tips på appar för träning av tidig läs- och skrivförmåga

i LabVIEW. Några programmeringstekniska grundbegrepp

5. Vad jag kan / What I can do. CHECKLISTA Nivå B2 Level B2. 1. Jag kan i detalj förstå vad man säger till mig på normalt samtalsspråk.

Fonetik och fonologi. Ljud och ljudsystem. Allmän Grammatik och Fonetik HT07 Dag 2

Lägga till olika dokument i en fil

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Introduktion till MySQL

Snabbguide för användare SourceTech Telllus

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens Erik Claesson

1. Starta programmet 2. Välja projekt antingen redan skapat eller nytt

TDDA94 LINGVISTIK, 3 poäng tisdag 19 december 2000

Inför genomförandet av ThomasGIA

Microsoft Office Excel, Grundkurs 1. Introduktion

Tal i bråkform. Kapitlet behandlar. Att förstå tal

Språkljudens akustik. Akustik, akustiska elementa och talanalys

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

bilder för användning

Uppgift 1 (grundläggande konstruktioner)

Transkript:

Examensarbete Fonetisk distansmätning av ord i lexikon Henrik Wache henrikw@stp.ling.uu.se Språkteknologiprogrammet Institutionen för lingvistik Uppsala universitet Handledare: Hans Runehov, Telia Promotor AB Rolf Lindgren, Telia Telecom AB Huvudhandledare: Lars Borin, institutionen för lingvistik, Uppsala universitet

Under tiden jag har arbetat med mitt examensarbete har jag fått hjälp av en del personer som jag här skulle vilja passa på att tacka. Först och främst vill jag rikta ett stort tack till min handledare på Telia Promotor, Hans Runehov. Hans har under mitt arbete alltid haft tid för mina frågor och hjälpt mig mycket med det programmeringstekniska arbetet. Tack också till min handledare på Telia Telecom AB, Rolf Lindgren för intressanta diskussioner och nyttiga synpunkter på framför allt den fonetiska delen av mitt arbete. Huvudhandledare för mitt examensarbete har varit Lars Borin vid institutionen för lingvistik på Uppsala universitet. Lars har varit till stor hjälp under främst den senare delen av arbetet och har kommit med bra och konstruktiva kommentarer under rapportskrivningen. Det har alltid varit roligt och givande att diskutera med Lars, inte bara om rapporten och examensarbetet utan även om jiddisch, Slas och skillnaden mellan östgötar och västgötar. Stort tack! Henrik Wache, Uppsala i Mars 1999 i

Sammandrag Den här rapporten beskriver arbetet att ta fram ett program som kan mäta den fonetiska likheten mellan olika ord. Programmet kan t.ex. användas som ett hjälpmedel vid utformningen av ett röststyrt gränssnitt där man på förhand ska kunna upptäcka och undvika ord som låter lika och därmed riskerar att förväxlas av det röststyrda programmet. Mitt arbete har haft tre huvudmoment; dels att hitta ett sätt att beskriva den fonetiska likheten hos fonem, dels att hitta en lämplig metod att använda sig av för att kunna mäta den fonetiska distansen mellan ord, dvs hitta en metod med vilken man kan mäta hur fonetiskt lika ord är, och dels att implementera denna metod i form av ett datorprogram. Rapporten kommer att ta upp olika metoder för strängjämförelse och påvisa deras för- och nackdelar. Vidare kommer jag att mer utförligt beskriva den algoritm jag har använt mig av i mitt program och på vilket sätt jag har använt mig av den. Jag kommer också att redogöra för den fonetiska indelning jag har använt mig av för att gruppera ordens fonem. ii

SAMMANDRAG...ii 1 INLEDNING...1 1.1 ÖVERSIKT...1 1.2 SYFTE...1 1.3 BAKGRUND...1 2 STRÄNGJÄMFÖRELSE...3 2.1 N-GRAM-TEKNIKER...4 2.2 SOUNDEX-ALGORITMEN...6 2.3 LEVENSHTEIN-ALGORITMEN OCH DYNAMISK PROGRAMMERING...8 3 FONETIK, FONOLOGI OCH RELATERADE BEGREPP...10 3.1 FONETISK TRANSKRIPTION...10 3.1.1 IPA-notationen...10 3.1.2 SAMPA-notationen...11 3.2 FONETISKA SÄRDRAG...12 3.2.1 Vokaler och deras särdrag...13 Främre vokaler...14 Mellanvokaler...14 Bakre vokaler...14 Höga vokaler...14 Medelhöga/medellåga vokaler...15 Låga vokaler...15 3.2.2 Konsonanter och deras egenskaper...15 3.2.2.1 Konsonanternas artikulationssätt... 16 Klusiler...16 Nasaler...17 Tremulanter...17 Frikativor...17 Lateraler...17 Approximanter...17 3.2.2.2 Konsonanter och särdrag... 17 Vokalisk...18 Konsonantisk...18 Sonoranter...18 Nasaler...18 Lateraler...19 Kontinuanter...19 Koronaler...19 Anteriorer...19 Tonande...19 3.3 STAVELSER...20 4 BESKRIVNING AV PROGRAMMET...22 4.1 PROGRAMMETS IN- OCH UTDATA...23 4.2 PROGRAMMET OCH LEVENSHTEIN...24 5. TESTRESULTAT...31 5.1 TEST MOT ETT ANNAT PROGRAM...31 5.2 TEST MED MÄNNISKOR...33 6 SLUTSATSER...37 6.2 FONETISK JÄMFÖRELSE OCH LEVENSHTEIN...38 6.3 RESULTATET...39 6.4 FRAMTIDA FÖRBÄTTRINGAR...40 iii

LITTERATURFÖRTECKNING...42 BILAGA 1: SAMPA-ALFABETET...43 BILAGA 2: IPA-SAMPA-TABELL...44 BILAGA 3: PROGRAMMETS NIVÅER OCH DE FONETISKA SÄRDRAG SOM DÄR ANVÄNDS:...45 BILAGA 4: LEVENSHTEIN-ALGORITMENS IMPLEMENTATION...46 iv

1 Inledning 1.1 Översikt Den här rapporten behandlar mitt examensarbete vilket jag har gjort på Telia Promotor i Uppsala under våren och sommaren 1998. Examensarbetet ingår som en obligatorisk kurs om 20 poäng på språkteknologiprogrammet vid Uppsala universitet. Rapporten är den ena av två delar av arbetet där den andra delen är en implementation i form av ett program för mätning av fonetisk likhet mellan ord. 1.2 Syfte Syftet med examensarbetet har varit dels att studera vilka metoder som finns att använda sig av vid fonetisk strängjämförelse, och dels att implementera en av dem i form av ett datorprogram. Detta gör att arbetet naturligt har indelats i en teoretisk och en praktisk del där den senare har bestått i implementationen av den förra. Den teoretiska delen innehåller en genomgång och sammanställning av olika tänkbara metoder för fonetisk jämförelse av strängar samt hur man kan definiera fonetisk distans. Detta innebär en inventering av befintliga metoder, bedömning av metodernas lämplighet för det specifika problemet, eventuellt modifiering av någon befintlig algoritm eller utveckling av egen metod. Syftet har varit att få en djupare kunskap om området samt att välja ut den mest lämpade algoritmen för implementationen. Den praktiska delen handlar om att utveckla ett program som med hjälp av vald algoritm beräknar den fonetiska distansen mellan det testade ordet och orden i ett befintligt uttalslexikon. Programmet returnerar en lista med de ord ur ett lexikon som har minst fonetisk distans till det testade ordet. 1.3 Bakgrund I all typ av kommunikation är det viktigt att budskapet mellan två eller flera parter uppfattas rätt, dvs. såsom avsändaren har tänkt sig att hans meddelande ska uppfattas. Det här gäller i alla typer av kommunikation och då både mellan människor eller mellan människor och datorer. I talad kommunikation mellan människor är ofta dialogen full av ofullständiga meningar, flertydiga ord och ogrammatisk meningsbyggnad. Anledningen till att vi ändå (oftast) förstår budskapet är att 1

vi använder oss av vår förmåga att ta ut det viktiga i en mening vilket gör att vi även kan förstå den. En mening som: Öhh ska vi kanske då ba säga ähh.. vid kiosken klockan sju va eller? skulle säkert ganska enkelt kunna tolkas som: ska vi träffas vid kiosken klockan sju?. Trots att meningen är ostrukturerad och relativt svår att tyda i skriven form, förstår vi ändå dess betydelse eftersom vi kan dra slutsatser av de enskilda orden och därmed även förstå betydelsen av meningen i sin helhet. Dialogsystem mellan människor och datorer där man använder sin röst som gränssnitt mot en dator är någonting relativt nytt och har de senaste åren kommit ut som kommersiella produkter på marknaden. På persondatormarknaden finns idag t.ex. ordbehandlare där man kan diktera sina brev med rösten istället för att använda tangentbordet. På mobiltelefonmarknaden är det numer vanligt med röstringning, dvs. istället för att manuellt slå det nummer man vill ringa, säger man helt enkelt namnet (eller liknande) på den man vill ringa upp, t.ex. ring mamma. Den här typen av program där en del av programmets uppgift bland annat är att känna igen det en människa säger, innehåller ofta någon slags modul där programmet ska matcha de ord den har uppfattat att människan har sagt mot ett lexikon. Eftersom programmets funktion normalt är att tillhandahålla den information som användaren har bett om, är det av största vikt att programmet rätt har uppfattat de ord som användaren har sagt. Om systemet har misstolkat ett ord kan det leda till att fel information blir presenterad för användaren varvid han kanske tappar intresset och avslutar programmet. Som exempel på ovan nämnda problem kan vi ta ett program där man kan ringa och fråga en dator om väderleken i olika delar av landet. När man har kört fast i programmet eller vill komma till början av programmet säger man helt enkelt börja om. Problemet med att använda den frasen är att den låter likt staden Borgholm, vilket gör att en person som ringer till programmet och med lite otydligt tal ber att få information om vädret i Borgholm, istället blir kopplad till början av programmet. Lösningen på det problemet skulle kunna ha varit att i förväg testa programmets kommandoord, såsom börja om för att på så sätt se om de var uttalsmässigt lika några av de andra lexikonorden. Om så visar sig vara fallet kan det vara bra att förutse den typen av krockar och då kanske välja andra kommandoord. 2

2 Strängjämförelse Med strängar menar vi här en sekvens av objekt där objekten kan vara av olika typer. För en datavetare kan strängar betyda en datatyp bestående av en följd av tecken (Engström 1995). I det fallet kan man tänka sig att datatyperna, eller strängarna, kan vara ettor och nollor. För en matematiker kan en sträng vara ett tal som består av en eller flera på varandra följande siffror, medan biologen pratar om arvsanlag i form av DNA- och RNA-strängar. Lingvisten kan uppfatta ord som strängar av bokstäver medan fonetikern kanske uppfattar ord som strängar av fonem. Då det här examensarbetet handlar om hur man kan jämföra strängar av fonem, dvs. fonetiskt transkriberade ord, med varandra innebär det att vi här talar om strängar som en sekvens av fonetiska tecken. Oavsett vilka typer av strängar man pratar om, kan skillnaderna strängarna emellan beskrivas på mer eller mindre samma sätt. Dessa skillnader kan då sägas bero på något av följande: -byte (substitution) av t.ex. en bokstav: (stav stad) -borttagning (deletion) (stål stå) -insättning (insertion) (stå stål) -omkastning (transposition) (åra råa) Ibland talar man om borttagning och insättning med ett och samma ord: indels (insertion eller deletion). Av dessa fyra operationer räcker det med borttagning och insättning för att beskriva skillnaden mellan två strängar eftersom ju de andra två operationerna kan beskrivas som en borttagning följd av en insättning. Alla fyra termerna förekommer dock och det är i dessa termer som Levenshtein-algoritmen (se nedan) beskriver skillnaden, eller distansen mellan två strängar. Inom datorlingvistiken kan strängjämförelse förekomma inom olika tillämpningsområden såsom t.ex. datamaskinell rättstavning (Kukich 1992; Vosse 1994) eller maskinöversättning. Gemensamt för de båda disciplinerna är att det gäller att jämföra en inputsträng med de ord som finns representerade i ett lexikon. Uppgiften för ett rättstavningsprogram skulle förenklat kunna beskrivas som: 3

1. Hitta ordet X i ett maskinläsbart lexikon Om 1. ovan lyckas: - slå upp nästa ord. Om 1. ovan misslyckas: 2. Hitta ett eller flera ord i lexikonet som liknar X så mycket som möjligt. Det här betyder att programmet tolkar ett ord som inte återfinns i lexikonet som felstavat vilket ju inte behöver vara fallet: ordet kan vara rätt stavat men ändå inte hittas då lexikonet kanske innehåller få ord. I svenskan har vi dessutom i princip obegränsad möjlighet till sammansättningar vilket gör att utbudet av ord blir näst intill oändligt stort och ett ord som strängjämförelsealgoritmer knappast återfinns i något lexikon. Det intressanta inträffar då jämförelsen misslyckas och programmet ska uppge alternativa stavningar/ord till det inskrivna ordet. I den här situationen måste alltså programmet ta hänsyn till faktorer som ordlängd, delsträngar och enstaka tecken för att avgöra vilka ord som är mest troliga som stavningskandidater, dvs. vilka ord som är mest lika det inskrivna ordet. Resultatet av dessa avvägningar är beroende av hur man jämför strängarna och vilken typ av jämförelsealgoritm man använder sig av. Syftet med det här arbetet har varit att ta fram ett verktyg som jämför två ordsträngar och som resultat ger någon form av likhetsmått. Det här har gjort att jag först var tvungen att undersöka om det fanns några metoder som var lämpliga att använda för den typ av strängjämförelse vi ville göra. Kravet för att använda sig av en redan existerande algoritm var att den skulle finnas väl dokumenterad, relativt enkel att implementera samt att man som resultat av jämförelsen skulle få ut ett mått som relaterar till strängarnas likhet på ett någorlunda bra sätt. Under mitt arbete har jag speciellt kommit i kontakt med tre metoder; n-gramtekniker, Soundexalgoritmen samt Levenshteinalgoritmen. Dessa tre metoder bygger alla på olika tekniker och har egentligen också olika användningsområden. Jag kommer här nedan att kort beskriva de olika metoderna tillsammans med dess för- och nackdelar. 2.1 N-gram-tekniker Bigram är en sekvens av två på varandra följande tecken och trigram är tre på varandra följande tecken. Både bi- och trigram har länge varit populära att använda sig av för att jämföra strängar av 4

olika slag. Om vi har två strängar i form av två ord som fonetik och fonem består således den första strängen av följande trigram: fon, one, net, eti och tik, medan den andra består av fon, one och nem. För att se ett konkret exempel på en implementation där man kan använda sig av den här tekniken kan vi gå tillbaka till automatisk rättstavning. Som antyddes i avsnitt 2 ovan kan problemet med rättstavning indelas i två deluppgifter. Den första är att hitta stavningsalternativ till det felstavade ordet, och den andra är att är att jämföra kandidaterna för att hitta det bästa av flera alternativ (Vosse 1994 s.71). För att åstadkomma detta och få fram ett mått på likheten mellan två strängar kan man använda sig av en formel som normalt benämns som The Dice Coefficient : 2P(x,y) Sim(x, y) = ------------- P(x) + P(y) Den här formeln beräknar alltså likheten (Sim) mellan två strängar x och y. P(x, y) är antalet gemensamma trigram för strängarna x och y och P(x) + P(y) är antalet unika trigram i respektive bokstavssträng. Skulle vi applicera formeln på våra exempelord fonetik och fonem skulle formeln få följande utseende: 2(2) Sim(fonetik, fonem) = ---------- = 0.5 (5)+(3) Resultatet av beräkningen är ett tal mellan 0 och 1 där värden närmare 1 påvisar en större likhet mellan strängarna och ett lägre värde det motsatta. Om exemplet ovan hade gällt för orden fonetik och fonetiken hade likhetsvärdet blivit 0.83 istället, vilket verkar rimligt då de strängarna uppvisar en större likhet än de två förra när det gäller antalet lika delsträngar. Nackdelen med den här tekniken är att ett ord med ett extra insatt tecken alltid är mer likt det ursprungliga ordet än vad ett ord med två insatta tecken är: (fonem, foneme, fonemet), detta oavsett vilka dessa två tecken är. Analogt kan man tänka sig att en sträng med ett insatt fonem inte nödvändigtvis behöver låta mer likt ursprungsordet än en sträng med två insatta fonem. Ett annat problem är att två ord som t.ex. fonemen och fonemet alltid får samma resultat när de jämförs med ordet fonem eftersom de orden båda har två extra tecken. Det här gör att metoden med n-gram- 5

teknik inte är lämplig att använda i sin grundform i mitt program eftersom den inte säger någonting om vilken av strängarna fonemen och fonemet som är mest fonetiskt lik strängen fonem. Det är den här statiska jämförelsen som gör att vi inte kan använda den tekniken för vårt ändamål där vi ska jämföra strängar som är fonetiskt transkriberade. I vår jämförelse måste vi kunna vikta de olika delarna i strängarna som jämförs eftersom varje del av strängen (fonemtecknen) representerar ett ljud som kan vara mer eller mindre likt ett annat ljud. Det här betyder att ett b måste anses vara mer likt ett p än vad det är ett s vilket måste komma fram av strängjämförelsen. 2.2 Soundex-algoritmen Soundex är en gammal teknik med anor från början av nittonhundratalet. Systemet utvecklades ursprungligen för att automatiskt kunna söka efter namn i namnregister. Algoritmens enkelhet (och dess resultat?) gör att den fortfarande används i vissa äldre system, även om nyare tekniker är på väg att ta över. Vad som ändå gör att Soundex är värd att nämnas i sammanhanget är att algoritmen bygger på en fonetisk grundtanke, nämligen den att det är svårare att stava vokalljud än vad det är att stava konsonantljud. Dessutom kan tilläggas att de flesta språk har fler konsonantfonem än vokalfonem. Vosse (1994 s. 88) påpekar dock att detta synsätt på svårstavade vokalljud är mer giltigt för engelska än vad det är för holländska. Jag kan också tänka mig att detta även gäller för svenska, dvs. att engelska vokalljud även är mer svårstavade än svenska dito. Detta gör dock inte Soundex-tekniken helt ointressant och tanken med svårstavade ord kan exemplifieras med en sökning i en databas efter en persons namn. Om namnet är Papadopoulos kan man förstå tveksamheten att placera vokalerna rätt och möjligheten att koda namnet från konsonanterna verkar som en bra idé. Grundtanken är alltså att ignorera vokalerna och ersätta konsonanterna (utom w och h) i en ordsträng med en sifferkod enligt följande indelning: B, F, P, V = 1 C, G, J, K, Q, S, X, Z = 2 D, T = 3 L = 4 M, N = 5 R = 6 6

Själva algoritmen för hela Soundex-kodningen kan sammanställas i följande punkter som exemplifieras på namnet Papadopoulos : 1. Ta bort alla vokaltecken samt bokstäverna w och h från den aktuella strängen: (p_p_d p_l s) 2. Behåll den första bokstaven i den aktuella strängen. 3. Ersätt resten av bokstäverna i strängen med motsvarande siffra (se listan ovan). (p13142) 4. Ta bort alla dubbla siffror. 5. Trunkera strängen till en längd av 4 tecken (dvs. initialbokstav + 3 siffror). (P131), eller om strängen är kortare än fyra tecken, fyll ut den med nollor. Som resultat av Papadopoulos får vi alltså koden P131. Det är ganska enkelt att se hur tanken bakom algoritmen ser ut: det räcker vid en namnsökning att skriva Papadopolus eller Pappadopolus för att namnet via koden ska kopplas ihop till rätt namn utan att man vet exakt hur namnet stavas. Problemet med den här tekniken borde vara ganska självklart eftersom man kan lätt kan hitta olika ord med samma kod. Vosse (1994 s.89) skriver att det finns 676 engelska ord med soundex-nyckeln 22 och ger bland andra orden acacia, cheque och whiskies som exempel på ord med samma soundex-värde. (Han har då inte tagit hänsyn till initialbokstaven utan bara beräknat konsonantvärdet.) Vosse beskriver vidare att det i det engelska språket i medeltal finns 10,8 ord per Soundex-värde. Tittar vi på svenskan har orden bagge, baka och boss alla värdet 120 och får således en Soundex-kod på B120, trots att orden inte alls är lika varandra. Det borde vara uppenbart att Soundex har en alltför grov kodning för att vara effektiv i en seriös strängjämförelse. Skulle man jämföra olika strängar skulle man bli tvungen att sortera orden efter sifferordning. Dessutom saknar även den här metoden ett effektivt sätt att mäta distansen mellan de jämförda strängarna. Sättet att dela in "liknande bokstäver" i siffergrupper är en alltför grov indelning och säger ingenting om varför s och g har samma värde. Dessutom behandlas alla vokaler likadant, dvs. ignoreras helt vilket gör att det är omöjligt att säga någonting om vokalernas inbördes likhet. 7

2.3 Levenshtein-algoritmen och dynamisk programmering Levenshtein-algoritmen är ett exempel på vad som kallas dynamisk programmering vilket är en vanlig metod inom datavetenskapen när man vill hitta kortaste vägen mellan två punkter i ett nätverk. Trots termen programmering har det inget med programmering i ordets vanliga betydelse att göra, utan innebär snarast planering (Lindgren 1991). Ett konkret exempel på detta är beräkningar av den optimala flygbanan över Atlanten där flygplanen kan välja mellan ett antal olika flygrutter och där faktorer såsom väder och annan flygtrafik påverkar resultatet. Levenshtein-metoden kan också användas för att jämföra två eller flera strängar. Denna metod lanserades första gången 1965 av Levenshtein som ett sätt att jämföra hur två strängar förhåller sig till varandra i fråga om de tidigare nämnda transformationerna: insättning, borttagning och byte av tecken (Sankoff 1983). Grundidén var att se hur många transformationer som behövdes för att få en sträng x att övergå till en annan sträng y. För att beräkna detta bygger man upp en matris av de strängar som ska jämföras. Matrisen fylls sedan med tal som är beroende av om det aktuella strängelementet är lika med det jämförda eller inte. Om vi ska jämföra strängarna 'satta' och 'snatta' kommer vår matris att se ut som följer: s a t t a s 0 1 2 3 4 n 1 1 2 3 4 a 2 1 2 3 3 t 3 2 1 1 2 t 4 3 1 1 2 a 5 3 2 2 1 Varje position, (x,y) i tabellen är beroende av tre andra positioner/värden, nämligen (x-1, y), (x, y- 1) och (x-1, y-1). När vi börjar traverseringen av tabellen sker det i det övre vänstra hörnet där vi börjar med att jämföra elementen s och s. När två tecken är lika blir värdet samma som det minsta värdet av de tre värden som (x,y) är beroende av. Om två tecken, x och y inte är lika blir värdet det minsta beroende värdet + 1. I det här fallet är s och s lika och värdet 0 erhålls. Efter detta flyttar vi oss en position nedåt på y-axeln och jämför s med n. Då dessa inte är lika ska man alltså lägga till 1 till det lägsta värdet på någon av positionerna (x-1, y), (x, y-1) eller (x-1, y- 1). Då endast en av dessa positioner (x, y-1) finns tillgänglig för jämförelsen mellan s och n, adderas 1 till detta värde (0) och summan sparas på den aktuella positionen. Sedan fortsätter man på samma sätt med en kolumn i taget till man når matrisens sista ruta vilket är den i det nedre högra hörnet. När man kommit ned hit har man också beräknat det antal tecken som skiljer de båda 8

strängarna åt. Om man använder sig av Levenshtein-termer kan man säga att man behöver sätta in ett (1) tecken ( n ) för att transformera strängen satta till snatta. Om man vill använda en formell beskrivning av Levenshteins algoritm, kan man se matrisen som en tabell bestående av n antal rader och m antal kolumner, och att distansen d mellan strängarna a och b beskrivs som d(a, b). Vid initieringen av matrisen har vi således värdet d(a 0, b 0 ) = 0. Resultatet efter att ha traverserat hela matrisen ges av värdet för positionen d(a n, b m ). Själva beräkningen av värdena i matriserna positioner beskrivas som: d(a i, b j ) = min d(a i-1, b j ) + w(a i, b j ) OR d(a i-1, b j-1 ) + w(a i, b j ) OR d(a i, b j-1 ) + w(a i, b j ) där w = 0 om a = b, och w = 1 om a!= b. På samma sätt som de två tidigare algoritmerna, n-gram och Soundex, har Levenshtein-algoritmen i sin ursprungliga version svårt att visa den fonetiska likheten mellan strängarna. Även om man använde sig av fonetiskt transkriberade strängar skulle metoden i sin nuvarande form bara säga om ett fonem är samma fonem som det jämförda. Jag har detta till trots ändå använt mig av Levenshteins metod för att jämföra strängar, dock med vissa modifikationer vilka förklaras senare i rapporten. 9

3 Fonetik, fonologi och relaterade begrepp Fonetik är det språkvetenskapliga studiet av mänskligt tal där man studerar talapparaten och talsignalen, medan fonologi är den vetenskap som beskriver och definierar våra språkljud. Gemensamt för både fonetiken och fonologin är beskrivningar som relaterar till fonembegreppet. Ett fonem brukar definieras som språkets minsta betydelseskiljande enhet. Huruvida man har med ett fonem att göra kan man testa genom att byta ut ett ljud mot ett annat i ett ord. Om ordet efter bytet har övergått till en annan betydelse än innan, har vi att göra med två olika fonem. Till exempel är ljuden /p/ och /b/ olika fonem eftersom orden bil och pil är två ord med olika betydelse. Eftersom fonem realiseras i skriven form som transkriberade symboler, kan det vara på sin plats att börja med att ge en beskrivning av de två fonetiska alfabet som är av betydelse för den här rapporten. Det är dels IPAs (International Phonetic Association) fonetiska alfabet som är den standard enligt vilken man idag transkriberar fonetisk text, och dels SAMPA som är en asciinotation av IPAs fonetiska teckenuppsättning och det alfabet som jag använder mig av i mitt program. 3.1 Fonetisk transkription Fonetisk transkription använder man för att kunna ge en ortografisk bild av hur ett ord låter. Detta gör att ord som låter lika men stavas olika (homofoner) har en och samma fonetiska transkription. Till exempel skulle orden gärna och hjärna båda transkriberas som [!Θ α] med IPA s fonetiska alfabet. Man kan helt enkelt säga att uppgiften för den fonetiska representationen med dess fonetiska tecken är att man ska kunna skriva som det låter. För att transkribera ett ljud eller ett helt ord fonetiskt använder man sig av något av de olika fonetiska teckensystem, eller alfabet som finns. Anledningen till att det finns olika system är att de ofta är framtagna för att kunna användas för olika ändamål. Det allmänt mest kända och använda fonetiska alfabetet är som nämndes tidigare IPA (International Phonetic Alphabet) vilket är en standard när det gäller fonetisk transkribering. 3.1.1 IPA-notationen IPA är som sagt en förkortning för International Phonetic Alphabet och är den standard man idag använder när man vill transkribera ljud och ord till en fonetisk representation. IPA har tagits fram 10

av International Phonetic Association (vilket också förkortas IPA) som är en organisation med gamla anor. Föreningen startades i Frankrike 1886 av språklärare och fick sitt nuvarande namn året därpå. Den första versionen av det fonetiska alfabet som idag är känt som IPA publicerades 1888. Alfabetet har genomgått ett antal revisioner genom åren, varav den senaste gjordes 1996. Syftet med IPAs alfabet har framför allt varit att ha ett universellt system med ljudsymboler som går att använda för att i skrift representera alla olika språkljud. Trots (eller kanske på grund av?) dess strävan att vara så universellt som möjligt, har man utgått från det latinska alfabetet för att beskriva de huvudsakliga ljuden, dvs man har t.ex. tilldelat det vanliga t-ljudet ett t som symbol för det ljudet osv. För de mer speciella ljuden finns en uppsättning diakritiska tecken vilka kan användas för att ytterligare särskilja vissa ljud från varandra. IPAs klassificering utgår från artikulatoriska principer vilket betyder att indelningen i fonem baserar sig på var och hur språkljuden bildas i talapparaten. Den huvudsakliga uppdelningen görs mellan konsonanter och vokaler och följer den indelning som beskrivs i avsnittet om fonetiska särdrag nedan. IPA-notationen är en bra och relativ enkel metod för att fonetiskt transkribera ord i skriftform. Problemet är att IPA använder sig av speciella tecken som inte ingår i den teckenuppsättning som en dator normalt använder, dvs de är inte normala så kallade ascii-tecken. I avsnittet nedan om fonetiska klasser och särdrag visas den uppställning av vokaler och konsonanter som IPA tillämpar i sitt alfabet. 3.1.2 SAMPA-notationen SAMPA är en förkortning av SAM Phonetic Alphabet där SAM står för Speech Assessment Methods. SAMPA är en ascii-notation av IPA vilket innebär att ljuden beskrivs med vanliga tecken, vilket förenklat kan sägas vara de tecken som vi normalt använder när vi skriver på en dator. Till detta används ascii-tecknen 37 till 126 i ascii-tabellen vilket motsvarar bokstäverna a till z, både som gemener och versaler, siffrorna 0 till 9 samt de tecken som normalt återfinns på tangentbordens siffertangenter såsom (&/()[]) etc. Till skillnad från IPA som är tänkt att vara ett generellt alfabet med tecken för alla ljud som finns i alla världens språk, är SAMPA mer språkberoende. Detta betyder att det inte finns en generell 11

uppsättning tecken, utan varje språk har sin uppsättning SAMPA-tecken för att täcka in det aktuella språkets behov. Till exempel är vokalerna för svenska uppdelade på långa, korta samt r-öppna vokaler. Denna sista grupp vokaler är de ä- och ö-ljud som i svenskan är mer öppna när de förekommer före ett r. Se bilaga 1 för en fullständig tabell över det svenska SAMPA-alfabetet. I SAMPAs teckenuppsättning för svenska finns även tecken för tonaccent, dvs variationer i tonhöjdsförloppet på ordnivå. Dessa tecken används dock inte i det Telia-lexikon som jag har använt och används därför heller inte i mitt program. Tonaccent är något som för vissa dialekter skulle kunna vara viktigt för att bestämma huruvida ett ord är mer eller mindre likt ett annat. T.ex. kan man tänka sig att ordet anden (fågeln) för vissa dialekter är mer likt ordet handen än vad det är likt ordet anden (~själen). I SAMPAs svenska fonemuppsättning markeras tonaccent med tecknet. Akut accent markeras med ett -tecken, medan grav accent markeras med två -tecken: anden "and@n (fågeln) anden ""and@n (anden i flaskan) 3.2 Fonetiska särdrag Det är tänkt att man i mitt program ska kunna jämföra fonemen i två ordsträngar med tre olika finhetsgrader där man med finhetsgrad menar hur pass fin indelning av fonemen man gör. Anledningen till att vilja ha olika nivåer på jämförelsen är att man ibland inte vill bry sig om t.ex. skillnaden på ett s-ljud och ett sch-ljud, utan är intresserad av större skillnader utan att programmet ser den totala skillnaden som alltför stor. I verkligheten där man t.ex. använder taligenkänning som en applikation över en brusig telefonlinje kan bruset göra att applikationen inte uppfattar skillnaden mellan just s- och sch-ljud. Därför kan det vara bra att kunna jämföra fonem på ett mer eller mindre grovt sätt. På den finaste nivån är varje fonem unikt och varje fonem tilldelas en egen kombination av fonetiska särdrag. Med särdrag menar vi här en kvalitet som det aktuella fonemet antingen har eller inte har. Sådana särdrag brukar kallas binära. På denna nivå finns även allofoner vilka är uttalsvarianter av ett språkljud och som styrs av dess omgivande ljud. Här representeras de av de ä- och ö-ljud som normalt är mer öppna när de förekommer framför bokstaven r. I den här rapporten beskrivs dessa allofoner som r-öppna. På den näst finaste nivån delar två eller flera fonem samma fonetiska egenskaper, t.ex. ser man hos vokalerna inte längre till särdraget r-öppen vilket gör ä-ljudet i orden här och läs likadana. För 12

konsonanterna gäller den andra nivån att jag inte ser till tonalitet (se avsnitt 3.2.2.2) vilket gör att fonemen /p/ och /b/ blir till samma språkljud, och därmed orden bara och para till samma ord. I den tredje och grövsta nivån ser jag för vokalerna bara till särdragen bakre, mellan och främre tillsammans med distinktionen lång/kort. För konsonanterna jämför jag då inte fonetiska särdrag, utan bara artikulationssätt vilket gör att flera konsonanter kommer att ses av programmet som samma fonem. De artikulationssätt som här används är: klusiler, frikativor, nasaler, lateraler, tremulanter och approximanter. Dessa klasser förklaras närmare i avsnitt 3.2.2.1. 3.2.1 Vokaler och deras särdrag Vid analysen av fonem gör man oftast den inte helt ovanliga distinktionen mellan vokaler och konsonanter. Konsonanterna delas traditionellt upp enligt artikulationsställe och artikulationssätt samt huruvida fonemet ifråga är tonande eller tonlöst. Vokalerna brukar beskrivas med en vokalfyrsiding vilket är en grafisk bild över munhålan och de positioner där de olika vokalljuden bildas. Vokalfyrsiding med IPAs fonetiska vokaltecken (MacMahon) Denna vokalfyrsiding visar vokalernas produktionsställe i form av tungryggens högsta punkt samt om det ligger längre fram eller bak i munhålan där front är främre delan av munnen och back är bakre delen av munhålan. Dessutom delar man in vokalerna i rundade och orundade vokaler vilket syftar på läpparnas inställning vid uttalet. Det är denna indelning jag utgår ifrån i mitt program för att dela in vokalerna i olika kategorier. De kategorier jag använder är bakre, främre, hög, låg, rund, lång och r-öppen. Se tabellen i bilaga 2 för 13

en fullständig översikt över de IPA-fonem, tillsammans med deras motsvarighet i SAMPA som jag använder. De flesta av de ovan nämnda kategorierna återfinns i vokalfyrsidingen ovan, dock inte alla, så för att få en förståelse för dessa begrepp ges här en kort beskrivning av dem: Främre vokaler Främre vokaler kallas de vokaler som uttalas då tungans högsta punkt befinner sig någonstans i den främre delen av munnen. Dessa vokaler återfinns på den vänstra sidan av vokalfyrsidingen och motsvaras av svenskans vokaler [ι]-vit, [ ]-vitt, [ε]-vet, [Ε]-väta, [α]-hall, [Θ]-kär, [ψ]-dyr, [Ψ]- trygg, [Ο]-sjö och [ ]-hör. Mellanvokaler Även om jag inte använder denna fonemgrupp explicit i mitt program, finns det naturligtvis vokaler som har denna kvalitet. Eftersom fonetiska särdrag är binära kan en mellanvokal beskrivas med särdragen bakre och främre, dvs. den är varken bakre eller främre vilket i sin tur gör den till en mellanvokal. De vokaler som räknas till denna grupp är de som uttalas med tungans högsta position i den mellersta delen av munnen. Dessa vokaler är [Π]-hund, [ ]-hus och [ ]-pojke. Bakre vokaler På samma sätt som de främre vokalerna bestäms även de bakre vokalerna av tungans högsta punkt, den här gången återfinns den i den bakre delen av munnen. Var exakt som dessa skiljelinjer går mellan bakre, mellersta, och främre delen av munhålan är svårt att definiera. Dock har man fastslagit vilka vokaler som traditionellt hör till vilken del. Vokaler som räknas som bakre vokaler är [Α]-hal, [Υ]-bott, [υ]-bo, [ο]-gå och [ ]-gått. Höga vokaler Denna vokalkvalitet kan också kallas för sluten vilket är den term som återges i vokalfyrsidingen ovan (close). Använder man distinktionen hög - låg som jag gör här, syftar man på om tungryggens högsta punkt är högt eller lågt placerad i munhålan. Om man istället använder distinktionen sluten öppen syftar man istället på passagen mellan tungans högsta punkt och gommen, dvs. om tungan är höjd blir utrymmet upp till gommen begränsat och vokalen därmed sluten. På samma sätt ökas utrymmet om tungans högsta punkt sänks och passagen då blir mer öppen. Jag använder mig av särdragen höga och låga vokaler i mitt program och får då även med mellanvokalerna på grund av 14

särdragens binära karaktär. Av svenskans vokaler är följande höga: [ι]-vit, [ ]-vitt, [ψ]-dyr, [Ψ]- trygg, [ ]-hund, [Υ]-bott, [υ]-bo. Medelhöga/medellåga vokaler Denna kategori är som sagt de vokaler som befinner sig mellan att vara höga och låga vokaler, dvs. vokaler producerade med tungans högsta punkt befäst på ett mellanhögt läge mot gomseglet. Dessa vokaler är följande: [ε]-vet, [Ε]-väta, [Θ]-kär, [Ο]-sjö, [ ]-hör, [ ]-pojke, [Π]-hund, [ο]-gå, [ ]- gått. Låga vokaler De låga vokalerna blir då de vars högsta tungpunkt befinner sig i ett lågt läge i munnen gentemot gomseglet. Dessa vokaler är: [α]-hall, [ ]- pöjk och [Α]-hal. Utöver dessa kvaliteter, använder jag särdragen rund, lång och r-öppen i mitt program. Särdraget rund syftar på om läpparna är rundade eller inte. Jämför det rundade fonemet [υ] som i bo med det orundade fonemet [ι] som i ordet vit. Denna distinktion kan naturligtvis ibland vara svår att göra eftersom gränserna är flytande. Även gränserna för särdragen lång och kort är mer eller mindre flytande. Lite krasst kan man säga att varje vokal i svenskan finns i två varianter; lång och kort. Som exempel kan nämnas fonemen [α] som i ordet matt, och [Α] som i ordet mat. Det sista särdraget är något som kallas för r-öppning och som jag har nämnt tidigare har detta att göra med att svenska språkljuden ä och ö ofta är mer öppna när de står framför ett r, som i orden här och hör. 3.2.2 Konsonanter och deras egenskaper Utmärkande för konsonanter, till skillnad från vokaler, är att de vid uttalet mer eller mindre blockerar luften i munhålan eller luftstrupen. Detta kan illustreras med skillnaden mellan ett p-ljud där luften helt blockeras innan den släpps ut (klusil), och ett v-ljud som bildas genom en betydligt svagare blockering av luften, och då med hjälp av tänderna och underläppen. Inom den artikulatoriska fonetiken, vilket är den inriktning inom fonetiken vi diskuterar här, är konsonanterna indelade i artikulationsställe och artikulationssätt, dvs i enlighet med var och på vilket sätt i talapparaten de produceras. IPA:s uppställning av konsonanterna bygger på dessa två kriterier och ser ut som följer: 15

IPAs uppställning över konsonantljuden. (MacMahon) Den översta raden visar artikulationsstället där den andra kolumnen från vänster (bilabial) betyder att fonemet uttalas med läpparna, dvs långt fram i munnen, medan den högra kolumnen innebär att uttalet sker långt bak i talapparaten med glottis (glottal), dvs stämläpparna. Där emellan sker en gradvis förskjutning framåt eller bakåt av fonemets produktionsställe. I kolumnen till vänster återfinns artikulationssättet, dvs. på vilket sätt fonemet i fråga har uttalats. Som man ser finns det både vita och gråa luckor i konsonanttabellen ovan. De vita luckorna visar en kombination av artikulationsställe och artikulationssätt som man inte har lyckats finna ett språkljud för. De färgade positionerna visar omöjliga kombinationer av artikulationsställe och artikulationssätt som alltså gör det omöjligt att producera ett sådant ljud över huvud taget. 3.2.2.1 Konsonanternas artikulationssätt Jag har tidigare bara nämnt konsonanternas artikulationssätt som allra hastigast i samband med presentationen av konsonanttabellen ovan. För att därför förstå jämförelsen på den grövsta nivån konsonanterna emellan, ska jag här bara helt kort redogöra för de artikulationssätt som är aktuella. Dessa är klusiler, nasaler, tremulanter, frikativor, lateraler och approximanter. Klusiler Klusilerna är en grupp konsonantfonem som innebär en fullständig avspärrning av utluften någonstans i talapparaten. Vid upphävningen av avspärrningen kan luften rusa ut varvid ett ljud uppstår. Svenskans klusiler är: " (pil), # (bil), $ (tåg), % (dag), & (bort), ' (bord), ( (kall) och ) (gå). 16

Nasaler Nasala språkljud är sådana vars uttal produceras genom att utluften passerar genom näsan istället för munnen vid uttalet. Svenskans nasaler är: * (mor), + (nog),, (barn), - (ange),. (sång) och / (symfoni). Tremulanter Tremulanter kallas den typ av fonem där någon del, t.ex. tungan eller tungspenen, börjar vibrera av luft-strömmen. Svenskans tremulanter är dels det vanliga svenska r-ljudet (0) som i riktigt. och dels ett mer bakre, grevligt r-ljud (1). Frikativor Frikativor är ljud som uppstår då artikulatorerna (t.ex. underläppen eller tungspetsen) närmar sig varandra och det uppstår en förträngning varvid en turbulens uppstår i luftströmmen. Svenskans frikativor är: 2 (far), 3 (var), 4 (sade), 5 (fors), 6 (kina), 7 ( stockholms-r ) samt 8(gilla). Lateraler Lateraler är fonem som uttalas genom att man vid uttalet låter luften passera längs tungans sida, eller sidor. De svenska lateralerna är 9 (lära) och : (pärla). Om man uttalar ordet pärla och håller ut på rl-ljudet, kan man tydligt känna luften passera på sidan av tungan. Om man dessutom tar i lite extra vid l-ljudets uttal, kan man lättare upptäcka vilken sida av tungan luften passerar på. Approximanter Approximanter är spåkljud som även de uppstår när artikulatorer närmar sig varandra, precis som med frikativa ljud. Skillnaden är att det för approximanter inte uppstår någon turbulens i luftströmmen. Exempel på en sådan approximant är svenskans j-ljud (!). 3.2.2.2 Konsonanter och särdrag De fonetiska särdrag jag har använt mig av för att beskriva konsonantljud på den finaste nivån i mitt program är följande: vokalisk, konsonantisk, sonorant, nasal, lateral, kontinuant, koronal, anterior, och tonande. Dessa fonetiska särdrag gör att vi kan ställa upp en särdragslista för olika fonem. En sådan skulle då kunna se ut som följer för fonemen /p/, /s/ och /l/: 17

Fonem: /p/ /s/ /l/ Vokalisk 0 0 1 Konsonant 1 1 1 Sonorant 0 0 1 Nasal 0 0 0 Lateral 0 0 1 Kontinuant 0 1 1 Koronal 0 1 1 Anterior 1 1 1 Tonande 0 0 1 Eftersom det är dessa 9 fonetiska särdrag som används i mitt program är det på sin plats att ge dem en kort beskrivning: Vokalisk Fonem som har detta särdrag kallas halvvokaler. De räknas sitt namn till trots till konsonanterna. Typiskt för de här fonemen är att luftströmmen inte stöter på något hinder vid uttalet, som annars är typiskt för konsonanter. Engelskans ord we inleds med en sådan halvvokal. I svenskan brukar man räkna j-ljudet i t.ex. ord som jag till den här typen av fonem. Konsonantisk Till skillnad från vokaliska ljud så stöter konsonantiska fonemljud (eller rättare sagt deras utluft) på ett mer eller mindre stort hinder när de uttalas. Till denna särdragsgrupp räknas alla vanliga konsonanter med undantag av så kallade likvidor (l- och r-ljud). Jämför dessa fonemljud med t.ex. ett p-ljud där utluften möter ett betydligt större motstånd vid uttalet. Sonoranter Den här gruppen av fonem innefattar egentligen både vokaler och konsonanter. Bland de sistnämnda räknas ovan nämnda halvvokaler, nasaler (m- och n-ljud) och likvidor (l- och r-ljud). Typiskt för sonoranterna är att luften har fri passage genom talapparaten när de uttalas, samt att de är tonande. Nasaler Nasaler beskrevs i avsnitt 3.2.2.1 ovan. 18

Lateraler Lateraler beskrevs i avsnitt 3.2.2.1 ovan. Kontinuanter Kontinuanter, eller kontinuerliga konsonanter är en grupp fonem som innefattar frikativor, likvidor (l- och r-ljud) samt j- och h-ljud. Man kan ibland se fonemgruppen kontinuanter lite slarvigt användas som skillnad mellan frikativor och klusiler där de förra är kontinuerliga konsonanter och de senare icke-kontinuerliga konsonanter. Denna fonemgrupp karaktäriseras av att ljudet pyser ut vid dess uttal. Koronaler Koronala språkljud är ljud som bildas med hjälp av främre delen av tungan. Ljuden bildas genom att denna del av tungan höjs mot baksidan av tänderna (dental) eller mot tandvallen (alveolar). Exempel på typiska koronala ljud är t.ex. l-, r- och s-ljud. Anteriorer Den här gruppen av fonem definieras av var någonstans i munhålan ljudet uppstår. Om ljudet produceras i den främre delen av munhålan (tandvallen och framåt), är konsonanten anterior, annars är fonemet, eller ljudet, icke-anteriort. Ljud som är anteriora är t.ex. m-, s- och p-ljud, medan k-, g- och ng-ljud då är icke-anteriora. Tonande Tonande ljud är helt enkelt ljud som uttalas med en vibration hos stämläpparna (stämbanden). Alla vokaler är tonande, medan ungefär hälften av konsonanterna har denna egenskap. Lite förenklat kan man säga att många konsonantpar bara skiljer sig genom att den ena medlemmen är tonande och den andra tonlös. Jämför t.ex. p- och b-ljuden där den förra är tonande och den senare tonlös. Den här genomgången av fonem och fonetiska grupper ska ses som en enkel översikt för att förenkla förståelsen för hur programmet fungerar i sin jämförelse av fonemsträngar. Den gör därför inte anspråk på att vara en heltäckande förklaring för hur fonetiska särdrag används inom fonologin. Vanligtvis används fonetiska särdrag för att beskriva olika fonetiska processer vilka jag har valt att inte gå in på i den här rapporten. 19

3.3 Stavelser Under arbetets gång har jag kontinuerligt testat olika sätt att förhålla sig till jämförelsen mellan fonemsträngarna. Det betyder att jag bl.a. har provat mig fram vad gäller vilka särdragslistor programmet skulle använda sig av, olika straffpoäng för jämförelser mellan vokaler och konsonanter osv. Något av det sista jag provade var att se till att programmet bara jämför ord som har lika många stavelser i sig. Anledningen till detta var att vi vid tester av programmet återkom till frågan vad som egentligen är fonetisk likhet och vad ord som låter lika har gemensamt med varandra. Det framkom då i dessa diskussioner att likalydande ord oftast har lika många stavelser i sig, och att det därför vore klokt att bara hålla sig till dessa. Stavelsen är en grundläggande fonotaktisk enhet vilken visar de minsta grammatiska kombinationer av vokaler och konsonanter som finns i ett ord. Stavelser är oftast uppbyggda kring en vokal som då fungerar som stavelsekärna kring vilken mindre sonora element hopar sig. Det finns flera olika metoder för hur man delar in ett ord i stavelser. En metod är att man först utgår från vokalerna i ordet varpå man sedan delar in konsonanterna i giltiga konsonantkluster. Hela processen skulle kunna beskrivas såsom följer: 1. Klassificera varje fonem i vokaler och konsonanter. 2. Dra en linje från vokalerna till stavelseskiktet (här markerat som @) 3. För konsonanterna till stavelsekärnan till höger så länge som det är fonotaktiskt. (Vad som är fonotaktiskt eller inte, är språkberoende och ganska intuitivt, t.ex. kan klu sägas vara grammatiskt i svenska medan tklu inte är det.) 4. För övriga konsonanter till stavelsekärnan till vänster. (De streckade linjerna) Detta skulle med denna metod ge oss följande stavelseindelning för ordet konsonantkluster : k o n s o n a n t k l u s t e r Ord k v k k v k v k k k k v k k v k Vokal/Konsonant @ @ @ @ @ Stavelsekärna Denna indelning gör att vi får stavelseindelningen kon-so-nant-klu-ster vilket gör att vi därmed har delat in ordet i 5 stavelser. 20

Jag har därför i mitt program utnyttjat vokalerna och räknat dessa som stavelser. Detta är egentligen att förenkla stavelsebegreppet lite. I vissa fall fungerar nämligen även konsonanter som stavelser. Exempel på detta kan vara de norrländska orden vattn, getn där det avslutande n-ljudet fungerar som stavelse. Detta är dock relativt ovanligt i svenskan och antagandet om att antalet vokaler stämmer med antalet stavelser är betydligt säkrare. 21

4 Beskrivning av programmet Nu när vi har beskrivit de grundläggande fonetiska begrepp och tekniker som används i mitt program, går vi vidare med att beskriva själva programmet och hur det fungerar. Som framkommit tidigare i rapporten ska mitt program mäta den fonetiska likheten mellan två ord och på så sätt producera ett likhetsmått. När vi här talar om ord handlar det om ord som på förhand har blivit fonetiskt transkriberade till en SAMPA-notation som används på Telia Promotor. Denna transkription bygger på den SAMPA-standard som finns för svenska (Wells 1995), men har dock några modifierade tecken. Dessa är de retroflexa ljuden /rd/ (bord), /rt/ (fort), /rs/ (fors), /rn/ (hörn) och /rl/ (pärla) som i Telias SAMPA-notation transkriberas med inledande versal; /Rd/, /Rt/ osv. Programmet i dess nuvarande form mäter alltså distansen mellan ett testord och alla ord som finns i ett lexikon. Detta lexikon innehåller ett antal lexikoningångar där varje rad innehåller ett ord. Varje rad börjar med ordets ortografiska representation, dvs ordet återgivet såsom det stavas. Därefter följer samma ord fast då transkriberat med den speciella SAMPA-notation som jag beskrev ovan. Om uppslagsordet i fråga har mer än en uttalsvariant visas detta genom ordet anges en gång till och att det andra uttalet anges (fonetiskt transkriberat) inom vinkelparenteser direkt efter den ortografiska representationen. Därpå följer samma fonetiska transkription en gång till, då i den högra kolumnen: almvik almvi:k alvesta alvesta andra andra andra<anra> anra aneby A:neby: ankomst ankomst ankomst<ankomst> ankomst Här kan vi se att lexikoningångarna andra och ankomst båda har två uttalsvarianter vardera; [andra] och [anra] respektive [ankomst] och [ankomst]. 22

4.1 Programmets in- och utdata Lexikonet som programmet arbetar mot ser i princip ut som listan med exempel ovan. Storleken kan vara allt från en rad, dvs ett ord, till en storlek där datorns arbetsminne sätter den övre gränsen. Programmet startas genom att det anropas med fyra argument där det första är det ord som ska mätas, dvs en i SAMPA transkriberad sträng av det ordet. Det andra argumentet är namnet på ett lexikon som ordet ska jämföras mot. Det tredje argumentet är graden av fonetisk finhet på jämförelsen. Denna anges som L1, L2 eller L3 där L1 är den finaste nivån och L3 den grövsta. Det fjärde och sista argumentet bestämmer hur många svar man vill att programmet ska returnera. Detta argument är frivilligt och kan hoppas över varvid programmet ger alla lexikonord som utdata. c:\ dist testord lex-fil nivå (antal) Formatet på programmets utdata är en numrerad lista med de mest lika orden i lexikonet tillsammans med deras likhetsvärde. Om vi skulle testa testordet testord mot lexikonet med namnet sts.txt för den finaste nivån och begära de fem bästa resultaten, skulle utdatat från programmet se ut så här: E:\EX-JOBB\KOD\Debug>Dist testu:rd sts.txt L1 5 Please wait while the distance is computed... 1 förstår (f2sto:r) Distance: 1.17 tisdag<tisdag> (tisdag) Distance: 1.17 2 tisdag<tista> (tista) Distance: 1.27 3 fästad (fe:sta:d) Distance: 1.33 tisdag<ti:sdag> (ti:sdag) Distance: 1.33 tisdagen<tistan> (tistan) Distance: 1.33 4 sexton (sekston) Distance: 1.38 5 pingstdag (pinstda:g) Distance: 1.43 Från listan kan vi se att programmet tyckte att orden förstår [f2sto:r] och tisdag (då med uttalsvarianten [tisdag]), var de ord som låter mest lika ordet testord [testu:rd]. Till höger i listan ser man alltså distansmåttet där ett lågt tal visar på en större likhet än ett stort tal. För att beräkna detta värde, använder programmet binära särdragsvektorer (se avsnitt 4.2) som innehåller en mängd fonetisk information om fonemen. Det ska i sammanhanget sägas att det lexikon som jag här testade ordet mot är ett lexikon med information om tågstationer och ortsnamn, alltså ett ganska specialiserat lexikon där allmänna ord saknas som i vanliga fall skulle låta mer likt testord än vad som visas här. Det bör också understrykas att programmet inte talar om huruvida ett ord är fonetiskt 23

likt ett annat ord eller inte, utan bara hur likt det är. Det här betyder att trots att förstår och tisdag enligt programmet är de ord som är mest fonetiskt lika ordet testord, betyder det inte att de är lika. 4.2 Programmet och Levenshtein Programmet använder Levenshtein-algoritmen för att traversera de två fonemsträngar som ska jämföras. Levenshtein-algoritmen beskrevs i avsnitt 2.3 ovan och principen att göra en matris av fonemsträngarna är densamma. Vad som skiljer mitt program från Levenshteins vanliga algoritm, är att istället för att jämföra de aktuella fonemen i matrisen, hämtar programmet ett värde som är jämförelsevärdet mellan de två fonemen. Detta fungerar så att varje fonem representeras av en binär sträng, dvs har en sträng av 1:or och 0:or knuten till sig: "r", "1110011010", "f", "0100010100", "s", "0100011100", "t", "0100001100", "Rd","0100001010", // rysa // far // sann // tik // bord Här ser man fonemet till vänster om binärsträngen, och längst till höger återfinns ett ordexempel för tydlighetens skull. Det exempel som visas ovan är binärsträngar från den finaste nivån, dvs. nivå L1 där varje fonem är unikt och därmed har en unik binärsträng. Den binära strängen visar huruvida fonemet har något av följande fonetiska särdrag: (från vänster till höger) vokalisk, konsonaniskt, sonorant, nasal, lateral, kontinuant, koronal, anterior, tonande och vokalmarkör. Detta sista särdrag (vokalmarkör) används bara av programmet för att skilja mellan vokaler och konsonanter. Detta sker i programmet genom att man vid jämförelsen av två fonem först tittar på fonemsträngarnas respektive högra tecken (etta eller nolla). Om dessa båda bitar antingen är nollor eller ettor kan en jämförelse ske. Om dessa två bitar är olika har man att göra med en konsonant och en vokal, vars jämförelse tilldelas ett fast värde istället för att man jämför deras respektive särdragssträng. På samma sätt representeras vokalerna även de av binära strängar: "e", "01000001", // vett "2", "01001001", // höst "o:","10001101", // gå "u:","10101101", // bo Vokalernas binärsträng är dock lite kortare vilket har att göra med att de har ett mindre antal särdrag som skall jämföras mot varandra. Vokalernas särdrag är från vänster till höger: bakre, främre, hög, låg, rund, lång, r-öppen samt vokalmarkör. 24