« Programspråket Icon och stavningen av "Henning Mankell" | Main | Skapa strängar från reguljära uttryck - eller: Tystnaden de senaste dagarna »

april 23, 2004

Fortsatt stavning av "Henning Mankell". Samt lite om agrep

I Programspråket Icon och stavningen av "Henning Mankell" skrevs om möjliga stavningar av "Henning Mankell". Här följer en uppdatering kring detta.

Language Log finns det, förutom den artikel som inspirerade mig att skriva programmet: The mysteries of... what's his name?, några andra bloggningar i ämnet:

I Henning Mangled görs en intressant google-analys av de olika stavningarna.

Henning Mankellismus in icon innehåller en uppmaning om hjälp kring det prinicpiella problemet: I've been hoping, though, that someone will follow up on David Beaver's post by writing a program to help with (various approaches to) estimating the statistical density of what David called "the Henning Mankell morpheme space".. Där finns, roligt nog, också ett pek till min förra anteckning.

agrep - approximate grep
I näst sista stycket på The mysteries of... what's his name? nämns sökprogrammet grep som kan hantera reguljära uttryck.

Om man nu inte vill skriva slika uttryck kan man använda agrep, approximate grep, som även tillåter felstavningar. Programmet är skapat av Sun Wu och Udi Manber (en gammal husgud) från University of Arizona,

Man anger antalet tilllåtna felstavningar genom parametern -# där # är ett heltal från 0 till 8, där 0 innebär att det inte ska vara någon felstavning alls.

Låt oss nu testa detta på den fil som skapades av Icon-programmet (se föregående blogganteckning) när vi tillåter 1 fel:

agrep -1 "Henning Mankell" pattern_generation.txt

Då hittas följande varianter:

Henking Mankell
Hening Mankell
Henning Menkell
Henning Mankell
Henning Mankall
Henning Manell
Henning Mannell
Hanning Mankell

Om man använder parametern -8 (dvs 8 fel) hittas 547 av de 648 varianterna. Men med så många tillåtna fel kommer programmet att hitta en massa andra irrelevanta ord också, så det är inte speciellt användbart. Det normala är att man tillåter 1 eller kanske 2 fel.

En annan feature i agrep är parametern -p ("find records in the text that contain a supersequence of the pattern") som hittar alla strängar som matchar initialerna. T.ex. agrep -p HM fil hittar alla strängar som kan bildas av två intilliggande ord som börja på "H" respektive "M". För den specifika uppgiften är detta också overkill.


Agrep använder edit distance för att avgöra antalet felstavningar, dvs räknar ut avstånden mellan orden. För mer om detta se t.ex. de Postscript-filer som finns i agrep-katalogen. Se även blogganteckningen Skapa stavfel.


Det finns ett annat system för approximerad sökning: TRE (0.6.6 i skrivande stund) som har en version av agrep som verkar skoj.
TRE includes a version of the agrep command line tool for approximate regexp matching in the style of grep. Unlike other agrep implementations (like the one by Sun Wu and Udi Manber from University of Arizona available here) TRE agrep allows full regexps of any length, any number of errors, and non-uniform costs for insertion, deletion and substitution.

Posted by hakank at april 23, 2004 10:22 FM Posted to Reguljära uttryck etc | Språk

Comments

Det är väl ingen konst att komma ihåg vad Henning Mankell heter - jag kommer t.o.m. ihåg vad Antoine de Saint-Exupery heter, exempelvis. Eller Quintus Horatius Flaccus. Uttalet är däremot mycket svårare. Som vi vet envisas HM med att efternamnet skall utalas med betoning på första stavelsen med akut accent. Det är också det normala och naturliga sättet att uttala ett sådant ord inom det tyska språkområdet vilket ibland låter litet lustigt i våra öron när man uttalar svenska namn, t.ex. Stóck-holm eller Málm-o. När HM var aktuell här för några veckor sedan ville emellertid alla kulturknuttar i TV och radio visa att man minsann visste hur svenska namn skulle uttalas och så blev det genomgående Man-kéll. Rätt fast fel alltså.

Ja det vara bara det jag ville säga.

Posted by: Bengt O. at april 23, 2004 01:33 EM

Bengt:

Imponerande! Själv måste jag ta till minnesknep och annat för att komma ihåg stavningar av namn som Friedrich Nietzsche.

När du skriver "kommer ihåg vad X heter", innebär det också att du vet den exakta stavningen? Gäller detta även alla alternativa stavningar, t.ex. Heraklitus, Herakleitos, Heraklit etc? Om man ska söka efter namnen på google gäller det att komma ihåg varianterna.

Just vad gäller "Henning Mankell" är det ganska lätt eftersom vi vet att Henning är hans förnamn; det är ju ett förnamn som vi är rätt vana vid. Men för de som inte har blivit utsatta för namnet "Henning" tidigare är det nog inte så lätt.

Det är ungefär som när jag försöker kommma ihåg kinesiska namn: man har inget bekant att hänga upp dem på. Naturligtvis blir det enklare efterhand, men det är inte så lätt. Troligen skulle det vara lättare om jag kunde kinesiska.

En av mina lite nyare husgudar, Brian Arthur, har jag haft lite svårt att komma ihåg det exakta namnet på. Eller var det Arthur Brian? :)


Mitt efternamn (Kjellerstrand, alltså) är uppenbarligen inte heller helt enkelt att komma ihåg den exakta stavningen på. Några av de vanligaste alternativen är: Källerstrand, Kjellstrand, Källstrand, Källerstad och Kjellerbrand.

Ett reguljärt uttryck för dessa samt några ytterligare alternativ skulle kunna vara:

K(je|ä)ll(er|ar)?(st|b)r?an?d

där "?" efter innebär att det kan vara 0 eller 1 förekomst. Det motsvarar följande alternativa namn (automatiskt genererade med samma teknik som tidigare):

Kjellarbad
Kjellarband
Kjellarbrad
Kjellarbrand
Kjellarstad
Kjellarstand
Kjellarstrad
Kjellarstrand
Kjellbad
Kjellband
Kjellbrad
Kjellbrand
Kjellerbad
Kjellerband
Kjellerbrad
Kjellerbrand
Kjellerstad
Kjellerstand
Kjellerstrad
Kjellerstrand
Kjellstad
Kjellstand
Kjellstrad
Kjellstrand
Källarbad
Källarband
Källarbrad
Källarbrand
Källarstad
Källarstand
Källarstrad
Källarstrand
Källbad
Källband
Källbrad
Källbrand
Källerbad
Källerband
Källerbrad
Källerbrand
Källerstad
Källerstand
Källerstrad
Källerstrand
Källstad
Källstand
Källstrad
Källstrand


Några av den, t.ex. "Källstand" och "Kjellarbrad" är dock inte så realistiska såsom felstavningar eftersom de låter inte som svenska efternamn, möjligen som svensk-engelska hybrider.

För övrigt spelade jag i en musikorkester vars arbetsnamn var "Kjellerstrands Källarband".

Posted by: Håkan Kjellerstrand at april 23, 2004 06:51 EM