• No results found

Krav p˚ a s¨ okmotorn

2.7 Autocomplete

2.7.6 Krav p˚ a s¨ okmotorn

F¨or att denna del ska fungera i www.blocket.se:s fall beh¨over s¨okmotorn kunna indexera meningar samt varje ord i varje mening. I dagsl¨aget klarar inte den s¨okmotor som anv¨ands av att indexera meningar p˚a detta s¨att, d¨arf¨or kommer en helt ny s¨okmotor att beh¨ova byggas f¨or att en fungerande prototyp ska kunna produceras. Denna s¨okmotor kommer dock att baseras p˚a ett redan f¨ardigt ramverk och anledningen till att ett redan f¨ardigt ramverk anv¨ands ¨ar f¨or att det tar mycket l¨angre tid att bygga n˚agot fr˚an grunden som fungerar lika bra eller kanske s¨amre ¨an det som m˚anga redan arbetat l¨ange p˚a.

Kapitel 3

Resultat och utv¨ardering

H¨ar beskrivs varje del f¨or sig samt vilka resultat som uppn˚atts inom varje omr˚ade, ¨aven hur dessa delar har implementerats eller inte i den slutgiltiga prototypen.

3.1 R¨attstavning

Efter att ha v¨agt de olika algoritmerna mot varandra kunde en slutsats dras om att en kombination mellan edit-distance och N-grams var det b¨asta alternativet f¨or denna typ av problem, detta f¨or att N-grams ¨ar en v¨aldigt snabb algoritm som ger v¨aldigt f˚a fel och edit-distance ¨ar v¨aldokumenterad.

I den h¨ar rapporten anv¨ands N-grams f¨or att indexera ordlistan, detta g¨or att orden kan lokaliseras snabbare ¨an om enbart edit-distance hade anv¨ants. Edit-distance anv¨ands ist¨allet f¨or att kontrollera de ord som N-grams plockar fram och ser vilket som ¨ar mest likt det ord anv¨andaren redan matat in. Anledningen till att edit-distance valdes ¨ar f¨or att den ¨ar specialkonstruerad f¨or att j¨amf¨ora tv˚a ord och skillnaden dem emellan, just den valda varianten klarar av transposition ocks˚a, vilket ¨ar lite mer effektivt och g¨or den ¨

annu b¨attre.

F¨or att minska arbetsb¨ordan, men ocks˚a f¨or att det var sv˚art att uppn˚a n˚agot lika bra, valdes ett bibliotek med dessa egenskaper f¨or r¨attstavning kallat Hunspell och en separat s¨okmotor kallad Lucene ut. Hunspell anv¨ands vanligen i de flesta Open-Source1 -projekten som beh¨over r¨attstavning. Lucene ˚a andra sidan anv¨ands fr¨amst n¨ar det beh¨ovs en s¨okmotor med stor funktionalitet och enkel utbyggnad.

Ordlistan som Lucene och Hunspell anv¨ander byggs nu upp av blockets

annonsrubri-1Open-Source ¨ar en strategi f¨or design, utveckling och distribution av programvara som erbjuder praktisk tillg˚ang till programvarans k¨allkod.

ker, den sorteras enligt hur ofta varje ord f¨orekommer i fallande ordning.

N¨ar anv¨andaren matar in sitt ord i s¨okf¨altet kontrolleras ordet mot ordlistan. Om ordet inte finns med i ordlistan kommer en s¨okning att genomf¨oras p˚a anv¨andarens felstavade ord, men han kommer ¨aven att f˚a upp ett f¨orslag p˚a vad han kan ha menat egentligen. Det f¨orslag som anv¨andaren f˚ar upp ¨ar baserat p˚a hur m˚anga g˚anger det f¨orekommer i alla annonser och hur pass likt det ¨ar ordet anv¨andaren matade in. St¨orst vikt l¨aggs p˚a hur pass likt ordet ¨ar det inmatade ordet. F¨or att best¨amma vilket av de tv˚a alternativen som

Figur 3.1: P˚a detta s¨att kommer ordlistan att byggas upp n¨ar Hunspell implementeras i det f¨ardiga systemet.

var b¨ast anpassat till www.blocket.se gjordes tester genom att k¨ora samma ord genom de b˚ada stavningskontrollerna (se appendix E). Det alternativ som efter tio felstavade ord hade lyckats r¨attstava flest, blev det alternativ som www.blocket.se skulle anv¨anda sig av. Under testet visade det sig att Lucene inte klarade s¨arskrivningar lika bra som Hunspell och Lucene var inte heller lika anpassat till det svenska spr˚aket som Hunspell. Detta beror antagligen p˚a att Hunspell har anv¨ants i m˚anga ordbehandlare medan Lucene enbart har varit anpassat f¨or just s¨okf¨alt och dess huvudsyfte ¨ar s¨ok. Valet f¨oll allts˚a p˚a Hunspell eftersom det klarade av s¨arskrivningar och hade st¨od f¨or svenska i st¨orre utstr¨ackning, men ¨aven f¨or att det har st¨od f¨or m˚anga andra spr˚ak. F¨ordelen med att det

klarar av m˚anga spr˚ak ¨ar att detta ska kunna lanseras i fler l¨ander ¨an Sverige.

Det finns dock vissa problem med Hunspell, speciellt n¨ar ordlistan inneh˚aller felsta-vade ord, ordlistan ¨ar n¨amligen lag f¨or Hunspell. Detta betyder att ordlistan inte f˚ar inneh˚alla n˚agra felstavade ord eller ˚atminstone s˚a f˚a felstavade ord som m¨ojligt, d˚a det inte ser s¨arskilt bra ut n¨ar ett felstavat ord visas f¨or anv¨andaren. Anledningen till att detta problem uppst˚ar ¨ar f¨or att ordlistan skapas av alla annonser. En l¨osning ¨ar dock att Hunspell v¨aljer det ord som rankas h¨ogst beroende p˚a frekvens i alla annonser, p˚a s˚a vis undviks detta problem.

Det viktigaste med denna funktion ¨ar att den blir snabb och att resultatet syns tydligt f¨or anv¨andaren. Implementationen g¨or att anv¨andaren kan s¨oka och f˚a tr¨affar ¨aven om han eller hon har sv˚art med stavning. Dessutom eftersom en fels¨okning aldrig korrigeras kommer de annonser som stavats fel ocks˚a att visas. En stor aspekt i detta problem ¨ar att det m˚aste se s˚a enkelt ut som m¨ojligt f¨or anv¨andaren, som sagts tidigare ¨ar B Locket AB:s filosofi att allt ska se s˚a enkelt ut som m¨ojligt. D¨arf¨or har det lagts stor vikt vid designen av detta, det ¨ar ocks˚a n˚agot som kommer att vidareutvecklas ¨aven efter detta projekt.

F¨or att ge en bild ¨over hur det skulle kunna se ut ges ett exempel i figur 3.2. I detta projekt togs designbesluten i diskussion med handledare och de ansvariga f¨or designen p˚a siten. Eftersom f¨oretaget vill ha sitt att s¨aga till om blev designen inte helt fullst¨andig under projektets g˚ang.

Figur 3.2: Ett exempel p˚a hur ”Menade du”-implementationen kan komma att se ut i framtiden p˚a www.blocket.se, visas h¨ar som en bild p˚a den slutgiltiga prototypen.

3.2 S¨arskrivning

Den implementation som testats av Hunspell klarar av s¨arskrivning v¨aldigt bra f¨orutsatt att ordlistan inneh˚aller det r¨atta ordet. Nackdelen med Hunspell i det h¨ar l¨aget ¨ar att den inte klarar av att skilja p˚a s¨arskrivning och tv˚a helt skilda ord. T.ex om s¨oktermen ”volvo v70” matas in ger Hunspell f¨orslaget ”volvo”, vilket i det h¨ar fallet ¨ar helt fel eftersom anv¨andaren faktiskt var ute efter den specifika modellen ”v70”. Kan detta f¨orhindras p˚a n˚agot s¨att och hur kan Hunspell tvingas till att f¨oresl˚a r¨att ord?

S¨attet att l¨osa detta problem blev att varje mening delas in i ordpar och s˚a vidare, t.ex ”volvo v70’ blir ”volvo”, ”volvo v70” och ”v70”. Det h¨ar tvingar Hunspell att v¨alja ”volvo v70”, f¨orutsatt att det alternativet finns och ¨ar h¨ogt prioriterat. Tyv¨arr har inte denna l¨osning implementerats i den riktiga prototypen vilket g¨or att s¨arskrivningar kan accepteras som godk¨anda s¨oktermer. Anledningen till att detta inte implementerats var f¨or att tiden blev f¨or knapp.

Related documents