« Svenska synonymer | Main | Varför flyger malen som den gör? En NetLogo-modell »
februari 13, 2006
Svenska synonymvägar
Gårdagens Svenska synonymer och begreppet "surfa synonymer" inspirerade till ett annat program: Svenska synonymvägar.
Programmet utgår från ett ord och dess synonymer (om sådana finns) och visar deras synonymer, och sedan deras synonymer osv. Man kan notera att ofta försvinner orginalordets betydelse snabbt så och det blir helt andra spår att vandra. Därav namnet synonymvägar.
Exempel
Ett väldigt litet exempel är synonymvägen för fågel som endast innehåller 5 ord. Det ser ut så här:
fågel
fjäderfä
flygfä
pippi
höns
Synonymerna länkas alltså, vilket gör att man kan klicka runt så att man bli alldeles snurrig i huvudet....
Som sagt, detta var ett litet exempel med endast 5 ord i synonymvägen. Det finns betydligt större vägar, t.ex. för ordet känslig där vägen har 6682 ord. OBS: Det tar en stund för programmet att lista ut vägen, och sedan för webbläsaren att rendera sidan (som är på över 1 Mb).
Not
Synonymlistan är exakt samma som används i programmet Svenska synonymer, och som presenterades i blogganteckningen Svenska synonymer.
En not av mer teknisk natur är att jag hellre skulle vilja visa detta som en graf med bågar och noder för att visa kopplingarna (synonymer) mellan orden.
Eventuell vidare utveckling
Förutom att presentera det som en synonymgraf vore det intressant att se hur lång den största vägen är, hur många "isolerade synonymöar" det finns (där endast ett fåtal ord sammanbinds med varandra men inga andra), och överhuvudtaget analysera mer med grafteoretiska eller komplexa nätverkstekniker. Det bli eventuellt ett senare projekt.
Se även
Blogganteckningen Svenska synonymer
Programmet Svenska synonymer
För vidare utveckling och analys kan möjligen litteratur och redskap som presenteras i Social Network Analysis och Complex Networks - En liten introduktion vara av intresse.
Uppdatering 1 - angående synonymkluster
Det skapades ett analysprogram för att studera de olika synonymklustren. Ett kluster innebär alltså att oavsett vilket ord man söker i klustret kommer det att visas endast dessa ord, där endast den inbördes ordningen förändras beroende på vilket ord man börjar på.
Intuitionen som nämndes i kommentaren till Simon nedan stämde relativt bra: Det finns ett enda mycket stort kluster ("Den Stora Vägen", "Det Gigantiska Klustret") som innehåller 6682 ord (känslig-klustret), därefter ett på 32 ord (bandit), ett på 30 (bastard) etc.
Fördelningen av klusterstorlekn är som följer. Uttolkning: det finns 1269 synonymöar (synonymgränder?) med endast 2 ord, 271 stycken kluster som innehåller endast 3 ord etc, och som nämnts ovan ett kluster med 6682 ord. Power law, någon?
Klusterstorlek: Antal kluster
2: 1269
3: 271
4: 87
5: 57
6: 34
7: 21
9: 13
8: 8
11: 5
10: 5
16: 4
12: 4
6682: 1
32: 1
30: 1
24: 1
23: 1
21: 1
20: 1
19: 1
15: 1
Filen synonym_kluster.txt innehåller samtliga kluster, enligt strukturen:
Antal ord i klustret: Orden som ingår i klustret (alfabetiskt sorterade)
Filen är sorterad alfabetiskt efter första ordet i klustret.
Kommentar: I och med att det endast finns ett mycket stort kluster är strukturen relativt stabil i meningen att om man lägger till en synonym så påverkas inte resultatet så mycket. Det är dock kvar att studera vad som händer om man tar bort en eller ett fåtal synonympar från det stora klustret. Det är möjligt att det finns ett enda synonympar som håller ihop två (mindre) kluster till detta stora. Men det tänker jag inte kolla in i kväll...
Uppdatering 2 - Kortaste synonymvägen mellan två ord
[Senare not: Det uppstod tyvärr en tankebugg vid ursprungsbefolningen av talen i listan, och som upptäcktes efter att Simon kommenterat resultatet. De tidigare och felaktiga värdena är kvar men överstrukna för att kommentarerna ska bli förståeliga; samt i ärlighetens namn.
Trots denna nesliga händelse fortsätter jag hävda att simuleringar är ett bra sätt att räkna ut mer komplicerade sannolikheter.]
Simon föreslog i sin kommentar en trevlig applikation: Kortaste synonymvägen mellan två ord.
Klusteranalysen ovan gav dock upphov till en fundering hur stor sannolikhet det är att två ord verkligen har en synonymväg. Om de två orden överhuvudtaget finns i listan (av cirka 25000 ord) krävs det även att de tillhör samma kluster, annars kan man inte skapa någon synonymväg. Om orden finns i det stora klustret (med 6682 ord) kan det vara intressant, liksom om orden finns i de andra större klustren (säg större än 10 ord). Man kan här notera att det finns hela 1787 kluster (se ovan för den exakta fördelningen).
För att räkna ut sannolikheten att två ord tillhör samma kluster (om båda orden finns i listan) gjordes en R-simulering enligt följande:
* Varje kluster representeras av ett unikt tal, och antalet ord bestämmer hur många gånger detta tal finns i en lista (kallad "kluster" i R-koden nedan). Funktionen rep(tal, antal)
kan användas för att populera listan med talen.
* Ur denna stora lista av tal dras slumpmässigt två element.
* Om de två dragna talen är lika motsvarar det samma kluster, vilket alltså ger en synonymväg. Är talen olika finns ingen sådan väg
* Detta görs ett antal 1000 gånger.
R-koden för själva simuleringen (med 100000 dragningar) ser ut så här:
> sum(replicate(100000, diff(sample(kluster,2)))==0)/100000
[1] 0.02567
0.33059
Resultatet innebär att det är cirka 2.6% 33% sannolikhet att två tal (ord) tillhör samma kluster. Det är inte mycket. Det är ju inte så pjåkigt.
Ovanstående resultat förutsätter alltså att båda två orden fanns i synonymlistan, vilket troligen inte är fallet för en normal användning av ett sådant program.
Varpå nästa analys göres: Om vi nu antar att det finns en möjlighet att användaren av systemet anger något av - säg - 75000 ord som inte finns i synonymlistan, hur stor är då sannolikheten att det finns en väg mellan dessa ord.
Här fortsätter simuleringen med samma princip och lägger 75000 unika tal en enda gång, vilket motsvarar det "klusterlösa" orden som inte finns i synonymlistan.
Motsvarande simulering (med 10000 dragningar) ger vid handen att sannolikheten är väldigt liten, nämligen endast:cirka 0.00051 (0.5 promille) 0.007 (7 promille). Det är ännu mindre. Det är inte så mycket.
Trots detta nedlyftande resultat finns det möjlighet att Simons föreslagna program ser världens ljus... Trots alternativt tack vare ovanstående resultat finns det möjlighet att någon variant av Simons föreslagna program kommer att se världens ljus...
Det finns även en tanke att från en ordlista med cirka ord lägga till böjningsformer till de synonymfilens grundord. Detta skulle göra sannolikhet för att orden finns med i (den då utökade) synonymlistan större.
Tillägg till Uppdatering 2
Vid uppdateringen av föregående analys (i "Uppdatering 2") testades även med att anta att det skulle vara färre ord än 75000 som inte fanns i synonymlistan. För 25000 sådana extra ord blir sannolikheten cirka 3.3% för en synonymväg. Möjligen är både 75000 och 25000 orealistiskt många. Här nedan är sannolikheten (inte procent) för några värden av antal icke-synonymord ("extra ord").
Antal extra ord | Sannolikhet (simulerad) att två sökord ingår i sammakluster |
75000 | 0.007 |
25000 | 0.033 |
10000 | 0.097 |
5000 | 0.161 |
1000 | 0.281 |
Det är troligen en uppgift för kognitiva psykologer att lista ut hur stor ens mentala ordlista är när man använder denna typ av tjänster. En möjlighet är att logga de ord som används i det eventuella framtida program och sedan göra lite analyser. Obs: ingen annan information än orden skulle i så fall loggas; inget IP-nummer, inget datum, utan endast de två potentiella synonymvägsorden..
Posted by hakank at februari 13, 2006 07:52 EM Posted to Program | Språk
Comments
Man kunde kanske få ange två olika ord, och så räknar programmet ut den kortaste vägen mellan dem. Det finns nån sång eller ramsa som är sådan, typ Livet är en strid, striden är en kamp, kampen är en häst, etc.
http://www.tvsk.se/tidskrifter/pequod/pequod12/pequod-hedlund.html
Posted by: Simon at februari 13, 2006 08:23 EM
Simon: Ah, naturligtvis! "Shortest synonym path" är given.
OuLiPo-länken är ett bra tips. Vad gäller deras och liknande tekniker finns det en uppsjö att inspireras av. Det skrev lite om denna synnerligen kreativa grupp i anteckningen OuLiPo
För övrigt har skrivits även om annan "nöjeslingvistik" (som är en bättre översättning av engelskans "recreational linguistics" än "ordligheter"): Ordligheter - Recreational Linguistics som är en annan inspirationskälla att ösa ur...
Sedan har jag noterat att när man "manuellt" leker med programmet kommer i alla fall jag antingen kommit till Den Stora Vägen (aka Det Stora Klustret) med de där 6682 orden som "känslig" tillhör (liksom "sex") eller till små vägar på bara ett par ord ("öar"). Finns det ingen medelstor väg? Får väl skriva ett litet program för detta...
Hmm, hittade iofs precis personligen med 9 ord.
Posted by: hakank at februari 13, 2006 08:46 EM
Vänta nu. Om 6682 ord tillhör det stora klustret så är det väl ca 25 % chans att ett slumpmässigt valt ord hamnar i det, och då är det väl roten ur 25 % = ca 5 % chans att båda tillhör det stora klustret? Eller jag kanske räknar helt fel här.
Man skulle ju också kunna göra kortaste synonymvägen bara av det stora klustret, och plotta alla alla klustrets ord på en skärm, och så finge man välja två ord och så kunde man visualisera vilka ord de drog med sig på sin synonymväg, eller så markerar man bara ett ord och pseudofärgar alla andra ord efter hur nära eller långt bort de är från de valda ordet...
Kul idé, det här projektet du har hittat på!
Posted by: Simon at februari 15, 2006 09:18 FM
Simon: Tack. Din common sense-analys gjorde att jag hittade en tankelapsus vid kodningen av simuleringen. Anteckningen är uppdaterad med korrigerade värden. Det gjordes även några nya beräkningar.
Vad gäller ditt utökade förslag om en grafisk och grafisk synonymgraf så säger jag bara: Trevligt, vi får se. :-)
Posted by: hakank at februari 16, 2006 07:27 EM
Jag provade naturligtvis att synonymsurfa efter första anteckningen och funderade på hur lång tid det skulle ta för någon intelligent person att lista ut hur jag kom från "leta" till "åtrå". I och med detta andra program blev det ju lite för enkelt att bakåtspåra (svengelska: trackbacka). Genom att skriva leta och sedan söka efter åtrå (det låter mer ekivokt än det är) kan man ju relativt snabbt nysta sig tillbaks till toppen på listan och ordet leta.
Att göra ett program för detta överlåter jag åt någon mer lämpad :)
Posted by: Håkan (hakke) at februari 17, 2006 01:36 EM
Hakke: Kul att även du synonymsurfar.
När det gäller din säkerligen fantastiska idé så är jag lite osäker på vad du menar med "lista ut hur jag kom från ...".
Det låter - å ena sidan - som det kortastevägenprogrammet som Simon föreslagit, men även - dvs å andra sidan - som någon (para?)psykologisk moj där programmet ska lista ut exakt hur du klickade, dvs ett försök att lista ut din "inre algoritm" (om du använde dig av någon sådan).
Jag misstänker - på vissa boliner - att du avser antingen "å ena sidan" alternativt en tredje sida.
Problemet med spårning av väg från ord A till ord B är att ju flera synonymer det finns för mellanorden desto fler alternativa vägar finns det och desto svårare är det att finna en entydig väg. Däremot finns det metoder för att finna den kortaste vägen eller åtminstone en av de kortaste vägarna.
(En väg som man helt kan utesluta är vägen till "rom" eftersom det inte finns något sådant ord i ordlistan. Och så var den sanningen vederlagd.)
Två småsaker har nu också lagts till i programmet:
- möjlighet att slippa se betygen
- möjlighet att visa ordens id (unika för just denna väg), vilket kan underlätta om man vill systematiskt synonymvandra.
Posted by: hakank at februari 18, 2006 09:24 FM
Angående kortastevägenprogrammet.
Vi bör inte stirra oss blinda för att finns den kortaste (=snabbaste) vägen. Går inte livet tillräckligt snabbt redan?
Det finns ett intressant alternativ till den kortaste vägen och det är den "bästa", dvs den väg som har bäst betyg. Exempel: det kan finnas en kortast möjlig väg mellan orden A och B men den använder endast synonymer med betyg 3, och sedan kan det finns en längre väg där samtliga betyg är 5. Vilken av dessa vägar är att föredraga?
Dessa två metoder kan jämföras med att snabbast ta sig genom tråkiga områden för att komma till en viss plats respektive den lite längre vägen men där man upplever fantastiska naturupplevelser samtidigt (eller går förbi den där glassaffären för att köpa sin favoritglass).
Naturligtvis borde båda dessa metoder implementeras.
För att återknyta till den inledande kommentaren: Har vi inte nog av att hela tiden sträva efter bästa betyg? Snabbast och bäst. Varför inte nöja sig med en väg, t.ex. slumpmässigt påkommen? Troligen lär man sig mycket även på en sådan resa.
Posted by: hakank at februari 18, 2006 09:40 FM