Eftersom jag inte skrivit något på ett tag tänkte jag skriva något kanske större utspritt över några inlägg rörande hur egentligen för tänker jag de flesta normala användningsområden meningslösa vanliga parsers är. Vad har man egentligen för nytta t.ex. av "träden" som skapas?
De är ju absolut inte meningsfulla direkt för att ta ut mening, tolka och förstå vad som sägs, utan det är ju arbete som helt kvarstår. Praktiskt är det bara att börja parsa resultatet man får. Vilket jag tidigare gjort och har en tämligen kompetent parser för (med viss chunking). Emellertid är det ju en massa arbete som görs tycks det i onödan om vi nu mer är intresserade av att tolka och förstå ungefär som en människa (tänk någon som surfar nyhetstitlar på en tidnings startsida eller i sökresultat) där beräkningskostnad (för att inte tala om minnesåtgången) prioriteras i mycket där det inte behövs.
Nedan har vi som jag börjar med att publicera för att ha att referera dump av en datastruktur uttryckande "arbetsminne" för analysen av en nyhetstitel. Den är av och till (en hel del) kommenterad lokal.
I "parser-familj" vet jag inte riktigt var den hör samman. NP och verb-grupper detekteras och tas ut via chunking och den processen är i huvudsak regelstyrd vilket tycks prestera bättre än befintliga chunking-system åtminstone för nyhetstitlar (helt säkert delvis just därför att det är nyhetstitlar) utifrån part of speech där jag bl.a. använt brill resp. en statistisk. Ingendera är egentligen perfekt men jag har verkligen ingen lust att skriva en egen.
Likt dom dependency parsers ex. Speech and Language Processing (Jurafsky) diskuterar uttrycks beroenden emellertid inte som i exemplen där mellan orden utan fraserna. Dessa finns när de uttrycker samband som ligger lite utanför vad chunkingen direkt får fram när de är praktiskt användbara.
I dumpen arbetsminne noterar vi att riktad parsning mot mening skett. Här från att titlar uttrycker en världsbild Bill heard that the tank destroyer was attacking Hillary (test-titarna kan tyckas underliga men här får man ju förutom själva claus-konstruktionen och mening kring den sådant som weapon effect, ett koncept - tank destroyer ngram-detektion kan ta ut flera typer av, vi har personer indikerade med förnamn - imperfective o.s.v. Där testmeningarna mer skapas bit-for-bit utan att egentligen vara alltid särskilt troliga nyhetstitlar).
Jag ids inte sitta och konvertera dumpen som kommit via något xterm-liknande på utvecklingsdatorn. Bäst kopieras det säkert in till Emacs eller liknande än att läsa direkt.
Notera gärna också kommentaren i sista stycket rörande gun boat och tank destroyer :-D
$VAR1 = 'PH';
$VAR2 = {
'6' => {
'end_position' => 8,
'PH' => 'NP',
'start_position' => 8,
'phrase_true' => 'Hillary',
'HEAD' => {
'ARGUMENT' => {
'DIRECT_OBJECT' => {
'PH' => '5',
'RIGHT' => 1,
'RAW' => 'DIRECT_OBJECT(attacking, Hillary)'
}
}
},
'CH' => {
'0' => {
'WORD_GIVEN' => 'Hillary',
'CHUNK' => 'B_NP',
'pos' => 8,
'WORD_BASE' => 'hillary',
'POS' => 'NNP'
}
},
'CH_NUM' => 6,
'ngram' => {
'hillary' => {
'ME' => {
'8' => 1
},
'CONCEPT_AS_GIVEN' => 'Hillary',
'CONCEPT_BASE' => 'hillary',
'TYPES' => {
'type_marker' => {
'NGRAM' => 1
},
'human_nature' => {
'PERSON' => 1
}
},
'VALENCE_HH' => {
'LAMBDA' => '29.3707558220325',
'BLI' => '1.85637293777104e-05',
'WP' => '1.10809794620763e-10',
'HH' => '0.000174095460703142',
'WE' => '1.01241183202824e-07',
'EMI' => '0.000174095460703142',
'IDF' => '24.4047821320418',
'SCALED_COUNT' => '1.4142135623731'
},
'POS' => 'NNP'
}
},
'phrase' => 'hillary',
'phrase_pos' => 'NNP'
},
'4' => {
# AUX-operator som stoppats in i VP bildande en verb-grupp. Kvarstår p.g.a. av programlogiken.
'PH' => '_STOP',
'HEAD' => {
}
},
'1' => {
'end_position' => 1,
'PH' => 'VP',
'start_position' => 1,
'phrase_true' => 'heard',
'HEAD' => {
'WORD_GIVEN' => 'heard',
'HH_TYPES' => {
'PROTO_VERB' => {
'_MODAL_INFORMATION' => 1,
'_STATE_VERB' => 1,
'_MODAL_PCU' => 2
},
'TRANS' => {
# Typerna är egentligen ner-informerade från data The Specialist Lexicon (National Institute of Health) ger i tense information och fungerar som indikationer om vad som kan hämtas där rörande verb-argumenten (gör ganska lite - ingenting egentligen mer än grund-kategorier adverb m.m., tense och sub- men alltid rätt och vad jag nog oftast i området mer regelbundet över åren återvänder till: Bra funktionell datastruktur dessutom: CSV).
'CPLXTRAN' => 1, # Realiserad CLAUSE_VERB_COMP
'ARG_COUNT' => 2, # Subjekt och complex transitivity med verb.
'INTRAN' => 0, # Ej realiserad som definierad.
'TRAN' => 0 # Ej realiserad som definierad.
},
'CL' => {
# Högnivå typ härledd från gramamtik och allmän vetskap verb m.m. Uttrycker en världsbild från subjekt till
# _PCU_HEAD d.v.s. heard i den mening att "Bill heard". Där "verb 2" ger oss själva världsbilden tillsammans
# med dess argument. PCU = Perception (heard) - Cognition ( "Bill beliefs that Hillary will run for president" ),
# Utterancy ( "Bill heard that Hillary might come to run against Jeb Bush in the election." ).
'_HAS_VERB_2' => '5',
'_PCU_HEAD' => 1,
'_PCU_MIDDLE' => 'that',
'_PCU_HEAD__HAS_VERB_2' => '5'
},
'V' => {
'_TRAN' => 8, # Viktning för typ av "transitivity" (eller vad det vanligen kallas). Inkl.
# viss hantering av verb som för mig tycks ha fler argument än annars diskuterat
# (en definitions fråga kanske): Penning-transferering och handel ev. endast (de jag
# sett): "Boy-toy Hans "mistress" bought *him* *the house in Stockholm *for 100 million*."
# Mannerative i någon mening även om det känns en aning annorlunda med "for cash":
# Jfr beneciary vilket vi ju också kan se som en mannerative dimension relaterad dimension
# och värde-spridning. Ej riktigt (inte alltid i alla fall) manner i hur vi gör det
# fysiskt kanske men väl betydelsefullt praktiskt för vad verb:et innebär.
'_PAST' => 1 # Saknas lokala "aux" och "md" operatorer är detta härlett *endast* från heard medan
# samspel efterföljande verb rörande ex. imperfective, perfective m.m. hanteras ovanpå
# beroende av frihet vid punkten där vi "imploderar" världsbild av talande jfr händelsen
# för att ta ut vikter och dimensioner.
}
},
'VALENCE_HH' => {
# Diverse vikter som sätts tidigt men egentligen inte längre används. Praktiska att ha kvar för manuella kontroller.
# Även om IDF vikter nu använda är framtagna riktat för nyhetstitlar från endast nyhetstitlar som indata (cirka i
# en mindre pre-körning 50 GB men just nyhetstitlar såväl som titlar forskning och government data finns *försvarliga*
# mängder av - för att inte tala om titlar websidor vilka dock kan ge lite oförutsedda "Wikipedia IDF-effekter" om man
# inte är oförsiktig i filtrering).
'WP' => '0.000375847068042446',
'BLI' => '0.0593952801874406',
'HH' => '0.511927612425699',
'EMI' => '0.511927612425699',
'WE' => '0.11813802909792',
'IDF' => '6.0609820328783'
},
'ARGUMENT' => {
'NP_SUBJECT' => {
'PH' => '0',
'LEFT' => 1,
'RAW' => 'NP_SUBJECT(heard, Bill)'
},
'CLAUSE_VERB_COMP' => {
'PH' => '5',
'LEFT' => 1,
'RAW' => 'CLAUSE_VERB_COMP(heard, attacking)'
}
},
'WORD_BASE' => 'hear',
'POS' => 'VBD'
},
'CH' => {
'0' => {
'WORD_GIVEN' => 'heard',
'CHUNK' => 'B_VP',
'pos' => 1,
'WORD_BASE' => 'hear',
'POS' => 'VBD'
}
},
'CH_NUM' => 1,
'ngram' => {
'heard' => {
'ME' => {
'1' => 1
},
'CONCEPT_AS_GIVEN' => 'heard',
'CONCEPT_BASE' => 'hear',
'TYPES' => {
'type_marker' => {
'NGRAM' => 1
},
'human_nature' => {
'ACTIVE' => 1,
'POWER' => 1
},
'noun_properties' => {
'PROM_ALBUM' => 1
}
},
'HH_TYPE' => {
'VERB' => 1
},
'VALENCE_HH' => {
'BLI' => '0.0593952801874406',
'WP' => '0.000375847068042446',
'HH' => '0.511927612425699',
'WE' => '0.11813802909792',
'EMI' => '0.511927612425699',
'IDF' => '6.0609820328783'
},
'POS' => 'VBD'
}
},
'phrase' => 'hear',
'phrase_pos' => 'VBD'
},
'3' => {
'end_position' => 5,
'PH' => 'NP',
'start_position' => 3,
'phrase_true' => 'the tank destroyer',
'HEAD' => {
'HH_OPERATORS' => {
'DT' => 'THE'
},
'ARGUMENT' => {
'NP_SUBJECT' => {
'PH' => '5',
'RIGHT' => 1,
'RAW' => 'NP_SUBJECT(attacking, destroyer)'
},
'NN' => {
'PH' => '3',
'LEFT' => 1,
'RAW' => 'NN(destroyer, tank)'
},
# Operator determiner. I den mån DT ej ingår i ett ngram detekterat "större" än sig själv raderas DT från de
# identifierade möjliga ngram:en. Och placeras istället i HH_OPERATORS.
'DT' => {
'PH' => '3',
'LEFT' => 1,
'RAW' => 'DT(destroyer, the)'
}
}
},
'CH' => {
# Respektive ord i "frasen" / "verb-gruppen" / "chunk". WORD_BASE kan vara modifierat (ex. till lower cause bl.a. därför att delar
# av viktsystemen förväntar eller bättre uttryckt vinner på mer "core-typer" medan andra som IDF ibland ej gör det).
'1' => {
'WORD_GIVEN' => 'tank',
'CHUNK' => 'I_NP',
'pos' => 4,
'WORD_BASE' => 'tank',
'POS' => 'NN'
},
'0' => {
'WORD_GIVEN' => 'the',
'CHUNK' => 'B_NP',
'pos' => 3,
'WORD_BASE' => 'the',
'POS' => 'DT'
},
'2' => {
'WORD_GIVEN' => 'destroyer',
'CHUNK' => 'I_NP',
'pos' => 5,
'WORD_BASE' => 'destroyer',
'POS' => 'NN'
}
},
'CH_NUM' => 3,
'ngram' => {
# Samtliga detekterade ngram. För många beräkningar väljs det koncept som har mest tilltalande entropi och / eller IDF-vikt
# (det senare är praktiskt snabbare när man nu har IDF-vikter för ca 20 miljoner flergram och tycks ge samma resultat).
# Att kasta övriga detekterade ngram om de är koncept tycks dumt. Tänker vi oss ex. kanske tydligast sökning gäller ju att
# "destroyer" mycket väl kan vara en sökning med föga annat för aktuell tid, plats o.s.v. och givet att vi nu hanterar flergram
# (tank destroyer) snarare än bara ord är de praktiskt snabbare att spara och beräkna ut vikter för. Söker man inte på "tank destroyer"
# så stör den ju inte.
'destroyer' => {
'CONCEPT_AS_GIVEN' => 'destroyer',
'CONCEPT_BASE' => 'destroyer',
'HH_TYPE' => {
'NOUN' => 1
},
'ME' => {
'5' => 1
},
'TYPES' => {
'type_marker' => {
'NGRAM' => 1
},
'human_nature' => {
'POWER_NEWS' => 1, # Weapon effect m.m. via "dum-kategorier" som
# vikter när körande beräknas till (nuvarande är
# slutar med nyheter 2012 så jag sätter allt till 1 istället).
'HUMAN_NATURE_TOOLS' => 1, # Båt är ett verktyg, synål också, en algoritm är ett verktyg o.s.v.
'DANGER' => 1, # Farligt.
'ACTIVE' => 1, # Det händer saker när en destroyer kommer även om den inte skjuter.
'POWER' => 1, # Projiserar makt i situationen.
'TOOLS' => 1
},
'noun_properties' => {
# Samma som föregående men från ett annat system (ovanpå Wordnet m.m. för jämförelse och pröva). Används ej.
'N_AGENTATIVE_CAUSAL_AGENT' => 1,
'N_TOOL' => 1,
'C_ARTIFACT' => 1,
'C_MILITARY' => 1,
'N_PHYSICAL_ENTITY' => 1,
'C_NAUTICAL' => 1,
'N_ARTIFACT' => 1,
'N_ANIMATE' => 1,
'N_CONCRETE' => 1,
'N_COUNT' => 1,
'C_PERSON' => 1
}
},
'NOT_ME' => {
# Ord som ej ingår i ngram. Praktiskt när vi ex. projiserar påverkar emotionell intensitet m.m. från adjektiv m.m. till ngram omv i ej önskar projisera
# sådan effekt om dessa faktiskt ingår i ngram. Ex. en entitet som heter "green Mama".
'4' => 1,
'3' => 1
},
'VALENCE_HH' => {
# Diverse av de vikttyper som används. Just som satta här endast för att läsa och av och till (som idf några generationer efter).
'BLI' => '0.010770903762987', # Bluelight intensity. Ganska högt för en icke-politisk enhet, eller mer i varianter kategori-artat koncept.
'WP' => '2.32257322056041e-06', # Viktat probability (jfr cirka 20 miljoner flergram).
'HH' => '0.000167973616381427', # Funktion av WP, WE och EMI.
'WE' => '0.00120090321990928', # Viktad entropi-mått.
'EMI' => '0.000167973616381427', # Emotionell intensitet. Används endast egentligen för verb, adjektiv och adverb i "enkel mening" motsvarande HH.
'IDF' => '12.1816504899042', # Gammal IDF från mycket större corpus än nyhetstitlar (och mycket sämre än IDF härledd endast från nyhetstitlar).
},
'POS' => 'NN'
},
'tank' => {
'CONCEPT_AS_GIVEN' => 'tank',
'CONCEPT_BASE' => 'tank',
'HH_TYPE' => {
'NOUN' => 1,
'VERB' => 1
},
'ME' => {
'4' => 1
},
'TYPES' => {
'type_marker' => {
'NGRAM' => 1
},
'human_nature' => {
'WEAPONS' => 1,
'HUMAN_NATURE_TXOOLS' => 1, # TXOOLS indikerar antagligen något system jag prövat och givet en gen indikation jag tycks ha glömt bort (jag såg den någonstans i övrigt också men editerade det rätt där).
'DANGER' => 1,
'ACTIVE' => 1,
'TOOLS' => 1
},
'noun_properties' => {
'N_TOOL' => 1,
'N_ABSTRACT' => 1,
'C_FACTOTUM' => 1,
'C_MILITARY' => 1,
'N_PHYSICAL_ENTITY' => 1,
'C_TRANSPORT' => 1,
'N_ARTIFACT' => 1,
'N_CONCRETE' => 1,
'N_COUNT' => 1
}
},
'NOT_ME' => {
'3' => 1,
'5' => 1
},
'VALENCE_HH' => {
'LAMBDA' => '10.121083523761',
'BLI' => '0.0346619332458489',
'WP' => '6.41390074653817e-05',
'HH' => '0.503579521068032',
'WE' => '0.0246804930395017',
'EMI' => '0.503579521068032',
'IDF' => '7.6256833901337',
'SCALED_COUNT' => '1.4142135623731'
},
'POS' => 'NN'
},
'tank destroyer' => {
'ME' => {
'4' => 1,
'5' => 1
},
'CONCEPT_AS_GIVEN' => 'tank destroyer',
'CONCEPT_BASE' => 'tank destroyer',
'TYPES' => {
'type_marker' => {
'NGRAM' => 1
},
'human_nature' => {
'WEAPONS' => 1,
'DANGER' => 1
},
'noun_properties' => {
'C_TRANSPORT' => 1
}
},
'NOT_ME' => {
'3' => 1
},
'VALENCE_HH' => {
'LAMBDA' => '22.6285737033206',
'BLI' => '0.000503088001004535',
'WP' => '1.10152033886457e-08',
'HH' => '0.00579202765547812',
'WE' => '8.04481864441989e-06',
'EMI' => '1.54456392015009e-05',
'IDF' => '19.2047355153611',
'SCALED_COUNT' => '1.4142135623731'
},
'POS' => 'NN VBD'
}
},
'phrase' => 'the tank destroyer',
'phrase_pos' => 'DT NN NN'
},
'0' => {
'end_position' => 0,
'PH' => 'NP',
'start_position' => 0,
'phrase_true' => 'Bill',
'HEAD' => {
'ARGUMENT' => {
'NP_SUBJECT' => {
'PH' => '1',
'RIGHT' => 1,
'RAW' => 'NP_SUBJECT(heard, Bill)'
},
}
},
'CH' => {
'0' => {
'WORD_GIVEN' => 'Bill',
'CHUNK' => 'B_NP',
'pos' => 0,
'WORD_BASE' => 'bill',
'POS' => 'NNP'
}
},
'CH_NUM' => 0,
'ngram' => {
'bill' => {
'ME' => {
'0' => 1
},
'CONCEPT_AS_GIVEN' => 'Bill',
'CONCEPT_BASE' => 'bill',
'TYPES' => {
'type_marker' => {
'NGRAM' => 1
},
'human_nature' => {
'HUMAN' => 1,
'DANGER' => 1,
'ACTIVE' => 1,
'POWER' => 1,
'TOOLS' => 1
},
'noun_properties' => {
[BORT-TAGET]
}
},
'HH_TYPE' => {
'NOUN' => 1,
'VERB' => 1
},
'VALENCE_HH' => {
'LAMBDA' => '20.8820662336034',
'BLI' => '0.0439001009558573',
'WP' => '2.38824892163046e-07',
'HH' => '0.514465422090061',
'WE' => '0.000145138603998346',
'EMI' => '0.514465422090061',
'IDF' => '5.8013756873731',
'SCALED_COUNT' => '3.46410161513775'
},
'POS' => 'NNP'
}
},
'phrase' => 'bill',
'phrase_pos' => 'NNP'
},
'2' => {
'end_position' => 2,
'PH' => 'PP',
'start_position' => 2,
'phrase_true' => 'that',
'HEAD' => {
'ARGUMENT' => {
'CLAUSE_THAT_HOW_DISTANCE_MARKER_COMP' => {
'PH' => '5',
'RIGHT' => 1,
'RAW' => 'CLAUSE_THAT_HOW_DISTANCE_MARKER_COMP(attacking, that)'
}
}
},
'CH' => {
'0' => {
'WORD_GIVEN' => 'that',
'CHUNK' => 'B_PP',
'pos' => 2,
'WORD_BASE' => 'that',
'POS' => 'IN'
}
},
'CH_NUM' => 2,
'ngram' => {
'that' => {
'ME' => {
'2' => 1
},
'CONCEPT_AS_GIVEN' => 'that',
'CONCEPT_BASE' => 'that',
'TYPES' => {
'type_marker' => {
'NGRAM' => 1
},
'human_nature' => {
[Borttaget]
},
'noun_properties' => {
[Borttaget]
}
},
'VALENCE_HH' => {
'LAMBDA' => '16.2840339446254',
'BLI' => '5.29978934473552e-05',
'WP' => '9.63993221190068e-07',
'HH' => 0,
'WE' => '0.000532225724160357',
'EMI' => 0,
'IDF' => '9.6845518262135',
'SCALED_COUNT' => '1.4142135623731'
},
'POS' => 'IN'
}
},
'phrase' => 'that',
'phrase_pos' => 'IN'
},
'5' => {
'end_position' => 7,
'PH' => 'VP',
'start_position' => 7,
'phrase_true' => 'attacking',
'HEAD' => {
'HH_TYPES' => {
'PROTO_VERB' => {
'_VERB_PROPERTY__HUMAN_VIOLENCE' => 2,
'_MANIPULATION' => 1
},
'TRANS' => {
'ARG_COUNT' => 3,
'INTRAN' => 0, # Ej realiserad *som definierad*..
'TRAN' => 0 # Ej realiserad som definierad.
},
'CL' => {
'_PCU_VERB_2' => 1
},
'V' => {
# Progressive avser när verb betraktas UTAN HÄNSYN HH_OPERATORS.
# _PAST_PROGRESSIVE när operatorerna använts "was attacking".
# Och imperfective är definierad till en kategori bl.a. inkluderande past progressive.
'_PAST_PROGESSIVE' => 1,
'_PROGESSIVE' => 1,
'_IMPERFECTIVE' => 1,
}
},
'WORD_GIVEN' => 'attacking',
'HH_OPERATORS' => {
'AUX' => {
'was' => {
'_ACTIVE' => 1, # Ej passiv.
'end_position' => 6,
'start_position' => 6,
'ARGUMENT' => {
'AUX' => {
'PH' => '5',
'RIGHT' => 1,
'RAW' => 'AUX(attacking, was)'
}
},
'phrase_pos' => 'VBD'
}
}
},
'VALENCE_HH' => {
'WP' => '0.000298256136957894',
'BLI' => '0.0413263690641225',
'HH' => '0.765989109703756',
'EMI' => '0.765989109703756',
'WE' => '0.0964980396099565',
'IDF' => '6.1371324495446'
},
'ARGUMENT' => {
'NP_SUBJECT' => {
'PH' => '3',
'LEFT' => 1,
'RAW' => 'NP_SUBJECT(attacking, boat)'
},
'AUX' => {
'PH' => '4',
'LEFT' => 1,
'RAW' => 'AUX(attacking, was)'
},
'CLAUSE_THAT_HOW_DISTANCE_MARKER_COMP' => {
'PH' => '2',
'LEFT' => 1,
'RAW' => 'CLAUSE_THAT_HOW_DISTANCE_MARKER_COMP(attacking, that)'
},
'DIRECT_OBJECT' => {
'PH' => '6',
'LEFT' => 1,
'RAW' => 'DIRECT_OBJECT(attacking, Hillary)'
},
'CLAUSE_VERB_COMP' => {
'PH' => '1',
'RIGHT' => 1,
'RAW' => 'CLAUSE_VERB_COMP(heard, attacking)'
}
},
'WORD_BASE' => 'attack',
'POS' => 'VBG'
},
'CH' => {
'0' => {
'WORD_GIVEN' => 'attacking',
'CHUNK' => 'B_VP',
'pos' => 7,
'WORD_BASE' => 'attack',
'POS' => 'VBG'
}
},
'CH_NUM' => 5,
'ngram' => {
'attacking' => {
'ME' => {
'7' => 1
},
'CONCEPT_AS_GIVEN' => 'attacking',
'CONCEPT_BASE' => 'attack',
'TYPES' => {
'packs' => {
'__ATTACK' => 0,
'__HOSTILE_EVENT' => 0
},
'type_marker' => {
'NGRAM' => 1
},
'human_nature' => {
'DANGER' => 1,
'UP' => 1,
'ACTIVE' => 1,
'POWER' => 1,
'NEGATIV' => 1
},
'noun_properties' => {
'N_MASS' => 1, # Har att göra med hur man "räknar" attacking om det är en "noun-event":
'C_ACT' => 1,
'N_ABSTRACT' => 1,
'C_FACTOTUM' => 1,
'N_CONCRETE' => 1,
}
},
'HH_TYPE' => {
'VERB' => 1
},
'VALENCE_HH' => {
'BLI' => '0.0413263690641225',
'WP' => '0.000298256136957894',
'HH' => '0.765989109703756',
'WE' => '0.0964980396099565',
'EMI' => '0.765989109703756',
'IDF' => '6.1371324495446'
},
'POS' => 'VBG'
}
},
'phrase' => 'attack',
'phrase_pos' => 'VBG'
}
};
$VAR3 = 'SENTENSE';
$VAR4 = {
'CH' => {
'6' => {
'IN_PHRASE' => {
'4' => {
'_WITH_WORD' => 'was',
'ngram' => {
'was' => 1
}
}
}
},
'3' => {
'IN_PHRASE' => {
'3' => {
'_WITH_WORD' => 'the',
'ngram' => {
'the' => 1
}
}
}
},
'7' => {
'IN_PHRASE' => {
'5' => {
'_WITH_WORD' => 'attacking',
'ngram' => {
'attacking' => 1
}
}
}
},
'2' => {
'IN_PHRASE' => {
'2' => {
'_WITH_WORD' => 'that',
'ngram' => {
'that' => 1
}
}
}
},
'8' => {
'IN_PHRASE' => {
'6' => {
'_WITH_WORD' => 'Hillary',
'ngram' => {
'hillary' => 1
}
}
}
},
'1' => {
'IN_PHRASE' => {
'1' => {
'_WITH_WORD' => 'heard',
'ngram' => {
'heard' => 1
}
}
}
},
'4' => {
'IN_PHRASE' => {
'3' => {
'_WITH_WORD' => 'gun',
'ngram' => {
'gun' => 1
}
}
}
},
'0' => {
'IN_PHRASE' => {
'0' => {
'_WITH_WORD' => 'Bill',
'ngram' => {
'bill' => 1
}
}
}
},
'-1' => {
'IN_PHRASE' => {} # Defekt gissar vi. Auto-skapat när något icke-existerat refererats.
},
'5' => {
'IN_PHRASE' => {
'3' => {
'_WITH_WORD' => 'boat',
'ngram' => {
'boat' => 1
}
}
}
}
}
};
$VAR5 = 'META';
$VAR6 = {
'ID' => 'ID',
'TITLE_TOKENIZED' => 'Bill heard that the [Korrigerar till tank destroyer: Körde en variant med tank destroyer men hade tagit in delar från gun boat redan]. gun boat was attacking Hillary',
'NEWS_PRODUCER' => 'HANS',
'TRUST_LEVEL' => '1',
'TAGS' => {
'Nothing here' => 1
},
'TIMESTAMP' => '_UNDEF',
'IMPORT_METHOD' => 'news_import',
# Avser PP-operatorer vi kan sätta utanför själva informationen (d.v.s. nyheten). Ex. om vi från andra nyheter om pågående nyhetshändelser vet bättre var det hela
# geografiskt pågår.
'PP_META' => ''
[Diverse borttaget här och lite varstans från META]