360 likes | 467 Views
NewsFinder!. Bakgrund Idéförklaring Programbeskrivning, funktioner Utvärdering Frågor. Översikt av presentationen:. Bakgrund, RSS-dokument. Internet-sida som listar nyheter Uppbyggd som en XML-sida (1.0) Informationen beskrivs med hjälp av taggar RSS betyder Really Simple Syndication !.
E N D
NewsFinder! • Bakgrund • Idéförklaring • Programbeskrivning, funktioner • Utvärdering • Frågor Översikt av presentationen:
Bakgrund, RSS-dokument • Internet-sida som listar nyheter • Uppbyggd som en XML-sida (1.0) • Informationen beskrivs med hjälp av taggar • RSS betyder Really Simple Syndication! Vad är ett RSS-dokument?
Bakgrund, RSS-dokument Vad är ett RSS-dokument? forts. • Väldokumenterat, se adressen: http://blogs.law.harvard.edu/tech/rss • Skapades 1997 av Dave Winer på mjukvaruföretaget UserLand • Har exploderat på senare tid. 5% av amerikanska internetanvändare använder RSS för att få nyheter
Bakgrund, RSS-dokument Exempel 1: <?xml version="1.0"?> <rss version="2.0"> <channel> <title>Liftoff News</title> <link>http://liftoff.msfc.nasa.gov/</link> <description>Liftoff to Space Exploration.</description> <language>en-us</language> <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate> <generator>Weblog Editor 2.0</generator> <webMaster>webmaster@example.com</webMaster> <item> <title>Star City</title> <link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link> <description>How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's <a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm">Star City</a>.</description> <pubDate>Tue, 03 Jun 2003 09:39:21 GMT </pubDate> <guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid> </item> <item> <description>Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a <a href="http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm">partial eclipse of the Sun</a> on Saturday, May 31st.</description> <pubDate>Fri, 30 May 2003 11:06:42 GMT</pubDate> <guid>http://liftoff.msfc.nasa.gov/2003/05/30.html#item572</guid> </item>
Bakgrund, RSS-dokument Exempel 2, Nature Cell Biology: <?xml version="1.0" encoding="UTF-8"?> <channel rdf:about="http://www.nature.com/ncb/current_issue/rss"> <title>Nature Cell Biology</title> <description>Publishes papers of the highest quality from all areas of cell biology.</description> <link>http://www.nature.com/ncb/current_issue/</link> <dc:publisher>Nature Publishing Group</dc:publisher> </channel> <item rdf:about="http://dx.doi.org/10.1038/ncb0505-435"> <title>Phosphorylation-specific prolyl isomerization: is there an underlying theme?</title> <link>http://dx.doi.org/10.1038/ncb0505-435</link> <description>Gerburg Wulf, Greg Finn, Futoshi Suizu & Kun Ping Lu</description> <dc:source>Nature Cell Biology 7, 435 (2005)</dc:source> </item> <item rdf:about="http://dx.doi.org/10.1038/ncb0505-443"> <title>Talin's second persona</title> <link>http://dx.doi.org/10.1038/ncb0505-443</link> <description>Talin is a core component of the integrin adhesion complex. It is now shown that talin also regulates transcription,an activity that is apparently independent of its interaction with integrins. Talin represses the expression of Drosophila elanogaster DE-cadherin through an unknown molecular mechanism.</description> <dc:source>Nature Cell Biology 7, 443 (2005)</dc:source> </item>
http://www.geneontology.org/ontology/gene_ontology.obo ~18000 biologiska, cellulära och molekylära termer definierade och beskrivna, samt deras relationer mellan varandra. Relationerna beskrivs med is_a-relationer: (om A is_a B och B is_a C så gäller även att A is_a C!) Textfil på internet i OBO-formatet, finns även i XML-format Bakgrund, Gene Ontology
Bakgrund, Gene Ontology Snapshot (ur OBO-filen): [Term] id: GO:0000001 name: mitochondrion inheritance namespace: biological_process def: "The distribution of mitochondria\, including the mitochondrial genome\, into daughter cells after mitosis or meiosis\, mediated by interactions between mitochondria and the cytoskeleton." [PMID:10873824, PMID:11389764, SGD:mcc] is_a: GO:0048308 ! organelle inheritance is_a: GO:0048311 ! mitochondrion distribution [Term] id: GO:0000002 name: mitochondrial genome maintenance namespace: biological_process def: "The maintenance of the structure and integrity of the mitochondrial genome." [GO:ai] is_a: GO:0007005 ! mitochondrion organization and biogenesis [Term] id: GO:0000003 name: reproduction alt_id: GO:0019952 namespace: biological_process def: "The production by an organism of new individuals that contain some portion of their genetic material inherited from that organism." [GO:curators, ISBN:0198506732] subset: goslim_generic subset: goslim_plant subset: gosubset_prok is_a: GO:0007275 ! development
Bakgrund, Gene Ontology Exempel
Idéförklaring! • Skriv ett program som låter användaren söka efter nyheter i RSS-dokumenten med ett nyckelord • Om nyckelordet finns beskrivet i Gene Ontology: utöka sökorden med alla subtermer till nyckelordet (dvs, alla termer som har en is_a-relation till nyckelordet)
Idéförklaring Syfte: Antag att användaren är intresserad av termen A. Om termen B är i is_a-relation till A så är användaren antagligen intresserad även av B! => Sökningens recall borde öka!
Idéförklaring Till exempel: Om en användare är intresserad av ”protein modification” är han/hon förmodligen intresserad även av: • ”peptide cross-linking” • ”protein amino acid deamination” • ”enzyme active site formation” • ”protein amino acid phosphorylation” … med flera. Så när användaren skriver in ”protein modification” letar programmet upp dessa andra termer, och söker efter nyheter som innehåller något av dessa termer.
Programbeskrivning • Programmet, som jag kallar NewsFinder, är skrivet i java. • Javakoden finns att hämta på: http://www-und.ida.liu.se/~davru690/NewsFinder/NewsFinder_1.1.jar • För att köra programmet (i UNIX): Ladda ner jar-filen och packa upp med ”jar –xvf NewsFinder_1.1.jar” Kompilera koden med ”javac NewsFinder_1.1.jar” Starta programmet med ”java NewsFinder”
Programbeskrivning Klassbeskrivning UML-diagram NewsFinder är startklassen, innehåller det grafiska gränssnittet GO läser av internet-ontologin och sparar en representaion av denna som en hashtabell. NewsReader kopplar upp mot RSS-dokumenten och hämtar nyheterna WordMatcher utökar användarens sökord, och matchar dessa mot nyheterna
Programbeskrivning Några klurigheter! • Hur ska programmet läsa in Gene Ontology? Java har ett fördefinierat paket med regular expressions! Precis som i Perl och Python, ”parsa” texten med hjälp av regular expression-objekt, och gruppera informationen man vill åt. Gene Ontology: [Term] id:GO:0000001 name: mitochondrion inheritance …. …. Programkod: Pattern namePattern = Pattern.compile("name: (.+)"); Matcher nameFinder = namePattern.matcher(line); …. if (nameFinder.matches()) name = nameFinder.group(1);
Programbeskrivning • … och på precis samma sätt vid inläsning av RSS-dokumenten: RSS-dokument: <item rdf:about=“…"> <title>Phosphorylation-specific prolyl isomerization: is there an underlying theme?</title> <link>http://dx.doi.org/10.1038/ncb0505-435</link> <description> ….. </description> </item> Programkod: Pattern titlePattern = Pattern.compile("<title>(.+)</title>"); Matcher titleFinder = titlePattern.matcher(line); … if (titleFinder.matches()) titleTemp = titleFinder.group(1);
Programbeskrivning Fler klurigheter! • Hur ska Gene Ontology representeras? Vill snabbt kunna komma åt alla subtermer till en term. • Använd en hashtabell! För varje term i Gene Ontology, skapa en motsvarighet i hashtabellen, med termens namn som nyckel och en lista som pekar på sub-termer som värde. Metoden som hämtar en terms subtermer kan då fungera rekursivt.
Programbeskrivning Fler klurigheter! • Relationerna i GO är is_a-relationer, dvs ”uppåt-relationer”, men programmet vill ha relationerna åt andra hållet!
Programbeskrivning Lös detta med en inläsningsalgoritm: • Läs in GO term för term, och för varje term gör ett entry i hashtabellen som innehåller en is_a-lista. • Gå sedan igenom hashtabellen, entry för entry. För varje entry, gå igenom dess is_a-lista. För varje is_a-term, skapa en subterm-länk mellan is_a-termen och den aktuella termen. Programmet kan sedan använda subterm-länkarna för att hitta en terms subtermer!
Programbeskrivning En till klurighet! • Inläsningen och processandet av online-ontologin tar tid! Ontologin förändras antagligen inte jättemycket vid varje uppdatering, så programmet behöver förmodligen inte läsa in en ny version varje dag Spara GO-representationen i en fil efter inläsning, och läs in denna fil nästa gång programmet startar!
Programbeskrivning Det grafiska gränssnittet:
Programbeskrivning Några funktioner • Man kan utöka sökandet ännu mer, och låta programmet ta med alla GO-termer som ens sökord passar in i (minskar dock precisionen!) • Man kan även inkludera GO-definierade synonymer i sökningen • Man kan välja om sökningen ska ta hänsyn till stora eller små bokstäver • Man kan välja i vilka RSS-fält sökningen ska ske (<title> och eller <description>
Programbeskrivning Det grafiska gränssnittet efter en sökning:
Utvärdering • Fungerar programmet som det är tänkt, med avseende på grundidén? • Fungerar tilläggsfunktionerna? • Hur påverkas precision och recall? • Hur kan programmet förbättras? • Hur kan man på ett systematiskt och rättvist sätt utvärdera programmets funktionalitet?
Utvärdering Några lyckade exempel:
Utvärdering Några lyckade exempel (synonym):
Utvärdering Några lyckade exempel (synonym + UNIX):
Utvärdering • Precision: hur stor andel av träffarna är relevanta? Antagligen oförändrat gentemot en vanlig sökning • Recall: hur stor andel av de relevanta artiklarna hittas? Antagligen (lite) bättre gentemot en vanlig sökning!
Utvärdering Dock: • Man har tyvärr inte jättestor nytta av programmet. Artiklarna innehåller oftast inte jättemånga GO-termer, och för artiklar som helt saknar GO-termer tillför inte programmet något. (trots att GO har 18000 termer!)
Utvärdering • Om man inte har så god kännedom om hur termerna i GO kan se ut är det ganska låg sannolikhet att ens sökord råkar vara en GO-term. Oftast lättast att utgå från GO och därefter göra sökningen.
Utvärdering Hur kan programmet göras bättre? • Låta användaren välja vilka typer av GO-synonymer som ska tas med (finns 4 typer) • Tillåta att fler än en sök-sträng skrivs in • Tillåta boolesk sökning? • (tekniskt) Gör en applet av programmet så blir det enklare tillgängligt.
Utvärdering Hur kan programmet göras bättre? • Vid utökad sökning, låt användaren begränsa sig genom att använda is_a-relationer? T ex: ta med alla termer som innehåller ”DNA” men som dessutom är (is_a) ”DNA repair” Kanske kan precisionen på detta sätt ökas?
Utvärdering Kan RSS-sidorna göras bättre? • Ja! Det borde finnas en tagg <keywords> som beskriver vad varje nyhets-item handlar om! …och keywordsen får gärna vara GO-termer =)
Utvärdering Hur kan man på ett systematiskt sätt bedöma programmets funktion? Min tanke: • Gå igenom RSS-dokumenten artikel för artikel. Se efter hur många GO-termer som (som sökord) skulle hitta den aktuella artikeln. Summera och dela med antalet artiklar.
Utvärdering • Detta utvärderingsskript har jag dock ännu ej skrivit. • Skriptet, och ev fler funktioner, jobbar jag vidare med i projektkursen! Intresserade åhörare kan få en kopia av den rapporten, när den är klar =)
Frågor! Min fråga till er: Har ni något förslag på hur programmet kan förbättras??