NL9300310A - Inrichting en werkwijze voor syntactische signaal-analyse. - Google Patents

Inrichting en werkwijze voor syntactische signaal-analyse. Download PDF

Info

Publication number
NL9300310A
NL9300310A NL9300310A NL9300310A NL9300310A NL 9300310 A NL9300310 A NL 9300310A NL 9300310 A NL9300310 A NL 9300310A NL 9300310 A NL9300310 A NL 9300310A NL 9300310 A NL9300310 A NL 9300310A
Authority
NL
Netherlands
Prior art keywords
feature
current
declared
routine
primitives
Prior art date
Application number
NL9300310A
Other languages
English (en)
Original Assignee
Oce Nederland Bv
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oce Nederland Bv filed Critical Oce Nederland Bv
Priority to NL9300310A priority Critical patent/NL9300310A/nl
Priority to EP93200893A priority patent/EP0612018B1/en
Priority to DE69331044T priority patent/DE69331044T2/de
Priority to TW082106458A priority patent/TW308659B/zh
Priority to JP6016559A priority patent/JP2723462B2/ja
Publication of NL9300310A publication Critical patent/NL9300310A/nl
Priority to US08/562,787 priority patent/US5550934A/en
Priority to US08/674,732 priority patent/US5784489A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/18Extraction of features or characteristics of the image
    • G06V30/18162Extraction of features or characteristics of the image related to a structural representation of the pattern
    • G06V30/18171Syntactic representation, e.g. using a grammatical approach
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/196Recognition using electronic means using sequential comparisons of the image signals with a plurality of references
    • G06V30/1983Syntactic or structural pattern recognition, e.g. symbolic string recognition
    • G06V30/1985Syntactic analysis, e.g. using a grammatical approach
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Character Discrimination (AREA)
  • Machine Translation (AREA)

Description

Inrichting en werkwijze voor syntactische signaal-analyse ACHTERGROND VAN DE UITVINDING Gebied van de uitvinding
De uitvinding heeft betrekking op een inrichting voor syntactische signaalanalyse omvattende een conversie-eenheid voor het converteren van een ingangssignaal in primitieven en met de primitieven corresponderende genormaliseerde primitieven, een met de conversie-eenheid verbonden patroonherkennings-eenheid voor het opleveren van een syntactische analyse van telkens een reeks van genormaliseerde primitieven aan de hand van een grammatica, en een geheugen-eenheid voor het opslaan van de grammatica, welke grammatica in herschrijfregels geordende termen, mede omvattende met genormaliseerde primitieven corresponderende terminals, omvat; de uitvinding heeft mede betrekking op een werkwijze voor syntactische signaal-analyse, op een werkwijze voor het coderen van features alsmede op een werkwijze voor het omzetten van een door een optische aftaster verkregen regels tekst representerend pixelpatroon in een reeks van voor patroonherkenning geschikte primitieven en features. Beschrijving van de stand techniek
In een groot aantal technische gebieden worden signalen verwerkt Echter als gevolg van verschillende redenen zijn deze signalen soms verminkt. In de meeste gevallen is het voordelig om over de niet verminkte signalen te kunnen beschikken.
Als het vooraf bekend is dat de niet verminkte signalen aan bepaalde regels moeten voldoen, is het mogelijk te controleren of de beschikbare signalen inderdaad aan deze regels voldoen, en, indien dit niet het geval blijkt te zijn, deze signalen te verwerpen ofte corrigeren.
Een in het vakgebied bekende techniek voor het controleren of signalen voldoen aan bepaalde regels is de syntactische methode of de parserings techniek. Vooreen introductie hierop zie respectievelijk "Digital Pattern Recognition", Springer-Verlag (1980), door K.S. Fu (samensteller), p.95-134, en "Digital image processing",
John Wiley& Sons (1978), doorW.K. Pratt, p.574-578.
Bij deze methode wordt het signaal allereerst gesegmenteerd in primitieve elementen. Deze primitieve elementen, in het vervolg nader aan te duiden met primitieven, worden vervolgens geklassificeerd en vervangen door een genormaliseerde primitieve. Zo een genormaliseerde primitieve is een prototype van een bepaalde klasse of categorie. Vervolgens wordt gecontroleerd of een aldus verkregen reeks van genormaliseerde primitieven voldoet aan een grammatica. Een grammatica omvat een aantal regels, ook wel herschrijf- of productie-regels genoemd, welke elk bestaan uit een aantal termen, zijnde terminals of non-terminals, en welke elk een manier waarop een samenstel van termen herschreven mag worden tot een non-terminal vastleggen. Bovendien definieert de grammatica een startsymbool. Het startsymbool is een non-terminal. De gedefinieerde klassen of categorieën en dientengevolge de genormaliseerde primitieven corresponderen een op een met de terminals uit de grammatica.
Een bottom-up parsing procedure bestaat uit het netzo lang toepassen van geschikte herschrijfregels op een reeks van genormaliseerde primitieven en op tussentijds verkregen herschrijfresultaten totdat het startsymbool verkregen wordt. Het toepassen van herschrijfregels betekent telkens het samenvoegen van eenvoudiger termen tot complexere termen en resulteert tenslotte in een hiërarchische compositie van het signaal in de vorm van een boomstructuur, ook wel parseerboom, oplossingsboom of analyse genoemd, met aan de wortel het startsymbool, aan de bladen de genormaliseerde primitieven en aan de tussenliggende knooppunten de non-terminals van de toegepaste herschrijfregels. De grammatica definieert alle dergelijke hiërarchische composities welke toegestaan zijn.
Is op een zeker moment in de parsing procedure geen herschrijfregel meer toe te passen terwijl het startsymbool nog niet gevonden is dan voldoet het signaal niet aan de grammatica en wordt het signaal verworpen. De mogelijkheid bestaat dan een of meer primitieven of genormaliseerde primitieven zodanig aan te passen, dat wel voldaan wordt aan de regels in de grammatica: het signaal is dan gecorrigeerd. Een dergelijke correctie-methode wordt getoond in "Digital Image Processing" door W.Pratt, p.571, fig. 20.2-3.
Levert de parsing procedure inderdaad het startsymbool op dan voldoet het signaal aan de gestelde regels en bezit het een van de toegestane hiërarchische composities. In het geval alleen verificatie van het signaal nodig is is het gegeven dat het startsymbool bereikt is voldoende om te kunnen constateren dat het signaal aan de regels voldoet. In het geval ook herkenning van het signaal doel is van de inrichting zijn de te herkennen items direkt af te leiden uit de opgeleverde analyse: een te herkennen item wordt gerepresenteerd door het non-terminal-symbool dat de root is van een subboom welke correspondeert met het te herkennen item.
Is een signaal op een dergelijke manier omgezet in een reeks van herkende symbolen dan is het mogelijk de verkregen symbolen, indien nodig na enkele tussenbewerkingen, te onderwerpen aan een volgende parseringsstap, waarbij gecontroleerd wordt of de reeks van herkende symbolen voldoen aan een ander stelsel van regels. Dit kan weer tot aanpassing van de symbolen leiden, hetgeen weer tot aanpassing van het signaal kan leiden. Ook is het mogelijk dat deze parseringsstap weer een structurele beschrijving oplevert, waarmee verder gewerkt wordt.
Verschillende typen parsers zijn bekend. Een zogeheten robuuste parser, dit is een parser die ook signalen kan verwerken welke niet voldoen aan de regels in de grammatica, tezamen met een met de parser samenwerkend correctie mechanisme is beschreven in EP-A-0361570.
In "Efficiënt parsing for natural language", Kluwer Academie Publishers (1986), beschrijft M.Tomita een zogeheten ‘Generalized LR-parser'. Deze parserings techniek is gebaseerd op de LR (Left-to-right Rightmost) parserings techniek, een alom in het vakgebied bekende techniek, door Knuth geïntroduceerd in 1965. Tomita breidde deze LR-techniek uit door deze geschikt te maken voor ambigue invoer: de parser is in dat geval in staat om meer dan een structurele beschrijving te geven voor zo een invoer. Een voorbeeld van ambigue input in natuurlijke taal is de invoerzin: 'He saw a man with a telescope', waarbij het zinsdeel 'with a telescope' zowel een werkwoordelijke bepaling kan zijn bij het werkwoord 'saw', alswel een bijvoeglijke bepaling bij het zelfstandige naamwoord 'man'. De GLR-parser is op dit moment een van de snelste en meest efficiënte parseringstechnieken.
Toepassingsgebieden
Er is een veelvoud van technische gebieden waarop de parseringstechniek voor het — *
controleren en corrigeren van signalen toepasbaar is. J
Optische karakter-herkenningssystemen zijn systemen die tot taak hebben tekst met behulp van een optische aftaster in te lezen en om te zetten in een voor een computer verwerkbare vorm. Het electrische signaal dat de optische aftaster levert wordt gedrempeld en in een pixelpatroon in een geheugen opgeslagen. Dit pixelpatroonzal geen nauwkeurige afbeelding van het origineel zijn, dit bijvoorbeeld tengevolge van onnauwkeurigheden van het optisch systeem, belichtings-onegaliteiten, of afrondingsfouten bij het drempelen. Ook is het mogelijk dat het af te tasten origineel van een slechte kwaliteit is, dat karakters aangevreten zijn, verminkt zijn, of dat het handgeschreven karakters betreft. Bekend is echter dat het verkregen signaal karakters moet representeren. Van deze kennis kan gebruik gemaakt worden door een parser te laten controleren of het pixelpatroon inderdaad structuren vertoont welke karakters representeren. Het is hiertoe nodig dat het pixelpatroon omgezet wordt in een serie van primitieven en genormaliseerde primitieven, welke genormaliseerde primitieven direct corresponderen met terminals uit de grammatica, waarna de terminals getoetst worden aan de herschrijfregels van de grammatica. In "Digital Pattern Recognition" van K.S. Fu (samensteller) worden op p. 103 primitieven gegeven voor handgeschreven engelse karakters en geeft p.110 en verder een aantal grammatica's welke bepaalde patronen beschrijven.
Een volgend toepassingsgebied is het gebied van object herkenning. Als slechts een klein aantal objecten herkend hoeft te worden is het mogelijk het invoersignaal, afkomstig van een opnemer, te vergelijken met alle toegestane objecten en te beslissen welk object het best overeenkomt met het invoersignaal. Echter gaat het om een groot aantal objecten dan is het voordeliger om elk object te beschrijven als een samenstel van primitieve elementen. Deze beschrijvingsregels vormen de grammatica. Een invoersignaal wordt gesegmenteerd in de primitieve elementen en vervolgens controleert een parser of aan de regels van de grammatica is voldaan en levert het parserings proces als uitkomst op welk object overeenstemt met de gevonden structuur. In "Digital Pattern Recognition" van K.S.Fu (samensteller) wordt o.a. op p. 113 een grammatica beschreven voor het herkennen van chromosomen.
Ook bij spraakherkenning kan met voordeel gebruik gemaakt worden van de syntactische methode. In "Digital Pattern Recognition" door K.S.Fu (samensteller) wordt op p.177 een voorbeeld vermeld voor een spraakherkenningssyteem. In deze inrichting wordteen acoustische processor gevolgd dooreen linguïstische processor. De acoustische processor levert na een aantal bewerkingen een reeks van fonemen. Deze reeks van fonemen wordt aan de linguïstische processor toegevoerd, welke, o.a. op basis van syntactische regels, de reeks van fonemen omzet in een reeks woorden.
Een ander voorbeeld van een technisch gebied waarop parseringstechnieken voor het controleren en corrigeren van signalen toepasbaar is is het gebied van 'natural language interface' systemen. Een dergelijk systeem is erop gericht een mens te ondersteunen bij zijn interactie met een computersysteem. Dit is bijvoorbeeld van het grootste belang voor het door leken laten raadplegen van een database. Een dergelijk 'natural language interface' moet het de gebruiker toestaan complexe vraagstellingen in natuurlijke taal te formuleren. Door de gebruiker ingevoerde zinnen, geformuleerd in natuurlijke taal, worden door een parser geanalyseerd en leveren dan een aantal vraagstellingen op in een vorm, welke geschikt is om aan de database toe te voeren. In het leerboek van M.Wallace: "Communicating with databases in Natural Language", Wiley & Sons Ine. (1984), wordt een dergelijk systeem besproken.
In de aanvrage EP-A-0 513 918 wordt een spellings-checking systeem beschreven. Het gebruik van een parser voor deze toepassing maakt dergelijke spellings-checking systemen veelzijdiger en nauwkeuriger: niet alleen een geïsoleerd woord wordt gecontroleerd, maar ook de verbuigingen van de woorden en de syntax van de zin worden gecontroleerd. Hierdoor wordt het aantal mogelijke alternatieven voor een verkeerd gespeld woord zeer sterk gereduceerd.
Hiernaast is een parser uit de aard der zaak ook een geschikt instrument om gebruikt te worden als grammatica checker voor een natuurlijke taal.
In machinale vertalingssystemen zijn parsers geschikt om de te vertalen zin te ontleden en om uit de vertaalde woorden met hun grammaticale functies een vertaalde zin te synthetiseren. Het gebruik van een parser in een dergelijke toepassing is te vinden in EP-A-0 357 344.
Ook is het mogelijk verminkte signalen afkomstig van een corrupt massa-opslag systeem of van een slecht communicatie-kanaal te reconstrueren met behulp van een parser, gegeven dat de signalen vooraf bekende regels gehoorzamen.
Een parser is ook met voordeel toe te passen voor indexeringssystemen. Doel van dit soort systemen is om een lijst van indexwoorden te maken op een verzameling teksten. Hiertoe worden met behulp van een parser zelfstandige naamwoorden en werkwoorden, teruggebracht tot een normaalvorm (bv. enkelvoud, respectievelijk infinitief), geëxtraheerd uit de teksten. Een dergelijk systeem wordt beschreven in het artikel van C.Berruten P.Palmer: "Solving grammatical ambiguities within a surface syntactical parser for automatic indexing", ACM conference on research and development in Information Retrieval (1986).
Uit het voorgaande moge duidelijk zijn dat de parseringstechniek van toepassing is op een groot aantal gebieden der techniek.
Feature unificatie
Een belangrijke verbetering van parseringstechnieken wordt verkregen door het toepassen van feature unificatie. Primitieven, waaruit het invoersignaal is opgebouwd, worden voor dit doel voorzien van features. Deze features specificeren een primitieve nader. De termen uit de grammatica-regels zijn voor dit doel eveneens voorzien van features. Gedurende het parseringsproces worden de features van de primitieven getoetst aan de features van de corresponderende termen in de grammatica regels. Eveneens kunnen de features doorgegeven worden aan termen welke dan weer verder in het parseringsproces getoetst kunnen worden aan een volgende van toepassing zijnde grammatica regel. Feature unificatie maakt het mogelijk complexere structueren te verwerken met parserings technieken.
Een voorbeeld van feature unificatie is beschreven in het artikel "The Generalized LR Parser/Compiler V8-4: A software package for practical NL projects", gepubliceerd in Proceedings of the Coling-90, Helsinki 1990, van M.Tomita. Echter een nadeel van de daar beschreven methode voor het uitvoeren van feature unificatie is de complexiteit van het verwerken van de features. Hoewel een parser op deze manier geschikt gemaakt kan worden voor het verwerken van complexere structuren, wordt aan de bruikbaarheid van de parseringsmethode voor praktische doeleinden sterk afbreuk gedaan doordat een groot aantal extra stappen aan de parseringswerkwijze toegevoegd moet worden. Samenvatting van de uitvinding
De uitvinding heeft als doel inrichtingen voor signaal-analyse geschikt voor de eerder beschreven toepassingsgebieden, te verbeteren door het toevoegen van een verbeterd en veelzijdiger gemaakt unificatie-mechanisme.
De uitvindingsgedachte berust primair op het inzicht dat het unificeren van features efficiënt te realiseren is door features groepsgewijs op te nemen in de grammatica en door vervolgens het unificeren op de feature-groepen te laten plaats vinden.
Het doel wordt overeenkomstig de uitvinding in een inrichting van de in de aanhef genoemde soort bereikt doordat de conversie-eenheid feature-extractie-middelen omvat voor het afleiden van features uit elke primitieve, voor het samenvoegen van de uit elke primitieve afgeleide features tot actuele feature-groepen en voor het toekennen van de actuele feature-groepen aan de met de primitieve corresponderende genormaliseerde primitieven, doordat de grammatica met de termen geassocieerde gedeclareerde feature-groepen omvat, en doordat de patroonherkennings-eenheid middelen omvat voor het unificeren van de actuele en gedeclareerde feature-groepen.
Verwerking van features bij unificatie kan nu aanzienlijk sneller geschieden aangezien de features niet meer separaat verwerkt behoeven te worden.
Een verdere voordelige uitvoering overeenkomstig de uitvinding is gekenmerkt doordat de patroonherkennings-eenheid middelen omvat voor het toekennen van een overtredingsscore aan de syntactische analyse op basis van het unificeren van de actuele en gedeclareerde feature-groepen.
Op deze wijze wordt de groepsgewijze verwerking van features uitgebreid met een overtredingsmechanisme, dat schendingen van de features registreert. Wordt door de parser een analyse opgeleverd, dan is het hierdoor mogelijk in de analyse aan te geven welke primitieven niet voldoen aan vereiste features.
Een verder verbeterde uitvoering overeenkomstig de uitvinding vertoont het kenmerk dat de inrichting middelen omvat voor het afbreken van het parseren indien de overtredingsscore een drempelwaarde overschrijdt, alsmede middelen om de drempelwaarde op te hogen indien de overtredingsscore de drempelwaarde overschrijdt en middelen om het parseren te herbeginnen.
Indien de overtredingsscore een bepaalde drempelwaarde overschrijdt wordt het parseren afgebroken. De drempelwaarde wordt nu verhoogd tot een waarde bepaald door de waarde van de overtredingsscore gesommeerd met een constante waarde. Het parseren begint dan opnieuw. Hierdoor wordt bereikt dat in een aantal parseer-slagen tenslotte een of meer analyses worden opgeleverd voorzien van een overtredingsscore. De opgeleverde analyses zijn juist die analyses met de laagst mogelijke overtredingsscore binnen een bepaalde marge. Door deze maatregelen wordteen adaptief drempelmechanisme gerealiseerd, waardoor de toepasbaarheid van het parserings-mechanisme voor signaal-analyse aanzienlijk wordt vergroot. Schendingen van de features, worden in een naar believen in te stellen mate, toegestaan. Te analyseren signalen mogen afwijken van de grammatica-regels om toch geanalyseerd en eventueel gecorrigeerd te kunnen worden. De mate, waarin afwijkingen door de inrichting worden getolereerd, is aanpasbaar aan het doel van de inrichting. Het parseringsmechanisme, dat naar zijn wezenlijke aard rigide is, is door deze maatregelen zeer flexibel geworden.
Een verdere verbetering van de inrichting volgens de uitvinding wordt verkregen doordat, de inrichting correctie-middelen omvat, welke geactiveerd worden indien de overtredingsscore ongelijk nul is.
Deze correctie-stap kan met voordeel gebruik maken van de in de analyse aangegeven schendingen.
Een volgende verbetering van de inrichting volgens de uitvinding wordt verkregen doordat feature-groepen gerepresenteerd wordt door een binair getal. Door feature-groepen binair te coderen wordt een uitermate snelle verwerking en een compacte opslag gerealiseerd.
Korte beschrijving van de figuren
De uitvinding zal nu nader toegelicht worden aan de hand van een aantal figuren, waarvan: Fïg. 1 een blokschema weergeeft van een inrichting volgens de uitvinding;
Fig.2 een flowdiagram toont van een hoofdroutine van een parseer-eenheid; φ
Fig.3 een flowdiagram toont van een parseer-routine;
Fig.4 een flowdiagram toont van een actor-routine;
Fig.5 een flowdiagram toont van een shift-routine;
Fig.6 een flowdiagram toont van een reduceer-routine;
Fig. 7 een flowdiagram toont van een unificeer-routine;
Fig.8 een flowdiagram toont van een werkwijze voor het omzetten van een pixelpatroon in een reeks van primitieven;
Fign.9a-9d definities tonen van terminals en features geschikt voor toepassing op het gebied van karakterherkenning, alsmede een reeks van primitieven.
Fig. 10 een reeks van primitieven toont; en
Fig. 11 een flowdiagram toont van een werkwijze voor het afleiden van een stelsel van feature-indicatoren.
Beschrijving van de uitvoeringsvormen
In Fig. 1 wordteen inrichting volgens de uitvinding getoond. Een te analyseren signaal S wordt toegevoerd aan een conversie-eenheid 101. De conversie-eenheid zet het signaal S om in een stroom van primitieven P en in een stroom L van genormaliseerde primitieven en actuele feature-groepen. Deze gelexicaliseerde stroom L wordt, indien nodig in combinatie met de primitievenstroom P, toegevoerd aan de parseer-eenheid 102. De parseer-eenheid 102 leest telkenmale een deel van de stroom in en verifieert of het ingelezen deel, omvattende een reeks van genormaliseerde primitieven en actuele feature-groepen, voldoet aan een grammatica. Deze grammatica is in de vorm van een aantal tabellen opgeslagen in het geheugen 103. Voldoet de reeks aan de grammatica dan worden een of meer analyses A door de parseer-eenheid opgeleverd. Een analyse geeft een, volgens de grammatica geoorloofde, structurele beschrijving van dat deel van het ingangssignaal, dat correspondeert met de ingelezen reeks. In het geval, dat bij verificatie blijkt dat voorgeschreven features geschonden worden, verhoogt de parseer-eenheid een overtredingsscore. In een dergelijk geval worden door de parseer-eenheid de gevonden analyses, voorzien van de desbetreffende overtredingsscore, opgeleverd. De door de parseer-eenheid opgeleverde analyses staan vervolgens ter beschikking voor verdere verwerking, benevens het oorspronkelijke signaal S, de stroom van primitieven P en de gelexicaliseerde stroom L.
Een variant van de inrichting wordt verkregen door de inrichting te voorzien van een, in Fig. 1 met stippellijnen aangegeven, correctie-eenheid 104. Levert de parseer-eenheid geen oplossing of slechts oplossingen waarbij de overtredingsscore ongelijk nul is en dientengevolge geconstateerd is dat features geschonden zijn, dan wordt deze correctie-eenheid aangeroepen, waardoor een correctie- mechanisme geactiveerd wordt. Dit correctie-mechanisme kan op uiteenlopende wijzen uitgevoerd zijn. Volgens een eerste uitvoering vindt correctie plaats door het modificeren van de door de parseer-eenheid opgeleverde analyses. Volgens een tweede uitvoering worden de primitieven gecorrigeerd op basis van door de parseer-eenheid gegeven informatie met betrekking tot geschonden features: de inrichting levert dan een gecorrigeerde stroom van primitieven P'. Eventueel wordt deze gecorrigeerde stroom van primitieven P' wederom toegevoerd aan de parseer-eenheid.
In een volgende variant is de inrichting tevens voorzien van een alarmerings-inrichting 105, welke wordt geactiveerd door de parseer-eenheid. Constateert de parseer-eenheid dat het ingangssignaal S teveel afwijkt van de in de grammatica vastgelegde regels dan geeft de alarmerings-inrichting het signaal W af.
Is de inrichting uitgevoerd als een optisch karakter-herkenningssysteem dan omvat conversie-eenheid 101 mede een foto-electrische omzetter om het optisch ingangssignaal S met behulp van een scanmechanisme om te zetten in een electrisch signaal, welk electrisch signaal vervolgens gesegmenteerd wordt in de stroom van primitieven P. De primitieven worden afgebeeld op genormaliseerde primitieven en voorzien van actuele feature-groepen toegevoerd aan de parseer-eenheid. De parseer-eenheid bepaalt aan de hand van de grammatica welk patroon van primitieven een bepaald karakter symboliseert en voert de successievelijk herkende karakters naar buiten uit.
Is de inrichting uitgevoerd als een grammatica-controle- en correctie-systeem dan is het ingangssignaal een tekst-data-stroom. Conversie-eenheid 101 segmenteert deze datastroom in woorden en bepaalt vervolgens de genormaliseerde primitieven (taalkundige categorieën) en actuele feature-groepen (taalkundige eigenschappen).
Vervolgens leest de parseer-eenheid de gelexicaliseerde stroom per zin in en controleert of de zin voldoet aan de in de grammatica vastgestelde syntax. Worden overtredingen geconstateerd dan modificeert de correctie-eenheid de primitieven op basis van de gedetecteerde schendingen van de features. De gecorrigeerde stroom van primitieven P' wordt vervolgens naar buiten uitgevoerd.
Het is mogelijk het eerder beschreven optisch karakter-herkennings-systeem te verbeteren door de herkende karakters toe te voeren aan een spellingscorrector, welke met voordeel is uitgerust met het beschreven grammatica controle- en correctie-systeem.
Opgemerkt zij dat de bruikbaarheid van de inrichting niet beperkt is tot de in het voorgaande beschreven toepassingsgebieden. De inrichting kan in al die toepassingsgebieden, waarbij signalen geanalyseerd moeten worden ten behoeve van herkenning of ten behoeve van verificatie en waarbij a priori gegeven is dat deze signalen aan bepaalde regels voldoen, met voordeel worden toegepast De werkwijze van de inrichting zal nu nader worden toegelicht aan de hand van de Figuren 1-8.
Een te analyseren signaal S wordt toegevoerd aan de conversie-eenheid 101 uit Fig. 1, welke het signaal omzet in een stroom van primitieven P en een stroom Lvan genormaliseerde primitieven en actuele featuregroepen. De in de conversie-eenheid uit te voeren werkwijzen kennen verschillende van het toepassingsgebied afhankelijke uitvoeringsvormen. Een uitvoeringsvorm voor optische karakter-herkenning zal later gedetailleerd worden besproken. De werkwijze van de parseer-eenheid zal nu aan de hand van de Figuren 2-7 uiteengezet worden. De hoofdroutine van de parseer-eenheid volgens de uitvinding wordt nader toegelicht aan de hand van het flowdiagram, weergegeven in Fig.Z Vertrekkend vanuit de startituatie 201, worden in stap 202 de variabelen result, threshold en new-threshold op nul geïnitialiseerd en wordt de variabele delta-threshold op DELTA.geïnitialiseerd. Vervolgens wordt in stap 203 een deel van de gelexicaliseerde stroom L ingelezen, omvattende een reeks van genormaliseerde primitieven, voorzien van actuele feature-groepen, en wordt een eindsymbool $ aan de reeks toegevoegd. Hierna wordt in stap 204 de parseer-routine aangeroepen. De parseer-routine zal later gedetailleerd toegelicht worden aan de hand van Fig.3. De parseer-routine verifieert of de ingelezen reeks voldoet aan de in de vorm van een aantal tabellen in het geheugen opgeslagen grammatica. Is dit het geval dan worden een of meer analyses in de vorm van een boomstructuur, waarin elke analyse een separaat wortel-knooppunt bezit, opgeleverd en bevat de variabele result wijzers naar genoemde wortel-knooppunten. Heeft de parseer-routine geen analyse gevonden, dan bevat de variabele result de waarde 0. Hierna wordt in stap 205 gecontroleerd of de variabele result een waarde ongelijk 0 bezit. Is dit niet het geval (N), dan wordt de werkwijze voortgezet met het uitvoeren van stap 206. In stap 206 wordt nagegaan of de variabele threshold een waarde bezit groter dan een vooraf ingestelde waarde MAX. Is dit het geval (J), dan bereikt de hoofdroutine eindtoestand 207. In deze situatie heeft de parseer-eenheid geen analyse kunnen vinden en moet het ingangssignaal als niet in overeenstemming met de voorgeschreven regels zijnde, althans niet binnen de door de grootte van MAX toegestane marge van aantal overtredingen, worden verworpen. Het gegeven dat verificatie niet geslaagd is kan verder gebruikt worden, bijvoorbeeld voor het activeren van een waarschuwings-inrichting. Overschrijdt de variabele threshold de waarde MAX niet (N), dan wordt in stap 208 de som van new-threshold en delta-threshold aan de variabele threshold toegekend. Aan new-threshold is tijdens het uitvoeren van de parseer-routine de overtredingsscore toegekend. Delta-threshold heeft een vooraf-ingestelde waarde. Hierdoor wordt bereikt dat in een, ten opzicht van de situatie waarbij de variabele threshold telkens met een zelfde stap verhoogd wordt, gering aantal stappen analyses worden gevonden met een gegeven de situatie minimaal aantal overtredingen en met een zekere spreiding in het aantal overtredingen, welke spreiding bepaald wordt door de waarde van delta-threshold. Na het uitvoeren van stap 208 wordt de parseer-routine wederom aangeroepen. Bezit, in stap 205, de variabele result een waarde ongelijk nul (J), dan wordt in stap 209 gecontroleerd of de overtredingsscore nul is. Is dit niet het geval (N), dan wordt in stap 210 een correctie-rouïine aangeroepen. De uitvoeringsvorm van de correctie-routine is afhankelijk van het toepassingsgebied. Met voordeel kan de correctie-routine gebruik maken van de door de parseer-routine opgeleverde analyses, waarin aangegeven is bij welke reductie-stappen overtredingen van de regels zijn geconstateerd. Hierna bereikt de hoofdroutine van de parseer-eenheid eindtoestand 211, waarna de verkregen analyses en de gecorrigeerde signalen ter beschikking staan voor verdere verwerking. Is in stap 209 het aantal overtredingen gelijk aan nul (J) dan wordt meteen de eindtoestand 211 bereikt.
Fig.3 toont een uitvoeringsvorm van de parseer-routine. Vertrekkend vanuit de startsituatie 301 worden in stap 302 de primitieven-teller i, de teller id, de overtredingsteller, de graaf-gestructureerde stack G en de analyse-boom T geïnitialiseerd en wordt aan de verzameling U0,0 het element vO toegevoegd: U0,0 { vO }. Aan dit element vO is de toestand s = 0 toegekend. Bovendien wordt in deze stap de eerste primitieve, voorzien van lexicale gegevens (genormaliseerde primitieve, actuele feature-groepen) uit de reeks gelezen. In stap 303 wordt vervolgens de teller j geïnitialiseerd op 0, de verzamelingen R,Re en Q geïnitialiseerd op de lege verzameling en de verzameling A gelijk gemaakt aan U0,0: A= {vO}. Hierna wordt in stap 304 gecontroleerd of A een lege verzameling is. Is dit niet het geval (N), dan wordt in stap 305 de actor-routine aangeroepen. Is dit wel het geval (J), dan wordt in stap 306 gecontroleerd of R een lege verzameling is. Is dit niet het geval (N), dan wordt in stap 307 de reduceer-routine aangeroepen. Is dit wel het geval (J), dan wordt in stap 308 gecontroleerd of Re een lege verzameling is. Is dit niet het geval dan wordt de e-reduceer-routine aangeroepen. Is dit wel het geval dan wordt stap 310 bereikt. Evenzo wordt stap 310 bereikt na het uitvoeren van een der stappen 305, 307 en 309. De stappen 305 en 307 zijn gedetailleerd weergegeven in respectievelijk de Figuren 4 en 6. Stap 309, de e-reduceer-routine, is niet verder uitgewerkt, echter de veranderingen ten opzichte van de stand techniek, die hierin aangebracht moeten worden om deze routine geschikt te maken voor toepassing van de uitvinding zijn analoog aan de veranderingen aangebracht in de in Fig.6 gedetailleerd uitgewerkte reduceer-routine. In stap 310 wordt gecontroleerd of de verzamelingen A,R en Re alle leeg zijn. Is dit niet het geval (N), dan keert de werkwijze terug naar stap 304. Is dit wel het geval (J), dan wordt in stap 311 de shift-routine aangeroepen. De shift-routine is gedetailleerd uitgewerkt in Fig.5 en zal later toegelicht worden. Na het uitvoeren van de shift-routine wordt de werkwijze voortgezet met stap 312, waarin de primitieven-teller i met één wordt opgehoogd. Vervolgens wordt in stap 313 gecontroleerd of Ui,j leeg is. Is dit het geval (J), dan wordt in stap 314 aan de variabele result de waarde 0 toegekend, hetgeen inhoudt dat geen analyse gevonden kan worden, waarna eindtoestand 315 bereikt wordt. Is Ui,j niet leeg (N), dan wordt in stap 316 gecontroleerd of nog een volgende primitieve of het eindsymbool aanwezig is. Is dit het geval (J), dan wordt deze in stap 318 ingelezen. Is dit niet het geval (N), dan worden in stap 317 de verkregen analyses weggeschreven. Hierna bereikt de parseer-routine eindtoestand 315, waarna de werkwijze de uitvoering van de parseer-routine voortzet
Fig.4 toont een uitvoeringsvorm van de actor-routine. Vertrekkend vanuit de startsituatie 401 wordt in stap 402 een actueel knooppunt vc bepaald door hiervoor een element uit de verzameling A te nemen. Hierna wordt in stap 403 een actietabel geraadpleegd. Deze actie-tabel is afgeleid uit de gedefinieerde grammatica en legt uit te voeren acties vast voor een bepaalde toestand s en een in de grammatica gedefinieerde term. De entry uit de actietabel bepaalt welke actie behoort bij het actuele knooppunt vc. Vervolgens wordt in stap 404 de eerste bij deze entry voorgeschreven actie ingelezen. Hierna wordt in stap 405 nagegaan of de actie 'accept' is voorgeschreven. Is dit het geval (J), dan wordt in stap 406 vc toegekend aan de variabele r en wordt de variabele result opgehoogd met de waarde van id. Is dit niet het geval (N) dan wordt in stap 407 nagegaan of de actie 'shift s' is voorgeschreven. Is dit het geval (J), dan wordt aan de verzameling Q het element < vc,s,categorie,primitieve > toegevoegd. Isditniethet geval (N), dan wordt in stap 409 gecontroleerd of de actie 'reduce p' is voorgeschreven. Is dit het geval (J), dan wordt in stap 410 gecontroleerd of regel p een lege productie-regel is. Is regel p inderdaad een lege productie-regel (J), dan wordt het element < vc,p,categorie, primitieve > aan de verzameling Re toegevoegd. Is regel p geen lege productie-regel (N), dan wordt stap 412 uitgevoerd, waarin voor elke directe successorx van vc in G een element < vc,x, p,categorie, primitieve > aan de verzameling R wordt toegevoegd. Blijkt in stap 409 dat niet de actie 'reduce p' is voorgeschreven (N), dan wordt stap 413 uitgevoerd. Stap 413 wordt eveneens uitgevoerd na de stappen 406, 408, 411 en 412. In stap 413 wordt gecontroleerd of in de actietabel bij de entry bepaald in stap 403 nog een volgende actie is voorgeschreven. Is dit inderdaad het geval (J) dan wordt in stap 414 deze actie ingelezen, waarna de werkwijze wederom voortgezet wordt met stap 405. Is dit niet het geval (N), dan wordt in stap 415 gecontroleerd of bij de huidige primitieve nog een volgende terminal, dat is een volgende genormaliseerde primitieve, is gegeven. Is dit het geval (J), dan wordt in stap 416 deze volgende terminal ingelezen en wordt de werkwijze gecontinueerd door het wederom uitvoeren van stap 403. Op deze wijze wordt bereikt dat ambigue invoer, dat wil zeggen primitieven, waaraan meer dan een categorie toegekend kan worden en welke dientengevolge op meer dan een genormaliseerde primitieve of terminal afgebeeld kunnen worden, verwerkt kunnen worden. Blijkt in stap 415 dat geen volgende terminal gegeven is bij de huidige primitieve dan bereikt de actor-routine haar eindtoestand 417 en keert de werkwijze weer terug naar stap 305 van de parseer-routine.
Fig.5 toont een uitvoeringsvorm van de shift-routine. Vertrekkend vanuit de start-situatie 501 wordt in stap 502 de verzameling Ui +1,0 op de lege verzameling geïnitialiseerd. Hierna wordt in stap 503 een element uit Q genomen. Dit element bezit een verder met s aan te duiden toestand. Vervolgens wordt in stap 504 de teller id met 1 opgehoogd en wordt aan de analyse-boom T een knooppunt toegevoegd met identifier id. Hierna worden in stap 505 aan de graaf-gestructureerde stack G op basis van het in stap 503 uit de verzameling Q geselecteerde element twee knooppunten w en x toegevoegd, knooppunt w met het label s en knooppunt x met het label id, een ribbe van w naar x en een ribbe van x naar het knooppunt, welke gerefereerd wordt in het element geselecteerd uit de verzameling Q. Vervolgens wordt in stap 506 w voorzien van het label s toegevoegd aan de verzameling Ui +1,0. Hierna wordt in stap 507 gecontroleerd of Q nog een volgend element bevat. Is dit het geval (J) dan wordt in stap 508 dit element geselecteerd en worden vervolgens op basis hiervan de stappen 505 en 506 uitgevoerd. Blijkt in stap 507 dat geen volgend element meer aanwezig is (N) dan bereikt de shift-routine eindtoestand 509 en keert de werkwijze terug naar stap 311 van de parseer-routine.
Fig.6 toont een uitvoeringsvorm van de reduceer-routine volgens de uitvinding. Vertrekkend vanuit de startsituatie 601 wordt in stap 602 een element uit de verzameling R genomen. Hierna wordt in stap 603 het linkerhanddeel van de regel, welke gerefereerd wordt door het in stap 602 bepaalde element, toegekend aan de variabele N. Vervolgens wordt in stap 604 nagegaan of de gerefereerde regel features bevat. Dit gebeurt aan de hand van een feature-tabel welke in het geheugen is opgeslagen en welke afgeleid is uit de grammatica. Is dit het geval (J), dan wordt in stap 605 de unificeer-routine aangeroepen. Na het uitvoeren van de unificeer-routine, waarin een overtredingstelier bijgehouden wordt, wordt in stap 606 gecontroleerd of de overtredingstelier de drempelwaarde threshold overschrijdt. Is dit het geval (J), dan wordt in stap 607 nagegaan of de variabelen threshold en new-threshold aan elkaar gelijk zijn. Is dit het geval (J), dan wordt in stap 609 aan de variabele new-threshold de waarde van de overtredingsteller toegekend, waarna eindtoestand 610 bereikt wordt. Is dit niet het geval (N), dan wordt in stap 608 gecontroleerd of de variabele new-threshold de overtredingsteller overschrijdt. Is dit het geval (J), dan wordt eveneens stap 609 uitgevoerd waarna eindtoestand 610 wordt bereikt. Wordt in stap 608 geconstateerd dat de variabele new-threshold de overtredingsteller niet overschrijdt (N), dan wordt direct eindtoestand 610 van de reduceer-routine bereikt. Bij het bereiken van de eindtoestand 610 van de reduceer-routine keert de werkwijze weer terug naar stap 307 van de parseer-routine. Aangezien niets daadwerkelijk gereduceerd is zal ook de parseer-routine haar eindtoestand 315 bereiken, waarbij aangezien de verzameling Ui,j leeg is aan de variabele result de waarde nul toegekend is. Dit leidt ertoe dat in de hoofdroutine de drempels verhoogd worden en de parseer-routine opnieuw wordt aangeroepen.
Wordt in stap 604 geconstateerd dat de regel geen features bevat (N) of wordt in stap 606 geconstateerd dat de overtredingsteller niet de variabele threshold overschrijdt dan wordt de reduceer-routine voortgezet met het uitvoeren van stap 611. In stap 611 worden alle knooppunten in de graaf-gestructureerde stack G bepaald, waarvoor geldt dat er een pad is van xc naar y met lengte 21 p | -2, waarbij | p | het aantal termen van het rechterhanddeel van regel p is. Vervolgens wordt in stap 612 een eerste y genomen en toegekend aan de variabele yc. Hierna wordt in stap 613 een vector L bepaald door de id's te nemen, die behoren bij de termen uit het rechterhanddeel van de te reduceren regel. Vervolgens worden in stap 614 alle toestanden s bepaald, waarvoor geldt dat er in G een knooppunt w bestaat, zodanig dat w een directe opvolger van yc is en waarvoor tevens geldt dat de toestand s te vinden is in de entry van een goto-tabel, welke entry wordt bepaald door de toestand behorende bij w en de term overeenkomend met hel linkerhanddeel van de huidige regel. De goto-tabel is opgeslagen in het geheugen en is afgeleid uit de grammatica. In stap 615 wordt vervolgens een eerste toestand s genomen en aan de variable sc toegekend. Hierna wordt in stap 616 een verzameling W gecreëerd met als elementen alle in stap 614 bepaalde knooppunten w. Vervolgens wordt in stap 617 nagegaan of er in de verzameling Ui,j een element u aanwezig is met toestand sc. Is dit het geval (J), dan wordt in stap 619 gecontroleerd of er in de graaf-gestructureerde stack G al een ribbe van u naar z bestaat, zodanig dat elementen uit W directe opvolgers van z zijn. Is dit het geval (J), dan wordt in stap 620 aan de vector L de id toegevoegd waarnaar z refereert. Wordt niet voldaan aan de voorwaarde gesteld in stap 619 (N), dan wordt stap 621 uitgevoerd. In stap 621 wordt de teller id met 1 opgehoogd, wordt een knooppunt voorzien van de in stap 605 bepaalde overtredingsteller en voorzien van referenties naar direct opvolgende knooppunten aan de analyse-boom T toegevoegd, worden aan G twee knooppunten, een knooppunt u met label sc en een knooppunt z met label id, toegevoegd alsmede een ribbe van u naar z en ribben van z naar alle knooppunten w, welke zijn vermeld in W. Hierna wordt in stap 622 gecontroleerd of u met label sc vermeld is in de verzameling A. Is dit niet het geval (N), dan wordt stap 623 uitgevoerd, waarin een element <u,z,q,categorie,primitieve > toegevoegd wordt aan de verzameling R, voor elke q waarvoor geldt dat de onderhavige regel geen leeg rechterhanddeel bezit en waarvoor een reduceer-actie is voorgeschreven in de entry van de actie-tabel voor de toestand behorende bij u en de terminal behorende bij de categorie. Is dit wel het geval (J), dan gaat de werkwijze verder met het uitvoeren van stap 624. Dit gebeurt eveneens na het uitvoeren van stap 620 en na het uitvoeren van stap 623.
Wordt niet voldaan aan de voorwaarden gesteld in stap 617 (N), dan wordt stap 618 uitgevoerd. In stap 618 wordt de teller id met 1 opgehoogd, wordt een knooppunt voorzien van de in stap 605 bepaalde overtredingsteller en voorzien van referenties naar direct opvolgende knooppunten aan de analyse-boom T toegevoegd, worden aan G twee knooppunten, een knooppunt u met label sc en een knooppunt z met label id, toegevoegd alsmede een ribbe van u naar z en ribben van z naar alle knooppunten w, welke zijn vermeld in W; tevens wordt u toegevoegd aan A en Ui,j.
De werkwijze wordt hierna voortgezet met het uitvoeren van stap 624. In stap 624 wordt nagegaan of nog een volgende toestand s bepaald is in stap 614. Is dit het geval (J) dan wordt in stap 625 deze toestand toegekend aan sc en gaat de werkwijze verder met het uitvoeren van stap 616. Is dit niet het geval (N), dan wordt in stap 626 gecontroleerd of er nog een volgende, in stap 611 bepaalde, y is. Is dit het geval (J), dan wordt in stap 627 deze volgende y toegekend aan yc en vervolgt de werkwijze met het uitvoeren van stap 613. Is dit niet het geval (N), dan bereikt de reduceer-routine eindtoestand 628 en keert de werkwijze terug naar stap 307 van de parseer-routine.
Fig.7 toont een uitvoeringsvorm van de unificeer-routine volgens de uitvinding. Deze routine wordt aangeroepen in stap 605 van de reduceer-routine. De routine kan op analoge wijze worden aangeroepen door de e-reduceer-routine (stap 309 van de parseer-routine), echter dit is hier niet verder uitgewerkt. De unificeer-routine maakt gebruik van in het geheugen opgeslagen feature-tabellen, welke afgeleid zijn uit de grammatica. Binair gecodeerde feature-groepen zullen in het vervolg aangeduid worden met de term 'feature-indicatoren
Vertrekkend vanuit de startsituatie 701 worden in stap 702 gevalideerde feature-indicatoren bepaald door voor elke gedeclareerde feature-indicator van het rechterhanddeel de logische doorsnede te bepalen van laatstgenoemde feature-indicator met de corresponderende actuele feature-indicator. Hierna wordt in stap 703 gecontroleerd of elke in de voorgaande stap verkregen gevalideerde feature-indicator ongelijk is aan nul. Is dit niet het geval (N) dan duidt dit erop dat in de aangevoerde reeks van primitieven, terminals en features, features ontbreken. In dit geval wordt stap 704 uitgevoerd, waarin de overtredingsteller verhoogd wordt met een zeker getal ais een gevalideerde feature-indicator gelijk is aan nul. Dit getal kan afhankelijk zijn van de betreffende feature, hetgeen een gewogen overtredingsteller oplevert. Na deze stap en eveneens als in stap 703 blijkt dat alle gevalideerde feature-indicatoren ongelijk zijn aan nul wordt stap 705 uitgevoerd. In stap 705 wordt voor elke groep van in het rechterhanddeel aanwezige gelijke gedeclareerde feature-indicatoren een geünificeerde feature-indicator bepaald door de doorsnede te nemen van alle corresponderende gevalideerde feature-indicatoren. Vervolgens wordt in stap 706 gecontroleerd of alle verkregen geünificeerde feature-indicatoren ongeltjk zijn aan nul. Is dit niet het geval (N), dan duidt dit erop dat er geen onderlinge overeenstemming is tussen de features in de invoerreeks, terwijl de regels dit wel eisen. In dit geval wordt stap in stap 707 de overtredingsteller opgehoogd met een zeker getal voor iedere geünificeerde feature-indicator welke gelijk is aan nul. Ook in dit geval is het mogelijk gewogen getallen te gebruiken. Na stap 707 en eveneens als in stap 706 geconstateerd wordt dat alle verkregen geünificeerde feature-indicatoren ongelijk zijn aan nul (J) wordt stap 708 uitgevoerd. In stap 708 wordt een feature-indicator Ftempl bepaald door de vereniging te bepalen van alle in stap 706 verkregen feature-indicatoren tezamen met gevalideerde feature-indicatoren corresponderende met rechts eenmalig voorkomende gedeclareerde feature-indicatoren. Vervolgens wordt in stap 709 een feature-indicator Ftemp2 bepaald door de negatie te nemen van de vereniging van alle gedeclareerde feature-indicatoren van het rechterhanddeel. Hierna wordt in stap 710 een actuele feature-indicator bepaald voor elke in het linkerhanddeel gedeclareerde feature-indicator. Is de links gedeclareerde feature-indicator ook in het rechterhanddeel gedeclareerd dan wordt de corresponderende actuele feature-indicator bepaald door de vereniging van Ftempl en Ftemp2 te doorsnijden met de gedeclareerde feature-indicator. Is de links gedeclareerde feature-indicator niet in het rechterhanddeel gedeclareerd dan wordt de actuele feature-indicator verkregen door de waarde van de gedeclareerde feature-indicator over te nemen. Hierna wordt in stap 711 nagegaan of alle in stap 710 verkregen feature-indicatoren ongelijk zijn aan nul. Is dit niet het geval (N) dan duidt dit erop dat features niet in overeenstemming met de regels kunnen worden doorgegeven. In dit geval wordt in stap 712 de overtredingsteller verhoogd voor iedere verkregen actuele feature-indicator gelijk aan nul. Hierna bereikt de unificeer-routine eindtoestand 713. Wordt in stap 711 geconstateerd dat alle verkregen feature-indicatoren ongelijk nul zijn (J), dan wordt direct eindtoestand 713 bereikt, waarbij de werkwijze weer terugkeert naar stap 605 van de reduceer-routine.
De veelzijdigheid van de werkwijze en de inrichting zal nu worden toegelicht aan de hand van een aantal voorbeelden.
In een eerste voorbeeld worden de werkijze en inrichting toegepast ten behoeve van het herkennen van karakters.
Verondersteld is dat een optisch signaal S wordt verkregen door het met behulp van een scan-inrichting regelsgewijs aftasten van een beelddragend medium. Het signaal S wordt door een foto-electrische omzetter, omvat door de conversie-eenheid 101 van Fig.1, omgezet in een electrisch signaal. Dit signaal wordt gedrempeld en in een paginabuffer als een pixelpatroon opgeslagen. Vervolgens wordt dit pixelpatroon uitgelezen en omgezet in een stroom van primitieven P en een stroom L van genormaliseerde primitieven voorzien van feature-groepen.
Een mogelijke voordelige uitvoeringsvorm van een, ten behoeve van het omzetten van een dergelijk pixelpatroon in een reeks van primitieven en het lexicaliseren van deze primitieven, uit te voeren werkwijze, is weergegeven in Fig.8.
Vertrekkend vanuit de uitgangssituatie 801 wordt in stap 802 het aan de omzetter toegevoerde pixelpatroon verdeeld in regels. Hierna wordt in stap 803 elke regel verdeeld in een aantal bitmapkolommen van elk één pixel breed. Elke bitmapkolom zal nul of meer pixelclusters omvatten. In stap 804 wordt van elke bitmapkolom het aantal pixelclusters, hun lengte en hun positie bepaald. Vervolgens worden in stap 805 de bitmapkolommen op grond van de in de voorgaande stap verkregen gegevens gelabeld met een categorie, en worden aan elkaar grenzende kolommen van dezelfde categorie samengevoegd. Het strekt hierbij tot.voordeel kolommen, welke niet samengevoegd kunnen worden, te verwijderen, tenzij het kolommen betreft waarin geen pixelclusters voorkomen. Hierna worden in stap 806 aan elke resulterende kolom, verder aan te duiden met primitieve, op grond van de categorie waarmee deze gelabeld is, een genormaliseerde primitieve, welke prototype is van een categorie, toegekend.
Bovendien wordt elke kolom, op grond van de geometrie van de door elke primitieve omvatte pixelclusters, nader gespecificeerd door het toekennen van features, welke features eveneens opgenomen zijn in de grammatica. Vervolgens worden in stap 807 de genormaliseerde primitieven, voorzien van features, waarbij de features samengesteld worden tot feature-groepen welke vervolgens binair gecodeerd worden, samengevoegd tot reeksen, en worden de reeksen achtereenvolgens toegevoerd aan de parseer-eenheid, waarna de eindtoestand 808 wordt bereikt.
Een geschikte keuze van genormaliseerde primitieven en features draagt, in samenhang met de grammatica, zeer sterk bij aan een succesvolle uitvoering van de werkwijze. Een dergelijk geschikte keuze is weergegeven in Fign.9a-9b. Er worden zes categorieën van primitieven onderscheiden, corresponderend met de navolgende in Fig.9a weergegeven genormaliseerde primitieven: blank, vertical bar, horizontal bar, doublé, triple en endmark. Welke features toegekend worden aan een primitieve wordt bepaald door de geometrische configuratie van de pixelclusters omvat door de primitieve. Bij het toekennen van de features wordt gebruik gemaakt van een denkbeeldige bodyline en baseline (zie Fig.9c). Tenslotte wordt een woordspatie afgebeeld op de terminal endmark, deze sluit de aan de parseer-eenheid toe te voeren reeks af.
Een voorbeeld van een eenvoudige grammatica, welke geschikt is voor verwerking van een aantal van de terminals en features getoond in Fign.9a-9b, wordt weergegeven in Tabel 1. De onderhavige grammatica is geschikt voor het herkennen van de karakters 'a', 'h' en 'n' en kan tevens bepalen of deze karakters normaal of vet zijn (weight: normal ofbold). De getoonde grammatica heeft als eigenschap dat niet losse karakters worden opgeleverd maar gehele woorden. In samenhang met een nog te volgen bespreking van het correctie-mechanisme zal aangetoond worden, dat dit van bijzonder voordeel is.
TABEL 1
#Ftrs = CENTER HIGH-CENTER BOLD NORMAL VIOL LONG-UP LONG-DOWN #Weight = BOLD NORMAL
0 Character(Weight) :a(Weight).
1 Character(Weight) sh(Weight).
2 Character(Weight) :n(Weight).
3 Characters(Weight) :Character(Weight).
4 Characters(Weight) :Characters(Weight),Character(Weight).
5 START :WORD.
6 WORD :Characters{Weight),*endmark.
7a(Weight):*double(CENTER),*triple(CENTER),*vbar(CENTER,Weight),*blank.
8 h(Weight) :*vbar(LONG-UP,Weight),*hbar(HIGH-CENTER), *vbar(CENTER,Weight),*blank.
9 n(Weight) :*vbar(CENTER,Weight),*hbar(HIGH-CENTER), *vbar(CENTER,Weight),*blank.
In deze grammatica zijn 7 features gedefinieerd. De met de termen van de grammatica geassocieerde feature-groepen staan tussen haakjes achter de betreffende term vermeld. Een feature-groep is expliciet gedefinieerd, de feature-groepen welke slechts een feature omvatten, zijn impliciet als zodanig gedefinieerd. De grammatica is in het geheugen opgeslagen in de vorm van de actie-tabel, goto-tabel, en feature-tabel, welke getoond worden in respectievelijk Tabel 2, Tabel 3 en Tabel 4.
TABEL 2
State $ *blank *double *endmark *hbar *triple -vbar @ALL
0 sh7 sh8 1 acc 2 sh7 shlO sh8 3 re3
4 reO
5 rel 6 re 2 7 sh.ll 8 shl2 9 re4 10 re 6 11 shl3 12 shl4 13 shl5 14 shl6 15 re 7 16 re8/re9 TABEL 3
State Character Characters WORD a h n 0 3 2 1 4 5 6 2 9 4 5 6 TABEL 4 0 ((OOllOOO) (001100)) 1 ((OOllOOO) (001100)) 2 ((OOllOOO) (001100)) 3 ((OOllOOO) (001100)) 4 ((OOllOOO) (001100) (OOllOOO)) 5 (O O) 6 (() (OOllOOO) ()) 7 ((OOllOOO) (1000000) (1000000) (1000000 , OOllOOO) ()) 8 ((OOllOOO) (0000010 , OOllOOO) (0100000) (1000000 , OOllOOO) ()) 9 ((OOllOOO) (1000000 , OOllOOO) (0100000) (1000000 , OOllOOO) ())
In tabel 4 corresponderen de regels direct met de regels uit de grammatica van Tabel 1. Een haakjespaar correspondeert met een term uit een grammatica-regel.
Tussen een haakjespaar staan nul, één of meer met de corresponderende term geassocieerde binair gecodeerde feature-groepen. De wijze waarop in een grammatica gedefinieerde features omgezet worden in binair gecodeerde feature-groepen zal later besproken worden.
In het nu gedetailleerd uit te werken voorbeeld van de werkwijze wordt verondersteld dat de conversie-eenheid de volgende reeks van genormaliseerde primitieven voorzien van actuele feature-groepen toevoert aan de parseer-eenheid: double(CENTER) triple(CENTER) vbar(CENTER,BOLD) bl vbar(CENTER,BOLD) hbar(HIGH-CENTER) vbar(CENTER,BOLD) bl endmark
De corresponderende reeks van primitieven is weergegeven in Fig. 9d. Voor de duidelijkheid zijn de feature-groepen niet binair gecodeerd weergegeven. Bij de bespreking van de unificeer-routine zal de binaire codering gebruikt worden.
Na initialisatie van de variabelen 'result', 'threshold', delta-threshold', ‘new-threshold1 in stap 202 (Fig.2) wordt in stap 203 de door de lexicaliseer-eenheid afgeleverde reeks ingelezen en afgesloten door een eindsymbool $. result =0 threshold = 0 delta-threshold = 0 new-threshold = 0
Hierna wordt in stap 205 de parseer-routine aangeroepen.
Vertrekkend vanaf de startsituatie 301 (Fig.3) worden in stap 302 de tellers i, id, de overtredingsteller, de graaf-gestructureerde stack G en de boom T geïnitialiseerd en wordt aan de verzameling U0,0 het element vO toegevoegd, i = o id = 0 overtredingsteller = 0 G = 0 T = 0 U0,0 = { vO }
Eveneens worden in stap 302 een terminal en features behorende bij de eerste primitieve ai, ingelezen.
huidige primitieve aO, huidige terminal en features: doublé(CENTER)
In stap 303 wordt vervolgens de teller j geïnitialiseerd op 0, de verzamelingen R,Re en Q geïnitialiseerd op de lege verzameling en de verzameling A gelijk gemaakt aan U0,0: A={v0}. j = 0 R = Re = Q = { } A = { vO }
In stap 304 wordt vervolgens gecontroleerd of A een lege verzameling is. Dit is niet het geval (N), zodat de actor-routine aangeroepen wordt
De actor-routine is uitgewerkt in Fig.4. Vertrekkend vanaf de startsituatie 401 wordt in stap 402 een element van A verwijderd en dit element wordt het huidige knooppunt vc. Vervolgens wordt in stap 403 de actietabel gelezen voor de terminal 'doublé' en toestand 0. De actietabel, welke uit de grammatica is afgeleid, is weergegeven in Tabel 2. Dit levert op de actie 'shift 7'. In stap 405 wordt nagegaan of de actie 'accept' is. Dit is niet het geval (N), zodat in stap 407 gecontroleerd wordt of de actie 'shift s' is. Dit is het geval zodat in stap 408 < vO,7,doublé,a0> als element wordt toegevoegd aan de verzameling Q.
Q = Q{ <vO,7,double,aO> }
Hierna wordt in stap 413 gecontroleerd of nog een volgende actie gegeven is in de in stap 403 bepaalde entry. Dit is niet het geval (N), waarna vervolgens in stap 415 gecontroleerd wordt of aan de huidige primitieve nog een volgende terminal is toegekend. Dit is niet het geval (N), zodat de actor-routine de eindsituatie 417 bereikt en de werkwijze weer terugkeert naar stap 305 van de parseer-routine.
Nu stap 305 (Fig.3) afgewerkt is wordt verder gegaan met stap 310. Hier wordt gecontroleerd of de verzamelingen A,R en Re alle leeg zijn. Dit is het geval (J), zodat in stap 311 de shift-routine wordt aangeroepen.
De shift-routine is gedetailleerd weergegeven in Fig.5. Vertrekkende vanaf de startsituatie 501 wordt in stap 502 de verzameling U1,0 geïnitialiseerd op de lege verzameling, ui,O = { }
Hierna wordt in stap 503 een toestand genomen, uit een tuple van Q. s=7 uit element <v0,7,doublé,a0>
Vervolgens wordt in stap 504 de teller id met 1 opgehoogd en in T wordt een knooppunt gecreëerd met label id en voorzien van de lexicale gegevens behorende bij ai.
id = 1 T: 1 0 (*double [CENTER] aO)
Vervolgens wordt in stap 505 aan G toegevoegd: een knooppunt w met label s = 7, een knooppunt x met label id = 1, een ribbe van w naar x en een ribbe van x naar vO.
G: vO <- xl <- w7
Hierna wordt in stap 506 w met label s toegevoegd aan de verzameling U1,0.
U1,0 = { w7 }
In stap 507 wordt gecontroleerd of er nog meer elementen in Q aanwezig zijn. Dit is niet het geval (N), zodat de werkwijze weer terugkeert naar de parseer-routine en hier vervolgt met stap 312 (Fig.3), waarin de teller i met 1 wordt opgehoogd.
i = 1
Vervolgens wordt in stap 313 gecontroleerd of U1,0 leeg is. Dit is niet het geval (N), zodat in stap 316 gecontroleerd wordt of nog een volgende primitieve aanwezig is. Dit is hetgeval(J), zodat in stap 318 deze met terminal en features wordt ingelezen, huidige primitieve: al huidige terminal en features: (*triple [CENTER])
Hierna worden in stap 303 j, A, R, Re en Q geïnitialiseerd. j - 0 A » U1,0 = { w7 } R=Re=Q = { }
In stap 304 wordt vervolgens gecontroleerd of de verzameling A leeg is. Dit is niet het geval (N), A bevat immers het element w7, zodat in stap 305 de actor-routine wordt aangeroepen.
Vertrekkend vanuit de startsituatie 401 (Fig.4), wordt in stap 402 dit element uit A genomen en wordt dit het huidige knooppunt vc.
A = { } vc = w7
Hierna wordt in stap 403 de entry van de actietabel behorende bij de huidige terminal en de toestand behorende bij vc bepaald en hieruit de eerste actie gelezen. Dit levert: shift 11. Vervolgens wordt in 405 gecontroleerd of de actie 'accept' is. Dit is niet het geval (N), zodat in stap 407 gecontroleerd wordt of de actie een shift-actie is. Dit is het geval, waarbijs = 11. Hierna wordt in stap 408 het tuple <w7,11,triple,a1 > aanQ
toegevoegd, s = 11 Q - { <w7,11,triple,al> }
Hierna wordt in stap 413 gecontroleerd of nog een volgende actie gegeven is in de in stap 403 bepaalde entry. Dit is niet het geval (N), waarna vervolgens in stap 415 gecontroleerd wordt of aan de huidige primitieve nog een volgende terminal is toegekend. Dit is niet het geval (N), zodat de actor-routine de eindsituatie 417 bereikt en de werkwijze weer terugkeert naar stap 305 (Fig.3) van de parseer-routine.
Van hieruit verder gaande wordtin stap 310 gecontroleerd of de verzamelingen A,R en Re leeg zijn. Dit is het geval (J), zodat in stap 311 de shift-routine wordt aangeroepen.
Vertrekkende vanuit de startsituatie 501 (Fig.5) wordt in stap 502 de verzameling U2,0 op de lege verzameling geïnitialiseerd.
V2,0 = { }
Vervolgens wordt in stap 504 een toestand genomen, uit een tuple van Q. s=ll uit tuple <w7,ll,triple,al>
Hierna wordt in stap 504 id met 1 verhoogd en aan T een knooppunt toegevoegd, id = 2 T: 10 (*double [CENTER] aO) 2 0 (*triple [CENTER] al)
Vervolgens wordt in stap 505 aan G toegevoegd: een knooppunt w met label s = 11, een knooppunt x met label id = 2, een ribbe van w naar x en een ribbe van x naar w7.
G: vO <- xl <- w7 x2 «· wil
Hierna wordt in stap 506 w met label s toegevoegd aan de verzameling U2,0.
U2,0 = { wil }
In stap 507 wordt gecontroleerd of er nog meer elementen in Q aanwezig zijn. Dit is niet het geval (N), zodat de werkwijze weer terugkeert naar de parseer-routine.
De werkwijze wordt voortgezet met stap 312, waarin de teller i met 1 wordt opgehoogd, i = 2
Vervolgens wordt in stap 313 gecontroleerd of de verzameling U2,0 leeg is. Dit is niet het geval (N), zodat in stap 316 gecontroleerd wordt of nog een volgende primitieve aanwezig is. Dit is het geval (J), zodat in stap 318 deze met terminal en features wordt ingelezen.
huidige primitieve: a2 huidige terminal en features: (*vbar [CENTER BOLD])
Hierna worden in stap 303 j, A, R, Re en Q geïnitialiseerd.
j = 0 A = U2,0 = { wil } R=Re=Q = { }
Vervolgens wordt in stap 304 gecontroleerd of de verzameling A leeg is. Dit is niet het geval (N), zodat in stap 305 de actor-routine wordt aangeroepen.
Vertrekkende vanuit de startsituatie 401 wordt in stap 402 een element uit A genomen: vc = w11. Hierna wordt in stap 403 de entry in de actietabel bepaald behorende bij de huidige terminal (i.e. vbar) en de toestand van vc (i.e. 11), waarna een eerste hier aanwezige actie wordt ingelezen. Dit levert de actie 'shift 13'. In stap 405 wordt vervolgens gecontroleerd of de actie 'accept' is. Dit is niet het geval (N), waarna in stap 407 gecontroleerd wordt of de actie 'shift s’ is. Dit is het geval zodat in stap 408 hettuple <w11,13,vbar,a2> als element wordt toegevoegd aan de verzameling Q: Q = { <wl1,13,vbar,a2> }
Hierna wordt in stap 413 gecontroleerd of nog een volgende actie gegeven is in de in stap 403 bepaalde entry. Dit is niet het geval (N), waarna vervolgens in stap 415 gecontroleerd wordt of aan de huidige primitieve nog een volgende terminal is toegekend. Dit is niet het geval (N), zodat de actor-routine de eindsituatie 417 bereikten de werkwijze weer terugkeert naar stap 305 van de parseer-routine.
Van hieruit verder gaande wordt in stap 310 gecontroleerd of de verzamelingen AR en Re leeg zijn. Dit is het geval (J), zodat in stap 311 de shift-routine wordt aangeroepen.
Vertrekkende vanuit de startsituatie 501 wordt in stap 502 de verzameling U3,Q op de lege verzameling geïnitialiseerd.
U3,0 = { }
Vervolgens wordt in stap 503 een s behorende bij een element uit Q genomen: s = 13 uit element <wll,13,vbar,a2>
Hierna wordt in stap 504 id met 1 verhoogd en aan T een knooppunt toegevoegd, id = 3 T; 10 (*double [CENTER] aO) 2 0 (*triple [CENTER] al) 3 0 (*vbar [CENTER,BOLD] a2)
Vervolgens wordt in stap 505 aan G toegevoegd: een knooppunt w met label s = 13, een knooppunt x met label id = 3, een ribbe van w naar x en een ribbe van x naar w11.
G: vO «- xl «· w7 <- x2 «· wil <r x3 «· wl3 Hierna wordt in stap 506 w met label s toegevoegd aan de verzameling U3,0.
U3,0 = { wl3 }
In stap 507 wordt gecontroleerd of er nog meer tuples in Q aanwezig zijn. Dit is niet het geval (N), zodat de werkwijze weer terugkeert naar de parseer-routine.
In de parseer-routine vervolgt de werkwijze met stap 312, waarin de teller i met 1 wordt opgehoogd.
i = 3
Vervolgens wordt in stap 313 gecontroleerd of de verzameling 1)2,0 leeg is. Dit is niet het geval (N), zodat in stap 316 gecontroleerd wordt of nog een volgende primitieve aanwezig is. Dit is het geval (J), zodat in stap 318 deze met terminal en features wordt ingelezen.
huidige primitieve: a3 huidige terminal en features: (*blank)
Hierna worden in stap 303 j, A, R, Re en Q geinitialiseerd. j = 0 A = U3,0 = { wl3 } R=Re=Q = { }
Vervolgens wordt in stap 304 gecontroleerd of de verzameling A leeg is. Dit is niet het geval (N), zodat in stap 305 de actor-routine wordt aangeroepen.
Vertrekkende vanuit de startsituatie 401 wordt in stap 402 een element uit A genomen: vc = w13. Hierna wordt in stap 403 de entry in de actietabel bepaald behorende bij de huidige terminal (i.e. blank) en de toestand van vc (i.e. 13), waarna een eerste hier aanwezige actie wordt ingelezen. Dit levert de actie ‘shift 15'. In stap 405 wordt vervolgens gecontroleerd of de actie 'accept' is. Dit is niet het geval (N), waarna in stap 407 gecontroleerd wordt of de actie 'shift s' is. Dit is het geval zodat in stap 408 hettuple <w13,15,*blank,a3> als element wordt toegevoegd aan de verzameling Q: Q = { <wl3,15,*blank,a3> }
Hierna wordt in stap 413 gecontroleerd of nog een volgende actie gegeven is in de in stap 403 bepaalde entry. Dit is niet het geval (N), waarna vervolgens in stap 415 gecontroleerd wordt of aan de huidige primitieve nog een volgende categorie is toegekend. Dit is niet het geval (N), zodat de actor-routine de eindsituatie 417 bereikten de werkwijze weer terugkeert naar stap 305 van de parseer-routine.
Van hieruit verder gaande wordt in stap 310 gecontroleerd of de verzamelingen A,R en Re leeg zijn. Dit is het geval (J), zodat in stap 311 de shift-routine wordt aangeroepen.
Vertrekkende vanuit de startsituatie 501 wordt in stap 502 de verzameling 1)4,0 op de lege verzameling geïnitialiseerd.
U4,0 = { }
Vervolgens wordt in stap 503 een toestand genomen, uit een tuple van Q. s=15 uit tuple <wl3,15,blank,a3>
Hierna wordt in stap 504 id met 1 verhoogd en aan T een knooppunt toegevoegd, id = 4 T: 10 (*double [CENTER] aO) 2 0 (*triple [CENTER] al) 3 0 (*vbar [CENTER,BOLD] a2) 4 0 (*blank a3 )
Vervolgens wordt in stap 505 aan G toegevoegd: een knooppunt w met label s = 15, een knooppunt x met label id = 4, een ribbe van w naar x en een ribbe van x naar w13, G: vO «· xl <- w7 < x2 <- wil < x3 < wl3 «- x4 < wl5
Hierna wordt in stap 506 w met label s toegevoegd aan de verzameling U4,0.
U4,0 = { wl5 }
In stap 507 wordt gecontroleerd of er nog meer elementen in Q aanwezig zijn. Dit is niet het geval (N), zodat de werkwijze weer terugkeert naar de parseer-routine.
De werkwijze wordt voortgezet door het uitvoeren van stap 312, waarin de teller i met 1 wordt opgehoogd.
i = 4
Vervolgens wordt in stap 313 gecontroleerd of de verzameling U2,0 leeg is. Dit is niet het geval (N), zodat in stap 316 gecontroleerd wordt of nog een volgende primitieve aanwezig is. Dit is het geval (J), zodat in stap 318 deze met terminal en features wordt ingelezen.
huidige primitieve: a4 huidige terminal en features: (*vbar [CENTER BOLD])
Hierna worden in stap 303 j, A, R, Re en Q geïnitialiseerd.
j = 0 A = U4,0 = { wl5 } R=Re=Q = { }
Vervolgens wordt in stap 304 gecontroleerd of de verzameling A leeg is. Dit is niet het geval (N), zodat in stap 205 de actor-routine wordt aangeroepen.
Vertrekkende vanuit de startsituatie 401 wordt in stap 402 een element uit A genomen: vc = w15. Hierna wordt in stap 403 de entry in de actietabel bepaald behorende bij de categorie van het huidige woord (i.e. vbar) en de toestand van vc (i.e.
15), waarna een eerste hier aanwezige actie wordt ingelezen. Dit levert de actie 'reduce 7'. In stap 405 wordt vervolgens gecontroleerd of de actie'accept'is. Dit is niet het geval (N), waarna in stap 407 gecontroleerd wordt of de actie 'shift s' is. Dit is eveneens niet het geval (N), zodat in stap 409 gecontroleerd wordt of de actie ‘reduce p' is. Dit is inderdaad het geval (J). Hierna wordt in stap 410 gecontroleerd of regel 7 een productie-regel met een leeg rechterhanddeel is. Dit is niet het geval (N), waarna in stap 412 voor elke directe opvolger x van vc in G aan de verzameling R een element van de vorm < vcfx,p,categorie,ai > toegevoegd wordt.
R = R{ <wl5,x4,7,vbar,a4> }
Hierna wordt in stap 413 gecontroleerd of nog een volgende actie gegeven is in de in stap 403 bepaalde entry. Dit is niet het geval (N), waarna vervolgens in stap 415 gecontroleerd wordt of aan de huidige primitieve nog een volgende terminal is toegekend. Dit is niet het geval (N), zodat de actor-routine de eindsituatie 317 bereikt en de werkwijze weer terugkeert naar stap 307 van de parseer-routine.
Vertrekkende vanuit stap 307 wordt vervolgens in stap 310 bepaald of de verzamelingen A,R en Re leeg zijn. Dit is niet het geval (N), immers R is niet leeg. Vervolgens wordt via de stappen 304 en 306 stap 307 bereikt. In stap 307 wordt de reduceer-routine aangeroepen.
Vertrekkende vanuit de startsituatie 601 wordt in stap 602 een element van R genomen en ingelezen. Hierna wordt in stap 603 Het linkerhanddeel van regel 7 toegekend aan de variabele N.
N = a(Weight)
Vervolgens wordt in stap 604 gecontroleerd of er features gedeclareerd zijn in regel 7. Dit is het geval (J), zodat in stap 605 de unificatie-routine aangeroepen wordt.
Vertrekkende vanuit de startsituatie 701 worden in stap 702 gevalideerde feature-indicatoren bepaald doorvoor iedere gedeclareerde feature-indicator rechts de doorsnede te bepalen met de corresponderende actuele feature-indicator. De betreffende gedeclareerde feature-indicatoren leest de unificatie-routine uit regel 7 van de in Tabel 4 weergegeven feature-tabel. De actuele feature-indicatoren zijn hier ter illustratie van de werkwijze binair weergegeven.
a(Weight) :*double(CENTER),*triple(CENTER),*vbar(CENTER, Weight),*blank.
Fdecl 0011000 1000000 1000000 1000000,0011000
Fact 1000000 1000000 1000000,0010000
Fvalidated 1000000 1000000 1000000,0010000
Vervolgens wordt in stap 703 nagegaan of de verkregen doorsneden alle niet leeg zijn. Dit is inderdaad het geval (J), zodat geen overtreding betreffende het ontbreken van features geconstateerd wordt. Hierna wordt in stap 705 voor elke feature-groep welke in het rechterhanddeel meer dan eenmaal gedeclareerd is een geünificeerde feature-indicator bepaald door de doorsnede te bepalen van alle gevalideerde feature-indicatoren, welke tot die groep behoren. In het onderhavige geval zijn er twee groepen, namelijk de groep 'CENTER' en de groep 'Weight', waarbij opgemerkt zij dat de groep 'CENTER' slechts een feature bevat. In het rechterhanddeel zijn er drie feature-indicatoren, welke tot de groep 'CENTER' behoren en is er een feature-indicator welke tot de groep 'Weight' behoort. Dit levert Funified(CENTER) = 1000000. Hierna wordt in stap 706 nagegaan of de in de voorgaande stap verkregen geünificeerde feature-indicatoren niet leeg zijn. Dit is het geval (J), zodat geen overtreding betreffende overeenstemming tussen de feature-indicatoren wordt geconstateerd. Vervolgens wordt de werkwijze voortgezet met stap 708. In stap 708 wordt Ftempl bepaald door op alle in de voorgaande stap verkregen geünificeerde feature-indicatoren tezamen met in het rechterhandeel aanwezige unieke gevalideerde feature-indicatoren een logische OR-operatie uit te voeren. Dit levert Ftempl = FCENTER OR FWeight = 1010000.
Hierna wordt stap 709 uitgevoerd, waarin de feature-indicator Ftemp2 wordt bepaald door de negatie te nemen van de vereniging van alle gedeclareerde features uit het rechterhanddeel.
Ftemp2 = NON (1000000 OR 0011000) = 0100111
Vervolgens worden in stap 710 actuele feature-indicatoren bepaald voor het linkerhanddeel. Actuele feature-indicatoren behorende tot een groep, welke ook in het rechterhanddeel gedeclareerd is, worden bepaald uit: F(Groep)act= (Ftempl OR Ftemp2) AND F(Groep)decl F(Weight)act= (1010000 OR 0100111) AND 0011000 = 1110111 AND 0011000 * 0010000
Hierna wordt in stap 711 gecontroleerd of alle verkregen actuele feature-indicatoren voor de linkerhand-term niet-leeg zijn. Dit is inderdaad het geval (J), zodat ook voor wat betreft het doorgeven van features geen overtredingen worden geconstateerd. Hierna wordt eindtoestand 713 bereikt en keert de werkwijze weer terug naar stap 505 van de reduceer-routine.
De werkwijze vervolgt met het uitvoeren van stap 606, waarin gecontroleerd wordt of de overtredings-teller een stand heeft welke de variable THRESHOLD overschrijdt Dit is niet het geval (N) zodat stap 611 wordt uitgevoerd. In stap 611 worden die y bepaald, waarvoor er in G een pad bestaat met lengte 2*4-2 van xc (i.e. x4) naar y. Dit levert y=x1. Hierna wordt in stap 612 een eerste y genomen en toegekend aan de variabele yc.
yc = xl
Vervolgens wordt in stap 613 L bepaald door de id's te nemen die behoren bij de termen uit het rechterhanddeel van de gereduceerde regel.
L = (1,2,3,4)
Hierna worden in 614 alle toestanden s bepaald waarvoor geldt dat er een w bestaat, zodanig dat w een directe opvolger van yc is en tevens dat de toestand s te vinden is in de entry van de goto-tabel, welke wordt bepaald door toestand behorende bij w en de term overeenkomend met het linkerhanddeel van de onderhavige Regel. Raadpleging van G leert dat er een directe opvolger van yc, zijnde vO, is. De hiermee gekoppelde toestand is s = 0. Raadpleging van de goto-tabel voor de toestand s = 0 (de toestand behorende bij w) en de term 'a' levert s = 4. In stap 615 wordt deze toestand de huidige toestand sc gemaakt sc * 4
Vervolgens wordt in stap 616 w = vO als element aan de verzameling W toegekend.
W = { vO }
Hierna wordt in stap 617 nagegaan of er een u bestaat waarvoor geldt dat u een element is van de verzameling U4,0 en dat de toestand behorende bij u gelijk is aan sc. Dit is niet het geval (N), zodat stap 618 wordt uitgevoerd. In stap 618 wordt id met 1 verhoogd en wordt in T een knooppunt gecreëerd met label id, de linkerhandterm met features en een wijzer L naar andere id's, bepaald in stap 613. id = 5 T: 10 (*double [CENTER] aO) 2 O (*triple [CENTER] al) 3 O (*vbar [CENTER,BOLD] a2) 4 O (*blank a3) 5 O (a [BOLD] (1,2,3,4))
Bovendien wordt in stap 618 van G het pad verwijderd, zoals bepaald in stap 61 i vooryc en wordt aan G toegevoegd een knooppunt u met label sc = 4, een knooppunt z met label id = 5, een ribbe van u naar z, ribben van z naar w, voor alle w in W en wordt u met label sc=4 toegevoegd aan de verzamelingen A en U4,0.
G: vO <- z5 <- u4 A = { u4 } U4,0 = { wl5 u4 }
Hierna wordt in stap 624 gecontroleerd of er nog meer toestanden s in stap 614 waren gevonden. Dit is niet het geval (N), zodat overgegaan wordt naar stap 626, waar gecontroleerd wordt of in stap 611 nog meer y's gevonden waren. Dit is eveneens niet het geval (N), zodat eindtoestand 628 bereikt wordt, waarin de werkwijze weer terugkeert naar stap 307 van de parseer-routine.
Verdergaande vanuit stap 307 wordt stap 310 bereikt, waar wordt gecontroleerd of de verzamelingen A,R en Re leeg zijn. A is niet leeg (N), zodat na controle in stap 304 (N), stap 305 uitgevoerd wordt.
De actor-routine wordt in deze stap aangeroepen. Vertrekkende vanuit de starttoestand 401 wordt een element van A verwijderd en dit wordt het huidige knooppunt vc gemaakt.
A={ } vc= u4
Hierna wordt in stap 403 de entry voor de terminal behorende bij de huidige primitieve (i.e. *vbar [CENTER,BOLD]) en voorde toestand behorende bij vc (i.e. 4) bepaald en een eerste voorgeschreven actie hieruit ingelezen. Dit levert de actie 'reduce 0'. In stap 405 wordt vervolgens gecontroleerd of de actie 'accept' is. Dit is niet het geval (N), waarna in stap 407 gecontroleerd wordt of de actie 'shift s' is. Dit is eveneens niet het geval (N), zodat in stap 409 gecontroleerd wordt of de actie 'reduce p' is. Dit is inderdaad het geval (J). Hierna wordt gecontroleerd of regel 0 een productie-regel met een leeg rechterhanddeel is. Dit is niet het geval (N), waarna in stap 412 voor elke directe opvolger x van vc in G aan de verzameling R een element van de vorm <vc,x,p,cat,ai> toegevoegd wordt.
R = R{ <u4,z5,0,*vbar,a4> }
Hierna wordt in stap 413 gecontroleerd of nog een volgende actie gegeven is in de in stap 403 bepaalde entry. Dit is niet het geval (N), waarna in stap 415 gecontroleerd wordt of aan de huidige primitieve nog een volgende terminal is toegekend. Dit is niet het geval (N), zodat de actor-routine de eindsituatie 417 bereikt en de werkwijze weer terugkeert naar stap 307 van de parseer-routine.
Vertrekkende vanuit stap 307 wordt vervolgens in stap 310 bepaald of de verzamelingen A,R en Re leeg zijn. Dit is niet het geval (N), immers R is niet leeg. Vervolgens wordt via de stappen 304 en 306 stap 307 bereikt. In stap 307 wordt de reduceer-routine aangeroepen.
Vertrekkende vanuit de startsituatie 601 wordt in stap 602 een element van R genomen en ingelezen. Hierna wordt in stap 603 het linkerhanddeel van regel 0 toegekend aan de variabele N.
N = Character(Weight)
Vervolgens wordt in stap 604 gecontroleerd of er features gedeclareerd zijn in regel 0. Dit is het geval (J), zodat in stap 605 de unificeer-routine aangeroepen wordt.
Vertrekkende vanuit de startsituatie 701 worden in stap 702 gevalideerde feature-indicatoren bepaald door voor iedere gedeclareerde feature-indicator rechts de doorsnede te bepalen met de corresponderende actuele feature-indicator.
Character(Weight) :a(Weight).
Fdecl 0011000 0011000
Fact 0010000
Fvalidated 0010000
Vervolgens wordt in stap 703 nagegaan of de verkregen doorsneden alle niet leeg zijn. Dit is inderdaad het geval (J), zodat geen overtreding betreffende het ontbreken van features geconstateerd wordt. Hierna wordt in stap 705 voor elke feature-groep welke in het rechterhanddeel meer dan eenmaal gedeclareerd is een geünificeerde feature-indicator bepaald door de doorsnede te bepalen van alle gevalideerde feature-indicatoren, welke tot die groep behoren. In het onderhavige geval zijn deze niet aanwezig. Hierna wordt in stap 706 nagegaan of de in de voorgaande stap verkregen geünificeerde feature-indicatoren niet leeg zijn. Bij het ontbreken van dergelijke feature-indicatoren wordt deze vraag met (J) beantwoord, zodat geen overtreding betreffende overeenstemming tussen de feature-indicatoren wordt geconstateerd. Vervolgens wordt de werkwijze voortgezet met stap 708. In stap 708 wordt Ftempl bepaald door op alle in de voorgaande stap verkregen geünificeerde feature-indicatoren tezamen met in het rechterhandeel aanwezige unieke gevalideerde feature-indicatoren een logische OR-operatie uit te voeren. Dit levert Ftempl = FWeight = 0010000. Hierna wordt stap 709 uitgevoerd, waarin de feature-indicator Ftemp2 wordt bepaald door de negatie te nemen van de vereniging van alle gedeclareerde feature-indicatoren uit het rechterhanddeel.
Ftemp2 = NON (0011000) = 1100111
Vervolgens worden in stap 710 actuele feature-indicatoren bepaald voor het linkerhanddeel. Actuele feature-indicatoren behorende tot een groep, welke ook in het rechterhanddeel gedeclareerd is, worden bepaald uit: F(Groep)act= (Ftempl OR Ftemp2) AND F(Groep)decl F(Weight)act= (0010000 0R 1100111) AND 0011000 = 1110111 AND 0011000 = 0010000
Hierna wordt in stap 711 gecontroleerd of alle verkregen actuele feature-indicatoren voor de linkerhand-term niet-leeg zijn. Dit is inderdaad het geval (J), zodat ook voor wat betreft het doorgeven van features geen overtredingen worden geconstateerd. Hierna wordt eindtoestand 713 bereikt en keert de werkwijze weer terug naar stap 605 van de reduceer-routine.
De werkwijze vervolgt met het uitvoeren van stap 606, waarin gecontroleerd wordt of de overtredings-teller een stand heeft welke de variable THRESHOLD overschrijdt. Dit is niet het geval (N) zodat stap 611 wordt uitgevoerd. In stap 611 worden die y bepaald, waarvoor er in G een pad bestaat met lengte 2*1-2 van xc (i.e. z5) naar y. Dit levert y=z5. Hierna wordt in stap 612 een eerste y genomen en toegekend aan de variabele yc.
yc * z5
Vervolgens wordt in stap 613 L bepaald door de id's te nemen die behoren bij de termen uit het rechterhanddeel van de gereduceerde regel.
L = (5)
Hierna worden in 614 alle toestanden s bepaald waarvoor geldt dat er een w bestaat, zodanig dat w een directe opvolger van yc is en tevens dat de toestand s te vinden is in de entry van de goto-tabel, welke wordt bepaald door de toestand behorende bij w en de term overeenkomend met het linkerhanddeel van de onderhavige Regel. Raadpleging van G leert dat er een directe opvolger van yc, zijnde vO, is. De hiermee gekoppelde toestand is s = 0. Raadpleging van de goto-tabel voor de toestand s = 0 (de toestand behorende bij w) en de term 'Character' levert s = 3. In stap 615 wordt deze toestand de huidige toestand gemaakt.
sc = 3
Vervolgens wordt in stap 616 w=v0 als element aan de verzameling W toegevoegd.
w = { v0 }
Hierna wordt in stap 617 nagegaan of er een u bestaat waarvoor geldt dat u een element is van de verzameling U4,0 en dat de toestand behorende bij u gelijk is aan sc. Dit is niet het geval (N), zodat stap 618 wordt uitgevoerd. In stap 618 wordt id met 1 verhoogd en wordtin T een knooppunt gecreëerd met label id, de linkerhandterm met features en een wijzer L naar andere id’s, bepaald in stap 613.
id = 6 T: 1 O (*double [CENTER] aO) 2 O (*triple [CENTER] al) 3 O (*vbar [CENTER,BOLD] a2) 4 O (*blank a3) 5 O (a [BOLD] (1,2,3,4)) 6 O (Character [BOLD] (5))
Bovendien wordt in stap 618 van G het pad verwijderd, zoals bepaald in stap 611 voor yc en wordt aan G toegevoegd een knooppunt u met label sc = 3, een knooppunt z met label id = 6, een ribbe van u naar z, ribben van z naar w, voor alle w in W en wordt u met label sc = 3 toegevoegd aan de verzamelingen A en U4,0.
G: vO «- z6 <- u3 A = { u3 } U4,0 = {wl5 u4 u3}
Hierna wordt in stap 624 gecontroleerd of er nog meer toestanden s in stap 614 waren gevonden. Dit is niet het geval (N), zodat overgegaan wordt naar stap 626, waar ; gecontroleerd wordt of in stap 611 nog meer y's gevonden waren. Dit is eveneens met ; het geval (N), zodat eindtoestand 628 bereikt wordt, waarin de werkwijze weer terugkeert V-* naar stap 307 van de parseer-routine.
Verdergaande vanuit stap 307 wordt stap 310 bereikt, waar wordt gecontroleerd of de verzamelingen A,R en Re leeg zijn. A is niet leeg (N), zodat na controle in stap 304 (N), stap 305 uitgevoerd wordt
De actor-routine wordt in deze stap aangeroepen. Vertrekkende vanuit de starttoestand 401 wordt een element van A verwijderd en dit wordt het huidige knooppunt A={ } vc= u3
Hierna wordt in stap 403 de entry voor de terminal behorende bij de huidige primitieve (i.e. *vbar [CENTER,BOLD]) en voor de toestand behorende bij vc (i.e. 3) bepaald en een eerste voorgeschreven actie hieruit ingelezen. Dit levert de actie 'reduce 3', In stap 405 wordt vervolgens gecontroleerd of de actie 'accept' is. Dit is niet het geval (N), waarna in stap 407 gecontroleerd wordt of de actie 'shift s’ is. Dit is eveneens niet het geval (N), zodat in stap 409 gecontroleerd wordt of de actie 'reduce p' is. Dit is inderdaad het geval (J). Hierna wordt in stap 410 gecontroleerd of regel 3 een productie-regel met een leeg rechterhanddeel is. Dit is niet het geval (N), waarna in stap 412 voor elke directe opvolger x van vc in G aan de verzameling R een element van de vorm <vc,x,p,cat,ai> toegevoegd wordt.
R = { <u3,z6,3,vbar,a4> }
Hierna wordt in stap 413 gecontroleerd of nog een volgende actie gegeven is in de in stap 403 bepaalde entry. Dit is niet het géval (N), waarna in stap 415 gecontroleerd wordt of nog een volgende terminal gegeven is bij de onderhavige primitieve. Dit is niet het geval (N), zodat de actor-routine de eindsituatie 417 bereikt en de werkwijze weer terugkeert naar stap 305 van de parseer-routine.
Vertekkende vanuit stap 305 wordt vervolgens in stap 310 bepaald of de verzamelingen A,R en Re leeg zijn. Dit is niet het geval (N), immers R is niet leeg. Vervolgens wordt via de stappen 304 en 306 stap 307 bereikt. In stap 307 wordt de reduceer-routine aangeroepen.
Vertrekkende vanuit de startsituatie 601 wordt in stap 602 een element van R genomen en ingelezen. Hierna wordt in stap 603 Het linkerhanddeel van regel 7 toegekend aan de variabele N.
N = Characters(Weight)
Vervolgens wordt in stap 604 gecontroleerd of er features gedeclareerd zijn in regel 7. Dit is het geval (J), zodat in stap 605 de unificeer-routine aangeroepen wordt.
Vertrekkende vanuit de startsituatie 701 worden in stap 702 gevalideerde feature-indicatoren bepaald door voor iedere gedeclareerde feature-indicator rechts de doorsnede te bepalen met de corresponderende actuele feature-indicator.
Characters(Weight) :Character(Weight).
Fdecl 0011000 0011000
Fact 0010000
Fvalidated 0010000
Vervolgens wordt in stap 703 nagegaan of de verkregen doorsneden alle niet leeg zijn. Dit is inderdaad het geval (J), zodat geen overtreding betreffende het ontbreken van features geconstateerd wordt Hierna wordt in stap 705 voor elke feature-groep welke in het rechterhanddeel meer dan eenmaal gedeclareerd is een geünificeerde feature-indicator bepaald door de doorsnede te bepalen van alle gevalideerde feature-indicatoren, welke tot die groep behoren. In het onderhavige geval zijn deze niet aanwezig. Hierna wordt in stap 706 nagegaan of de in de voorgaande stap verkregen geünificeerde feature-indicatoren niet leeg zijn. Bij ontstentenis van deze feature-indicatoren wordt deze vraag met (J) beantwoordt, zodat geen overtreding betreffende overeenstemming tussen de feature-indicatoren wordt geconstateerd. Vervolgens wordt de werkwijze voortgezet met stap 708. In stap 708 wordt Ftempl bepaald door op alle in de voorgaande stap verkregen geünificeerde feature-indicatoren tezamen met in het rechterhandeel aanwezige unieke gevalideerde feature-indicatoren een logische OR-operatie uit te voeren. Dit levert Ftempl = 0010000. Hierna wordt stap 709 uitgevoerd, waarin de feature-indicator Ftemp2 wordt bepaald door de negatie te nemen van de vereniging van alle gedeclareerde features uit het rechterhanddeel.
Ftemp2 = NON (0011000) = 1100111
Vervolgens worden in stap 710 actuele feature-indicatoren bepaald voor het linkerhanddeel. Actuele feature-indicatoren behorende tot een groep, welke ook in het rechterhanddeel gedeclareerd is, worden bepaald uit: F(Groep)act= (Ftempl OR Ftemp2) AND F(Groep)decl F(Weight)act= (0010000 OR 1100111) AND 0011000 = 1110111 AND 0011000 = 0010000
Hierna wordt in stap 711 gecontroleerd of alle verkregen actuele feature-indicatoren voor de linkerhand-term niet-leeg zijn. Dit is inderdaad het geval (J), zodat ook voor wat betreft het doorgeven van features geen overtredingen worden geconstateerd. Hierna wordt eindtoestand 713 bereikten keert de werkwijze weer terug naar stap 505 van de reduceer-routine.
De werkwijze vervolgt met het uitvoeren van stap 606, waarin gecontroleerd wordt of de overtredings-teller een stand heeft welke de variable THRESHOLD overschrijdt Dit is niet het geval (N) zodat stappen 611-616 worden uitgevoerd. Dit levert: y = z6 L = 6 s = 2 bij w=v0 W = { vO }
In stap 617 wordt gecontroleerd of er een element van U4,0 bestaat waarvan de toestand gelijk is aan 2. Dit is niet het geval (N). Waarna vervolgens de stappen 618, 624 (N), 626 (N) opleveren: id = 7
Ts 1 0 (*double [CENTER] aO) 2 0 (*triple [CENTER] al) 3 0 (*vbar [CENTER,BOLD] a2) 4 0 (*blank a3) 5 0 (a [BOLD] (1,2,3,4)) 6 0 (Character [BOLD] (5)) 7 0 (Characters [BOLD] (6)) G: vO <- 7.1 <r u2 A - { u2 } U4,0 = { wl5 u4 u3 u2 }
Hierna wordt eindtoestand 628 bereikt waarna de werkwijze weer terugkeert naar stap 307 van de parseer-routine.
Verdergaande vanuit stap 307 wordt stap 310 bereikt, waar wordt gecontroleerd of de verzamelingen A,R en Re leeg zijn. A is niet leeg (N), zodat na controle in stap 304 (IM), stap 305 uitgevoerd wordt.
De actor-routine wordt in deze stap aangeroepen. Vertrekkende vanuit de starttoestand 401 wordt een element van A verwijderd en dit element wordt het huidige knooppunt vc.
A={ } vc= u2
Hierna wordt in stap 403 de entry voor de terminal behorende bij de huidige primitieve (i.e. *vbar [CENTER,BOLD]) en voor de toestand behorende bij vc (i.e. 3) bepaald en een eerste voorgeschreven actie hieruit ingelezen. Dit levert de actie 'shift 8'.
Na het uitvoeren van de stappen 405 (N) en 407 (J) wordt stap 408 uitgevoerd. Aan Q wordt het element <u2,8,*vbar,a4> toegevoegd.
Q = {<u2,8,*vbar,a4>}
Na de stap 413 (N) en stap 415 (N) wordt de eindtoestand 417 bereikt en keert de werkwijze weer terug naar stap 305 van de parseer-routine.
Controle in stap 310 levert op dat de verzamelingen A, R en Re leeg zijn (J), zodat stap 311 uitgevoerd wordt. In stap 311 wordt de shift-routine aangeroepen.
De shift-routine heeft in deze situatie tot resultaat, dat aan T een nieuwe knooppunt wordt toegevoeg en dat aan G twee nieuwe knooppunten worden toegevoegd: id = 7 + 1 = 8 T: 1 0 (*double [CENTER] aO) 2 0 (*triple [CENTER] al) 3 0 (*vbar [CENTER,BOLD] a2) 4 0 (*blank a3) 5 0 (a [BOLD] (1,2,3,4)) 6 0 (Character [BOLD] (5)) 7 0 (Characters [BOLD] (6)) 8 0 (*vbar [CENTER,BOLD] a4) G: vO z7 <- u2 <- x8 <- w2 U4,0 = { wl5 u4 u3 u2 w2 }
De werkwijze wordt nu verder voortgezet met het inlezen van een volgende primitieve. Volgende stappen zijn in beginsel reeds besproken zodat nu verder volstaan wordt met het geven van T, zoals deze door de parseer-routine uiteindelijk wordt opgeleverd: T: 10 (*double [CENTER] aO) 2 O (*triple [CENTER] al) 3 O (*vbar [CENTER BOLD] a2) , 4 O (*blank [] a3) 5 O (a [BOLD] ((1 2 3 4)) 6 O (Character [BOLD] ((5)) 7 O (Characters [BOLD] ((6)) 8 O (*vbar [CENTER BOLD] a4) 9 O (*hbar [HIGH_CENTER] a5) 10 O (*vbar [CENTER BOLD] a6) 11 O (*blank [] a7) 12 O (n [BOLD](8 9 10 11 )) 13 O (Character [BOLD] (12 )) 14 O (Characters [BOLD](7 13 )) 15 O (*endmark [] a8) 16 O (WORD (14 15 ))
Bij het bereiken van eindtoestand 315 wordt deze verkregen analyse in de vorm van een haakjesstructuur weggeschreven. Aan de variabele result wordt de id toegekend, behorende bij de wortel van de gevonden analyse. Dit levert: result = 16 16 -> O (WORD [] O (Characters [BOLD ] O (Characters [BOLD] (O Character [BOLD ] (O a [BOLD ] (O *double [CENTER ] aO) (O *triple [CENTER ] al) (O *vbar [CENTER BOLD ] a2) (O *blank [] a3)))) (O Character [BOLD ] (O n [BOLD ] (O *vbar [CENTER BOLD ] a4) (O *hbar [HIGH_CENTER ] a5) (O *vbar [CENTER BOLD ] a6) (O *blank [] a7)))) (*endmark [] a8))
Na afloop van de parseer-routine keert de werkwijze terug naar stap 207. In stap 207 wordt gecontroleerd of de parseer-routine een resultaat ongelijk nul heeft opgeleverd.
Dit is inderdaad het geval (J), zodat hierna in stap 211 wordt gecontroleerd of het aantal overtredingen gelijk is aan nul. Dit is eveneens het geval (J), zodat in stap 214 de werkwijze stopt.
De werkwijze heeft nu een toegevoerd signaal geanalyseerd aan de hand van een grammatica en hierbij geen overtredingen geconstateerd,
Met het oorspronkelijke signaal kan nu verder gewerkt worden of met de analyse opgeleverd door de parseer-eenheid. In dit geval gaat het om de herkende karakters en hier zal dus mee verder gewerkt worden.
In het geval dat in stap 211 geconstateerd wordt, dat het aantal overtredingen van de opgeleverde oplossingen ongelijk is aan nul (N), wordt de in Fig. 1 met verwijzingscijfer 104 aangeduide correctie-eenheid in stap 212 aangeroepen. De werkwijze hiervan, geschikt voor het onderhavige toepassingsgebied van de inrichting, namelijk optische karakterherkenning, omvat in een voordelige uitvoeringsvorm de navolgende stappen. In een eerste stap worden de, per aan de parseer-eenheid toegevoerde groep van primitieven, verkregen woorden gesorteerd naar overtredingsscore. Allereerst wordt nagegaan of het woord met de laagste overtredingsscore voorkomt in een electronisch lexicaal woordenregister. Is dit niet het geval dan wordt dit woord verworpen en een volgende woord genomen. Is er slechts een woord opgeleverd, en is dit woord niet opgenomen in het betreffende register, dan wordt een spellingscorrector aangeroepen, welke een aantal varianten van het woord genereert, welke achtereenvolgens aan de hand van het woordenregister gecontroleerd worden. Wordt het woord wel gevonden in het electronische woordenregister dan wordt het woord, tezamen met de bij het woord behorende lexicale gegevens, in een zinsbuffer geplaatst. Wordt het woord gevonden, echter is aangegeven dat de verbuiging niet correct is, dan wordt dit woord gemarkeerd en in een buffer geplaatst. Bevat het zinsbuffer een volledige zin, dan wordt een grammatica-checker aangeroepen, waarbij gecontroleerd wordt op correcte verbuigingen en wordt, indien nodig, een verbuigingscorrector, zoals beschreven in de niet-voorgepubliceerde Nederlandse aanvrage NL- A 9101286, aangeroepen. Hierna wordt de volledige zin opgeleverd. Op deze manier wordt gebruik gemaakt van kennis van het linguïstische domein ten behoeve van karakterherkenning.
Met referentie naar de werkwijze voor de omzetting van een pixelpatroon naar groepsgewijs aan de parseer-eenheid toe te voeren reeksen van terminals en features, zoals weergegeven in Fig.8, zij opgemerkt dat het tot voordeel strekt toe te staan dat in stap 805 meerdere categorieën toegekend worden aan een pixelkolom, hetgeen resulteert in meerdere terminals behorende bij een primitieve. Hierdoor wordt bereikt dat beslissingen over de keuze van een categorie uitgesteld kunnen worden tot een latere fase van herkenningsproces. Deze variant is mogelijk doordat de parseer-eenheid in staat is dubbelzinnige invoer te verwerken.
Eveneens strekt het tot voordeel toe te staan dat in stap 806 aan een primitieve features toegekend worden, welke elkaar onderling uitsluiten. Toepassing hiervan resulteert erin, dat een keuze voor de ene feature of de andere feature niet op het moment van het toekennen van features gemaakt hoeft te worden, een moment waarop voor het toekennen van de features geen verdere gegevens bekend zijn dan alleen de geometrie van de pixelclusters, maar dat deze keuze tot een latere fase uitgesteld kan worden. Beide mogelijkheden worden meegenomen, zodat pas in een latere fase, bijvoorbeeld op basis van het aantal overtredingen, of op basis van een linguïstische controle, de juiste keuze kan worden gemaakt. Deze variant is mogelijk door de manier waarop de parseer-eenheid de features verwerkt. Een dergelijke situatie wordt toegelicht aan de hand van Fig.10. Hierin wordt een reeks van primitieven weergegeven. Van de vijfde primitieve is het moeilijk te bepalen of hij de feature descending of ascending bezit. Door nu, aangezien de middelste pixelcluster niet eenduidig onder 'ascending' o* 'descending' is onder te brengen, beide features, welke onderling strijdig zijn, toe te kennen aan de bij deze primitieve behorende terminal, wordt de beslissing of het hier een 's' of een 'z' betreft uitgesteld tot een latere fase. Stel, dat de parseer-eenheid twee analyses oplevert 'as' en 'az', beide met hetzelfde aantal overtredingen, dan levert een correctie-procedure, waarbij gecontroleerd wordt of de herkende woorden voorkomen in een electronisch woordregister, op dat het woord 'as' het correcte woord is.
Onder verwijzing naar de grammatica weergegeven in Tabel 1, zij opgemerkt dat deze grammatica als bijzonder voordeel heeft, dat niet losse karakters worden opgeleverd door de parseer-eenheid, maar dat woorden worden opgeleverd. In samenhang met het overtredingsmechanisme is de werkwijze in staat bij een bepaalde toegevoerde reeks van primitieven, een reeks van herkende woorden voorzien van een overtredingsscore op te leveren. Voordeel is nu dat indien een of meer oplossingen opgeleverd worden door de parseer-eenheid, deze oplossingen door linguïstische hulpmiddelen direct zijn te controleren. Bij het herkennen van telkens een karakter is dit niet mogelijk. Op een enkel karakter zijn geen linguïstische regels van toepassing. In een dergelijk geval, hetgeen door aanpassing van de grammatica uiteraard ook met de onderhavige werkwijze te realiseren is, is een extra stap nodig om de herkende karakters tot woorden samen te stellen.
Wederom onder verwijzing naar de grammatica uit Tabel 1, zullen nu enkele varianten besproken worden. Een eerste variant bestaat erin dat niet gehele woorden, maar reeksen van een vast aantal (n) karakters door de parseer-eenheid opgeleverd worden, verder aan te duiden met n-grammen. Het correctie-mechanisme bestaat er onder deze omstandigheden uit de opgeleverde n-grammen te controleren aan een lijst van toegestane n-grammen. In Tabel 5 is een grammatica weergegeven, welke trigrammen (n = 3) oplevert.
TABEL 5 #Ftrs = CENTER HIGH-CENTER BOLD NORMAL VIOL LONG-UP LONG-DOWN //Weight = BOLD NORMAL Character(Weight) :a(Weight).
Character(Weight) :h(Weight).
Character(Weight) :n(Weight).
START :TRIGRAM.
TRIGRAM:Character(Weight),Character(Weight),Character(Weight),*endmark. a(Weight) :*double(CENTER),*triple(CENTER),*vbar(CENTER,Weight),*blank. h(Weight) :*vbar(LONG-UP,Weight),*hbar(HIGH-CENTER), *vbar(CENTER,Weight),*blank. n(Weight) :*vbar(CENTER,Weight),*hbar(HIGH-CENTER), *vbar(CENTER,Weight),*blank.
Een volgende variant van de grammatica welke tot voordeel strekt bestaat in het opnemen van regels in de grammatica, welke tot doel hebben aan elkaar klevende karakters toch als afzonderlijke karakters te herkennen. Een dergelijke variant wordt getoond in Tabel 6. Hierdoor is het bijvoorbeeld mogelijk dat naast een d, een c en een I als oplossing opgeleverd wordt. Het correctie-mechanisme kan dan de juiste keuze maken.
TABEL 6
Ftrs - CENTER HIGH-CENTER BOLD NORMAL VIOL LONG-UP LONG-DOWN VIOL #Weight = BOLD NORMAL Character(Weight) sa(Weight).
Character(Weight) :h(Weight).
Character(Weight) :n(Weight).
Characters(Weight) :Character(Weight).
Characters(Weight) :Characters(Weight),Character(Weight).
START :WORD.
WORD :Characters(Weight),*endmark.
a(Weight) :*double(CENTER),*triple(CENTER),*vbar(CENTER,Weight),blank, blank :*blank.
blank :missing-blank(VIOL,VIOL,VIOL).
h(Weight) :*vbar(LONG-UP,Weight),*hbar(HIGH-CENTER), *vbar(CENTER,Weight),blank, missing-blank n(Weight) :*vbar(CENTER,Weight),*hbar(HIGH-CENTER), *vbar(CENTER,Weight),blank.
Verder is het mogelijk in de grammatica regels op te nemen, welke kerning van karakters, op een juiste manier verwerken. Het moge ook duideljk zijn, dat ook het herkennen en doorgeven van fonts eenvoudig te realiseren is.
Tot slot wordt in tabel 7 een variant van de grammatica getoond, waarbij het karakter als feature aangegeven wordt in de oplossing.
TABEL 7
#Ftrs = CENTER HIGH-CENTER BOLD NORMAL VIOL LONG-UP LONG-DOWN a h n //Weight = BOLD NORMAL
Character(Weight, a):*double(CENTER),*triple(CENTER), *vbar(CENTER,Weight),*blank.
Character(Weight,h) :*vbar(LONG-UP,Weight),*hbar(HIGH-CENTER), *vbar(CENTER,Weight),*blank.
Character(Weight,n) :*vbar(CENTER,Weight),*hbar(HIGH-CENTER), *vbar(CENTER,Weight),*blank.
Characters(Weight) :Character(Weight).
Characters(Weight) :Characters(Weight),Character(Weight).
START :WORD.
WORD :Characters(Weight),*endmark.
Een variant van de inrichting volgens de uitvinding toegepast voor optische tekenherkenning, waarbij met voordeel gebruik wordt gemaakt van de overtredingsscore, wordt verkregen door de bitmaps van de tekens welke het beste herkend zijn op te slaan. Dit is te realiseren door voor ieder voor een eerste maal herkend teken de bitmap op te slaan en vervolgens de bitmap telkens te vervangen door de bitmap van eenzelfde teken indien dit teken herkend is met een lagere overtredingsscore. Het is vervolgens mogelijk het origineel te reconstrueren met behulp van de bitmaps van de herkende primitieven welke het beste herkend zijn.
In het nu te bespreken tweede voorbeeld wordt de inrichting volgens de uitvinding toegepast ten behoeve van grammaticale analyse van zinnen. Grammaticale analyse van zinnen strekt tot voordeel in al die toepassingen waarin een te herkennen oorspronkelijk signaal linguïstische informatie bevat. In een laatste stap van een dergelijk proces, waarin woorden opgeleverd zijn, is het door grammaticale analyse mogelijk het signaal nader te verifiëren en indien nodig te corrigeren. Het voorbeeld heeft betrekking op deze laatste stap, waarvoor een inrichting volgens de uitvinding wordt gebruikt.
De grammatica welke toegepast wordt is gegeven in Tabel 8.
TABEL 8 #Getal = SING1 SING2 SING3 PLU1 PLU2 PLU3 0 NP(Getal) :*article(Getal),*noun(Getal).
1 S :VP(Getal).
2 START :TOP.
3 TOP sS,*endmark.
4 VP(Getal) sNP(Getal),*verb(Getal).
In dit voorbeeld zijn 6 features gedefinieerd: SING1 SING2 SING3 PLU1 PLU2 en PLU3. Deze features zijn samengevoegd tot een groep, de groep Getal. De uit de grammatica afgeleide tabellen welke in het geheugen zijn opgeslagen, en waarvan de werkwijze gebruik maakt, de actie-, goto- en feature-tabel, zijn opgenomen in respectievelijk de Tabellen 9, 10 en 11.
TABEL 9 Actie-tabel
State $ *article *endmark *noun *verb @ALL
0 sh5 1 acc 2 shó 3 rel 4 sh7 5 sh8 6 re3 7 re4
8 reO
TABEL 10 goto-tabel
State NP S TOP VP
0 4 2 1 3 1 2 3 4 5
6 7 S
TABEL 11 feature-tabel 0 ((111111) (111111) (111111)) 1 (() (111111)) 2 (O O) 3 (O O O) 4 ((111111) (111111) (111111))
Stel de zin, waarvan geverifieerd moet worden of deze linguïstisch correct is, luidt: Ά man works.1
Deze zin vormt het toegevoerde signaal S aan de conversie-eenheid 101 van Fig. 1. De conversie-eenheid transformeert het signaal in een vorm welke geschikt is voor verwerking door de parseer-eenheid 102. Hiertoe wordt het signaal allereerst in primitieven gesegmenteerd. Voor deze toepassing vormen de woorden de primitieven, zodat de conversie-eenheid de reeks van toegevoerde karakters segmenteert in woorden. Deze woorden worden vervolgens voorzien van genormaliseerde primitieven (terminals) en features. De aldus verkregen gelexicaliseerde reeks wordt toegevoerd aan de parseer-eenheid 102: al a (*article [SING3]) a2 man (*noun [SING3]) a3 works (*verb [SING3]) a4 . (*endmark [])
De werkwijze van de parseer-eenheid zal nu gedetailleerd voor dit voorbeeld worden beschreven aan de hand van de Figuren 2-7. Vertrekkend vanuit de startituatie 201 (Fig.2), worden in stap 202 een aantal variabelen geïnitialiseerd. result = 0 threshold =0 delta-threshold = 0 new-threshold = 0
Vervolgens wordt in stap 203 de reeks ingelezen en wordt een eindsymbool $ aan de reeks toegevoegd. Hierna wordt in stap 204 de parseer-routine aangeroepen. De parseer-routine is nader uitgewerkt in Fig.3.
Vertrekkend vanuit de startsituatie 301 (Fig.3) worden in stap 302 de tellers i, id, de overtredingsteller, de graaf-gestructureerde stack G en de boom T geïnitialiseerd ert wordt aan de verzameling U0,0 het element vO toegevoegd, i = 0 id = 0 overtredingsteller = 0 G = 0 T = 0 U0,0 = { vO }
Bovendien wordt in deze stap de eerste primitieve aO voorzien van lexicale gegevens uit de reeks gelezen.
huidige primitieve: aO (*article [SING3])
In stap 303 wordt vervolgens de teller j geïnitialiseerd op 0, de verzamelingen R,Re en Q geïnitialiseerd op de lege verzameling en de verzameling A gelijk gemaakt aan U0,0: A = {v0}.
3=0 r = Re = q = { } A = { vO }
In stap 304 wordt vervolgens gecontroleerd of A een lege verzameling is. Dit is niet het geval (N), zodat de actor-routine aangeroepen wordt.
De actor-routine is uitgewerkt in Fig.4. Vertrekkend vanaf de startsituatie 401 wordt in stap 402 een element van A verwijderd en dit element wordt het huidige knooppunt vc. Vervolgens wordt in stap 403 de entry in de actietabel bepaald behorend bij de terminal ^article' en toestand 0. De actietabel, welke uit de grammatica is afgeleid, is weergegeven in Tabel 9. Hierna wordt in stap 404 een eerste actie van deze entry ingelezen. Dit levert op de actie 'shift 5'. In stap 405 wordt nagegaan of de actie 'accept' is. Dit is niet het geval (N), zodat in stap 407 gecontroleerd wordt of de actie 'shift s' is.
Dit is het geval zodat in stap 408 <v0,5,*article,a0> als element wordt toegevoegd aan de verzameling Q.
Q = Q{ <v0,5,*article,a0> } IMu stap 305 afgewerkt is wordt verder gegaan met stap 310 (Fig.3). Hier wordt gecontroleerd of de verzamelingen A,R en Re alle leeg zijn. Dit is het geval (J), zodat in stap 311 de shift-routine wordt aangeroepen.
De shift-routine is gedetailleerd weergegeven in Fig.5. Vertrekkende vanaf de startsituatie 501 wordt in stap 502 de verzameling 1)1,0 geïnitialiseerd op de lege verzameling.
U1,0 = { }
Hierna wordt in stap 503 een toestand genomen, uit een tuple van Q. s=5 uit element <vo,5,*article,a0>
Vervolgens wordt in stap 504 de teller id met 1 opgehoogd en in T wordt een knooppunt gecreëerd met id en voorzien van de lexicale gegevens behorende bij de nulde primitieve, id = 1 T: 10 (*article [SING3 PLU3] aO)
Vervolgens wordt in stap 505 aan G toegevoegd: een knooppunt w met label s=5, een knooppunt x met label id = 1, een ribbe van w naar x en een ribbe van x naar vO.
G: vO < xl <- w5
Hierna wordt in stap 506 w met label s toegevoegd aan de verzameling U1,0.
Ul,0 = { w5 }
In stap 507 wordt gecontroleerd of er nog meer elementen in Q aanwezig zijn. Dit is niet het geval (N), zodat de werkwijze weer terugkeert naar de parseer-routine en hier vervolgt met stap 312, waarin de teller i met 1 wordt opgehoogd, i = 1
Vervolgens wordt in stap 313 gecontroleerd of 111,0 leeg is. Dit is niet het geval (N), zodat in stap 316 gecontroleerd wordt of nog een volgende primitieve aanwezig is. Dit is het geval (J), zodat in stap 314 deze wordt ingelezen, huidige primitieve al: (*noun [SING3] al)
Hierna worden in stap 303 j, A, R, Re en Q geïnitialiseerd. j = 0 A=U1,0 = { w5 } R=Re=Q = { }
In stap 304 wordt vervolgens gecontroleerd of de verzameling A leeg is. Dit is niet het geval (N), A bevat immers het element w5, zodat in stap 305 de actor-routine wordt aangeroepen.
Vertrekkend vanuit de startsituatie 401, wordt in stap 402 dit element uit A genomen en gelijk gemaakt aan het huidige knooppunt vc.
A = { } vc = w5
Hierna wordt in stap 403 de entry van de actietabel behorende bij de huidige terminal en de toestand behorende bij vc bepaald en hieruit de eerste actie gelezen. Dit levert: shift 8. Vervolgens wordt in 405 gecontroleerd of de actie 'accept' is. Dit is niet het geval (N), zodat in stap 407 gecontroleerd wordt of de actie een shift-actie is. Dit is het geval, waarbij s = 8. Hierna wordt in stap 408 het element <w5,8,noun,a1 > aan Q toegevoegd.
s = 8 Q = { <w5,8,noun,al> }
Hierna wordt in stap 413 gecontroleerd of nog een volgende actie gegeven is in de in stap 403 bepaalde entry. Dit is niet het geval (N), waarna vervolgens in stap 415 gecontroleerd wordt of aan de huidige primitieve nog een volgende terminal is toegekend. Dit is niet het geval (N), zodat de actor-routine de eindsituatie 417 bereikt en de werkwijze weer terugkeert naar stap 305 van de parseer-routine.
Van hieruit verder gaande wordt in stap 310 gecontroleerd of de verzamelingen AR en Re leeg zijn. Dit is het geval (J), zodat in stap 311 de shift-routine wordt aangeroepen.
Vertrekkende vanuit de startsituatie 501 wordt in stap 502 de verzameling U2,0 op de lege verzameling geïnitialiseerd.
U2,0 = { }
Vervolgens wordt in stap 504 een toestand genomen, uit een tuple van Q.
s=8 uit element <w5,8,noun,al>
Hierna wordt in stap 504 id met 1 verhoogd en aan T een knooppunt toegevoegd.
id - 2 T: 10 (*article [SING3 PLU3] aO) 2 0 (*noun [SING3] al)
Vervolgens wordt in stap 505 aan G toegevoegd: een knooppunt w met label s=8, een knooppunt x met label id = 2, een ribbe van w naar x en een ribbe van x naar w5.
G: vO «- xl «- w5 <r x2 <- w8
Hierna wordt in stap 506 w met label s toegevoegd aan de verzameling U2,0.
U2,0 = U2,0{ w8 }
In stap 507 wordt gecontroleerd of er nog meer elementen in Q aanwezig zijn. Dit is niet het geval (N), zodat de werkwijze weer terugkeert naar de parseer-routine.
De werkwijze wordt voortgezet met stap 312, waarin de teller i met 1 wordt opgehoogd.
i = 2
Vervolgens wordt in stap 313 gecontroleerd of de verzameling U2,0 leeg is. Dit is niet het geval (N), zodat in stap 316 gecontroleerd wordt of nog een volgende primitieve aanwezig is. Dit is het geval (J), zodat de werkwijze voortgezet wordt met stap 317, waarin de volgende primitieve de huidige primitieve wordt.
huidige woord: a2 (*verb [SING3] a2)
Hierna worden in stap 303 j, A, R, Re en Q geïnitialiseerd. j = 0 A = U2,0 = { w8 } R=Re=Q = { }
Vervolgens wordt in stap 304 gecontroleerd of de verzameling A leeg is. Dit is niet het geval (N), zodat in stap 305 de actor-routine wordt aangeroepen.
Vertrekkende vanuit de startsituatie 401 wordt in stap 402 een element uit A genomen: vc = w8. Hierna wordt in stap 403 de entry in de actietabel bepaald behorende bij de terminal van de huidige primitieve (i.e. verb) en de toestand van vc (i.e. 8), waarna een eerste hier aanwezige actie wordt ingelezen. Dit levert de actie 'reduce 0'. in stap 405 wordt vervolgens gecontroleerd of de actie 'accept' is. Dit is niet het geval (N), waarna in stap 407 gecontroleerd wordt of de actie 'shift s' is. Dit is eveneens niet het geval (N), zodat in stap 409 gecontroleerd wordt of de actie 'reduce p' is. Dit is inderdaad het geval (J). Hierna wordt gecontroleerd of regel 0 een productie-regel met een leeg rechterhanddeel is. Dit is niet het geval (N), waarna in stap 412 voor elke directe opvolger x van vc in G aan de verzameling R een element van de vorm <vc,x,p,cat,ai> toegevoegd wordt.
R = R{ <w8,x2,0,verb,a2> }
Hierna wordt in stap 413 gecontroleerd of nog een volgende actie gegeven is in de in stap 403 bepaalde entry. Dit is niet het geval (N), zodat de actor-routine de eindsituatie 415 bereikt en de werkwijze weer terugkeert naar stap 307 van de parseer-routine.
Vertrekkende vanuit stap 307 wordt vervolgens in stap 310 bepaald of de verzamelingen A,R en Re leeg zijn. Dit is niet het geval (N), immers R is niet leeg. Vervolgens wordt via de stappen 304 en 306 stap 307 bereikt. In stap 307 wordt de reduceer-routine aangeroepen. Vertrekkende vanuit de startsituatie 601 wordt in stap 602 een element van R genomen en ingelezen. Hierna wordt in stap 603 Het linkerhanddeel van regel 0 toegekend aan de variabele N.
N = NP(Getal)
Vervolgens vindt in stap 605 unificatie van de betreffende regel plaats.
Vertrekkende vanuit de startsituatie 701 worden in stap 702 gevalideerde feature-indicatoren bepaald doorvoor iedere gedeclareerde feature-indicator rechts de doorsnede te bepalen met de corresponderende actuele feature-indicator.
NP(Getal) : *article(Getal), *noun(Getal)
Fdecl 111111 111111 111111
Fact 001000 001000
Fvalidated 001000 001000
Vervolgens wordt in stap 703 nagegaan of de verkregen doorsneden alle niet leeg zijn. Dit is inderdaad het geval (J), zodat stap 705 uitgevoerd wordt. Hierin wordt voor elke feature-groep welke in het rechterhanddeel meer dan eenmaal gedeclareerd is een geünificeerde feature-indicator bepaald door de doorsnede te bepalen van alle gevalideerde feature-indicatoren, welke tot die groep gehoren. In het onderhavige geval is er een groep, namelijk de groep 'GETAL'. Dit levert: Funified(GETAL) = 001000.
Hierna wordt in stap 706 nagegaan of de in de voorgaande stap verkregen geünificeerde feature-indicator niet leeg is. Dit is het geval (J), zodat geen overtreding betreffende overeenstemming tussen de feature-indicatoren wordt geconstateerd. Vervolgens wordt in stap 708 Ftempl bepaald, door op alle in de voorgaande stap verkregen geünificeerde ‘ feature-indicatoren tezamen met in het rechterhanddeel aanwezige unieke
gevalideeerde feature-indicatoren een logische OR-operatie uit te voeren. Dit levert V
Ftempl = 001000. Hierna wordt stap 709 uitgevoerd, waarin de feature-indicator Ftemp2 wordt bepaald door de negatie te nemen van de vereniging van alle gedeclareerde features van het rechterhanddeel:
Ftemp2 = 000000
Vervolgens worden in stap 710 actuele feature-indicatoren bepaald voor het linkerhanddeel: F(Getal)act = (001000 OR 000000) AND 111111 = 001000
Hierna wordt in stap 711 gecontroleerd of alle in stap 710 verkregen feature-indicatoren niet-leeg zijn. Dit is inderdaad het geval (J), zodat ook voor wat betreft het doorgeven van features geen overtredingen worden geconstateerd. Hierna wordt eindtoestand 713 bereikt en keert de werkwijze weer terug naar stap 605 van de reduceer-routine.
De werkwijze vervolgt met het uitvoeren van stap 606, waarin gecontroleerd wordt of de overtredings-teller de variable threshold overschrijdt. Dit is niet het geval (N) zodat stap 611 wordt uitgevoerd.
In stap 611 worden die y bepaald, waarvoor er in G een pad bestaat met lengte 2*2-2 van xc (i.e. x2) naary. Dit levert y = x1. Hierna wordt in stap 612 een eerste y genomen en toegekend aan de variabele yc.
yc = xl
Vervolgens wordt in stap 613 L bepaald door de id’s te nemen die behoren bij de termen uit het rechterhanddeel van de gereduceerde regel.
L = (1,2)
Hierna worden in 614 alle toestanden s bepaald waarvoor geldt dat er een w bestaat, zodanig dat w een directe opvolger van yc is en tevens dat de toestand s te vinden is in de entry van de goto-tabel, welke wordt bepaald door toestand behorende bij w en de term overeenkomend met het linkerhanddeel van de onderhavige Regel. Raadpleging van G leert dat er een directe opvolger van yc, zijnde vO, is. De hiermee gekoppelde toestand is s = 0. Raadpleging van de goto-tabel voor de toestand s = 0 (de toestand behorende bij w) en de term NP levert s = 4. In stap 614 wordt deze toestand de huidige toestand gemaakt.
sc = 4
Vervolgens wordt in stap 616 w = vO als element aan de verzameling W toegekend.
W = { vO }
Hierna wordt in stap 617 nagegaan of er een u bestaat waarvoor geldt dat u een element is van de verzameling U2,0 en dat de toestand behorende bij u gelijk is aan sc.
Dit is niet het geval (N), zodat stap 618 wordt uitgevoerd. In stap 618 wordt id met 1 verhoogd en wordt in T een knooppunt gecreëerd met label id, de linkerhandterm met features en een wijzer L naar andere id's, bepaald in stap 613. id = 3 T: 10 (*article [SING3 PLU3] aO) 2 0 (*noun [SING3] al) 3 0 (NP [SING3] (1,2) )
Vervolgens wordt van G het pad verwijderd, zoals bepaald in stap 611 voor yc en wordt aan G toegevoegd een knooppunt u met label sc = 4, een knooppunt z met label id = 3, een ribbe van u naar z, ribben van z naar w, voor alle w in W en wordt u met label sc=4 toegevoegd aan de verzamelingen A en U2,0.
G: vO «- z3 <- u4 A = { u4 } U2,0 = {w8 u4}
Hierna wordtin stap 624 gecontroleerd of er nog meer toestanden s in stap 614 waren gevonden. Dit is niet het geval (N), zodat overgegaan wordt naar stap 626, waar gecontroleerd wordt of in stap 611 nog meer y's gevonden waren. Dit is eveneens niet het geval (N), zodat eindtoestand 628 bereikt wordt, waarin de werkwijze weer terugkeert naar stap 307 van de parseer-routine. Verdergaande vanuit stap 307 wordt stap 310 bereikt, waar wordt gecontroleerd of de verzamelingen A,R en Re leeg zijn. A is niet leeg (N), zodat na controle in stap 304 (N), stap 305 uitgevoerd wordt.
De actor-routine wordt in deze stap aangeroepen. Vertrekkende vanuit de starttoestand 401 wordt een element van A verwijderd en dit element wordt het huidige knooppunt vc.
A={ } vc= u4
Hierna wordt in stap 403 de entry voor de terminal behorende bij het huidige woord works (i.e. verb) en voor de toestand behorende bij vc (i.e. 4) bepaald, waarna in stap 404 een eerste voorgeschreven actie hieruit wordt ingeiezen. Dit levert 'shift 7'. Na het uitvoeren van de stappen 405 (N) en 407 (J) wordt stap 408 uitgevoerd. Aan Q wordt het element <u4,7,*verb,a2> toegevoegd.
Q = {<u4,7,*verb,a2>}
Na de stap 413 (N) en stap 415 (N) wordt de eindtoestand 417 bereikten keert de werkwijze weer terug naar stap 305 van de parseer-routine.
Controle in stap 310 levert op dat de verzamelingen A, R en Re leeg zijn (J), zodat stap 311 uitgevoerd wordt. In stap 311 wordt de shift-routine aangeroepen.
De shift-routine heeft in deze situatie tot resultaat, dat aan T een nieuwe knooppunt wordt toegevoeg en dat aan G twee nieuwe knooppunten worden toegevoegd: id = 4 T: 10 (*article [SING3 PLU3] aO) 2 0 (*noun [SING3] al) 3 0 (NP [SING3] (1,2) ) 4 0 (*verb [SING3] works) G: vO <- z3 <- u4 «- x4 «- w7 U3,0 = { w7 }
Na uitvoering van de shift-routine wordt in stap 312 de teller i opgehoogd: i = 3. Hierna wordt in stap 313 gecontroleerd of U3,0 leeg is. Dit is niet het geval (N), waarna in stap 316 gecontroleerd wordt of er nog een volgende primitieve aanwezig is. Dit is het geval (J), zodat in stap 318 deze volgende primitieve genomen wordt: '*endmark.' In stap 303 worden wederom j op nul geïnitialiseerd, R,Re en Q op de lege verzameling en A op U3,0 i.e. {w7}. Aangezien A niet leeg is wordt in stap 305 de actor-routine aangeroepen. In de actor-routine wordt de de actietabel gelezen voor de primitieve (*endmark) en toestand 7. Dit levert op 'reduce 4'. In stap 410 van de actor-routine wordt gecontroleerd of regel 4 een lege productie-regel is. Dit is niet het geval (N), zodat vervolgens stap 412 uitgevoerd wordt, waarin R voorzien wordt van het element <w7,x4,4,*endmark,a3>: R = { <w7,x4,4,*endraark,a3> }
Aangezien geen volgende acties zijn voorgeschreven keert de actor-routine weer terug naar de parseer-routine. In de parseer-routine wordt vervolgens de reduceer-routine aangeroepen. In de reduceer-routine wordt in stap 603 het linkerhanddeel bepaald van regel 4. Dit is 'VP(GETAL)'. In deze regel zijn features gedeclareerd, zodat in stap 605 de unificeer-routine wordt aangeroepen. Vertrekkende vanuit de startsituatie 701 worden in stap 702 gevalideerde feature-indicatoren rechts bepaald.
VP(GETAL) : *verb(GETAL), NP(GETAL).
Fdecl 111111 111111 111111
Fact 001000 001000
Fvalidated 001000 001000
Deze zijn niet leeg, hetgeen in stap 704 getest wordt, zodat de werkwijze vervolgt met stap 705. Hierin wordt voor elke feature-groep welke in het rechterhanddeel meer dan eenmaal gedeclareerd is een geünificeerde feature-indicator bepaald door de doorsnede te bepalen van alle gevalideerde feature-indicatoren, welke tot die groep gehoren. In het onderhavige geval is er een groep, namelijk de groep 'GETAL'. Dit levert: Funified(GETAL) = 001000. Hierna wordt in stap 706 nagegaan of de in de voorgaande stap verkregen geünificeerde feature-indicator niet leeg is. Dit is het geval (J), zodat geen overtreding betreffende overeenstemming tussen de feature-indicatoren wordt geconstateerd. Vervolgens wordt in stap 708 Ftempl bepaald, door op alle in de voorgaande stap verkregen geünificeerde feature-indicatoren tezamen met in het rechterhanddeel aanwezige unieke gevalideeerde feature-indicatoren een logische OR-operatie uit te voeren. Dit levert Ftempl = 001000. Hierna wordt stap 709 uitgevoerd, waarin de feature-indicator Ftemp2 wordt bepaald door de negatie te nemen van de vereniging van alle gedeclareerde features van het rechterhanddeel:
Ftemp2 = 000000
Vervolgens worden in stap 710 actuele feature-indicatoren bepaald voor het linkerhanddeel: F(Getal)act = (001000 OR 000000) AND 111111 = 001000 Hierna wordt in stap 711 gecontroleerd of alle in stap 710 verkregen feature-indicatoren niet-leeg zijn. Dit is inderdaad het geval (J), zodat ook voor wat betreft het doorgeven van features geen overtredingen worden geconstateerd. Hierna wordt eindtoestand 713 bereikt en keert de werkwijze weer terug naar stap 605 van de reduceer-routine.
De werkwijze vervolgt met het uitvoeren van stap 606, waarin gecontroleerd wordt of de overtredings-teller de variable threshold overschrijdt. Dit is niet het geval (N) zodat stap 611 wordt uitgevoerd. In deze stap worden alle y bepaald, waarvoor geldt dat er een pad is in G van xc (=x4) naar y met lengte 21 p | -2=2. Dit levert op y=z3. Hierna worpen in stap 613 de id’s bepaald, behorende bij de symbolen uit het rechterhanddeel van de onderhavige regel. Dit geeft L= (4,3). Hierna worden op een al eerder beschreven manier de stappen 614-628 doorlopen, hetgeen in het volgende resulteert: sc= GOTO(STATE(w),N)=GOTO(O,VP)=3 W={ vO } id - 5 T: 10 (*article [SING3 PLU3] al) 2 O (*noun [SING3] a2) 3 O (NP [SING3] (1,2) ) 4 O (*verb [SING3] a3) 5 O (VP tSING3] (4,3) ) G: vO <- z5 <- u3 A = { u3 } U3,0 = { u3 }
Hierna keert de werkwijze terug naar de parseer-routine, waar vervolgens, aangezien A niet leeg is, de actor-routine in stap 305 wordt aangeroepen.
Hierin wordt in stap 403 de actietabel geraadpleegd voor het woord '*endmark.1 en toestand 3. Dit levert'reduce 11 op. Zodat de verzameling R wordt: R = { < u3,z5,1,*endmark,a3 >}. Hierna keert de werkwijze weer terug naar de parseer-routine, waar nu, aangezien R niet leeg is de reduceer-routine wordt aangeroepen. In de reduceer-routine wordt allereerst het linkerhanddeel bepaald van de betreffende te reduceren regel. Dit is N = S. Vervolgens wordt in stap 604 gecontroleerd of er features gedeclareerd zijn in deze regel. Dit is het geval (J), zodat de unificeer-routine aangeroepen wordt. Vertrekkende vanuit de startsituatie 701 worden in stap 702 gevalideerde feature-indicatoren rechts bepaald.
S : VP(GETAL).
Fdecl 111111
Fact 001000
Funi 001000
Deze zijn niet leeg, hetgeen in stap 703 getest wordt, zodat de werkwijze vervolgt met stap 705. Aangezien er in het rechterhanddeel niet meerdere tot dezelfde groep behorende feature-indicatoren zijn, hebben de stappen 705 en 706 geen effect Hierna wordt in stap 708 Ftempl bepaald. Ftempl = 001000. In stap 709 wordt Ftemp2 bepaald: Ftemp2 = 000000. Vervolgens worden in stap 610 de actuele feature-indicatoren bepaald voor het linkerhanddeel. Er zijn links geen features gedeclareerd, zodat hiervoor ook geen actuele features bepaald hoeven te worden, en de stappen 71 Oen 711 geen effect sorteren. Hierna wordt eindtoestand 713 bereikt waarin de werkwijze weer terugkeert naar de reduceer-routine.
Hier wordt in stap 604 nagegaan of de overtredingsteller de threshold heeft overschreden. Dit is niet het geval, zodat verder wordt gegaan met stap 611. In deze stap worden alle y bepaald, waarvoor geldt dat er een pad is in G van xc ( = z5) naar y met lengte 21 p | -2 = 0. Dit levert op y = z5. Hierna worden in stap 613 de id's bepaald, behorende bij de symbolen uit het rechterhanddeel van de onderhavige regel. Dit geeft L= (5). Hierna worden op een al eerder beschreven manier de stappen 513-529 doorlopen, hetgeen in het volgende resulteert: sc= GOTO(STATE(w),N)=GOTO(STATE(VO),S)=2 W={ vO } id = 6 T: 10 (*article [SING3 PLU3] al) 2 0 (*noun [SING3] a2) 3 O (NP [SING3] (1,2) ) 4 O (*verb [SING3] a3) 5 0 (VP [SING3] (4,3) ) 6 0 (S (5) ) G: vO <- zó <· u2 A = { u2 } U3,0 = { u2 }
Hierna keert de werkwijze terug naar de parseer-routine, waar vervolgens, aangezien A niet leeg is, de actor-routine in stap 305 wordt aangeroepen.
In de actor-routine wordt de actietabel geraadpleegd voor het woord '*endmark.‘ en toestand 2. Dit levert 'shift 6' op, zodatQ = {u2,6,*endmark,a3}. Hierna keert de werkwijze weer terug van de actor-routine naar de parseer-routine, waar in stap 311 de shift-routine wordt aangeroepen. Hier wordt allereerst in stap 502 U4,0 op de lege verzameling geïnitialiseerd, waarna de navolgende stappen 503-509 het volgende resultaat opleveren: id « 7 T: 10 (*article [SING3 PLU3] al) 2 0 (*noun [SING3] a2) 3 0 (NP [SING3] (1,2) ) 4 0 (*verb [SING3] a3) 5 0 (VP [SING3] (4,3) ) 6 0 (S (5) ) 7 0 (*endmark a4 ) G: vO «- z6 <- u2 < x7 < w6 U4,0 = { w6 }
Hierna keert de werkwijze weer terug naar de parseer-routine. In stap 312 van de parseer-routine wordt de teller i met 1 opgehoogd, hetgeen oplevert: i = 4. Vervolgens wordt in stap 313 gecontroleerd of U4,0 leeg is. Dit is niet het geval(N), waarna in stap 316 gecontroleerd wordt of er nog een primitieve is. Het eindsymbool resteert nog (J), zodat in stap 318 $, het eindsymbool, wordt ingelezen. Hierna vinden in stap 303 een aantal initialisaties plaats, waarbij o.a. A=U4,0= {w6 }. Aangezien A niet leeg is, wordt in stap 305 de actor-routine aangeroepen. Na raadpleging van de actietabel in stap 403, hetgeen reduce 3 oplevert, wordt in stap 412 R = { < w6,x7,3,eindsymbool,a4> }, waarna via stap 417 de werkwijze weer terugkeert naar de parseer-routine. In de parseer-routine wordt, aangezien R niet leeg is, de reduceer-routine aangeroepen in stap 307. In stap 603 van de reduceer-routine wordt het linkerdeel van de betreffende regel bepaald: N = TOP. Het verder doorlopen van de reduceer-routine levert tenslotte op: id 8 T: 1 0 (*article [SING3 PLU3] al) 2 0 (*noun [SING3] a2) 3 0 (NP [SING3] (1,2) ) 4 0 (*verb [SING3] a3) 5 0 (VP [SING3] (4,3) ) 6 0 (S (5) ) 7 0 (*endmark a4 ) 8 0 (TOP (6,7) ) G: vO <- z6 <- u2 «· z8 < ul A={ ul } U4,0 = { ul }
Hierna keert de werkwijze weer terug naar de parseer-routine waar vervolgens, na het doorlopen van de stappen 310, 304 de actor-routine aangeroepen wordt In de actor-routine wordt in stap 403 de actietabel geraadpleegd voor het eindsymbool '$' en toestand 1. Dit levert de actie 'accept' en tevens wordt aan de variabele r het knooppunt u1 toegekend en aan de variabele result id 8 toegekend. Via de stappen 413 en 415 keert de werkwijze weer terug naar de parseer-routine. In de parseer-routine wordt in stap 311 de shift-routine aangeroepen. Echter aangezien de verzameling Q leeg is, heeft de shift-routine geen effect en wordt 313 bereikt. Hierin wordt gecontroleerd of U5,0 leeg is. Dat is niet het geval, waarna in stap 316 nagegaan wordt of er nog een primitieve of een eindsymbool aanwezig is. Dit is niet het geval (N). Hierna worden in stap 317 de verkregen analyses in de vorm van een haakjesstructuur weggeschreven, waarbij aan de variabele result de id toegekend wordt, behorende bij de gevonden analyse. Dit levert (waarbij terwille van de duidelijkheid de primitieven zelf opgenomen zijn): result = 8
8 (TOP (S
(VP [SING3] (NP [SING3] (*article [SING3 PLU3] Δ) (*noun [SING3] man)) (*verb [SING3] works)))) (*endmark .))
Hierna bereikt de parseer-routine eindtoestand 315, waarna na terugkeer naar de werkwijze van de parseer-eenheid, stap 205 bereikt wordt. In stap 205 wordt gecontroleerd of de parseer-routine een resultaat ongelijk nul heeft opgeleverd. Dit is inderdaad het geval (J), zodat hierna in stap 209 wordt gecontroleerd of het aantal overtredingen gelijk is aan nul. Dit is eveneens het geval (J), zodat in stap 211 de werkwijze stopt.
De veelzijdige en flexibele eigenschappen van de parseer-eenheid met betrekking tot het overtredingsmechanisme zullen nu nader toegelicht worden aan de hand van een aantal voorbeelden. Dat deze voorbeelden betrekking hebben op het gebied van natuurlijke taalverwerking is niet limitatief bedoeld, maar is gedaan omdat deze voorbeelden eenvoudig te doorzien zijn.
In het volgende voorbeeld wordt verondersteld dat de grammatica volgens Tabel 8 geldig is. Veronderstel dat het aan de inrichting toegevoerde signaal door de conversie-eenheid 101 wordt gesegmenteerd tot de reeks van primitieven luidende: 'A man work.' De verwerking is tot aan het reduceren van regel 4 van de grammatica identiek aan het eerder gegeven voorbeeld, waarin de invoerreeks luidde 'A man works. De boom T heeft op dat moment de vorm (de primitieve-variabelen ai zijn voor de duidelijkheid vervangen door de primitieven zelf): T: 10 (*article [SING3 PLU3] A) 2 0 (*noun [SING3] man) 3 0 (NP [SING3] (1,2) ) 4 0 (*verb [SING3] work)
Bij het reduceren van regel 4 van de grammatica, waarin een noun-phrase (NP) en een verb gereduceerd worden tot een verb-phrase (VP), zijn de getallen van de te reduceren termen niet in overeenstemming met elkaar. De verwerking van de feature-indicatoren verloopt in die situatie als volgt: VP(Getal) :NP(Getal), *verb(Getal).
Fdecl 111111 111111 111111
Fact 001000 110111
Fvalidated 001000 110111
Het bepalen van de doorsnede van de gevalideerde feature-indicatoren welke tot dezelfde groep behoren levert een overtreding op, aangezien deze doorsnede leeg is:
Funif (Getal) -» 000000 -» +1
Er is dus een overtreding ten aanzien van overeenstemming tussen de features van termen uit het rechterhanddeel.
Bepaling van Ftempl levert op: 000000 Bepaling van Ftemp2 levert op: 000000 Bepaling van actuele feature-indicatoren links levert op:
Fact(Getal)= (000000 OR 000000) AND 111111 = 000000 -» +1
Er wordt nu eveneens een overtreding geconstateerd ten aanzien van het doorgeven van features naar de term van het linkerhanddeel, zodat bij het verlaten van de unificeer-routine de overtredingsteller de stand 2 bezit.
Als de werkwijze nu weer te rug keert naarde reduceer-routine, dan wordt in stap 606 gecontroleerd of de overtredingsscore groter is dan de in stap 202 op 0 geïnitialiseerde “ variabele threshold. Dit is het geval (J), waarna in stap 607 gecontroleerd wordt of de eveneens in stap 202 op 0 geïnitialiseerde variabele new-threshold gelijk is aan de variabele threshold. Dit is eveneens het geval (J), waarna in stap 609 new-threshold de waarde 2 toegekend krijgt. De reduceer-routine wordt niet voortgezet de werkwijze keert terug naar de parseer-routine en gaat verder met stap 310. Al de verzamelingen AR en Re zijn leeg (J), zodat in stap 311 de shift-routine wordt aangeroepen. Ook de verzameling Q is leeg, aangezien de actor-routine niet is aangeroepen. Gevolg hiervan is dat in de shift-routine alleen Ui +1,0 op de lege verzameling wordt geïnitialiseerd, waarna meteen eindtoestand 509 bereikt wordt De werkwijze keert terug naar de parseer-routine, waar vervolgens in stap 312 i wordt verhoogd. Hierna wordt in stap 313 gecontroleerd of Ui,0 leeg is. Dit is inderdaad het geval (J). In stap 314 wordt aan de variabele result de waarde 0 toegekend, waarna de parseer-routine eindtoestand 315 bereikt.
De werkwijze keert terug naar de hoofdroutine van de parseer-eenheid, waarna in stap 205 gecontroleerd wordt of de variabele result een waarde ongelijk aan nul bezit Dit is niet het geval (N), zodat de werkwijze voortgezet wordt met het uitvoeren van stap 206. In stap 206 wordt nagegaan of de variabele threshold een waarde bezit groter dan een vooraf ingestelde waarde MAX. Veronderstellend dat in de onderhavige situatie MAX de waarde twintig heeft, moet deze vraag ontkennend beantwoord worden (N).
Hierna wordt in stap 208 de waarde van de variabele threshold vastgesteld op 2 +1 = 3 en wordt aan de variabele new-threshold eveneens de waarde 3 toegekend. Hierna wordt de parseer-routine wederom aangeroepen in stap 204.
De parseer-routine begint nu weer opnieuw met initialisatie van onder andere G en T en met het inlezen van de eerste primitieve. Is de werkwijze weer aangekomen bij het reduceren van regel 4 van de grammatica, dan levert unificeren wederom een score van 2 overtredingen op. Echter stap 606 van de reduceer-routine levert nu op dat de score niet groter is dan de threshold (N), zodat de werkwijze verder gaat met het uitvoeren van de stappen 611-628 van de reduceer-routine. Bij toevoegen van een knooppunt aan T in stap 618, wordt tevens de stand van de overtredingsteller aangegeven. Dit levert: id = 5 T: 10 (*article [SING3 PLU3] the) 2 0 (*noun [SING3] man) 3 0 (NP [SING3] (1,2) ) 4 0 (*verb [SING3] work) 5 2 (VP [SING3] (4,3) ) A = { u3 } U3,0 = { u3 }
Hierna keert de werkwijze terug naar de parseer-routine, waar vervolgens, aangezien A niet leeg is, de actor in stap 305 wordt aangeroepen.
De werkwijze wordt verder voortgezet, waarbij bij het reduceren van regel 1 van de grammatica nogmaals een overtreding wordt geconstateerd, omdat de actuele feature-indicator Getal, behorende bij VP nul is. De stand van de overtredingsteller, welke de score weergeeft, wordt hierdoor 3. Echter de score is nog niet groter dan de threshold, hetgeen in stap 606 gecontroleerd wordt (N), zodat de werkwijze verder voortgezet wordt. Meer overtredingen van de regels treden niet meer op, zodat de parseer-routine tenslotte de volgende analyse oplevert: T: 10 (*article [SING3 PLU3] the) 2 0 (*noun [SING3] man) 3 0 (NP [SING3] (1,2) ) 4 0 (*verb [SING3] works) 5 2 (VP [SING3] (4,3) ) 6 3 (S (5) ) 7 0 (*endmark . ) 8 3 (TOP (6,7) )
In stap 317 wordt T weggeschreven in de vorm van een haakjesstructuur en wordt aan de variabele result de id toegekend, behorende bij de gevonden analyse. Dit levert: result = 8 8 -» (3 TOP [] (3 S [] (2 VP [] (0 NP [SING3 ] (0 *article [SING3 PLU3 ] the) (0 *noun [SING3 ] man)) (0 *verb [SING1 SING2 PLU1 PLU2 PLU3 ] work))) (0 *endmark [] .))
Vervolgens wordt in stap 205 van de hoofdroutine van de parseer-eenheid gecontroleerd of de variabele result ongelijk aan nul is. Dit is inderdaad het geval (J), waarna in stap 209 gecontroleerd wordt of de overtredingsscore gelijk is aan nul. Dit is niet het geval (N), zodat de werkwijze voortgezet wordt met stap 210, waarin een correctie-routine uitgevoerd wordt. In het onderhavige voorbeeld, dat betrekking heeft op het verwerken van natuurlijke taal, kan een dergelijke correctie-routine, een verbuigingscorrector omvatten, zoals beschreven in de aanvrage EP-A-0 052 469, gecombineerd met de parseer-routine volgens de uitvinding. Met voordeel kan hierbij gebruik gemaakt worden van de opgeleverde analyse, waarin aangegeven staat bij welke reductie-stappen overtredingen van de regels zijn geconstateerd. Hierna bereikt de hoofdroutine van de parseer-eenheid eindtoestand 211, waarna de verkregen analyses en de gecorrigeerde signalen ter beschikking staan voor verdere verwerking.
Met dit voorbeeld is aangetoond, dat de inrichting geschikt is voor het verifiëren van signalen aan een stelsel van regels en het vervolgens aan de hand van de verkregen analyse uitvoeren van een correctie-actie.
Alvorens een grammatica, i.e. een stelsel van regels, ook daadwerkelijk geschikt is om gebruikt te kunnen worden door de werkwijze, is het noodzakelijk deze regels in een voor de werkwijze geschikte vorm te brengen, welke vorm omvat een actie-tabel, een goto-tabel en een feature-tabel, laatstgenoemde zijnde een aan de regels gekoppeld stelsel van feature-indicatoren. De gang van zaken bij het geschikt maken van een parser voor het verwerken van bepaalde signalen is in de regel zo dat een grammatica in de vorm van een aantal herschrijfregels overeenkomstig een zeker grammatica-formalisme wordt opgesteld en dat vervolgens de grammatica gecompileerd wordt, hetgeen wil zeggen dat een aantal tabellen, welke tabellen geschikt zijn voor automatische verwerking door een computer-eenheid, uit de grammatica afgeleid worden. Het afleiden van een actie-tabel en een goto-tabel uit een grammatica is van algemene bekendheid. Het afleiden van een feature-tabel overeenkomstig de uitvinding zal nu nader toegelicht worden aan de hand van de werkwijze weergegeven in Fig. 11. Vertrekkende vanuit de startsituatie 1101 worden in stap 1102 alle gedefinieerde features uit de te verwerken grammatica ingelezen. Hierna wordt in stap 1103 aan elk feature een rangnummer toegekend. Instap 1104 wordt het aantal N-bits woorden bepaald, dat nodig is voor de te definiëren feature-indicatoren. Dit aantal wordt bepaald door het totaal aantal gedefinieerde features en door N. Voor een implementatie, geprogrammeerd in de programmeertaal C, en werkend onder het Unix operating system, is N=32 een geschikte keuze. Vervolgens wordt in stap 1105 de regel met nummer 0 ingelezen. In stap 1106 wordt uit de regel de eerste groep behorende bij de linkerhandterm ingelezen. Hierna wordt in stap 1107 de feature-indicator bepaald. Betreft het een groep, welke in de grammatica gedefinieerd is, dan wordt aan de hand van deze definitie vastgesteld welke features de groep omvat. Betreft het een enkele, in de grammaticaregel direct aangegeven, feature, dan omvat de groep, aangeduid met de naam van deze ene feature, slechts deze ene feature. Hiernaast is het ook toegestaan dat een groep in een grammaticaregel gedefinieerd wordt door optelling of aftrekking van wel vooraf gedefinieerde groepen en van features. De feature-indicator wordt vervolgens gevormd door in een reeks van nullen, ter lengte van het aantal features, elke nul met een rangnummer overeenstemmend met een rangnummer van een omvatte feature te vervangen door een één. Hierna wordt de verkregen reeks afgebeeld op het in stap 1104 verkregen aantal N-bits woorden. Vervolgens wordt in stap 1108 nagegaan of een identieke feature-indicator al eerder berekend is in het rechterhanddeel. Is dit het geval (J), dan wordt in stap 1109 de afstand tot deze eerder bepaalde feature-indicator bepaald. Vervolgens worden in stap 1110 de verkregen gegevens weggeschreven in een geschikte geheugenstructuur. In stap 1111 wordt hierna gecontroleerd of nog een volgende groep aanwezig is bij de huidige term. Is dit het geval (J), dan wordt in stap 1112 deze groep ingelezen en vervolgt de werkwijze met stap 1107. Is dit niet het geval (N), dan wordt in stap 1113 gecontroleerd of de huidige regel nog een volgende term bevat. Is er nog een volgende term (J), dan vervolgt de werkwijze met stap 1112. Is er geen volgende term (N), dan wordt jn stap 1114 nagegaan of de grammatica nog een volgende regel bevat. Is dit het geval (J), dan wordtin stap 1115 deze regel ingelezen en vervolgt de werkwijze met stap 1106. Is dit niet het geval dan bereikt de werkwijze eindtoestand 1116. Een voorbeeld van een geschikte geheugenstructuur, weergegeven als een haakjesstructuur, waarbij de gecodeerde feature-groepen per herschrijfregel gegroepeerd en volgens de herschrijfregel gerangschikt zijn, en waarbij telkens een wijzer is toegevoegd naar een voorgaande identieke gecodeerde feature-groep, behorende bij de grammatica van Tabel 8, is in Tabel 11 weergegeven.
Tabel 11 ((111111) (111111) (K-llllll)) (O (111111)) (00) (000) ((111111) (111111) (Rllllll))
De rangorde van de features is: SING1 SING2 SING3 PLU1 PLU2 PLU3. Door de gecodeerde feature-groepen te voorzien van wijzers naar identieke groepen binnen hetzelfde rechterhanddeel, wordt het bepalen van overeenstemming binnen een groep van gelijke gedeclareerde features versneld. Voor de wijzer wordt de in stap 1109 bepaalde afstand genomen.
Het volgens de uitvinding verwerken van features strekt tot grote voordelen. De ontwerper van een herkenningssysteem, werkend volgens de uitvinding wordt hierdoor in staat gesteld op een nauwkeurige wijze te bepalen in hoeverre signalen af mogen wijken van de ideale signalen, om toch nog geaccepteerd te worden. Met name in situaties, waarin de binnenkomende signalen verminkt zijn, bijvoorbeeld tengevolge van 'U;
onnauwkeurigheden van een opnemer, waarin de signalen zeer zwak zijn, of waarin de signalen intrinsiek een grote variantie vertonen, zoals bij handgeschreven karakters of bij O
spraaksignalen, strekt dit tot grote voordelen. -
Aan de hand van enkele voorbeelden zal de veelzijdigheid en kneedbaarheid van een grammatica, opgesteld volgens een voor zover het het introduceren van features in herschrijfregels betreft in overeenstemming met de uitvinding aangepast grammatica-formalisme, nader geïllustreerd worden. De voorbeelden refereren naar de in Tabel 12 weergegeven grammatica-regels. Deze regels, welke onderling niet consistent zijn, dienen enkel ter illustratie van de veelzijdigheid van het volgens de uitvinding aangepaste grammatica-formalisme. De toepassing hiervan is niet beperkt tot natuurlijke taalverwerking.
Tabel 12
#Ftrs = SING1 SING2 SING3 PLU1 PLU2 PLU3 DUMMY #Getal = SING1 SING2 SING3 PLU1 PLU2 PLU3 #Dum = DUMMY
0 S:NP(Getal), VP(SING1+SING2+SING3+PLU1+PLU2+PLU3) 1 NP(Getal) :*det(Getal), *noun(Getal+Dum).
2 NP(PLU3) :*noun(Getal).
Regel O toont dat een feature-groep gevormd mag worden door het optellen van features. De groep Getal is gelijk aan de bij VP gedefinieerde groep. Dit impliceert dat bij het unificeren getest wordt op overeenstemming tussen de corresponderende actuele feature-indicatoren. Wil men voorkomen, dat getest wordt op overeenstemming, dan is het mogelijk, zoals in regel 1 geïllustreerd, een dummy feature toe te voegen aan de groep getal. De groep 'Getal+ Dum' is niet gelijk aan de groep 'Getal' en dientengevolge wordt niet op overeenstemming getest. In regel 2 wordt aan NP altijd de feature 'PLU3' toegekend. Op deze manier kunnen features geïntroduceerd worden, welke niet meer met een terminal geassocieerd behoeven te zijn.

Claims (23)

1. Inrichting voor syntactische signaal-analyse omvattende: - een conversie-eenheid (101) voor het converteren van een ingangssignaal in primitieven en met de primitieven corresponderende genormaliseerde primitieven, - een met de conversie-eenheid verbonden patroonherkennings-eenheid (102) voor het opleveren van een syntactische analyse van telkens een reeks van genormaliseerde primitieven aan de hand van een grammatica, - een geheugen-eenheid (103) voor het opslaan van de grammatica, welke grammatica in herschrijfregels geordende termen, mede omvattende met genormaliseerde primitieven corresponderende terminals, omvat, met het kenmerk, - dat de conversie-eenheid feature-extractie-middelen omvat voor het afleiden van features uit elke primitieve,· voor het samenvoegen van de uit elke primitieve afgeleide features tot actuele feature-groepen en voor het toekennen van de actuele feature-groepen aan de met de primitieve corresponderende genormaliseerde primitieven, - dat de grammatica met de termen geassocieerde gedeclareerde feature-groepen omvaten - dat de patroonherkennings-eenheid middelen omvat voor het unificeren van de actuele en gedeclareerde feature-groepen.
2. Inrichting volgens conclusie 1, met het kenmerk, dat de patroonherkennings-eenheid middelen omvat voor het toekennen van een overtredingsscore aan de syntactische analyse op basis van het unificeren van de actuele en gedeclareerde feature-groepen.
3. Inrichting volgens conclusie 2, met het kenmerk, dat de inrichting middelen omvat voor het afbreken van het parseren indien de overtredingsscore een drempelwaarde overschrijdt, alsmede middelen om de drempelwaarde op te hogen indien de overtredingsscore de drempelwaarde overschrijdt en middelen om het parseren te herbeginnen.
4. Inrichting volgens een der conclusies 2-3, met het kenmerk, dat de inrichting correctie-middelen omvat, welke geactiveerd worden indien de overtredingsscore ongelijk nul is.
5. Inrichting volgens een der conclusies 2-4, met het kenmerk, dat de inrichting tevens alarmeringsmiddelen omvat, welke geactiveerd worden in afhankelijkheid van de overtredingsscore.
6. Inrichting volgens een der conclusies 1-5, met het kenmerk, dat een feature-groep gerepresenteerd wordt door een binair getal.
7. Inrichting volgens een der conclusies 1-6, met het kenmerk, dat de conversie-eenheid detectie-middelen omvatten voor het omzetten van het ingangssignaal naar een electrisch signaal.
8. Werkwijze voor syntactische signaai-analyse aan de hand van een in een geheugen opgeslagen grammatica, omvattende de navolgende stappen: - het converteren van een ingangs-signaal in een stroom van primitieven en met de primitieven corresponderende genormaliseerde primitieven, - het parseren van telkens een reeks van genormaliseerde primitieven met behulp van de grammatica, met het kenmerk, dat de grammatica gedeclareerde feature-groepen omvat, en dat de werkwijze tevens de navolgende stappen omvat: - het afleiden van actuele features uit elke primitieve, - het samenvoegen van actuele features tot actuele feature-groepen, - het toekennen van de actuele feature-groepen aan de met de primitieve corresponderende genormaliseerde primitieve, en - het unificeren van de actuele en gedeclareerde feature-groepen.
9. Werkwijze volgens conclusie 8, waarbij de grammatica in herschrijfregels geordende en per herschrijfregel over een linkerhanddeel en een rechterhanddeel verdeelde termen omvat, en waarbij het parseren een reductie-stap omvat voor het reduceren van een reeks van actuele termen tot een actuele gereduceerde term, door het, overeenkomstig een van toepassing zijnde herschrijfregel, welke herschrijfregel een met de reeks van actuele termen corresponderend rechterhand-deel omvat, herschrijven van de reeks van actuele termen tot de term uit het linkerhand-deel, met het kenmerk, dat de gedeclareerde feature-groepen geassocieerd zijn met de termen uit de grammatica, dat het unificeren per reductiestap wordt uitgevoerd op de met de termen van de van toepassing zijnde herschrijfregel geassocieerde actuele en gedeclareerde feature-groepen ter bepaling van de actuele feature-groepen van de in de onderhavige reductie-stap verkregen actuele gereduceerde term, en dat het unificeren de volgende stappen omvat: - het bepalen van overeenstemming tussen elke gedeclareerde feature-groep en de corresponderende actuele feature-groep en het ophogen van een overtredingsscore indien geen overeenstemming wordt gevonden, - het bepalen van overeenstemming tussen actuele feature-groepen welke corresponderen met gelijke in het rechterhanddeel gedeclareerde feature-groepen en het ophogen van de overtredingsscore, indien geen overeenstemming wordt gevonden, en - het bepalen van actuele feature-groepen voor elke in het linkerhanddeel gedeclareerde feature-groep en het ophogen van de overtredingsscore indien een actuele feature-groep geen enkele feature codeert.
10. Werkwijze volgens conclusie 9, met het kenmerk, dat het bepalen van overeenstemming tussen elke gedeclareerde feature-groep en de corresponderende actuele feature-groep, omvat het bepalen van telkens een gevalideerde feature-groep door het bepalen van de logische doorsnede van de betreffende actuele feature-groep met de betreffende gedeclareerde feature-groep, dat het bepalen van overeenstemming tussen actuele feature-groepen, welke corresponderen met in het rechterhanddeel gedeclareerde onderling gelijke feature-groepen, omvat het bepalen van telkens een geünificeerde feature-groep door het bepalen van de logische doorsnede van alle corresponderende gevalideerde feature-groepen, dat de werkwijze tevens de navolgende stappen omvat: a. het coderen van alle features, welke niet geassocieerd zijn met een der termen van het rechterhanddeel van de onderhavige herschrijf regel in een feature-groep b. het bepalen van de logische vereniging van alle geünificeerde feature-groepen tezamen met gevalideerde feature-groepen, welke corresponderen met gedeclareerde feature-groepen welke slechts eenmaal in de betreffende herschrijfregel voorkomen, en dat het bepalen van actuele feature-groepen voor elke in het linkerhanddeel gedeclareerde feature-groep, omvat, in het geval dat de in het linkerhanddeel gedeclareerde feature-groep ook in het rechterhanddeel is gedeclareerd, het bepalen van de logische doorsnede van de gedeclareerde feature-groep met de logische vereniging van de feature-groep bepaald in stap a en de uitkomst van stap b, en, in het geval dat de in het linkerhanddeel gedeclareerde feature-groep niet in het rechterhandeel is gedeclareerd het toekennen van de gedeclareerde feature-groep aan de actuele feature-groep.
11. Werkwijze volgens een der conclusies 9-10, met het kenmerk, dat de werkwijze tevens de volgende stap omvat: - het, indien de overtredingsscore een drempelwaarde overschrijdt, afbreken van het parseren, het verhogen van de drempelwaarde tot de waarde van de overtredingsscore gesommeerd met een instelbare waarde, en het vervolgens herbeginnen van het parseren van de reeks van genormaliseerde primitieven.
12. Werkwijze volgens een der conclusies 9-11, met het kenmerk, dat de werkwijze tevens de volgende stap omvat: - het, indien het parseren tenminste twee oplossingen oplevert, selecteren van de oplossing waarvan de overtredingsscore het kleinst is.
13. Werkwijze volgens een der conclusies 9-12 met het kenmerk, dat de werkwijze tevens de volgende stap omvat: - het starten van een correctie-actie als de overtredingsscore ongelijk nul is.
14. Werkwijze volgens conclusie 13, met het kenmerk, dat de correctie-actie omvat het aanpassen van een primitieve op grond van de door de parser opgeleverde analyse.
15. Werkwijze volgens een der conclusies 9-14, met het kenmerk, dat alarmeringsmiddelen worden geactiveerd indien het parseren geen oplossing oplevert en eveneens indien de overtredingsscore een instelbare waarde overschrijdt
16. Werkwijze volgens een der conclusies 8-15, met het kenmerk, dat de werkwijze eveneens de volgende stap omvat: het coderen van feature-groepen tot binaire getallen.
17. Werkwijze voor het coderen van features, gekenmerkt door - het toekennen van een rangnummer n aan iedere feature, - het vormen van een een feature-groep representerend binair getal, omvattende een reeks van binaire waarden, door het plaatsen van een eerste binaire waarde op alle posities in de reeks met rangnummers overeenkomend met rangnummers van de features welke opgenomen dienen te worden in de feature-groep en het plaatsen van een tweede binaire waarde op de overige posities in de reeks.
18. Werkwijze volgens conclusie 17, waarbij de features geassocieerd zijn met termen, opgenomen in herschrijfregels van een grammatica, met het kenmerk, dat de werkwijze de volgende stappen omvat: het per herschrijfregel gegroepeerd en volgens de herschrijfregel gerangschikt opslaan van de gecodeerde feature-groepen in het geheugen, en het, indien in de per herschrijfregel gegroepeerde en volgens de herschrijfregel gerangschikte groep een voorgaande identieke gecodeerde feature-groep aanwezig is, toevoegen van een wijzer naar deze voorgaande identieke gecodeerde feature-groep.
19. Inrichting voor signaal-analyse volgens een der conclusies 1-7, met het kenmerk, - dat de feature-extractie-middelen geschikt zijn voor het uit een primitieve afleiden van elkaar onderling uitsluitende features en voor het opnemen van deze features in de actuele feature-groepen, en - dat de patroonherkenningsmiddelen geschikt zijn voor het verwerken van de in de actuele feature-groepen opgenomen elkaar onderling uitsluitende features.
20. Inrichting voor syntactische signaal-analyse volgens een der conclusies 1-7 en 19, toe te passen voor optische tekenherkenning, waarbij de door de patroonherkennings-eenheid op te leveren syntactische analyse tenminste een te herkennen teken omvat, met het kenmerk, - dat de inrichting opslagmiddelen omvat voor het opslaan van een tekenbeeld behorende bij een herkend teken en gevormd door de primitieven corresponderende met de genormaliseerde primitieven uit de betreffende invoerreeks tezamen met de overtredingsscore, - dat de inrichting middelen omvat voor het vergelijken van een opgeslagen overtredingsscore met een door de patroonherkenningsmiddelen bepaalde overtredingsscore voor een zelfde herkend teken alsmede voor het overschrijven van een opgeslagen tekenbeeld door een tekenbeeld behorende bij een zelfde herkend teken, indien de vergelijkingsmiddelen uitwijzen dat de opgeslagen overtredingsscore hoger is dan de overtredingsscore van het herkende teken.
21. Inrichting voor syntactische signaal-analyse volgens een der conclusies 1-7 en 19-20, toe te passen voor optische tekenherkenning, waarbij de analyse tenminste een te herkennen teken omvat met het kenmerk, dat de aan de patroonherkennings-eenheid toegevoerde reeksen van genormaliseerde primitieven elk een zodanig aantal genormaliseerde primitieven omvatten dat de corresponderende syntactische analyses telkenmale een in hoofdzaak gelijk aantal te herkennen tekens omvatten.
22. Inrichting volgens conclusie 21, met het kenmerk, dat opeenvolgende aan de patrponherkennings-eenheid toegevoerde reeksen van genormaliseerde primitieven elkaar overlappen.
23. Werkwijze voor het omzetten van een door een optische aftaster verkregen i:t regels tekst representerend pixelpatroon in een reeks van voor patroonherkenning geschikte primitieven en features, omvattende de navolgende stappen: - het verdelen van het pixelpatroon in evenwijdige aan elkaar grenzende stroken, die in hoofdzaak met een regel te herkennen tekst samenvallen, - het verdelen van elke strook in een aantal kolommen met een breedte van een vaststaand aantal pixels, - het toekennen van een categorie aan elke kolom op basis van de pixelverdeling in de kolom, - het vormen van primitieven door het samenvoegen van aan elkaar grenzende kolommen waaraan dezelfde categorie is toegekend, en - het afleiden van features uit iedere in de voorgaande stap verkregen primitieve.
NL9300310A 1993-02-19 1993-02-19 Inrichting en werkwijze voor syntactische signaal-analyse. NL9300310A (nl)

Priority Applications (7)

Application Number Priority Date Filing Date Title
NL9300310A NL9300310A (nl) 1993-02-19 1993-02-19 Inrichting en werkwijze voor syntactische signaal-analyse.
EP93200893A EP0612018B1 (en) 1993-02-19 1993-03-29 Apparatus and method for syntactic signal analysis
DE69331044T DE69331044T2 (de) 1993-02-19 1993-03-29 Vorrichtung und Verfahren zur syntaktischen Signalanalyse
TW082106458A TW308659B (nl) 1993-02-19 1993-08-12
JP6016559A JP2723462B2 (ja) 1993-02-19 1994-02-10 構文信号解析方法及び装置
US08/562,787 US5550934A (en) 1993-02-19 1995-11-27 Apparatus and method for syntactic signal analysis
US08/674,732 US5784489A (en) 1993-02-19 1996-07-02 Apparatus and method for syntactic signal analysis

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NL9300310 1993-02-19
NL9300310A NL9300310A (nl) 1993-02-19 1993-02-19 Inrichting en werkwijze voor syntactische signaal-analyse.

Publications (1)

Publication Number Publication Date
NL9300310A true NL9300310A (nl) 1994-09-16

Family

ID=19862082

Family Applications (1)

Application Number Title Priority Date Filing Date
NL9300310A NL9300310A (nl) 1993-02-19 1993-02-19 Inrichting en werkwijze voor syntactische signaal-analyse.

Country Status (5)

Country Link
US (2) US5550934A (nl)
EP (1) EP0612018B1 (nl)
DE (1) DE69331044T2 (nl)
NL (1) NL9300310A (nl)
TW (1) TW308659B (nl)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848191A (en) * 1995-12-14 1998-12-08 Xerox Corporation Automatic method of generating thematic summaries from a document image without performing character recognition
US5850476A (en) * 1995-12-14 1998-12-15 Xerox Corporation Automatic method of identifying drop words in a document image without performing character recognition
US5892842A (en) * 1995-12-14 1999-04-06 Xerox Corporation Automatic method of identifying sentence boundaries in a document image
US5870700A (en) * 1996-04-01 1999-02-09 Dts Software, Inc. Brazilian Portuguese grammar checker
US6236959B1 (en) * 1998-06-23 2001-05-22 Microsoft Corporation System and method for parsing a natural language input span using a candidate list to generate alternative nodes
US20070118358A1 (en) * 2005-11-08 2007-05-24 Tom Alexander S Phrase processor
US9047275B2 (en) 2006-10-10 2015-06-02 Abbyy Infopoisk Llc Methods and systems for alignment of parallel text corpora
US9645993B2 (en) 2006-10-10 2017-05-09 Abbyy Infopoisk Llc Method and system for semantic searching
US8195447B2 (en) 2006-10-10 2012-06-05 Abbyy Software Ltd. Translating sentences between languages using language-independent semantic structures and ratings of syntactic constructions
US9633005B2 (en) 2006-10-10 2017-04-25 Abbyy Infopoisk Llc Exhaustive automatic processing of textual information
US20080086298A1 (en) * 2006-10-10 2008-04-10 Anisimovich Konstantin Method and system for translating sentences between langauges
US9984071B2 (en) 2006-10-10 2018-05-29 Abbyy Production Llc Language ambiguity detection of text
US8214199B2 (en) * 2006-10-10 2012-07-03 Abbyy Software, Ltd. Systems for translating sentences between languages using language-independent semantic structures and ratings of syntactic constructions
US8548795B2 (en) * 2006-10-10 2013-10-01 Abbyy Software Ltd. Method for translating documents from one language into another using a database of translations, a terminology dictionary, a translation dictionary, and a machine translation system
US9235573B2 (en) 2006-10-10 2016-01-12 Abbyy Infopoisk Llc Universal difference measure
US8145473B2 (en) 2006-10-10 2012-03-27 Abbyy Software Ltd. Deep model statistics method for machine translation
DE102007006084A1 (de) 2007-02-07 2008-09-25 Jacob, Christian E., Dr. Ing. Verfahren zum zeitnahen Ermitteln der Kennwerte, Harmonischen und Nichtharmonischen von schnell veränderlichen Signalen mit zusätzlicher Ausgabe davon abgeleiteter Muster, Steuersignale, Ereignisstempel für die Nachverarbeitung sowie einer Gewichtung der Ergebnisse
US8959011B2 (en) 2007-03-22 2015-02-17 Abbyy Infopoisk Llc Indicating and correcting errors in machine translation systems
US8812296B2 (en) 2007-06-27 2014-08-19 Abbyy Infopoisk Llc Method and system for natural language dictionary generation
US8219407B1 (en) 2007-12-27 2012-07-10 Great Northern Research, LLC Method for processing the output of a speech recognizer
US9262409B2 (en) 2008-08-06 2016-02-16 Abbyy Infopoisk Llc Translation of a selected text fragment of a screen
US9244902B2 (en) * 2011-10-20 2016-01-26 Zynga, Inc. Localization framework for dynamic text
US8989485B2 (en) 2012-04-27 2015-03-24 Abbyy Development Llc Detecting a junction in a text line of CJK characters
US8971630B2 (en) 2012-04-27 2015-03-03 Abbyy Development Llc Fast CJK character recognition
RU2592395C2 (ru) 2013-12-19 2016-07-20 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Разрешение семантической неоднозначности при помощи статистического анализа
RU2586577C2 (ru) 2014-01-15 2016-06-10 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Фильтрация дуг в синтаксическом графе
RU2596600C2 (ru) 2014-09-02 2016-09-10 Общество с ограниченной ответственностью "Аби Девелопмент" Способы и системы обработки изображений математических выражений
US9626358B2 (en) 2014-11-26 2017-04-18 Abbyy Infopoisk Llc Creating ontologies by analyzing natural language texts

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0266001A2 (en) * 1986-10-29 1988-05-04 International Business Machines Corporation A parser for natural language text
EP0361570A1 (en) * 1988-09-15 1990-04-04 Océ-Nederland B.V. A method of grammatically processing a sentence composed in natural language, and a system for performing such method

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4907285A (en) * 1984-08-24 1990-03-06 Hitachi, Ltd. Image understanding system
JPH07107694B2 (ja) * 1984-08-31 1995-11-15 株式会社日立製作所 文書処理装置
US5077807A (en) * 1985-10-10 1991-12-31 Palantir Corp. Preprocessing means for use in a pattern classification system
US5060277A (en) * 1985-10-10 1991-10-22 Palantir Corporation Pattern classification means using feature vector regions preconstructed from reference data
US4773099A (en) * 1985-10-10 1988-09-20 The Palantir Corporation Pattern classification means for use in a pattern recognition system
US5261009A (en) * 1985-10-15 1993-11-09 Palantir Corporation Means for resolving ambiguities in text passed upon character context
US5133023A (en) * 1985-10-15 1992-07-21 The Palantir Corporation Means for resolving ambiguities in text based upon character context
US4754489A (en) * 1985-10-15 1988-06-28 The Palantir Corporation Means for resolving ambiguities in text based upon character context
US4837842A (en) * 1986-09-19 1989-06-06 Holt Arthur W Character and pattern recognition machine and method
EP0381773B1 (en) * 1988-07-20 1998-06-10 Fujitsu Limited Character recognition apparatus
JPH0261763A (ja) * 1988-08-29 1990-03-01 Sharp Corp 機械翻訳装置
AU624205B2 (en) * 1989-01-23 1992-06-04 General Electric Capital Corporation Variable length string matcher
US5125039A (en) * 1989-06-16 1992-06-23 Hawkins Jeffrey C Object recognition system
US5020112A (en) * 1989-10-31 1991-05-28 At&T Bell Laboratories Image recognition method using two-dimensional stochastic grammars
NL9100849A (nl) * 1991-05-16 1992-12-16 Oce Nederland Bv Werkwijze voor het met behulp van een computersysteem corrigeren van een fout in een, in een natuurlijke taal gestelde zin, alsmede een inrichting geschikt voor het uitvoeren van deze werkwijze.
US5343537A (en) * 1991-10-31 1994-08-30 International Business Machines Corporation Statistical mixture approach to automatic handwriting recognition
US5359673A (en) * 1991-12-27 1994-10-25 Xerox Corporation Method and apparatus for converting bitmap image documents to editable coded data using a standard notation to record document recognition ambiguities
US5317647A (en) * 1992-04-07 1994-05-31 Apple Computer, Inc. Constrained attribute grammars for syntactic pattern recognition

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0266001A2 (en) * 1986-10-29 1988-05-04 International Business Machines Corporation A parser for natural language text
EP0361570A1 (en) * 1988-09-15 1990-04-04 Océ-Nederland B.V. A method of grammatically processing a sentence composed in natural language, and a system for performing such method

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
B. BELL & L.F. PAU: "Context knowledge and search control issues in object-oriented Prolog-based image understanding", PATTERN RECOGNITION LETTERS, vol. 13, no. 4, April 1992 (1992-04-01), AMSTERDAM NL, pages 279 - 290, XP000271329 *
J.M. VAN ZUIJLEN: "Probabilistic Methods in Dependency Grammar Parsing", INTERNATIONAL PARSING WORKSHOP, 1989, PITTSBURG, US, pages 142 - 151, XP000108132 *
R.A.L. WILLIAMS: "A Syntactic-Semantic Automaton for Pattern Recognition", GEC JOURNAL OF RESEARCH, vol. 1, no. 2, 1983, RUGBY GB, pages 92 - 99 *
S.-Y. LU & K.-S. FU: "Error-Correcting Tree Automata for Syntactic Pattern Recognition", IEEE TRANSACTIONS ON COMPUTERS, vol. C-27, no. 11, November 1978 (1978-11-01), NEW YORK US, pages 1040 - 1053 *
Y. FUJIWARA: "Applicability of Word Clustering to the English and Japanese Languages", TRANSACTIONS OF THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS OF JAPAN, vol. E72, no. 10, October 1989 (1989-10-01), TOKYO JP, pages 1149 - 1156, XP000074445 *

Also Published As

Publication number Publication date
DE69331044D1 (de) 2001-12-06
TW308659B (nl) 1997-06-21
US5784489A (en) 1998-07-21
EP0612018B1 (en) 2001-10-31
EP0612018A1 (en) 1994-08-24
DE69331044T2 (de) 2002-06-06
US5550934A (en) 1996-08-27

Similar Documents

Publication Publication Date Title
NL9300310A (nl) Inrichting en werkwijze voor syntactische signaal-analyse.
JP3950535B2 (ja) データ処理方法及び装置
Vivaldi et al. Improving term extraction by system combination using boosting
CN108595410A (zh) 手写作文的自动批改方法及装置
US20090077053A1 (en) Method For Searching For, Recognizing And Locating A Term In Ink, And A Corresponding Device, Program And Language
CN111177375B (zh) 一种电子文档分类方法及装置
JP2002215619A (ja) 翻訳文書からの翻訳文抽出方法
US7302384B2 (en) Left-corner chart parsing
CN110866390A (zh) 中文语法错误的识别方法、装置、计算机设备和存储介质
Sidnyaev et al. Formal grammar theory in recognition methods of unknown objects
KR20220046771A (ko) 문장 구두점 제공 시스템 및 방법
Palmer SATZ-an adaptive sentence segmentation system
CN113569046B (zh) 裁判文书人物关系识别方法、装置和电子设备
US20220067107A1 (en) Multi-section sequential document modeling for multi-page document processing
Kuboň Problems of robust parsing of Czech
KR20010075848A (ko) 정규표현과 확률적 문맥정보를 이용한 문장범위 인식 장치및 그 방법
JPH06131500A (ja) 文字認識装置
JPH05298349A (ja) 共起関係知識学習方法、そのシステム、並びに共起関係辞書およびその利用方法
CN115048491B (zh) 在异构语义空间中基于假设检验的软件跨模态检索方法
Lyon et al. Using single layer networks for discrete, sequential data: an example from natural language processing
Sornlertlamvanich et al. Empirical evaluation of probabilistic glr parsing
JP2723462B2 (ja) 構文信号解析方法及び装置
CN113254658B (zh) 文本信息处理方法、系统、介质和设备
CN116720481A (zh) 基于人工智能的文本重构方法、装置、计算机设备及介质
Sornlertlamvanich Probabilistic language modeling for generalized LR parsing

Legal Events

Date Code Title Description
A1B A search report has been drawn up
BV The patent application has lapsed