Visar inlägg med etikett University of Colorado Boulder. Visa alla inlägg
Visar inlägg med etikett University of Colorado Boulder. Visa alla inlägg

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

Business intelligence: Betydelsen av verb, händelser och meningar

2012-12-25

Ett koncept alternativt tänkbart till ett mer konservativt (och som i ett av tre ben tar tydligt värde från Verbnet: i praktisk utveckling fenomenalt nära praktiskt behov utan allt för stort arbete med de anpassade datastrukturer. Verbnet som skapelse imponerar på mig medan mycket praktiska skapelser som klarar att använda Framenet i konkret utan att röra till det imponerar - båda nås från University of Colorado Boulder) kopierar jag in nedan från mina anteckningar:


"En enligt den lite otäckt enkla samlade språkförståelse modellen finns ett prototyp-experiment man skulle kunna göra men jag ej ids givet att det redan är så mycket konceptuellt likartat i Drifting thoughts delarna men där vi:


1. För varje verb-frame aktiverat av ett do med full-parametrisering.


2. Aktiverar upp varje annat verb aktuellt i samma frame men lika mycket givetvis relaterat hur starkt associerade de är med övergripande _IN subdel enklast bara motsvarande de semantiska rollerna.


3. För varje sådan resp. sub-aktivering aktiverar utåt respektives FOL-logik uttryck från Verbnet ev. helt utan hänsyn argument mer än att ev. låta dem aktivera konvergerande bakåt till rollerna från alla eller liknande.


4. Alt. kompletterande tre låt sub-aktiveringen påverkas av alla FOL roller den har men jfr ett DF-koncept boosta dem som uttrycker relevans med centralitet konceptet och verbet.


Där poängen skulle vara att i betydelse näraliggande ord också kommer påverka konvergensen till den totala betydelsen för vårt uttryck och där dessa punkter runt om ändå påverkas av relevans aktuellt kontext men där denna relevans ej är direkt relaterad FOL-logiken eller själva verb-frames utan de mer konkret uttryckta entiteter som tagit rollerna.


Därmed kan man tänkbart fånga upp att meningen för resp. verb inte i språk är exakt utan verkligt styrs från grupp, person, situation och kontext. Vi antar att sådana variationer ej för varje instans är jämnt över alla näraliggande samtidiga, och att problemet med glidande betydelse huvudsakligen uppstår när det centrala verbet används annorlunda vilket när övriga är approximativt de samma tänkbart vettigt hanteras genom att dom som ligger närmare den glidande betydelsen via associationen kommer aktiveras troligare mer. Vad som tar rollerna konkret oavsett personer, företag, platser o.s.v. är ju både oerhört situationspåverkat såväl som kulturellt / ålders-betingat / intresse-styrt.


Vidare jämförbart med aktiverings-algoritmen för kring-verb som är den jag naturligt skulle välja, finns ju den för sådant här tror jag ganska för grov men som för specialistområden ex. ett teknik eller forskningsområde troligt fungerar bra och kanske bättre, kan vi ju ta ut associationen mellan resp. till bag-of-words koncept och titta på hela meddelandet enligt lämplig algoritm.


Ganska likt en tänkbart “fördummad” / “förenklad” Drifting thoughts men helt utan koncept för hur “aktivitets-samverkan” över nätet påverkas av avstånd, tid, likhet kunskap o.s.v.


Här ska vi dock göra en tråkigare fungerande som gjorda prototyperna konceptuellt annorlunda från Drifting thoughts. Mer traditionellt i regel-logiska system snarare än att låta meningen självorganisera sig från datastrukturerna och vilka koncept i dem som är realiserade."


Jag är också intresserad av tips om mer utvecklade koncept för att dra regel-betonade slutsatser från endast de tematiska rollerna resp. endast FOL-logiken med rollerna, mer än geografisk-förflyttning, transfer m.fl. "direkta" - även mer abstrakta slutsatser - för en eller flera uttryck event-relaterade.


Det finns mindre publicerat än man kan tro. En hel del är väldigt abstrakt nära idéer om hur människan fungerar inte särskilt praktiska utgångspunkter för en begränsad sido-komponent som här, medan annat egentligen inte kommer längre än vad direkt lokalt relaterat parsning mer i språket vilket intresserar mig mindre här eftersom det redan är gjort när vi kommer hit.


Och också hur konkret till abstrakt verben är (jämför The Linguistic Category Model) givet kontext påverkar propagering av resultat vi nått till för stycke eller nyhet globalt verkande, om något gjorts som undersökt det vilket jag ej hittat ännu i alla fall. Annars klockrent projekt för Darpa-finansiering:


  • Något händer.
  • Ska jag väcka generalen eller kaptenen?
  • Är verbet som beskrivet stridshändelsen väldigt konkret struntar vi i det för då upplevs det bara som mikro-management för denne.
  • Är det konkret men påverkar abstrakt på andra entiteter ex. stör alla kanoner på skeppet istället för bara en väcker vi honom.
  • Och om konceptet är abstrakt oavsett situationen ex. en jolle kommer som berättar att Frankrike förklarat England krig men att man artigt ska vänta två dagar innan man börjar strida väcker man honom också.