Tweak-Test

advertisement
Eindwerkstuk voor Corpustaalkunde:
Tweak-Test
van Sformula, WordNet, Naked
Keywords & Random Retrieval
Wybo Wiersma, 1298577
Inhoudsopgave:
Inleiding:
1
Onderzoeksopzet: Waar naartoe, Waarvandaan
2
Wegen: Random Retrieval & Naked Keywords
3
Wegen: Sformula
4
Wegen: WordNet
8
Middelen: De tools
10
Referentiekader Resultaten: Naked & Random
13
Resultaten: WordNet
14
Tweaks: Sformula
20
Resultaten: Sformula
27
Conclusie
29
Kanttekeningen
30
Literatuurlijst:
31
Tweak-Test – Wybo Wiersma
1
Inleiding:
Het bepalen van de semantische relaties tussen woorden is een belangrijke taak voor
de Computationele Taalkunde en Information Retrieval. Het wordt bijvoorbeeld toegepast
voor het disambigueren van de betekenis van een woord in een bepaalde context. De
specifieke betekenis van een woord heeft meestal gevolgen voor de vraag of een document
relevant is. Ook is het vaak zo dat de manier waarop een regel van toepassing is op een woord
ambigu is totdat de precieze betekenis van dat (of een ander) woord in die zin vaststaat.
Semantische gelijkheid is zelf echter ook een ambigu begrip. Semantiek kan namelijk voor
verschillende contexten gedefinieerd worden. Men kan bijvoorbeeld de semantische vector
voor een woord op documentniveau berekenen (dus per document een specifieke semantische
vector). Deze kan vervolgens afgezet worden tegen de semantische betekenis van de
opgegeven combinatie van zoekwoorden. Wanneer er veel gelijkenis is tussen de twee
vectoren, wordt het document relevant bevonden. Een veelbelovende uitwerking van deze
methode wordt beschreven door Hongyan Jing en Evelyne Tzoukermann.1
Een andere interpretatie van semantische afstand is corpusbreed. In dat geval wordt de
gemiddelde semantische afstand tussen een sleutelwoord en een ander woord corpusbreed
bepaald. Het grootste nadeel van deze methode is dat de informatie betreffende de specifieke
rol die een woord speelt binnen een bepaald document verloren gaat. De semantische relatie
wordt een gemiddelde van alle semantische relaties die tussen de twee woorden bestaan
binnen het gehele corpus. Deze variant van semantische afstand wordt hier gehanteerd.
In dit essay beschrijf ik een aantal verschillende algoritmes voor het berekenen van
semantische gelijkheid. De methodes van aanpak zijn in vier groepen te verdelen: Random
Retrieval, Naked Keywords, Sformula en tot slot WordNet-gebaseerd. De eerste twee zijn
referentiealgoritmes. Dezen hebben weinig tot niets te maken met semantische afstand, maar
ze worden ingezet als referentiepunten voor het beoordelen van de performance van Sformula
en de WordNet-algoritmes.
Het gehanteerde criterium in dit onderzoek is de mate waarin een algoritme/methode
in staat is tot het achterhalen van duidelijk te onderscheiden semantische trendgroepen in
grote hoeveelheden data. Verschillende methodes zullen verschillende scores behalen voor
verschillende toepassingen. Information Retrieval is geen uitzondering op dit paradigma. De
behaalde ratings in dit onderzoek zijn dan ook toepassingsgericht. De F-scores bijvoorbeeld,
liggen binnen dit onderzoek stukken hoger dan in onderzoeken die betrekkin hebben op
TREC-data. En ook het hanteren van de corpusbrede definitie van semantische afstand is iets
wat bij uitstek zinvol is voor deze toepassing, maar wat waarschijnlijk een stuk minder goed
past bij doelstellingen die meer precisie vergen.
Hieronder bespreek ik eerst de onderzoeksopzet en het corpus. Vervolgens bespreek ik
de algoritmes, hun taalkundige aspecten en de gebruikte tools. Dan behandel ik de resultaten
van het onderzoek. F-scores, precision/recall-grafieken en expand rates2 staan hierbij centraal.
Bij Sformula komen hier ook de getweakte parameters, en hun (taalkundige) effecten aan bod.
Tot slot bespreek ik een aantal problemen in het onderzoek. Ook passeren de zwakheden en
de mogelijke verbeteringen van de Sformula hierbij de revue.
Hongyan Jing, Evelyne Tzoukermann, ‘Information Retrieval based on Context Distance and Morphology’
Annual ACM Conference on Research and Development in Information Retrieval: Proceedings of the 22 nd
annual international AMC SIGIR conference on Research and development in information retrieval (1999).
2
De expand-rate is de mate waarin de query, gewogen naar de woord-voorkomens in het corpus, is geexpandeerd dankzij het algoritme. In het hoofdstuk “Resultaten: WordNet” wordt dit verder uitgelegd.
1
Tweak-Test – Wybo Wiersma
2
Onderzoeksopzet: Waar naartoe, Waarvandaan
Het doel van het onderzoek is het evalueren van een aantal algoritmes voor het
bepalen van de corpusbrede semantische gelijkheid van twee woorden. Dit is getest door de
algoritmes te gebruiken voor query expansie. Query expansie is het toevoegen van woorden
aan een reeks zoekwoorden op basis van de van tevoren opgegeven sleutelwoorden. In dit
onderzoek zijn twee queries met bijbehorende semantische clusters gebruikt. De
sleutelwoorden waren: “prescription, medications, approved, doctors” voor het eerste cluster,
het zogenaamde prescription-drugs cluster (PDC), en de woorden “money, transaction,
account, bank” werden gebruikt voor het Afrika-mail cluster (AMC). De sleutelwoorden zijn
bepaald door een aantal significante woorden te selecteren uit de woordfrequentielijst van het
PDC, resp. AMC cluster. Ook zijn er een aantal runs gedraaid waarin slechts 1 sleutelwoord
als input gebruikt is voor de beide clusters;“doctors” voor het PDC cluster en “bank” voor het
AMC cluster.
De clusters die als gold standard data zijn gebruikt, zijn (voor Inleiding II) door Bart
Alewijnse uit het SpamCorpus geëxtraheerd. Hij heeft dit semi-automatisch gedaan. Eerst met
de hand en vervolgens met het clusteringprogramma Rainbow. Het gebruikte deel van de data
is van voldoende kwaliteit is om het hier als gold standard data te gebruiken. Wel is het zo dat
het feit dat de data deels geselecteerd is door een computerprogramma een aantal implicaties
heeft voor de resultaten van het onderzoek. Zo zal de data per cluster bijvoorbeeld in grote
mate gelijkvormig zijn (voor de computer). De twee clusters bevatten ongeveer 1125 mails
per stuk. Een derde cluster, waarin niet-gerelateerde mail zit (hacker-mail, sex-mail, etc…), is
ongeveer 2250 mails groot. Voor dit laatste cluster zijn geen queries opgesteld. Dit cluster
dient als “ruis”, dus als bron voor false positives.
De clusters zijn afkomstig uit het SpamCorpus. Het SpamCorpus heb ik voor een
eerdere opdracht (Inleiding II) samengesteld, schoongemaakt (attatchments verwijderd etc…),
kortom gebruiksklaar gemaakt. De mails in het SpamCorpus zijn vanaf 1997 verzameld door
Paul Wouters, die een site runt waarop verscheidene spam-statistieken te zien zijn.3 Het
corpus bevat op dit moment 72.091 mails en 15.55 miljoen woorden (iets minder dan 216
woorden per mail). De drie clusters samen vormen het subCorpus. Dit bevat 4507 spam mails
en 1.15 miljoen woorden (iets minder dan 255 woorden per mail).
Er zijn andere manieren dan query expansie om algoritmes voor het berekenen van
semantische afstand te benchmarken. Zo kan men kijken of de uitkomsten overeenkomen met
de eigen intuïtie. Wat ook kan is het gemiddelde van de intuïties van vele proefpersonen
nemen en op basis daarvan bepalen hoe goed een algoritme werkt. Alexander Budanitsky en
Graeme Hirst hebben dit o.a. in hun artikel gedaan. Een andere aanpak die zij gebruiken is het
testen van de algoritmes voor een concrete toepassing (zij gebruiken het voor contextdisambiguatie).4 Mijns inziens is het kijken in welke mate mensen iets gerelateerd achten te
subjectief en te algemeen. Daarom kies ik hier ook voor de toepassingsgerichte aanpak.
De prestatie van een algoritme is namelijk alleen maar te meten in relatie tot een
bepaald doel. Relatie-indexen opleveren die het gemiddelde zijn van wat mensen vinden is
slechts één doel van de vele. Een doel wat bovendien niet eens zo veel zegt over de prestaties
van een algoritme binnen computationele toepassingen aangezien de “belevingswereld” en de
cognitieve eigenaardigheden van computerprogramma’s (die immers in de praktijk daarna
met de resultaten van het algoritme aan de slag moeten) (nog lang) niet te vergelijken zijn met
die van mensen.
3
http://www.xtdnet.nl/paul/spam
Alexander Budanitsky, Graeme Hirst, ‘Semantic distance in WordNet: An experimental, application-oriented
evaluation of five measures’ Workshop on WordNet and Other Lexical Resources in the North American
Chapter of the Association for Computational Linguistics (2001).
4
Tweak-Test – Wybo Wiersma
3
Wegen: Random Retrieval & Naked Keywords
De referentiealgoritmes zijn Random Retrieval (hiervan 2 varianten) en Naked
Keywords. Naked Keywords houdt in het zoeken met de ongewijzigde sleutelwoorden. In ons
geval voor de beide clusters dus “prescription, medications, approved, doctors” en “money,
transaction, account, bank”, respectievelijk “doctors” en “bank” bij de 1-zoekwoord runs. Het
gewicht per zoekwoord is 1. Dit gewicht wordt bij elk voorkomen van het zoekwoord
opgeteld bij de clusterscore van het cluster waar de query waar het woord deel van uitmaakt
bij hoort. De documenten met een clusterscore hoger dan de treshold worden als relevant
gemarkeerd voor het cluster. De treshold is een parameter binnen het onderzoek. Edoch is ze
niet doel van het onderzoek. Daarom is hier – en op alle andere plaatsen in dit onderzoek – de
treshold gehanteerd waarmee de hoogste F-score gehaald wordt.5 De prestaties van het Naked
Keywords algoritme zijn belangrijk voor het staven van de prestaties van de overige
algoritmes. Gewoon zoeken met de opgegeven zoekwoorden is immers de meest basale, en
ook de meest geïmplementeerde zoektechniek.
Random Retrieval is wat de naam doet vermoeden. Toch is de implementatie van de
beide varianten van dit algoritme niet helemaal wat men zou verwachten. Het algoritme zoekt
zelf namelijk geen willekeurige documenten in het corpus. Het willekeurige zit hem in de
zoekwoorden en de zoekwoord-gewichten die door dit algoritme gegenereerd worden. Eerst
wordt een lijst opgesteld met daarin alle woorden die vaker dan 25 keer voorkomen in het
subCorpus. Per cluster wordt vervolgens 50% van de woorden uit deze lijst geselecteerd (een
woord kan aan geen enkel, of aan meerdere clusters worden toegewezen). Vervolgens krijgen
de hier geselecteerde woorden een willekeurig gewicht tussen 0 en 1 toegewezen. Gaat men
met deze zoekwoorden zoeken dan zal het gevolg zijn dat de documenten een willekeurige
clusterscore krijgen. De keuze voor het minimum aantal voorkomens van 25 zit hem in het
feit dat dit zelfde minimum gehanteerd is voor inclusie in de WordNet algoritmes (Sformula
hanteert een andere grens).
In de eerste variant van Random Retrieval worden alle woorden (dus mogelijkerwijs
ook de oorspronkelijke sleutelwoorden) op deze manier willekeurig geselecteerd en van een
waarde voorzien. In de tweede variant krijgen de opgegeven sleutelwoorden een speciale
behandeling. Dezen blijven namelijk in het cluster waarin ze gespecificeerd zijn, en hun
gewicht blijft ook op 1 staan. Het nut van de eerste variant is het aangeven van een absolute
ondergrens. Alles wat slechter scoort dan de willekeur doet meer kwaad dan goed. De tweede
variant – waarin de sleutelwoorden onaangetast blijven – vormt een wat relevantere
ondergrens. Bij de implementaties van (het retrieval-deel van) alle niet-random algoritmes is
het namelijk ook zo dat de sleutelwoorden het gewicht 1 krijgen (en ze blijven ook in hun
eigen cluster) terwijl de nieuw toegevoegde zoekwoorden in gewicht variëren tussen 0 en 1.
Als de meeste van de door het algoritme toegevoegde zoekwoorden slecht gekozen of slecht
geschaald zijn binnen de context van het subCorpus (en uitgaande van de gold standard data)
dan zal het algoritme een F-score behalen die niet ver van deze ondergrens ligt.
De Random Retrieval en Naked Keywords algoritmes hebben niet echt in het oog
springende taalkundige aspecten. Alleen kan worden opgemerkt dat een woord minstens 25
maal moet voorkomen onder de 1.15 miljoen woorden van het gebruikte subCorpus om in
aanmerking te komen voor inclusie bij de random zoekwoorden. Het Naked Keyword
algoritme gebruikt geen stemming en geen context-disambiguisatie. Bank (Rabobank) en
bank (zitten) zijn hetzelfde, en chihuahua en chihuahua-tje zijn verschillend.
Zie de beschrijving bij stweak.pl onder “Middelen: De Tools” voor een beschrijving van hoe ik de treshold bij
de maximale F-score bepaald heb.
5
Tweak-Test – Wybo Wiersma
4
Wegen: Sformula
Sformula is een formule die ik heb opgesteld voor een eerder vak (Inleiding II). De
formule is speciaal bedoeld voor het ontdekken van semantische trends in grote corpora. Voor
het volledige SpamCorpus heb ik hem bijvoorbeeld gebruikt om over de tijdsspanne van 1996
tot 2004 trends in de twee semantische clusters seks en geld te ontdekken. Het nu uitgevoerde
onderzoek is de eerste uitgebreide poging om Sformula te benchmarken. Ook heb ik een
aantal berekeningen uitgevoerd op basis van een aantal verschillende parameters (tweaken).
Bij de resultaten ga ik hier verder op in. De naam Sformula staat voor Semantic formula,
hoewel de S eigenlijk afkomstig is van een naamgevings-gewoonte die ontstond naar
aanleiding van de naam van het eerste tooltje wat ik schreef voor het opschonen van het
SpamCorpus (SmailClean.pl).
De formule gaat uit van het taalkundige idee dat collocaties semantische
verwantschappen aanduiden. Hier gebruik ik de ruime definitie van collocaties: collocaties
zijn bepaalde woordpatronen die vaak voorkomen rond het sleutelwoord waarvoor men de
semantisch gerelateerde begrippen wil vinden. Binnen het vrij beperkte discours van de
SPAM-wereld is dit geen onredelijke aanname. Maar ook in gewone teksten lijkt het me niet
onwaarschijnlijk dat semantische relaties achterhaald kunnen worden op basis van collocaties.
Zo wordt in het artikel van Pascual Cantos en Aquilio Sanchez gekeken naar collocaties en
hun vorming aan de hand van de semantische aantrekkingskracht van woorden.6 Het beeld
wat hieruit naar voren komt is niet in tegenspraak met de manier waarop Sformula de mate
van semantische gerelateerdheid berekent.
De eerste stap die het algoritme Sformula neemt is het voor elk woord nagaan hoe
vaak, en op welke afstand het voorkomt in de buurt van een sleutelwoord. Elk woord wordt
dus voorzien van een lijst met alle sleutelwoorden. Die lijst bevat uiteindelijk alle afstanden
waarop het woord is aangetroffen relatief ten opzichte van het sleutelwoord. Het window is
-10 tot 10, wat inhoudt dat maximaal 10 woorden naar links en maximaal 10 woorden naar
rechts gekeken wordt. Met tekstuele barrières zoals zinnen en paragrafen wordt geen rekening
gehouden. De window-breedte en het negeren van zinsgrenzen is iets wat eventueel gewijzigd
kan worden, maar binnen dit onderzoek hebben we daar niets mee gedaan (o.a. omdat veel
spam niet eens echte zinnen bevat). Een woord wordt nadien pas meegenomen door de
formule wanneer het minimaal 50 keer voorkomt in het gehele corpus (dus niet 50 maal in het
subCorpus). Woorden die minder vaak voorkomen krijgen sowieso een irrelevante waarde
door de opbouw van de formule. De 50-voorkomens grens is dus niet meer dan een
optimalisatie om de hardware te sparen.
Het meest zeggende deel van de formule is hieronder weergegeven. Dit deel berekent
de semantische afstand tussen een occ van een woord en een sleutelsemant (NB: een hogere
output betekent dus semantisch ongelijker, een lager betekent gelijker, zie verderop voor het
deel van de formule wat er voor zorgt dat de waarde uiteindelijk een gelijkheidsmaat wordt
waarvan de waarde altijd tussen 0 en 1 ligt (1 precies gelijk, 0 totaal ongelijk)). De begrippen
zijn ten eerste: Een sleutelsemant staat voor één of meerdere van tevoren door de gebruiker
opgegeven sleutelwoorden. De woorden in het sleutelsemant vormen samen de leidende partij
in de berekening van de semantische relatie. De relevantie van de sleutelwoorden (met waarde
1 elk) is de premisse waarmee de formule aanvangt. Sformula breidt het collocatieconcept uit
naar collectieve collocaties voor een semant. Woorden die binnen een bepaalde vraagstelling
als semantisch equivalent worden beschouwd vormen een semant. En een semant kan ook
collocaties aangaan met woorden. Een woord is een woord waarvoor de semantische relatie
Pascual Cantos, Aquilino Sanchez, ‘Lexical Constellations: What Collocates Fail to Tell’ International Journal
of Corpus Linguistics (2001).
6
Tweak-Test – Wybo Wiersma
5
met betrekking tot het sleutelsemant berekend gaat worden. Een zoekwoord kan een woord
zijn waarvan is aangetoond dat het semantisch is gerelateerd aan het sleutelsemant, maar het
kan ook een sleutelwoord zijn wat deel uitmaakt van het sleutelsemant. De variabelen in de
formule zijn als volgt:
- matches is het aantal keren dat het woord is aangetroffen in de buurt van het
sleutelsemant.
- occ is het aantal keren dat het woord is aangetroffen op een specifieke afstand van
het sleutelsemant (de som van alle occ’s voor een woord is dus gelijk aan matches
voor dat woord)
- wordc is het aantal keren dat het woord voorkomt in het (sub-)corpus.
- keysemantc is het aantal keren dat het sleutelsemant voorkomt in het corpus (in
het geval waarin het sleutelsemant uit meerdere sleutelwoorden bestaat is het dus
de som van de voorkomens van deze sleutelwoorden).
Het linker deel van de hierboven afgebeelde formule ((matches – occ) / occ) zorgt er
voor dat voorkomens op steeds dezelfde afstand (een hoge occ) hoger worden aangeslagen
dan voorkomens op steeds wisselende afstanden (meer maar lagere occ’s). Dit zorgt er ook
voor dat de relatie tussen matches en occ’s zodanig gedefinieerd is dat woorden die op een
grotere afstand van het sleutelsemant voorkomen minder kans hebben om een kleine
semantische afstand op te leveren. Het is immers zo dat de kans op een bepaalde combinatie
van tekens kleiner wordt naarmate de combinatie meer tekens moet bevatten of overspannen.
Derhalve zal het ook zo zijn dat voor alle woorden (tekens) afzonderlijk geldt dat de kans dat
zij voorkomen op een vaste afstand van een sleutelsemant kleiner wordt naarmate de afstand
groter wordt (dus door het hoger raten van voorkomens op vaste afstanden leg je impliciet
vast dat collocatiewoorden op kleinere afstanden een hogere rating krijgen).
Het middelste deel van de semantische afstandsformule ((wordc - occ) /
sqrt(matches)) zorgt er voor dat de semantische afstand sterk toeneemt wanneer het woord
vaak voorkomt in het corpus. Dit wordt afgeremd wanneer er veel matches zijn, of wanneer
de occ groot is. Let wel dat het in de formule hierboven slechts gaat om de semantische relatie
tussen een één occ van een woord en een sleutelsemant. Voor elke occ van het woord wordt
de formule doorlopen. Het doel van het middelste deel van de formule is het verwijderen van
stopwoorden en andere woorden die weliswaar vaak bij de sleutelsemant staan, maar die ook
zonder het sleutelsemant vaak voorkomen.
Het rechter deel van de formule (sqrt((keysemantc - occ) / matches)) doet hetzelfde
als het middelste, maar nu voor het aantal voorkomens van de sleutelsemant. Wel is het
gewicht dankzij de wortel minder sterk dan in het geval van het aantal voorkomens van het
woord. De reden hiervoor is dat het kwalijker is wanneer een vaak voorkomend woord erg
significant geacht wordt bij een vrij zeldzame sleutelsemant dan wanneer een zeldzaam woord
een grote significantie krijgt bij een vaak voorkomende sleutelsemant. De reden dat het
rechter deel er dan toch bij zit is dat het ook weer niet de bedoeling is dat een heel vaak
voorkomende sleutelsemant zomaar semantische relaties aangaat met woorden waarvoor deze
helemaal niet relevant zijn. Desondanks blijft het een kenmerk van Sformula dat de relevantie
gedefinieerd is als corpusgerelateerd, en dat er dus semantische relaties worden uitgedrukt die
buiten het corpus tegen-intuïtief kunnen zijn.
Tweak-Test – Wybo Wiersma
6
Deze drie delen worden tenslotte gedeeld door occ. Hier wordt de invloed van occ pas
echt significant. In het linker deel van de formule was de invloed al significant. In de twee
rechter delen niet in de meeste gevallen. Het is echter zo dat occ vooral midden- en rechtsboven in de formule staat om er voor te zorgen dat de semantische afstand netjes op nul
uitkomt wanneer occ, matches, wordc en keysemantc allemaal gelijk zijn, bijvoorbeeld
allemaal 1 (dat is wanneer een sleutelsemant bestaande uit 1 sleutelwoord wat 1 keer
voorkomt in de buurt van een woord staat wat ook maar 1 keer voorkomt). Taalkundig gezien
is het misschien vreemd om woorden in dat geval als volledig semantisch equivalent te
beschouwen. Maar voor het onderzoeken van trends in grote corpora is het niet rampzalig (het
enige document met het sleutelwoord krijgt wat meer gewicht), en bovendien komt de situatie
überhaupt nooit voor aangezien niemand het in zijn hooft haalt om een trendanalyse te doen
voor een sleutelwoord wat maar eenmaal voorkomt. Het is vooral wiskundig gezien netjes om
het hele bereik van nul tot oneindig te bestrijken.
Hieronder is de volledige formule te zien. Het deel wat de semantische afstand
berekent (het deel boven de grote breukstreep) is hier ingebed in een structuur die er voor
zorgt dat de semantische afstand omgezet wordt in een gelijkheidsmaat die uiteindelijk op een
zinvolle manier gegarandeerd binnen het bereik van 0 en 1 blijft. De negatieve e-macht zet de
semantische afstand om in een gelijkheidsmaat. Zie de grafiek op de volgende pagina ter
illustratie.
Sformula (pas de formule toe voor elke occ, sommeer de resultaten, deze som is een maat
voor de semantische gelijkheid, domein [0 – 1], met 0 is ongerelateerd, 1 is gelijk)
Deze gelijkheidswaarde per occ die opgeleverd wordt door de negatieve e-macht
wordt vervolgens vermenigvuldigd met occ, en daarna gesommeerd voor alle occ’s zodat in
het deel onder de grote breukstreep iets berekend wordt wat lijkt op het gemiddelde van alle
voorkomens, en wat altijd tussen 0 en 1 ligt. Ik ga hier niet al te diep in op het onderste deel,
maar wat wel belangrijk is, is dat (keysemantc / (matches + 1)) er de kern van vormt. Hoe
Tweak-Test – Wybo Wiersma
7
vaker het sleutelsemant voorkomt vergeleken met het aantal matches, hoe kleiner de
semantische gelijkheid wordt.
Dit lijkt misschien een wat “rommelige” manier van doen, aangezien in het deel
binnen de negatieve e-macht ook al gecorrigeerd werd voor het aantal keren dat de
sleutelsemant voorkomt, maar het heeft een reden. Wanneer men het lijvige deel onder de
breukstreep zou vervangen door alleen matches, de som van de occ’s, dan zou men in de
bizarre situatie terechtkomen waarin een extra voorkomen van het woord op een niet zo
frequent voorkomende afstand van het sleutelsemant de semantische gelijkheid juist naar
beneden haalt (aangezien er dan een gemiddelde wordt berekend, en een extra kleine occ
levert in de berekening van het gemiddelde een extra geval van een kleine semantische
gelijkheid).
Het berekenen van een gemiddelde gaat dus tegen alle logische intuïties in. Daarom
delen we dus onder de breukstreep het aantal voorkomens van de sleutelsemant door het
aantal matches. Deze deling levert een groter getal op naarmate het sleutelsemant vaker voor
komt. En dus in dat geval een kleinere semantische gelijkheid aangezien dit grotere getal
onder de (grote) breukstreep staat. Wanneer er meer matches bij komen, gebeurt het
omgekeerde. Nu is het effect van een extra match dus zoals we het mochten verwachten. Een
extra match levert een extra semantische gelijkheid op én een versterking van de op basis van
de andere occ’s berekende semantische gelijkheid.
De linker en de rechter delen onder de breukstreep zorgen er samen voor dat de
formule altijd een waarde tussen nul en 1 oplevert, dus ook wanneer keysemantc kleiner is
dan matches. Als er bijvoorbeeld immers een sleutelsemant is die eenmaal voorkomt en die
omringd wordt door twintig maal hetzelfde woord dan levert het middelste deel (1 / 20 + 1)
op. Een getal kleiner dan 1! Als we de som van de semantische gelijkheden hierdoor zouden
delen, zou ze groter worden in plaats van kleiner… en groter dan 1! Dat terwijl het gestelde
bereik [0..1] was. In de grafiek hieronder is te zien hoe het rechter deel van de formule het
geleidelijk en naadloos overneemt van het linker deel (waarin wel gewoon gedeeld wordt door
matches) op het moment dat het gevaar van een wanverhouding tussen matches en
keysemantc aan het wijken is.
Het rechter deel van de formule (de groene lijn) neemt het over van het linker deel (de blauwe
lijn) zodat de som van de drie delen onder de breuklijn een stijgende lijn blijft (de rode lijn).
Tweak-Test – Wybo Wiersma
8
Wegen: WordNet
WordNet is een semantische database die is samengesteld door de afdeling Cognitie
Wetenschappen van de Princeton University e.a. De database is op het internet gratis
beschikbaar.7 In WordNet zijn meer dan 93.000 concepten, zogenaamde synsets, opgeslagen.
Voor deze concepten zijn verschillende relaties vastgelegd. Voorbeelden van relaties zijn die
tussen hyper- en hyponiemen (zoogdier – schaap is een hyperoniem – hyponiem relatie).
Andere zijn de relaties tussen meronymen en holonymen (snuit – schaap, kamer – huis, zijn
meronym – holonym relaties). Er zijn nog meer relaties gespecificeerd in WordNet, maar dit
zijn wel de belangrijkste. Wat hiernaast nog belangrijk is, is dat de hyperoniem – hyponiem
relaties hiërarchisch geordend zijn in een soort boomstructuur. De wortel/stam van deze
structuur die voor sommige algoritmes is toegevoegd heet root-node, en deze heeft geen
semantische betekenis. De root-node is er enkel en alleen om een pad tussen minder direct
gerelateerde woorden mogelijk te maken.
Er zijn in de loop der tijd verschillende algoritmes ontwikkeld om automatisch graden
van semantische gerelateerdheid uit WordNet te extraheren. De in dit onderzoek geteste zijn:
Hso, Lesk, Vector, Lin, Path en Wup. De laatste drie: Lin, Path en Wup zijn eigenlijk geen
maten voor semantische gerelateerdheid, maar voor gelijkheid (similarity, niet relatedness).
Deze algoritmes gebruiken alleen de hyperoniem – hyponiem relatie. Hso daarentegen
gebruikt ook de meronym – holonym relaties, en tevens nog andere.8 Lesk en Vector maken
(daarnaast ook nog) gebruik van de beschrijvingen van de synsets. Wat opgemerkt dient te
worden is dat niet alle WordNet-gebaseerde algoritmes besproken worden in dit onderzoek.
Desondanks zijn ze wel behoorlijk representatief. Hieronder zal ik de algoritmes kort
uitleggen. Eerst komen de drie similarity measures aan bod, en daarna de twee relatedness
measures.
Path is de simpelste. Deze meet de kortste weg tussen twee synsets. Het kortst
mogelijke pad heeft lengte 1 en komt voor wanneer twee synsets hetzelfde zijn. In alle andere
gevallen is het pad langer en de teruggegeven semantische relatie kleiner. De formule is als
volgt:
Wup (Wu en Palmer 1994, herzien door Resnik in 1999) zoekt de synset die het verst
verwijderd is van de root-node maar die toch beide te relateren synsets als hyponiem heeft.
Deze synset wordt de Least Common Subsumer (LCS) genoemd. De afstand van deze synset
ten opzichte van de root-node wordt vervolgens geschaald op basis van de afstand van de te
relateren synsets ten opzichte van de root-node. De formule is hieronder afgebeeld. Diepte is
hierin de afstand ten opzichte van de root-node.
Lin (Lin 1998) gebruikt naast WordNet ook een datafile met daarin de Information
Content (IC) voor alle WordNet synsets, a.k.a. hoe frequent ze voorkomen in een Corpus. De
IC van de LCS wordt vervolgens geschaald op basis van de IC’s van de te relateren synsets.
7
http://www.cogsci.princeton.edu/~wn/
Ted Petersen, Siddharth Patwardhan, Jason Michelizzi, ‘WordNet::Similarity – Measuring the relatedness of
Concepts’ Human Language Technology Conference (2004).
8
Tweak-Test – Wybo Wiersma
9
Hiermee wordt een corpustaalkundig stukje realiteit toegevoegd aangezien de frequentie van
woorden/synsets een grote invloed heeft op het bepalen van redelijke semantische relaties. De
manier waarop dit gedaan wordt is echter dubieus. De formule is:
Hierin wordt alleen maar rekening gehouden met de IC, en niet met de padlengte. Bovendien
gaat Lin er van uit dat de IC van de LCS bepalend is voor de relatie tussen de synsets (wat
hetzelfde inhoudt als zeggen dat fiets en auto dan pas in redelijke mate voertuigen zijn
wanneer het concept voertuig vaak wordt gebruikt in het corpus).
Hso (Hirst & St-Onge 1998) lijkt op Path in zoverre dat het uitgaat van de padlengte
tussen de synsets. Hso is echter een relatedness measure en geen similarity measure en
derhalve beperkt Hso zich niet tot de hyponiem – hyperoniem relaties, maar worden alle in
WordNet gecodeerde relaties gebruikt. Naast de padlengte wordt ook bijgehouden hoe vaak
het pad overgaat op een ander type relatie. Hoe vaker er van type gewisseld moet worden, des
te zwakker is de relatie. De formule waar dit algoritme gebruik van maakt is als volgt:
Hierin is afstand het aantal synsets wat op de kortste weg tussen de te relateren synsets ligt.
Het aantal typewijzigingen wordt weergegeven door d, en k en c zijn constanten. Het bereik is
[0..16]. Bij de eerdere formules was het bereik netjes [0..1].
Lesk (Lesk 1985, uitgebreid door Banerjee & Petersen 2003) vergelijkt de synsetbeschrijvingen die in WordNet zijn opgenomen om te bepalen of begrippen gerelateerd zijn.
De originele versie van Lesk keek alleen naar de beschrijvingen bij de te vergelijken woorden
zelf. De in 2003 aangepaste versie kijkt ook naar de beschrijvingen van de synsets in
WordNet die direct aan de te vergelijken synsets gerelateerd zijn.9 Hoe langer de reeks van
overlappende woorden in de beschrijvingen des te hoger wordt de relatie aangeslagen. De
formule is hieronder afgebeeld. Hierin is som de som van alle overlappende woorden/
woordreeksen en n is de lengte van de op dat moment gesommeerde woordreeks. Het bereik
is [0..inf).
Vector (Patwardhan 2003) gebruikt net als Lesk de beschrijvingen bij de synsets. Het
verschil is dat Vector er semantische vectoren van maakt. Dit wordt gedaan door de
semantische vectoren van de in de beschrijving gebruikte woorden te middelen voor elke
beschrijving. De semantische relatie tussen twee synsets wordt berekend door de cosinus te
nemen van de semantische vectoren van de beschrijvingen van de beide synsets.
Satanjeev Banerjee, Ted Pedersen, ‘Extended Gloss Overlaps as a Measure of Semantic Relatedness’
Proceedings of the Eighteenth International Joint Conference on Artificial Intelligence (2003).
9
Tweak-Test – Wybo Wiersma
10
Middelen: De tools
De gebruikte tools zijn voor een deel een uitbreiding op en een aanpassing van de voor
het eerdere spam-onderzoek geschreven tools (ssemanticanalyse.pl, smakesample.pl,
sgoall.pl). Enkele tools van het vorige onderzoek kon ik zelfs in ongewijzigde vorm weer
inzetten (sparsewords.pl en swordvalues.pl). Ook zijn er een aantal nieuwe tools geschreven
die nodig waren voor dit specifieke onderzoek (clustererormover.pl, stweak.pl,
stweakrun.pl, stweakstatdata.pl, swordnets.pl, wordcounter.pl en srateexpand.pl).
Daarnaast zijn er ook nog tools die gebruikt zijn om het SpamCorpus gebruiksklaar te maken.
Op die tools ga ik hier niet in. Ook ga ik niet in op de library’s die ik voor het vorige
onderzoek geschreven heb, en die ik ook bij dit onderzoek weer gebruikt heb. Al deze tools
zijn Open Source en beschikbaar onder de GPL licentie.10 Wat daarnaast een belangrijke
categorie van tools is, zijn de 3rd party tools. Voor de WordNet algoritmes heb ik gebruik
gemaakt van het perl programma WordNet::Similarity. Dit is gemaakt door Siddharth
Patwardhan e.a. en op zijn beurt maakt het weer gebruik van het programma
WordNet::QueryData van Jason Rennie (ook deze programma’s zijn Open Source).11 Hierin
zijn de eerder besproken WordNet-gebaseerde algoritmes reeds geïmplementeerd. Ik zal
hieronder één voor één de door mij geschreven tools beschrijven op de volgorde waarin ze
gebruikt zijn.
smakesample.pl is een tooltje voor het maken van een random sample vanuit een
directory-structuur naar een kopie van die zelfde directory-structuur. Het is gebruikt om een
random sample te nemen uit de twee gold standard clusters (PDC en AMC). Dit is gedaan
omdat de clusters wat aan de grote kant waren (zou teveel processor-tijd vergen om ze
allemaal in het testproces op te nemen) en zodat er een controle-run kon worden uitgevoerd
op andere data.
clustererormover.pl is een betrekkelijk simpel tooltje wat als taak heeft het kopiëren
van een bepaalde selectie mails vanuit de structuur die het SpamCorpus heeft (jaartal/body
voor de body van de e-mail) naar een kopie van die zelfde structuur. De reeks geselecteerde
(bestandsnamen van) mails worden ingelezen uit een directory met daarin symlinks (met de
zelfde filenaam als de files in de SpamCorpus-structuur). Dit was namelijk de manier waarop
Bart Alewijnse zijn clusters heeft ingedeeld. Aangezien de symlinks niet relatief, maar
absoluut waren (en ze dus nergens meer naar verwezen nadat ik ze gekopieerd had naar mijn
eigen machine) heeft het tooltje nog een extra functie en dat is het opnieuw maken van de
symlinks, en dezen te kopiëren naar de gold/clusternaam directory.
wordcounter.pl is een diagnostisch tooltje. Het levert een lijst met de meest
voorkomende woorden in een bepaald cluster. Zowel het cluster als het aantal woorden wat
men wil zien kan op de commandline worden opgegeven. Ook geeft het tooltje enige
statistieken weer zoals het aantal files, het aantal woorden in de files en het aantal woorden
per file. De output wordt voorzien van comment-tekens (#’s) behalve op de plaats waar de
statistieken op de volgende wijze getoond worden: $varnaam = waarde;. Door ze met > in een
file te dumpen, en door deze file later d.m.v. require in te lezen in een perl-programma,
kunnen de waarden zonder menselijke tussenkomst meteen weer worden gebruikt in een
volgend programma. Dit is zinvol omdat ssemanticanalyse.pl deze statistieken later weer
nodig heeft voor de normalisaties.
10
http://www.logilogi.org/HoMe/Wybo/SpamResearch
WordNet::Similarity – http://wn-similarity.sourceforge.net/
WordNet::QueryData – http://people.csail.mit.edu/u/j/jrennie/public_html/WordNet/
11
Tweak-Test – Wybo Wiersma
11
sparsewords.pl maakt deel uit van het algoritme van Sformula. Het maakt voor alle
woorden het eerder besproken lijstje met voorkomens relatief ten opzichte van
sleutelwoorden.
swordnets.pl heeft een aantal functies die alle WordNet gerelateerd zijn. De op deze
plaats in de gebruikscyclus gebruikte functionaliteit is het maken van een lijst (zonder
stopwoorden) met woorden die vaker voorkomen dan 25 maal. Deze lijst wordt verderop door
de WordNet algoritmes gebruikt. De hoofdfunctie is het runnen van de verschillende
WordNet algoritmes (maar dit gebeurt pas verderop vanuit stweakrun.pl). Bij
WordNet::Similarity zit ook een command-line tool (similarity.pl), maar die is ten eerste traag
en omslachtig, en ten tweede doet die niet precies wat ik wilde. Daarom heb ik een deel van
die tool opnieuw geïmplementeerd in swordnets.pl. swordnets.pl is en blijft echter afhankelijk
van WordNet::Similarity voor het echte werk.
stweakrun.pl is de spil van dit onderzoek. In dit programma kan men een aantal
commandlines opgeven met speciale tags op de plaatsen waar een bepaald te variëren
argument opgegeven moet worden (de tag is {argumentnaam}). Vervolgens kan men het
aantal stappen, en de stapgrootte opgeven waarmee voor iedere run de waarde van het
argument moet worden opgehoogd (of een lijst met alle te testen waarden voor wanneer het
een nominale variabel betreft). Dit kan gespecificeerd worden voor verschillende sets van
programma’s. Voor dit onderzoek zijn de sets: “naked”, “random”, “wordnet” en “formula”
gedefinieerd. Deze kunnen worden afgedraaid door op de commandline ./stweakrun
seriesnaam –r naked –r random, etc. op te geven. Seriesnaam is een speciale archief-directoryprefix parameter die samen met de waardes van de andere argumenten wordt meegegeven aan
het hulp-tooltje stweak.pl. Stweak.pl wordt vanuit stweakrun.pl aangeroepen (verderop meer
over stweak.pl). Andere tools die vanuit stweakrun.pl gedraaid worden zijn: swordnets.pl
(hierboven besproken), swordvalues.pl en ssemanticanalyse.pl (over deze twee hier onder
meer).
swordvalues.pl is het programma waarin Sformula geïmplementeerd is. Dit
programma berekent de semantische afstand tussen woorden op basis van de door
sparsewords.pl opgeleverde input (de lijsten). De output van swordvalues.pl bestaat uit een
lijst met zoekwoorden waar achter het gewicht is gespecificeerd. Hetzelfde outputformaat
wordt gehanteerd door swordnets.pl. Deze files vormen de input voor ssemanticanalyse.pl.
ssemanticanalyse.pl is binnen dit onderzoek de “zoekmachine”. De lijsten met
zoekwoorden (output van zowel swordvalues.pl als swordnets.pl) worden door dit script
ingelezen en gebruikt om het corpus langs te gaan. De output van ssemanticanalyse.pl is een
lijst met daarin voor alle documenten de som van de voor de zoekwoorden behaalde score in
de verschillende clusters. Daarnaast heeft ssemanticanalyse.pl nog een tweede taak.
Ssemanticanalyse kan de lijst met clusterscores op een aantal manieren normaliseren. Dit zijn:
normwocount (score van een file delen door het aantal woorden in de file), normclcount (er
voor zorgen dat de totaalscores van beide clusters even groot zijn door de scores voor het
cluster met de hoogste score, relatief ten opzichte van die van het cluster met de laagste score,
omlaag te halen) en normcltopcount (scores in een cluster delen door de gemiddelde score van
de top 5% in dat cluster, en dit voor elk cluster). Voor de gepresenteerde resultaten van dit
onderzoek is normwocount gebruikt.
stweak.pl is ook een zeer belangrijk programma binnen dit onderzoek. Het heeft tot
taak het beoordelen van de clusterscorelijstjes die opgeleverd zijn door ssemanticanalyse.pl
(berekent F-score, recall en precision). Daarnaast zoekt het bij deze beoordeling naar de
treshold die bij de optimale F-score hoort. Dit wordt gedaan door eerst een hash te maken met
daarin alle scores die alle documenten behalen in alle clusters. In deze hash wordt per score
opgeslagen hoeveel documenten true positives dan wel false positives worden wanneer de
treshold deze score passeert. Vervolgens wordt deze hash naar aflopende clusterscores
Tweak-Test – Wybo Wiersma
12
gesorteerd. Deze scores worden één voor één afgelopen en bij elke stap wordt de F-score
berekend. Zo kan de hoogste F-score bepaald worden door steeds de F-score op te slaan die
tot op dat punt de hoogste is (ook de treshold, de recall en de precision worden op die
momenten opgeslagen). Daarnaast levert stweak.pl ook nog een lijst waarin voor elk
document wordt aangegeven of het een positive dan wel een negative is, en of dezen true of
false zijn. Wat steak.pl ook doet is het opslaan van al deze gegevens en daarnevens het
kopiëren van de zoekwoordenlijst en de clusterscorelijstjes naar/in een archiefmap zodat het
een en ander nadien nog met de hand gecontroleerd kan worden. Ook wordt er telkens een
regel toegevoegd aan een overzichtsfile waarin de F-scores, recall, precision, treshold en alle
getweakte variabelen (en hun waardes) netjes naast elkaar staan.
srateexpand.pl zoekt voor een reeks zoekwoordenlijstjes uit in welke mate er query
expansie heeft plaatsgevonden. De gewogen voorkomens van de toegevoegde zoekwoorden
worden gedeeld door het aantal voorkomens van de originele zoekwoorden (de
sleutelwoorden, in geval van Sformula de sleutelsemant) in het hele SpamCorpus. De maat
hiervoor het ik hier de expand genoemd. Het is nodig om hiernaar te kijken want algoritmes
die een hoge expand-rate hebben bij hoge F-scores zijn beter in staat tot zinvolle query
expansie dan algoritmes waarbij de expand lager is. Bovendien kan een hoge expand bij een
lage F-score een aanduiding zijn voor een te sterke expansie als oorzaak voor de slechte Fscore. De expand wordt door srateexpand.pl toegevoegd aan de door stweak.pl gecreëerde
outputfiles.
sgoall.pl bevat een soort runlist vergelijkbaar met die van stweakrun.pl maar nu voor
alle tools die gedraaid moeten worden om – te beginnen bij het SpamCorpus – het complete
onderzoek vrijwel zonder menselijke tussenkomst opnieuw te kunnen uitvoeren (natuurlijk
onder het voorbehoud dat alle config-vars zoals directory-namen etc… in de source goed
ingesteld zijn).
stweakstatdata.pl maakt tenslotte SPSS-ready datafiles van de outputfiles van
srateexpand.pl. De tweak-variabelen, de precision’s voor 21 recall-punten, en naar wens
gemiddelden van expands en precision-scores worden berekend en in tab-delimited tekstfiles
gezet.
Tweak-Test – Wybo Wiersma
13
Referentiekader Resultaten: Naked & Random
De gebruikte sleutelwoorden voor het PDC- en AMC zijn zodanig gekozen dat ze zeer
frequent en zeer typerend zijn voor hun clusters. Voor het zoeken met de kale sleutelwoorden
(naked) werden derhalve hoge F-scores verwacht. Daarnaast zorgt de verdeling van de
documenten in twee clusters en 1 restgroep en hun verhouding qua grootte van 1:1:2 er voor
dat de precision 0,25 is wanneer alle documenten aan beide clusters worden toegewezen (de
zwarte horizontale lijn in de onderstaande grafiek geeft deze ondergrens weer). De paarse
lijnen geven de precision/recall weer van respectievelijk de naked run met vier
sleutelwoorden per cluster (donker paars) en de naked run met één sleutelwoord per cluster
(licht paars). De rode cirkels geven de punten aan waar de combinatie van recall en precision
de F-score maximaal maakt. Voor de normale run is de maximale F-score 0,918 en voor de 1woords run is de maximale F-score 0,677. Deze F-scores zijn erg hoog. De paarse lijnen (met
name de donker paarse) kunnen derhalve gezien worden als een streefgrens.
De blauwe lijnen geven de redelijke ondergrens weer. De donkerblauwe
vertegenwoordigt de precision/recall van 50 Random Retrieval runs van variant 1 van dit
algoritme. De lichtblauwe is het gemiddelde van 25 runs van variant 2 van het Random
Retrieval algoritme (de sleutelwoorden in hun originele categorie met hun originele gewicht,
…scoort daarom iets beter). De lijnen in deze grafiek vormen een zinvol referentiekader voor
het beoordelen van de prestaties van de geteste algoritmes.
Precision / Recall grafiek van Naked Keywords en Random Retrieval. Tussen Random Wk en
Naked is acceptabel voor normale runs, tussen Random en Naked One voor 1-keyword-runs
Tweak-Test – Wybo Wiersma
14
Resultaten: WordNet
De WordNet-algoritmes hebben in de meeste gevallen gepresteerd binnen het zojuist
besproken referentiekader. In een aantal gevallen vielen de resultaten er echter duidelijk onder
de maat. Over het geheel genomen waren ze bovendien niet zeer goed. Om één van de
oorzaken hiervoor te kunnen bespreken en om überhaupt de prestaties van de algoritmes te
kunnen vergelijken is het nodig om het concept van de expand uiteen te zetten (zie voor een
andere oorzaak het hoofdstuk Kanttekeningen). De voetafdruk van een set zoekwoorden is
het totaal aantal voorkomens van een zoekwoord in het gehele SpamCorpus gewogen naar
zijn gewicht, en gesommeerd voor alle zoekwoorden. De expand is de voetafdruk van de
query inclusief de door het algoritme toegevoegde zoekwoorden gedeeld door de voetafdruk
van de sleutelwoorden waarmee begonnen werd.
De expand is dus de maat voor de mate waarin het algoritme aan query expansie heeft
gedaan. Het is belangrijk om dit in de gaten te houden aangezien de maximale F-score met de
kale zoekwoorden (Naked) al 0,918 was. Een algoritme kan in dit onderzoek dus goede Fscores behalen omdat ze goede query expansie doet maar ook omdat ze amper aan query
expansie doet. Dit laatste geval is natuurlijk een veel mindere prestatie dan het eerste. In de nu
volgende grafieken is het referentiekader weergegeven in zwart en grijs om het niet te
prominent aanwezig te laten zijn. De rode cirkels geven de punten aan waar de maximale Fscore behaald is voor resp. de normale run en de 1-sleutelwoords run (normale run scoort
consistent hoger).
Precision / Recall van het Path algoritme. Matige prestaties voor alle varianten behalve voor
de (s)et senses en remove s(t)opwords variant en de combinatie hiervan.
Tweak-Test – Wybo Wiersma
15
Path presteert matig zoals te zien is in de bovenstaande Precision / Recall grafiek. Alle
varianten behalve de “t” en de “t s” variant scoren zelfs op en onder het Random gemiddelde.
De “s” staat voor set senses; het handmatig specificeren van welke concepten er wel, en welke
concepten er niet met een bepaald opgegeven sleutelwoord worden bedoeld (binnen de twee
clusters). WordNet werkt namelijk met zogenaamde synsets, hetgeen concepten zijn waarin
synoniemen en/of vergelijkbare bijbetekenissen van andere woorden bijeen zijn gebracht. De
code “t” staat voor het verwijderen van stopwords. Dit heeft een aanzienlijke invloed. Het
gaat bij de WordNet algoritmes echter vooral om frequente woorden met weinig betekenis
zoals “who” en “inc”. Echte stopwoorden zijn namelijk niet eens opgenomen in WordNet. De
expand van Path schommelt tussen de 17 en de 34 resp. 57 en 140 (voor One; de 1-keywordruns), hetgeen aan de hoge kant, maar niet extreem is.
Wup presteert uitgesproken slecht. Voor een deel is dit toe te schrijven aan het feit dat
Wup expand’s voortbrengt tussen 47-90 resp. 169-355 voor One. Dit is erg hoog. Zelfs hoger
dan wat het Random Keywords algoritme haalt (zit op 45-55 resp. 130-150). Wup valt door
de mand omdat er twee clusters zijn en omdat Wup woorden toevoegt aan het ene cluster die
ook, en vaak beter onder het andere kunnen vallen. Voorbeelden zijn: “job” met gewicht 0,43
in het PDC cluster en “natural” met gewicht 0,49 in het AMC cluster. Een verzachtende factor
is dat er deze week net een bug is ontdekt in het WordNet::Similarity programma die de
implementatie van Wup betreft. Het gevolg van deze bug is inderdaad een hogere
gelijkheidsscore. Wel is het zo dat deze bug alleen optreedt wanneer een paar begrippen meer
dan 1 Least Common Subsumer heeft die op verschillende afstanden van de rootnode liggen
(komt bijna niet voor).
Wup presteert rampzalig als gevolg van een veel te hoge expand
Tweak-Test – Wybo Wiersma
16
Lin houdt zich ook niet zo goed. Voor een groot deel is dit, net als bij Wup te wijten
aan een te grote gretigheid bij het gelijk veronderstellen van woordparen (expand 37-57 resp.
87-226). Path, Wup en Lin zijn gelijkheids-, en geen relatedness maten (alleen hyponiem –
hyperoniem, niet de andere paden). Dit verklaart een deel van hun slechte prestaties, maar het
verklaart niet waarom ze zulke hoge gelijkheidswaarden zouden moeten afgeven. Als we
echter naar hun formules kijken dan wordt het een en ander – vooral met betrekking tot Wup
en Lin – duidelijk. De formules van Wup en Lin zijn namelijk vrijwel hetzelfde.
Het enige verschil is dat Lin rekening probeert te houden met het corpus als context
door alleen veel voorkomende synsets als LCS en als sterk gerelateerde paren te gebruiken
(iets wat de expand verkleint). Echter in beide gevallen is het zo dat een gelijkheid van 1/2e
helemaal niet zo veel is. Een LCS ergens midden in de boom, en twee synsets als bladeren
van die LCS in de top is al voldoende voor een score van 1/2. In hyponiem – hyperoniem
relaties komt dat behoorlijk vaak voor. Het helemaal niet gezegd dat de manier van doen in
Wup en Lin verkeerd is (de interpretatie van de schaal is een subjectief iets). Een gelijkheid
van 1/2e is alleen wel erg veel wanneer je dat als gewicht geeft aan een woord wat je in query
expansie hebt toegevoegd. Dat de prestatie van het Lin-algoritme in wezen helemaal zo slecht
nog niet is, blijkt uit de eerste vijf door dit algoritme gelijk-bevonden woorden voor beide
clusters: AMC; transfer {0,70}, return {0,68}, measures {0,67}, deposit {0,67}, bill {0,67},
PDC; medicine {0,58}, medication {0,58}, prescriptions {0,57}, md {0,55}, rock {0,54}.
Wat (duidelijk) gezien kan worden in de grafieken van Lesk, Wup en Lin is dat de
variant met stopwoordcorrectie in alledrie de gevallen veel beter presteert dan die waarin niets
gedaan is met stopwoorden. Ook het instellen van de senses heeft een structureel positieve
invloed. En tot slot scoort het zoeken met 1-sleutelwoord lager.
Lin presteert matig omdat ze te grote gelijkheidswaarden toekent
Tweak-Test – Wybo Wiersma
17
Hso brengt ons bij de WordNet relatedness measures. De maximale prestatie is meteen
een stuk beter (max. F-score 0,69). Zeker gezien het feit dat de expand voor de “s”-variant
83,33 is. Wat meteen opvalt is dat hier het al dan niet setten van de senses een cruciaal
verschil maakt. De normale Hso-run (rode lijn) ligt amper boven de random ondergrens,
terwijl de “s”-variant stukken hoger ligt. Verder is het ook opmerkelijk dat het verwijderen
van stopwoorden hier een positieve invloed heeft waar de senses niet geset zijn (de groene,
ononderbroken lijn ligt boven de rode), terwijl de invloed negatief is als de senses wel geset
zijn (de gestreepte groene lijn ligt bij de hogere recalls onder de gestreepte rode lijn).
Een reden voor de goede score bij een hoge expand is dat het domein van Hso niet
tussen nul en 1 ligt. De woorden in de lijst hebben een waarde die varieert tussen 0 en 5,5.
Deze hogere waarden vertekenen de expand aangezien de aanvankelijke sleutelwoorden de
waarde 1 behouden. Het verbetert echter misschien de prestaties ook op een onvoorziene
manier. De waarde van een toegevoegd woord wordt in dit onderzoek namelijk bepaald door
het gemiddelde te nemen van de door het algoritme opgeleverde semantische afstand tussen
de sleutelwoorden (bij normale runs zijn dat er 4) en het woord. Hierdoor houden woorden die
erg gerelateerd zijn aan alle vier de termen, een hoog gemiddelde. Aangezien hier de
maximale waarde hoger is dan 1, zou het kunnen dat woorden die de essentie van de query
beter beschrijven dan de query zelf, met een hoog gewicht naar voren geschoven worden. Dit
zou zo kunnen zijn, gezien de top 5 in elk cluster: AMC; deposit {5,5}, deposits {5,5},
accounts {5}, bill {5}, accounting {4,5}, PDC; prescriptions {5,5}, medicines {5}, medicine
{5}, medication {5}, physican {4} (vgl. met de sleutelwoorden).
Het grote nadeel van Hso echter is dat het zeer traag is. Een run duurt al snel 24 uur op
een 2,6 Ghz computer met 1 GB ram (gem. 2 uren bij de andere WordNet algoritmes).
Tweak-Test – Wybo Wiersma
18
Lesk laat indrukwekkende F-scores zien. Voor de normale run behaalt Lesk maximaal
een F-score van 0.909. Voor de 1-keyword-run is het 0.732, wat (zelfs) hoger is dan de door
het Naked Keywords referentiekader-algoritme behaalde maximale F-score voor deze run.
Lesk valt echter snel door de mand als we naar de expand’s gaan kijken. De expand bij de Fscore van 0.909 is slechts 2.53, wat inhoudt dat slechts 3/5e deel van de voetafdruk van de
uiteindelijke query is toegevoegd door Lesk. Het andere deel bestaat uit de zoekwoorden
waarmee het Naked Keywords referentie algoritme een F-score van 0.918 behaalde. Wanneer
we naar de andere Lesk runs kijken dan blijkt het voor lagere F-scores niet veel beter te
worden. Expand’s bij de volgende F waarden 0.895, 0.77, 0.76 zijn 4.05, 3.13 en 5.43.
De woorden die opgeleverd worden zijn echter wel goed en de gewichten zijn
beschaafd. In de praktijk variëren ze tussen de 0 en de 0.7. Wat wel een punt van aanmerking
is, is dat de gewichten zeer snel aflopen tot op een punt waar ze amper meer invloed kunnen
hebben (zit al op 0.005, ver voor de helft van de lijst met meer dan 2000 suggesties per
cluster). Een niet onaanzienlijk deel van de – reeds magere - expand kan door de som van al
deze woorden veroorzaakt zijn.
Lesk komt vrij goed uit dit onderzoek en samen met Hso, die betere expand’s
behaalde, is ze het beste afgestemd op de hier gestelde taak. Het grote voordeel van lesk is
echter dat ze naar WordNet standaarden betrekkelijk snel is. Meer dan een paar uren per run
heeft Lesk niet nodig.
Lesk behaalt goede F-scores, maar met minieme expand’s
Tweak-Test – Wybo Wiersma
19
Vector gaat niets veranderen aan de positie van Lesk en Hso. Vector is al bijna net zo
traag als Hso, maar haar prestaties zijn niet veel beter dan die van Wup. Het blijft in de buurt
van Random zweven. De oorzaken zijn iets anders dan bij Wup en Lin. Niet alleen is de
expand extreem (65-142 resp. 229-519) omdat er zeer veel woorden zijn met een gewicht
groter dan 1/4e, maar ook de gekozen woorden zijn erg slecht, zelfs wanneer ze op volgorde
bekeken worden. De top vijf voor beide clusters is: AMC; accounts {0.73}, spread {0.72},
run {0.72}, deposit {0.72}, support {0.69}, PDC; doctor {0.68}, soul {0.66}, set {0.65},
human {0.65}, operation {0.64}. Waarom Vector zulke slechte woorden oplevert is moeilijk
te zeggen.
Vector presteert niet ver van Random Retrieval. De expand is extreem groot.
Het grote zwakke punt van de WordNet algoritmes is dat ze gebaseerd zijn op
WordNet. WordNet bevat relaties die opgaan in het algemene geval. Deze relaties zijn niet
afgestemd op de context waarbinnen het corpus valt. Omdat SPAM een extreem subdiscourse is, komt dit zwakke punt hier goed aan het licht. De gelijkheden die subjectief
ervaren worden door mensen zijn nog niet de gelijkheden die binnen een corpus van een
bepaald discourse goede resultaten opleveren voor query expansie. In het geval van Wup en
Lin was dat heel tastbaar. De woorden waren niet slecht, alleen hun gewicht was te hoog.
Een andere zwakheid van de algoritmes is dat ze zeer traag waren over het algemeen.
Enkele uren looptijd voor het aanleggen van twee clusters binnen een subCorpus van iets
meer dan 4000 mails was heel gewoon. Een praktisch probleem is dat het specificeren van
senses meestal vereist was voor het behalen van redelijke F-scores (slecht te automatiseren).
Tweak-Test – Wybo Wiersma
20
Tweaks: Sformula
De gedragingen van Sformula zijn getest aan de hand van 6 parameters, naast het
verschil tussen normale runs, en runs met 1 sleutelwoord. Deze parameters zijn a, b, c, tkw,
tsq en s. De parameters a, b en c zijn ingebracht in het bovenste deel van Sformula. Zij
regelen het relatieve gewicht van de drie delen. Parameter a weegt het bovenstuk in zijn
geheel, parameter b bepaalt met welk gewicht extra voorkomens van een woord de
semantische afstand doen toenemen. Parameter c tenslotte; weegt de mate waarin extra
voorkomens van het sleutelsemant de semantische afstand vergroten.
De a, b en c parameters zijn vooral ingesteld om de significantie van de onderdelen
voor het uiteindelijke resultaat te testen. Afgezien van misschien parameter a, was het niet de
bedoeling om de parameters uit dit deel van de formule op te nemen in een gewijzigde,
algemene versie van de formule. De gevolgen van wijzigingen in deze parameters zijn
namelijk erg query- en contextafhankelijk (hoewel het aanbrengen van variaties in deze
factoren op basis van de eigenschappen van de query een interessant idee zou zijn).
De parameters tkw en tsq zijn wel bedoeld om mogelijke betere varianten van
Sformula te vinden. Dit zijn dan ook binaire, kwalitatieve parameters. Als tkw of tsq op 0
staan is de formule ongewijzigd. Staat tkw op 1 dan wordt wordc gebruikt op de plaats waar
nu in rood keysemantc staat. Tsq verwijdert de rode wortels wanneer ze op 1 staat.
Tweak-Test – Wybo Wiersma
21
Het vervangen van de keysemantc door wordc in het middelste deel van de onderzijde
van Sformula zorgt er voor dat de nadruk (gelijkheid wordt lager als het niet voldoet) nog
meer komt te liggen op de relatieve zeldzaamheid van voorkomens van het woord zonder het
sleutelsemant in de buurt. In de standaard variant wordt in plaats van deze extra nadruk wat
sterker rekening gehouden met het aantal voorkomens van het sleutelsemant zonder het woord
in haar buurt. Het middelste deel van de bovenzijde van Sformula zorgde sowieso al voor een
verkleining van de semantische gelijkheid in het geval een woord vaak voorkwam zonder het
sleutelsemant in de buurt.
Als de wortels worden verwijderd uit het onderste deel van de formule zal dit tot
gevolg hebben dat met name veel voorkomende woorden een verlaagde semantische
gelijkheid met betrekking tot het sleutelsemant krijgen (het rechter deel van de onderzijde van
Sformula neemt het dan namelijk over van het linker deel). Dit zal de expand sterk doen
afnemen. Vooral omdat juist frequente woorden (met een grote voetafdruk) een verlaagd
gewicht krijgen.
De parameter “s” tenslotte staat voor het al dan niet verwijderen van stopwoorden. Er
werd gehoopt dat het niet nodig zou zijn. Ook zijn er van tevoren aannames opgesteld over
wat allround gezien de optimale combinatie voor de overige parameters zou zijn (dat is in
termen van F-scores en expand’s voor verschillende types query). De aanname was a = 1, b =
1, c = 1, tkw = 0, tsq = 0 (waar a = 1 gelezen wordt, wordt in de formule –1 ingevuld).
Sformula is in totaal 1282 maal uitgevoerd om alle permutaties van de zes parameters te
kunnen uitproberen. Gelukkig is Sformula een stuk sneller dan de WordNet algoritmes
(ongeveer 6 minuten per run). Maar nu eerst de resultaten van de tweaks aan a, b en c.
Gemiddelde Precision / Recall van Sformula bij variaties van parameter a
Tweak-Test – Wybo Wiersma
22
In de grafiek is te zien hoe de gemiddelde precision toeneemt bij het toenemen van de
a-setting. Dit is niet vreemd aangezien parameter a het gehele bovenste stuk van Sformula
afweegt. Daar de relatie negatief is (a = 3 levert –3 in de formule), en omdat het gehele
bovenste deel een e-macht is, zal een hogere a de semantische gelijkheid sterk doen afnemen.
De expand wordt kleiner, en aangezien de kale sleutelwoorden bij de normale run een hoge Fscore behaalden, gaat de precisie hierdoor stijgen (in de richting van de zwarte lijn).
Voor de 1-keyword runs is precies het omgekeerde aan de hand. Een hogere a-waarde
zorgt voor een lagere precision. Dat impliceert dat een hogere expand voor de 1-keyword runs
voordelig is. In het staafdiagram op de volgende pagina is te zien dat een hogere a-waarde
inderdaad een lagere expand tot gevolg heeft.
In de grafiek daar onder (en ook in het staafdiagram) is te zien dat er iets
vergelijkbaars aan de hand is voor de variaties van parameter b. Ook dit is logisch gezien de
vorm van de formule. Parameter b weegt de invloed van extra voorkomens van het woord
wanneer de sleutelsemant niet in de buurt is. Wanneer parameter b groot is, is dit gewicht
groot, en wanneer een woord frequent voorkomt zal dit de semantische afstand doen
toenemen. Hetgeen weer tot gevolg heeft dat de semantische gelijkheid kleiner wordt,
waardoor de expand afneemt. Ook ditmaal is de 1-keyword-run in het voordeel bij een
kleinere parametersetting.
Het staafdiagram laat zien dat de invloed van parameter c op de expansie niet zeer
groot is. Een hier niet afgebeelde Average Precision / Recall grafiek bevestigt ook de geringe
invloed van parameter c op de Precision score (het is een kromme waarin de varianten niet te
onderscheiden zijn). Het meest rechtse deel van de bovenzijde van Sformula heeft wellicht
niet veel invloed. Nader onderzoek zal moeten uitwijzen of dat deel geschrapt kan worden.
Gemiddelde Precision / Recall van Sformula voor parameter a (1-keyword runs)
Tweak-Test – Wybo Wiersma
Gemiddelde expand van Sformula voor variaties van parameter a, b en c
Gemiddelde Precision / Recall van Sformula bij variaties van parameter b
(voor normale- en 1-keyword runs)
23
Tweak-Test – Wybo Wiersma
24
Voor de parameters s, tkw en tsq zijn de resultaten verassend. Het al dan niet
verwijderen van stopwoorden heeft veel invloed op de normale runs. Als de stopwoorden
verwijderd zijn is de precisie veel hoger. Dit is tegen de verwachtingen in, aangezien
verwacht werd dat Sformula opgewassen zou zijn tegen stopwoorden. Voor de 1-keywordruns maakt het echter niet uit of stopwoorden al dan niet verwijderd zijn. Hoewel het
natuurlijk, net als bij de a- en b- parameters gelinkt is aan de expand (zie het ook het
staafdiagram op pagina 26, vergelijk de expand’s voor de 4-keyword-runs en de 1-keywordruns), verklaart dat niet alles (als het hem louter in expand zat dan zouden de 1-keywords-runs
beter moeten scoren met s = 0). Het brengt mogelijkerwijs een interessante zwakte in
Sformula aan het licht.
Een sleutelsemant wat meerdere woorden bevat komt namelijk veel vaker voor in de
buurt van woorden dan een sleutelsemant die wat minder, of zelfs maar 1 woord bevat. Door
het vaker voorkomen neemt relatief gezien het aantal keren dat de sleutelsemant voorkomt ten
opzichte van de stopwoorden sterk toe. En bovendien worden stopwoorden dubbel geteld
wanneer ze tussen twee dicht bijeen staande sleutelsemant-woorden in staan. Aangezien veel
stopwoorden bovendien in collocaties voorkomen met bepaalde woordvormen dankzij hun
functie in de zin (een simpel voorbeeld is “the” gevolgd door een zelfstandig naamwoord),
kunnen ze te zwaar gaan tellen om nog weggefilterd te worden.
Gemiddelde Precision / Recall bij variaties in parameter s (voor 4- en 1-keyword-runs)
Tkw (grafiek volgende pagina) laat een heel ander beeld zien. Hier maken variaties
geen verschil voor de normale runs, terwijl tkw = 0 iets beter presteert voor de 1-keywordruns. Het verschil blijft klein
De effecten van tsq (onderste grafiek) hebben te maken met ontwikkelingen in de
expand. De 4-keyword-runs hebben belang bij een afname in de expand in deze setup en de 1keyword-runs zijn beter af met een hogere expand. Het staafdiagram op pagina 26 ondersteunt
dit.
Tweak-Test – Wybo Wiersma
25
Gemiddelde Precision / Recall bij variaties in parameter tkw (voor 4- en 1-keyword-runs)
Gemiddelde Precision / Recall bij variaties in parameter tsq (voor 4- en 1-keyword-runs)
Tweak-Test – Wybo Wiersma
26
Gemiddelde expand van Sformula voor variaties in de parameters s, tkw en tsq
(voor 4-keyword-runs (links) en voor 1-keyword-runs (rechts))
De tweakresultaten voor Sformula hebben opgeworpen dat het laatste deel van de bovenzijde
van Sformula mogelijkerwijs verwijderd kan worden omdat ze weinig invloed uitoefent. Ook
is er een zwakheid ontdekt in Sformula met betrekking tot het filteren van sleutelwoorden.
Vooral dit laatste heeft serieuze implicaties voor Sformula wanneer er gebruik wordt gemaakt
van sleutelsemanten die meer dan 1 woord bevatten.
Tweak-Test – Wybo Wiersma
27
Resultaten: Sformula
De parameterconfiguratie a = 1, b = 1, c = 1 bleek naar verwachting all-round optimaal
te zijn. De resultaten van Sformula voor a = 1, b =1, c = 1 met variaties in de overige drie
parameters zijn hieronder afgebeeld voor de 4-keyword-runs. De prestaties doen niet onder
voor die van Lesk, zeker gezien het feit dat de optimale F-score 0.924 is bij een expand van
4.32 (s = 1, tkw = 1, tsq = 1). Dit is net iets hoger dan de score van Naked Keywords. De
werkelijk optimale score, met inachtneming van de expand zit echter op een F-score van
0.879 met een expand van 10.34 (s = 1, tkw = 0, tsq = 1, hetgeen, afgezien van s = 1 de
verwachtte optimale configuratie is!). De rode cirkel in de grafiek geeft het optimum weer
voor de F-score 0.924 en de oranje cirkel geeft het punt weer waar het 0,879-optimum haar Fscore vindt. De rode, doorlopende lijn van Sformula waar de stopwoorden bleven staan, is een
zeer zorgelijk geval. De precision is in dat geval namelijk dramatisch slecht (niet ver van
Random Retrieval met een expand van 57).
Sformula komt echter pas goed tot haar recht in de 1-keyword-runs (zie volgende
pagina). Alle varianten scoren goed maar de verwachtte variant scoort het beste, namelijk een
F-score van 0.843 bij een expand van 8.06 (de oranje cirkel). Het gaat hier – in tegenstelling
tot bij de 4-keyword-runs in dit experiment waar Naked Keywords eigenlijk altijd beter is –
om direct Precision/Recall-voordeel brengende query expansie. Naked Keywords scoorde
0.677 voor deze run, en Lesk 0.732; de door Sformula toegevoegde woorden brengen een
verbetering van 15% tenopzicht van Lesk. Wanneer het belang van expand minder geacht
wordt, kan de run waarin s wel 1 is ook aangemerkt worden als alternatief; de F-score was
0.855 bij een expand van 5,81 (de rode cirkel).
Sformula presteert beter dan Lesk in de normale runs
Tweak-Test – Wybo Wiersma
Sformula presteert goed en optimaal in de 1-keyword-runs
(met de verwachtte parameterconfiguratie a = 1, b = 1, c = 1, tkw = 0, tsq = 0, s = 0)
28
Tweak-Test – Wybo Wiersma
29
Conclusie
Sformula presteerde niet slecht. Zeker niet in vergelijking met de WordNet algoritmes. Het
structureel zwakke punt van de WordNet-algoritmes is dat ze absolute gelijkheden hanteren,
los van het corpus. Maar afgezien daarvan is het maken van zoiets als WordNet ook nog heel
arbeidsintensief, en het moet voor elke taal opnieuw gebeuren. Dit terwijl Sformula haar
semantische relaties direct afleidt uit het corpus. In principe zou Sformula ook moeten werken
op corpora in andere talen (niet tussen talen natuurlijk). Ook is Sformula stukken sneller dan
de WordNet-gebaseerde algoritmes alhoewel hem dat ook deels zit in de implementatie van
mijn toolset.
Toch is Sformula nog zeker niet optimaal. Met name haar zwakte in het negeren van
stopwoorden is zorgelijk. Bij sleutelsemanten van 1 sleutelwoord gaat het goed, maar als het
er meer worden gaat het dramatisch mis. Er is nog meer onderzoek nodig om uit te zoeken of
het ook mis gaat bij enkele sleutelwoorden die ontzettend vaak voorkomen (vermoedelijk
wel). Misschien is het beter om voor de huidige vorm van Sformula om af te stappen van het
idee van de sleutelsemanten. Misschien moet wel gewoon het gemiddelde van de waardes van
meerdere 1-keyword-runs genomen worden. Het nadeel daarvan zal echter zijn dat de query te
ver kan gaan afdrijven van haar kern en bovendien mist men dan het principe van de
conceptuele collocaties.
In elk geval blijft het gebruik van sleutelsemanten en vooral collocatiegebaseerde
semantische gelijkheidsherkenning een interessant thema waar verder onderzoek naar gedaan
zou moeten worden. Een idee voor een volgende versie van Sformula, afgezien van het fixen
van de stopwoordenbug, is het toevoegen van een collocatiegebaseerde zoeksnuit. Op dit
moment wordt alleen bij het expanderen van de queries gebruik gemaakt van collocaties. Aan
de zoekzijde kan het echter ook zinvol zijn om samen voorkomende, gerelateerde woorden uit
de (geëxpandeerde query) zwaarder te wegen.12
12
Zie ook deze paper (op dit moment nog niet gepubliceerd): Qianli Jin, Jun Zhao, Bo Xu, Window-based
method for Information Retrieval (2004).
Tweak-Test – Wybo Wiersma
30
Kanttekeningen
Een probleem bij dit onderzoek is de implementatie van de tools. Veel van de tools
(zoals met name ssemanticanalyse.pl) zijn namelijk aanvankelijk speciaal gemaakt voor
Sformula. En bovendien was hun taak het uitvoeren van eenmalige trendonderzoeken. Het
aflopen van meerdere runs is daarom inefficiënt geïmplementeerd. Voor Sformula valt dit nog
mee (aangezien die toch vrij snel is, en met de voorgefabriceerde lijstjes toch enigszins
efficiënt uitgewerkt) maar voor de WordNet-algoritmes niet. Het had bijna de helft van de
(vele weken durende) run-time gescheeld wanneer een blijvende lijst was gebruikt met daarin
de semantische gelijkheden die de WordNet algoritmes toekennen aan de verschillende
woorden/synsets die gebruikt zijn in de verschillende runs.
De grootste zwakte van het onderzoek als geheel is echter dat de resultaten gebaseerd
zijn op slechts 1 dataset, en op slechts 1 query (2 als de 4- en 1-keyword-runs als aparte
queries beschouwd worden). Wel is het zo dat ik ter controle een deel van de Sformula-tweakruns ook uitgevoerd heb op een tweede subCorpus (De oorspronkelijke clusters bevatten
namelijk tweemaal zo veel mails. Een random sample van 50% uit deze clusters is het
subCorpus geworden, de andere 50% zijn bewaard met de bedoeling om ze als controle te
gebruiken). De resultaten hiervan weken niet – en heel soms hoogstens 0.01 – af van de
eerdere runs qua precision-scores. Maar dan nog is dit beperkt bewijs. Een heel andere
cluster-query op bijvoorbeeld het TREC-corpus kan totaal andere resultaten opleveren.
Een aanzienlijke zwakte specifiek met betrekking tot de WordNet algoritmes is dat
ssemanticanalyse.pl, de “zoekmachine” van dit onderzoek, geen gangbare woordfrequentiecorrecties zoals bijvoorbeeld tf-idf implementeert. Sformula is gemaakt met de
bedoeling dat ze dergelijke correcties niet nodig zou hebben. De WordNet algoritmes
daarentegen zouden er wellicht van kunnen profiteren, gezien hun lijvige expand´s. En
natuurlijk is het feit dat er recentelijk een bug is ontdekt in het Wup-algoritme ook geen
bevorderlijke zaak.
Tweak-Test – Wybo Wiersma
31
Literatuurlijst:
Banerjee, Satanjeev, Ted Pedersen, ‘Extended Gloss Overlaps as a Measure of Semantic
Relatedness’ Proceedings of the Eighteenth International Joint Conference on
Artificial Intelligence (2003).
Budanitsky, Alexander, Graeme Hirst, ‘Semantic distance in WordNet: An experimental,
application-oriented evaluation of five measures’ Workshop on WordNet and Other
Lexical Resources in the North American Chapter of the Association for
Computational Linguistics (2001).
Cantos, Pascual, Aquilino Sanchez, ‘Lexical Constellations: What Collocates Fail to Tell’
International Journal of Corpus Linguistics (2001).
Jing, Hongyan, Evelyne Tzoukermann, ‘Information Retrieval based on Context Distance and
Morphology’ Annual ACM Conference on Research and Development in Information
Retrieval: Proceedings of the 22nd annual international AMC SIGIR conference on
Research and development in information retrieval (1999).
Pedersen, Ted, Siddharth Patwardhan, Jason Michelizzi, ‘WordNet::Similarity – Measuring
the Relatedness of Concepts’, Human Language Technology Conference (2004).
Quanli Jin, Jun Zhao, Bo Xu, ‘Query expansion based on term similarity tree model’, Natural
Language Processing and Knowledge Engineering, 2003. Proceedings. 2003
International Conference on (2003).
Quanli Jin, Jun Zhao, Bo Xu, ‘Window-based Method for Information Retrieval’ Nog niet
gepubliceerd, per e-mail ontvangen van Quanli Jin (2004).
Download