dinsdag 30 november 2010

Nederlandse zinsontleding en syntaxisbomen

In een vorig blogbericht meldde ik dat mijn bedrijf Sirius Computing een grammatica voor het Nederlands heeft ontwikkeld. Op basis van deze formele Nederlandse grammatica ontwikkelen we nu een toepassing voor het syntactisch ontleden van Nederlandse zinnen en het opbouwen van syntaxisbomen. Deze syntaxisbomen zullen in een latere fase gebruikt worden om de betekenis uit een Nederlandse tekst te extraheren.


Tijdens de ontwikkeling van ons eerste prototype bleek wel reeds dat we bijkomende linguïstische informatie nodig hadden voor het correct ontleden van Nederlandse zinnen. Zo gebruiken we nu bijvoorbeeld het geslacht van Nederlandse woorden bij de opsplitsing tussen het persoonlijk voornaamwoord 'het' en het zelfstandig naamwoord 'vakantie' (zie de derde zin in bovenstaande figuur).


Voor een correcte zinsontleding van de 2de zin in de bovenste figuur moesten we ook opgeven dat het woord 'moeilijk' een mogelijk bijwoord is bij het werkwoord 'zijn'. Zoniet werd dit bijwoord als een bijvoeglijk naamwoord aanzien.

maandag 4 oktober 2010

Implementatie van een Nederlandse grammatica

Mijn bedrijf Sirius Computing ontwikkelt momenteel een toepassing voor kennisextractie uit Nederlandse tekst. Om dit kennisextractieproces mogelijk te maken hebben we net een Nederlandse grammatica geïmplementeerd. De grammatica is voornamelijk gebaseerd op de Nederlandse woordvolgorde zoals beschreven op de website Dutchgrammar.com voor NT2-studenten. Op dit moment is de grammatica niet compleet maar de grammatica kan via onze crowdsourcingapplicatie makkelijk worden uitgebreid. Indien nodig kunnen we voor de verdere uitbreiding van de grammatica ook gebruik maken van de website van de elektronische Algemene Nederlandse Spraakkunst.

Gebruikmakend van de grammatica kunnen we een Nederlandse zin reeds opsplitsen in naamwoordgroep, voorzetsel+naamwoordgroep en werkwoordgroep. Op basis van deze opsplitsing willen we de belangrijkste zinsdelen (onderwerp, lijdend voorwerp, meewerkend voorwerp en werkwoordelijke constituent) uit een Nederlandse zin extraheren. Deze zinsdelen kunnen we dan gebruiken als grammaticale controle van de basiszin.

vrijdag 10 september 2010

Kennisextractie uit een Nederlandse tekst 3

De ontwikkeling van een kennisextractietoepassing uit Nederlandse tekst door Sirius Computing verloopt als gepland. Een eerste stap in het kennisextractieproces is om onbekende lemma's te identificeren en deze met de juiste grammaticale categorie toe te voegen aan de termbank. De identificatie van de mogelijke lemma's verloopt automatisch zodra de tekst in het linkertekstvak wordt geplakt. In het rechtertekstvak verschijnen de voorgestelde wijzigingen aan de termbank. Deze lijst van voorgestelde wijzigingen kan door de gebruiker worden gecorrigeerd. Door vervolgens op de knop Effectueer te klikken, worden de voorgestelde wijzigingen doorgevoerd en wordt de tekst opnieuw geanalyseerd.


Onbekende woorden kunnen ook manueel worden toegevoegd. Per grammaticale categorie verschijnt een aangepast dialoogvenster waarmee het juiste lemma kan worden toegevoegd. Via het menu-item 'Voeg werkwoord toe...' onder de rechtermuisknop kan bijvoorbeeld een ontbrekend werkwoord worden toegevoegd. Na het invullen van de hoofding worden de mogelijke vervoegingen voorgesteld na een druk op de knop '?'. De gebruiker kan vervolgens de voorgestelde vervoegingen controleren en bevestigen door op de knop 'Bewaar & sluit' te klikken.


In een volgende versie willen we ook ontbrekende grammaticale patronen (sequenties van grammaticale categorieën voor een Nederlandse zin) semi-automatisch laten herkennen en toevoegen. Hiervoor moeten we waarschijnlijk een model voor Nederlandse zinsontleding bouwen. Meer hierover in een volgend blogbericht...

vrijdag 20 augustus 2010

Kennisextractie uit een Nederlandse tekst 2

Na de ontwikkeling van een semantische databankeditor voor het taalonafhankelijk beheren van (encyclopedische) kennis, heeft mijn softwarebedrijf Sirius Computing de ontwikkeling van een kennisextractor uit Nederlandse tekst aangevat. Een eerste prototype kan reeds naamwoordgroepen uit een Nederlandse tekst extraheren. Naamwoordgroepen zijn frasen waarvan de kern een naamwoord is. Belangrijke zinsdelen - zoals onderwerp, lijdend voorwerp en meewerkend voorwerp - bestaan uit naamwoordgroepen.
De bedoeling is om ook verbale constituenten en voorzetselconstituenten uit de tekst te extraheren en op basis daarvan relaties tussen de verschillende naamwoordgroepen te vinden. Deze tekstspecifieke kennis kan dan in een latere stap semi-automatisch worden gegeneraliseerd in een algemene kennisbank.


Sirius Computing specialiseert zich in crowdsourcingapplicaties d.w.z. applicaties die de gebruikers mee kunnen verbeteren. Vandaar dat we de gebruikers de mogelijkheid bieden om de grammaticale patronen voor de herkenning van naamwoordgroepen mee te beheren. Via de optie 'Voeg naamwoordgroep toe' uit het rechtermuismenu is het bijvoorbeeld mogelijk om een geselecteerde frase als naamwoordgroep aan te duiden. Frasen die voldoen aan dit grammaticale patroon worden dan na een druk op de knop Extraheer eveneens als naamwoordgroep herkend.
Via de tab Kennisbeheer.Naamwoordgroepen kunnen alle naamwoordgroepen eveneens worden beheerd.

maandag 16 augustus 2010

Semantische databankeditor

Mijn softwarebedrijf Sirius Computing heeft een semantische databankeditor ontwikkeld voor het beheren van een terminologische ontologie.
De semantische databankeditor laat toe om objecten toe te voegen, te verwijderen, te bewerken en te zoeken. Aan elk object kan een lijst met eigenschappen, relaties en termen worden gekoppeld. Deze eigenschappen, relaties en termen zijn zelf eveneens objecten.


Naast het gebruik van URI's (Uniform Resource Identifiers), maakt de (meertalige) terminologie, in combinatie met de ontologie, het mogelijk om objecten ondubbelzinnig te identificeren.

Voor het zoeken naar objecten in de databank werd een objectgeörienteerd filtermechanisme geïmplementeerd. De objectfilter ondersteunt het gebruik van Booleaanse logica en reguliere expressies. Het criterium heeft.* filtert bijvoorbeeld alle objecten waarvan de term start met heeft.
De filter ondersteunt het gebruik van dubbele aanhalingstekens om meerwoordexpressies te zoeken gescheiden door spaties. Het criterium "heeft inverse.*" filtert bijvoorbeeld alle objecten met een term die begint met heeft inverse.
De volgende gereserveerde woorden kunnen in de filter worden gebruikt: term, termen, eigenschap, eigenschappen, waarde, relatie, relaties, doel.
+ Term duidt een objectterm aan.
+ Termen duidt het aantal objecttermen aan.
+ Eigenschap duidt een eigenschap aan.
+ Eigenschappen duidt het aantal eigenschappen aan.
+ Waarde duidt de waarde van een eigenschap aan.
+ Relatie duidt een relatie aan.
+ Relaties duidt het aantal relaties aan.
+ Doel duidt het doelobject van een relatie aan.
Met behulp van deze sleutelwoorden kunnen vrij eenvoudig complexe filtercriteria worden samengesteld. Het filtercriterium term.eigenschap.waarde=http.* selecteert bijvoorbeeld alle objecten met een term waarvan de waarde van een eigenschap begint met http.
Ook de volgende speciale tekens (operators) worden ondersteund: !, &, |, ().
! is het teken voor de Booleaanse Not (negatie van de Booleaanse operand).
& is het teken voor de Booleaanse And operatie.
| is het teken voor de Booleaanse Or operatie.
( duidt het begin van een samengestelde Booleaanse operand aan.
) duidt het einde van een samengestelde Booleaanse operand aan.
Het filtercriterium (relatie="heeft hyperoniem" & doel=relatie) selecteert bijvoorbeeld alle relaties.

De structuur van de onderliggend object databank is gebaseerd op de W3C-standaard RDF (Resource Description Format). Volgens deze structuur hebben links tussen objecten de vorm van een drie-eenheid: onderwerp-werkwoord-object. Deze elementaire structuur maakt het mogelijk om op een generieke wijze zowel gestructureerde als ongestructureerde heterogene informatie te beheren.

De semantische databank zal in eerste instantie gebruikt worden als kennisbank in onze software voor kennisextractie uit een Nederlandse tekst.

dinsdag 13 juli 2010

Kennisextractie uit een Nederlandse tekst

Mijn softwarebedrijf Sirius Computing werk nu aan een toepassing voor kennisextractie uit een Nederlandse tekst. De bedoeling is een kennisbank te kunnen genereren met informatie uit een Nederlandse tekst. Indien de tekst bijvoorbeeld een zin bevat als "Eerste Minister Yves Leterme is naar Congo vertrokken." dan zou de kennisbank volgende informatie bevatten: "Yves Leterme is Eerste Minister" en "Yves Leterme is naar Congo vertrokken". Dergelijke kennis kan in vele andere toepassingen worden benut, zoals het semantisch zoeken naar informatie, het genereren van een tekstsamenvatting, het taalonafhankelijk doorgeven van informatie, enz.
Om dergelijke kennisextractie te kunnen doen is uiteraard basiskennis (linguïstisch en encyclopedisch) nodig. Als eerste stap zullen we dan ook een semantische databank ontwikkelen, samen met een toepassing om deze algemene kennis te beheren.
Het semi-automatisch proces van kennisextractie uit een Nederlandse tekst zou dan uit drie deelprocessen bestaan:
1) analyse van de Nederlandse tekst met behulp van linguïstische en encyclopedische kennis uit een algemene kennisbank,
2) tekstspecifieke kennisextractie uit een Nederlandse tekst en
3) het bijwerken van de algemene kennisbank met de geëxtraheerde kennis uit de Nederlandse tekst.

woensdag 30 juni 2010

Nederlands vertaalprogramma 3

Het Sirius Nederlands vertaalprogramma houdt nu ook rekening met grammaticale verschillen tussen brontaal en doeltaal. Bovendien kan er nu ook op het niveau van de frase (meerwoordsuitdrukking) worden vertaald.


Na op de knop Vertaal te klikken verschijnt ter rechterzijde de vertaalde tekst. Op basis van deze voorgestelde vertaling kan het vertaalgeheugen worden verbeterd via het rechtermuismenu.


1. De optie 'Bewerk grammaticaal patroon' laat toe om de woordvolgorde van de vertaalde zin te wijzigen. Deze volgorde geldt op het niveau van de grammaticale categorieën zodat soortgelijke zinnen op dezelfde wijze worden vertaald.
2. De optie 'Bewerk frase' laat toe om één of meerdere frasen in de zin aan te duiden en hiervoor een correcte vertaling op te geven.
3. De optie 'Voeg werkwoord toe' maakt het mogelijk om de onregelmatige vervoeging van een werkwoord op te geven.

Het beheer van de tweetalige fraseologie, de grammaticale patronen, en de terminologie is ook mogelijk via de tab Geheugen.

De tab Geheugen.Frasen laat toe om de tweetalige fraseologie te beheren.


De tab Geheugen.'Grammaticale patronen' laat toe om de grammaticale patronen te beheren.


De tab Geheugen.Termen laat toe om de tweetalige terminologie te beheren.

maandag 12 april 2010

Nederlands vertaalprogramma 2

Op dit moment hebben we de eerste fase van ons Nederlands vertaalprogramma afgerond.
Via onze eigen service is het nu mogelijk om een Nederlandse tekst op woordniveau te vertalen. Bij het vertalen van een woord waarvoor nog geen vertaalequivalent gekend is vraagt de toepassing om input van de gebruiker. Op deze wijze kan de meertalige terminologische databank snel worden uitgebreid.

Het vertaalgeheugen kan ook worden bijgewerkt via een apart tabblad.

De volgende fase in de ontwikkeling van het Nederlands vertaalprogramma is om ook op het niveau van de frase en de zin een vertaalequivalent voor te stellen. Bijvoorbeeld wanneer de woordvolgorde verschilt tussen brontaal en doeltaal.

dinsdag 23 maart 2010

Nederlands vertaalprogramma

We zijn gestart met de ontwikkeling van een uitbreidbare en multifunctionele toepassing die helpt bij het redigeren, reviseren en vertalen van een Nederlandse tekst. De toepassing biedt net als het Nederlands tekstopmaakprogramma uitgebreide ondersteuning tijdens het redigeren van een Nederlandse tekst. De nieuwe toepassing biedt gebruikers bovendien de mogelijkheid om verschillende services te gebruiken voor het vertalen van een Nederlandse tekst. In het voorbeeld werd de 'Google Translation service' gebruikt om een Nederlandse tekst te vertalen.
Door het gebruik van linguïstische kennis en meertalige terminologie willen we de vertaalresultaten verbeteren. De linguïstische kennis en meertalige terminologie zal door de gebruikers uitgebreid en verbeterd kunnen worden. Aangezien de linguïstische kennis en terminologie doeltaal afhankelijk is zullen we ons eerst op Nederlands en Engels richten. Later kunnen andere doeltalen worden voorzien, al dan niet door derden.
We willen ook een platform opzetten waarbij geregistreerde vertalers de resultaten (tegen vergoeding) kunnen reviseren.

vrijdag 19 maart 2010

Nederlands tekstopmaakprogramma

Ondertussen werd het Nederlands tekstopmaakprogramma (Sirius Dutch Text Editor) afgewerkt. Deze toepassing biedt hulp bij het schrijven en semantisch annoteren van een Nederlandse tekst. Woorden die niet worden herkend worden ofwel rood onderlijnd, ofwel onderlijnd in oranje indien ze beginnen met een hoofdletter. De hoofdletter duidt er mogelijk op dat het om een eigennaam gaat.
Net als bij het interactief woordenboek (Sirius interactief Nederlands taalhulpmiddel) is het makkelijk om nieuwe woorden toe te voegen.
Het tekstopmaakprogramma maakt gebruik van de grammaticale context van woorden om de betekenis van woorden zo precies mogelijk te herkennen. Woorden die binnen de gegeven context toch nog meerdere betekenissen hebben worden blauw onderlijnd.


In de figuur is bestuurder blauw onderlijnd omdat er twee mogelijke betekenissen (1. bestuurder van een voertuig of 2. persoon die leiding geeft) zijn.
Op basis van grammaticale patronen controleert de toepassing ook de zinsbouw. De naam van de auteur wordt geel onderlijnd omdat het grammaticaal patroon niet als een correcte zin wordt herkend. Net als lemma's en betekenissen kunnen grammaticale patronen makkelijk worden toegevoegd en verwijderd.
In de toepassing staat rood voor het lexicale aspect (lemma), blauw staat voor het semantische aspect (betekenis) en geel staat voor de grammaticale context (grammaticale categorie).
Combinaties van deze kleuren zijn ook mogelijk. Het woord 'nieuwe' uit de titel is groen onderlijnd omdat de toepassing niet kon afleiden of het om een bijwoord of om een bijvoeglijk naamwoord gaat. Het woord 'maakt' op de vierde regel werd paars onderlijnd omdat het lemma en dus ook de betekenis onduidelijk is. Maakt kan hier immers van de werkwoorden 'bekendmaken' of 'maken' komen.
Meer informatie over de toepassing vind je op onze bedrijfswebsite.

maandag 25 januari 2010

Sirius Dutch Text Editor 2

I made some progress in developing the software tool. First I parsed Wiktionary information to extend the dictionary information (of the Dutch Text Interpretation Aid) with lexical categories. These lexical categories will be used to verify the grammar of sentences. Because words may refer to multiple meanings (that may belong to different lexical categories), the user should first specify the proper meaning of each word. For this purpose, ambiguous and not yet specified words are underlined in blue. While the mouse pointer hovers over such underlined word a popup menu appears that allows to select the proper meaning. Once all words of a sentence have a proper meaning attached to them, it may be that the grammar of the sentence is incorrect or unknown by the tool. Such incorrect sentence will be underlined green.
I still have to develop an easy way to add valid syntactic patterns and improve the analysis of the text.
It is already possible to save and load the semantically enriched text in HTML-format. I should however further improve the functionality (with JavaScript) so that the published texts may still be understood easily.

maandag 18 januari 2010

Sirius Dutch Text Editor

The new software tool I am working on is a Dutch Text Editor. The software tool will support the writing of Dutch texts. While writing a text, the tool will not only highlight spelling and grammar mistakes, but will also indicate ambiguous and/or difficult words. Where possible the tool will offer the user a list of synonyms to replace difficult words. The user may also specify the meaning of ambiguous words by choosing the proper definition. This semantic information will be saved together with the text so that it is easier for readers (humans or machines) to interpret the semantically enriched text.
So far, I developed a tokenizer and sentence splitter for Dutch.
As you can see in the figure, the sentence splitter distinguishes between a point for the digit group separator and for a full stop. The tokenizer also replaces abbreviations like "zo'n" with the full form "zo een". This should facilitate the work of the parser that still needs to be developed.

maandag 4 januari 2010

My Own Company

Happy New Year! Since 2010-01-01, I have my own company (Sirius Computing). Via the company I wish to develop and distribute useful software tools for natural language processing.
The first product available is the Dutch Text Interpretation Aid. Hopefully a lot of people decide to use and buy the software tool. The profits may then be used to develop other software tools and information resources.