Hoewel het woord computer letterlijk rekenaar betekent, wordt de computer tegenwoordig meer en meer gebruikt voor toepassingen die met teksten te maken hebben. Iedereen is wel bekend met tekstverwerking. Een andere belangrijke toepassing, waar we het deze keer over willen hebben, is het zoeken in teksten.
De computer is hier bijzonder bedreven in. Zonder moeite kunnen duizenden bladzijdes tekst (in elektronische vorm) doorzocht worden. Soms ben je daarbij geinteresseerd in het vinden van bepaalde woorden, maar meestal in iets algemenere patronen.
[g,e,r,t,j,a,n]Spreek uit: een g gevolgd door een e, gevolgd door een r, gevolgd door een t, gevolgd door een j, gevolgd door een a, gevolgd door een n. Deze expressie matcht slechts met gertjan. In plaats van de g kunnen we ook een G toestaan. In zo'n geval schrijven we {g,G} (spreek uit: g of G). Ook de j kan als hoofdletter worden geschreven. We krijgen dus:
[{G,g},e,r,t,{j,J},a,n]
Deze expressie matcht dus met vier verschillende vormen: gertjan,
gertJan, Gertjan en GertJan.
Tenslotte kunnen we aangeven dat na de r eventueel een
tussenstreepje mogelijk is. Om aan te geven dat het streepje wel
mogelijk is, maar niet verplicht, gebruiken we de ^.
[{G,g},e,r,t,'-'^,{j,J},a,n]
Met hoeveel verschillende vormen matcht deze expressie?
Het streepje zelf moet tussen aanhalingstekens worden geplaatst. Dit
is noodzakelijk omdat in zo'n reguliere expressie sommige letters een
speciale betekenis hebben. Om nu duidelijk te maken dat je een letter
letterlijk bedoelt, kun je de aanhalingstekens gebruiken. Als
je bijvoorbeeld een spatie wilt invoeren als onderdeel van een
patroon, dan zijn zulke aanhalingstekens ook nodig:
[{G,g},e,r,t,{'-',' '}^,{j,J},a,n]
Wat staat hier nu? Een G of een g, gevolgd door een
e, gevolgd door een r, gevolgd door een t,
eventueel gevolgd door een spatie of een streepje, gevolgd door een
j of een J, gevolgd door een a, gevolgd
door een n. Dit match nu bijvoorbeeld ook met gert jan.
Wanneer de computer zo'n reguliere expressie leest, dan wordt een klein computerprogrammaatje gebouwd. Zo'n programmaatje kunnen we als volgt weergeven in de vorm van een plaatje. Zo'n plaatje wordt vaak een transitiediagram genoemd.
De computer start steeds in de groene begintoestand. Om te checken of een gegeven input aan het patroon voldoet moet de eerstvolgende letter van de input overeenkomen met de letter die bij een pijl hoort. In dat geval kom je in een volgende toestand terecht. Zo werkt de computer de input door. Wanneer de input leeg is, en de computer is in een rode eindtoestand terecht gekomen, dan voldeed de input aan het patroon. Zodra je in een toestand terecht bent gekomen waaruit geen pijlen vertrekken die met je input overeenkomen, dan voldeed je input niet.
De practicumopdrachten bij dit college maken gebruik van een programma dat automatisch reguliere expressies omzet in transitiediagrammen. Bovendien wordt van een aantal verschillende inputs vastgesteld of ze wel of niet aan het patroon voldoen.
{0,1,2,3,4,5,6,7,8,9}
kunnen we de notatie 0..9 gebruiken. Op dezelfde manier
kunnen we schrijven a..z om aan te geven dat op een positie
een (kleine) letter voorkomt. En A..Z zijn dan natuurlijk de
hoofdletters. Een postcode kan nu worden gedefinieerd als:
[0..9,0..9,0..9,0..9,' ',A..Z,A..Z]Deze definitie is een beeje streng. Wanneer iemand wat meer ruimte openlaat tussen de cijfers en de letters dan wordt de postcode niet geaccepteerd. Om aan te geven dat iets 1 keer of vaker mag voorkomen, bestaat de + notatie:
[0..9,0..9,0..9,0..9,' '+,{A..Z,a..z},{A..Z,a..z}]
Hier staat dus: vier cijfers, gevolgd door één of meer
spaties, gevolgd door een kleine letter of een hoofdletter gevolgd
door een kleine letter of een hoofdletter. Naast de +
notatie bestaat ook nog de * notatie om aan te geven dat iets 0
keer of vaker mag voorkomen.
$ [{G,g},e,r,t,{'-',' '}^,{j,J},a,n]
Deze expressie laat alle inputs toe waarin ergens mijn naam voorkomt!
A..Z+of een punt bevat:
$ '.'De twee mogelijkheden samen leveren dan:
{ A..Z+ , $ '.' }
t.a.v. KPN NAVO CIA KGB mr. jl. C.I.D. o.a. PSP'er NOSstudio NAVO-generaals N.O.-I N.H.M.-tarieven SALT-perscentrum oud-ASVA-voorzitter N.S.B.ers S.S.'ersMaar tegelijkertijd is het de bedoeling dat voorbeelden zoals deze niet geaccepteerd worden:
Gertjan boterhammenzakje 15.30 4.49.6 ... U
[a,a]* & [a,a,a]*Links van het & symbool worden alle inputs geaccepteerd met een aantal a's dat deelbaar is door twee. Rechts worden ook inputs geaccepteerd, maar alleen als het aantal deelbaar is door drie. Gecombineerd met de intersectie operator worden alleen inputs bestaande uit a's geaccepteerd als het aantal a's deelbaar is door zes.
Welke patronen worden herkend door de reguliere expressies van:
Borst Mendes de Leon Zalm Job Cohen Cohen Mordaunt Hans van Dam Scholten van Aschat Saskia Temmink DICK JASPERS Polychronopoulos GERWIN VALENTIJN R. Ceulemans LOUIS HAVERMANS John v.d.Wiel Van Happen Peter Paul de Vrind Ton van Happen De Vrind Marc-Kevin GöllnerHet probleem is natuurlijk om er voor te zorgen dan alleen deze inputs te accepteren. Hoeveel regels van het volgende Teletekst bericht bevatten namen volgens jouw reguliere expressie?
Debat Veiligheidsraad over Kosovo VERENIGDE NATIES De VN-Veiligheidsraad komt vandaag in spoedzitting bijeen ter bespreking van de situatie in Kosovo. De aanleiding is een bloedbad dat Serviers dit weekeinde hebben aangericht onder burgers in het dorp Gornje Obrinje. Verslaggevers hebben daar 18 verminkte lijken aangetroffen. Het bloedbad lijkt een vergelding voor de dood van zeven Servische politiemannen,die vorige week in het gebied bij een bomaanslag om het leven kwamen. De NAVO beslist begin volgende week over een mogelijk militair optreden tegen Joegoslavie. Rusland heeft daar al op voorhand tegen gewaarschuwd.
Een voorbeeld dat het nuttig kan zijn om namen in teksten te herkennen is automatische vertaling. Niet alleen is het niet nodig om namen te vertalen, het is bovendien fout. Kortgeleden liet ik (voor de aardigheid) mijn homepage van het Engels naar het Portugees vertalen, met behulp van een automatisch vertaalsysteem. Mijn naam werd in het Portugees Gertjan camionete Noord, omdat van immers het Engelse woord voor vrachtwagen is!
Informatiekunde onderzoekt de communicatie- en informatieprocessen bij organisaties en individuen, en de rol die ICT daarin speelt.
De informatiekunde op de RuG legt een bijzondere nadruk op talige informatie. Het onderzoek en onderwijs richt zich daarom vooral op ICT in combinatie met taal, tekst en communicatie. De Groninger informatiekunde bevindt zich daarmee op het snijvlak tussen de traditionele letterenstudies (taal, cultuur en geschiedenis) en de informatie- en communicatietechnologie.
ICT heeft de wereld van communicatie diep veranderd. De productie, redactie, publicatie, revisie, vertaling, distributie en receptie van teksten geschiedt in toenemende mate door middel van ICT. Deze processen vergen allemaal de analyse van taal en teksten, om te weten hoe men in teksten naar informatie kan zoeken, hoe men teksten kan representeren, sorteren, comprimeren, versturen, en opslaan. Verder maakt ICT het steeds makkelijker om naast tekstuele boodschappen ook grafisch, symbolisch, geanimeerd, en akoestisch materiaal te gebruiken en met elkaar te combineren.
Omdat de informatiekunde in Groningen gericht is op talige informatie, en de automatische verwerking daarvan, is de computationele taalkunde een voorname wetenschappelijke basis voor het onderzoek. De computationele taalkunde ambieert om inzichten uit de taalkunde en de informatica te combineren, om inzicht te krijgen in de mogelijkheden om natuurlijke taal automatisch te verwerken. De communicatiekunde leert ons hoe communicatie (succesvol) verloopt, en biedt wetenschappelijke hulpmiddelen om communicatieve systemen te ontwerpen, implementeren en evalueren. De manier waarop het onderzoek en onderwijs in de informatiekunde in Groningen gestalte krijgt kenmerkt zich door de combinatie van wetenschappelijke interesse in algemene onderzoeksvragen met de interesse voor de implementatie van (deel-)oplossingen voor concrete praktische problemen. Dit leidt ertoe dat behoorlijke eisen worden gesteld aan programeervaardigheden en kennis van de methodologische aspecten van experimenteel onderzoek.
Postbus 716, 9700 AS Groningen; (050) 3635974; www.let.rug.nl/alfa; bosveld@let.rug.nl