Tag: Teknik

Totalt driftavbrott 18 september av LIBRIS tjänster

Söndagen 18 september kommer LIBRIS tjänster att vara avstängda under ett antal timmar.

Driftavbrottet berör alla LIBRIS tjänster, dvs LIBRIS söktjänster (webbsök, Uppsök, SwePub, Sondera, Bibliotek.se etc), LIBRIS fjärrlån, Katalogsystemet (Voyager), SFX, MetaLib och LIBRIS API:er.

Orsaken är omfattande arbete i datorhallen på Humlegården. Ett av syftena med arbetet är att bygga in system som säkerställer en högre grad av redundans i IT-infrastrukturen, så att likadana avbrott i framtiden inte lägre behövs.

Mer information om exakta klockslag kommer senare.

Kommentera 18 augusti, 2011 Maria Kadesjö

FancyBox eller icke…

… det är frågan.

I vår Lopac-lösning vi skrev om här på bloggen hade vi hoppats att kunna använda lösningen FancyBox när vi öppnar låneinformation från ett bibliotek i LIBRIS gränssnitt. Fördelarna är framför allt:

  • FancyBoxen öppnas ovanpå det ordinarie gränsnittet som mattas och blir inaktivt, medan boxen är aktiv. Man kan inte gå vilse med fönster/flikar fönster som döljer varandra.
  • Dialogen mot användaren blir tydlig – gör vad du ska och stäng sedan boxen.
  • Gränssnittet blir renare och snyggare, istället för ett ordinarie webbläsarfönster med ramar.

Det här vi innan vi stötte på problemen med tredjeparts-cookies. Det handlar om att webbläsare kan blockera tredjeparts-cookies (P3P), och FancyBox-lösningen innebär att den blir svår att använda för bibliotekssystem som sätter cookies och det är antagligen många. Internet Explorer har en säkerhetsspärr mot dessa cookies som standardinställning. Safari har än striktare säkerhetspolicy.

Vi tackar Linnéuniversitet som har slitit med problemet, påtalat det och försökt hitta lösningar. W3C förordar en lösning med P3P-policy för att arbeta sig runt problemet, men det är knappast något vi kan kräva av biblioteken, ens om det är tekniskt möjligt i det lokala systemet.

Trots vår fäbless för FancyBoxen, så ser det ut som om vi får använda oss av att öppna vanliga webbläsarefönster i de fall boxen inte kan användas.

När verkligheten trotsar idealen….

17 januari, 2011 Kristin

JSON-format till stavnings-API:et

Nu har LIBRIS stavnings-API stöd för JSON (mer om stavnings-API:et i ett tidigare inlägg). Som för övriga API:er lägger man helt enkelt till parametern format=json. Som exempel ser svaret i JSON på anrop med query=tratcatus logico philosophicsu ut såhär:

{
    'query':'TRATCATUS LOGICO PHILOSOPHICSU',
    'suggestion':{
        'terms':[
            {'changed':'true', 'value':'tractatus'},
            {'value':'logico'},
            {'changed':'true', 'value':'philosophicus'}
        ]
    }
}

Önskar man en callback-funktion heter parametern just ”callback”, och om man exempelvis sätter callback=handleSuggestion blir svaret:

handleSuggestion( {'query': .... } );

Kommentera 10 juni, 2010 Henrik

Andra som sökt på…

Som tidigare utlovats kommer här ett inlägg om arbetet med att skapa en funktion för rekommendationer i LIBRIS. Vi har idag en lång rad länkar i fullpostens högmeny för vidaresökning på författare, ämne, delar i en serie, etc. Dessa länkar leder till träfflistor eller enskilda poster som på ett eller annat sätt är relaterade till posten vad gäller metadata.

Vi har i användarundersökningar, bl.a. i arbetet med SwePub, sett hur viktigt tips är för researchprocessen. Naturligtvis var tips från kollegor och vänner viktigt, men många nämnde även automatgenererade tips i olika söksystem. Olika typer av rekommendationer eller relaterat material är något många är vana vid från tjänster som Amazon, Spotify, YouTube, Filmtipset m.fl.

Det finns en rad angreppssätt för att generera sådana tips. Grovt kan man dela in dom i innehålls- resp. användarloggsbaserade. Det första har vi alltså stöd för idag, om än via omvägen att behöva klicka på länkar. Det andra angräppssättet försöker att utifrån användarbeteende hitta relationer mellan titlar. Ett stort område inom IR är collaborative filtering där man givet en användare försöker hitta andra som har liknande ”smak”, och utifrån vad dessa gillar ge tips. Bl.a. hade amerikanska webbtjäsnten Netflix en tävling med stora prispengar för att ta fram en så bra algoritm som möjligt för att generera tips baserat användarnas betygsättning av filmer.

Tips baserat på sökloggar

Eftersom det i LIBRIS.kb.se idag inte finns vare sig möjlighet att sätta betyg eller någon generell inloggning har vi ingen möjlighet att utveckla ett rekommendationssystem baserat på collaborative filtering. Däremot har vi sökloggar där vi kan se vilka poster som har sökts fram. Det vi ville göra var helt enkelt att titta på vilka poster som har sökts fram vid samma tillfälle av en användare.

Givet att vi inte har någon inloggning, hur får vi då fram denna statistik? Det enklaste sättet är att gå på sessions-id. När vi påbörjade arbetet med rekommendationer upptäckte vi dock att detta saknades i sökloggarna, något vi snabbt åtgärdade och från årsskiftet har vi den informationen. Från och med januari 2010 är alltså allt frid och fröjd vad loggarna beträffar.

Ganska snabbt blev det dock klart att några få månaders loggar inte räckte långt: för att få någon vettig statistik över en datamängd som LIBRIS med flera miljoner poster behövs det ganska stora mängder sökloggar. Som tur är finns det en rad heuristiker för att ta fram troliga sessioner ur loggar. Vi kom fram till att följande fungerar tillfredsställande:

  1. För varje dygn
    1. Skapa nyckel av ip-nummer+”agent” (browser, operativsystem etc.)
    2. Filtrera bort nycklar med fler än 100 anrop
  2. För varje nyckel
    1. För varje framsökt post tillhörande nyckeln
      1. Om första posten, eller om det gått mer än 10 minuter sedan senaste framsökta post, skapa ny session
      2. Annars, lägg till posten i aktuell session
  3. Rensa bort sessioner med färre än två och fler än 30 poster

Sessioner från 2009 framtagna enligt ovanstående i kombination med de loggar som genereras från i år utgör grunden för rekommendationerna. Det hela är mycket enkelt: vi skapar ett index för sessions-id och vilka poster som sökts fram i sessionen, och ett inverterat index som mappar poster till sessioner.

För att generera rekommendationer till en post p, räknar man sedan alla poster som samförekommer i minst en session med p. En rekommendation pr får sedan en ranking som något förenklat är sqrt( c(pr,p) )/sqrt(c( pr) ), där c(pr,p) är antalet gånger pr samförekommer med p, och c(pr) är antalet gånger pr förekommer totalt i loggarna. Utan roten ur (sqrt) svarar detta mot den betingade sannolikheten P(pr|p), d.v.s. hur trolig är pr givet att vi sett p? Roten ur används för att släta ut siffrorna – något som inte har en direkt teoretisk underbyggnad, men som ofta visar sig fungera väl i praktiken.

Några resultat

Baserat på loggar från juni 2008 t.o.m. april 2010 innehåller modellen 1 396 556 sessioner och 932 925 poster (varav 435 622 ger rekommendationer – utan nedanstående FRBR-expansion). Det kan nämnas att vi beskär modellen med villkoret att en post måste förekomma minst 2 gånger. Utan denna beskärning är antalet poster 1 925 429 – d.v.s ungefär hälften av alla framsökta poster har endast sökts fram en gång, vilket är helt väntat när man har att göra med sökloggar.

Vid en första manuell utvärdering fann vi bland annat två saker: 1) många poster som saknar rekommendationer har rekommendationer knutna till en annan utgåva, 2) många rekommendationer är i själva verkat just andra utgåvor av samma verk. För att komma åt dessa problem expanderar vi rekommendationerna med hjälp av vår FRBR-algoritm (”andra utgåvor”) enligt följande:

  1. För varje utgåva p’ av det verk (v(p)) som p tillhör
    1. Generera rekommendationer till p’
  2. Rensa bort alla rekommendationer som är utgåvor av v(p)
  3. Sortera alla genererade rekommendationer baserat på rankingen

Utvärdering

Med detta tillägg ser det vid okulärbesiktning hyfsat ut: de flesta tipsen har en koppling till ursprungsposten, och det genereras en hel del tips. Tanken är även att få till en maskinell utvärdering baserat på hur väl algoritmen kan ”förutsäga” poster i en session – man tar en post i en session och ser hur många av rekommendationerna som återfinns i resten av sessionen.

Sist men inte minst

Ett annat kvarvarande jobb är att få till Interaktionsdesignen för att visa tipsen när man är inne på en fullpost – något vi jobbar på och förhoppningsvis har på plats innan sommaren.

1 kommentar 26 maj, 2010 Henrik

Metadatatratten

LIBRIS modell för att importera poster till vårt katalogsystem Voyager kallas internt för metadatatratten. För den som är intresserad av hur importprocessen går till kommer här en liten sammanfattning.

LIBRIS avtalar med t.ex. ett förlag om leverans av metadata (vanligen bok- eller tisdkriftsposter). Posterna levereras till LIBRIS som XML- eller ISO2709/MARC-filer, oftast via FTP. Om posterna är i något annat format än MARC21 görs en specifikation som beskriver hur de ska omvandlas till MARC21. Även om det levererade formatet är MARC21 kan vissa modifieringar krävas för att posterna ska följa de tillämpningar vi använder bland LIBRIS-biblioteken. Specifikationen fungerar sedan som ett underlag för ett program (närmare bestämt en XSLT-stilmall) som utför själva formatkonverteringen.

I nästa steg läses posterna in av ett Java-program som konverterar dem med hjälp av stilmallen och lägger till dem i Voyager-databasen tillsammans med eventuella beståndsposter. Om en post redan finns i Voyager kan den antingen ersättas, bevaras eller slås ihop med den nya posten. I det sistnämnda fallet krävs ytterligare en stilmall som talar om vilket data från respektive post som ska sparas. En uppsättning parametrar talar om för programmet vilka åtgärder som ska utföras.

När vi kontrollerat att överföringen till Voyager fungerar smärtfritt och posterna sparas som de ska tar driftavdelningen över och schemalägger processen så att den kan göras automatiskt med regelbundna intervaller. Ibland rör det sig bara om en engångsleverans av metadata, då behövs inte detta steg.

Dagen efter att posten sparats i Voyager kopieras den till LIBRIS webbsök.

Kommentera 25 maj, 2010 Pelle

Workshop om LIBRIS öppna infrastruktur

Vi var runt 60 personer som samlades på Jönköpings högskola för workshopen LIBRIS öppna infrastruktur.

Upplägget var att byta erfarenheter och få inspiration av hur man kan använda LIBRIS öppna API:er. Här en snabb överblick, med hopp om att andra deltagare kan fördjupa och förbättra med kommentarer och anknytande inlägg.

Det finns API:er för att komma åt datat i tjänsterna LIBRIS, SwePub och Uppsök.

Det finns även API:er för att komma åt funktionalitet som LIBRIS stavningsstöd. Henrik Lindström passade på det högtidliga tillfället att presentera två nya ”funktions-API:er”; ett till relaterade poster och ett till frbr. De är fortfarande i alfa/beta-stadiet så vi har all anledning att återkomma till dessa.

En annan idé är att använda formaten Oxford (exempel), Harvard, ris, bibtex och refworks som finns i lättvikts-API:et Xsearch för att erbjuda olika referenshanteringsformat.

Workshopen tog även upp ExLibris API:er till Sfx, MetaLib och rekommendationstjänsten bX i och med att de finns i Libris-enhetens tjänstepaket till biblioteken.

Vi fick ett överskådligt potpurri på hur man kan använda sig av API:er vid biblioteken.

Daniel Forsman visade hur han har integrerat tjänster i den lokala katalogen Julia för Jönköpings högskolebibliotek med hjälp av olika API:er. En sökfråga till Julia skickas samtidigt till LIBRIS, Uppsök och SwePub och svaren presenteras lokalt. LIBRIS stavningsstöd används, kombinerad med Yahoos dito. Jönköping anropar också andra tjänsters API:er, bland annat EBSCO och ticToc (åtkomst till artiklar, en tjänst som JISC står bakom).

Göteborgs UB (Rolf Johansson och Urban Andersson) presenterade sina lösningar med att använda Xsearch för sökning begränsat till GUB:s material i sitt Snabbsök. När man klickar på en post styrs man över till det lokala systemet Gunda. De utnyttjar det lånestatusscript som visar lånestatus i LIBRIS till att visa om en bok finns tillgänglig direkt i Snabbsöks träfflista. Citerar Rolf: ”Ibland får man en snilleblixt!”

Göteborg använder också MetaLibs x-server för att bygga databaslistor och API:erna till SFX och bX för att generera och söka tidskrifter och dessutom integrera bX-rekommendationerna i deras lokala CMS.

Rolf visade också Dundersök, ”lekplatsen” (?) för att testa några olika API:er. Länken kanske inte är så officiell, men den är väl så informerande om man vill kika vidare på vad olika API:er kan ge.

Roger Cederfjord och Theodor Tolstoy berättade om Stockholm UB:s arbete med att använda LIBRIS API Xsearch för integrering av OPAC-sökning i webbplatsen och API:erna för SFX och bX i tidskriftssökningen. Minimerar antalet klick rejält för SFX-informationen.
En av anledningarna till att man vill använda LIBRIS även för visning lokalt är att e-tidskrifter finns i LIBRIS – något man inte har i den lokala katalogen.

Xsearchlösningen på SUB är ännu inte i produktion, men vi fick se den hemliga länken och hur lösningen såg ut.

Ingen workshop utan gruppdiskussioner och vi diskuterade framtid, hinder, behov (och idéer) för biblioteken och API-användandet. Ett behov som alla uttryckte var en plattform for samling av kod, tips, dokumentation och inspiration. Något Libris-enheten lovade att gå hem och kika på. Och inte minst synkronisera med en betydande förbättring av LIBRIS API-dokumentation.

Under tiden har vi skapat det en sändlista för intresserade. Prenumerera på LIBRIS-API@listserv.kb.se (subscribe LIBRIS-API [ditt namn] till listserv@listserv.kb.se).

Twitterflödet från workshopen kan du hitta på http://twitter.com/search?q=%23librisAPIws.

Kommentera 24 maj, 2010 Kristin

ECIR 2010, dag 2-4

Efter den inledande tutorialdagen följde tre dagar med halvtimmespresentationer av papers och en drös med posters under luncherna. (Tyvärr verkar det inte som att presentationerna kommer att läggas ut och artiklarna är inte fritt tillgängliga.) Mycket handlade om små inkrementella förbättringar av något mycket specifikt, men det fanns en hel del intressant att ta med sig om mer generella aspekter av Information Retrieval.

Bland annat från Barry Smyths keynote ”Web Search Futures: Personal, Collaborative, Social” om sociala aspekter av webbsökning. Som motiveringen för att använda den sociala kontexten för sökning visade Barry på statistik om att 1/4 av alla webbsökningar är av typen återfinnande (leta efter något man tidigare sökt fram) och 2/3 är efter något som kollegor/vänner redan hittat. Genom att utnyttja sin egen och sina vänners/kollegors sökhistorik finns alltså en stor potential att förbättra sökningen.

I vår kontext vore det ju mycket intressant att se hur man skulle kunna bygga in stöd för exempelvis en forskarcommunity att återanvända sökresultat för förbättrad sökning i våra system. Definitivt något att ha med sig framöver.

Den sociala aspekten återkom även i flera presenationer om ”collaborative filtering” och olika typer av personalisering och rekommendationssystem.

Utöver social sökning fanns det lite lite olika teman, varav ett var olika typer av dialog mellan användare och söksystem. Något som ju diskuterats många gånger förut. Genom dialogen får systemet möjlighet att be användaren specificera tvetydigheter eller oklarheter i frågan och kan på det viset förhoppningsvis ge bättre resultat. Det är kanske en något vansklig väg att gå, och det ställer framförallt stora krav på interaktionsdesign. De flesta söksystem innehåller dock redan någon eller några former av dialog med stavningsförslag, facetter, relaterade sökfrågor m.m. Intressanta presentationer handlade bland annat om olika tekniker för att klura ut vilka sökfrågor som är tvetydiga eller svåra för systemet att ge vettiga resultat för, och som därmed kräver någon form av förtydligande från användaren.

Ett annat återkommande tema var vad som på svenska torde bli sökresultatsdiversifiering. Tanken är att en rankad resultatlista inte endast bör bero på en statisk poäng (ex.vis PageRank) och/eller överensstämmelse med sökfrågan, utan även ta hänsyn till vilka olika aspekter som täcks in av de första 10-20 träffarna. I en bibliografisk kontext skulle detta kanske kunna innebära att en sökning på ”August Strindberg” band de första träffarna bör presentera verk såväl av som om Strindberg inom olika ämnesområden och genrer.

Utöver undertecknad fanns det biblioteksrepresentation på ECIR i form av en poster från Danmarks Biblioteksskole. De har tagit fram en testmängd för att utvärdera integrerad sökning. Här är deras egen beskrivning i form av ett abstract:

The poster discusses the characteristics needed in an information retrieval (IR) test collection to facilitate the evaluation of integrated search, i.e. search across a range of different sources but with one search box and one ranked result list, and describes and analyses a new test collection constructed for this purpose. The test collection consists of approx. 18,000 monographic records, 160,000 papers and journal articles in PDF and 275,000 abstracts with a varied set of metadata and vocabularies from the physics domain, 65 topics based on real work tasks and corresponding graded relevance assessments. The test collection may be used for systems- as well as user-oriented evaluation.

En testmängd som mycket väl kan bli användbar i arbetet med en eventuell databrunn.

Vad arkivinstitutioner anbelangar kan det vara intressant att nämna artikeln ”Temporal Shingling for Version Identification in Web Archives” av Ralf Schenkel. Den handlade om hur man kan identifiera om en webbsida ändrats så pass mycket att en ny version skall arkiveras, istället för att ha en ren schemalagd arkivering exempelvis en gång per dag. Svårigheter som försökte lösas var bland annat att bortse från reklam eller externa RSS-flöden som ofta uppdateras och inte är en del av det innehåll man är intresserad av att spara.

En av höjdpunkterna på konferensen i stort var besöket på Bletchley Park, platsen där bland annat Alan Turing under andra världskriget knäckte tyskarnas chiffermaskin Enigma. Mycket intressant och väl värt en omväg om man råkar vara någorlunda i närheten!

Kommentera 7 april, 2010 Henrik

ECIR 2010, Dag 1

ECIR 2010 tjuvstartade på söndagen med en tutorialdag. På förmiddagen var jag på ”Machine Learning for IR: Recent Successes and New Opportunities”.

Mycket intressant att höra vad som händer i framkanten av maskininlärning (ML) inom Information Retrieval (IR). Tutorialledarna kom från Microsoft Research och förutom en del promotion för Bing var det en bra översikt med fokus på praktiska tillämpningar.

Grundtanken med att använda ML i IR är att manuellt kodade regler blir ohanterligt när problemrymden växer. Dels är det svårt att konstruera regler som generaliserar bra, och dels är det svårt att överblicka problemet när antalet parametrar blir stort. Exempelvis kan det vara en bra idé att låta en maskin lista ut det bästa sättet att vikta parametrarna i en relevansrankning, i stället för att sitta och peta manuellt.

Några intressanta områden som berördes var ”query expansion”, ”collaborative filtering” och rankning. Saker som ligger nära några av de utvecklingsidéer för LIBRIS sökning som vi skulle vilja experimentera med. En sak som faktisk är på gång är en form av collaborative filtering för att kunna ge tips till användare om relaterade poster. Återkommer inom kort med ett separat inlägg om detta!

Från bibliotekssynpunkt är det intressant att höra om hur ontologier och olika dokumentklasser blir allt viktigare för att förbättra sökning. Och hur man kan kombinera strukturerad data med mer traditionella IR-tekniker. Här känns det som att vi har en del att lära av varandra.

En hel del sägs även om ”vertical search”, en form av metasökning i olika källor – tanken är att exempelvis visa upp en väderprognos överst i träfflistan snarare än att bara visa länkar till informationen (exempel i Google). Problemet är ju då att klura ut när man skall visa resultat från vilka källor.

På eftermiddagen var det dags för ”Designing Effective Search User Experiences”. Mest gammal skåpmat om facetter – och reklam för Endeca. Tydligen jobbar dom på ett designmönsterbibliotek som även det verkar vara väldigt fokuserat på facetter. Lämnar i rasten denna tutorial till förmån för ”Crowdsourcing for Relevance Evaluation”.

Intressant idé som återkopplar till tidigare inlägg om svårigheten att ta fram träningsdata för dubbletterna i SwePub. Omar Alonso från Microsoft Research pratar om Amazons Mechanical Turk, en crowdsourcingplattform för att låta en community utföra uppgifter mot betalning. Här handlar det om att i formulärform låta personer exempelvis bedöma relevansen av ett dokument givet en sökfråga, och får för besrväret ca $ 0.02.

2 kommentarer 29 mars, 2010 Henrik

Att använda LIBRIS öppna infrastruktur

Så lyder namnet på ett projekt som fått bidrag inom ramen för Kungliga bibliotekets projektbidragsverksamhet.

LIBRIS strävar efter att ha så många öppna API:er som möjligt och ett axplock är API:er mot LIBRIS, Uppsök, SwePub och LIBRIS stavningsstöd.

Det hela kommer att gå av stapeln i form av en workshop där man utbyter erfarenhet av hur LIBRIS olika API:er kan användas.

Daniel Forsman (projektledare) skriver mer om det på bloggen betabib.org och vill veta hur intresset ser ut.

Så vill du lära dig mer om LIBRIS API:er, anmäl ditt intresse till Daniel
daniel.forsman@chalmers.se

3 kommentarer 14 mars, 2010 Kristin

Att söka fritt online …

Användaren ska snabbt och intuitivt kunna hitta de fulltextdokument som är tillgängliga online via LIBRIS. Detta gäller i synnerhet dokument som är fritt tillgängliga, men även sådana som kräver proxyinloggning via ett universitet eller annan särskild behörighet.

Det är nu möjligt att avgränsa en sökfråga till att enbart omfatta dokument som är fritt åtkomliga för direkt läsning online. Använd sökfrågan mat:free. Avsikten är föstås att göra det ännu enklare genom att lägga till det som en avgränsningsmöjlighet i träfflistan på samma sätt som idag finns i SwePub.

1 kommentar 24 februari, 2010 Christer

Föregående sida


Kategorier

Senaste kommentarer

Arkiv

Verktyg

Informationskanaler