Website usability en Latent Semantic Analysis: Ontwikkeling van LSA Tools t.b.v. website usability
Master-thesis door Jelmer J. Toering
Augustus 2006 Begeleider: Dr. L. M. Bosveld-de Smet Tweede lezer: Dr. E. H. Klein
Inhoud Samenvatting
………………………………
4
………………………………
5
2.1. Inleiding
………………………………
7
2.2. Guidelines voor website usability
………………………………
7
2.3. Usability evaluaties voor websites
………………………………
8
2.4. Cognitive walkthrough for the web
………………………………
10
3.1. Inleiding
………………………………
13
3.2. Toepassingsgebieden van LSA
………………………………
13
………………………………
14
3.2.2. LSA en het vinden van synoniemen
………………………………
14
3.2.3. LSA en ‘subject matter knowledge’
………………………………
15
………………………………
15
………………………………
15
3.3.2. Singular value decomposition
………………………………
15
3.3.3. Een uitgewerkt voorbeeld
………………………………
16
………………………………
19
………………………………
20
4.1. Inleiding
………………………………
20
4.2. Doelstelling
………………………………
20
4.3. Opzet van de applicatie
………………………………
21
………………
21
1. Inleiding 2. Website usability
3. Latent Semantic Analysis
3.2.1.
Latent Semantic Indexing
3.3. Hoe LSA werkt 3.3.1.
Prepareren van de data
3.4. Conclusie 4. LSA Tools
4.3.1.
Genereren van een frequentiematrix
2
4.3.2. Omzetten van matrix naar sparse formaat
………………
23
4.3.3. SVD toepassen op sparse-matrix``
………………
26
4.3.4. Resulterende matrices vermenigvuldigen
………………
27
4.3.5. Opslaan van de UtxS matrix
………………
29
4.4. Bevragen van de resulterende data
……………………………… 29
4.5. Problemen
……………………………… 30
4.6. Verkennende test
……………………………… 32
5. Conclusies en verder onderzoek
……………………………… 34
Bibliografie
……………………………… 36
Bijlagen
……………………………… 38
3
Samenvatting Sinds het ontstaan van het ‘world wide web’ heeft de gebruikersvriendelijkheid van dit medium steeds meer aandacht gekregen. Vooral de navigatie op websites die door de bezoekers wordt gebruikt om naar de informatie die bij hun doel past te surfen speelt hierbij een belangrijke rol. Een methode die veel wordt gebruikt om usability tests uit te voeren voor de interfaces van software is de Cognitive Walkthrough. Deze test wordt uitgevoerd door een expert en is ontworpen om te achterhalen welke problemen een gebruiker ondervindt als hij een bepaald doel middels een interface wil bereiken. Een afgeleide van deze methode is ontwikkeld om usability problemen op websites te identificeren en op te lossen. Deze methode is gericht op de talige kant van website navigatie. Een probleem dat bijvoorbeeld met deze methode wordt geïdentificeerd is of bepaalde woorden waarop moet worden geklikt (link-labels) wel qua betekenis genoeg overeenkomen met de tekst waarnaar wordt verwezen. Om een zinnige uitspraak te doen over deze ‘semantische overeenkomst’ wordt gebruikt gemaakt van LSA. LSA is een acroniem voor Latent Semantic Analysis en is een methode die wordt gebruikt om de semantische afstanden tussen teksteenheden (woorden, zinnen, paragrafen) vast te stellen. Deze afstanden worden berekend op basis van de ‘co-occurrences’ van woorden in een corpus (een verzameling teksten). Omdat er weinig software beschikbaar is om met LSA te werken en de beschikbare software belangrijke beperkingen kent, worden in deze scriptie de LSAtools gepresenteerd. De LSA-tools is een verzameling scripts dat kan worden gebruikt om semantische afstanden tussen teksteenheden te berekenen. Belangrijke voordelen van de LSA-scripts zijn dat men zelf een corpus samen kan stellen bestaande uit teksten in een willekeurige taal. Verder kunnen zowel het corpus als de semantische afstanden worden opgeslagen in een MySql database, zodat deze informatie op een later moment nog steeds beschikbaar is. Verder zijn de scripts geschreven in de taal PHP, een scripttaal die zeer gangbaar is onder webprogrammeurs.
4
Inleiding Met de groei van het gebruik van het world wide web (vanaf nu: www) is het steeds belangrijker geworden dat de bezoekers van het web hun doel door middel van websites kunnen bereiken. Het vinden van informatie is in de meeste gevallen het doel van een bezoek aan een website. De usability ofwel de gebruikersvriendelijkheid van een website speelt hierbij een cruciale rol. Oorspronkelijk is usability een term die werd gebruikt voor software applicaties. Gebruikersvriendelijkheid lijkt een gegeven waar vooral de bezoeker van een website, de ‘gebruiker’ van de website, belang bij heeft. Maar ook aanbieders van websites hebben belangen bij bezoekers die op een goede manier hun website kunnen bezoeken. Vooral voor commerciële ondernemingen kan een goede website het verschil maken tussen succes of ondergang. Talrijke methodes zijn in de loop der jaren ontwikkeld om de gebruikersvriendelijkheid van applicaties en van websites te toetsen. Eén van de methodes die veel wordt gebruikt voor de analyse van de usability van software applicaties is de cognitive walkthrough. Deze methode is ten behoeve van het testen van websites aangepast: De “cognitive walkthrough for the web” (Blackmon et. al. 2002, 2003, 2005). Deze ‘CWW’ is vooral gericht op het navigatie gedeelte van een website. De navigatie van een website is het geheel van elementen en hyperlinks die de gebruiker tot zijn beschikking heeft om naar de juiste pagina te navigeren. De CWW is een methode waarbij een expert op het gebied van usability, gegeven een bepaald doel, alle stappen uitvoert die een gebruiker ook zou moeten doen om dit doel te bereiken. De expert kijkt welke problemen (onduidelijkheden) er kunnen ontstaan bij iedere stap in de richting van het doel. Een belangrijke techniek die wordt gebruikt bij het uitvoeren van CWW, zoals voorgesteld door Blackmon et. al, is Latent Semantic Analysis (vanaf nu: LSA). LSA is een statistische techniek die wordt gebruikt om de semantische overeenkomsten en verschillen tussen teksteenheden te bepalen, “(…)LSA allows us to closely approximate human judgements of meaning similarity between words (…)” (Landauer et. al, 1998). Omdat de woordkeus voor de verschillende items in de navigatie mede bepalend is voor de effectiviteit van de navigatie en daarmee bijdraagt aan de gebruikersvriendelijkheid van een website, kan LSA een nuttige bijdrage leveren aan het testen van de usability van een website. Aan de hand van de gegeven beschrijving lijkt CWW een veelbelovende methode. Als men echter aan het werk wil gaan met de CWW, maar vooral met LSA is er een aantal beperkingen waar rekening mee gehouden dient te worden. Om te beginnen zijn er geen applicaties voorhanden waarmee men met LSA kan gaan experimenteren. De enige bij mij bekende manier om direct aan het werk te kunnen met LSA, is door gebruik te maken van de webinterface die wordt aangeboden op http://lsa.colorado.edu/ . Deze aanpak kent echter een aantal beperkingen. Ten eerste wordt bij deze applicatie gebruik gemaakt van een aantal tekstcorpora, deze zijn gesplitst naar taal, onderwerp en taalniveau. Voorbeelden van deze ‘topic-spaces’ zijn bijvoorbeeld ‘General reading up to third grade’, ‘francais psychology’ en ‘literature’. Dit betekent dat je bij het gebruik beperkt bent tot 2 talen (Engels en Frans) en tot de onderwerpen en de taalniveau’s die worden aangeboden. Een ander nadeel is dat de resultaten als tabellen in een
5
html bestand worden aangeboden. Dit betekent dat deze resultaten moeilijk op een gestructureerde manier te bewaren zijn en dat het niet eenvoudig is om te zoeken in de resultaten of er verder mee te rekenen. Verder is de applicatie alleen via het web te benaderen en kan men niet een versie downloaden waarin eventueel veranderingen aangebracht kunnen worden. In een poging om een aantal van deze problemen op te lossen zijn binnen dit onderzoek de ‘LSA Tools’ ontwikkeld, met het doel een zelf geselecteerde verzameling teksten te kunnen onderwerpen aan LSA. De LSA tools zijn geschikt om een eigen verzameling teksten aan te leggen en deze te bewaren in een database. Men kan dus zelf een corpus aanleggen en meerdere malen LSA toepassen op teksten naar keuze. De resultaten na het uitvoeren van LSA, de semantische afstanden, kunnen ook worden opgeslagen in de database. Verder zijn de scripts die tezamen de LSA Tools vormen, met uitzondering van een klein onderdeel, geschreven in de scripttaal php. Men kan de scripts downloaden en verder naar eigen inzicht ontwikkelen. De LSA scripts zijn zo ver ontwikkeld dat ze te gebruiken zijn om de usability van de navigatie van een website te beoordelen. In hoofdstuk 2 wordt een overzicht gegeven van een aantal methodes om usability te testen. In sectie 4 van hoofdstuk 2 wordt dieper ingegaan op de Cognitive Walkthrough for the Web. In deze sectie wordt ook toegelicht welke rol LSA binnen deze methode speelt. Vervolgens wordt in hoofdstuk 3 dieper ingegaan op LSA. In dit hoofdstuk wordt besproken hoe LSA kan worden toegepast en hoe deze techniek werkt. In hoofdstuk 4 wordt beschreven hoe de LSA tools zijn ontwikkeld. In hoofdstuk 5 wordt gekeken in hoeverre het onderzoek succesvol is geweest en wordt mogelijk verder onderzoek behandeld.
6
1. Web usability 2.1
Inleiding
Met de groei van het gebruik van het internet is het steeds belangrijker geworden dat de bezoekers van websites hun doel met deze websites kunnen bereiken. De usability van een website speelt hierin een cruciale rol. Usability is een term die oorspronkelijk werd gebruikt bij de ontwikkeling van software applicaties. Web usability is met de groei van het internet een onderzoeksgebied geworden waar veel over is geschreven. Usability is door de International Standards Organization als volgt omschreven: “De mate waarin een specifieke groep gebruikers een specifiek doel in een bepaalde omgeving op een effectieve, efficiënte en bevredigende manier kan uitvoeren” (ISO, 1999). Binnen de context van het www betekent dit dat de gebruiker van een website zijn of haar doelen middels deze website moet kunnen verwezenlijken. Usability is niet een op zich zelf staand fenomeen, het zou een onderdeel moeten zijn van het webdesign proces. In de praktijk is dit echter nog lang niet altijd het geval. Dix (2005) merkt op: “For some people usability is something added on in the end – making pretty screens; however, people do not just interact with the screen, they interact with the system as a whole”. Een expert op het gebied van usability die veel heeft gepubliceerd is Jakob Nielsen. Behalve een aantal boeken over website usability, is zijn website www.useit.com een veel geraadpleegde bron van informatie. Actuele zaken die te maken hebben met website usability kunnen worden gevonden in Nielsens’ ‘alertbox’ (http://www.useit.com/alertbox/), van 1995 tot het heden verschenen met regelmaat artikelen waarin vooral misstanden op het web met betrekking tot usability worden besproken. Volgens Zhu, Vu en Proctor (2005) kan de beoordeling van de mate van usability van applicaties of websites worden opgedeeld in twee onderdelen: usability guidelines en usability testing. Usability guidelines zijn algemene regels die in principe op elke applicatie of website toepasbaar zijn. Het zijn als het ware vuistregels die kunnen worden meegenomen in het designproces of waar een website of applicatie mee vergeleken kan worden. Usability tests zijn ontwikkeld om van een applicatie of website te achterhalen in hoeverre deze gebruikersvriendelijk is. 2.2
Guidelines voor website usability
Usability guidelines zijn vuistregels die gebruikt kunnen worden om te bepalen of gebruiksinterfaces gebruikersvriendelijk zijn. Er is veel kennis over usability beschikbaar in de vorm van guidelines. Behalve boeken en artikelen waarin guidelines worden behandeld, is er op het web ook een grote hoeveelheid informatie te vinden. Voorbeelden van guidelines zijn ondermeer te vinden op de website van Jakob Nielsen. Een vrij recent gepubliceerde ‘alertbox’ (een column over usability die regelmatig verschijnt) vermeldt bijvoorbeeld de volgende guidelines: “The first two paragraphs must state the most important information. There's some hope that
7
users will actually read this material, though they'll probably read more of the first paragraph than the second. Start subheads, paragraphs, and bullet points with information-carrying words that users will notice when scanning down the left side of your content in the final stem of their F-behavior. They'll read the third word on a line much less often than the first two words.” (Nielsen, 2006). Het toepassen van guidelines om de gebruikersvriendelijkheid te beoordelen kent volgens Mariage, Vanderdonckt en Pribeanu (2005) enige nadelen: - Het toepassen van guidelines is noodzakelijk, maar niet voldoende. Dit wil zeggen dat een website die voldoet aan een set guidelines, niet per definitie door alle bezoekers als gebruikersvriendelijk ervaren zal worden, - het is niet eenvoudig om te bepalen welke guidelines voor een bepaalde website, het beste toegepast kunnen worden, - sommige guidelines zijn niet erg bruikbaar. Ze kunnen bijvoorbeeld voor meerdere interpretaties vatbaar zijn. Samengevat kan worden gesteld dat websites op zijn minst aan een aantal, zo zorgvuldig mogelijk geselecteerde, guidelines moeten voldoen, maar dat men er vanuit moet gaan dat dit nog niet voldoende is om tot een gebruikersvriendelijke website te komen. Om er zeker van te zijn dat een bepaalde website gebruikersvriendelijk is, kan het nodig zijn om met usability tests de website grondig te onderzoeken op gebruikersvriendelijkheid. Het testen op gebruikersvriendelijkheid gebeurt middels zogenaamde ‘usability evaluaties’. Met usability evaluaties kan men problemen opsporen in de gebruikersvriendelijkheid, die alleen door het toetsen van een website aan de hand van guidelines niet naar voren waren gekomen. 2.3
Usability evaluaties voor websites
Om te achterhalen of een website ‘usable’ is, is er een aantal methodes die wordt gebruikt. In Zhu, Vu en Proctor (2005) worden deze methodes onderverdeeld in 6 klassen, te weten: - Usability inspections, - usability testing, - prototyping, - field methods / observation, - interviews, focus groups en questionnaires, - web based methods. Al deze klassen worden in deze sectie besproken. -
Usability inspections
Usability inspections zijn methoden die door de ‘experts’ (usability experts maar ook software ontwikkelaars) worden toegepast om de usability van een systeem te testen. In dit proces wordt dus geen gebruik gemaakt van eindgebruikers. Een voordeel van deze methodes is dat ze betrekkelijk goedkoop en snel uit te voeren zijn. Twee veelgebruikte methodes zijn de ‘heuristic evaluation’ en de ‘cognitive walkthrough’. De heuristic evaluation is een test die uitgevoerd wordt door een usability expert. Deze expert evalueert een systeem aan de hand van vooraf vastgestelde ‘guidelines’. Deze guidelines kunnen bijvoorbeeld bestaan uit regels
8
over de consistentie, het taalgebruik, het gebruikt van feedback etc. Het systeem dat wordt getest hoeft nog niet een werkend eindproduct te zijn, de heuristic evaluation kan ook gedaan worden met een prototype. Een andere usability inspection is de ‘Cognitive walkthrough’. Dit is een methode waarbij de usability expert een systeem test door taken uit te voeren die normaal gesproken door gebruikers worden uitgevoerd. De tester gaat op basis van een gegeven doel alle benodigde stappen (correcte acties) doorlopen en beantwoordt bij elke stap 4 vragen. In de literatuur bestaat er een aantal verschillende interpretaties van de cognitive walkthrough onder andere in Zhu et. al. (2005) en Blackmon et. al (2002). In Faulkner (2000) wordt de cognitive walkthrough gevormd door de volgende vragen: - Is het doel duidelijk in deze fase? - Ligt de volgende stap voldoende voor de hand? - Is het duidelijk dat de actie tot het doel leidt? - Welke problemen zijn er bij het uitvoeren van de actie? Voordat de test wordt gedaan moet er een duidelijk beeld zijn van de doelen die een gebruiker zich stelt bij het gebruik van een website of applicatie. Verder moeten de correcte stappen die moeten worden ondernomen om die doelen te bereiken bekend zijn. -
Usability testing
De volgende klasse methoden is usability testing. Een usability test wordt doorgaans ondernomen in een laboratorium situatie, waarbij een aantal testpersonen een aantal van tevoren vastgestelde taken uit moet voeren. Het doel van de test is om observaties en analyses te maken van fouten die worden gemaakt, misverstanden die leven bij de testpersonen, de tijdsduur waarin men de taken kan doen etc. De effectiviteit van usability tests kan worden geoptimaliseerd door niet één test te doen, maar iteratief te testen. Dit betekent dat na elke test verbeteringen worden aangebracht, waarna er opnieuw wordt getest om te kijken of er geen nieuwe fouten zijn geïntroduceerd. -
Protoyping
Protoyping is een methode die vooral geschikt is in de beginfase van de ontwikkeling van een website. Er zijn 2 soorten prototypes: high-fidelity en lowfidelity. High-fidelity betekent dat er een interface is geprogrammeerd om de zogenaamde ‘look-and-feel’ te creëren. Low-fidelity prototypes zijn vaak papieren versies. In het geval van websites kan men in plaats van het programmeren van een interface net zo snel een prototype van de website ontwikkelen in html. Gegeven is dat prototyping noodzakelijk is, Dix (2004) merkt op: “Because interaction design involves people an people are complex, the only thing that you can be certain of in your initial designs that it will not be right”. Prototyping is overigens een iteratief proces, elk prototype kan worden beoordeeld om steeds tot een betere versie te komen. Deze iteraties kunnen afwisselingen zijn van highfidelity en low-fidelity prototypes.
9
-
Field methods/observation
Veel methoden die worden gebruikt om applicaties of websites te testen op usability vinden plaats in een ‘laboratory setting’. Dit betekent dat de situatie waarin wordt getest opgezet is door de usability expert. Men kan dus allerlei situaties creëren waarbij er al dan niet met behulp van proefpersonen tests worden ondernomen. In het geval van de zogenaamde ‘Field methods’ wordt er vanuit gegaan dat het loont om gebruikers te observeren in hun eigen omgeving. Behalve dat deze manier van testen inzichten over de gebruiker kan opleveren die in een laboratoriumsetting niet worden gevonden, kan het in sommige gevallen ook goedkoper of eenvoudiger zijn om de tests op de plaats uit te voeren waar de applicatie daadwerkelijk wordt gebruikt. -
Interviews, focus groups en questionnaires
Interviews afnemen is een betrekkelijk goedkope en eenvoudige methode om inzicht te krijgen in de gebruikers en de taken die zij vervullen. Interviews worden vaak gebruikt als aanvulling op andere methoden. Het gebruik van een ‘focus group’ is een methode die oorspronkelijk uit marketing onderzoek komt. Er wordt gebruik gemaakt van een groep van 6 tot 10 mensen die onder leiding van een onderzoeker discussiëren over een bepaald ontwerp. Het voordeel van focus groups is dat er problemen uitgesproken worden die zonder de interactie die een groep oplevert, niet naar voren gekomen waren. Een ander voordeel is dat in betrekkelijk weinig tijd, veel gegevens verzameld kunnen worden, het is dus een zeer efficiënte methode. Een ‘questionnaire’ is een verzameling stellingen of vragen die bedoeld zijn om de voorkeuren of meningen van gebruikers te achterhalen. Het voordeel van het gebruik van questionnaires is dat er een grote hoeveelheid kwantitatieve data over verschillende groepen gebruikers verzameld kan worden. -
Web-based methods
Bij het evalueren van web usability kan het web zelf ook een waardevol instrument zijn. Men kan bijvoorbeeld statistieken verzamelen over het aantal bezoekers en welke pagina’s zij bezocht hebben. Verder kan men ook achterhalen via welk ‘pad’ gebruikers bepaalde pagina’s vinden. Verder kan het web natuurlijk worden gebruikt om bezoekers van websites vragenlijsten in te laten vullen waarin zij feedback over de website kunnen geven. Beide methodes zijn goedkoop en kunnen veel data opleveren.
2.4
Cognitive Walkthrough for the Web
In de vorige secties is een aantal methoden besproken die worden gebruikt om de de usability van websites te testen. Van alle onderdelen die een rol spelen bij de usability van een website, is de navigatie die de gebruiker hulp biedt bij het vinden van informatie, een van de belangrijkste. Dit wordt onder andere bevestigd door Tullis (2004): “Most web designers would agree that the presentation of navigation options is of crucial importance to the usability of the site”. In deze sectie zal dieper worden ingegaan op de navigatie van websites.
10
De ‘cognitive walktrough for the web’ is een afgeleide van de cognitive walkthrough, een evaluatiemethode die wordt gebruikt om fouten in de usability van een applicatie te vinden. Deze test wordt uitgevoerd door een ‘expert’. De methode verschilt van andere evaluaties die door een expert worden uitgevoerd: “the cognitive walkthrough requires the expert to go through a task or tasks, with the view of imitating user performance (…)” (Faulkner, 2000: 183). De Cww is een methode die uitgebreid wordt besproken in drie artikelen, Blackmon et. al. (2002), Blackmon et. al. (2003) en Blackmon et. al. (2005). De Cww is ontwikkeld om te onderzoeken hoe goed een website de gebruiker helpt bij het navigeren en het vinden van informatie. De Cww wordt uitgevoerd aan de hand van mogelijke doelstellingen van gebruikers. Aan de hand van een doelstelling wordt het correcte pad vastgesteld naar de informatie op de website waarmee de doelstelling vervuld kan worden. Net als het geval is bij de ‘gewone’ cognitive walkthrough, moeten er bij elke stap die wordt gezet een aantal vragen worden beantwoord. In het geval van de cognitive walkthrough zijn dit drie vragen. De ontwikkelaars van de Cww beschrijven in Blackmon et. al. (2003) echter 5 vragen: 1. Will the users try to achieve the right effect? 2. Will the correct action be made sufficiently evident to the user? 3. a) Will the user connect the correct subregion of the page with the goal using heading information and her understanding of the site? b) Will the user connect the goal with the correct widget in the attended-to subregion of the page using link labels and other kinds of descriptive information? 4. Will the user intrerpret the system’s response to the chosen action correctly? De Cww is gebaseerd op CoLiDes. CoLiDes is een model dat een theoretische verklaring geeft voor de problemen die internetgebruikers tegenkomen bij het navigeren over websites. Het model is ontwikkeld om de cognitieve processen van de gebruikers die over het web navigeren, te begrijpen. CoLiDes is een acroniem dat staat voor Comprehension Based Linked model of Deliberate Search. Het model is een onderdeel van een onderzoeksprogramma dat als doel heeft om de ‘success rates’ van internetbezoekers bij het zoeken naar informatie, te verhogen. Behalve de ontwikkeling van het theoretische model, richt men zich ook op de ontwikkeling van testen (voor het model en usability tests voor websites) en de ontwikkeling van applicaties en handleidingen voor websiteontwikkelaars. Het model bestaat uit vier processen: parsing, focussing on, comprehension en selection. De eerste fase is parsing, het ontleden van een pagina. Doorgaans bestaat een webpagina uit een groot aantal objecten zoals afbeeldingen, navigatie-items, hyperlinks, tekstdelen etc. Om dit complexe geheel te begrijpen scannen gebruikers de pagina en delen deze in, in 5 tot 10 schematische objecten. Deze indeling wordt gemaakt op basis van visuele aanwijzingen op de webpagina en op basis van kennis van webgebruikers over geldende conventies met betrekking tot de opbouw van een pagina. Nadat de pagina is opgedeeld in een mentale schematische representatie, wordt de aandacht gericht op de sectie die het meeste aansluit bij de doelstelling van de gebruiker. De gebruiker richt de aandacht nu op werkelijke objecten (hyperlinks, afbeeldingen, icoontjes, teksten) binnen de gekozen sectie. Dit
11
zijn objecten die door de gebruiker kunnen worden gebruikt om dichter bij het doel te komen. De volgende stap die wordt ondernomen is het begrijpen van de betekenis van de verschillende objecten in de subsectie (comprehension). De laatste stap is het kiezen van een van de objecten (selection) en de actie die kan worden uitgevoerd met dit object, uitvoeren. In de praktijk betekent dit dat er wordt geklikt op een van de elementen op een website. De keuze voor het object dat wordt gebruikt, is afhankelijk van de overeenkomst in betekenis tussen de objecten in de sectie, en de doelstelling van de gebruiker. Twee begrippen die een prominente plaats hebben in de vragen waaruit de CWW bestaat, zijn headings en linklabels. De headings op een website zijn de zogenaamde ‘kopjes’ die de gebruiker helpen om een globale indeling van de website te maken. Daarna helpen de headings de gebruiker om te beslissen welk deel van de site waarschijnlijk het meeste aansluit bij de doelstelling van de gebruiker. Als de gebruiker een deel van de website heeft geselecteerd gaan de linklabels die hij hier aantreft een rol spelen. Linklabels zijn de woorden waarop de gebruiker kan klikken om dichter bij het doel (de informatie) te komen, de hyperlinks. Bij de keuzes die de gebruiker maakt speelt de semantische overeenkomst tussen de headings en de linklabels en tussen de linklabels en de doelstelling van de gebruiker, een belangrijke rol. De mate van semantische overeenkomst wordt ook wel de information scent genoemd. Deze metafoor roept het beeld op van een bezoeker van een website die aan het ‘speuren’ is naar de tekst die de informatiebehoefte bevredigt. Op elke pagina wordt het object (de hyperlink) gekozen die het sterkste de ‘geur’ (semantische overeenkomst) heeft van de tekst die wordt gezocht. Om information scent te bepalen wordt LSA gebruikt, het object met de hoogste information scent is het object dat de hoogste semantische overeenkomst vertoont.
12
3 3.1
Latent semantic analysis Inleiding
In sectie 2.3 is een overzicht gegeven van een aantal methoden om de usability van websites te evalueren. In de laatste sectie van hoofdstuk 2 zijn CWW en CoLiDeS behandeld, methoden die worden gebruikt om vooral de effectiviteit van de navigatie op websites te testen, waarbij de nadruk ligt op information scent. Met dit begrip geeft men aan hoe duidelijk het pad naar de benodigde informatie wordt aangegeven. Om een concrete uitspraak te doen over de information scent, wordt in deze methodes gebruik gemaakt van Latent Semantic Analysis (vanaf nu: LSA). In dit hoofdstuk zal worden uitgelegd hoe LSA werkt en hoe het kan worden toegepast. LSA is een methode om de overeenkomst in betekenis van teksteenheden (documenten, paragrafen, woorden) vast te stellen op basis van het voorkomen van woorden in een context. De betekenis van een woord wordt bepaald door middel van een statistische berekening die wordt toegepast op een tekstcorpus. Het idee is dat het geheel van contexten waarin bepaalde woorden voorkomen en niet voorkomen gebruikt kan worden om van woorden of van groepen woorden vast te stellen in welke mate ze overeenkomen in betekenis. LSA representeert de betekenis van een woord als de gemiddelde betekenis van alle passages waarin het woord voorkomt. De betekenis van een passage is het gemiddelde van de betekenis van alle woorden die in een passage voorkomen. Eigenlijk kun je LSA op twee manieren beschouwen; als een methode waarmee je de ‘eigenlijke’ betekenisovereenkomsten tussen teksteenheden kunt bepalen of als een statistische techniek waarbij matrices met frequenties van termen in documenten worden omgezet in matrices waarin de waarden zijn gecorrigeerd en de belangrijkste relaties in de data naar voren komen. In de volgende sectie wordt een aantal toepassingsgebieden van LSA besproken. In deze sectie wordt LSA nog niet gezien als statistische techniek, maar als een methode om betekenisrelaties te vinden. In sectie 3.3 wordt de statistische kant van LSA belicht, er wordt gekeken hoe LSA als techniek werkt. 3.2
Toepassingsgebieden van LSA
In de voorgaande sectie is globaal beschreven hoe LSA wordt gebruikt om de diepere of ‘eigenlijke’ semantische overeenkomsten tussen teksteenheden vast te stellen. In deze scriptie wordt beschreven hoe de diepere betekenisrelaties kunnen worden gebruikt om uitspraken te doen over de usability van websites zoals dit ook met de Cww gebeurt. LSA werd genoemd als een techniek die functioneert binnen de Cww. LSA wordt echter ook in andere contexten toegepast en komen derhalve ook met andere benamingen voor. In de komende secties zullen deze gebieden worden behandeld.
13
3.2.1
Latent Semantic Indexing
Information retrieval is de studie die zich bezighoudt met de opslag en het vinden van informatie. LSA wordt in dit vakgebied toegepast om op basis van zoektermen betere resultaten (relevante documenten) te vinden. Het is in deze een alternatief voor ‘gewone’ ‘keyword search’. De zwakte van keyword search is dat de zoektermen die worden gebruikt om relevante documenten te vinden, niet altijd zijn gebruikt om de totale hoeveelheid informatie, de documentset, te indexeren. Dit probleem hangt hoofdzakelijk samen met een tweetal begrippen: synonymie en polysemie. Synonymie is de relatie tussen twee predikaten (termen) die dezelfde betekenis hebben (Hurford en Heasley, 1983:102). Het kan dus voorkomen dat een query bestaat uit zoektermen die niet in relevante documenten voorkomen. Het document wordt dus niet gevonden terwijl het wel relevant is. Polysemie betekent dat een meerdere betekenissen heeft (Hurford en Heasley, 1983: 123). De bedoelde betekenis is in dit geval afhankelijk van de context waarin het woord wordt gebruikt. De gevolgen van synonymie en polysemie komen tot uiting in lager ‘recall’ en ‘precision’. Recall en precision zijn termen die worden gebruikt om aan te geven in welke mate een bepaalde zoekopdracht relevante documenten heeft opgeleverd (Baeza-Yeates, Ribeiro-Neto, 1999:75): Recall is het percentage van de set relevante documenten dat is gevonden, precision is het percentage van de gevonden documenten dat gevonden dat daadwerkelijk relevant is. Synonymie leidt tot een slechtere recall, polysemie leidt tot een slechtere precision. Om de problematiek van lage recall en precision als gevolg van synonymie en polysemie op te lossen kan LSA worden toegepast. Dit betekent dat op basis van een aantal zoektermen ook documenten worden gevonden waar de zoektermen niet noodzakelijk in voorkomen. Het vinden van een document is dus niet gebaseerd op het voorkomen van de zoektermen, maar op de betekenis van de zoektermen. Het toepassen van LSA in het retrieval proces leidt vooral tot een verbetering van recall. 3.2.2
LSA en het vinden van synoniemen
Landauer, Foltz en Laham (1998:20) vermelden dat LSA gemiddeld genomen, woorden die een vergelijkbare betekenis hebben ook op een vergelijkbare manier representeert. Als voorbeeld wordt een analyse van een encyclopedie genoemd, waarbij de woorden ‘physician’, ‘patient’ en ‘bedside’ door LSA als woorden met vergelijkbare betekenis worden gerepresenteerd. Om te testen hoe goed, vergeleken met mensen, Lsa synoniemen kan vinden, is een zogenaamde ‘vocabulary test’ ondernomen. De test bestond uit 80 vragen, elke vraag bestond uit een woord waarbij het synoniem moet worden gekozen uit 4 andere woorden. Van alle 4 de antwoorden is door Lsa de semantische overeenkomst met de vraag berekend. Het woord met de hoogste semantische overeenkomst werd als antwoord gegeven. Op deze manier werd door LSA 65% van de vragen correct beantwoord.
14
3.2.3
LSA en ‘subject matter knowledge’
Een andere eigenschap van LSA is dat er kennis over een bepaald onderwerp mee kan worden gesimuleerd. Landauer, Foltz en Laham (1998:26) hebben een onderzoek gedaan waarbij LSA is getraind met de tekst van boeken over psychologie. Na het trainen is getest hoe goed LSA presteert bij het maken van multiple choice vragen over de inhoud van deze boeken. LSA presteerde bij deze test beter dan de scores die je op basis van kansrekening zou verwachten. 3.3
Hoe LSA werkt
In de vorige secties is LSA behandeld. LSA is een statistische techniek die kan worden gebruikt om de semantische afstanden tussen teksteenheden vast te stellen. In sectie 3.2 is een aantal nuttige toepassingen van LSA benoemd. In deze sectie wordt dieper op de werking van LSA ingegaan. 3.3.1
Prepareren van de data
LSA is een techniek die niet direct op een corpus toe te passen is. Het is een statistische methode die de semantische afstanden tussen teksteenheden bepaalt op basis van een matrix. Deze matrix bestaat uit de frequenties van alle woorden (termen) die voorkomen in een aantal teksten (documenten).
3.3.2
Singular value decomposition
De statistische techniek die wordt gebruikt om LSA uit te voeren, heet SVD. SVD is een acroniem voor Singular Value Decompostion. SVD is een statistische techniek die op matrices kan worden toegepast: “(…) The SVD is a powerful computational tool for analysing matrices (…) which has applications in many fields” (Forsythe, Malcolm en Moler, 1977: 201). Singular Value Decomposition of SVD is een mathematische berekening die wordt gebruikt om een matrix in de eerste instantie om te zetten in drie matrices. Het product van deze matrices is gelijk aan de aanvankelijke matrix.
X= TxSxD
X is de bronmatrix waarin de waarden voor elke term in elk document staan. T en D zijn matrices waarin zich linker- en rechter singular vectors bevinden. Dit zijn de termvectoren en de documentvectoren. S is een diagonale matrix met singular values. In de matrix T staan alle vectoren van de termen, in de matrix D staan de vectoren van de documenten. In de matrix S staan de zogenaamde eigenvalues. Het aantal eigenvalues is gelijk aan het aantal dimensies die wordt gebruikt.
15
3.3.3
Een uitgewerkt voorbeeld
In de verschillende artikelen, hoofdstukken en presentatieslides waarin LSA en SVD worden besproken, wordt vaak eenzelfde voorbeeld aangehaald. Ik zal het voorbeeld in deze sectie bespreken zoals het ook is gepresenteerd in Landauer et. al (1998) . Er wordt gebruik gemaakt van de titels van 9 documenten die verdeeld zijn in twee groepen. De eerste groep, de documenten c1 t/m c5, zijn artikelen die gaan over ‘human computer interaction’. De tweede groep, de documenten m1 t/m m4 zijn artikelen die gaan over wiskundige ‘graph theory’. Er zijn 12 unieke termen geselecteerd, die voorkomen in minstens twee van de genoemde documenten. De frequenties van de termen in de documenten zijn opgenomen in de volgende matrix:
Afbeelding 1: Matrix X, de waarden zijn de frequenties van de termen in een document
Op deze matrix wordt SVD toegepast. Dit betekent dat de oorspronkelijke matrix wordt omgezet in drie matrices, die vermenigvuldigd de oorspronkelijke matrix vormen. De oorspronkelijke matrix wordt omgezet in twee matrices met eigenvectoren en een matrix met eigenwaarden. De eerste matrix is een matrix met de eigenvectoren van de termen, de tweede is een matrix met de eigenvectoren van de documenten. De matrix met eigenwaarden is een diagonale matrix. De eigenwaarden zijn gesorteerd, de grootste waarde staat in de eerste kolom, op de eerste rij. Het aantal eigenwaarden correspondeert met het aantal dimensies van de nieuwe vectorruimte die is berekend. De volgende matrices zijn het resultaat van het toepassen van SVD.
16
Afbeelding 2: respectievelijk de matrices T die bestaat uit de termvectoren, de matrix S die bestaat uit eigenwaarden en de matrix D die bestaat uit documentvectoren
Zoals gezegd kan het aantal dimensies waaruit de nieuwe vectorruimte bestaat, worden gekozen. Door het aantal dimensies zeer sterk terug te brengen, wordt de berekening efficiënter, er gaat echter ook betrekkelijk veel informatie verloren. Men kan echter bij een zeer groot, of een zeer klein corpus, kiezen voor respectievelijk meer of minder dimensies. In het voorbeeld is gekozen voor een tweedimensionale ruimte. Dit betekent dat de matrices T en D vermenigvuldigd moeten worden met de grijs gemarkeerde eigenwaarden uit de matrix S zoals weergegeven in afbeelding 2 . Alle andere waarden dan de twee hoogste waarden uit de matrix S worden op 0 gezet. Het aantal eigenwaarden waarmee wordt vermenigvuldigd is gelijk aan het aantal dimensies waar de vectorruimte uit bestaat. Op basis van de matrices uit afbeelding 2 wordt nu een reconstructie gemaakt van de matrix uit afbeelding 1, waarbij het aantal dimensies wordt teruggebracht naar 2. 0
17
Afbeelding 3: reconstructie van de matrix X gebruik makend van 2 dimensies.
Zowel in afbeelding 1 als afbeelding 3 zijn 2 termen en de bijbehorende waarden grijs gemarkeerd en twee termen met de bijbehorenden waarden voorzien van een zwarte rand. Tussen twee termen kan op basis van de waarden uit de matrices de correlatie r worden berekend. Bijvoorbeeld de correlatie tussen ‘human’ en ‘user’ heeft een waarde van -.38 gebaseerd op de waarden uit de oorspronkelijke matrix. Doet men dezelfde berekening op basis van de reconstructie van de matrix na toepassing van SVD (de waarden uit de matrix weergegeven in afbeelding 3) dan is de correlatie .94. Aanvankelijk was er sprake van de matig negatieve correlatie maar na het toepassen van LSA is er een sterke positieve correlatie tussen twee termen. De termen komen intuïtief semantisch vrij sterk overeen. LSA heeft er dus voor gezorgd dat de diepere ‘eigenlijke’ semantische overeenkomst tussen deze twee termen, op basis van hun voorkomens in de documenten is uitgekomen. Een andere verandering is te zien bij de vergelijking tussen de term ‘human’ en ‘minors’. De correlatie verandert van -.29 op basis van de waarden uit de oorspronkelijke matrix in -.83. In dit geval is er sprake van twee woorden die intuïtief nauwelijks overeenkomen maar die zonder het toepassen van LSA geen sterke negatieve correlatie vertonen op basis van hun voorkomens in de documenten. Deze sterke negatieve correlatie komt wél naar voren na het uitvoeren van LSA. Behalve de overeenkomst in betekenis tussen twee termen kan ook de gecorrigeerde kans dat een bepaald woord voorkomt in een document worden afgelezen uit de gereconstrueerde matrix. In de matrices in afbeelding 1 en afbeelding 3 zijn de waarden voor de termen ‘survey’ en ‘trees’ in het document m4 grijs gemarkeerd. De term ‘trees’ komt niet voor in het document m4. Omdat de termen ‘graph’ en ‘minors’ wél voorkomen in dit document is de waarde 0 uit de oorspronkelijke matrix vervangen door de waarde 0.66 in de gereconstrueerde matrix. Deze nieuwe waarde kan worden gezien als een benadering van het aantal
18
keer dat het woord ‘trees’ voorkomt in elk van een oneindige set documenten waar de termen ‘graph’ en ‘minors’ in voorkomen. De andere waarde die grijs is gemarkeerd is die voor de term ‘survey’. Deze term komt voor in document m4, maar deze waarde 1 is bijgesteld naar 0.42 om aan te geven dat het onwaarschijnlijk is dat deze term belangrijk is voor het karakter van dit document. 3.4
Conclusie
LSA is bewezen een zeer geschikte techniek te zijn om de overeenkomst in betekenis tussen teksteenheden te beschrijven, op basis van corpusdata. Deze inschatting van overeenkomst in betekenis komt dicht bij de beoordeling van betekenis door mensen. In de voorgaande secties is gebleken dat LSA een waardevolle methode is om de dieperliggende semantische relaties tussen teksteenheden te vinden. In dit hoofdstuk is globaal uitgelegd wat de toepassingsgebieden van LSA zijn en hoe LSA werkt. In het volgende hoofdstuk wordt beschreven hoe LSA is geïmplementeerd middels een verzameling scripts geschreven in de programmeertaal php, gebruik makend van een MySql database.
19
4 4.1
LSA Tools Inleiding
In de vorige hoofdstukken is gebleken dat de labels die worden gebruikt in de navigatie van een website, van grote invloed zijn op de mate waarin gebruikers van een website in staat zijn om de informatie waarnaar zij op zoek zijn te vinden. Zoals is besproken is de information scent van de labels op een website cruciaal voor de gebruiker om het juiste pad te vinden. De kracht van deze information scent wordt onder andere bewerkstelligd door de headings en de linklabels op een website. Headings kunnnen worden omschreven als woorden die een deel van de website samenvatten. De headings zijn belangrijk voor de gebruiker bij het opdelen van een website in subregions. Een heading zal in veel gevallen een duidelijke omschrijving moeten geven van een deel van de navigatie. Dit deel van de navigatie is vervolgens opgebouwd uit een verzameling linklabels. De betekenis van de woorden die worden gebruikt moet zo exact mogelijk de informatie op een website weerspiegelen. Hoe exacter dit gebeurt, hoe beter de bezoeker wordt begeleidt naar de pagina’s die aansluiten bij de doelstelling In hoofdstuk 3 is LSA behandeld. LSA is een acroniem voor Latent Semantic Analysis. LSA is een techniek die zijn oorsprong vindt in Information Retrieval, het vakgebied dat zich bezighoudt met technieken die worden toegepast bij het vinden van informatie. LSA is een techniek die wordt gebruikt om de afstand tussen betekenissen van teksteenheden te vinden. Een teksteenheid kan bijvoorbeeld een woord, een paragraaf of een document zijn. De semantische afstand wordt weergegeven als de afstand tussen twee vectoren. Deze semantische afstanden worden in een matrix weergegeven. Deze matrix wordt berekend op basis van een matrix waar het aantal voorkomens van een woord in een bepaalde teksteenheid staat weergegeven.
4.2
Doelstelling
De applicatie is bedoeld om te fungeren als hulpmiddel voor een webdesigner of een usability expert, bij het vinden van mogelijke fouten in de woordkeuze van de navigatie van een bepaalde website. Twee problemen kunnen door middel van de applicatie worden geïdentificeerd: - Confusability, het probleem dat zich voordoet als een aantal elementen in de navigatie semantisch zeer dicht bij elkaar liggen. Dit levert een situatie op waarin het erg moeilijk voor de gebruiker is om een stap te maken richting de juiste webpagina. - Weak information scent, treedt op wanneer de elementen in de navigatie geen sterke semantische relatie hebben met de webpagina’s waarnaar zij verwijzen. De gebruiker zal moeite hebben om een keuze te maken omdat de linklabels niet duidelijk maken dat ze naar de juiste pagina verwijzen. Door linklabels onderling en linklabels en de inhoud van webpagina’s semantisch met elkaar te vergelijken, kunnen beide problemen worden opgespoord.
20
4.3
Opzet van de applicatie
In de komende secties zal worden besproken hoe de applicatie werkt. Omdat het een verzameling scripts betreft, zullen deze één voor één worden besproken. De volgende stappen worden ondernomen: - Genereren van een frequentiematrix op basis van documenten; - Omzetten van frequentiematrix naar sparse-formaat; - SVD toepassen op sparse-matrix; - Resulterende matrices vermenigvuldigen; - ‘Vragen stellen’ aan resulterende data. 4.3.1
Genereren van een frequentiematrix
Om de talige uitingen in de navigatie van een website met LSA te kunnen analyseren, moet er gebruik worden gemaakt van een corpus. Dit corpus moet bestaan uit de teksten van een websites (documenten). Omdat het voor kan komen dat een bepaalde website niet een grote hoeveelheid tekst levert, is het verstandig om de teksten van een aantal vergelijkbare websites aan het corpus toe te voegen. In een ideale situatie zijn dit websites die gemaakt zijn voor een vergelijkbare doelgroep. Hoe groter het corpus is, hoe groter de waarde van de resultaten van de applicatie zijn. De documenten die als input kunnen dienen voor LSA, kunnen in html-formaat worden aangeleverd. Omdat de LSA-tool in deze fase nog niet optimaal werkt, kan men er het beste voor kiezen om zoveel mogelijk niet relevante code (javascript, css etc.), uit de broncode te verwijderen. Doet men dit niet, dan kunnen er delen van deze code in de database worden gevonden als ‘term’. Omdat de methode geschikt is om in elke fase van het webdesignproces te gebruiken, is het niet per sé nodig dat er van bestaande websites gebruik wordt gemaakt. Een zogenaamde ‘mock-up’ waarin de teksten staan is voldoende. Het is dus niet noodzakelijk dat alle teksten als html bestand beschikbaar zijn, zogenaamde ‘rauwe’ tekstbestanden kunnen ook worden gebruikt. De eerste stap die wordt ondernomen, is het omzetten van de teksten in frequentielijsten voor ieder document. Deze frequentielijsten worden opgeslagen in een database. Om aan te geven welke webpagina’s (vanaf nu: documenten) opgenomen moeten worden in de database, moet er een tekstbestand worden samengesteld met de url’s waar de documenten zich bevinden. Elke url moet op een nieuwe regel staan. Een voorbeeld van een dergelijk bestand wordt weergegeven in afbeelding 4.
21
Afbeelding 4: verzameling van urls in tekstbestand
Tot nu toe is er een bepaalde hoeveelheid tekst verzameld die als data moet gaan dienen voor de semantische analyse. Deze data is echter nog niet geschikt om verder mee te werken. Een drietal bewerkingen moet op de data worden toegepast om deze geschikt te maken. Ten eerste kunnen alle stopwoorden uit de data worden verwijderd. Van elk woord wordt bekeken of deze voorkomt in de stopwoordenlijst, als dit het geval is zal deze worden verwijderd uit de data. De stopwoordenlijst bevat woorden als “aan, na, pas, net, niet, dan, dat” etc. Deze woorden zullen nooit relevant zijn als heading of linklabel en kunnen dus genegeerd worden. Aangezien LSA geen efficiënte techniek is, loont het om zoveel mogelijk niet-relevante woorden uit het corpus te verwijderen. De lijst met stopwoorden die hier wordt gebruikt, is verkregen van de website http://downloadeast.oracle.com/otn_hosted_doc/intermedia/inter.816/a77063/astopsu4.htm (zie bijlage 1). De woorden die voorkomen in deze stoplijst zijn opgenomen in een aparte tabel in de database. Elke keer dat er nieuwe teksten aan de database worden toegevoegd, worden alle woorden die voorkomen in de tabel ‘stoplist’, verwijderd. De volgende stap is het toepassen van Porter-stemming. Dit wil zeggen dat alle woorden tot hun stam worden teruggebracht. Zo zullen de woorden navigeert, navigeren en navigeerde, worden teruggebracht tot hun stam, navigeer. Aangezien deze woorden vanuit een semantisch oogpunt gezien dezelfde waarde hebben, is het dus goed dat ze als één woord worden gerekend. De volgende stap is het uniek sorteren van de woorden. Dit betekent dat elk document dat wordt opgenomen in de database, wordt opgenomen als een lijst unieke woorden met de frequentie. In de vorige secties is beschreven hoe de data voor de LSA is verzameld en geschikt is gemaakt. In de volgende sectie wordt beschreven hoe deze data in een database wordt opgeslagen. De twee stappen die in de vorige sectie zijn beschreven leveren woordenlijsten en labels die naar verzamelingen van woorden (teksten) verwijzen op. Deze gegevens dienen nu in een database te worden opgeslagen en wel op een dergelijke manier dat ze eenvoudig te gebruiken zijn in de volgende stap: het
22
berekenen van een vector-space. Het voordeel van het gebruiken van een database is dat er op elk gewenst moment een website toegevoegd kan worden om vervolgens een analyse te doen. Alle bewerkingen die in de secties 5.4.1. tot en met 5.4.4. worden beschreven, kunnen met 1 php script worden uitgevoerd. Dit php script wordt vanaf de command line aangeroepen en heeft als argumenten een projectnaam en een lijst met url’s die verwijzen naar de documenten die het corpus vormen. Het php script is genaamd webpages2mysql.php en is opgenomen als bijlage. 4.3.2
Omzetten van matrix naar sparse formaat
Om SVD toe te kunnen passen wordt er gebruik gemaakt van SVDLIBC. SVDLIBC is een library in de programmeertaal C, die ook standalone is te gebruiken. Het programma kan gratis worden gedownload van de website van het Massachusetts Institute of Technology. De input data voor dit programma is een tekstbestand die de matrix bevat met de frequenties van de termen in bepaalde documenten. In een dergelijke matrix komen doorgaans zeer veel 0-waarden voor, dit wordt ook wel een “sparse matrix” genoemd. Deze sparse matrices worden door SVDLIBC als een bijzonder formaat gezien. Bij het uitvoeren van SVD kan men kiezen uit twee formaten: ‘dense matrix’ en ‘sparse matrix’. Een dense matrix is het formaat matrix het gebruikelijke formaat. Is er echter sprake van een matrix met veel nullen, dan kan deze beter worden omgezet naar het sparse matrix formaat. Dit formaat ziet er als volgt uit:
Aantal rijen[spatie]Aantal kolommen[spatie]Aantal positieve waarden voor elke kolom (op een nieuwe regel): regel): Aantal positieve waarden Voor elke positieve waarde in de kolom: Rij-index_Waarde
In afbeelding 5 is te zien hoe een matrix van het dense matrix formaat is omgezet in het sparse matrix formaat:
23
Afbeelding 5: Twee identieke matrices: boven in het ‘dense-formaat’ onder in het ‘sparse formaat’
In afbeelding 5 worden twee identieke matrices in twee verschillende formaten weergegeven. De bovenste weergave is de gebruikelijke weergave van een 3 bij 6 matrix. De onderste weergave is een matrix waarin alleen de positieve waarden zijn weergegeven. Alle nullen zijn weggelaten, het zogenaamde sparse-matrix formaat. De eerste rij van deze matrix bevat de dimensies en het aantal positieve waarden. Daarna wordt op elke nieuwe regel voor elke positieve waarde de rij index en de waarde gegeven. De waarden die in de matrices zijn gemarkeerd, corresponderen met elkaar. Te zien is dat de waarde 2 de enige positieve waarde van die kolom is en dat deze posititieve waarde in de dense matrix op rij-index 1 te vinden is. Omdat de term-document matrices doorgaans bestaan uit veel nulwaarden, is het belangrijk dat bij het uitvoeren van de SVD voor een dergelijke matrix, gebruik wordt gemaak van het sparse-matrix formaat. Dit formaat wordt in de huidige applicatie niet samengesteld uit een ‘dense matrix’, maar direct vanuit de database. De frequenties en van de termen zijn in een tabel opgeslagen zoals weergegeven in afbeelding 6.
24
Afbeelding 6: fragment uit de tabel met termfrequenties
Om de frequenties, zoals weergegeven in de kolom ‘value’, om te zetten in het sparse matrix formaat wordt gebruik gemaakt van het script ‘sql2sparsematrix’, geschreven in de programmeertaal php. De kern van dit script is een 7-tal sqlqueries, waarmee de benodigde data uit de database worden gehaald. De eerste 3 queries die worden gebruikt zijn betrekkelijk eenvoudig. Deze queries halen het aantal rijen (= het aantal unieke termen), het aantal kolommen (= het aantal documenten) en het aantal positieve waarden (= het aantal termen). Het aantal positieve waarden is gelijk aan het aantal termen in de database omdat nulwaarden niet worden opgeslagen in de database. De queries die zijn weergegeven in afbeelding 7 leveren tezamen de getallen die op de eerste rij in de matrix staan.
Afbeelding 7: Queries die resp. het aantal rijen, het aantal kolommen en het aantal positieve waarden ophalen
De volgende waarde die benodigd is om de matrix te vullen, is het aantal positieve waarden per document. De query die te zien is in afbeelding 8 levert deze getallen.
25
Afbeelding 8: Query die het aantal positieve waarden per document ophaalt
Te zien is dat in deze query gebruik wordt gemaakt van de variabele “$currDocument”. Deze variabele heeft de waarde van document waarvan het aantal positieve waarden uit de database wordt gehaald. Een while-loop zorgt dat de query wordt uitgevoerd met alle documenten. Als laatste moet elke positieve waarde, samen met de bijbehorende rij-index, worden weggeschreven. De rij-index kan worden gevonden in een array met uniek gesorteerde termen, die aan het begin van het script is gevuld. De rij-index van elke waarde wordt opgezocht middels de functie “findTermRowIndex”
Afbeelding 9: wegschrijven van positieve waarden en de bijbehorende rij-index
Alle code die in deze sectie is besproken is verzameld in het php-script “sql2sparsematrix.php”. Dit script wordt vanaf de commandline aangeroepen. Het script wordt aangeroepen met 1 argument, te weten de naam van het bestand waar de matrix in moet komen. Dit bestand kan in het volgende onderdeel worden gebruikt.
4.3.3
SVD toepassen op sparse-matrix
De matrix die in de vorige stap is gevuld met de waarden uit de database, kan nu worden gebruikt om Singular Value Decomposition op toe te passen. Om deze bewerking te doen, wordt gebruik gemaakt van SVDLIBC, een library die geschreven is in de programmeertaal C. Deze library kan ook als script worden gebruikt. Het script wordt vanaf de commandline aangeroepen met de volgende argumenten: - De naam van de oorspronkelijke matrix, - het aantal dimensies dat moet worden gebruikt, - een prefix voor alle outputbestanden. Tijdens het uitvoeren van de berekeningen worden er enkele statistieken naar het scherm geschreven:
26
Afbeelding 10: het uitvoeren van SVD op een gegeven matrix
Als dit script is uitgevoerd zijn er drie bestanden gecreëerd, te weten: - De matrix Ut met termvectoren, - De matrix Vt met documentvectoren, - De matrix S met eigenwaarden. Het aantal eigenwaarden in de laatstgenoemde matrix correspondeert met het aantal dimensies waartoe de “semantische ruimte” is teruggebracht. In afbeelding 10 is te zien dat het script is aangeroepen met de optie ‘–d 5’. Dit betekent dat er gebruik wordt gemaakt van 5 dimensies. De matrix S bestaat dus uit 5 waarden. De drie matrices kunnen nu worden vermenigvuldigd om de data te verkrijgen waarmee verder gewerkt kan worden. 4.3.4
Resulterende matrices vermenigvuldigen
Om informatie over semantische afstanden uit de resulterende matrices te kunnen halen, moeten de matrices eerst worden vermenigvuldigd. Aangezien we geïnteresseerd zijn in de afstanden tussen termen onderling en de afstanden tussen termen en documenten, moeten er twee vermenigvuldigingen worden gedaan: 1. De matrix met termvectoren Ut moet vermenigvuldigd worden met de matrix met eigenwaarden S. Met behulp van deze matrix UtxS kunnen de semantische afstanden tussen termen worden uitgerekend. 2. De matrix met documentvectoren Vt moet vermenigvuldigd worden met het product van de matrices Ut en S. Deze matrix, (UtxS)xVt, kan worden gebruikt om de semantische afstanden tussen termen en documenten af te lezen.
27
Om deze berekeningen te kunnen doen wordt er gebruikt gemaakt van drie scripts, te weten: - ‘Multiply-matrices.php’, dit script kan twee matrices vermenigvuldigen gegeven dat ze van de juiste afmeting zijn: (n m) x (m p). Dit levert een (n x p) matrix op. Deze afmeting zijn gelijk aan het aantal unieke termen en het aantal documenten. Dit script wordt vanaf de command line aangeroepen met als argumenten twee matrices: php.exe multiply-matrices.php [filename 1st matrix] [filename 2nd matrix]
-
De resulterende matrix wordt naar het scherm weggeschreven, dus om de matrix te bewaren moet > [filename output matrix] worden meegegeven. ‘transpose_matrix.pl’. Dit script wordt gebruikt om een matrix te kantelen. Een matrix met de afmetingen (n x p), wordt dus omgezet naar een (p x n) matrix. Het script wordt als volgt aangeroepen: perl transpose_matrix.pl [filename input matrix] [filename output matrix]
-
‘multiply.pl’, kan worden gebruikt om een matrix van willekeurige dimensies met een diagonale matrix te vermenigvuldigen. Dit script wordt gebruikt om UtxS te berekenen. Het script wordt als volgt aangeroepen: perl multiply.pl [filename input matrix] > [filename output matrix]
Als het programma wordt aangeroepen zonder > [filename matrix] wordt de matrix naar het scherm weggeschreven.
output
De beide perl-scripts behoren oorspronkelijk niet tot de verzameling LSA-scripts. Deze zijn geschreven door Tim van de Cruys. De eerste stap die moet worden gezet is het vermenigvuldigen van de matrix Ut met de matrix S. Hiervoor kan het script multiply.pl worden gebruikt. De volgende stap is het vermenigvuldigen van de matrix UtxS (die in de vorige stap is verkregen), met de matrix Vt. Voordat deze stap uitgevoerd kan worden moeten er twee tussenstappen worden gezet: - Beide matrices moeten een gelijke breedte hebben. Waar normaal de breedte van de eerste matrix gelijk moet zijn aan de hoogte van de tweede matrix, is dit hier niet het geval. De matrices moeten dus zonodig ‘gekanteld’ worden met het script ‘transpose_matrix.pl’. - De eerste regel van beide matrices, die de hoogte en de breedte aangeeft, moet worden verwijderd. Deze regels worden door SVDLIBC aan de matrices toegevoegd, maar zijn nu niet meer nodig voor verdere berekeningen. Zodra dit is gebeurd kunnen de matrices worden vermenigvuldigd. Dit gebeurt door het script ‘multiply-matrices.php’ aan te roepen. Door deze matrix multiplicaties uit te voeren, heeft men de beschikking over twee matrices: UtxS en (UtxS)xVt. Uit praktische overwegingen, wordt de eerste matrix in de database opgeslagen. De tweede (aanzienlijk grotere) matrix, wordt niet in de database opgeslagen.
28
4.3.5
Opslaan van de UtxS matrix
De matrix UtxS dient in de database te worden opgeslagen, om later te kunnen worden benaderd middels het script ‘statistics.php’. Voor elk uniek woord uit de database worden de waarden van alle dimensies in een database tabel opgeslagen. Dit ziet er als volgt uit:
Afbeelding 11: de matrix UtxS in een MySql tabel
Te zien is dat voor een term, voor elke dimensie, een waarde is opgeslagen. Deze tabel wordt gevuld door het script ‘term-dist-matrix2mysql.php’ als volgt aan te roepen: term-dist-matrix2mysql.php [filename UtxS matrix] [projectname] [number of dimensions]
4.4
Bevragen van de resulterende data
In de vorige secties is uitgelegd hoe vanuit een aantal vergelijkbare websites een corpus kan worden opgebouwd en hoe vanuit dit corpus nieuwe matrices kunnen worden opgebouwd. Uit deze matrices kunnen nu semantische afstanden worden afgeleid. Deze matrices kunnen nu dus worden gebruikt om bepaalde usability problemen te identificeren. De volgende problemen kunnen nu worden geïdentificeerd: - Confusable labels of headings, dit is het geval als twee headings of labels die zich in hetzelfde niveau van de navigatie bevinden semantisch zeer dicht bij elkaar liggen, - Weak information scent, dit is het geval wanneer een linklabel dat naar een document verwijst, een lage semantische overeenkomst met dit document heeft. Deze vragen kunnen worden beantwoord door de data te bevragen met het script ‘statistics.php’. Of twee termen (labels of headings) ‘confusable’ zijn, kan worden bepaald door het script als volgt aan te roepen: php.exe statistics.php term-term [1st term] [2nd term] [projectname]
De argumenten ‘1st term’ en ‘2nd term’ moeten bij de aanroep de waarde hebben van de twee termen die met elkaar moeten worden vergeleken. Zodra de berekeningen zijn uitgevoerd worden er twee waarden naar het scherm geschreven: de Spearmann’s correlatie en de Pearson’s correlatie. Als deze waarden in de
29
buurt van het getal 1 liggen, kan men er vanuit gaan dat de gegeven termen semantisch dicht bij elkaar liggen. Om te achterhalen of een label een document goed beschrijft, wordt het script als volgt aangeroepen: php.exe statistics.php doc-term [document number] [term] [matrix file] [projectname]
Te zien is dat het vierde argument een matrix is. De matrix die moet worden gebruikt is de (UtxS)xVt matrix die in een eerder stadium is verkregen. 4.5
Problemen
In de huidige opzet kan er zich een aantal problemen voordoen. Ten eerste moet er rekening worden gehouden met het feit dat veel teksten op websites uit meerdere secties bestaan. In de analyse zoals die is voorgesteld worden al deze paragrafen tezamen als één document in de afstandsmatrix beschouwd. Het nadeel van deze aanpak is echter dat een bepaalde linklabel mogelijk uitstekend geschikt is om de eerste paragraaf van een webpagina te beschrijven, maar dat deze tóch met een lage waarde in de (UtxS)xVt matrix voorkomt. Er zijn twee manieren om met dit verschijnsel om te gaan: 1. De gehele pagina als een document blijven beschouwen en een label gebruiken dat deze pagina zo correct mogelijk beschrijft, 2. de webpagina opdelen in paragrafen en voor elke paragraaf het meest geschikte label kiezen. Vervolgens kan de website in meer subpagina’s worden opgedeeld. Verder is het zeer gebruikelijk dat een linklabel uit meerdere termen bestaat. Dit betekent dat het vaststellen van de kracht van de information scent op twee manieren kan worden gedaan: 1. Het bekijken van de waarden van beide termen ten opzichte van het document waarnaar wordt verwezen, door middel van een “term-document comparison”, 2. de linklabels samenvoegen en als een document beschouwen om vervolgens een “document-to-document comparison” uit te voeren. Dit betekent wel dat het gehele proces opnieuw moet worden doorlopen, omdat er een document aan de semantische ruimte wordt toegevoegd.
Problemen met stemming Stemming is het terugbrengen van afgeleide woorden naar dezelfde vorm. Bijvoorbeeld gelopen en liep, kunnen allebei terug worden gebracht naar dezelfde vorm; loop. In het huidige onderzoek, het toepassen van latent semantic analysis kan het stemmen van woorden de resultaten aanzienlijk verbeteren. Het gaat om de betekenis, de semantische waarde, van de tekstelementen en deze is in het genoemde voorbeeld gelijk. Het algoritme dat gangbaar is om woorden te stemmen, is het Porter-stemming algoritme. Dit algoritme is beschikbaar als library in de gebruikte programmeertaal, PHP. Het benodigde bestand is gratis te downloaden van verschillende websites. Zodra deze is geïnstalleerd kan in elk willekeurig php-script de volgende regel code worden aangeroepen:
30
Afbeelding 12: Stemmen van woorden m.b.v. bestaande library
Tot zover lijkt dit een prima oplossing om de resultaten van de applicatie aanzienlijk te verbeteren. Het is echter zo dat het gebruikte algoritme verre van foutloos functioneert. De woorden die zijn gestemd worden opgenomen in de database. Een blik op de data leert dat de gestemde woorden niet meer tot het Nederlands behoren:
Afbeelding 13: foutief gestemde woorden
Op de afbeelding is te zien dat het woord ‘klanten’ correct wordt gestemd tot het enkelvoud ‘klant’. Er worden echter door het algoritme veel fouten geïntroduceerd. Te zien is dat bijvoorbeeld het woord ‘geen’ omgezet wordt naar ‘gen’ en dat ‘maken’ omgezet wordt in ‘mak’ in plaats van ‘maak’. In de huidige versie van de LSA Tools wordt geen gebruik gemaak van stemming. In de toekomst moet worden uitgezocht of er een beter functionerend algoritme voorhanden is dat eenvoudig te implementeren is in de huidige applicatie Zodra dit is gebeurd kan er ook een vergelijking worden gemaakt tussen de resultaten van LSA waarbij geen stemming is toegepast en waarbij wél stemming is toegepast.
31
4.6
Verkennende test
In de vorige sectie is uiteengezet hoe een verzameling php-scripts, de LSA Tools, ingezet kan worden om een semantische ruimte te creëren die bestaat uit documenten en termen. De matrices die worden gegenereerd kunnen worden gebruikt om semantische afstanden tussen teksteenheden op te zoeken. Deze semantische afstanden kunnen vervolgens worden gebruikt om uitspraken te doen over mogelijke problemen m.b.t. de duidelijkheid van de talige kant van de navigatie van een website. Om te bepalen of de verzameling scripts tot nu toe het werk goed doet, dient deze te worden getest met een verzameling websites. Tijdens het ontwikkelen van de scripts is reeds gebleken dat het werken met een zeer klein corpus (circa 15 webpagina’s), resultaten oplevert die niet altijd even veelzeggend zijn. De verkennende test die nu zal worden besproken is uitgevoerd met 59 documenten. Deze documenten zijn de webpagina’s van drie bedrijven uit de stad Groningen die zich bezighouden met internettechnologie, te weten Buyways, Concept7 en iWink. De gebruikte webpagina’s zijn ontdaan van alle overbodige markup. De gebruikte pagina’s zijn te downloaden van de volgende webpagina: http://www.atfive.nl/lsa/. Na het verwerken van de pagina’s is de tabel ‘term_doc’ in de database gevuld met alle woorden die in de documenten voorkomen, met de bijbehorende frequenties. Met een eenvoudige sql query is te achterhalen dat er 4318 ‘tokens’ in de database staan. Dit zijn 2059 unieke ‘types’. Stel dat de documenten en de termen in een matrix staan, dan is dit dus een matrix van 59 kolommen en 2059 rijen.
Afbeelding 14: aantal termen en aantal unieke termen in het project ‘webcomp’
Na het wegschrijven van de tellingen naar een matrix in het ‘sparsematrix’ formaat, is SVD op deze matrix toegepast. Hierbij is het aantal dimensies teruggebracht naar 15. Dit betekent dat de matrix S die wordt geretourneerd, bestaat uit 15 waarden. Nadat alle benodigde vermenigvuldigingen zijn uitgevoerd, kan het script ‘statistics.php’ worden gebruikt om semantische afstanden vast te stellen.
32
Om te beginnen kunnen voor alle headings op de site van Buyways worden vergeleken op semantische gelijkheid. Als bijvoorbeeld de eerste twee headings, technologie en webmarketing met elkaar worden vergeleken, blijkt dat deze een correlatie hebben van 0.51. Als alle headings met elkaar worden vergeleken, levert dit de volgende matrix op: Technologie Technologie Webmarketing Websitebouw Advies Gebruiksvriendelijk heid
Webmarketing
Websitebouw
Advies
Gebruiksvriende lijkheid
1 0.5098
1
0.6173
0.0264
1
0.4509
-0.1063
0.47729
1
0.4212
0.0157
0.1345
0.87439
1
Te zien is dat de meeste termen wel enige semantische overeenkomst kennen, op basis van het corpus. De enige waarde die er uitspringt, is de correlatie tussen ‘gebruiksvriendelijkheid’ en ‘advies’. Deze termen kunnen dus als ‘confusable’ worden aangemerkt. De correlaties tussen de term ‘sitebouw’ en de andere termen, was aanvankelijk niet te berekenen omdat het woord sitebouw alleen in als heading voorkomt en niet in een van de documenten. Omdat in het document waarnaar wordt verwezen het woord ‘websitebouw’ wordt gebruikt, is deze als term gebruikt in de analyse. Men kan dus stellen dat men op deze website beter ‘websitebouw’ als heading had kunnen kiezen. Een andere test die kan worden uitgevoerd is de mate van semantische gelijkheid tussen de linklabels (termen) en de webpagina’s (documenten), waar de linklabels naar verwijzen. We kunnen bijvoorbeeld van alle linklabels onder de heading ‘sitebouw’, de semantische gelijkenis opzoeken met het document waar naar wordt verwezen. Dit levert de volgende resultaten op: Term Algemeen Funtionele specificaties Design CMS Interactie
Document 12 5 4 3 11
Waarde -0.02883 0.06747 / 0.1578 0.0376 0.1602 0.0315
De waarden die in de tabel staan zijn erg laag. Dit kan betekenen dat de linklabels de documenten niet erg goed beschrijven, óf dat de grootte van het corpus of het aantal gekozen dimensies nog niet ideaal is.
33
5
Conclusies en verder onderzoek
In de vorige hoofdstukken is beschreven hoe LSA kan worden uitgevoerd met een aantal scripts, om antwoorden te vinden op vragen die betrekking hebben op de usability van websites. Een vijftal scripts is ontwikkeld en er wordt gebruik gemaakt van een drietal bestaande scripts. Met deze scripts is het mogelijk om eenvoudige html bestanden om te zetten in termen met bijbehorende frequenties. Op basis van de matrix die uit deze frequentielijsten gevormd kan worden, kan de SVD worden berekend. De drie matrices met eigenwaarden en eigenvectoren kunnen worden gebruikt om de semantische afstanden tussen de tekstelementen te berekenen. In hoofdstuk 4 is de technische realisatie van de scripts toegelicht, verder staat beschreven hoe een klein experiment is uitgevoerd op basis van 59 webpagina’s verdeeld over 3 websites. Op basis van deze verzameling documenten is gekeken naar een specifieke website, www.buyways.nl . Er is gekeken naar de mate waarin de headings confusable zijn en de mate waarin de termen die zijn gebruikt voor de linklabels, voldoende information scent geven om het goede pad aan te geven naar de documenten waar ze naar verwijzen. De waarden die werden gevonden bij het berekenen van de overeenkomst tussen de headings, geven een aanwijzing voor een mogelijk usability probleem. De semantische afstanden tussen de linklabels en de webpagina’s, lijken allemaal aan de lage kant. De reden hiervoor is niet geheel duidelijk. Mogelijk kunnen deze resultaten vergeleken worden met de resultaten van een vergelijkbaar experiment, waarbij een aanzienlijk groter aantal webpagina’s wordt gebruikt. De tools die zijn ontwikkeld kunnen gebruikt worden om LSA uit te voeren aan de hand van een verzameling gegeven pagina’s, ongeacht welke taal deze in zijn geschreven. De resulterende waarden kunnen worden gebruikt om uitspraken te doen over de information scent en de confusability. Op basis van een verkennend experiment, is er redelijk vertrouwen in de resultaten met betrekking tot de vergelijking van twee termen. De vergelijking tussen termen en documenten levert waarden op die allemaal erg laag zijn, waardoor het vermoeden is ontstaan dat deze waarden niet een waarheidsgetrouw beeld geven van de semantische overeenkomsten.
Aanvullingen op de LSA Tools De methode die is voorgesteld is bewerkelijk te noemen. De methode is opgebouwd uit een aantal die allemaal vanaf de command line worden aangeroepen. Het vergaren van de data en de opslag van deze data in de database gebeurt met een script dat geschreven is in de taal php. In deze taal is ook het script geschreven dat de ‘sparse-matrix’ uit de data genereert. Het script dat deze matrix omzet in de matrices met eigenvalues en eigenvectoren is geschreven in de programmeertaal C. De calculaties die vervolgens worden gedaan om de matrices te vermenigvuldigen zijn geschreven in Perl. De uiteindelijke semantische ruimte die is ontstaan is te bevragen met een php-script dat queries aan de database stelt. Behalve dat er een aardige verscheidenheid aan programmeertalen wordt gebruikt, moeten alle scripts stuk voor stuk worden
34
aangeroepen. Uit overwegingen van bruikbaarheid zou het beter zijn om één applicatie te schrijven in de taal php. Deze applicatie kan dan bediend worden middels een webinterface. De tools die tot nu toe zijn ontwikkeld, kunnen alleen nog maar gebruikt worden om mogelijke problemen te identificeren. Wil men echter verbeteringen aanbrengen aan de navigatie van een webpagina, dan is nog niet bekend welke woorden kunnen worden gebruikt om deze verbeteringen te realiseren. Er zou dus een script aan de tools toegevoegd moeten worden, waarmee bijvoorbeeld per document een aantal goed beschrijvende termen gevonden kunnen worden.
35
Bibliografie Blackmon, Kitajima en Polson, Repairing usability problems identified by the cognitive walkthrough for the web. In CHI papers 2003: Web usability. Blackmon, Kitajima en Polson, Tools for Accurately predicting website navigation problems, non-problems, problem severity, and effectiveness of repairs, CHI papers: Web interactions. Blackmon, Polson, Kitajima en Lewis, 2002, Cognitive walkthrough for the web, CHI papers: Design methods. Christopher D. Manning, Hinrich Schütze, Foundations of statistical natural language processing. The MIT Press, Cambridge, Massachusetts. London, England Deerwester, Dumais, S, T, Furnas, G, W, Landauer, T, K, en Harshman, R, Indexing by latent semantic analysis. Dix, A, 2005, Human-Computer Interaction and webdesign, Handbook of human factors in web design, Lawrence Erlbaum Associates, publishers, London. Dumais, S, T, Furnas, G, W, Landauer, T, K, Deerwester, S en Harshman, R, 1988, Using latent semantic analysis to improve access to textual information, http://citeseer.ist.psu.edu/cache/papers/cs/339/http:zSzzSzsuperbook.bellcor e.comzSz~stdzSzpaperszSzCHI88.pdf/dumais88using.pdf Faulkner, X, 2000, Usability Engineering, Palgrave, Hampshire. Forsythe, G. E, Malcolm, M, A, Moler, C, E. 1977, Computer methods for mathematical computations. Hurford, J, Heasley, B, 1983 Semantics a coursebook, Cambridge University Press. International Standards Organization (ISO), 1999, Draft International Standards (Dis) 9241, Requirements for office work with visual display terminals. Landauer, T, K, Foltz, P,W, Laham, D, 1998, An introduction to latent semantic analysis. In: Discourse Processes. Mariage, C, Vanderdonckt, J, Pribeanu, C, 2005, State of the art of web usability guidelines, Lawrence Erlbaum Associates, publishers, London. Nielsen, J, 2006, F-shaped pattern for reading web content, online beschikbaar: http://www.useit.com/alertbox/reading_pattern.html
36
Patrick Kellogg, An introduction to Latent Semantic Analysis. http://www.patrickkellogg.com/school/papers/LSA.htm Ricardo Baeza-Yates, Berthier Ribero-Neto, Modern information retrieval. ACM Press, 1999. Rosenfeld, L en Morville, P, 1998, Information architecture for the world wide web. O’Reilly and Associates. Tullis, T, S, Catani, M, Chadwick-Dias, A en Cianchette, C, 2005, Presentation of information, Handbook of human factors in web design, Lawrence Erlbaum Associates, publishers, London. Wenli Zhu, Kim-Phuong L. Vu and Robert W. Proctor, Evaluating web usability. In: Handbook of human factors in web design. Lawrence Erlbaum Associates, publishers, London 2005.
De ontwikkelde scripts zijn te vinden op www.atfive.nl/lsa
37
Bijlagen -
Bijlage 1: Lijst met stopwoorden
aan betreffende eer had juist na overeind van weer aangaande bij eerdat hadden jullie naar overigens vandaan weg aangezien binnen eerder hare kan nadat pas vanuit wegens achter binnenin eerlang heb klaar net precies vanwege wel achterna boven eerst hebben kon niet reeds veeleer weldra afgelopen bovenal elk hebt konden noch rond verder welk al bovendien elke heeft krachtens nog rondom vervolgens welke aldaar bovengenoemd en hem
kunnen nogal sedert vol wie aldus bovenstaand enig hen kunt nu sinds volgens wiens alhoewel bovenvermeld enigszins het later of sindsdien voor wier alias buiten enkel hierbeneden liever ofschoon slechts vooraf wij alle daar er hierboven maar om sommige vooral wijzelf allebei daarheen erdoor hij mag omdat spoedig vooralsnog zal alleen daarin even hoe meer omhoog steeds voorbij ze alsnog daarna eveneens hoewel met omlaag tamelijk voordat
zelfs altijd daarnet evenwel hun mezelf omstreeks tenzij voordezen zichzelf altoos daarom gauw hunne mij omtrent terwijl voordien zij ander daarop gedurende ik mijn omver thans voorheen zijn andere daarvanlangs geen ikzelf mijnent onder tijdens voorop zijne anders dan gehad in mijner ondertussen toch vooruit zo anderszins dat gekund inmiddels mijzelf ongeveer toen vrij zodra behalve de geleden inzake misschien ons toenmaals vroeg zonder behoudens die gelijk
is mocht onszelf toenmalig waar zou beide dikwijls gemoeten jezelf mochten onze tot waarom zouden beiden dit gemogen jij moest ook totdat wanneer zowat ben door geweest jijzelf moesten op tussen want zulke beneden doorgaand gewoon jou moet opnieuw uit waren zullen bent dus gewoonweg jouw moeten opzij uitgezonderd was zult bepaald echter haar jouwe mogen over vaak wat
38
39