Visar inlägg med etikett Parser. Visa alla inlägg
Visar inlägg med etikett Parser. Visa alla inlägg

Vad trädstrukturerna din parser eller du på papper (eller vem vet kanske implicit i hjärnan trots utmaningen att göra det med papper) skapar kan användas till

2015-05-23

Följande färska artiklar:



Indikerar området är trädstrukturerna i parsning kan addera värde. Och utmärkt kompletterande tidigare:



Sedan kan man med utgångs punkt av följande citat från Compositional Distributional Semantics with Long Short Term Memory som mer eller mindre passande för att uttrycka min tanke:


"Long Short-Term Memory The main idea of the LSTM architecture is to maintain a memory of all inputs the hidden layer received over time, by adding up all (gated) inputs to the hidden layer through time to a memory cell. In this way, errors propagated back through time do not vanish and even inputs received a very long time ago are still (approximately) preserved and can play a role in computing the output of the network (see the il- lustration in Graves (2012, Chapter 4))."

Att om man inte utnyttjar trädet redan för något jämförbart krävande varför skulle man tidigare ha gjort det? Givet kostnaden att ta fram det får man ju se till att värdet man får ut betalar det. Vad gjorde man det förr för? Jag minns inte från grundskolans historia och är inte alltid säker på vad jag själv alltid gjort dem för heller.


En av mina datorer står för en idé jag ej är säker på kommer ge mig något och gör POS-taggning av Google 5-gram. Med en förenklad / snabb tagger med viss likhet Brill (men lite enklare och lite snabbare). Jag kan inte säga att jag är direkt 100% säker efter haft ett fåtal trådar (därför samma dator gör annat) säg mellan 3 - 7 lite varierat över tiden ett par dagar att jag låter det arbeta klart med mindre än mer än bra värde (och bra för värde för något jag tar fram det för att pröva är i sig kanske inte mer troligt än inget värde). Därför POS-taggningen tar tid.


Givetvis hade jag kunnat gjort ett träd också så har man det klart för all framtid när man kanske behöver mer trots att jag ser ingen mening med det alls nu. Emellertid vet jag inte när i tiden det skulle gå klart på nuvarande dator. Långt in i framtiden. Mest optimalt hade väl varit att de som kan det området bäst hade gjort parsning med träd samtidigt när de körde bok-datat på Yahoo-grid:en. Jag tror ju lite mer allmänt att Stanford har massor av fint tänk kring allt möjligt som kvantifiering m.m. även om jag själv kanske inte primärt riktigt skulle välja algoritmer riktigt av den typen p.g.a. mer begränsad hårdvara: Mer tror jag att Stanford ska försöka intressera Google kring deras data-hjärn-projekt kring det där. Verkar vara lite i deras område och passar kan jag gissa mer allmänt hur de är beredda att investera i hårdvara.


Ibland är ett perspektiv bättre och ibland sämre. Väljer jag något sämre kommer det när de görs medvetet med att man vinner något annat som prestanda. Andra gånger får man både bättre värde och snabbare prestanda: Därför att algoritmer är bättre eller av och till därför att vissa möjligheter egentligen större tenderar att komma med kostnader när de utvecklas p.g.a. högre komplexitet som gör att man inte alltid görligt kan resultera dem på optimal nivå och ofta nog inte ens på nivå med enklare varianter.


Ibland roar det mig att emulera min natur ej tillbaka i det stabilt cyniska som om det egentligen engagerar mig här. Mer att det skulle engagera mig i visst positivt nöje om än kortvarigt om Stanford faktiskt hade förberedande för long term short memory hade byggt träden eller lika gärna mer påkostad pos-taggning (eller på nivå med min lika positivt) för 5-gram när de körde dem på Yahoo-träd:en (visst var det via Stanford?). Sedan ca två är jag dock ytterst kallt och effektivt utvecklande där varje förekomst på internet som ej korrekt bidrar positivt till detta är vad jag ogillar var gång det slösar min tid oavsett om det är genom journal-hus som indexeras sidor kallade PDF som sedan ej är tillgängliga eller norm-data jag vill test-köra annat mot svår-tillgängligt. Den goda förekomsten på internet bidrar konstruktivt till att skapa kreativa värden för världen och jag kan inte se att något jag personligt utan att - mycket inkorrekt - tids-kostnad med tveksamt-värde introduceras än mina möjligheter att skapa konkreta värden vidare från det.


Också när norm-datat eller vad det nu är i all intellektuell-förståelse har 0 och inget värde för mig. Utan mer är för emotionell optimering verkande tillbaka på det kognitiva skapandet. En form av process återkommande när något frysts eller förändras vikt-relaterat där jag jämför även när föga finns att jämföra med tillgängligt och jag redan vet innan att det är poänglöst därför att det fungerar som det ska och det ända det gör är att jag hittar en massa fel i datat tänkt att ta ut fel hos mig. Mycket naturligt givetvis för vad som normalt för sådant här är många generationer från först skapat medan det mesta som går att hitta när jämförbart antingen är litet eller motsvarande en eller ett par generationer relaterade någon artikel eller liknande.


Och det är väl vad jag gjort några dagar faktiskt. Bl.a. normaliserande upp 15 000 EPA i Osgood mening som i jämförelse tillför föga. Jag visste att där subjekt ej är få skulle det stämma väl innanför ungefärliga segment i rummet. Men något emotionellt värde tillkom ändå på något sätt. Jag som görs återkommande trots att en hårddisk-kostnad i diverse publicerat över åren bakåt man tagit ner när så varit aktuellt för sådant här snarare än ett mer direkt konkret behov skapande finns och ej längre som det brukar vara helt försumbart med annat: Faktiskt har jag flyttat strukturer tre gånger i år trots att den knappast är just mer än något över 300 GB. Senast i dagarna för att få upp hyggligt ofragmenterat och ej senare-panik-hanterat utrymme för att POS-tagga Google 5-gram.


Sådan är den emotionellt kalla business-optimerande hjärnan här. För emulera lite emotionellt engagemang och uttryckt runt parser-träd för att ej verka omänsklig här på bloggen. Potence snarare än Impotence som en av Osgood's tre-faktorer förr normalt alltid kallades medan den långt senare faktiskt mer sällan i nya ramverk som tar fram faktiska värden kallas så. Osäker varför ex. Dominance skulle vara bättre än Potence? Det tidiga nyskapande arbetet är väl just potent i en verklig mening där den första preferensen kanske faller sig naturlig medan för allt senare kan värdering i de finare detaljerna prioriteras särskilt när som här grund-konceptet är så välkänt där man börjar som görligt.


Strong vs Weak, Power vs Submissive, har förekommit också men tycker jag är olämpliga i vad man kan få för sig att det indikerar kontra den faktiskt reducerade dimensionen. Stanford känns här som principiellt återkommande kring mycket runt NLM asserting themself: Mycket artiklar, böcker, delat data, program m.m. Ockuperar upp utrymme i alla rymder i området i och utanför universiteten medan mer submissive aktörer likt MIT krymper i vad man märker av dem. Det är säkert sunt och lär nog i alla fall fungera minst lika bra med dom kvinnliga forskarna på fortfarande vanligare kanske i dom mer humanistiska delarna av språkvetenskapen.


I all verklighet reducerar de emellertid av allt jag kan se väl till en samlad med aktivitet. Det behöver ej vara fel att se impotens som avsaknad av potentiell aktivitet och potens som faktisk potentiell aktivitet. Där vilket som ofta nog naturligt ändå behöver ses som vad vi tar i kontext bl.a. styrt av grammatiken. Och jag kan se mycket (mer än litet) publicerat sista åren här nyligen kring att ta ut polaritet varken bättre eller sämre än algoritmer vi såg presenterande under 1960-talet om än ej riktigt vad jag själv skulle välja bra nog men löst problem verkligen (åtminstone idag när de ej förutsätter att du skapar hålkort också inför den grammatiska parsningen).

Åsikter i recensioner: Varför först dyrt parsa meningarna för att kasta bort den bästa informationen?

2015-04-20

Nedan har vi ett säkert inte dåligt exempel på hur ganska enkla "features" som utan större ansträngning går att ta ut ur parser-träden klarar av en del (åtminstone när tillämpning inte är just väldigt hög tillförlitlighet på en mening eller en nyhet):



Dessutom är det ett riktigt bra exempel på hur hela den lingvistiska världen i flera subkulturer fortfarande lider svårt av dessa parser-träd.


En enorm komplexitet och arbete från att träna modellerna för att generera dem till att göra dem för parsning på nyheterna föreligger. Och ett alldeles utmärkt pris att betala om man också drar nytta av all fet information samlad. Nedan har vi ett träd använt som exempel i artikeln (med i skärmdumpen delar av texten "citerad" med trädet):



Och ett "problem" man tycker sig behöva lösa trots att det är vad givet trädet är vad vi har redan mer information om än en binär faktor för om adjektiv-frasen finns:


ADJP: This is a binary feature indicating whether or not the constituent contains a complex adjective phrase as a child. Explorations of the training data suggested that adjective phrases with
forms like “interested in the idea” seemed to correlate highly with opinions. Simple adjectives, on
the other hand, would provide many false positives (e.g., “large” is not likely to be an indicator of opinions). Compare
(14)The accusations were flat and uniform although what is truly remarkable is that the youth
of the nation were believed [OPINION-PROPOSITION not only to be free of all discipline but
also excessively affluent].
and
(15)He felt that shareholder pressure would ensure compliance with the Code but added
[PROPOSITION that if self-regulation does not work a more bureaucratic legislative
solution would be inevitable].
which include the underlined complex adjective phrases, with the non-opinion
(16)He added [PROPOSITION that there might be a sufficient pool of volunteers to act as a new
breed of civil justices].

Falskt positivt om inte precis som vi själva bara tittar efter i vad trädet och meningen säger vilket redan är färdigt analyserad information till representationen trädet ger.


Att bygga dom här träden och sedan förutom bara en aning av information kasta bort det mesta är helt normalt. Väldigt vanligt. Orsaken tror jag att träden direkt ut är tämligen "intetetsägande" i mening av att det krävs en till parser för att tolka det vidare till mening och förståelse. Och då kan det kännas billigare att göra lösningar som ovan trots att man då egentligen lika gärna hade kunnat låtit bli att parsa lika dyrt och istället välja enklare lösningar (som chunkers inte mer än utnyttjande enkla linjära samband mellan orden och deras troligaste pos-taggar vidare till en grov NP-fras, VP-fras, ev. adjektiv-fras o.s.v.).


Den första parsern av träd jag gjorde var en chunker som tog mänskligt annoterade treebanks (eller parser-genererade) och genererade en ganska enkel dependency parser från relationerna mellan chunkerna. Den sög verkligen att göra. Att parsa dom här träden är verkligen ordentligt otrevligare programmering än en enkel linjär-chunkern av meningarna direkt. Idag kör varierade språk-parsers under en mer fullständig dependency parser uttryckande beroendena mellan fraserna vilken emellertid om än mer tidsödande ej var riktigt jämförbart otrevlig att programmera. Har man gjort rekursionen för dom en gång så går det enklare därefter: Framför allt vet man vilka relationer mellan olika verb-fraser som är de mest intressanta (jfr Bill could [Or as also judged from the phone tap data by President Obama visiting NSA to listen in on some enemy to the free world: would] decide to predict that a new political solution will be needed där de kritiska relationerna är mellan bedömningen vad vi tänkbart kommer göra till vad vi ska göra - predict - vidare från det samlat till vad resultatet av det blir d.v.s. det vi predikterar efter that: Ett 30-tal liknande relationer tar det normalt mest talande för mening medan övrigt inte otroligt ramlar ut mer eller mindre korrekt och annars vanligen ger underligheter med möjlighet att kasta datat och resultatet - Och would varianten tog jag med för att påminna om hur förvånande vanligt det är att man antingen skriver a och b eller a / b kring såväl adjektiv som noun och verb - beroende på vem som skrivit texten kan det mycket väl vara bra data). Men också vid behov - närmast i användning ej avsett för att nödvändigtvis ta den mest kostsamma vägen genereras träd underliggande parallellt för parsning.


Hela komplexiteten att ta träden och få ut semantiska slutsatser, från det mening mer övergripande lokalt, och vidare över flera meningar - kanske vid behov kombinerande med common sense som ev. slutsats om att en person som säger att en viss politiskt lösning måste till givet att förändring ej uppstår egentligen tror och kanske rent av inte ens påverkar beslutet - ger den här företeelsen där om jag förstår artikeln rätt:


  • Man först genererar parsnings-träden den för kulturen vanligare mer kostsamma vägen (istället för en snabbare chunker vilket här gör det samma) för att generera träningsdatat.
  • Träningsdatat för att tillämpa tycks dock fodra en jämförbar (kanske rent av lika komplext kostsam parsning) parsnign för att få ut features så att modellen man tränat går att tillämpa.

Samtidigt som man faktiskt har parsnings-trädet med alla relationer såväl som dom konkreta orden. Någon anledning att sitta och hantera verb-fraser som en binär-feature eller mena att man skulle feltolka diverse annan användning därför att man ej utnyttjar parsnings-trädet finns ju egentligen inte. Det finns redan mycket mer information i trädet som normalt bygger på gigantiskt mer träningsdata än någon riktad lösning kan.


Och ordentligt större tillförlitlighet från att parsa ut mening från trädet resp. orden - inga exempel vi har i artikeln är vad man ska komma fel för alls i komplexitet och konstruktion jämförbart normalt någonsin i bedömning.


Sedan är helt visst hela företeelsen att man regelmässigt hamnar i det här mellansteget i princip oanvändbart för intressantare analys (och för universitetets världen representerade problemområden som ej likt vanlig parsning är lösta problem idag sedan många år där knappast något nytt forskningsresultat alls adderande något som helst värde i effektivitet med mätbar effekt i en praktiskt tillämpning av vilken som helst annan entitet utnyttjande lösningar praktiskt kommit: Tvärtom är det normalt förväntat att kombinerande regellösningar välkända sedan evigheter med statistiska parsers hamnar man bättre än något publicerat för resp.). Att direkt ta ut representationer mer funktionella för att förstå meningen utanför grammatiken kan tyckas vettigare men etablerad kultur har sin effekt: Meningar hand-parsars av korrekt troende personer och med mindre att man mer än att sitta och kategorisera några tusen adjektiv av och till behöva ge sig på att hand-parsa meningar i större antal än ett hundra tal över några år är värt mycket tror jag för vem som helst att slippa.


En variant av att parsa mening från trädet såg jag i följande artikel att först göra en dependency-representation av den parsning redan gjord:



Och ev. är detta en teknik också använd i Stanfords parser. Tänkbart är det snabbare när man redan har en parser som gör det första arbetet (vilket jag tror att det normalt ska vara byggande på all vetskap redan upparbetad såväl som hela vanan i hur man tänker kring sådant här såväl som har kanske redan egen kod att börja arbeta från). Och ev. är det ingen egentlig kostnad heller (jag kan inte bedöma det)


Stanfords-parser-lösning fodrar nu 64-bitars Linux medan jag har 32-bitars så jag har egentligen aldrig prövat deras större ramverk för analys (men väl någon mindre variant eller kanske sido-projekt de har) och även om jag inte på rakt arm minns hur mycket storlek på hårddisk deras modell tar komprimerad (de är default-mässigt komprimerade och dekomprimeras när de laddas alt. i chunk beroende på del av modell man behöver ta ut lite beroende på prioritet, hårdvara och om det är ett väldigt komplext språk som ett ex. jag tror mig minnas var något relaterat kemiska processer för aminosyror i något biologiskt modellsystem av människa eller något enklare).


Jag tycker mig ha för mig att Berkeley låg på cirka 30 - 50 MB komprimerat vilket jag tror är ovanligt lågt (även om den i allt jag prövade presterade excellent och var föredömligt snabb: Det kan vara ett alldeles utmärkt alternativ om licens passar och ev. om så för mig runt licensen kanske jag prövar att ta in den som default även om den fodrar en del omkodning varande lätt åldrad och mycket som färdig klar för kommando-prompt vilket inte passar under något annat - enkel kod trots att jag inte programmerat Java kommersiellt eller alls egentligen sedan 1999 på Ericsson). Vi får tror jag titta på World Wide Web hur stor Stanfords default-modell är så jag inte sitter och ljuger om jag spekulerar att den är riktigt fet kanske passerande ett par hundra MB.


Och utmärkt kontroll då modellen var mindre än jag trodde:



Där om jag begrepp Can you explain the different parsers? How can the PCFG parser produce typed dependency parses? Why if I use the getBestDependencyParse() method do I get null or an untyped dependency parse? (i FAQ för parsern hos nlp.stanford.edu) rätt behöver den resp. englishPCFG.ser.gz och englishFactored.ser.gz (medan den antar jag ev. ej laddar RNN parserns modell om den inte ska användas) även när endast den mindre och säkert snabbare PCFG används (knappast någon kostnad i minne att tala om att ladda båda) används i antar jag mer av logiken (om jag hade inte som ambition att bli kunnig på termonologin och begreppen kring ramverket så jag kan ha tolkat det fel).


Hur snabbt modellen växer när träningsdata för språk från andra exempelvis ämnesområden i publicerad forskning (eller kanske rent av svårare mer subkulturellt person till person språk skrivet) vet jag inte men det behöver inte vara särskilt mycket alls beroende på hur modellen representeras. Träningsdata i någon mellan-representation fanns också inkluderad såg jag i jar-filen när jag extraherade den och sägs nu vara:


"english{Factored|PCFG} is currently trained on:

WSJ sections 1-21
Genia (biomedical English). Originally we used the treebank beta version reformatted by Andrew Clegg, his training split, but more recently (1.6.5+?) we've used the official Treebank, and David McClosky's splits
2 English Chinese Translation Treebank and 3 English Arabic Translation Treebank files backported to the original treebank annotation standards (by us)
209 sentences parsed by us (mainly questions and imperatives; a few from recent newswire)
100 imperative sentences parsed by us
3924 questions from QuestionBank, with some hand-correction done at Stanford.
50 Tagged but not parsed sentences with tech vocabulary not seen in the WSJ"

Genia minns jag som gaska stor och är i övrigt en väldigt kvalitativ data-delning med en hel del annat vid sidan om annoterade meningar egentligen kanske (som jag haft användning i alla fall) intressantare. Minns jag inte fel finns förövrigt en färdig liten grammatik skapad från själva datat jag antar är samma som Stanford använt uttryckt i någon av filerna som kommer med vid sidan om närmare ontologiska relationer mellan koncept o.s.v. Dock kanske inte det mest användbara för de flesta användningsområden gissar jag: Just inriktad medicin och kroppens biologi. Tycks som jag tipsade om den tidigare i:



Poängen med GENIA förutom parser-träning är att samma data ger koncepten för områden tillsammans med åtminstone de relationer mellan dem som har att göra med händelser (kroppsligt biologiska händelser rörande saker mindre än vi ser):


"EVENT: EVENT is the term(s) that mean(s) biological status changing. EVENT is described by TYPE, THEME, CAUSE and CLUE.
TYPE: TYPEs of the event are the categories of the EVENT, chosen from the predefined set of event classes, the "EVENT ontology".
THEME: THEMEs are the targets of the EVENT, designated by an “ID”, term, event or sentence, etc.
CAUSE: CAUSEs are the causes of the EVENT, designated by an “ID”, term, event or sentence, etc.
CLUE: CLUE elements are the places where location information can be recorded. The information is classified and the tagged in the sentence. Tags show the object, cause etc. of the EVENT in the sentence. The rules for tagging are described in Section 3.5.
COMMENT: COMMENT is a free description for the EVENT."

D.v.s. för just dess aktuella område en excellent fördjupning i det större ämnet medicin för användning till sådant diskuterat i tillsammans med som en första utgångspunkt The Specialist (National Institute of Health).


"Vi kan se det som att stora projekt när de levererar tenderar att ge oss vad som har förutsättning om kompetent genomfört att fungera under många år med uppdateringar och förändring. Standarder, noggrann dokumentation m.m. ger förutsättning till det. PubMed är exempel på det:

PubMed

Gigantiskt i data liksom IT-plattform och applikationer. Ett exempel på vad som krävs i det förutom faktiskt IT har vi med The Specialist Lexicon:

SPECIALIST NLP Tools

D.v.s. när betydelsen av något är hög måste du ha några redundanta projekt som tar en annan utgångspunkt. Ett annat teknik- eller modell-perspektiv som visar sig kritiskt kan agera backup, och över den längre tid inkluderas in i det större projektets förutsättningar till långsiktigt underhåll."

Från: Facebook kraftfullare och förföriskt enkelt (2012-02-25)

(Och idag tillfredsställande "hämtat" i tillräckligt mängd för att ge sitt bidrag till den statistiska representationen av koncept och deras relationer vilket när funktionellt brukar komma mer korrelerat här med någon esoteriskt diskussion kring API eller gränssnitt och ev. något allmänt positivt eller negativt relaterat något helt annat åtminstone tills jag samplat ut eller slut det eller vad man kallar det. Vilket vi har ett färskare exempel på här Ny sökmotor i Mellanöstern:
2015-03-11
oavsett vad jag i övrigt kan ha sagt om ej samplande geo-området vilket för att märka ord jag ej själv förutom väldigt lite data gjorde: Sverige är nu fullt av exil-iranier med datorer precis som alla andra).



Berkeley vs Stanford

En egenhet jag såg av och till med Stanfords "lilla" parser (osäker vad den kör för modell som standard) jag försökte få Berkeley att komma fel i också är att den av och till hittar på parsning när relationer och påverkan sträcker sig över två eller tre ord i samma fras. Om det är vanligare än fallen där jag fick fram det beror det helt säkert på vilken modell man kör med. Jag kan tänka mig att sådana problem kan komma från en mindre mycket snabbare modell som kanske rent av i allmänhet är mer effektiv för vad man vanligen prioriterar. Samtidigt är ju just sådana problem - åtminstone för NP vad man enkelt kan göra med långa beroenden med en ganska enkel chunker d.v.s. det är just inte sådant man egentligen behöver parserns enorma inlärning för så lite flexibel icke-specialiserade algoritm-koncept kombinerande mer regelbaserade lösningar vid sidan om det statistiska skulle nog lösa det ganska bra.


En säkert seriösare jämförelse har Stanford själva gjort:



Ett som man allmänt borde bedöma saker är Stanfords parser antagligen ett säkrare och bättre val för de flesta att bygga vidare på (om licens-regler så tillåter vilket var mitt intryck utan att läsa igenom det alls egentligen). Inte minst därför att Berkeley parsern mer eller mindre saknar allt med ens ytlig likhet med "normalt förväntad" nivå rörande dokumentation. I princip har du koden och säg en A4 mer eller mindre för de flesta säkert en försvinnande del av allt man kan önska läsa väljande en parser som man inte önskar att lära sig en massa om för att grovt göra en bedömning av.


Men jag fick en bra känsla av den. Krävs mycket mer för att (i den mån licens-regler tillåter det) ev. ersättande annan lösning idag. Tillståndsmaskinen jag exporterade ut kändes också "tilltalande" (rörande diskussionen i övrigt i inlägget har jag för ena sidan av algoritmen - POS-sannolikheterna också gjort en till anpassning där resp. sannolikhet även normaliseras med ordets längd fångande något av en till sida av informationen men fortfarande tillåtande snabb hantering ej krävande att alla databaser är uppmonterade: Jämför med Word lengths are optimized for efficient communication (PNAS) även om jag just nu i alla fall utnyttjar ord-längden i antal bokstäver resp. antal - hanterande korta ord 3 eller färre särskilt - och positionering av vokaler inkl. påräkning med 1 för ord med färre än två vokaler som ej slutar på vokal då formen av konsonanter och vokaler är jämförbart relaterat med informationen påverkar kodning i mänsklig kognition vilket jag tyckte gav viss "elegans" att ta med även om det egentligen inte ger en egentlig skillnad jämfört att direkt skatta ordlängd men ej heller en beräkningskostnad - En enkel effekt att se är att korta determiners likt the ger mindre skattning komplexitet jämfört med de längre mer ovanliga samt konkret för mig viktigare att när delar av NP som exempelvis orden Winston + Churchill med taggar NN + NN förvandlas till Winston Churchill och NN skalas det om enkelt och för denna användning tillräckligt väl i vad som kommer ut) i någon ännu ej noggrant kontrollerad spontant känsla.


Det förvånar mig egentligen att inte ett större intresse rent allmänt märks runt parsern. Man hade kunnat tänka sig att åtminstone mindre i head-count konsult-aktörer skulle skapa upp en del kompletterande material men kanske finns något licens-problem någonstans kring lösningen.


För den som jag stört sig några för många gånger på lingvistikernas problem-träd och allt merarbete de skapar för hederligt folk när något praktiskt ska göras av deras upparbetade vetskap avslutar jag med hat-propaganda försökande uttrycka lingvistikerna som en form av kulturell-parasit. Det är nu vad man egentligen bör undvika att i allmänt experimentera med språkligt då det är mytbildning när etablerat har skapat enorma problem av och till i historien (exempelvis de crime against humanity Nazityskland gjorde sig skyldig till). Men jag känner stor trygghet i att hela det här inlägget ligger gediget i ett även exkluderande effekt av svenskans mini-storlek väldigt tråkigt och begränsat område som få lär läsa (och de som läser det kan tänkbart tror jag se annat intresse av det mer direkt intressant: Och om inte utnyttjande tråkigt data omoraliskt får jag väl i värsta fall ge mig på att försöka balansera effekten av det: Korrigerande till vänster tänkbar otydlighet två här i inlägget efterföljande att jag faktiskt samlat Iran upparbetad medan jag kanske givit intryck att så ej var fallet).


När Lingvistikern kommer försvinner Godtrogna datavetarna

Lingvistiken har överlevt tusentals år. Det är en kultur som överlevt "inspiration" från nya områden med knappast annat än sällan ens kännbar effekt. Unga kulturer som sociolingvistiken kan ivrigt sitta och diskutera och förstå världen från Labov's nyskapande arbeten under 1960-talet (nästan 2000 träffar på Google Scholar sedan 2014 för Labov AND sociolingvistic: Inklusive hela referensböcker som inte stort gör annat än referenade honom fram och tillbaka likt denna jag köpte som julklapp till mig själv). Men ej så den riktiga korrekt troende Lingvistikern.


Lingvistikern när han kommer med trädet är lite som den grekiska ekonomen som kommer och vill låna pengar därför att han efter många år av akut brist på pengar planerar framöver att börja beskatta utländska företag som erbjuder hasardspel (och menar att man kommer kunna följa upp hur mycket pengar det ger därför att man ska börja räkna efter framöver). Men läckta grekiska föeslag till EU belysande problemet i ett område de flesta av oss har någon erfarenhet av finns ej här. Lingvistikern kan engelskan för bra och vi vanliga hederliga datarbetare som jag och folket som gjorde den här Stanford parsern för han enkelt bakom ljuset.


Andra kulturer och ämnen inom vetenskap är vad som kom och gick från Lingvistikern. Det är dock bara när vi med vår trevligare datakultur låter oss luras som Lingvistikerna kan klara att förgifta oss med sina träd och sitt påhittade ovanpå engelskan språk: Lingvistikern talar snabbt...


Lingvistikerna äter godtrogna datavetare som ej ser upp. Det dröjer ej länge efter de börjat rita träden tills de skriver en lång artikel om verbet like. Motiverande någon esoterisk tanke med idéer om ett språk känt sedan 30 år var en missuppfattning (att det var ett språk utan verb exempelvis).


Verkligen tråkigt att man igen ska behöva se hederliga dataarbetare vid ett till universitet som dragits in i det hela och ritar parsningsträd medan Lingvistikern skrattar.

Semantiska roller: Location eller GEO political?

2015-02-07

Två övergripande ofta styrande egenheter med orter allmänt noteras först:


  • Nästan allt är en geografisk plats med ett känt namn. Det är nära noga svårt att hitta på ett namn som om kort inte visar sig existera. Jag försökte nyligen göra ett påhittat ortnamn som låter som ett riktigt men jag hoppades ej var det (för att slippa gå igenom vilka orter jag hade innan systemet gick för att testköra med orten) för att se detektionen av det. Orten jag prövade med var svensk (litet språk naturligt för mig manuellt så att säga): Bredsten men visade sig existera.
  • Orter tenderar att fras-relationerna komma relativt enkel att filtrera i regler. Man behöver knappast ens bry sig i verb-kunnande ex. via Verb net annat än utanför några enstaka möjliga konstruktioner.

Oftare förbisett är att samma benämning vi använder för orter kan vara geopolitiska aktörer. Det är i nyhetsrubrik ytterst vanligt att referera till dessa som personer (ex. USA hotar Kina, Kina gnällig och sur över Obamas möte med Dalai Lama). Det behöver inte vara ett svårt problem för de situationer där de kan ha betydelse och vi avstår här från att diskutera det (väldigt mycket relaterat orter rörande detta såväl som mycket av föregående är vad jag löser genom omfattande logiska regelkontroller i koden för att anpassa ut mot olika användningsområden: huvudsakligen för att slippa förstå om något är en ort endast när det inte skadar förståelse rörande vad man just är engagerad i för ett specifikt fall).


Intressantare är vad förståelse av en geopolitisk entitet möjliggör i djupare förståelse utanför själva nyheten eller titeln från denna tillsammans med vår befintliga vetskap om världen.


Vi utgår vi från ex. Marie burned Jack Londom from monday to friday in Alaska during lent rollerna finns satta via dumpen publicerad i Kulturellt medveten kvalitetssäkring: Semantisk analys (finns även sist)- Trroligen följer jag upp det här inlägget med en kompletterande dialog där ett till ex. dump publiceras så vi får ett ex. där on going och criminal activity för activity - d.v.s. under tidsperioden Marie begår brottet eller del av en större tidsperiod hon eller en grupp samarbetande eller en avgränsad annan grupp begår brotts-typen beroende på vad vi söker efter - vilket i analys är mer besläktat än motsvarande för crime som accomplishment vilket jag istället skar bort från dumpen eftersom det blir här nära nog samma som roll-exemplen diskuterade längre ner).


För rollerna systemet menar att deltagarna ska ha gäller inser vi också:


  • Marie (proto-agent och en human agent - dessutom female - i act d.v.s. fattande ett beslut tillsynes från text hon bör ha juridiskt ansvar för) fick bl.a. rollerna i den "verb / discourse happening nära" gruppen: Criminal, Killer (Jack London antingen allvarligt skadad eller död: Systemet förutsätter att han är död men vi inser att det missat att hon kan sitta och bränna honom på begränsade ytor under tidsperioder: Straffskattning för båda fallen är dock på så pass allvarlig att det ej är en problematisk förenkling: Om systemet sätter Killer och Criminal snarare än murder vet vi att en död-kropp ej är uppenbart noterad av systemet alternativt att murder är den explicita händelsen), Enemy o.s.v.
  • De flesta av Jack Londons motsvarande roller skapas genom att vända de roller agenten fick (några undantag - cirka 1/10 i totalt antal - finns från det där egna roll-system finns för proto-agent även för dom verb-nära): Victim eftersom han inte kämpar i discourse i vilket fall han hade kunnat få istället eller dessutom enemy, crime victim, burn victim (oavsett om burn-rollen för agent indikeras ett brinnande tillstånd när vi går in i det pågående en händelse eller "burner" betraktande det "händelse-utanför" som en sak startad och kanske avslutat mer startande som en vana eller flera gånger fire starter (eller fire stoper omvänt).

Vi har med andra ord ett brott burning genom att en AG__MALE_AGENT ("roller" börjande på "ag" är datatyper styrt av hur entiteten förstås snarare än uteslutande eller ens börjande med verb:et: Ett företag, en man, en organisation, en påtryckar-grupp är ex. alla överst mest topp AG__HUMAN_AGENT därför en eller flera människor kan agera via dem).


Antar vi att systemet tänker rätt när Alaska förstås som regionen där brottet begicks (snarare än varande en kroppsdel på Jack London) gäller att det är location snarare än geopolitiskt aktör. Samtidigt gäller att:


  • Den som är ansvarig för att hantera brott i location Alaska är den geopolitiska aktören Alaska samt "ovanför" denna det geopolitiska samarbete Alaska ingår i d.v.s. bl.a. geopolitiska organisationen USA.
  • Förståelse av detta ger bättre djup när ex. en nyhetshändelse pågående tolkas därefter. Andra aktörer ej varande Alaska, Jack London eller Marie som dyker upp senare (ex. AG__POLICE_ORG) blir praktiskt enkelt med föga annan logik att förstå hur de hör dit resp. hur olika sådana förhåller sig till varandra: Ex. att information från säg FBI är besläktad i källa med DEA eller state police när samma brott utreds men att det är parallella organisationer där nivå av samarbete under utredning ett brott resp. när samarbetet började och när resp. entitet började utreda relaterat brottet eller vad brottet är del av större kan variera från jämförbart till resultatet av oberoende kanske rent av konkurrerande entiteter.
  • Vi ges vidare kanaler analysen kan indikera är meningsfulla att börja kontrollera kontinuerligt resp. direkt för att försöka kontrollera information etablerad nyheter hittills under nyhetshändelsen: Polisorganisationer för administrative region

  • Vill vi rent av manuellt ta kontakt med någon ansvarig som resultat av analysen (kanske försöka kommunicera vikten av att vettigt normalt ge personer deras roller i förhållande till namnen - Rätt: State trooper Bill Montreol. Ok men ej rekommenderat: State Trooper Bill montreol, Fel: State trooper bill Montreol, . Fel: Statetrooper, Great Friend, and today Father, Bill Montreol - eller om vi ger upp hela konceptet att lära världen bättre och istället gör oss bättre att hantera dem kan vi hämta upp kända talespersoner och andra från aktuella organisationer som förekommit i historiska nyheter. Wikipedia, andra register m.m. vi har aggregerat med förstådda roller och relationer till den geopolitiska organisationen.


  • Vi kan söka prospekterande efter kanaler vid sidan om bevaka kända kanaler. Ex. kan vi söka finna indexerat material vi ej enkelt direkt får som relaterat men som kan visa sig vara det efter djupare analys. Ett enkelt exempel är att söka efter "Jack London" + "FBI" + Anchorage visande vid träff potentiellt en kanal som etablerat kontakt tidigare än övrigt till polisorganisationen.

Vad är särskilt för geopolitiska organisationer?

Egentligen ingenting. De är endast aktörer med en förstådd funktion associerad till ett geografiskt område.

Antar vi att vi har en upparbetad kunskap om diverse grupper eller personer som brukar bränna författare i Alaska är det kunskap vi kan tillämpa likartat.

Förståelse av hur en entitet (här bl.a. FBI in Anchorage och Jack London) förhåller sig till ett geografiskt område / entitet (Alaska) gör att vi bättre kan förstå analys pågående om de dyker upp i nyheten, kan komplettera med mer information enklare, identiifiera nya kanaler resp. prioritera dem mellan varandra (därför vi kan se vilka som har ny information indikerad vi vet potentiellt / troligt är intressant som ex. en tidning publicerande nyhet med FBI Anchorage i titel förutom Jack London medan ännu få hunnit med det).

Principiell skillnad mellan person och organisation finns egentligen inte. Organisationer är oftare relevanta. Men person med deras domäner oavsett om geografiska eller ett kunskapsområde (ex. domän kryptografi för Bruce Schneier eller att referenser runt Alaska och Jack London med The Call of the Wild troligt berör hans litterära gärning snarare än / eller nödvändigtvis något pågående just nu).

I hur jag väljer att sortera AG-typer i större grupper särskiljer jag några typer (som mer exakta uttryck för går att få) hörande till en "org-typ" inkl. geopolitiska organisationer. Personer, djur, sensorer, vapen, fordon m.m. sorterar ej här. Hit hör företag, organisationer, polisorganisationer, militära organisationer, entiteter i inom medicin, nöje, forskning m.m. Entiteter bestående av flera personer i ett samarbete mer varaktigt existerande vi som den större mängden människor i resp. område, land eller värld tenderar att se behov av eller naturligt att ställa till ansvar oavsett om "moraliskt" i nyheter eller i våra juridiska system. Det är också entiteter vi ger varaktiga namn på och som naturligt tar roll av agent vars beslutande människor vi gärna utan att tänka på det "gömmer" uttryckande det som att organisationen är den som tänker.

Samtliga org-typ såväl som personer får man en tror jag för de flesta förvånande bra utgångspunkt i antal inkluderade, bredd och djup rörande förståelse genom att ta första steget till etablering av vetskap om entiteter i världen från Wikipedia. Extraherar man djupt blir antalet rent av "gigantiskt" (djupt i mening av nyheter i kända tidningar eller referenser till journaler publicerade forskning - och tar upp personer också där rörande sådant som skribent tidning, insändarskribent engagerad i NN, eller bredare än så citerade talespersoner i nyheterna. Wikipedia är världen approximerad och approximationen blir mer exakt och inkluderande dag från dag utan att kostnaden extraktion av världens vetskap blir dyrare märkbart därifrån (medan världen växer snabbare i kanaler om man ska hämta ut samma approximation därifrån: Ett dataformat i Wikipedia och om än onödigt okynnes komplext så blir det sakta enklare och bättre, en kanal hämta data inkl. komprimerade filer).

Wikipedia har rent av sådant långsiktigt värde att man kan göra sig besvär att gå över deras kulturbärare manuellt av och till när man har tid genom åren och etablera vetskap om vem som egentligen är vem och var de hör till utanför Wikipedia (var de arbetar ex. inte ointressant SEO, PR o.s.v.) vilket aldrig blivit av för mig för något Wikipedia språk utanför svenskan (där jag dock tror jag har en försvarlig andel - åtminstone så sent som för fyra år sedan hade jag nästan alla inom ett antal stora ämnesområden som intresserade mig).

Argumenterat är behovet av sådan kontextuell information personer ej nödvändigt p.s.s. för engelskan som för det mindre språkområdet Sverige (detta kan vara förändrat: jag har ej följt upp svenska Wikipedia i storlek, antal aktiva personer m.m. på många år nu) när vi analyserar engelska Wikipedia. Andelen positivt verkande är ju givet värdet uppenbart etablerat större totalt medan fler allmänt engagerande kan tänkas göra upptäckt av kvalitets-divergenser från större värde per text-enhet till sämre detekterat för allt fler ämnesområden (Wikipedia gör ju en samma kvalitetsprojekt och fler personer med fler kompetenser möjliggör mer här). Att antalet läsare är potentiellt mycket stort beroende av artikel och publikationen ej är "fryst" till nästa upplaga löser säkert en hel del problem också (också om jag tror att format och nivå av information relaterat funktion och titlar för personer relaterade vad man skrivit om kanske i faktiskt antal bättre fångas av Wikipedia själva körande ungefär samma programvara och sedan sätta något i artikeln automatiskt när information saknas).

Jämför minskat behov av att förstå kontextuella kopplingar Wikipedia-folk utåt med i ett välfungerande land mindre behov av att bibehålla data över enskilda poliser klarar av sitt utredningsarbete eller vilka de känner. Andra kan ha detta behov (sökande korruption eller beslutande om befordring). Men analyserande nyheter räcker det att se dem som utredande polis i rätt organisation där kvalitetsproblem i sig kan antas propageras till och hanteras av övergripande ansvarig när behov uppstår (ex. kommun, department m.m.) och i det blivande sin egen nyhetshändelse. Söker vi prospekterande djupare just en särskild nyhet eller brott kanske kontextuellt djup är intressant (säg att vi är en tidning sökande korruption) men ju mer riktat djup analysen är desto mer data hanterat i andra områden kan exkluderas görande hantering av mer data och / eller CPU-tid (här mer det senare) görligt.

Vi ska vara på det klara med att vi får expoentiell tillväxt att totala mängden entiteter om vi ej sätter begränsning någonstans. Personer har så många relationer som i någon del av deras liv motsvarande ett område som generaliserar över människor åtminstone där är relevanta. En lagom nivå för den som ej extraherat djupt från Wikipedia förr troligen underskattande antalet personer är tror jag att ta motsvarande spokes person m.fl. roller för personer och var de hittades och vänta med dessa personers relationer till ämnen, händelser, andra entiteter o.s.v.

Dump med semantiska roller satta för test-meningen

En bit av dumpen från "arbetsminnet" där allt under all parsning lagras nedan (mängder av det borttaget) följer. Nummer längst vänster för resp. del motsvarar ungefär ordningen på resp. som ges roll (motsvarar frasens id-nummer) när PH är satt oavsett var pekar det också på PH-fras (den avsedd). Nummer på fält kan också vara ett, två eller något annat utan att värdet har mening annat än för att skapa datafältet (detta gäller ex. "label" där det är att label existerar som representerar analysresultat och ej om label är 1 eller 2).

Roller i typ-gruppen actor roles är de i huvudsak diskuterade. Thematic role sla ej ses som en satt semantisk eller tematisk roll utan är den första rollen som en initial "grov-hypotes" analysen satte medan ev. semantiska roller slutgiltigt om trovärdiga eller önskade dyker upp i Semantic roles där vissa ej behöver vara unika och alla kan vara ej unika om systemet ej klarar att avgöra vilken det är (minns jag rätt raderade jag bort semantic roles för alla därför de var fyllda med debug data samt att någon funktion skapade upp dessa på fel plats via define-kontroll: utvecklingssystemet dumpen kommer från). Vanligen är dock thematic role den semantisk roll man efter bra mycket mer kod får långt senare (men ej trovärdig på samma nivå: utnyttjar endast common sense rörande semantiska roller kombinerat en två-dimensionell roll prioritet för proto-agent och proto-patient grammatisk roll - ex. passiv + subjekt - resp. grammatisk relation framåt och nedåt - ex. varande en NP-fras i en PP-fras - och resp. dimension två prioritet via regler som om entiteten tycks kunna indikera både ett datasystem kallat Bill Xxxx samt en person med samma namn funktionellt som verktyg för att lösa ett problem och positionen i meningen ej sällan är aktuell både för agent och instrument ger vi den rollen agent oavsett om Bill Xxxx som verktyg kan antas eller är känt är enormt oftare refererad ty min princip är att vi hellre tappar lite vetskap etablerad än att vi etablerad vetskap defekt: Instrument är ett constraint görande narrow på världsbilden medan endast proto-agent egentligen ej skiljer mellan instrument och människa därför att oavsett vilket kan vi ej anta att en människa bakom verktyg resp. människa direkt indikerad finns styrande och beslutande och med mindre än om entiteten kan vara en automat, väderfenomi m.m. för vilket djupare analys kan vara värt att göra när det känns viktigt - så finns likväl i discourse om än inte alltid just för vad en enskild mening diskuterad en människa någonstans: Constraint vad någon kan göra och är är begränsning av vad som är rimligt att anta om världen bakåt och framåt d.v.s. sparande tid men om defekta gör att vi missar saker - desto mer någon kan göra eller indikerar ju säkrare antagande om man är osäker - även om jag i allmänt ser till att kod sätter resp. varande normalt där ekvivalent med resonemanget här).


'SITUATION_TYPE' => {
[Red. Accomplishment här därför bounded temporal
passed. Och Bounded -> mannerative är endast verb 
utan tolkning grammatik o.s.v. Givetvis inser jag
nu efter QA är avslutat att det kan kännas fel 
att kalla händelsen för en accomplishment. /HH]

  'ACT' => 1,
  'ACCOMPLISHMENT' => 1
  },

  'DEP_B' => {
   'SPATIAL_IMPLICIT_NON_MOVEMENT' => 1
   },

  'BOUNDEDNESS' => {
     'BOUNDED' => {
         'TIME' => {
            'START' => {
            'PH' => '6'
          },

          'TIME_PERIOD' => {
             'START_END' => 1
           },

          'END' => {
             'PH' => '8'
          }
      },
      
      'SPATIAL' => {
         'SPATIAL_AREA' => {
            'PH' => '4'
          }
       }
   },

   'UNBOUNDED' => { 'MANNERATIVE' => 1 }
   }
  },

 'AGENTATIVE' => {
  'ARG' => {
  
  '8' => {
     'ACTOR_ROLES' => {
         'PP_OPERATION' => {
             'DIRECTION' => 1
          },
          'BOUNDARY' => {
          'END' => 1
          },
          'NATURE_OF_SURFACE' => {
          'TIME' => 1
          }
      },

     'LABEL' => {
        'TIME PERIOD' => 1,
         'DAY' => 1
      },

      'SEM_TYPE' => 'PP',

       'AG' => {
          'AG__TIME' => 2
        },

       'TYPE' => 'PP__NP',
       'PREP' => 'TO',
       'head_np' => 'friday',
   },

  '6' => {
      'ACTOR_ROLES' => {
         'PP_OPERATION' => {
          'DIRECTION' => 1
          },
          'BOUNDARY' => {
          'START' => 1
          },
          'NATURE_OF_SURFACE' => {
          'TIME' => 1
          }
       },

      'LABEL' => {
         'TIME PERIOD' => 1,
         'DAY' => 1
      },

      'SEM_TYPE' => 'PP',

      'AG' => {
         'AG__TIME' => 2
       },

       'TYPE' => 'PP__NP',
       'PREP' => 'FROM',
       'head_np' => 'monday',
   },

  '4' => {
     'ACTOR_ROLES' => {
         'PP_OPERATION' => {
             'TOPOLOGICAL' => 1
          },
          'BOUNDARY' => {
             'INSIDE' => 1
           },
           'NATURE_OF_SURFACE' => {
              'SPACE' => 1,
           }
       },

       'SEM_TYPE' => 'PP',
          
       'AG' => {
          'AG__GOVERNMENT_ORG' => 2,
          'AG__LOCATION' => 2,
        },

        'TYPE' => 'PP__NP',
        'PREP' => 'IN',

        'CONCEPT_LABEL' => {
           'GEO ARENA' => {
              'ADMINISTRATIVE REGION' => 1,
              'INHABITED PLACE' => 1
            },
           
            'GEO POLITICAL ORG' => {
               'COUNTRY' => 1,
               'US STATE' => 1,
               'ADMINISTRATIVE DISTRICT' => 1,
               'STATE' => 1,
               'DISTRICT' => 1
            },
         },

         'head_np' => 'Alaska',
   },
 
 '0' => {
    'ACTOR_ROLES' => {
       'STIMULUS' => 1,
       'BURNER' => 1,
       'DESTROYER' => 1,
       'ENEMY' => 1,
       'CRIMINAL' => 1,
       'KILLER' => 1
    },

   'AG' => {
      'AG__HUMAN_FEMALE' => 1,
      'AG__HUMAN_AGENT' => 1,
      'AG__PERSON' => 1
    },

   'EMO_ROLES' => {
 '     NEGATIVE_ROLE' => 1,
       'UP_ROLE' => 1
    },

   'SEM_TYPE' => 'PROTO_AGENT',
   'THEMATIC_ROLE' => 'AGENT',
   'head_np' => 'Marie',
   },

  '2' => {
   
     'ACTOR_ROLES' => {
        'VICTIM' => 1,
         'BURN VICTIM' => 1,
      },

     'AG' => {
        'AG__HUMAN_MALE' => 2,
        'AG__HUMAN_AGENT' => 2,
        'AG__NOT_SHORT_NAME' => 2,
        'AG__PERSON' => 2
     },

   'LABEL' => {
      'PERSON' => 1,
      'SOCIALIST' => 1,
      'WAR CORRESPONDENT' => 1,
      'SURVIVOR' => 1,
      'WRITER' => 1,
      'NOVELIST' => 1
    },

   'SEM_TYPE' => 'PROTO_PATIENT',
   'CONCEPT_LABEL' => {
       'ARENA' => {
          'WAR CORRESPONDENT' => 1,
          'MILITARY' => 1
       }
    },

   'THEMATIC_ROLE' => 'PATIENT',
   'head_np' => 'Jack London',
   }
  }
 }
 },

Chunk parser: Fras-relationer för grammatisk- och semantisk information

2013-03-11

Speech and Language Processing är en excellent referens till mer än relaterat tolka tal, och har praktiskt i området statistical language processing oftare varit till nytta än Foundations of Statistical Natural Language Processing (ändå vad jag använder oftare än mycket annat och ett komplement kring en del) skriven av Dan Jurafsky's kollega Mannings. Den första ger en seriös och användbar introduktion till chunking medan det kanske är lite förvånande att den senare föga berör det och kanske lite negativt givet dess större användningsområden kring mycket relaterat praktisk problemlösning kring så mycket (regelbundet återkommande område man kanske glömmer är portning av data eller gamla register där meta-information saknas men också data mining.


Eftersom jag är svensk född i kyla och överlevande snö är balans viktigt. Berömmer man en entitet för mycket kan de bli upphetsade och springa i dörrar och släppa ut värmen eller överäta av förråden. Jag införde därför lite "träd-rekursion" i min semantiska chunk-parser där ju:


"The primary limitation placed on these chunk rules [Egentligen refererar han till en särskild sorts chunkers men det struntar vi i.] is that they cannot contain any recursion; the right-hand side of the rule cannot reference directly or indirectly the category that the rule is designed to capture."

Vi fortsätter nu Chunk parsers presterar på nivå med människa för meningar utvalda för att vara väldigt svåra för dem och tittar hur vi tar ut argument 1 till resp. verb i exempel meningen från hennes artikel som analyserade chunkers.


För ett parse-träd när vi ska tolka det för att ta ut en given sorts information existerar en korrekt väg givet trädet och givet när så är viktigt ev. statistiskt-modell för att välja nära flera val finns. Givet det går det naturligtvis utmärkt att representera platt tillsammans med programmatiskt logik. Jämfört med min representation av människans kunskaps-koncept (Blue light) al'a som mest slösaktigt uppställd 1 000 000 koncept och tiotals miljoner numera relationer är det i mycket mindre utsträckning möjligt. Man vinner på att extrahera och representera information på sådant sätt att vetskap bevaras i strukturen på ett sätt lättare att nå. När vi hanterar enskilda meningar, stycken o.s.v. skadar inte lite logik i programmen särskilt som de tenderar att bli snabbare av mindre rekursion, tillståndstabeller m.m.


För situationen att ett verb på en mer undanskuffad plats i vårt "parse-träd" inte har direkt möjligt att begripa vilket dess subjekt är behöver det ju hämta fram den verb-fras (resp. en del annat möjligt) som uttrycker dess relation till det. Det var vad Martha såg som det viktigaste värdet med vanliga parsers (vilket givetvis stämmer för flexibilitet om och när man kan eller vill betala med prestandan relativt mängden kod). Just för att lösa problematiken i ex. meningen är det dock egentligen inte särskilt mycket givet att man kan relatera chunks (och som här eg. inte explicit som named relations vilket ju heller inte är default för Blue light heller). Nedan är hela koden för det undantaget en rad med "return -1":


Klicka på bilderna för att se bättre

Hittas "ovanför" i kodlogiken inte ett subjekt som stämmer med S-id-numret anropas denna och om något kommer tillbaka större än -1 undersöks det. Och något kommer ut. Nedan första argumenten till verben i tidigare refererad ex. mening ("Big investment banks refused to step up to the plate to support the beleaguered floor traders by buying big blocks of stock, traders say."):



Övriga argument (och argument i ungefär samma mening som i Marthas excellenta SemLink vars nytta blev enkelt verklig mer än Verbnet när jag upptäckte att Verbnet som sparar ned tid att få samman dem finns.) är avstängda eftersom jag testade den nya och mycket snabbare kod-versionen för att hämta just verb-relationer till verb på subjekt.


Utan denna eller en liknande kontroll (den jag använde innan långsammare med också funktionell utan "1-dimensionella parsnings-träd" kanske vi ex. får problem med the plate. Är det ev. subjekt till VB direkt efter (nummer 6 i bilderna):



Ett alternativt sätt men med fler loopar och kontroller - och långsammare - är att promenera bakåt från verbet och titta vad som relaterar till det innan, och skapa en kedja tills vi når vad vi är säker på är översta verbfrasen. Inte mer komplicerad logik än chunkers, och kanske rent av enklare eftersom det bara är fraser. Vanligen är det tror jag ofta precis som i ex. meningen diverse PP-operatorer efter varandra och före och efter aktuellt verb som ställer till det men dom är ju bland det enklare att vandra över utan särskilt mycket logik och där mer logik krävs kan ju den mer ambitiösa använda logik representerad i kunskap i form av datastrukturer människan självorganiserat åt oss att skörda (ex. Verbnet m.m.) eller tror jag oftare för just sådant här egentligen mindre omtalade men nog så stora The Specialist Lexicon (U.S. National Library of Medicine, National Institutes of Health) där vi hittar en hel del "avslutande" om verb (och verb:et innan avslutar ju med vad vi har mellan det och verb:et efter.


Nedan ex. på verb complement från The Specialist. Till höger syns en bit av katalogen där det datat är strukturerat jag lät vara kvar med diverse andra verb-datakällor markerade med pilar (och kataloger med data möjligen - högst osäkert eg. - nedsparat samtidigt med en liten bugg i min spindels tolkning av webbplats-direktiv kring sådant om nu det alls var något aktuellt den tiden i ett av fallen och där ett större "bibliotek" / "institution" från europeiska kontinenten resp. ett antal parsers och liknande jag testade men inte tycker är något att rekommendera vara slöare ungefär mycket annat som ger mer information eller hade andra problem).


Skapad med Gimp och Google Docs i konstnärlig händelse och skapelse för att mer än illustrera verb dokumentera åren bakåt och säkert fortsatt länge där diverse arbetsmoment sker med applikationer på webben enklare på vissa sätt och med vanliga applikationer därför att vissa moment tycks de första aldrig få till ex. relevant här skärmdump som auto-sparas i min hemkatalog med min Linux-fix för funktionen.

Slutligen var det rekursionen - och för korrekthet rekursion i skriven pre-kompilator-mening mer än abstrakt koncept - har vi det nedan (första halvan av koden hade vi egentligen kunnat skriva på tre rader men den ska tas över mer eller mindre exakt till annat och har värde så här ett tag för att se om den har sönder saker märkbart istället för att kanske missas onödigt länge med underliga problem svårare att hitta ovanför). Rekursionen är att vi anropar samma funktion med det nya verbet vi fick från koden i en av de första bilderna.



Det tycks mycket troligt att jag plockar bort rekursionen. Jag är en starkt troende på att rekursion, grafer (snarare än ex. de säkrare hashtabellerna) särskilt skapat flexibelt med pekare (instabilt och farligt) eller ännu värre enkelt (blir stort och slött utan att det märks) är som koncept på universiteten (jag var som ung och mindre skadad av verkligheten involverad i labbarna runt Algoritmer och Datastrukturer, Uppsala Universitet kanske 1998 tror jag medan jag var student på Teknisk fysik för att vara studenterna på kursen behjälplig m.m. och rätta dem senare men visste inte bättre) ett exempel på dispergens mellan de datormiljöer, utmaningar och intellektuella resurser typiska för arbetslivet. Elegansen är ju ett värde i sig som bedöms gällan algoritmer medan stabiliteten i den faktiska implementationen några mätningar görs från betyder föga. Hade prioritet istället lagts på stabilitet och kvalitet tycks inte otroligt att både en försvarlig-andel av säkerhetsproblemen liksom de ofattbart dåligt optimerade program som år efter år suger upp all extra prestanda man får med ny dator (ex. Windows XP jag nyligen kom på att sortera en tabell så att det gjords faktiskt visuellt: nästan så snabbt att man inte märkte det ens under last men likväl systematiskt vad som kostar och för åtta år sedan hade datorn jag hade för nöjes-surfande inte orkat det utan att det direkt stört: helt otroligt. Inte självklart att problemet just har med XP att göra. Det mesta man installerat och avinstallerat tycks ju ha dll eller vad det numera kallas kvar registrerade såväl som oregistrerade).

Chunk parsers presterar på nivå med människa för meningar utvalda för att vara väldigt svåra för dem

Martha Palmer Verbnet och Probank hör till de mest användbara datastrukturerna för semantisk-tolkning av text närmare mer praktiska tillämpningar där prestanda är vad som ger möjlighet att göra fler och djupare kontroller på mer data genom att spara tid på mindre mer kompakta statistiska-motorer och ännu den tid man ev. annars själv hade lagt på det. Artiklar publicerade länkade från Martha Palmer (uppdaterad fram till 2011) tenderar också oftare än kanske vanligare ligga närmare praktiska tillämpningar (kanske något finansierat samarbete som inspirerat) och därför värt att titta till ibland.


Chunk parsers är praktiska verktyg och det var därför med visst glatt intresse jag prövade meningen hon gav som exempel i en sammantaget ganska negativ tolkning av chunk parsers:


"[...] it would be difficult to imagine identifying it without building a complete syntactic parse of the sentence. [...]
The prepositional phrase expressing the Manner relation, however, is not identified by the chunk-based system. The tree-based system's path features for this constituent is VB ARROW_UP VP ARROW_DOWN PP, which identifies the prepositional phrase as attaching to the verb, and increases its probability of being assigned an argument label."

Från: The Necessity of Parsing for Predicate Argument Recognition,
Daniel Gildea och Martha Palmer,
University of Pennsylvania,
Proceedings of the 40th Annual Meeting of the Association for Computational Linguistics (ACL), Philadelphia, July 2002, pp. 239-246.

Och allmänt har visst Martha Palmer rätt även om nu informationsextraktion och annan praktisk användning ofta ger andra konkreta värden. Snabba och ofta tillräckligt stabila allmänt, och viktigare för riktad informationsextraktion presterar de bättre än generaliserad parser utan annan anpassning. Men man ska inte underskatta deras värde annars eller. Betänker vi ex. ett träd är det en komplexitet vi t.ex. också kan uttrycka med den typ av implicita flödesrelationer i grafer jag tog som exempel i Semantiska parsern nästan version 1.0.


"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."

Jag såg i exemplet nedan för den semantiska parser som utvecklas för att filtrera artiklar, nyheter m.m. Drifting thoughts inte något av de problem Martha upplevde med sin chunk-parser.


Notera först den första siffran till vänster vilket approximerar motsvarande upp och ned - vad jag gjorde för att approximera kognitiv-komplexitet (som diskuterat i Neurolinguistics bl.a. kring Gibbs-parser) samtidigt som jag försökte göra just upp-och-ner i en annan funktion som aldrig bra bra. Det gäller för S-fraserna. Denna uttrycker det dock så perfekt man kan komma med utan problem en die för icke noll per mening.


För by (vad jag kallar en PP-transformator) att verben vi binder till ganska typiskt upplever jag för den typen av verb-argument ger oss en bra indikationen om den generaliserade förenklade meningen möjlig att fånga i de kanske teoretiskt mindre uppmärksammade men praktiskt bland de viktigaste arbetena inom praktisk lingvistik Verbnet, Framenet, Propbank m.fl. liknande lösningar representerar. Verb-relationerna till by: 6 VP to support VP/S och 9 VP buying VP/S (siffran till vänster där är frasens id-nummer och den som står direkt till höger om "upp-ner-räknaren").


"Manner-argumentet" man ser det i artikeln är "by buying big blocks of stock" där vi ju lokalt i den har en PP. I citatet från min semantiska parser ovanpå chunking agerar by m.m. som operatorer och den uttrycker relationer direkt enligt tidigare där ju redan där ges i alla fall en antydan om "manner": köpa aktier för att stödja något (stödköpa kanske?). Relationerna till buying (egentligen inte argument utan relationer som ej går till vad vi kan tolka som VP/S, SBAR o.s.v.)


.............................................................
S VP/S 4 9 VP buying 

STRUCTURE RELATIONS

ARUGMENTS
 10 NP big blocks NP
 8 PP by PP
.............................................................


Det samma för big blocks där vi också märker av debug-testningen av PP-completement avsedd för situationer där vi har längre kedjor som gemensamt konvergerar till mening och tolkning ex. att ett argument begränsar dimensionsrymden det andra uttrycker. Ex. in the middle of the forest (inte bara obestämt eller hela skogen utan i mitten av skogen: praktiskt för de flesta av oss ännu mer unknown). Siffran är frasens interna id-nummber NP anger bara fras-typen och ex. big blocks är chunk-frasen.


NP 0 4 10 NP big blocks


STRUCTURE RELATIONS
 9 VP buying VP/S

ARUGMENTS
 11 PP of PP
PP-COMPLETEMENT ( 10 NP big blocks ) ( 11 PP of ) ( 12 NP stock )


Och hela utskriften av körningen av exemplet från Marthas artikel. Den är som sådan anpassad för vad jag utvecklar i den (strukturerar och sorterar diverse kod medan jag sätter högnivå-primitiver men just för att illustrera detta passar den perfekt).


Notera när vi tittar före och efter by för den lilla upp-ner-räknaren. Den ligger balanserat på fyra genom hela det "human annotations" beskrivit som Manner i Marthas exempel mening jag fick för mig att jag skulle provköra innan jag tänkte försöka somna. En avvikelse från perfekt manner är för traders say vilket med upp-och-ner räknaren ligger på samma då jag just nu har comma m.m. som inte hanteras i trädet borttaget men följer man relationerna får man rätt fras manner ändå. Say är ju en gammal vän här.


Det egentligen mer intressanta för mig runt motsvarande manner är mindre dom markeringarna oavsett hur användbara de är i kontext av entiteter och vad dom gör utan mer av vad som uttrycks avseende aktuella dimensioner och hur dom begränsas via constraints - kanske vad vi kan kalla proto-whole och proto-part p.s.s. sätt som proto-agent och proto-patient. Var vi är på kartan och vad för sorts karta är det? Är kartan ett antal verktyg (t.ex. gas chromatography, t-test, litterature search m.m.) aktualiserade i texten som förklarar hur vi kan avgränsa vad vi kan förstå om vad entiteterna gjort var någonstans och med vilken säkerhet?


.............................................................

##################################################################
PHRASE STRUCTURE MAP:body_last 0
 NP 0 0 0 NP Big investment banks


STRUCTURE RELATIONS
 1 VP refused VP/S

ARUGMENTS
.............................................................
S VP/S 1 1 VP refused BOSS 

STRUCTURE RELATIONS
 2 VP to step VP/S

ARUGMENTS
 0 NP Big investment banks NP
 13 O COMMA NOFUNC
 14 NP traders NP
 15 VP say VP
 16 O . NOFUNC
.............................................................
S VP/S 2 2 VP to step 

STRUCTURE RELATIONS
 1 VP refused VP/S

ARUGMENTS
 3 PRT up PRT
 4 PP to PP
.............................................................
 PRT 0 2 3 PRT up


STRUCTURE RELATIONS
 2 VP to step VP/S

ARUGMENTS
.............................................................
 PP 0 2 4 PP to


STRUCTURE RELATIONS
 2 VP to step VP/S

ARUGMENTS
 5 NP the plate NP
.............................................................
 NP 0 2 5 NP the plate


STRUCTURE RELATIONS
 6 VP to support VP/S

ARUGMENTS
 4 PP to PP
.............................................................
S VP/S 3 6 VP to support 

STRUCTURE RELATIONS

ARUGMENTS
 5 NP the plate NP
 7 NP the beleaguered floor traders NP
 8 PP by PP
.............................................................
 NP 0 3 7 NP the beleaguered floor traders


STRUCTURE RELATIONS
 6 VP to support VP/S

ARUGMENTS
.............................................................
 PP 0 3 8 PP by


STRUCTURE RELATIONS
 6 VP to support VP/S
 9 VP buying VP/S

ARUGMENTS
.............................................................
S VP/S 4 9 VP buying 

STRUCTURE RELATIONS

ARUGMENTS
 10 NP big blocks NP
 8 PP by PP
.............................................................
 NP 0 4 10 NP big blocks


STRUCTURE RELATIONS
 9 VP buying VP/S

ARUGMENTS
 11 PP of PP
PP-COMPLETEMENT ( 10 NP big blocks ) ( 11 PP of ) ( 12 NP stock )

.............................................................
 PP 0 4 11 PP of


STRUCTURE RELATIONS

ARUGMENTS
 10 NP big blocks NP
 12 NP stock NP
.............................................................
 NP 0 4 12 NP stock


STRUCTURE RELATIONS

ARUGMENTS
 11 PP of PP
.............................................................
 NOFUNC 0 4 13 O COMMA


STRUCTURE RELATIONS
 1 VP refused VP/S

ARUGMENTS
.............................................................
 NP 0 4 14 NP traders


STRUCTURE RELATIONS
 1 VP refused VP/S

ARUGMENTS
.............................................................
 VP 0 4 15 VP say


STRUCTURE RELATIONS
 1 VP refused VP/S

ARUGMENTS
.............................................................
 NOFUNC 0 4 16 O .


STRUCTURE RELATIONS
 1 VP refused VP/S

Chunkie: Enkel och ganska snabb chunk parser

2013-02-19

Jag upplever det baffling att inte en mängd natural language parsers i Perl finns. Under de parser-funktioner jag sätter för att ta ut vissa former av relationer har jag en utmärkt fungerande POS (se LPost: Perl version of Brill's Part-of-Speech Tagger av Jimmy Lin, University of Maryland), och hade önskat parallellt den eg. vilket parser-koncept av de mer välkända (men med prioritet på prestanda). I brist på det har jag i princip kodat en liten chunk-parser men vill just mycket hellre oavsett om den får ligga kvar som mellan-steg (ex. hantera integration Verbnet, Framenet, common sense m.m. i ett litet eget-lager) ha något riktat under vars underhåll och utveckling inte är ett problem man själv äger eller kodar fast i sig.


Denna chunk-parser - ej skriven i Perl - tycks vara en kandidat åtminstone i prestandan och åtminstone tillräckligt funktionell när man intelligens ovanför (räcker mycket möjligt längre än så beroende på arbete man lägger på dess data-filer: men de inkluderade för engelskan räcker utmärkt för min användning här och antagligen det mesta):


  • Chunkie | heartofgold.dfki.de
  • (Osäker på vad heartofgold.dfki.de är men har åtminstone ytlig likhet med ganska många andra projekt olika organisationer i Tyskland är involverade i relaterat ontologier, språk, text mining, business intelligence, AI och besläktat ofta finansierat ganska hårt av EU förutom tyska "fonder".)

Fint chunk-platt som "vi" i det mesta praktiska hellre vill ha det i textanalysen:


Klicka för bilden förstorad.

En implementation av en Collin parser ("mer än" chunk parser dock) jag prövade för någon vecka sedan var löjligt långsam om man som här ska ha det till analysera mycket data kontinuerligt och endast som en liten del med mycket annat. Att som Chunkie vara ganska snabb betyder mycket.


Ett avslutande mini-skämt

När det gäller parser i natural language tenderar jag dessutom att lita på (positiva eller hur man vill se det) stereotyper. Låter namnet på författaren kinesiskt känns det bra för dom arbetar 10 - 14 h per dag och det är vad sådant här kräver. Är det tyskt (här tysk-domän) känns det också avslappnat trevligt: tyskar är ju noggranna och det är solid value i sådant här.


Ett par inlägg från längre tillbaka om stereotyper:



Vilket ligger närmare en grupp av dimensioner och relationer mer hemmahörande i sådana parsnings-frågor jag egentligen uteslutande skulle önska att koden behövde hantera. Men det är sällan det blir riktigt så och viss parsning i natural language blev nu fallet trots att jag hela vägen lovade mig själv att det inte skulle behövas (implementation längre tillbaka bl.a. av kommunikationskontroll har lämnat mig utan illusioner om den utmanande glädje sådan kodning sällan innebär annat som skryt referenser för att understryka en historik i mer manlig hard-core programming i C).