Semantiska parsern nästan version 1.0

2013-03-05

Gick förvånandsvärt smidigt mer eller mindre från det att chunkerna började fungerade. Jag prövade bl.a. Chunkie innan men varken den eller liknande gav tillräckligt med information relativt tiden de lade ner på arbetet. Istället fick jag bygga en liten lösning ovanpå olika POS-system och statistiska parser-skattningar.


Med Plos-artiklar som indata och test-körd mot Stanfords dependency parser för att detektera möjliga problem med dess utdata "översätt" till fraser genom att detta på head-words detekterar den senare sällan något den första inte tar, och visa-versa. Den första detekterar egentligen fler relationer men det är normalt tror jag vad som skulle härledas från den senare (den senare kanske relaterat det som kallas collapsed jag inte tittade så noga på skapar direkt relationer runt pre i PP ex. of, in o.s.v. medan jag behåller dessa direkt som operatorer då de är ganska viktiga relaterat en av användningar för parsern för att uttrycka den topologiska representationen).


Det jag såg att den missar just nu är meningen av typen Doing this Saying that där subjektet till saying inte sätts och ev. att saying får ett extra objekt. Antagligen är orsaken relaterad till att en smalare implementation för detektion av två särskilda grammatiska typer jag kallade IS_SUBJECT och FOR_IS_SUBJECT där ett typ-exempen jag använt när meningar som börjar Hans who... där who är ett WS i part of speech eller ex. She who would die hailed Caesar and.... Men det kan också vara att jag inte har någon särskild hantering av den typen av meningar. Det kändes inte viktigt eftersom prioritetsordningen på alla grammatiska subjekt och objekt förekommande ändå alltid blir identisk.


En sak Stanfords dependency parser missar är att den har problem att förstå by där den tenderar att sätta efterföljande till vad den kallar agent också när det är inkorrekt. Det är fascinerande nog vad jag inte upptäckte en enda gång när den körde mot Plos-artiklarna men däremot givet det anmärkningsvärt ofta i allt möjligt annat. Vi kan föreställa oss att träningsdata de använt varit tämligen mono-maniskt på journal-artiklar. Lite som att "växa upp" som munk från det du föds kanske? Du kan tolka och prata vettigt om allt möjligt munkarna som undervisat dig tyckt varit lämpligt för dig att förstå men presenteras du för något mer världsligt ser du gudar och djävlar bakom allt möjligt icke-animatistiskt från väder-stormar till berg och kometer, och ännu värre ges det ett nytt namn börjar det behandlas som en levande entitet.


Förutom olika grupper av objekt och subjekt (direkta, indirekta, is, for o.s.v.) representerar den relativa distanser av vad refererat (kallar jag peka) utifrån them that, this o.s.v. Samt upptäckte jag utan att jag tänkt på det också belief nivåer som konsekvens av att peka-togs ut. Vidare den emotionella färger. Det tillsammans för att resp. fras ska gå att ensam konvergeras och konvergeras som den av en helhet på varje nivå ovanpå från mening till artikel, till vad vi läser just nu, till vad som hänt under dagen o.s.v.


Totalt tog det nästan två veckors programmering. Jag är dock mycket nöjd med vad den presterar där den med förvånandsvärt lite besvär hamnande på en mycket högre prestationsnivå än jag hade varit fullt nöjd med och för användningen fullt tillräckligt. Skär rent av ev. en del behov av common sense representerationer kring named entities.


Jag vill gärna också se den som en liten hyllning till substr-memcopy-logik som något vackert och bättre världen tappade när den förföll till reguljära-uttryck.


Konkret värde jag såg redan igår är att skillnad mellan när titel, abstrakt och varje stycke för sig körs in i Drifting thoughts på den snabbare utvecklingsdatorn jämfört med när titel och abstrakt körs in och därefter endast en approximation av vilken NP som är i fokus för allt vad jag vet kan vara oändlig. Bryt det längsta försöket att ta ut en referens representation av hjärnan maximalt nitiskt associerade och tolkande efter cirka 30 minuter. För nöje kan man ju ha en närmare mänsklig intelligens som ger lite idéer men för allt praktiskt behöver man man sin egen intelligens optimera prestanda-kostnaden sådant kommer med och att approximera löpande inspiration över artikel-body till fokus-objektet gör enorm skillnad genom att antalet nya udda koncept som behöver representeras upp med sina från 50 upp till ca tio tusentals relationer (och i Drifting thougts är det inte linjära samband utan rekursivt genom att aktivitet om än indirekt när de möts kan resultera i den nodens relationer realiseras upp med aktivitet o.s.v.) reduceras enormt. Jag såg inget uppenbart som missades genom det med mycket om infektioner, virus, cellbiologi, epidemier m.m topp fem hundra på aktiverade delar av hjärnan från en artikel från tror jag ploscompbiol.org eller ev. plosone.org.


Balanserade min världsbild att köra Drifting thoughts parallellt med Stanfords dependency för qa mot varandra. Jag har varit tämligen road många gånger när jag provkört parsers och chunkers sista månaden på hur totalt världs-frånvänt de slösar data-resurser relativt informationen de ger som om parsning är något en människa gör på en sak medan de dricker kaffe och inte normalt för mig för vad det ska till väldigt många nya artiklar och nyheter dagligen (orkar den 10 - 50 000 per dag på utvecklingsdatorn är nöjd eftersom det mest är för analyser inom politik, journalartiklar forskning m.m. och inte vanliga nyheter). Stanford upplevde jag snabb relativt att den körs på Java (kör den sämre nu indirekt från terminal så mycket prestanda förluster som "enkelt" försvinner där) men kändes ändå slö. Dock jfr Drifting thoughts optimerad mot fokus-objekten troligt ganska jämförbart i komplexitet med den markov-modell jag gissar att Stanford använder är de ungefär lika långsamma. Slöhet du ser nu känns antagligen allmänt just mer verklig än den du inte torterats med på ett tag.


Här finns Stanford dependencis.